‘밑바닥부터 시작하는 딥러닝’ 세미나 6

이번 장에서는 딥러닝의 대표적인 네트워크 아키텍처인 합성곱 신경망(Convolutional Neural Network, CNN)을 설명합니다.

p227. CNN은 이미지 인식과 음성 인식 등 다양한 곳에서 사용되는데, 특히 이미지 분야에서 딥러닝을 활용한 기법은 거의 다 CNN을 기초로 한다.

CNN에서는 새로운 합성곱 계층과 풀링 계층이 추가된다.

 

7.1, 7.2, 7.3을 읽고 CNN 네트워크 구조와 동작 방식을 이해합니다.

p229. 완전연결 계층의 문제점은 ‘데이터의 형상이 무시’된다는 것이다. 이미지는 3차원 형상이며 이 형상에는 소중한 공간적 정보가 담겨 있다. 예를 들어 공간적으로 가까운 픽셀은 값이 비슷하거나, RGB의 각 채널은 서로 밀접하게 관련되어 있거나, 거리가 먼 픽셀끼리는 별 연관이 없는 등, 3차원 속에서 의미를 갖는 본질적인 패턴이 수멍 있을 것이다.  그러나 완전연결 계층은 형상을 무시하고 모든 입력 데이터를 동등한 뉴런으로 취급하여 형상에 담긴 정보를 살릴 수 없다.

합성곱 계층은 형상을 유지한다. 이미지도 3차원 데이터로 입력받으며 다음 계층에도 3차원 데이터로 전달한다. CNN에서는 합성곱 계층의 입출력 데이터를 특징 맵(feature map)이라고 한다.

p230. 합성곱 계층에서의 합성곱 연산을 처리한다. 합성곱 연산은 이미지 처리에서 말하는 필터 연산에 해당한다.

p231. CNN에서는 필터의 매개변수가 그 동안의 ‘가중치’에 해당한다. 물론 편향도 존재한다. 편향은 필터를 적용한 모든 원소에 더해진다.

p232~233. 합성곱 연산을 수행하기 전에 입력 데이터 주변을 특정 값(예컨대 0)으로 채우기도 한다. 이를 패딩이라고 한다. 패딩은 주로 출력 크기를 조정할 목적으로 사용한다. 예를 들어 (4, 4) 입력 데이터에 (3, 3) 필터를 적용하면 출력은 (2, 2)되어 입력보다 2만큼 줄어든다. 합성곱 연산을 여러 번 반복하는 심층 신경망에서는 합성곱 연산을 거칠 때마다 크기가 작아져 어느 시점에서 출력 크기가 1이되어 더 이상 합성곱 연산을 적용할 수 없게 된다. 패딩을 사용해서 입력 데이터의 공간적 크기를 고정한 채로 다음 계층에 전달할 수 있다.

필터를 적용하는 위치의 간격을 스트라이드(stride)라고 한다.

p234. 패딩을 크게 하면 출력 크기가 커지고, 스트라이드를 키우면 출력 크기는 작아진다.

p240. 풀링은 세로 가로 방향의 공간을 줄이는 연산이다. 풀링은 최댓값을 구하는 최대 풀링과 평균 값을 구하는 평균 풀링 등이 있다. 이미지 인식 분야에서는 주로 최대 풀링을 사용한다.

p241. 풀링 계층은 입력 데이터의 변화에 영향을 적게 받는다(강건하다). 입력 데이터의 차이를 풀링이 흡수해 사라지게 한다.

 

7.4와 7.5를 읽고 합성곱/풀링 계층을 구현하고 최종적으로 CNN을 구현합니다. 그림 19를 보니 im2col의 아이디어도 대단합니다.

 

7.6을 읽고 CNN을 구성하는 합성곱 계층은 입력으로 받은 이미지 데이터에서 ‘무엇을 보고 있는 걸까?’라는 질문에 답해봅니다.

7.6 CNN 시각화하기

p255. 그림 7.24와 같이 학습 전 필터는 무작위로 초기화되어 있어 흑백의 정도에 규칙성이 없다. 학습을 마친 필터는 규칙성을 띈 필터로 바뀌었다.

규칙성 있는 필터는 ‘무엇을 보고 있는 걸까?’. 그것은 에지(색상이 바뀐 경계선)와 블롭(국소적으로 덩어진 영역, blob) 등의 원시적인 정보를 보고 있다.

p256. 그림 7.26 CNN의 합성곱 계층에서 추출되는 정보, 1번째 층은 에지와 블롭, 3번째 층은 텍스처, 5번째 층은 사물의 일부, 마지막 완전연결 계층은 사물의 클래스에 뉴런이 반응한다.

CNN의 흥미로운 점은 합성곱 계층을 여러 겹 쌓으면, 층이 깊어지면서 더 복잡하고 추상화된 정보가 추출된다는 것이다. 처음 층은 단순한 에지에 반응하고, 이어서 텍스처에 반응하고, 더 복잡한 사물의 일부에 반응하도록 변한다. 즉, 층이 깊어지면서 뉴런이 반응하는 대상이 단순한 모양에서 ‘고급’ 정보로 변한해간다. 다시 말하면 사물의 ‘의미’를 이해하도록 변화하는 것이다.

지도학습에서는 사람이 데이터를 보고 특징(feature)을 추출해 냅니다. 딥러닝은 더 이상 사람이 직접 개입하지 않고 학습을 통해 특징을 추출합니다. CNN에서는 합성곱 레이어와 풀링 레이어를 사용해 특징을 추출한다고 할 수 있습니다.

 

7.7을 읽고 대표적인 CNN인 LeNet과 AlexNet을 학습합니다.

About the Author
(주)뉴테크프라임 대표 김현남입니다. 저에 대해 좀 더 알기를 원하시는 분은 아래 링크를 참조하세요. http://www.umlcert.com/kimhn/

Leave a Reply

*