728x90

1. 개념

1차 미분계수를 이용하여 함수의 최소값을 찾아가는 방법으로 데이터를 활용하여 스스로 학습한다는 머신러닝의 개념을 가능하게 만들어준 핵심적인 기법이다.

출처 : https://zitaoshen.rbind.io/project/optimization/1-min-of-machine-learning-gradient-decent/

사전적 의미인 점진적 하강이라는 뜻처럼 점진적으로 반복 계산을 수행하여 파라미터 값을 업데이트하고, 오류 값이 최소가 되는 파라미터를 구하는 방법이다.

2. 장단점

1). 장점

모든 차원과 공간에서의 적용이 가능하고 심지어 무한 차원에서도 가능하다.

2). 단점

정확성을 위해 극값으로 이동할 때 매우 많은 단계를 거쳐 시간이 많이 걸린다.

즉, 모든 학습 데이터에 대해 반복적으로 최소화를 위한 업데이트를 진행하여 수행 시간이 매우 오래 걸린다는 단점이 있다

이러한 이유로 대용량 데이터의 경우 확률적 경사 하강법 혹은 미니 배치 확률적 경사 하강법을 활용한다.

또한 주어진 함수에서의 곡률에 따라 같은 위치에서 시작하더라도 아예 다른 값이 나올 수 있다는 단점도 있다.

3. 종류

출처 : https://sweta-nit.medium.com/batch-mini-batch-and-stochastic-gradient-descent-e9bc4cacd461

1). Batch Gradient Descent(배치 경사 하강법)

출처 : https://medium.datadriveninvestor.com/batch-vs-mini-batch-vs-stochastic-gradient-descent-with-code-examples-cd8232174e14

가장 기본적인 방법으로 데이터 전체를 활용하여 손실함수를 계산한다.

즉, 파라미터를 업데이트 할 때마다 모든 학습 데이터를 사용하여 계산하는 방법이다.

하나의 Epoch에 모든 파라미터 업데이트를 한번씩 수행하는 방법으로 전체 데이터를 고려하기 때문에 학습을 진행할 때 시간이 오래 걸리고, 큰 메모리가 필요하다는 단점이 있다.

2). Stochastic Gradient Descent(SGD : 확률적 경사 하강법)

출처 : https://medium.datadriveninvestor.com/batch-vs-mini-batch-vs-stochastic-gradient-descent-with-code-examples-cd8232174e14

배치 경사 하강법의 많은 시간과 큰 메모리가 필요한 단점을 보완하기 위한 방법으로 무작위로 샘플링된 데이터 하나씩 사용하여 계산한다.

Batch Size를 1로 설정하여 파라미터를 업데이트하기 때문에 훨씬 빠르고 적은 메모리로 진행이 가능하다.

하지만 확률적인 방법으로 불안정하여 미니 배치 경사 하강법에 비해 안정성이 떨어진다는 단점이 있다.

3). Mini-Batch Gradient Descent(미니 배치 경사 하강법)

출처 : https://medium.datadriveninvestor.com/batch-vs-mini-batch-vs-stochastic-gradient-descent-with-code-examples-cd8232174e14

파라미터를 업데이트 할 때 일부 데이터를 무작위로 선택하여 계산하는 방법이다.

Batch Size가 1개도, 전체 데이터 개수도 아닌 경우를 의미하며 배치 경사 하강법보다 학습 속도가 빠르고, SGD 보다 안정적인 장점이 있다.

이러한 이유로 현재 딥러닝에서 많이 활용되는 방법이다.

하지만 학습 데이터 하나씩 처리하기 때문에 GPU 성능 전체를 활용하는 것이 힘들다.

4. 경사 하강법의 문제점

1). 데이터가 커질수록 연산량이 증가하여 많은 시간과 큰 메모리를 필요로 한다.

경사하강법은 출력되는 예측값과 실제값의 차이인 손실함수의 값을 최소화하는 것이 목적으로 데이터 하나가 모델을 지날 때마다 모든 가중치를 한 번씩 업데이트 한다.

가중치가 적은 모델의 경우 문제가 되지 않지만, 가중치가 많다면 모든 가중치에 연산을 처리하여 시간이 오래 걸리고, 큰 메모리를 필요로 한다.

이러한 문제 해결을 위해 확률적 경사 하강법과 미니 배치 경사 하강법이 개발되었다.

2). Local Minimum(Minima)

출처 : https://medium.com/analytics-vidhya/journey-of-gradient-descent-from-local-to-global-c851eba3d367

손실함수의 실제 그래프는 복잡한 경우가 많다.

이러한 이유로 경사 하강법의 목적이 손실함수에서 랜덤하게 선택한 가중치를 미분한 결과를 활용하여 최적해를 찾는 것인데, 선택한 가중치가 Global Minima가 아닌 Local Minima에 수렴하는 문제가 발생할 수 있다.

하지만 가중치가 매우 많아지면 모든 가중치에 대해 만족하는 계산을 수행하기 때문에 고차원 상에서 흔한 일은 아니며 실제 모델의 학습에서도 발생할 위험이 큰 문제점은 아니다.

3). Plateau(고원 현상)

출처 : http://the-knowledgesmart-blog.blogspot.com/2013/03/learning-plateaus.html

경사 하강법은 기본적으로 기울기를 이용하는 방법으로 기울기가 작은 지점에서 천천히 수렴하는데 평탄한 영역의 기울기가 0에 수렴하면 가중치가 업데이트되지 못하고 Global Minima가 아닌 평탄한 지점에서 멈추는 문제가 발생한다.

그로 인해 더 이상 학습이 일어나지 않는 Gradient Vanishing(가중치 소실) 현상이 발생한다.

이러한 Plateau 문제는 Local Minimum 문제에 비해 자주 발생한다.

4). Zigzag(Oscillation)

출처 : https://www.researchgate.net/figure/Slow-converge-A-and-oscillation-B-of-training-If-the-learning-rate-is-too-small-the_fig3_348123942

경사 하강법은 시작점에서 기울기를 따라 최적값 방향으로 수렴한다.

가중치 크기가 동일할 때 최적값으로 바로 찾아갈 수 있지만, 가중치가 임의의 값으로 동일하지 않을 수 있다.

이처럼 가중치의 크기가 다를 때 진동 현상이 발생한다.

이때 진동의 폭이 크다면 불안정하다는 의미이고, 이동거리가 크다면 최적값에 수렴하지 못할 가능성이 있다.

따라서 업데이트가 진행을 위해 옵티마이저를 설정할 때 진동폭을 작게 만들어주는 것이 중요하다.

 

반응형