끵뀐꿩긘의 여러가지

경사하강법 본문

Naver boostcamp -ai tech/week 01

경사하강법

끵뀐꿩긘 2022. 9. 22. 22:24

그레디언트 벡터:

Gradient:

gradient는 $f(x,y)$에서 x 방향으로의 편미분 값과 y 방향으로의 편미분 값을 원소로 하는 벡터를 출력한다

$$\nabla f = \frac{\partial }{\partial x}f(x,y)\hat{i} + \frac{\partial }{\partial y}f(x,y)\hat{j}$$

즉 gradient는 스칼라 함수로부터 벡터장을 형성하는 연산자이고, 한 점에서 가장 빨리 증가하는 방향을 나타낸다.

각 벡터는 그 점에서 입력 변수의 방향에서 가장 가파른 기울기를 가졌다는 것을 의미한다

 

 

경사하강법:

함수값이 낮아지는 방향으로 독립 변수값을 조금씩 변형시켜가면서 최종적으로는 최소함수 값을 갖도록 하는 독립 변수 값을 찾는 방법

$$x_{i+1} = x_i - \alpha \frac{\partial }{\partial x}f(x_i)$$

$\alpha$는 학습률

 

손실함수 MSE에 경사하강법 적용하기:

$MSE = \frac{1}{m}\sum_{i=1}^{m}(\hat{y_i} - y_i)^2$

$cost(\theta ,b) = \frac{1}{m}((wx^T + b) - y)^2$ # cost 함수 정의

 

$\theta := \theta -\alpha\frac{\partial }{\partial \theta}cost(\theta,b) $

$\theta := \theta -\alpha\frac{1}{m} x^T((\theta x^T +b) - y)$

 

계속해서 $\theta$ 값을 갱신해 나가다보면 비용함수가 줄어든다

 

for t in range(T): # 반복횟수 지정
    error = y - X @ beta
    grad = - transpose(x) @ error # 일정값 이하면 학습을 멈춰주기도 한다
    beta = beta - lr * grad # 경사하강법

 

경사하강법의 한계:

 learning rate가 너무 큰 경우 한번에 이동하는 거리가 커지므로 빠르게 수렴할 수 있다는 장점이 있지만, 최소값을 지나처 발산할 수 있다.

반대로  learning rate가 너무 작은 경우 최소값까지 도달하는데 시간이 너무 오래 걸린다

 

graident descent는 이론적으로 볼록(convex)한 함수에 대해서 적절한 학습률과 학습 횟수를 선택했을 때 수렴이 보장되어있다.

하지만 비선형 회귀 문제의 경우 local minima 문제가 생긴다.

local minima 문제란 경사하강법을 적용하였을 때, 전역 최솟값에 도달하는것이 아니라 지역 최솟값에 빠져 헤어나오지 못하는 현상을 말한다.

확률적 경사 하강법:

Batch Gradient Descent는 한번 가중치를 업데이트 할때마다 전체 데이터를 사용하여 loss function을 계산한다.

전체 데이터에 대해 loss function을 계산하는 경우 가중치가 안정정으로 많은 계산량과 메모리를 필요로 한다.

 

Stochastic Gradient Descent(SGD)는 전체 데이터 중 단 하나의 데이터를 이용하여 경사 하강법을 1회 진행하는 방법이다

배치 경사 하강법에 비해 적은 데이터로 학습할 수 있고 속도가 빠른 장점이 있지만, 각 데이터에 대한 손실값의 기울기가 다르기 때문에 가중치의 수렴에 shooting이 발생한다

 

Mini - Batch Stochastic Gradient Descent(MSGD)는 전체 데이터를 batch_size개로 나눠 배치로 학습하는 것이다.

전체 데이터가 1000개 batch_size가 100이라면, 전체를 100개씩 총 10묶음의 배치로 나누어 1Epoch(모든 데이터를 한번식 학습에 적용)당 10번 경사하강법을 진행한다. local minimum에 빠질 확률이 배치 경사하강법보다 적다

 

-->.경사하강법의 개선: Momentum, RMSprop, NAG, AdaGrad, ADAM

https://untitledtblog.tistory.com/149

 

[머신 러닝/딥 러닝] 인공 신경망을 위한 확률적 경사 하강법

기존의 경사 하강법 (Gradient descent method)에서 특정 데이터만을 샘플링하여 학습하는 확률적 경사 하강법 (SGD)은 deep neural network를 학습시키기 위해 주로 이용되고 있는 최적화 기법이다. 미니 배

untitledtblog.tistory.com

https://wooono.tistory.com/226

 

[DL] Momentum, NAG, AdaGrad, RMSProp, Adam

이전 포스트에서는 배치 경사하강법, 확률적 경사하강법, 미니 배치 확률적 경사하강법에 대해서 다뤘었다. https://wooono.tistory.com/93 개요 기존의 경사하강법(Gradient descent method)에서 특정 데이터

wooono.tistory.com

 

'Naver boostcamp -ai tech > week 01' 카테고리의 다른 글

주피터 노트북 단축키/명령어/디버깅  (0) 2022.09.24
확률/통계  (1) 2022.09.23
선형대수학  (1) 2022.09.22
pandas  (0) 2022.09.21
Numpy  (1) 2022.09.21
Comments