필터가 이미지와 겹쳐지는 부분의 convolution 연산을 통해서 새롭게 이미지를 변환한다.
사진필터가 convolution 연산을 활용한 좋은 예이다.다양한 필터들이 convolution을 위한 행렬로 정의되어있다. 위의 그림은 3x3 사이즈의 커널(필터)을 선언한 후 convolution 연산을 하고 있다.
blur 필터를 사용하여 결화가 흐릿해진 것을 확인 할 수 있다.
Convolution 연산을 하면 입력과 출력의 사이즈가 달라지는 것을 볼 수 있다. 점점 줄어져나간다. 이를 방지하기 위해 padding 의 개념을 도입한다. 입력의 테두리에 0을 추가하여 입력의 형태를 유지할 수 있게하는 테크닉이다. (ex [0,1,2,3,4,0])
사이즈를 유지해줄뿐만아니라 모서리의 중요한 정보도 활용할 수 있다.
이미지의 모서리쪽에 중요한 픽셀이 있다고 가정하면 padding이 없을 경우 해당 픽셀은 convolution 필터가 단 한 번 밖에 보지못하지만 , padding을 해 줄 경우 모서리의 픽셀도 내곽 픽셀처럼 취급하게 되어 필터가 해당 픽셀을 충분히 살필 수 있게 된다.
이미지를 필터로 훑을 때, 한칸씩 이동하며 훑을 수도 있지만 stride를 통해 몇 칸씩 움직일지도 설정 할 수 있다.
위의 사진에서 폰과 손을 찾고 싶을 때 중요한 정보는 선명한 필터, 그렇지 않은 정보는 흐린 필터를 사용하면 될 것이라고 상상할 수 있다.
convolution layer를 여러개 중첩하여 훈련을 통해 그런 필터를 찾을 수 있다.
convolution 레이어는 입력의 정보를 집약시키는 효과가 뛰어나서 여려겹의 레이어를 중첩하는 것이 일반적이고, 중첩할수록 최종 linear 레이어는 작아지게 된다. 이로써 입력에서 중요한 부분을 뽑아내는데 최적화가 된다.