CNN 첫걸음

cherry·2024년 6월 22일
1

Naver AI Precourse

목록 보기
8/21

지금까지 배운 다층신경망(MLP)는 각 뉴런들이 선형모델과 활성함수로 모두 연결된 fully connected 구조였다. 그러나 이것의 문제점은 각 성분 hih_{i}에 대응하는 가중치행 Wi\textbf{W}_{i}가 모든 성분에 대해 필요하다. 즉, 가중치 행렬의 사이즈가 너무 커진다는 문제가 있다.

Convolution 연산은 이를 해결하기 위한 구조이다.
커널(kernel)이라는 고정된 벡터/행렬을 입력벡터 상에서 움직여가며 적용하는 구조이다. 이를 통해 파라미터 사이즈를 대폭 줄일 수 있게 된 것이다.





Convolution과 Cross-correlation

convolution

convolution 연산의 수학적 의미는 신호(signal)를 커널(kernel)을 이용해 국소적으로 증폭 또는 감소시켜 정보를 추출 또는 필터링하는 것이다. 아래 식에서 g가 신호, f가 커널라고 생각하면 된다.



Cross-correlation

그런데 사실 CNN에서 사용되는 연산은 엄밀히는 convolution이 아니라 cross-correlation이다. 왜냐하면 아래 나와있는 것처럼 -가 아니라 + term이기 때문이다. 그래도 전체 공간에서는 +인지 -인지 중요하지 않다. 다만 컴퓨터에서는 convolution과 cross correlation은 차이가 크니 인지해두고 있자. 관용적으로는 ML분야에서 이 과정을 cross correlation이 아니라 convolution이라고 부르고 있다.



다양한 차원에서의 convolution

입력 데이터의 성격에 따라 사용하는 커널의 차원이 달라지게 된다.
예를 들면, 음성이나 텍스트 데이터는 1D-conv, 칼라 영상과 같은 데이터는 3D-conv를 사용하게 된다.





CNN에서의 convolution

2차원 convolution 연산

여기서 중요한 것은 element-wise multiplication이라는 점이다. 아래 예시를 통해 확인해보자.


다음으로 중요한 것은 convolution 연산 후 출력되는 함수의 크기가 어떻게 되는지를 알아야 한다.





채널이 여러개인 2차원 convolution 연산



이를 직육면체 블록으로 표현하면서 출력벡터까지 보여주자면 다음과 같다. 아래 이미지에 나와있듯이, 커널과 입력벡터의 채널수는 같아야한다. 아래의 경우 출력벡터의 채널수는 1이 된다.


만약, 출력벡터가 채널을 가지게 하고 싶다면?
커널의 개수를 늘리면 된다.



(참고) 채널과 깊이의 차이





convolution연산의 역전파

convolution은 미분해도 convolution이 나온다. 따라서 역전파를 계산할 때에도 convolution 연산이 나오게 된다.


우선 forward propagation 과정을 설명해보면 다음과 같다.


자 그럼 back propagation은 어떻게 될까?


1. 손실함수 계산


2. 출력층에서의 기울기 계산


3. 합성곱 층의 기울기 계산

세부적인 과정은 다음과 같다.

이동하면서 각각의 커널이 입력 x3 뿐만 아니라 다른 입력에서도 차례대로 적용되었기 때문에 다음과 같은 모양이 나온다.


위의 과정을 한번에 식으로 나타내면 다음과 같다.


4. 가중치 업데이트

profile
Physics Informed Machine Learning 천재만재

0개의 댓글