CS/Machine Learning

[모두의 딥러닝]lec9-2: 딥넷트웍 학습 시키기 (backpropagation)

dawonny 2021. 7. 18. 02:45
728x90
반응형

https://www.youtube.com/watch?v=573EZkzfnZ0&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=27&ab_channel=SungKim

 

지난번에는 XOR 문제를 두개의 유닛으로 구성된 neural network으로 풀수 있다는 것을 알아보았다

대신 w와 b는 주어졌었는데

이 값들을 어떻게 자동적(기계적으로) 학습할 수 있을까 이번 강의의 주제.

w의 값이 어디서 시작하든 cost함수에서 기울기를 구해서 계속 내려가면 global minimum에 도달할 수 있을 것이다

이것을 구현하기 위해선 미분값이 필요하다

어떤 예측한 값과 원하는 값의 차이 error을 앞으로 돌려서 다시 계산하는 알고리즘

Back propagation

저 수식을 그림으로 나타내면 이렇게 되고

chain rule은

이런걸 말한다

저런 w 같은 것들이 f에 미치는 영향을 알아보려면 미분값이 필요할거다

방법은 두가지 이다

w와 x,b를 받아서 그래프에 입력시키고 backward로 실제 미분의 값을 계산한다

그러기 위해선 x와 w를 저렇게 나타내준다

g가 f에 미치는 영향은 1

b가 미치는 영향도 1

이번에는 w에 관한 값을 구하고 싶다.

이럴때 chain rule을 사용한다

이렇게

af/ax도 구해보자

-2가 된다

한가지 경우를 살펴봤었는데 이번엔 좀 복잡한 경우가 있다고 생각하자

가장 마지막에 있는 노드를 계산한다

a가 f에 미치는 영향을 구할 수 있겠지

그 값을 구한다. 그리고 back propagation을 진행시킨다.

g 까지 가겠지

텐서플로우에서 back propagation 을 하는것

그리고 cost 함수의 미분값이 중요하다

텐서플로우에서는 각각을 그래프로 나누어서 한다

미분을 하기 위해서 이다

근데 구현할 필요가 없고 텐서보드라는 곳에서 그래프를 볼 수 있다.

이런 방법으로 아무리 복잡해도 간단하게 back propagation을 통해 미분값을 구할 수 있다는 것이다

728x90
반응형