오차역전파 (Backpropagation)
오차역전파 알고리즘
- 학습 데이터로 정방향(forward) 연산을 통해 손실함수 값(loss)을 구함
- 각 layer별로 역전파학습을 위해 중간값을 저장
- 손실함수를 학습 파라미터(가중치, 편향)로 미분하여
마지막 layer로부터 앞으로 하나씩 연쇄법칙을 이용하여 미분 각 layer를 통과할 때마다 저장된 값을 이용 - 오류(error)를 전달하면서 학습 파라미터를 조금씩 갱신
오차역전파 학습의 특징
- 손실함수를 통한 평가를 한 번만 하고, 연쇄법칙을 이용한 미분을 활용하기 때문에
학습 소요시간이 매우 단축! - 미분을 위한 중간값을 모두 저장하기 때문에 메모리를 많이 사용
신경망 학습에 있어서 미분가능의 중요성
- 경사하강법(Gradient Descent)에서 손실 함수(cost function)의 최소값,
즉, 최적값을 찾기 위한 방법으로 미분을 활용 - 미분을 통해 손실 함수의 학습 매개변수(trainable parameter)를 갱신하여
모델의 가중치의 최적값을 찾는 과정
출처: https://www.pinterest.co.kr/pin/424816177350692379/
합성함수의 미분 (연쇄법칙, chain rule)
ddx[f(g(x))]=f′(g(x))g′(x)
- 여러 개 연속으로 사용가능∂f∂x=∂f∂u×∂u∂m×∂m∂n× ... ∂l∂k×∂k∂g×∂g∂x
- 각각에 대해 편미분 적용가능
- 오차역전파의 직관적 이해
- 학습을 진행하면서, 즉 손실함수의 최소값(minimum)을 찾아가는 과정에서 가중치 또는 편향의 변화에 따라 얼마나 영향을 받는지 알 수 있음
합성함수 미분(chain rule) 예제
a=−1, b=3, c=4,
x=a+b, y=b+c, f=x∗y 일때
∂f∂x===y + x ∂y∂x(b + c) + (a + b) × 07
∂f∂y===x + ∂x∂y y(a + b) + 0×(b + c)2
∂x∂a==1 + a ∂b∂a1
∂y∂c==∂b∂c +11
∂f∂a====∂f∂x×∂x∂ay×17×1=77
∂f∂b ===∂x∂b y + x ∂y∂b1×7+2×19
덧셈, 곱셈 계층의 역전파
- 위 예제를 통해 아래 사항을 알 수 있음∂z∂x=1,∂z∂y=1∂t∂x=y,∂t∂y=x
- 2. t=xy 일 때,
- 1. z=x+y 일 때,
1
활성화 함수(Activation)에서의 역전파
시그모이드(Sigmoid) 함수
출처: https://www.geeksforgeeks.org/implement-sigmoid-function-using-numpy/
- 수식y′=====(11+e−x)′−1(1+e−x)2 × (−e−x)11+e−x × e−x1+e−x11+e−x × (1−11+e−x)y (1 − y)
- y=11+e−x일 때,
[ ]
1
ReLU 함수
- 수식
∂y∂x={10(x≥0)(x<0) - y={x0(x≥0)(x<0) 일 때,
[ ]
1
행렬 연산에 대한 역전파
Y=X∙W+B
순전파(forward)
- 형상(shape)을 맞춰줘야함
- 앞서 봤던 곱셈, 덧셈 계층을 합친 형태
[ ]
1
[ ]
1
[ ]
1
[ ]
1
역전파(1)
Y=X∙W
- X: (2, )
- W: (2, 3)
- X∙W: (3, )
- ∂L∂Y: (3, )
- ∂L∂X=∂L∂Y∙WT, (2, )
- ∂L∂W=XT∙∂L∂Y, (2, 3)
[ ]
1
[ ]
1
역전파(2)
(2) Y=X∙W+B
- X,W는 위와 동일
- B: (3,)
- ∂L∂B=∂L∂Y, (3, )
[ ]
1
[ ]
1
배치용 행렬 내적 계층
- N개의 데이터에 대해,
- X:(N, 3)
- W:(3, 2)
- B:(2, )
- Y=X∙W+B
[ ]
1
[ ]
1
[ ]
1
[ ]
1
[ ]
1
[ ]
1
[ ]
1
[ ]
1
MNIST 분류 with 역전파
Modules Import
[ ]
1
데이터 로드
[ ]
1
데이터 전처리
[ ]
1
[ ]
1
Hyper Parameters
[ ]
1
Util Functions
[ ]
1
Util Classes
ReLU
[ ]
1
Sigmoid
[ ]
1
Layer
[ ]
1
Softmax
[ ]
1
[ ]
1
모델 생성 및 학습
[ ]
1
[ ]
1
[ ]
1
[ ]
1
[ ]
1