Gradient Descent Method (경사하강법)
정의 및 수식
Steepest Gradient Descent Method로도 불리는
Gradient Descent Method(경사하강법)는 여러 Optimization 방법 중 가장 많이 사용되는 방법들 중 하나임.
- training set X와 현재 t에서의 모델의 parameters \boldsymbol{\omega}_t의
- Loss function L(\boldsymbol{\omega}, X)에서
- 모델의 parameters \boldsymbol{\omega}에 대한 Gradient vector \nabla_{\boldsymbol{\omega}} L(\boldsymbol{\omega}_t,X)를 구하고,
- 이 Gradient vector의 반대방향 (negative, -)으로 (=The direction of descending gradient!)
- learning rate eta와 해당 gradien vector의 norm에 의해 결정되는 정도만큼
- 모델의 parameter를 수정(update)하는 과정을 반복하여
현재의 training set에서 loss function을 최소화하는 모델의 parameters를 구함.
이를 수식으로 표현하면 다음과 같음.
\boldsymbol{\omega_{t+1}} = \boldsymbol{\omega_{t}} - \eta \nabla_{\boldsymbol{\omega}} L(\boldsymbol{\omega}_{t},X)
- \boldsymbol{\omega}_{t} : iteration (or time) t에서의 model parameter vector
- \eta : learning rate
- X : training set
- L(\boldsymbol{\omega}_{t},X) : loss function (=cost function, object function)
- \nabla_{\omega} L(\boldsymbol{\omega}_{t},X) : gradient vector (=\dfrac{\partial L(\boldsymbol{\omega}_{t},X)}{\partial \boldsymbol{\omega}}). 정확히는 loss function의 local graident.
Gradient vector에 반대방향(-\nabla_{\boldsymbol{\omega}}L(\boldsymbol{\omega}_t,X))은
현재 parameters의 모델에서 loss function를 가장 급격하게 감소시키는 parameters의 변화 방향을
나타내기 때문에
loss function에 convex인 경우 항상 최적의 해(global solution)에 해당하는 모델의 parameters를 구함.
2023.06.24 - [.../Math] - [Math] Gradient (구배, 기울기, 경사, 경도) Vector
[Math] Gradient (구배, 기울기, 경사, 경도) Vector
Vector: Gradient (구배, 기울기, 경사, 경도), \nabla f(\textbf{x}) multivariate function (=scalar field)에서 input의 미세한 변화에 대해 out이 가장 가파르게 증가하는 direction(방향)과 그 증가하는 변화율의 정도
dsaint31.tistory.com
단, loss function이 convex가 아닐 경우
- 초기 random하게 설정되는 모델의 parameters의 값들에 따라
- 결정되는 local minimum에 해당하는 모델의 parameters를 구하게 되므로
- 항상 global solution을 구한다는 보장이 없음.
Batch, Mini-batch, and Stochastic GD
최초의 Gradient Descent (GD)는 gradient vector를 구할 때,
traing set의 모든 instances를 사용하여 구함 (각 instance에 대한 gradient vector들의 평균에 해당!).
때문에 Batch Gradient Descent라고도 불림 : 이때 batch 는 whole training set을 의미한다.
Deep Learning에서 8, 16, 32 등의 instances로 구성되는 batch는
GD의 관점에서는 사실 mini-batch라고 부르는 게 맞으나
앞뒤 문맥에 따라 해석해야함.
Batch GD는 모든 training set을 통해 한번의 update가 일어나기 때문에
- converge speed가 느리고,
- local minima에 빠지기 쉽다는 단점이 있음.
이에 반해,
- training set의 일부만을 random하게 선택하여 한번의 update를 수행하는 mini-batch GD 또는
- training set에서 하나의 instance를 random하게 선택하여 한번의 update가 수행되는 stochastic GD는
보다 빠른 학습 및 local minimum 탈출이 가능하다는 장점을 가짐.
(단, optimum solution에서 fluctuation이 있다는 단점은 있음)
GD는 Gradient기반의 Optimizers의 기반이 되는 알고리즘이며, 여러 형태의 개선된 버전이 존재함.
https://dsaint31.me/mkdocs_site/ML/ch09/op_summary/
BME228
Optimizers 파라메터가 적은 모델들의 경우 Hessian 계열이 사용되기도 하나, Deep Neural Network에선 Gradient 계열 만이 사용됨. parameters의 수의 square에 비례하는 연산을 요구하는 Hessian 계열은 메모리 문
dsaint31.me
Learning rate 의 중요성
GD에서 hyper-parameter인 leraning rate \eta에 의해
한번의 iteration을 통해 parameters \boldsymbol{\omega}가 업데이트 되는 정도가 결정됨.
- learning rate가 지나치게 작으면, optimized parameters에 이르는데 너무 많은 iterations가 필요함 (느린 수렴속도)
- 반대로 지나치게 크면, loss 값의 iteration에 따른 변화를 나타내는 learning curve가 수렴(converge)하지 않고 발산(diverge)하게 되어 최적의 모델 parameters를 구하지 못하게 됨.
문제는 적절한 learning rate가 경우에 따라 항상 다르기 때문에 각 프로젝트마다 tunning이 반드시 필요함.
Learning rate를 hyper-parameter가 아닌
이차미분에 해당하는 hessian을 이용하여 구하도록 개선한 방법이 Newton Raphson Method임.
2022.06.07 - [Computer/ETC] - [ML] Newton-Raphson Method
[ML] Newton-Raphson Method
f(x)=0을 만족하는 root(근), \hat{x}를 찾는 방법 중 하나 : root-finding algorithm 위의 그림에서 보이듯이 1st order derivative(1차 도함수)를 이용하여 현재의 x_t로부터 x_{t+1}을 구해낸다. 이를 수식으로
dsaint31.tistory.com
참고하면 좋은 자료들
2023.07.08 - [.../Math] - [Math] Linear Programming and Quadratic Programming
[Math] Linear Programming and Quadratic Programming
우리나라 말로 번역하면, 선형계획법 또는 이차계획법인 걸로 알고 있다. 약어로 LP, QP로 자주 사용한다. 참고로 Programming이라고 이름이 붙어있지만 이는 computer programming과는 상관이 없고, optimiza
dsaint31.tistory.com
2023.06.23 - [.../Math] - [Math] Partial Derivatives (편도함수)
[Math] Partial Derivatives (편도함수)
Multi-variate Function (or Scalar Field)에서는 input variable이 여러개, 즉 input이 vector이기 때문에 각각의 input variable의 변화량에 따라 output이 어떻게 변화하는지를 고려하여 Derivative (도함수)를 구해야함.
dsaint31.tistory.com
2023.06.23 - [.../Math] - [Math] Directional Derivative (방향도함수)
[Math] Directional Derivative (방향도함수)
정의 Function f:\mathbb{R}^n\to \mathbb{R}에 대해서 unit vector \textbf{u}=\begin{bmatrix}u_1 & \cdots & u_n\end{bmatrix}^T의 방향으로 function f의 순간변화율이 바로 Directional Derivative임. 수식 $$\nabla_{\textbf{u}}f(\textbf
dsaint31.tistory.com
'Programming' 카테고리의 다른 글
[colab] google drive와 colab연동하기 (기초) (0) | 2023.09.14 |
---|---|
[ML] Ward’s linkage method (0) | 2023.08.06 |
[matplotlib] bar chart 그리기 : error bar 포함 (0) | 2023.08.01 |
[Python] for statement (0) | 2023.07.30 |
[PyQt6] QSizePolicy 설정. (0) | 2023.07.03 |