* 이 글은 홍콩과기대 김성훈 교수님의 무료 동영상 강좌 "모두를 위한 머신러닝과 딥러닝 강의"를 보고 요점을 정리한 글 입니다.
BackPropagation(Chain Rule)
수많은 복잡하고 어려운 문제를 해결하기 위해서는 왼쪽의 그림과 같이 많은 Layer를 가지고 있는 Neural Network를 사용해야만 합니다. 과거에는 이런 많은 수의 Layer에 적용해야 하는 각각의 Weight(가중치)와 Bias 값을 학습시킬수 있는 방법이 없을 것이라고 생각했지만 결국 BackPropagation(역전파)을 사용한다면 충분히 학습이 가능하다는 결론을 얻게 되었습니다.
학습의 궁극적인 목표는 Gradient Descent Algorithm(기울기 감소 알고리즘)과 같은 알고리즘을 사용하여 Cost Function(비용 함수)의 최소지점을 찾는 것 입니다. 이런 Cost Function의 최소 지점을 찾는 계산에는 미분법을 사용해야만 하고 많은 Layer를 갖는 Neural Network에서도 이것은 변하지 않습니다.
이런 많은 수의 Layer를 갖는 Neural Network에서 미분을 편하게 하기위해서 사용되는 기법이 바로 Chain Rule(연쇄 법칙)이라고 불리우는 기법입니다. Chain Rule을 간단한 수식으로 표현하면 Equation (1)과 같습니다.
$$ \frac{\partial f}{\partial x} = \frac{\partial f}{\partial g} \cdot \frac{\partial g}{\partial x} $$ | (1) |
이 수식은 f(g(x))로 표현 가능한 복잡한 형태의 수식을 간단하게 미분할 수 있는 방법입니다.
Linear Regression(선형 회귀)에서 사용하는 가설 Equation (2)를 수식 트리 형태로 표현하면 위의 그림과 같습니다.
$$ H(x)=W x+b $$ | (2) |
이 간단한 형태의 수식에 BackPropagation을 적용시켜 보겠습니다. BackPropagation은 먼저 입력값을 넣어준 뒤 결과에서 발생한 에러를 사용해서 진행이 되어야 합니다. 따라서 이 수식의 입력값을 먼저 w=-2, x=5, b=3 이라고 가정한 뒤 시작하겠습니다.
먼저 Equation (2)는 Equation (3),(4) 로 바꿔서 표현할 수 있습니다. 이 분리된 수식에 적용가능한 미분법을 모두 적용시켜 계산해 본다면 Equation (5)와 같습니다.
$$ g(x) = wx $$ | (3) |
$$ f(x) = g(x) + b $$ | (4) |
$$ \frac{\partial g}{\partial w} = x, \quad \frac{\partial g}{\partial x} = w, \quad \frac{\partial f}{\partial g} = 1, \quad \frac{\partial f}{\partial b} = 1 $$ |
(5) |
이 값들은 f(x)와 g(x)에서 사용되는 연산의 종류를 알고있기 때문에 간단하게 구할 수 있습니다.
BackPropagation을 하기 위해서는 각각의 입력값이 결과에 얼마나 영향을 주는지를 알아야 하기 때문에 알아야 하는 값들은 Equation (6)에서 볼 수 있는 3가지 입니다. 위에서 구한 수식값들을 사용해서 구해야 할 3가지 값을 계산해 본다면 Equation (7)-(9)과 같습니다. 여기서 위에서 언급하였던 Chain Rule을 사용합니다.
$$ \frac{\partial f}{\partial w}, \quad \frac{\partial f}{\partial x}, \quad \frac{\partial f}{\partial b} $$ | (6) |
$$ \frac{\partial f}{\partial w} = \frac{\partial f}{\partial g} \cdot \frac{\partial g}{\partial w} = 1 \cdot x = x $$ | (7) |
$$ \frac{\partial f}{\partial x} = \frac{\partial f}{\partial g} \cdot \frac{\partial g}{\partial x} = 1 \cdot w = w $$ | (8) |
$$ \frac{\partial f}{\partial b} = 1 $$ | (9) |
여기서 맨 처음에 설정하였던 입력값이 w=-2, x=5, b=3 이기 때문에 결론적으로는 Equation (10)의 결과를 얻을 수 있습니다.
$$ \frac{\partial f}{\partial w} = 5, \quad \frac{\partial f}{\partial x} = -2, \quad \frac{\partial f}{\partial b} = 1 $$ | (10) |
각각의 값이 의미하는 바는 w를 1 증가한 경우 결과값은 원래 결과값에에 5를 더한 값으로 바뀌고, x를 1 증가하면 2를 뺀 값으로, b를 증가하면 1 더한값으로 바뀐다는 의미입니다. 처음에 설정하였던 w=-2, x=5, b=3에 대한 결과는 7인데 우리가 원래 원하는 결과가 12라고 하였을 경우 w를 1 증가시켜주면 된다는 것을 이 결과로부터 알아낼 수 있습니다.
이러한 방법을 응용만 한다면 복잡한 수식이라도 식의 미분값을 이용해 BackPropagation에 적용시킨다면 계산이 가능하게 됩니다.