AI/ML(지도학습)

[파이썬 머신러닝 완벽가이드 - 회귀(Regression)] 경사 하강법(Gradient Descent)

criling 2021. 7. 16. 02:01

'데이터를 기반으로 알고리즘이 스스로 학습한다'는 머신러닝의 개념을 가능하게 만들어준 핵심 기법 중 하나.

 

회귀에서 비용 함수가 최소가 되는 W 파라미터 값을 구하기 위해 비용 함수의 반환 값, 즉 예측값과 실제 값의 차이가 작아지는 방향으로 W 값을 계속 업데이트 해 나간다.

이때 작아지는 방향을 미분을 통해 구한다.

 

비용 함수 = R(w), 미분된 비용함수 = R'(w), 기존 변수 = w1, 갱신된 변수 = w2, 학습율 = n 라고 가정한다.

w2 = w1 -n*R'(w1)

위 식을 통해 w2가 점점 비용 함수의 최소값을 구할 수 있는 변수로 줄어들 것이다.

 

학습률(Learning Rate)

n(에타)는 변수가 갱신되는 정도를 나타내며 학습률에 따라 최소값을 찾지 못하는 경우가 있다.

R(w) = w^11, w1=1, n=0.1로 가정한다면 손실 함수 값이 위로 튀어버리는 오버슈팅(Overshooting)현상이 발생한다.

이는 학습률이 너무 크기 떄문에 발생하는 현상이고, 반대로 학습률이 너무 작다면 최소값을 찾지 못하고 지역 최소값(Local minimum)에 도달한다.

 

비용 함수가 다변수 함수라면 편미분을 통해 변수들을 갱신해 나간다.

 

업데이트 되는 변수의 모양(shape)에 고려하며 행렬 연산을 해야한다.

 

일반적으로 경사 하강법은 모든 학습 데이터에 대해 반복적으로 비용 함수 최소화를 위한 값을 업데이트 하기 때문에 시간이 매우 오래 걸린다는 단점이 있다.

 

그렇기 때문에 확률적 경사 하강법(SGD, Stochastic Gradient Descent)를 이용한다.

SGD는 전체 데이터가 아닌 일부 데이터만 이용해 w를 업데이트한다. 그렇기에 속도가 일반 경사 하강법 보다 빠르다.

대용량 데이터에 대해선 미니 배치 확률적 경사 하강법을 이용하여 최적 비용함수를 도출한다.