Posts List

[컴퓨터비전] 10. CNN

Convolutional neural networks

CNN은 앞 포스팅에서 배웠던 Convolution 연산을 hidden feature를 뽑기 위한 수단으로 사용하는 Deep neural network 구조이다.

기존의 MLP구조를 이미지에 적용시켜도 어느 정도 결과는 나온다. 위 그림의 입력층에 모든 pixel을 입력하면 어떻게든 만들 수는 있다. 하지만 이 때 발생하는 문제는 역시 모든 픽셀들에게 weight가 할당되면서 학습되어야 할 파라미터수가 기하급수적으로 많아진다는 것이다. 

CNN의 basic idea는 모든 픽셀을 이용한 새로운 features를 만드는 것이 아니라, 인접한 픽셀들가지고 feature를 만드는 것이 파라미터의 수를 줄일 수 있을 뿐만 아니라 더 의미있는 feature를 만들 수 있다는 것이다.

이 개념을 가능하게 해준 것이 바로 convolution 연산이다. CNN은 kernel을 이미지 전체에 대해 합성곱연산을 함으로써 새로운 feature를 얻을 수 있는 원리를 학습하는 것을 목표로 한다. 즉, hand craft kernel이 아니라, parameterized kernel이 학습될 수 있도록 하는 것이다.

이 때 convolution 후 이동하는 step을 조절하는 것을 strided convolution이라 하며,
※ conv + down sampling 보다 정보 유실량이 적은 장점이 있다.

convolution 연산 후 대표값을 찾는 pooling 연산이 통상 pair로 진행된다.
※ 위 예제는 max pooling을 표현하고 있다.
※ pooling이 항상 필수적인 것은 아니다.

그리고 Conv., Pooling 연산시에 필연적으로 새로운 feature의 크기는 작아지게 되어있는데, 이 것을 방지 하기 위한 기법이 padding이며, 통상 위와 같이 zero-padding을 이용해 output feature의 크기를 원본과 동일하게 유지하는 것이 일반적이다.

위 구성요소 외에도 channel의 개념, pooling의 종류, 대표적인 CNN 구조에 대한 내용을 다룰 수 있으나, 앞선 포스팅에 자세하게 포스팅하였음으로 이번 시간에는 이쯤에서 생략하고 아래 포스팅을 소개한다.



댓글 쓰기

0 댓글