CNN (Convolutional neural network)

CNN의 channal 및 역전파(backpropagation)

왕눈임 2024. 11. 30. 19:21

CNN에서는 이전 layer에서 계산된 Feature Map

필터를 적용하여 다음 Feature Map을 생성합니다.

 

이 과정에서 이전 layer의 Feature Map의 채널 개수필터 개수에 따라

새로운 Feature Map의 채널 개수가 결정됩니다.

 

이러한 채널개수에 대한 이해와 더불어

최종적으로 역전파 계산이 어떻게 이루어지는지 이해하는 것을 목표로 합니다.


 

아래와 같이 Feature map의 채널이 3개 있고

필터의 개수가 5개 있다고 해봅시다.

 

결과부터 말하면 convolution 연산 결과로 다음 feature map의 채널 개수는

필터 개수인 5개 만큼 생성되게 됩니다. 

 

어떤식으로 연산이 이루어지는지 살펴봅시다.

 

하나의 필터를 feature map에 convolution 연산 할 때에

feature map의 모든 채널에 같은 연산을 하여 그 결과를 합칩니다.

 

다시 말해 위와 같이 다음 layer에 feature map 원소 하나(activation)를 계산할 때 

 

이전 feature map의 각각의 채널에

동일한 필터로 convolution 연산을 하고 그걸 전부 더하여 계산합니다.

 

즉 필터 하나로 모든 채널에 conv연산을 하고 더해서 구성하기에

이전 layer에 feature map의 채널개수와 상관없이

필터 하나당 다음 feature map 채널 하나가 생성되어

결과적으로 필터의 개수와 다음 feature map의 채널 개수가 같아지게 됩니다.


backpropagation

하나는 필터를 구성하는 weight 

 

다른 하나는 mlp weight 

 

CNN은 이미지 정보를 보다 효율적으로 처리하기 위해 conv 연산을 사용했었습니다.

그러나 최종적으로 분류 문제를 해결하려면

기존의 MLP(Multi-Layer Perceptron)를 활용하여

이러한 분류 작업을 더 효과적으로 수행할 수 있습니다.

 

따라서 CNN은 마지막 레이어에 MLP를 추가하여 모델을 구성합니다.

 

cnn에서는 이렇게 최종적으로 구성된 feature map을 전부 flatten하는 과정을 거쳐

flattend datamlp weight로 선형식으로 표현하여 최종 output을 구성하게 됩니다.

 

그래서 cnn에서의 최종 output을 표현하면 아래와 같습니다.

여기서 a는 activation으로 feature map의 개별 원소를 의미합니다.

 

따라서 activation은 앞서 본 것처럼,

동일한 필터를 사용하여 feature map의 각 채널에 conv 연산을 수행하고,

그 결과들을 모두 더한 값입니다.

 

그래서 위 계산식에서 w는 필터의 weight를 의미합니다.

 

다시 돌아와서,

여기서 weight는 mlp의 weight입니다.

이는 feature map의 연산 결과를 flatten하여

최종 MLP weight와 연산하여 출력값을 계산하기 위해서입니다.

 

이렇게 mlp weight와 선형결합여 나온 output을

활성화 함수인 f()에 입력하여 최종 output을 구성하게 되는 것입니다.

 

그래서 먼저 mlp에서 사용하는 weight를 update한다면.

 

최종 output인 y를 활성화함수에 대해서 미분하고,

 

활성화함수를 바로 mlp weight로 미분하면됩니다.

.은 활성화함수를 의미

conv연산에서 필터에 사용한 weight에 대한 update를 한다면.

최종 output인 y를 활성화함수에 대해 미분하고

 

활성화함수를 activation에 대해 미분하고

 

activation을 필터의 wieght로 미분하면 됩니다.