일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자료구조
- Django Nodejs 차이점
- 매크로
- iOS14
- correlation coefficient
- scanf
- 연결요소
- 구조체와 클래스의 공통점 및 차이점
- 시간복잡도
- 입출력 패턴
- 장고란
- Django의 편의성
- double ended queue
- string 함수
- EOF
- c++
- 백준
- 알고리즘 공부방법
- 프레임워크와 라이브러리의 차이
- vscode
- k-eta
- Django란
- string 메소드
- 입/출력
- 표준 입출력
- UI한글변경
- getline
- 이분그래프
- 엑셀
- 2557
- Today
- Total
Storage Gonie
모두를 위한 딥러닝 제27강 lec9-2: 딥넷트웍 학습 시키기 (backpropagation) 본문
모두를 위한 딥러닝 제27강 lec9-2: 딥넷트웍 학습 시키기 (backpropagation)
Storage Gonie 2018. 10. 1. 18:48# 어떻게 weight와 bias를 학습시킬 수 있는가?
- 1969년도에 Minsky 교수가 weight와 bias를 훈련시키는 방법을 찾을 수 있는 이가 아무도 없다고 하였음.
- 이 이유는 입력 및 각 노드의 출력이 최종 결과값에 미치는 영향을 계산해낼 수 없었기 때문이다.
- 그런데 1974, 1982년도에 Paul Werbos, 1986년도에 Hinton에 의해서 Backpropagation 방법으로 훈련시킬 수 있음이 알려짐.
- 간단한 예를 통해 입력 및 각 노드의 출력이 최종 결과값에 미치는 영향을 계산해 낼 수 있음을 확인하자.
# 입력 및 각 노드의 출력이 최종 결과값에 미치는 영향을 계산하는 예시
- Q. x, w, b의 입력이 있고 *, + 노드가 있으며 최종 출력 f = wx + b일 때 w, x, b의 입력과 * 노드 가 각각 f에 미치는 정도를 구하여라.
<해결방법>
1) 임의의 초기값(w=-2, x=5, b=3)에 대해 forward를 진행하여 각 노드의 출력값 및 최종 출력값을 구한다.
2) backward를 진행하여 입력변수(w, x, b)와 각 노드의 출력이 f에 미치는 영향을 구한다.
- e는 원래 거꾸도 뒤집어진 모양이어야함. 즉, partial을 의미.
- 우리는 각각이 최종출력 f에 미치는 영향을 알아햐 하므로 ef / ew, ef / ex, ef / eb 이 세개의 값을 구하려고 한다. 또한 중간노드에 대한 ef/eg도 구해야함.
- 이게 왜 f에 미치는 영향의 정도를 의미하냐면 ef / ew 는 아주 작은 w값에 대해 f가 움직이는 정도를 나타내기 때문이다. 이게 이해가 안되면 바로 전 강의를 보자.
- 맨 뒤에서 부터 계산되어야 하므로 g가 f에 미치는 영향 즉 ef/eg를 구한다.
- f = g + b 이므로 ef/eg = 1
- 그 다음 ef/ew 와 ef/ex를 구한다.
- x, w와 f 사이에서 g가 연결다리 역할을 해주므로 chain rule을 아래와 같이 적용하여 각각을 구한다.
- 따라서 ef/ew = 5, ef/ex = -2
- 그 다음 ef/eb를 구한다.
- ef/eb = 1
- 최종적으로 모든 입력과 출력이 f에 미치는 영향을 구하였다.
- ef / ew = 5
- ef / ex = -2
- ef / eb = 1
# 결론 : 아무리 복잡한 네트워크 상에서도 미분 값을 모두 구해낼 수 있다는 것.
- chain rule을 사용하면 맨 뒤에서부터 미분값을 구해와서 입력변수에 대한 f의 미분 값도 알아낼 수 있다. 이것이 바로 Back propagation
# 텐서플로우가 그래프 형식으로 구현된 이유
- Back propagation은 맨 뒤에서부터 거슬러 올라와야 하기 때문에.
'데이터 사이언스 > 모두를 위한 딥러닝' 카테고리의 다른 글
모두를 위한 딥러닝 제28강 ML lab 09-1: Neural Net for XOR (0) | 2018.10.01 |
---|---|
모두를 위한 딥러닝 제26강 lec9-x: 특별편: 10분안에 미분 정리하기 (lec9-2 이전에 보세요) (0) | 2018.10.01 |
모두를 위한 딥러닝 제25강 lec9-1: XOR 문제 딥러닝으로 풀기 (0) | 2018.09.30 |
모두를 위한 딥러닝 제24강 ML lab 08: Tensor Manipulation(연산함수) (0) | 2018.09.29 |
모두를 위한 딥러닝 제22-23강 lec 08-1, lec 08-2: 딥러닝의 역사 (0) | 2018.09.27 |