-
머신러닝: 역전파(back propagation) 공부하기(개념, 예제)머신러닝 2020. 10. 8. 01:19
< 역전파(Backpropagation)이란? >
계산 결과와 정답의 오차를 구해 이 오차에 관여하는 가중치(W) 값들를 수정하여
오차가 작아지는 방향으로 일정 횟수를 반복해 수정하는 방법이다.
Gradient descent를 이용한 방식은 시간이 너무 오래걸리므로
Backpropagation을 이용하여 효율적으로 dW를 구한다.
computational graphs와 backpropagation을 이용하여 다음과 같이 구한다.
(대략적인 방식이다. 예제를 통해 자세히 알아보자)
간단한 예시를 통해서 backpropagation에 대해 알아보자
f(x, y, z) = (x + y)z 라는 식이 있을 때 다음과 같이 표현할 수 있다.
(중간 지점을 q라 하자)
이 때, x = -2, y = 5, z = -4일 때 backpropagation을 이용하여
gradient를 구해보자
q = x + y
f = q * z 라 할 수 있으므로 각각에 대한 gradient는 다음과 같다.
우리가 원하는 값들은 다음과 같으므로
각각에 대한 값들은 z, z, q 이고
-4, -4, 3이다.
이를 기계적으로 구할 수도 있다.
위와 같은 과정을 거쳐
다음과 같이 정리할 수 있다.
<Pattern in gradient flow>
1. add gate
downstream gradient 과 upstream gradient 값이 같아진다.
2. mulgate
local gradient는 swap한 값 x upstream으로 정해진다.
3. copy gate
local gradient = upstream에서 온 gradient1 + upstream에서 온 gradient2
4. max gate
downstream 값 중에서 더 큰 값이
upstream에서 온 gradient로 할당되며
더 작은 값은 0으로 할당된다.
<Vector backpropagation>
스칼라가 아닌 벡터연산일때 backpropagation을 알아보자
벡터로 backpropagation을 계산하는 경우, 계산이 조금 복잡할 뿐, 스칼라 계산과 유사하다.
※ Jacobian matrices
(dz/dx를 구하는 과정이 Jacobian matrices)
문제를 풀어보면서 벡터 backpropagation을 알아보자
다음과 같은 식의 gradient를 구해본다.
W와 x 값으로 다음과 같은 값이 주어진다.
(벡터연산은 생략한다)
q를 중간 지점 연산 값이라고 할때
f = q^2 이므로 df는 다음과 같다.
곱셈 연산에 대한 local gradient = 2q
이제 W와 x에 대한 local gradient를 구해보자
1) W에 대한 local gradient
q = W * x 이므로
W에 대해 편미분하면 다음과 같다.
df/dw의 원소를 a라 할때
a11 = 0.2 x 0.44 = 0.088
a12 = 0.4 x 0.44 = 0.176
a21 = 0.2 x 0.52 = 0.104
a22 = 0.4 x 0.52 = 0.208 이므로
따라서 df/dW는 다음과 같다.
2) x에 대한 local gradient
q = W * x 이므로
x에 대해 편미분하면 다음과 같다.
df/dx의 원소를 b라 할때
b1 = 0.44 x 0.1 + 0.52 x (-0.3) = -0.112
b2 = 0.44 x 0.5 + 0.52 x 0.8 = 0.636 이므로
따라서 df/dx는 다음과 같다
반응형'머신러닝' 카테고리의 다른 글