메뉴 건너뛰기

Extra Form
출처 http://blog.naver.com/matlablove/220657168194

머신러닝과 딥러닝 차이

2016. 3. 17. 8:41

최근 구글의 알파고와 이세돌 9단의 대국이 많은 사람들의 관심을 끌고 있습니다. 구글의 알파고가 딥러닝(Deep Learning)으로 학습한 바둑 프로그램으로 알려지면서 딥러닝의 가능성에 대해 많은 기사가 쏟아져 나오고 있는 상황입니다. 이러한 현실에 발맞추어 오늘은 영상처리분야에서의 머신러닝 그리고 딥러닝에 대해 소개하도록 하겠습니다.

1.png


머신러닝과 딥러닝


안녕하세요 MATLAB & Simulink 사용자 여러분,


최근 구글의 알파고와 이세돌 9단의 대국이 많은 사람들의 관심을 끌고 있습니다. 구글의 알파고가 딥러닝(Deep Learning)으로 학습한 바둑 프로그램으로 알려지면서 딥러닝의 가능성에 대해 많은 기사가 쏟아져 나오고 있는 상황입니다. 이러한 현실에 발맞추어 오늘은 영상처리분야에서의 머신러닝 그리고 딥러닝에 대해 소개하도록 하겠습니다.

 

Machine Learning

Mitchell이라는 사람은 머신러닝에 대해 “작업 T를 수행하고 이에 대한 성능을 P로 측정한다고 했을 때, 경험 E를 통해 성능이 개선된다면 이 컴퓨터 프로그램은 학습한다고 할 수 있다”라고 정의했습니다. 영상처리분야로 위의 정의를 적용한다면 작업 T는 영상분류, P는 인식률 그리고 E는 학습집합이라고 할 수 있겠습니다.

2.png

<그림 1. Machine Learning Workflow>


<그림 1>은 보트, 머그컵 그리고 모자를 분류하기 위한 머신러닝의 워크플로우를 나타낸 것입니다. 먼저 영상데이터를 학습에 사용할 것과 검증에 사용하기 위한 것으로 구분하고, 학습에 사용할 영상데이터에서 특징벡터를 추출해 냅니다. 이렇게 하면 입력 영상이 특징 공간에서 하나의 점으로 매핑이 되고, 훈련에 사용될 모든 영상에 대해 이러한 과정을 반복하면 특징 공간에는 훈련에 사용된 영상의 수만큼의 점들이 나타나게 될 것입니다. 그 다음으로 분류기(Classifier)를 학습시켜 특징공간을 3개의 영역 즉, 보트영역, 머그컵영역 그리고 모자영역으로 나누게 되는 것입니다. 지금까지의 설명이 머신러닝의 과정입니다. 그러면 다음으로 검증의 과정을 살펴보면, 검증을 위해 사용할 영상테이터에서 특징벡터를 추출하여 특징공간에 매핑을 해서 3개의 영역 중 어디에 속하는 지에 따라서 분류를 하게 되는 것입니다. 아래의 링크는 영상카테고리를 분류하는 예제로써 머신러닝의 전반적인 워크플로우를 이해하는데 도움이 될 것입니다.

Image Category Classification Using Bag of Features


 Face Detection with Cascade Object Detector


머신러닝을 통해 사물을 검출한다면 가장 검출하고 싶은 것은 무엇일까요? 라는 질문을 던진다면 아마도 가장 많은 답변은 얼굴이 아닐까 합니다. 그래서 머신러닝의 예로써 얼굴 검출의 한 방법에 대해 조금 더 자세히 소개 할까 합니다.

3.png

​<그림 2. Cascade Object Detector Overview>

​<그림 2>에서 보는 바와 같이 입력 영상은 사람의 얼굴이 포함된 Positive Image와 그렇지 않은 Negative Image를 사용하며 Positive Image에서 사람의 얼굴을 ROI(Region Of Interest)로 표시합니다. 다음으로 영상에서 특징벡터를 추출하는 작업을 수행해야 하는데, 사람의 얼굴의 특징을 추출하기 위해서 Haar-like feature나 LBP(Local Binary Patterns) 등이 사용될 수 있습니다. 그리고 분류기를 훈련시키는 작업이 이어지게 되는데 그림에 나타난 바와 같이 분류과정이 한 번에 이루어지는 것이 아니라 여러 단계를 거쳐 이루어지게 되어 있습니다. 조금 더 자세히 소개하자면 각 단계는 다수의 Weak Learner에 가중치를 곱하여 그 합으로 표현될 수 있으며 얼굴을 잘 검출해내는 것뿐만 아니라 얼굴이 아니어도 얼굴로 검출하는 것을 허용하게끔 학습 됩니다. 그 이유는 Cascade Object Detector는 다단계과정을 통해 분류작업을 수행하지만 검출의 시간을 줄이기 위해서 어느 단계에서든지 입력 영상에 얼굴이 없다고 판단되면 다음 단계로 넘어가지 않습니다. 결과적으로 검출의 정확도는 Detection Failure에 민감하게 반응하게 되며 따라서 Detection Failure의 발생을 최소화 하는 대신 False Alarm은 허용하도록 학습하는 것입니다. 그리고 False Alarm은 여러 단계를 거쳐 분류작업이 진행되면서 각 단계의 False Alarm확률이 f이고 s 단계가 적용된다고 가정하면 최종 False Alarm은 %5Ccombi%20%5E%7B%20s%20%7D%7B%20f%20%7D%20 가 되어 False Alarm의 확률을 떨어뜨리는 것입니다.

4.png

​<그림 3. Cascade of Classifier>

​

Computer Vision System Toolbox는 사람의 얼굴, 상체, 눈, 코 등 검출의 수요가 높은 항목에 대해서는 머신러닝 통한 분류기가 함께 제공되기 때문에 함수에 검출하고자 하는 항목을 파라미터로 입력 받아 사용할 수 있습니다. 그리고 아래는 도로에서 Stop 표지판을 찾는 예제로 사용자가 직접 분류기를 만드는 과정의 예라 할 수 있습니다.

Training Cascade Object Detector 예제


Deep Learning


딥러닝은 2000년대 중반 SVM(Support Vector Machine)을 제치고 최고의 분류성능을 보이면서 현재까지 많은 사람들의 관심 속에 연구가 진행되어오고 있습니다. 딥러닝을 간단히 요약하자면 “Deep Neural Network의 각 Neuron을 연결하는 weight 값을 최적화하는 것이다”라고 정리할 수 있겠습니다.​

5.png

 ​<그림 4. Deep Neural Network>


​<그림 4>은 Neural Network의 구조를 나타낸 것으로 Layer 와 Layer 는 각각 Input Layer와 Output Layer이며 Layer 와 Layer 는 Hidden Layer가 됩니다. 입력 <%5Ccombi%20_%7B%201%20%7D%7B%20x%20%7D%20 , %5Ccombi%20_%7B%202%20%7D%7B%20x%20%7D%20 , %5Ccombi%20_%7B%203%20%7D%7B%20x%20%7D%20 >의 기대값(T)를 알고 있다면 Output Layer의 출력값(O)과의 차(T-O)를 계산하여 오류역전파(Backpropagation) 방법을 통해 그 차이를 최소화하는 방향으로 각 Neuron을 연결하는 weight값을 조정하는 것입니다.

그러면 머신러닝과 딥러닝의 차이점은 무엇일까요? 그 차이점은 바로 특징벡터의 추출 방법입니다. 앞의 머신러닝에 소개한 것처럼 머신러닝을 하기 위해서는 특징벡터를 추출해야 하며, 이는 사람이 정한 알고리즘에 기반한 것입니다. 예를 들면 LBP, SIFT, SURF등과 같이 말이죠. 반면 딥러닝은 특징점 추출과 분류기 학습이 함께 이루어집니다. 조금 더 자세히 얘기하자면 Deep Neural Network의 각 Layer의 Neuron은 특징벡터를 포함하게 됩니다. 다음으로 설명할 Autoencoder와 CNN(Convolutional Neural Network)이 이에 대한 이해를 도울 것입니다.


Autoencoder

6.png

​<그림 5. 5a-Autoencoder(left), 5b-Stacked Autoencoder(right)>

​Autoencoder는 입력값과 출력값이 동일한 Neural Network입니다. <그림 5a>에서와 같이 입력벡터(I)가 Hidden Layer를 거쳐 출력벡터(O)으로 나타날 때 (I-O)의 차를 최소화하는 방향으로 Input Layer와 Hidden Layer의 사이의 weight 값을 조정합니다. 이때 Hidden Layer의 Neuron의 개수가 Input Layer의 Neuron의 개수에 비해 적으며 따라서 Hidden Layer의 Neuron은 입력에서 특징을 잘 나타내는 특징벡터가 저장될 수 있도록 학습을 하는 것입니다. 이러한 과정을 Layer별로 반복하여 누적하게 되면 <그림 5b>와 같이 Hidden Layer의 수가 2개 이상인 Deep Neural Network이 되며 각 Hidden Layer의 Neuron은 서로 다른 추상화레벨의 특징벡터가 저장됩니다. 마지막으로 지도학습(Supervised Learning), 즉 입력값에 대한 기대값(T)와 출력값(O)과의 차를 통해 오류역전파 방법으로 각 Weight 값에 대해 fine tuning을 수행합니다. <그림 6>는 Layer별로 비지도학습(Unsupervised Learning)을 하고 Layer를 누적하여 지도학습을 하는 과정을 MathWorks의 Neural Network Toolbox를 사용하여 진행한 결과입니다.​

7.png

<그림 6. Stacked Autoencoder>​

Training a Deep Neural Network for Digit Classification


CNN(Convolutional Neural Network>


CNN은 <그림 7>에 나타낸 바와 같이 특징을 추출하기 위해서 Convolution과 Pooling을 반복하는 것입니다. <그림 7>에서 특징을 추출하기 위해서 5x5의 크기를 갖는 다수개의 행렬이 사용됩니다. Convolution 이후의 feature map은 또다시 Convolution을 수행하거나 Pooling과정을 통해 2x2의 원소 중에서 평균 또는 최대값을 취하는 방식으로 feature map의 크기를 1/2로 줄여나갈 수 있습니다. 그리고 마지막 feature map과 Hidden Layer간에는 fully connected 방식으로 연결되며 이후 Softmax 단계에서는 오류역전파 방법을 통해 기대값과 출력값 간의 오차를 최소화 하는 방법으로 학습하여 fullconnect의 Neuron들을 연결하는 weight값과 Convolution Matrix 들의 원소값들을 최적화 하는 것입니다.

​8.png

<그림 7. Convolutional Neural Network>

​

​MathWorks에서는 Neural Network Toolbox 2016a 버전에서 CNN 기능이 제공되며 GPU를 활용한 병렬연산이 지원됩니다. 아래의 링크는 이에 대한 간단한 예제입니다.

Training CNN 예제


아래의 링크를 통해 좀더 자세한 내용을 살펴보시길 추천합니다. 다음 포스트는 MATLAB과 C언어 간의 연동에 대해 기술하도록 하겠습니다.


추천링크

Deep Learning for Computer Vision with MATLAB(웨비나)

매스웍스코리아 홈페이지 바로가기 http://kr.mathworks.com/index.html?s_eid=PSM_11698


  1. 시스템 관제 데이터 인공지능 분석 (시계열 분석)

    AI전문가, 강인규이사님이 들려주는 AI 이야기 - 시스템 관제 데이터 인공지능 분석 (시계열 분석) 엑셈 강남 인공지능 연구소에서는 2018년 초부터 시스템 관제 데이터에 대한 인공지능 분석과 관련된 작업을 수행하고 있다. 엑셈 강남AI연구소의 일차적인 목...
    Date2019.07.26 Reply0 Views200
    Read More
  2. No Image

    인공지능 보안관제 시대를 위한 기술, 머신러닝

    인공지능 보안관제 시대를 위한 기술, 머신 러닝 전 산업에 걸쳐 인공지능(AI) 활용이 늘어나고 있습니다. 최근 사이버 보안업계에서도 인공지능을 활용한 보안 제품과 서비스가 늘어나고 있으며, SK인포섹 역시 본격적으로 인공지능 보안관제 시대를 열어나가...
    Date2019.07.24 Reply0 Views167
    Read More
  3. No Image

    융합보안과 인공지능 - 머신러닝, 딥러닝

    융합보안과 인공지능 - 머신러닝, 딥러닝 불과 몇 년 전까지만 해도 딥러닝(Deep Learning)이라는 분야는 생소한 분야였습니다. 하지만 2016년 3월 딥마인드 챌린지 매치(Google Deepmind Challenge match)에서 펼쳐진 알파고(AlphaGo) 대 이세돌 9단의 대국은...
    Date2019.07.24 Reply0 Views156
    Read More
  4. No Image

    하둡으로 가는 길 | 제1부 기술과 훈련

    빅 데이터는 클라우드 컴퓨팅만큼이나 널리 확산되고 있는 개념이다. 그러나 빅 데이터의 역량과 한계에 관해서는 사람들이 잘못 알고 있는 부분들이 많다. 특히 빅 데이터와 관련해 사람들은 다음의 질문들에 대한 내용들을 제대로 이해하지 못하고 있다. Rea...
    Date2016.04.05 Reply0 Views232
    Read More
  5. No Image

    AI로 '인격이전ㆍ불로장생' 도전하는 러시아 부호, 슈퍼리치 드...

    AI로 '인격이전ㆍ불로장생' 도전하는 러시아 부호, 슈퍼리치 드미트리 이츠코프(Dmitry Itskov) [헤럴드경제=슈퍼리치팀 민상식 기자ㆍ한지연 인턴기자]이세돌 9단과 구글의 인공지능(AI : Artificial Intelligence) 알파고(AlphaGo)의 바둑 대결은 세계인들에...
    Date2016.03.21 Reply0 Views168
    Read More
  6. No Image

    알파고란 무엇인가

    알파고란 무엇인가: 알고리즘과 학습 방법으로 이해하는 알파고    "일어나 보니 세상이 달라져 있었다." 이는 이세돌과 알파고 둘 모두에게 해당하는 말이다. 3월 9일부터 15일까지 구글 딥마인드 챌린지 매치에서 이세돌은 인간지능의 대표로, 알파고는 인...
    Date2016.03.20 Reply0 Views270 file
    Read More
  7. 머신러닝과 딥러닝 차이

    머신러닝과 딥러닝 차이 2016. 3. 17. 8:41 최근 구글의 알파고와 이세돌 9단의 대국이 많은 사람들의 관심을 끌고 있습니다. 구글의 알파고가 딥러닝(Deep Learning)으로 학습한 바둑 프로그램으로 알려지면서 딥러닝의 가...
    Date2016.03.20 Reply0 Views371 file
    Read More
목록
Board Pagination Prev 1 2 Next
/ 2