Computation Graph
$J(a, b, c) = 3(a+bc)$
<steps>
1. $ u = bc $
2. $ v = a + u $
3. $ J = 3v $
그래프로 나타내면
최적화하고자 하는 명확한 출력값 (이 경우 $J$) 가 있다면 ...
Logistic Regression 문제에서 $J$는 최소화하고자 하는 cost function
- 왼쪽에서 오른쪽으로 $J$의 값을 계산할 수 있었음
- 미분을 계산할 때는 반대로 오른쪽에서 왼쪽으로 감
the computation graph organizes a computation with the black arrow, left-to-right computation
Derivatives with a Computation Graph
여기에서 $\frac{dJ}{dv}$ 를 구하고자 한다면? 즉, $v$의 값을 조금 바꿨을 때 $J$는 얼마나 변화할까?
$J = 3v$ 이고, $v=11$ 이므로 위와 같은 방식으로 미분값을 구하면 $\frac{dJ}{dv} = 3$
한 step의 back propagation을 했음
여기에서 $\frac{dJ}{da}$ 를 구하고자 한다면? 즉, $a$의 값을 조금 바꿨을 때 $J$는 얼마나 변화할까?
$a=5$, $v=11$, $J=33$ 이므로
$a=5.001$ 로 살짝 이동했을 때 $v=11.001$, 결국에 $J=33.003$
즉 $J$의 변화량은 $a$의 변화량의 $3$배, $\frac{dJ}{da} = 3$
잘 살펴보면, $a$가 바뀌면 $v$가 바뀌고, $v$가 바뀌면 $J$가 바뀐다)
다시 말해 $\frac{dJ}{dv} \frac{dv}{da}$
- $a$가 바뀌면 $v$가 바뀌고
- $v$가 바뀌면 $J$가 바뀐다
--> chain rule(체인룰)
$a$를 바꾸었을 때 $J$가 변화하는 량 = $a$가 바뀌면 $v$가 바뀌는 량 * $v$가 바뀌면 $J$가 바뀌는 량
$$\frac{dJ}{da} = \frac{dJ}{dv} \cdot \frac{dv}{da}$$
* notation
backpropagation을 코드화할 때 최적화하고자 하는 final output variable는 마지막 노드에 있음
어떤 variable 에 대한 final output variable의 미분값 (특정 변수에 의해 영향 받는 양)
--> $\frac{dFinalOutputVar}{dvar}$ 는 dvar
로 나타냄. 예를 들어 $\frac{dJ}{dv}$는 dv
, $\frac{dJ}{da}$는 da
$\frac{dJ}{du}$는 뭘까?
$u=6$, $v=11$, $J=33$ 이므로
$u=6.001$ 로 살짝 이동했을 때 $v=11.001$, 결국에 $J=33.003$
$\frac{dJ}{du} = \frac{dJ}{dv} \cdot \frac{dv}{du} = 3 * 1 = 3$
$\frac{dJ}{db}$는 뭘까?
$J$를 최소화하거나 최대화하기 위해 $b$의 값을 바꿀 수 있다고 해보자.
$\frac{dJ}{db} = \frac{dJ}{du} \cdot \frac{du}{db} = 6$
마지막으로 $\frac{dJ}{dc} = \frac{dJ}{du} \cdot \frac{du}{dcb} = 9$
오른쪽에서 왼쪽으로 가는데, 먼저 계산한 미분값들이 이후의 미분값들을 구하는 데 쓰임
Logistic Regression Gradient Descent
[Logistic Regression]
하나의 example 만을 본다고 쳤을 때,
$$z = w^{T}x + b$$
$$\hat{y} = a = \sigma (z)$$
$$L(a, y) = -(y \log (a) + (1 - y) log (1-a)) $$
두 개의 feature $x_{1}$, $x_{2}$ 만 있다고 하자
- variable $a$에 대한 $L$의 변화량, 즉 da
을 먼저 살펴보자
$$\frac{dL(a, y)}{da} = - \frac{y}{a} + \frac{1-y}{1-a}$$
- dz
는?
$$ \frac{L(a, y)}{dz} = a- y = \frac{dL(a, y)}{da} \cdot \frac{a}{dz}$$
($\frac{a}{dz}$가 $a(1-a)$이므로, $- \frac{y}{a} + \frac{1-y}{1-a}$와 곱했을 때 $y-a$가 되는 것을 확인할 수 있음)
- 마지막으로 $w$와 $b$를 얼마나 바꿔야 하는지로 마무리 됨
즉 dw1
, dw2
, db
를 구하는데
$$\frac{\partial L }{\partial w_{1}} = x_{1} \cdot dz $$
$$\frac{\partial L }{\partial w_{2}} = x_{2} \cdot dz $$
$$ \frac{\partial L }{\partial b} = dz $$
정리해서,
하나의 training example 에 대해 gradient descent 를 하고자 하면
먼저 dz
를 구한 후, dw1
, dw2
, db
를 구하여 update를 한다
$$ w_{1} := w_{1} - \alpha dw_{1}$$
$$ w_{2} := w_{2} - \alpha dw_{2}$$
$$ b := b - \alpha db$$
Gradient Descent on m Examples
$$ J(w, b) = \frac{1}{m} \sum_{i=1}^m L(a^{(i)}, y) $$
$$ a^{(i)} = \hat{y}^{(i)} = \sigma (z^{(i)}) = \sigma (w^{T}x^{(i)} + b)$$
하나의 training example $(x^{(i)}, y^{(i)})$ 에 대해서, $d{w_{1}}^{(i)}$, $d{w_{2}}^{(i)}$, $db^{(i)}$ 를 구한다
이때 cost function이 구하고 있는 것이 "평균" 이므로 그대로 적용할 수 있음
$$ \frac{\partial J(w, b)}{\partial w_{1}} = \frac{1}{m} \sum_{i=1}^m \frac{\partial L (a^{(i)}, y^{(i)})}{\partial w_{1}} $$
이전에 $\frac{\partial L (a^{(i)}, y^{(i)})}{\partial w_{1}} $ 즉, $d{w_{1}}^{(i)} $ 을 계산하는 법은 살펴봤음
[정리]
feature가 2개 일때,
(1) initialize
$$ J = 0, dw_{1} = 0, dw_{2} = 0, db = 0 $$
(2) For Loop
$For\ i = 1\ to\ m$
$z^{(i)} = w^{T}x^{(i)} + b$
$ a^{(i)} = \sigma (z^{(i)}) $
$ J += -[ y^{(i)} \log a^{(i)} + (1-y^{(i)}) \log (1-a^{(i)}) ] $
$ dz^{(i)} = a^{(i)} - y^{(i)}$
$ dw_{1} += {x_{1}}^{(i)}dz^{(i)} $
$dw_{2} += {x_{2}}^{(i)}dz^{(i)} $
$db += dz^{(i)}$
$J /= m $
$dw_{1} /= m; dw_{2} /= m; db /= m$
(3) update (overall)
$dw_{1} = \frac{\partial J}{\partial w_{1}}$
$w_{1} := w_{1} - \alpha dw_{1}$
$w_{2} := w_{2} - \alpha dw_{2}$
$ b := b - \alpha db$
--> 여기까지가 한 번의 iteration 임
- 단점이 있음
for loop 안에 for loop 이 하나 더 있음 (feature마다 미분값 구하는 부분; feature 개수 만큼 돌아야 함)
데이터 셋 크기가 커질수록 부담스러워 짐
vectorization
을 통해 for loop 을 대체하고자 함
'인공지능 > DLS' 카테고리의 다른 글
[1.3.] Shallow Neural Networks(1) (0) | 2022.06.26 |
---|---|
[1.2.] Neural Networks Basics - Python and Vectorization (0) | 2022.06.26 |
[1.2.] Neural Networks Basics - Logistic Regression as a neural network(2) (0) | 2022.06.25 |
[1.2.] Neural Networks Basics - Logistic Regression as a neural network(1) (0) | 2022.06.24 |
[1.1.] What is a Neural Network? (0) | 2022.06.24 |