3-2/기계학습이론

[기계학습] Gradient Descent(경사하강법)_2

dotudy 2024. 10. 17. 19:04

앞선 포스팅에서 경사하강법의 개념과 공식, 그리고 왜 gradient가 증가하는 방향을 가리키고 있는지 알아보았다.

이번 포스팅에서는 앞선 내용을 복습하고 gradient가 왜 가장 빠르게 증가하는 방향인지 알아보도록 하자.

 

복습 문제

Given the following objective function, what is the gradient of $f$ at an arbitrary point $\beta^0$? And, what is the update rule for an arbitrary model parameter $\beta_j$?

 

$$ f(\beta)=\sum_{i=1}^{n}(y_{i}-x_i^T\beta)^2 + \lambda \sum_{j=1}^p\beta_j^2$$

 

$x_i=[x_{i1}, x_{i2}, ..., x_{ip}]$,  $\beta _i=[\beta_{1}, \beta_{2}, ..., \beta _{p}]$

 

$\nabla{f} = [\frac{\partial{f}}{\partial{\beta_1}}, \frac{\partial{f}}{\partial{\beta_2}}, ..., \frac{\partial{f}}{\partial{\beta_p}}]$ 이므로 우리는 먼저 위의 식을 계산해야한다. 

 

 

그리고 Update rule은 다음과 같다.

 

 

이제 gradient가 왜 가장 급격하게 증가하는 방향인지 알아보도록 하자. 우리는 gradient를 가장 최대화해야하는 목표가 있다는 것을 알아두어야한다. 

이를 증명하기 위해서는 특정 한 점에서 방향을 고려한 미분을 해야한다. 

3차원 좌표에서는 방향에 따라 변화량이 달라질 것이기 때문에 임의의 점 $\beta^0$에서 임의의 방향벡터 $\mathbf{u}$를 가정하자. 그리고 그 unit vector 방향으로 미분했을 때 이 함수가 얼마나 변하는지 보도록 하자.

한 점과 방향벡터를 잡았으니 그 방향으로 곡면을 slicing하면 $D_{\mathbf(u)}f$ 곡선이 나온다. 이는 $h: f(\beta _1{(h)}, \beta _2{(h)})$ 함수이고 다음과 같은 좌표를 가지고 있다.

$\beta _1{(h)} = \beta _1^0 + h\cdot u_1$

$\beta _2{(h)} = \beta _2^0 + h\cdot u_2$

이를 보고 각 좌표는 $h$에 대한 함수임을 알 수 있다. 

$f(\beta)) = f(\beta_1, \beta_2)$가 $\mathbf(u)$라는 방향을 고려하면서 $\beta_1, \beta_2$가 철저히 $h$에 따라 움직이게 되는 것이다. 

이제 그 점에서의 gradient를 구해보자.

$\frac{df}{\mathsf{d}h}$를 구할 때는 chain rule을 써서 구해야한다. 

 

$\frac{\mathsf{d}f}{\mathsf{d}h}=\frac{\partial{f}}{\partial\beta_1}\frac{\mathsf{d}\beta_1}{\mathsf{d}h} +\frac{\partial{f}}{\partial \beta_2}\frac{\mathsf{d}\beta_2}{\mathsf{d}h}$

 

    $ =\frac{\partial{f}}{\partial\beta_1}\cdot u_1 + \frac{\partial{f}}{\partial\beta_2}\cdot u_2$

 

    $ = \left [ \frac{\partial{f}}{\partial\beta_1} , \frac{\partial{f}}{\partial\beta_2}\right ] \cdot [u_1, u_2]$


    $ = \mathbf{\nabla{f}} \cdot \mathbf{u}$

 

즉, 함수의 변화량은 결국 함수의 gradient와 방향벡터의 내적임을 알 수 있다.

 

 

그러면 이 값이 최대가 되기 위해서는 $ = \mathbf{\nabla{f}}$와 $ \mathbf{u}$가 모두 같은 방향을 가리키고 있을 때이다. 

$\mathbf{u}$가 가장 최대화되기 위해서는 단위 벡터 $\mathbf{u}$는 그라디언트와 같은 방향을 가리키고 있어야한다. 따라서 gradient의 방향이 함수의 변화를 최대로 만드는 방향이라는 것을 알 수 있다. 

 

 

정리!

 

1. gradient vector는 함수가 가장 빠르게 증가하는 방향을 가리키고 있다.

2. 이를 증명하기 위해서는 특정 점에서 특정 방향으로 방향에 따른 함수의 변화량을 계산해야한다.

3. 어떤 점이나 어떤 방향을 선택하던지 간에 $ \mathbf{\nabla{f}} \cdot \mathbf{u}$가 도출된다.

4. 이를 최대화하기 위해서는 u는 $\nabla{f}$가 가리키는 방향을 가리키고 있어야한다.

5. 따라서 $\nabla{f}$가 가리키는 방향이 함수의 변화량이 최대가 되는 그 방향이라는 결론을 내릴 수 있다.

 

 

다른 방법으로 증명하기 !

 

여기서 level curve는 등고선이다. 

gradient는 등고선과 수직이라는 것을 증명하면 된다. 이는 결국 가장 빠르게 증가하는 방향이라는 것을 뜻한다.

 

 

 

이렇게 gradient가 가장 빠르게 증가하는 방향이라는 것을 알아보았다.