배너
닫기

테크노트

배너

라온피플의 머신러닝 아카데미 '머신러닝 기술 4'

  • 등록 2018.08.01 10:41:06
URL복사
[#강추 웨비나] 제조 산업을 위한 클라우드 활용 웨비나 시리즈 Autodesk 올인원 제조솔루션 Fusion 활용하기 - 1편: Fusion 소개 및 모델링 활용하기 (7/10)

머신비전산업에서 인공지능 기술(머신러닝, 딥러닝)이 빠르게 확산되고 있다. 인공지능 기술을 통해 기존의 컴퓨터비전 기술로는 어려웠던 검사가 가능해질 뿐만 아니라 ‘데이터의 자기 학습’으로 보다 빠르고 쉬우며 신뢰성과 유연성을 갖춘 머신비전 검사가 가능해졌다. 이에 따라 자연스럽게 인공지능 기술에 대한 관심이 높아지고 있다. 국내 대표적인 머신비전 전문업체인 라온피플은 ‘LAON PEOPLE’s 머신러닝 아카데미’를 통해 인공지능의 대표적인 기술인 머신러닝 기술에 대해 연재한다.


1. CNN 개요


?CNN(Convolutional Neural Network)의 역사

CNN은 1989년 LeCun이 발표한 논문(“Backpropagation applied to handwritten zip code recognition”)에서 처음 소개가 되었고, 필기체 zip code 인식을 위한 프로젝트를 통해 개발이 되었다. LeCun이 처음 소개한 CNN은 필기체 인식에 있어서는 매우 의미 있는 결과가 나왔지만, 범용화에는 아직 미흡하였다. 이후 2003년 Behnke의 논문(“Hierarchical Neural Networks for Image Interpretation”)을 통해 일반화가 되었으며, Simard의 논문(“Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis”)을 통해 단순화되면서 개념 확대의 단초가 마련이 되었다.


이후 GP-GPU(General Purpose GPU)를 통해 CNN을 구현할 수 있는 방법이 소개 되었고, DBN(Deep Belief Network) 등 많은 분야에서 활발하게 연구 및 적용이 되고 있다.


기존 Multi-layered Neural Network의 문제점

이상적인 머신 러닝 시스템이라면, 학습 데이터(training data)만 적절하게 많이 넣어주면, 알아서 분류까지 척척 해주는 것(unsupervised learning)을 기대할 것이다. 하지만 현실은 아직 그렇지 못하다. 그 대안이라면, 기존 지식(prior knowledge)를 이용해 네트워크의 구조를 특수한 형태로 변형을 시켜주는 것이다. 


그렇다면 2-D 이미지가 갖는 특성을 최대한도로 살릴 수 있는 방법은 무엇일까?


아래 그림처럼, multi-layered neural network를 이용해 16x16 크기의 폰트를 갖는 필기체를 인식하는 경우를 살펴보자. 


▲ 그림 1.multi-layered neural network를 이용해 필기체를 인식하는 경우


또한 글자의 크기가 달라지거나, 글자가 회전되거나, 글자에 변형(distortion)이 조금만 생기더라도 새로운 학습 데이터를 넣어주지 않으면 좋은 결과를 기대하기 어렵다.


▲ 그림 2. multi-layered neural network를 이용해 필기체를 인식하는 경우


결과적으로 기존 multi-layered neural network는 글자의 topology는 고려하지 않고, 말 그대로 raw data에 대해 직접적으로 처리를 하기 때문에 엄청나게 많은 학습 데이터를 필요로 하고, 또한 거기에 따른 학습 시간을 대가로 지불해야 하는 문제점이 있다(그림 3 참조).


▲ 그림 3. fully-connected multi-layered neural network를 사용해 3가지

면의 문제가 발생한 경우


만약 32x32 폰트 크기에 대해 Black/White 패턴에 대해 처리를 한다면 결과적으로 232*32 = 21024개의 패턴이 나올 수 있고, 이것을 Gray-scale에 적용을 한다면 25632*32 = 2561024개의 어마어마한 패턴이 나오기 때문에, 전처리 과정 없이는 불가능하다라는 것을 미루어 짐작할 수 있다. 결과적으로 기존의 fully-connected multi-layered neural network를 사용하면, 3가지 측면에 문제가 발생함을 알 수 있다.


- 학습 시간(Training time)

- 망의 크기(Network size)

- 변수의 개수(Number of free parameters)

 

2. Why CNN?


Receptive Field

영상에서의 특정 위치에 있는 픽셀들은 그 주변에 있는 일부 픽셀들과만 correlation이 높을 뿐이며, 거리가 멀어지면 멀어질수록 그 영향은 감소하게 된다. 이것은 손가락으로 몸의 여러 부분을 찔러 보았을 때 그것을 느낄 수 있는 범위가 제한적이라는 것을 떠올려보면 쉽게 이해가 가능할 것 같다. 그리고 어느 위치를 찌르냐에 따라서 느끼는 영역의 크기가 다르다는 것도 알 수 있다.


이와 유사하게 영상을 해석하여 “인식 알고리즘”을 수행하고자 할 경우 영상 전체 영역에 대해 서로 동일한 연관성(중요도)로 처리하는 대신에 특정 범위에 한정에 처리를 한다면 훨씬 효과적일 것이라는 것은 미루어 짐작을 할 수가 있다. 그리고 이것은 영상에만 한정할 것이 아니라 locality를 갖는 모든 신호들에 유사하게 적용할 수 있다는 추론도 쉽게 할 수 있다. 이런 아이디어에 기반하여 출현을 한 것이 바로 CNN이다(그림 4 참조). 


▲ 그림 4. 영상에서의 특정 위치에 있는 픽셀들은 일부 픽셀들만 correlation이

높을 뿐이다.


다음 그림은 원영상에 대해, 다양한 3x3 filter 연산을 한 경우이며, 필터의 종류에 따라 각기 다른 특징을 끄집어 낼 수가 있다(그림 5 참조).


▲ 그림 5. 원영상에 대해, 다양한 3x3 filter 연산을 한 경우


다음의 예는 영상을 부드러운 이미지로 만들기 위한 Gaussian filter의 window 크기를 다르게 적용했을 경우, 다른 특징을 얻을 수 있음을 보여주는 예이다(그림 6 참조).


▲ 그림 6. Gaussian filter의 window 크기를 다르게 적용했을 경우


CNN의 특징

CNN에 Neural Network의 앞에 “Convolutional”이 붙은 이유는 convolution의 특성을 살린 신경망 연산을 한다는 뜻이며, CNN은 기존 multi-layered neural network에 비해 아래와 같은 중요한 특징을 갖는다.


Locality(Local Connectivity)

CNN은 receptive field와 유사하게 local 정보를 활용한다.공간적으로 인접한 신호들에 대한 correlation 관계를 비선형 필터를 적용하여 추출해 낸다. 이런 필터를 여러 개를 적용하면 다양한 local 특징을 추출해 낼 수 있게 된다. Subsampling 과정을 거치면서 영상의 크기를 줄이고 local feature들에 대한 filter 연산을 반복적으로 적용하면 점차 global feature를 얻을 수 있게 된다.


Shared Weights

Convolution의 개념을 설명할 때 보았던 것처럼, 동일한 계수를 갖는 filter를 전체 영상에 반복적으로 적용함으로 변수의 수를 획기적으로 줄일 수 있으며, topology 변화에 무관한 항상성(invariance)를 얻을 수 있게 된다.


3. CNN의 구조


CNN의 과정은 아래 그림과 같이 나타낼 수 있다(그림 7 참조).


▲ 그림 7. CNN의 과정


CNN의 과정은 크게 보면 다음과 같은 3단계 과정으로 이루어 진다.


1. 특징을 추출하기 위한 단계

2. topology 변화에 영향을 받지 않도록 해주는 단계

3. 분류기 단계 


CNN 처리 과정은 단순하게 분류기로 구성이 된 것이 아니라 특징을 추출하기 단계가 내부에 포함이 되어 있기 때문에, raw image에 대해 직접 operation이 가능하며, 기존 알고리즘과 달리 별도의 전처리(pre-processing) 단계를 필요로 하지 않는다. 특징 추출과 topology invariance를 얻기 위해 filter와 sub-sampling을 거치며, 보통 이 과정을 여러 번을 반복적으로 수행하여 local feature로부터 global feature를 얻어낸다.분류기 단계는 학습을 통해 다양한 경우에 대응할 수 있도록 해주는 것이 목표이며, 기존 신경망과 동일한 구조를 갖는다.


대부분의 영상 인식 알고리즘에서는 특징을 추출하기 위해 filter를 사용한다. 보통 필터는 5x5 혹은 3x3과 같은 작은 영역(receptive field)에 대해 적용을 하며, 필터에 사용에는 계수들의 값에 따라 각각 다른 특징을 얻을 수가 있다. 일반적으로 이 filter의 계수들은 특정 목적에 따라 고정이 되지만, CNN에서 사용하는 filter 혹은 convolutional layer는 학습을 통해 최적의 계수를 결정할 수 있게 하는 점이 다르다.통상적인 sub-sampling은 보통 고정된 위치에 있는 픽셀을 고르거나, 혹은 sub-sampling 윈도우 안에 있는 픽셀들의 평균을 취한다. 가령 아래 그림과 같이 픽셀이 구성이 된다면, P1~P4 중 1개를 매번 지정된 위치에서 고르거나, (P1 + P2 + P3 + P4)/4를 통해 평균을 취한다. 하지만, CNN에서의 sub-sampling은 신경 세포와 유사한 방식의 sub-sampling 방식을 취한다(그림 8 참조).


▲ 그림 8. 영상 인식 알고리즘에서는 특징을 추출하기 위해 filter를 사용한다


신경세포학적으로 살펴보면 통상적으로 강한 신호만 전달하고 나머지는 무시하는데, 이와 비슷하게 CNN에서는 max-pooling 방식의 sub-sampling 과정을 거친다. 개념만 간단하게 설명하자면, P1~P4 중 가장 큰 자극만 선택하는 것이다. 


아래의 예에서 max-pooling을 선택하게 되면, 전체 sub-sampling 윈도우에서 가장 큰 값만 선택하기 때문에 오른쪽-위쪽에 있는 값처럼 결과가 나오고, average-pooling을 선택하면 각 window의 평균을 취하기 때문에 오른쪽-아래쪽에 있는 결과가 나온다(그림 9 참조).


▲ 그림 9. Max- pooling 방식과 average-pooling 방식에 따라 결과가 나뉜다


이동이나 변형 등에 무관한 학습 결과를 보이려면, 좀 더 강하고 global한 특징을 추출해야 하는데, 이를 위해 통상적으로 (convolution + sub-sampling) 과정을 여러 번을 거치게 되면, 좀 더 전체 이미지를 대표할 수 있는 global한 특징을 얻을 수 있게 된다. 


이렇게 얻어진 특징을 fully-connected network을 통해 학습을 시키게 되면, 2차원 영상 정보로부터 receptive field와 강한 신호 선택의 특성을 살려, topology 변화에 강인한 인식 능력을 갖게 된다.


위 그림은 CNN의 구조를 설명하는 대표적인 그림 중 하나이며, 지금까지 설명한 것들을 종합하여보면, 입력 영상으로부터 convolution(즉, filter)을 통해, feature map을 만들다. 


여러 개의 다른 특징을 추출하고 싶다면, 다른 특징을 추출할 수 있도록 convolution kernel의 계수를 설정하면 된다. 다음 과정은 sub-sampling 과정이며, sub-sampling은 통상적 feature map의 크기를 줄여주면서, 이를 통해 topology invariance도 얻을 수가 있게 된다. 


보통 1개의 feature map에 대해 1개의 sub-sampling 연산을 수행한다. 이렇게 해서 local feature를 얻었다면, 그 local feature에 대해 다시 convolution과 sub-sampling을 수행하며, 이 과정을 통해 좀 더 global feature를 얻을 수 있게 된다. 


여러 단의(convolution + sub-sampling) 과정을 거치면, feature map의 크기가 작아지면서 전체를 대표할 수 있는 강인한 특징들만 남게 된다. 이렇게 얻어진 global한 특징은 fully connected network의 입력으로 연결이 되며, 앞 서 살펴본 신경망의 특징처럼 학습을 통해 최적의 인식 결과를 낼 수 있게 된다. 정리하면 CNN은 여러 개의 layer로 구성이 되며, 그 주요 layer는 convolution layer, sub-sampling(pooling) layer, fully-connected layer이다.


CNN의 구조가 단순한 fully connected network에 비해 복잡해 보이지만, 그 본질은 거의 유사하며, 신경망 학습에 사용했던 방법을 거의 비슷하게 적용할 수가 있다(그림 10 참조). 


▲ 그림 10. CNN의 구조를 설명하는 그림


(주)라온피플










배너









주요파트너/추천기업