개요
해당 포스팅 시리즈는 “Unerstanding Deep Learning” 책을 학습하는 과정을 기록하는 스터디 노트이다.
이번에는 10장, Convolutional networks에 대해 다룬다.
1. Convolutional kernal
10장에서 다루는 CNN에서는, layer의 모든 unit에 가중치를 다르게 두는 FNN과는 다르게, layer를 convolution 연산을 통해 다음 convolutional layer를 만든다.
layer의 모든 unit들에 대해서 동일한 kernal을 가지고 convolution 연산을 한다는 점에서 네트워크 계산이 되게 인상적이고 효율적이라고 생각하였다.
여기서 한 layer의 연산에 쓰이는 파라미터 양이 FNN보다 월등히 낮고, 한 unit의 연산이 주변의 unit들의 영향을 받기 때문에, 이미지 처리에는 CNN이 훨씬 좋다는 것을 책에서 알 수 있었다.
2. Channel
CNN에서는 다음 layer로 넘어갈 때 activation function때문에 정보가 clip되는 문제가 발생하는데, 이를 해결하기 위해 각 layer에 channel이 사용된다고 책에서 서술하고 있다.
이 말고도 RGB 또는 CMYK 이미지 데이터를 표현하기 위해서 3개 혹은 4개의 채널을 차지하여 사용하고 있다.
그리고 보통 CNN 모델에서 layer가 깊어질수록 channel이 점점 커지게 설계하는 경향이 보이는데, 이는 깊은 레이어일수록 작아지는 input 사이즈로 인한 정보 손실의 보간, 혹은 깊을수록 추출하는 정보의 양을 더 늘려주는 것이라 볼 수 있다.
3. Down/Upsampling
10장에서는 CNN에서 레이어 차원을 맞추기 위해 downsampling, upsampling 기법들을 소개한다.
여기서 소개하는 기법들은 CNN 레이어의 차원을 맞추기 위해 사용되지만, 한 이미지를 저화질로 압축하거나 고화질로 만드는 방법으로 사용될 수도 있다고 생각해보았다.
Downsampling의 mean pooling은 여러 픽셀의 색을 평균내어 압축하는 것이고, max pooling은 가장 뚜렷한 색으로 대체하여 압축하는 것이다.
Upsampling 기법은 이미지를 고화질로 만들기 위해 bilinear interpolation으로 보간할 수도 있고, trasnposed convolution으로 딥러닝을 활용해 고화질로 변환할 수 있다.
Reference
[1] Prince, S. J. D. (2023). Understanding Deep Learning. The MIT Press. Retrieved from http://udlbook.com