Deep learning

7. backpropagation 개념

PIYA 2021. 12. 24.


1. 로스함수를 a로 미분한 값, \(\frac{dL}{da}\) 구하기

간단한 예제로 backward propagation이 작동하는 원리에 대해서 정리해보자

주어진 이미지 데이터 x에 대해 고양이인지 아닌지 1, 0으로 판단하는 모델에 대해서 얘기해보자
즉 이 데이터는 인풋 x와 레이블 y 페어로 (x, y) 이루어져있다고 하자

예측모델의 결과값은 \( 0 \le \hat{y} \le 1\)이고, 편의상 \( \hat{y} = a \)라고 하자

먼저 두개의 파라미터 w, b를 써서 회귀모델의 방정식을 z = wx + b로 놓고
아웃풋을 확률값으로 맞추기 위해 logistic function을 적용한다
$$ \sigma (z) = \sigma (wx+b) $$
이때 logistic function은 \( \sigma(z) = \frac{1}{1+e^{-z}}\)이다.

결과값 a와 y의 차이를 로스라고 정의했고,
이 차가 적을수록 예측을 잘하는 좋은 모델이다

딥러닝 스터디 (2)에서 정리했듯이 로스함수는 아래와 같다
$$ \mathcal{L} (a, y) = -\{y\log a + (1-y) ( \log{(1-a)} \} $$

위 수식을 a에 대해 편미분하면 로그함수의 미분법으로 아래과 같은 결과가 나오는데,

$$ \frac{dL}{da} = - \frac{y}{a} * \frac{1-y}{1-a}$$

 

이 \(\frac{dL}{da}\), 편의상 \(da\) 의 의미는 L에 미치는 a의 영향으로 볼 수 있다.
다른말로, a의 변화율에 대한 L의 변화율이라고도 표현할 수 있고
a가 1 변할 때 L이 얼마나 영향을 받느냐, 변하느냐 하는 것을 알 수 있게 해주는 값이다.

즉 \(\frac{dL}{da}\)의 값이 3이면 a가 1이 변할 때 L은 3이 변한다는 뜻이다.




2. \(\frac{dL}{dz}\) 구하기
만약 z가 로스함수 L에 어떤 영향을 미치는지 확인하려면,
다른말로 z에 대한 로스함수 L의 변화율을 확인하려면,
\(\frac{dL}{dz}\)값을 확인하면 된다.

\(\frac{dL}{dz}\)는 체인룰에 의해 아래와 같이 표현할 수 있으며,
$$ \frac{dL}{dz} = \frac{dL}{da} * \frac{da}{dz}$$

\(\frac{dL}{da}\)는 위 1번에서 계산하였고, \( \frac{da}{dz} \) 는 logistic fuction \( a = \frac{1}{1+e^{-z}} \)를
z에 대해 잘 미분하여 계산하면 아래의 값이 나온다$$ \frac{dL}{dz} = a-y$$가 나온다.

 

계산과정은 생략?ㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇ

 

 

 


 

 



3. \(\frac{dL}{dw}\), \(\frac{dL}{db}\) 구하기
z = wx + b를 w에 대해서 미분하면 \( \frac{dz}{dw} = x \)이며,
chain rule을 적용하여 \( \frac{dz}{dL}\frac{dL}{dw} = x\)를 계산하면
\(\frac{dL}{dw} = x* \frac{dL}{dz}\)가 된다. \(\frac{dL}{dz}\)는 위에서 구했듯 a-y이다.

b에 대해서도 같은 방식으로 계산하고 정리하면,

$$ \frac{dL}{dw} = x * (a-y)$$

$$ \frac{dL}{db} = a-y $$

 

 

 


 

 

 

 

 

 

4. 파라미터 업데이트
결국 이렇게 da, dz부터 dw, db까지 뒤로 내려오며 미분값을 계산하는 이유는
로스를 최소화하기위해, 더 나은 모델을 만들기 위해 w와 b를 얼마나 변화시켜야 하는지 계산하기 위해서다.

결론부터 말하면 w와 b의 파라미터 업데이트는 아래와 같이 이루어지는데

손실함수를 해당 파라미터로 미분한 값에 learning rate 알파를 곱해 기존 값에서 뺀다

 

$$ w = w - \alpha * \frac{dL}{dw}$$
$$ b = b - \alpha * \frac{dL}{db}$$

 

기존 파라미터에서 값을 마이너스하는 이유는 아래 그림에서 이해할 수 있다
x축은 파라미터 w, y축은 loss function을 더한 cost function이라고 했을 때,

파라미터 업데이트는 cost function의 값을 낮추는 방식으로 진행되어야 한다

 

즉 특정 w지점에서 그래디언트(미분값)을 구했을 때, 그것이 양의 값이라면

양의 값을 빼주어야 코스트함수가 낮아지는 방향으로 파라미터를 업데이트 할 수 있기 때문이다.

이때 코스트함수는 아래로볼록, convex fuction으로 가정한다.

 

 

 

 

 

결론적으로 파라미터 업데이트 식은 아래와 같다

 

$$ w = w - \alpha * x * (a-y) $$
$$ b = b - \alpha * (a-y) $$

 

 

 

이와 같이 da부터 시작해서 dz, dw와 db를 구하는 방식으로 되돌아 내려오는것을

역전파, backpropagation, backward propagation이라고 한다

'Deep learning' 카테고리의 다른 글

8. Logistic Regression  (0) 2022.01.03
6. L-p Norm, 노름  (0) 2021.12.21
5. Chain Rule  (0) 2021.12.19
4. 경사하강법, Gradient Descent  (0) 2021.12.18
3. Cost Function  (0) 2021.12.17

댓글