brunch

You can make anything
by writing

C.S.Lewis

by 라인하트 Sep 09. 2019

인공지능의 이해(4/6): 콘볼루션 신경망 (CNN)

다층 퍼셉트론으로 이미지를 인식하는 방법

   다층 퍼셉트론 (MLP, Multi-Layer Perceptron)을 활용한 이미지 처리 기술은 픽셀과 퍼셉트론을 일대일로 대응시켜 이미지를 인식합니다. '1'이라는 숫자를 28*28 = 784개의 픽셀로 이해하고, 각 픽셀에 투명도를 부여합니다. 흑백이라면 0 또는 1의 값을, 256 단계의 색깔을 가진다면 0-255 중 하나의 값을 가집니다. 즉, 다중 퍼셉트론의 입력층의 노드는 784개가 됩니다. 784개 입력과 가중치 'w'를 곱하여 계산하면 출력층은 10 개 노드로 이루어져 있고, 그중 하나가 선택됩니다. 


   만일 '1'이라는 숫자가 왼쪽으로 한 칸 이동한다고 가정한다면, 10개의 픽셀의 값이 0에서 1로 바뀌고 10개의 픽셀의 값이 1에서 0으로 바뀝니다. 또한, '1'이 크기가 달라지거나 각도가 바뀔 경우에도 입력층의 노드 값이 바뀝니다. 같은 숫자 '1'이지만, 작은 변화에도 입력층의 변화가 너무 큽니다.  따라서, 다층 퍼셉트론은 이미지의 위치, 크기 또는 각도가 바뀌었을 때 이미지를 제대로 인식하지 못할 확률이 높습니다. 


전통적인 머신러닝 기법과 다층 퍼셉트론은 모든 픽셀을 각각의 변수로 설정하고 투명도와 색깔을 기준으로 가중치를 부여합니다. 기계는 최적의 가중치 값을 찾아내도록 학습합니다

  

콘볼루션 신경망 (CNN)의 원리

   합성곱 신경망 또는 콘볼루션 신경망 (CNN, Convolutional Neural Network)은 1995년 LeCun과 Bengio가 처음 발표하였고, 딥러닝의 기법 중에서 음성 인식 및 이미지 인식에 탁월한 성능을 보이는 알고리즘입니다. 우리의 시각 피질의 신경세포들은 물체의 방향과 장소가 바뀌어도 별문제 없이 인식할 수 있다는 신경생물학적 관찰을 바탕으로 콘볼루션 신경망 구조를 설계하였습니다. 다층 퍼셉트론과 달리 물체의 위치와 방향에 관계없이 물체의 고유한 특징을 학습할 수 있습니다. 


   CNN은 특징 (Feature)를 추출하는 콘볼루션층과 정보를 압축하는 풀링층(Pooling)으로 이루어져 있습니다. CNN은 입력층과 출력층 사이에 콘볼루션층과 풀링층이 반복됩니다. 반복되는 횟수는 실험을 통해 가장 좋은 결과값이 나오는 방법을 취합니다. 


   CNN은 다층 퍼셉트론의 문제점을 해결하기 위해 픽셀이 아닌 필터를 사용합니다. 컨볼루션 필터는 행렬로 구성되어 있습니다. 필터는 콘볼루션층에서 이미지를 왼쪽 위에서 오른쪽 아래까지 스캔하면서 이미지의 특징(Feature)을 읽어내어 특징 맵(Feature Map)을 만듭니다. 아래 그림에서 커널 매트릭스가 필터입니다. 



   아래 그림 왼쪽의 판은 이미지입니다. 색깔은 삼원색으로 구성되기 때문에 두께가 있는 삼차원으로 표현하였고, 필터는 갈색의 작은 박스로 표현하였습니다. 필터는 가중치값의 행렬로 표현되어 있습니다. 특정 모양의 필터가 왼쪽에서부터 오른쪽으로 이동하면서 특징 맵은 입력 이미지의 여러 위치에서 동일한 특징을 탐색합니다. 필터가 거쳐가는 부분이 특징과 일치한다면 높은 값을 출력하여 이미지 분류의 가능성을 높입니다. 자동차 이미지를 스캔하다가 바퀴 모양을 스캔하게 되면 자동차일 확률이 높으므로 높은 값을 출력합니다.  


   필터가 읽어낸 특징 맵을 가로세로로 나열하여 중간 그림처럼 하나의 시트를 만듭니다. 여러 개의 필터가 사용되었다면 여러 개의 특징 맵이 만들어질 것입니다. CNN의 폴링층은 특징 맵을 압축 하여 파라미터의 개수를 줄어줍니다. 4*4의 특징 맵을 2*2 단위 묶음으로 쪼개서 각 묶음의 대푯값을 취합니다. 최대값을 취하는 최대 풀링과 평균값을 취하는 평균 풀링이 있습니다.  


    이미지에 따라 필터를 다시 적용하여 또 다른 시트를 만드는 작업을 반복합니다. 여러 번의 필터와 시트를 만드는 작업을 반복하면, 이미지의 특성은 압축되고 이미지의 특성에 대한 결과값은 하나의 숫자로 떨어집니다. 이 값은 확률적인 추정치입니다. CNN 모델의 정확도는 필터가 얼마나 정교하게 잘 만드느냐에 의해 결정됩니다. 아래 그림은 LeCun에 의해 고안된 LeNet 5 CNN 계열의 알고리즘입니다. 


  특징 맵은 위치나 각도에 상관없이 동일하게 인식되는 특징 (Feature)를 모아 놓은 것입니다. 아래 그림은 숫자 '4'에 대한 출력 특징 맵입니다. 



콘볼루션 신경망의 정리

   인공지능이 CNN 기법으로 고양이 사진을 구분하거나 개 사진을 구분할 때 반드시 학습되어야 하는 요소는 필터입니다. 인공지능은 현재의 필터가 스캐닝을 통해 결론 낸 값과 정답을 비교하면서 계속 가중치를 교정하여 그림의 특성을 제대로 인식할 수 있는 가중치 세트 (Weight Set)을 구성합니다. 고양이 그림을 구분하는 인공지능은 학습을 진행할수록 고양의 특징을 지닌 필터를 갖게 됩니다. 고양이의 뾰족한 귀, 일자형 눈동자, 긴 꼬리 등의 특성을 가진 필터들이 만들어질 것입니다. 이 필터들이 그림을 스캔하다가 해당 특성을 갖는 영역을 발견하면 이 그림이 고양이일 확률을 높게 설정합니다.  


   아래 그림은 그림을 보고 승용차, 트럭, 비행기, 배, 말 중에 어떤 것이지를 구분하는 인공지능입니다. 이미지의 특성을 뽑아내는 레이어(CONV)를 두 번 하고 한 번의 압축 (POOL)을 거쳤습니다. 이 과정을 세 번을 반복하는 방법으로 구현한 것입니다. 이 과정을 세 번만 하는 이유는 중요하지 않습니다. 실험 결과 가장 좋은 결과를 내기 때문입니다. 2015년 이미지넷에서 우승한 ResNet은 152개의 층으로 되어 있고, 3.57%의 인식 오류율을 달성했습니다. 





참고자료:

   이 글은 송경빈 님의 브런치에 있는 '인공지능 기술/원리의 이해'라는 글을 필자가 공부하면서 각색하였습니다. 원문이 훨씬 더 이해하기 쉽고 자세합니다.  원문은 아래 링크를 참조하시기 바랍니다. 


https://brunch.co.kr/@morningb/3


매거진의 이전글 인공지능의 이해(3/6):딥러닝
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari