ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Convolution Layers | 패스트캠퍼스 챌린지 04일차
    딥러닝 2022. 1. 27. 20:07

    흑백 이미지의 경우, 높이 H와 너비 W에 대해 (n_H x n_W) 행렬로 표현될 수 있다. 여기에서 색상정보를 포함하기 위해 채널정보를 넣게 되면 채널 수 n_C에 대해 이미지는 (n_H x n_W x n_C) 텐서로 표현된다(가령, 흔히 사용되는 RGB 채널이면 n_C = 3이다). N개를 미니배치를 돌리면 (N x n_H x n_W x n_C) 텐서로 표현될 것이다.

    이러한 이미지 텐서는 correlation이라는 기법으로 필터링이 가능하다(통계적인 상관관계와는 다른 개념인 듯 하다). 사실 흔히 합성곱 네트워크라고 불리는 convlution network는 correlation network라고 불리는게 더 정확하다고 한다. 다만, 전통적으로 머신 비전에서 convolution 결과가 correlation과 같은 경우가 많기 떄문에 혼용되어 사용된다고 한다. 여하튼 correlation은 이미지 텐서 X와 필터 텐서 F 사이의 텐서곱으로 연산된다. 구체적으로, correlation은 이미지 텐서 X의 각 요소와 필터 텐서 F의 각 요소가 곱해진 것을 모두 더한 것이다. 딥러닝에서는 여기에 bias와 activation function을 적용하여 사용한다.

    이 떄, convlution 연산은 필터를 180도 회전시켜 correlation을 취하는 것인데, 흔히 사용되는 필터들이 180도 회전해도 같이 때문에 correlation과 결과적으로는 같은 이야기가 된다.

    Convolution layer의 기본 개념은 windowing이다. 개념적으로 생각하면 딥러닝 연산을 하기에 이미지는 너무나도 크기 때문에, 이미지의 특정 부분만을 집중해서 그 부분을 가장 잘 필터링 해 내는 파라미터를 찾는 것이 합성곱 레이어라 할 수 있다. 이 때, 이 '특정 부분만을 집중'하기 위해 (주로 정사각형의) 윈도우를 도입한다. 64x64의 이미지가 있으면 이를 9x9 윈도우를 통해 나누어 이해하는 것이다. 이렇게 윈도우 크기 f의 윈도잉을 통해 n_H X n_W의 이미지는 ((n_H - f + 1) X (n_W - f + 1))의 이미지로 표현된다. 즉, 앞선 예시를 보면 64X64의 이미지가 56X56으로 표현되는 것이다. 

    이러한 과정은 이미지의 일부로 부터 자질(feature)를 추출하는 것이라 볼 수 있다. 이 때 자질은 사람이 직접 공학하는 것이 아니라(즉, feature engineering을 거치는 것이 아니라) 기계가 최적의 자질을 뽑을 수 있도록 훈련을 시키게 된다. 이러한 연산을 통해 기계가 가장 분류 및 회귀를 잘 해 낼 수 있도록 스스로 자질 공학을 하는 것이다.


    지금까지는 필요에 의해 RNN 및 Transformer 기반의 자연어처리를 흔히 해 왔기 때문에 이러한 Convolution layer는 새로운 개념이었고, 그렇다 보니 헷갈리는 부분도 많았다. 본격적으로 강의도 여러번 돌려 듣기 시작했다. 사실 CNN을 다루어 본 적이 있긴 한데, Kourkounakis 외가 2020년 발표한 FluentNet이라는 모델을 모사하기 위해서였다. 이 모델은 음성을 Fourier Transformation으로 이미지로 표현한 뒤, 이 이미지를 CNN으로 처리하고, 처리한 이미지를 RNN으로 처리하여 Attention까지 거쳐 특정 말더듬 현상이 있었는지 분류하는 모델인데, RNN부분은 구현하는데 어려움이 없었지만 CNN에서는 텐서 크기 계산을 하느라 애를 먹었던 기억이 난다. 그 때 이렇게 기초부터 차근차근 공부했더라면 훨씬 더 빠르게 모델을 구현할 수 있었으리라 생각된다. CNN을 통한 자연어처리모델이나 이미지와 자연어를 동시에 처리하는 모델 등이 많은 만큼, CNN을 비전 쪽이라고 무시하기 보다 제대로 다루는 것이 중요하다는 생각이다.


    본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다. https://bit.ly/37BpXiC

    댓글

Designed by Tistory.