컴퓨터공학/NN

경사하강법(Gradient Descent)

airoot 2024. 8. 28. 18:49

경사하강법(Gradient Descent)은 머신러닝과 최적화 문제에서 널리 사용되는 기법으로, 주어진 함수의 최솟값(또는 최댓값)을 찾기 위해 사용된다. 주로 손실 함수(Loss Function)를 최소화하는 데 사용되며, 이 과정에서 모델의 파라미터를 업데이트한다. 경사하강법의 기본 아이디어는 함수의 기울기(Gradient)를 이용하여 함수의 값을 점진적으로 줄여나가는 것이다.

1. 경사하강법의 기본 원리

경사하강법은 다음과 같은 절차를 따른다.

  1. 초기값 설정: 먼저, 모델의 파라미터(예: 가중치와 편향)를 초기화한다. 이 초기값은 임의로 설정될 수 있다.
  2. 기울기 계산: 현재 위치에서의 손실 함수의 기울기(Gradient)를 계산한다. 이 기울기는 파라미터 공간에서 함수가 가장 급격하게 증가하는 방향을 나타낸다.
  3. 파라미터 업데이트: 파라미터를 기울기의 반대 방향으로 조금씩 이동시킨다. 이때 이동하는 크기는 학습률(Learning Rate)이라는 하이퍼파라미터로 조절된다.
  4. 수렴 조건 확인: 파라미터 업데이트를 반복하며, 손실 함수의 값이 더 이상 줄어들지 않거나, 일정한 반복 횟수에 도달할 때까지 이 과정을 반복한다.

2. 수식으로 표현한 경사하강법

경사하강법은 수식으로 다음과 같이 표현할 수 있다.

  • θ: 최적화하려는 파라미터(들)
  • J(θ): 최적화할 손실 함수
  • α: 학습률

경사하강법의 업데이트 규칙은 다음과 같다:

여기서:

  • θ는 현재 시점의 파라미터 값이다.
  • ∇θJ(θt)는 손실 함수 J(θ)에 대한 파라미터 θ의 기울기(Gradient)이다.
  • α는 학습률로, 기울기 방향으로 얼마만큼 이동할지를 결정하는 값이다.

3. 경사하강법의 종류

  1. 배치 경사하강법 (Batch Gradient Descent):
    • 전체 데이터셋을 사용하여 기울기를 계산한다.
    • 매우 정확한 기울기를 계산할 수 있지만, 계산 비용이 많이 든다.
    • 데이터가 클 경우 매우 느리게 수렴할 수 있다.
  2. 확률적 경사하강법 (Stochastic Gradient Descent, SGD):
    • 데이터셋의 개별 샘플에 대해 기울기를 계산하고 파라미터를 업데이트한다.
    • 계산이 매우 빠르지만, 기울기가 자주 변동하기 때문에 손실 함수가 불안정하게 움직일 수 있다.
    • 적절히 조정하면 더 빠르게 수렴할 수 있다.
  3. 미니배치 경사하강법 (Mini-batch Gradient Descent):
    • 전체 데이터셋을 작은 배치로 나누어 각 배치에 대해 기울기를 계산한다.
    • 배치 경사하강법과 확률적 경사하강법의 절충안으로, 계산 효율성과 안정성을 동시에 얻을 수 있다.

4. 학습률(Learning Rate)의 중요성

  • 학습률이 너무 크면: 한 번의 업데이트로 너무 많이 이동하게 되어 최솟값을 지나쳐 버리거나 발산할 수 있다.
  • 학습률이 너무 작으면: 최적의 값을 찾기 위해 많은 반복이 필요하게 되어 수렴 속도가 매우 느려진다.

따라서 적절한 학습률을 설정하는 것이 매우 중요하며, 경우에 따라 학습률을 점차 줄여가는 방법(예: 학습률 감쇠, Learning Rate Decay)을 사용할 수도 있다.

5. 편향(bias)의 중요성

신경망에 편향을 추가함으로써 학습을 좀더 빠르게 할 수 있다. 이는 학습데이터가 변향되어 있는 경우 이를 보정해 주기 때문이다.

 

6. 경사하강법의 한계

  • 국소 최소값(Local Minima): 비록 경사하강법이 함수의 최소값을 찾도록 설계되었지만, 여러 국소 최소값이 존재하는 함수에서는 전역 최소값(Global Minimum)이 아닌 국소 최소값에 수렴할 수 있다.
  • 평탄한 지역: 손실 함수가 평탄한 지역을 가질 경우, 기울기가 거의 0에 가까워지며 파라미터 업데이트가 매우 느려질 수 있다.

이와 같은 문제를 해결하기 위해 모멘텀(Momentum), AdaGrad, RMSProp, Adam 등 다양한 변형된 경사하강법 알고리즘이 개발되었다.

경사하강법은 기계학습 모델의 최적화 과정에서 매우 중요한 역할을 하며, 그 원리를 이해하는 것이 모델을 잘 구축하고 튜닝하는 데 핵심적이다.

'컴퓨터공학 > NN' 카테고리의 다른 글

손실함수(loss function)  (0) 2024.08.28
신경망에서 사용되는 활성화함수들  (0) 2024.08.28
Word2Vec  (0) 2024.08.21
해석 가능한 인공지능(Explainable AI, XAI)  (0) 2024.08.20
Forward-Forward Algorithm  (0) 2024.08.16