[모두의 딥러닝] lec 09-2. Neural Network: 딥네트웍 학습시키기 (backpropagation)
W, b 값을 어떻게 자동적으로 기계학습시킬 수 있을까?
Gradient descent 알고리즘
- 이 알고리즘의 구현을 위해서는 어떤 점에서의 미분값(기울기)이 필요함
--> NN으로 가면서 이 미분값 계산이 복잡해짐.
- x1이 Yhat에 끼친 영향을 알아야 W 값을 조정할 수 있을 것.
- 또한 각각의 점에서의 입력값들이 Yhat(결과)에 끼친 영향을 알아야 함.
문제해결: Backpropagation 알고리즘
- 출력값, 예측값을 비교하여 거기에서 나온 오류(error, cost)를 뒤에서부터 앞으로 전달하여 미분값과
어떤 것을 조정할 지 알려주는 것
예제: Back propagation (중요: chain rule (합성함수))
- 이 그래프를 통해 W, x, b가 f에 미치는 영향을 알아볼 것
- 방법 2가지로 진행
1. forward propagation: 실제 어떤 학습 데이터의 값을 가져와서 입력
2. backward: 실제 미분값 계산
- 왜 미분을 하냐?
: 아무리 복잡한 것들이 있더라도 미분하는 데 필요한 것은 이 편미분한 값들임.
--> 어떤 복잡한 것들이라도 미분가능
* chain rule
- 미분의 의미
ex) 1: b가 f에 미치는 영향이 1:1로 비례
ex) 5: w가 5배 증가하면 f도 5배 비례하게 증가
- 복잡한 경우
1. 제일 먼저 마지막에 있는 노드를 계산 (이유: 'back' propagation)
a가 f에 미치는 영향, b가 f에 미치는 영향...
2. g의 편미분 값을 알고있다고 가정
3. x가 f에 미치는 영향 계산 (x는 최종 입력값)
x가 g에 미치는 영향은 알 수 있음. (이유: operation을 미리 알고 있기 때문. (편미분))
--> chain rule 적용
- 최종 입력값부터 출력값까지 많은 gate가 있다고 해도 최종 출력값간의 미분값을 구할 수 있게 된다.
Sigmoid
- 힘들게 미분하지 말고 그래프를 그려보기
- 1/x 의 미분값을 그 뒤의 미분값과 곱하고, 결과 값을 그 뒤의 미분값과 곱하고 ...
- 이런 방법으로 아무리 복잡한 식도 처음 미분값만 알고 있다면 구할 수 있다.
Back propagation in TensorFlow: TensorBoard
- 따라서 텐서플로우에서는 모든 것이 그래프이다.
- cost 함수의 미분값
: 각각을 다 그래프로 만듦
==> 이유: TensorFlow가 이것을 다 미분하여 back propagation을 하기 위해서이다.
- 이러한 그래프들은 TensorBoard 라는 곳에서 볼 수 있다.
==> 이런 방법을 이용하면 아무리 복잡해도 back propagation을 이용하여 미분값(기울기)를 구할 수 있다.
'인공지능' 카테고리의 다른 글
[모두의 딥러닝] lab 09-2. Tensorboard (Neural Net for XOR) (0) | 2019.05.07 |
---|---|
[모두의 딥러닝] lab 09-1. Neural Net for XOR (0) | 2019.05.07 |
[모두의 딥러닝] lec 09-1. Neural Network: Neural Nets (NN) for XOR: XOR 문제 딥러닝으로 풀기 (0) | 2019.05.06 |
[모두의 딥러닝] lab 08. Tensor Manipulation (0) | 2019.05.06 |
[모두의 딥러닝] lec 08-2. 딥러닝의 기본 개념: Back-propagation과 2006/2007 '딥'의 출현 (0) | 2019.05.05 |
댓글