밑바닥부터 시작하는 딥러닝 5단원 - 오차역전파법
p 148 - 187
신경망의 가중치 매개변수의 기울기 -> 수치 미분을 사용하여 구현함
수치 미분은 단순하고 구현하기도 쉽지만 계산 시간이 오래 걸린다는 것이 단점
따라서 가중치 매개변수의 기울기를 효율적으로 계산하는 '오차역전파법'에 대해 학습해보자.
오차역전파법
: 오차를 역으로 전파하는 방법 (Backward propagation of errors)
계산 그래프 (computational graph)
국소적 계산
각 노드는 자신과 관련한 계산 외에는 아무것도 신경 쓸 게 없다
전체 계산이 아무리 복잡하더라도 각 단계의 국소적인 계산은 단순함.
계산 그래프의 이점 ?
1. 국소적 계산
2. 중간 계산 결과를 모두 보관 가능
3. 역전파를 통해 '미분'을 효율적으로 계산 가능
이 상황에서 만약 사과 가격이 오르면 최종 금액에 어떠한 영향을 미칠까 ?
-> '사과 가격에 대한 지불 금액의 미분'을 구하는 문제에 해당
을 구하는 문제
-> 이 미분 값은 사과 값이 '아주 조금' 올랐을 때 지불 금액이 얼마나 증가하느냐를 표시한 것
연쇄법칙 (Chain Rule)
연쇄법칙이란?
함성 함수의 미분은 합성 함수를 구성하는 각 함수의 미분의 곱으로 나타낼 수 있다.
덧셈 노드의 역전파
z = x + y
최종적으로 L 이라는 값을 출력하는 계산 그래프
곱셈 노드의 역전파
z = x y
사과 쇼핑 예시
사과의 가격, 사과의 개수, 소비세라는 세 변수 각각이 최종 금액에 어떻게 영향을 주는가 !
'사과 가격에 대한 지불 금액의 미분'
'사과 개수에 대한 지불 금액의 미분'
'소비세에 대한 지불 금액의 미분'
구하기
해결해보기!
단순한 계층 구현하기
- 곱셈 노드: 'MulLayer'
- 덧셈 노드: 'AddLayer'
활성화 함수 계층 구현하기
계산 그래프 신경망에 적용하기!
ReLU 계층
Sigmoid 계층
- 1단계
역전파 때는 상류에서 흘러온 값에 -y^2 을 곱해서 하류로 전달한다
- 2단계
'+' 노드는 상류의 값을 여과 없이 하류로 내보낸다
- 3단계
상류의 값에 exp(-x) 를 곱해 하류로 전파한다
- 4단계
‘×' 노드는 순전파 때의 값을 서로 바꿔 곱한다
Sigmoid 계층 계산 그래프 간소화 버전
Affine/Softmax 계층 구현하기