[모두의 딥러닝] 딥네트웍 학습 시키기(backpropagation)
📗강의노트/모두의 딥러닝

[모두의 딥러닝] 딥네트웍 학습 시키기(backpropagation)

728x90
반응형

Sung Kim 님의 "모두의 딥러닝" 강의노트입니다

좋은 강의 감사드립니다!

https://www.youtube.com/watch?v=mQGwjrStQgg&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=5


W1,W2,b1,b2 어떻게 기계적으로 학습시킬 것 인가!


G -> gradientDescent  learning rate를 통해 계속 내려가다 보면 global minimum에 도착할 수 있다. 이것이 cost를 최소화하는 것 

미분 즉, 기울기를 계산하여야하는데 

x가 Y에게 각각의 노드들이 Y에게 미치는 영향력을 알기위해서는 각각을 미분해야하는 데 계산량이 너무 많고 힘들다. 그래서 minsky가 아무도 못한다고 말한 것이다.

하지만 이를 해결한 것이 Backpropagtion이다. 출력값과 실제값을 비교해서 나오는 오류(cost)를 뒤부터 앞으로 돌려서 미분값과 조정해야하는 것을 찾는 방법이다.

수식을 그래프로 옮김
Chain rule : 바깥 미분 * 안에거 미분


먼저 forward를 통해 값을 넣어 계산한다. 

미분의 값의 의미는 = 1이나온 것은 “b의 변화가 미치는 영향이 거의 1:1로 비례한다는 것”
w미분값이 5인데 이는 1만큼 바뀌면 5배 바뀐다는 것이다. 

처음에는  뒤의 것만 미분하여 a가 f에 미치는 영향을 파악한다. f = a+b
그 다음에 뒤로가면서 계산하는데 궁극적으로 원하는 값은 x가 f에 미치는 영향력이다. 

일단 x의 변화가 g에 미치는 영향은 안다. g=xy
여기서 chain rule을 사용한다. 

∂g/∂x  ( local ) 과 g가 f에 미치는 영향력 ∂f/∂g를 곱하면 “x의 변화가 f에 미치는 영향”을 알 수 있다. 


sigmoid에서 z가 g에 미치는 영향을 알고 싶어함 
각각의 미분 값 local들을 곱해서 진행함 

각각을 다 그래프로 그려서 이해하기
그래프는 tensorboard에서 볼 수 있다. 

어떠한 복잡한 식이라도 Back propagation을 통해 미분값을 구할 수 있다. 






728x90
반응형