Gradient Descent
# Tag:
- Source/KU_DL
Gradient Descent
함수의 값이 낮아지는 방향으로 각 독립변수들의 값을 변형시키면서 함수가 최솟값을 갖도록 하는 독립변수의 값을 탐색하는 방법.
, for
즉, 일종의 optimization 기법이며 local minimum, convex를 찾는 데 목적이 있다.
와 같이 전개되므로, 변화량 을 최대화하는 방향으로 local minimum을 찾아야 한다. 이때는, 와 의 방향이 일치할 때이므로, 그 방향으로 를 update 시킨다.
steps
- 에서의 미분을 통해 기울기를 구한다.
- 구한 기울기의 반대 방향으로, 특정 값만큼 이동시킨 에서의 미분을 구한다.
- 보통 미분값을 더하거나 빼는 방식을 이용하며, 극솟값을 찾을 때는 빼고, 극댓값을 찾을 때는 더한다.
- 입력값 Matrix로 주어진다면 Gradient()을 통해, 편미분 값을 구하여 그의 norm을 더하거나 뺀다.
- 미분값이 0에 수렴할 때까지 반복한다.
이동시키는 거리는, 적절하게 정해져야 미분 값이 0이 되도록 찾아지게 되며, 이를 Learning Rate()라고 한다.
이 Learning Rate는, Cross Validation등을 통하여 찾아내게 된다. Learning rate을 곱하여, 적절히 값을 이동시킨다.
- Learning Rate는 적절히 곱해져야 하며, 만약 너무 크게 정해진다면 진동이 일어나 수렴하지 않게 될 수도 있다.
- 반대로, 너무 작다면 학습에 너무 오랜 시간이 걸릴 수 있다.
problem
- 어디까지나 local minumum을 찾는 기법으로, galobal optimal point라는 보장이 없다.
- 일일이 진행되므로, 그 학습 속도가 느리다.