경사하강법(Gradient Descent)은 머신러닝과 최적화 문제에서 널리 사용되는 기법으로, 주어진 함수의 최솟값(또는 최댓값)을 찾기 위해 사용된다. 주로 손실 함수(Loss Function)를 최소화하는 데 사용되며, 이 과정에서 모델의 파라미터를 업데이트한다. 경사하강법의 기본 아이디어는 함수의 기울기(Gradient)를 이용하여 함수의 값을 점진적으로 줄여나가는 것이다.
1. 경사하강법의 기본 원리
경사하강법은 다음과 같은 절차를 따른다.
- 초기값 설정: 먼저, 모델의 파라미터(예: 가중치와 편향)를 초기화한다. 이 초기값은 임의로 설정될 수 있다.
- 기울기 계산: 현재 위치에서의 손실 함수의 기울기(Gradient)를 계산한다. 이 기울기는 파라미터 공간에서 함수가 가장 급격하게 증가하는 방향을 나타낸다.
- 파라미터 업데이트: 파라미터를 기울기의 반대 방향으로 조금씩 이동시킨다. 이때 이동하는 크기는 학습률(Learning Rate)이라는 하이퍼파라미터로 조절된다.
- 수렴 조건 확인: 파라미터 업데이트를 반복하며, 손실 함수의 값이 더 이상 줄어들지 않거나, 일정한 반복 횟수에 도달할 때까지 이 과정을 반복한다.
2. 수식으로 표현한 경사하강법
경사하강법은 수식으로 다음과 같이 표현할 수 있다.
- θ: 최적화하려는 파라미터(들)
- J(θ): 최적화할 손실 함수
- α: 학습률
경사하강법의 업데이트 규칙은 다음과 같다:
여기서:
- θ는 현재 시점의 파라미터 값이다.
- ∇θJ(θt)는 손실 함수 J(θ)에 대한 파라미터 θ의 기울기(Gradient)이다.
- α는 학습률로, 기울기 방향으로 얼마만큼 이동할지를 결정하는 값이다.
3. 경사하강법의 종류
- 배치 경사하강법 (Batch Gradient Descent):
- 전체 데이터셋을 사용하여 기울기를 계산한다.
- 매우 정확한 기울기를 계산할 수 있지만, 계산 비용이 많이 든다.
- 데이터가 클 경우 매우 느리게 수렴할 수 있다.
- 확률적 경사하강법 (Stochastic Gradient Descent, SGD):
- 데이터셋의 개별 샘플에 대해 기울기를 계산하고 파라미터를 업데이트한다.
- 계산이 매우 빠르지만, 기울기가 자주 변동하기 때문에 손실 함수가 불안정하게 움직일 수 있다.
- 적절히 조정하면 더 빠르게 수렴할 수 있다.
- 미니배치 경사하강법 (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 |