[딥러닝] 경사하강법
딥러닝에서의 학습은 순전파와 역전파를 통해 connection weight을 업데이트하는 과정으로 나타난다.
이 과정에서 connection weight을 어떻게 하면 '잘' 업데이트 할 수 있을 것인가에 대한 다양한 기법이 제안되었다.
그 중 가장 기본이 되는 원시적인 학습 기법이 경사하강법$(Gradient\,Decent\,Method)$이다.
경사하강법이란, Error함수$(loss\,funtion)$을 구성하는 weight들이 이루는 공간에서, loss function을 최소화하는 w 값을 찾기 위해 한번의 epoch에 각 weight를 얼마나 업데이트할 것인가를 해당 시점의 기울기를 통해 찾는 알고리즘이다.
예를 들어 아래와 같은 공간이 NN의 loss function이라고 해보자.
첫 지점으로 initialize된 weight값들을 시작으로, 해당 지점의 w마다 gradient를 계산하여 각 w의 현재 값에서 $(gradient * learning\,rate)$만큼을 빼서 weight를 업데이트한다.
산을 타고 내려가는 발걸음$(step\,size)$을 기울기를 통해서 정한다고 생각하면 이해가 쉽다.
산을 빠르게 내려가기 위해서 다음 보폭을 얼마나 크게 내딛을 것인가를 생각할 때, 현위치를 기준으로 주위에서 가장 가파른 곳으로 딛는 것이 가장 효율적으로 아래로 내려가는 방법인 것과 같은 맥락이다.
각 시점에서 gradient값으로 weight를 업데이트하는 학습 과정을 Loss function이 최소가 되어 더이상의 업데이트가 일어나지 않을 때까지 반복하는 것이 경사하강법의 목표이다.