개발
-
숫자인식 코드 분석해보기개발/인공지능 2017. 8. 3. 20:49
지난 포스팅에서 인공지능 이론중 가장 간단한 Linear Regression과 Logistic Regression에 대해서 설명했습니다. 이번 포스팅에선 tensorflow 튜토리얼에 있는 숫자 인식 코드를 차근차근 분석해가며 어떻게 우리가 배운 이론이 접목되었는지 공부해보는 시간을 가지려고 합니다. 먼저 숫자 인식 코드는 여기를 공식 튜토리얼 페이지는 여기를 클릭하면 볼 수 있습니다. 튜토리얼 페이지를 클릭하시면 MNIST라는 단어를 보실 수 있을겁니다. 이건 컴퓨터 비전에 사용되는 데이터 셋을 말하는 용어니 너무 주의깊게 보시지 않아도 괜찮아요. 그냥 이런 이미지를 가지고 있다는 것만 기억하시면 됩니다! 위의 이미지들은 우리가 숫자를 직접 손으로 쓸 때의 이미지들입니다. 우리가 만든 숫자 인식 인공지..
-
Softmax와 Cross entropy개발/인공지능 2017. 8. 3. 20:36
학습시키는 데이터의 Feature가 3가지이고 이 데이터들을 총 3개의 분류로 나눈다고 해봅시다. 이때 우리는 하나의 feature에 대하여 총 3가지로 분류해줄 weight값이 필요합니다. 만약 데이터의 Feature들을 x1, x2, x3라고 표현하면 x1이 첫번째 분류, 두번째 분류 그리고 세번째 분류로 나눠 질 수 있도록 값을 조정하는 weight값이 필요하게됩니다. 그림으로 표현하면 더 알아보기 쉽습니다. x1, x2, x3의 집합을 X, Wi,j값의 집합을 W, bi의 집합을 B로 표현하면 위 식은 S = Wx + B로 표현 할 수 있겠네요. 그리고 이 값이 가장 큰 것으로 분류되게 됩니다. 하지만 학습을 하려면 내가 낸 결과물이 얼마나 비슷한지도 알아야합니다. 내가 고른 값이 옳다 하더라도 ..
-
Logistic Regression (로지스틱 회귀)개발/인공지능 2017. 7. 31. 21:49
앞선 포스팅에서 나이에 따른 연봉 변화로 선형 회귀를 설명했었습니다. 이번에는 예시를 조금 변형해서 연봉이 5000만원이 넘는지 안넘는지를 결정하는 함수를 생각해봅시다. 먼저 연봉이 5000만원을 넘지 않는 경우를 0, 넘는 경우를 1로 생각하고 그래프를 그려볼까요? y축의 값이 0과 1밖에 없으니 그래프가 상당히 단조로워졌네요. 아마 30-32 사이에서 연봉이 5000만원으로 변화하는 지점이 있는 것 같습니다. 이 정보를 토대로 선형회귀를 해보면 아래 그림처럼 추세선을 만들어 줄 수 있을 것 같습니다. 대략 추세선의 값이 0.5 정도가 넘으면 연봉이 5000만원이 넘는다고 짐작 할 수 있겠네요. 이렇게 하면 뭐 더이상 손댈 것도 없을것 같습니다. 그런데 새로운 학습 데이터가 추가됐다고 해봅시다. 요렇게..
-
Linear Regression (선형회귀)개발/인공지능 2017. 7. 28. 20:50
앞선 포스팅에서 우리는 인공지능이란 '대량의 데이터를 학습해 가장 그럴듯한 미래를 예측한다'고 정의했습니다. 그리고 여기서 우리 개발자가 할 일은 대량의 데이터를 훌륭하게 학습시키는 알고리즘을 만드는 일이라고 말씀드렸습니다. 이제 학습 알고리즘에 대해서 공부해봐야겠죠? 마음은 벌써 알파고에 쓰인 딥러닝을 짜보고 싶지만, 지금 당장은 해볼 순 없으니 가장 기초적인 학습법인 선형회귀(Linear Regression)부터 천천히 공부해봅시다. 우리에게 아래 표처럼 나이에 따른 연봉 데이터가 있다고 가정해봅시다 실제데이터는 아닙니다. 제가 가공한거에요 헤헤 언듯 데이터를 분석해보니 나이가 많을수록 연봉을 더 많이 받는것 같습니다. 한번 차트로 볼까요? 그래프 상으로 표현해보니 실제로도 그러하네요. 위 자료를 통..
-
오픈스택 구조 분석개발/클라우드컴퓨팅 2017. 3. 7. 23:12
오픈소스를 좀더 심도있게 분석하기 위해 설치도 하고 내부 소스 코드도 보려 했으나, 설치 가이드 글들을 전혀 이해를 할 수 없어서 논문 부터 차근차근 읽고 가기로 했다. 'OpenStack: Toward an Open-Source Solution for Cloud Computing'이란 논문을 읽었는데 한창 오픈스택이 뜨기 시작한 2012년도에 나온거라 그런지 별 다른 내용이 없었지만 그래도 오픈스택의 전체적인 구조는 이해하는데 도움이 된 것 같다. 논문에 따르면 오픈스택의 구조는 위 그림처럼 다섯가지로 나눌 수 있다고 하는데 여기서 주된 요소는 Compute, Image, Object라고 한다. 각각에 대한 설명은 다음과 같다. OpenStack Compute: IaaS 클라우드를 관리 담당하는 플랫폼..
-
오픈스택이란?개발/클라우드컴퓨팅 2017. 3. 7. 21:58
클라우드 컴퓨팅을 공부하면 자주 등장하는 기술이 오픈스택이다. 오픈소스의 형태로 클라우드 컴퓨팅 환경에서 많은 부분을 지원한다고 하지만, 정확히 오픈 스택이 어떤 일을 하는지, 구체적으로 어떤 목적에 의해 만들어 졌는지에 대해선 아는 바가 없어서 간단히 정리를 해보려고 한다. 오픈스택 홈페이지에서는 오픈스택을 다음과 같이 소개한다. OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed through a dashboard that gives administrators control while empo..
-
클라우드 가상화와 Docker개발/클라우드컴퓨팅 2017. 3. 5. 14:13
클라우드 컴퓨팅은 가상화 기술을 활용해 하나의 서버에 여러 개의 가상 컴퓨터를 돌릴 수 있는 환경을 제공해서 서버 장비가 없는 사용자들도 가상 컴퓨터를 할당 받아서 서버를 구동 할 수 있는 기술이다. 여기서 만들어지는 가상 컴퓨터를 가상 머신(Virtual Machine)이라 하고 가상 머신을 생성시키는 것을 하이퍼바이저(Hypervisor)라 한다. 서버 가상화에서 주로 사용되는 하이퍼바이저는 Xen, KVM, VMware가 있다. 이 기술들은 공통적으로 하드웨어 자원(CPU, 하드웨어, 인터럽트 핸들러 등)들을 관리 하고 Virtual Machine이 사용 할 수 있는 가상 장치를 제공한다. 장치들을 제공 받은 Virtual Machine은 갖고 있는 커널 이미지 및 루트 파일 시스템을 이용해서 부팅..
-
클라우드 컴퓨팅(Cloud Computing)개발/클라우드컴퓨팅 2017. 2. 25. 12:58
서버 장치와 인터넷의 성능이 급격히 발전하면서 모든 연산 작업을 사용자가 갖고 있는 단말기 내에서 처리할 필요 없이 인터넷을 이용해 제 3의 공간(서버, 클라우드)에서 처리 할 수 있게 되었다. 인터넷을 이용해 필요한 컴퓨팅 자원(서버, 스토리지, 애플리케이션, 서비스)을 어디서나 접근 및 이용 가능한 형태를 클라우드 컴퓨팅 서비스라고 한다. 개념적으로만 설명하면 어려우니 쉽게 예를 한 번 들어보자. 사용자 음성인식은 컴퓨팅 연산 작업과 데이터의 양이 많이 필요한 인공지능 서비스다. 입력된 목소리 값과 비교해야 할 기존 데이터 값도 많고 사용한 알고리즘도 단순한 작업들이 아니다. 비교 데이터 값을 모두 단말기 내에서 저장하기엔 용량이 부족하고 알고리즘 연산들을 모두 처리하기엔 하드웨어 성능이 딸린다. 또..