이미지 인식 분야의 근원이라고도 할 수 있는 신경망이다.
여태껏 만들고 실험해본 (대부분의) 신경망들은 완전연결(fully-conneted, 전결합)이라 하고, Affine 계층이라고 했다. -> 이제 CNN 신경망은 여기에 합성곱 계층(convolutional layer)과 풀링 계층(pooling layer)이 추가된다.
위에 말했던 완전연결 신경망(Affine) 계층 뒤에 ReLU 혹은 Sigmoid 함수를 붙여 한 층을 만들고, 마지막 층에는 Softmax 계층으로 확률을 출력했었다.
이제 CNN에서는 합성곱 계층 -> ReLU -> Pooling 계층 순으로 층을 구성한다.
우선, 합성곱 신경망이 완전연결 계층으로 만든 신경망보다 뛰어난 이유보다 설명해야겠다.
합성곱 연산에 대한 내용은 (p.230)에 자세히 나와있다. 설명을 자세히 해놔도 미래의 내가 읽고 이해할 수 없을 것 같다.
그래도 간단히 설명하자면, 입력 데이터에 필터(커널)을 곱하고, 윈도우를 일정 간격으로 이동해가며 스캔해 곱의 합을 구하는 것이다. -> 이를 단일 곱셉-누산(fused multiply-add, FMA)라고 한다.
패딩, padding : 데이터 사방에 지정한 픽셀만큼 특정 값을 채우는 기법 -> 출력 크기를 조정하는 목적으로 사용한다. (연산 때마다 작아지는 크게 만들려고)
스트라이드, stride : 필터를 적용하는 윈도우의 이동 칸 수 -> 칸 수를 맞춰야 되는 등 제약 사항이 있다. (p.234)
3차원 이상에 데이터의 합성곱 연산에서는 입력 데이터 차원 수에 필터 개수를 맞춰야 한다. -> 이에 데이터들을 블록으로 생각하고 계산하라고 한다. (블럭 선의 크기를 변수에 대입해서 계산한다.)
배치 처리를 위해 차원을 하나 늘려서 계산하는 방법도 간단하게 설명해준다. (p.239)
풀링은 세로, 가로 방향의 공간을 줄이는 연산이다. 최대 풀링, 평균 풀링 등이 있다. -> 패딩과 대비되는 계층이겠다.
풀링 계층의 특징
순전파만 구현하고 역전파는 알아서 만들어보라고 하신다...! (p.247)
솔직히 이 부분에서는 설명이 잘 와 닿지 않는 부분이 꽤 있다.
위에서 설명한 것처럼, ReLU를 활성화 함수로, 합성곱 계층, Affine 계층, 풀링 계층, 소프트맥스 계층 등을 구현하고 MNIST 데이터셋을 시험 해보고 각 층의 가중치를 시각화 구현한 부분이다. (p.250)
LeNet
AlexNet
이와 더불어 위에 이론들을 실현할 수 있게 해준 대량의 데이터인 빅데이터와 여러 하드웨어들 특히 병렬 계산에 특화된 GPU가 보급된 것이 크겠다.
여태껏 배운 내용들을 한곳에 모아 조립해 완성시킨, 거기에 새로운 개념을 추가한 내용이다. 이 전 장들을 잘 따라왔다면 이번 장 또한 어렵지 않게 이해할 것이라 생각한다.
일단 본인은 나중에 무조건 복습해야 될 것 같다...