CNN(Convolutional Neural Network) 역전파에 대한 정리
CNN 역전파 (Backpropagation for CNN)
Convolution layer 연산
- 보통 CNN 구조는 Convolutional Layer, Activation Function, Pooling 순으로 진행됨.
Backpropagation 연산
- 출력층을 덧붙여서 위와 같이 표현할 때, 출력값을 , 실제값을 , 손실함수를 이라고 함.
- 계산상 편의를 위해 손실함수를 특정하지 않고, 활성화 함수(f, g)는 모두 ReLU로 함.
- ReLU 함수
학습 대상 가중치
- 위 모델에서 학습대상 가중치들은 컨볼루션 필터의 4개(, , )와 maxpooling 이후 출력층 연결 가중치 1개()가 된다.
출력층 레이어 Gradient 계산
- 손실함수를 이라 하고, 에 대한 출력층 가중치 의 편미분은 다음과 같다.
- 이 때, 를 풀어보면,
maxpooling 연산 가중치
- max-pooling의 경우 중 가장 큰 값에 대해서 항등함수(identity)의 결과를 출력함
- 즉 4개의 가중치 중 단 1개가 기울기 1로 존재하며, 나머지에 대해선 기울기가 0이됨
- 을 활성화 값의 최대값 위치라고 할 때,
- 이 때, 를 풀어보면 위에서 을 전개한 것과 같은 방식으로 아래와 같은 해가 나옴
- 따라서,
filter 가중치
- 컨볼루션 filter 가중치(, , ) 중 의 기울기부터 살펴본다
- 는 이전 픽셀 값 에 대하여 영향을 준다
- 이에 따라 의 기울기는 아래와 같이 전개함\
- 컨볼루션 filter의 크기는
- 나머지 3개의 가중치들도 같은 식에 대입하면 아래와 같이 일반화 할 수 있다
- 다시 위에서 다룬 pooling에 대한 가중치에 chain rule을 적용하고 나면 최댓값 위치인 ()을 제외하고 나머지는 기울기가 0이 된다
- 따라서 최종 가중치식은 다음과 같다
- 모든 가중치의 기울기를 구하고 나면 Gradient Descent 알고리즘으로 각 가중치를 업데이트 할 수 있다