CNN Basic
Convolution 연산
신호(signal)를 커널을 이용해 국소적으로 증표 또는 감소시켜서 정보를 추출, 필터링하는 것
CNN에서 사용하는 연산은 계속 convolution이라고 불러왔지만 정확히는 cross-correlation이다.
*** 위치(i,j)에 따라 커널이 바뀌지 않는다.
1D-conv : [f∗g](i)=∑p=1df(p)g(i+p)
2D-conv : [f∗g](i,j)=∑p,qf(p,q)g(i+p,j+q)
각 원소 성분곱으로 위의 결과는 19이다.
결과는 입력 크기 - 커널 크기 + 1 이다.
여러개의 2차원은 3차원으로 보고 Tensor라고 부른다.
채널이 여러 개인 2차원은 convolutions은 채널 개수만큼 커널을 만들고 각각의 2차원 입력에 적용한 후 더하면서 수행한다.
Back propagation
포워딩 반대로 미분을 이용하여 가중치를 업데이트 시켜주는 과정이다.
oi=∑jwjxi+j−1
으로 forwarding 된다.
예시로
x1에서 x5까지 있을 때 커널 w1,w2,w3, 결과도 o1,o2,o3가 있다고 하면
입력 x3은 w3과 곱해져 o1에 더해졌고 w2과 곱해져 o2에 더해졌고 w1과 곱해져 o3에 더해졌다.
그래서 역전파단계에서는 각 δ1,δ2,δ3들은 차례로 w3,w2,w1순서로 곱한 후 모두 더해 x3에 그래디언트를 전달한다.
커널에게는 각 δ1,δ2,δ3들에게 x3를 곱해서 각 커널에 전달한다.
이를 전체적인 식으로 살펴보면
∂wi∂L=∑jδjxi+j−1