Linear Regression을 위한 Backpropagation은 다음과 같은 모델들을 사용하여 순서대로 진행될 것이다.
- y=θx
- y=θ1x+θ0
- y=θ2x2+θ1x1+θ0
그리고 각 단계에서도 첫 번째로는 하나의 sample에 대한 backpropagation, 두 번째로는 2개의 sample에 대한 backpropagation, 마지막으로 Vectorized form의 backpropagation으로 진행될 것이다.
그러면 이번 포스트에서는 첫 번째 model부터 살펴보도록하자.
Backpropagation for One Sample
먼저 forward-backward propagation을 위한 node들을 먼저 만들어보면 다음과 같다.

즉, z1 node는 prediction value가 될 것이고, L는 loss를 구하게 된다. 그리고 각 node에서의 partial derivative를 구하면 다음과 같이 표시할 수 있다.

그리고 Chain rule에 의해 θ까지의 backpropagation을 계산하면 다음과 같다.
∂L∂z1=∂L∂z2∂z2∂z1=2z2∗(−1)=−2z2=−2(y−z1)
∂L∂θ=∂L∂z2∂z2∂z1∂z1∂θ=∂L∂z1∂z1∂θ=−2x(y−z1)=−2x(y−θx)
따라서 Backpropagation은 다음과 같이 일어난다.

θ=θ−lr∗∂L∂θ=θ−lr∗(−2x(y−θx))=θ+lr∗2x(y−θx)
Backpropagation for Two Samples
우리가 Learning 단계에서 mini-batch를 사용한다면 loss가 아닌 cost를 parameter update에 사용하게 된다.
즉, loss들의 평균을 구하는 node가 추가된다. 그리고 mini-batch size가 2인 linear regression model은 다음과 같다.

그리고 각 node에서의 partial derivative를 표시하면

이 되고, Chain rule을 이용하여 backpropagation을 계산하면 다음과 같다.
∂J∂z(1)2=∂J∂L(1)∂L(1)∂z(1)2=12∗2z(1)2
∂J∂z(2)2=∂J∂L(2)∂L(2)∂z(2)2=12∗2z(2)2
∂J∂z(1)1=∂J∂L(1)∂L(1)∂z(1)2∂z(1)2∂z(1)1=∂J∂z(1)2∂z(1)2∂z(1)1=−12∗2z(1)2=−12∗2(y(1)−z(1)1)
∂J∂z(2)1=∂J∂L(2)∂L(2)∂z(2)2∂z(2)2∂z(2)1=∂J∂z(2)2∂z(2)2∂z(2)1=−12∗2z(2)2=−12∗2(y(2)−z(2)1)
∂J∂θ=∂J∂L(1)∂L(1)∂z(1)2∂z(1)2∂z(1)1∂z(1)1∂θ=∂J∂z(1)1∂z(1)1∂θ=−12∗2x(1)(y(1)−z(1)1)=−12∗2x(1)(y(1)−θx(1))
∂J∂θ=∂J∂L(2)∂L(2)∂z(2)2∂z(2)2∂z(2)1∂z(2)1∂θ=∂J∂z(2)1∂z(2)1∂θ=−12∗2x(2)(y(2)−z(2)1)=−12∗2x(2)(y(2)−θx(2))
이를 visualization하면 다음과 같다.

따라서 parameter update는 다음과 같이 된다.
θ=θ−lr∗(−12∗2x(1)(y(1)−θx(1))−12∗2x(2)(y(2)−θx(2)))=θ+lr∗12∑2i=12x(i)(y(i)−θx(i))

Backpropagation Vectorized form
위의 두 번째 단계는 실제 프로그래밍을 하기에도 힘들고, 같은 연산이 반복될 때 사용되는 vectorization을 이용하지 못한 모양이다. 따라서 mini-batch 사이즈가 임의의 n개일 때는 vectorization form을 이용하게 되고, 이 포스트에서는 3개의 mini-batch에 대한 backpropagation을 다룬다.
먼저 forward propgation을 포함한 model은 다음과 같다.

그리고 각 node에서 Jacobian을 이용한 partial derivative를 표시하면 다음과 같다.

그리고 각 node에서 실제로 backpropagationdmf 계산하면 다음과 같다.

따라서 Backpropagation은 다음과 같이 전체적으로 표시할 수 있다.

'Deep Learning 정리노트' 카테고리의 다른 글
Backpropagation for Common Activation Functions (0) | 2020.01.30 |
---|---|
Introduction to Common Activation Functions(Sigmoid, Tanh, ReLU) (0) | 2020.01.30 |
Backpropagation for Linear Regression3 (0) | 2020.01.30 |
Backpropagation for Linear Regression2 (0) | 2020.01.30 |
Backpropagation Modules (0) | 2020.01.30 |