Loading [MathJax]/jax/output/CommonHTML/jax.js
본문 바로가기

인공지능(AI) 이론과 코드/4. 딥러닝

경사 하강법 Gradient Descent 에 대한 수학적 이해와 활용

경사 하강법(Gradient Descent) 의 수학적 이해

 

인생의 내리막은 성장이 멈춘 순간부터 온다

 

여러분, 인생에서 이런 경험 있으신가요?
우리 주변의 문제를 해결하려고 고민할수록 점점 더 복잡해지고, 어디서부터 시작해야 할지 몰라서 막막했던 순간들 말이죠. 그런데, 결국은 내 바로 앞에 주어진 문제에 대해 한 걸음씩, 아주 단순한 방식으로 나아갈 때, 길이 보이더라구요.

 

컴퓨터도 마찬가지입니다. 복잡한 문제를 풀기 위해 처음부터 완벽한 답을 찾으려고 애쓰는 대신, "조금씩 나아가며" 답에 가까워지는 방법을 사용합니다. 이를 경사 하강법(Gradient Descent) 이라고 합니다.

 

쉽게 말하면 이런 거예요. 생각해보세요.

지금 여러분이 깜깜한 밤에 높은 언덕 위에 있다고 상상해 봅시다. 목표는 언덕 아래로 안전하게 내려가는 겁니다. 그런데 문제는, 눈앞이 너무 어두워서 어디로 가야 할지 보이지 않는다는 거예요.

 

이럴 때 여러분은 어떻게 할까요?
한 번에 뛰어내리지 않고, 발 밑을 느끼며 조금씩, 가장 내리막이 되는 방향으로 내려가겠죠. 이 작은 움직임이 쌓이고 쌓여 마침내 산 아래, 목표 지점에 도달하게 되는 겁니다. 경사 하강법은 컴퓨터가 이런 식으로 복잡한 수학적 문제를 푸는 방법이에요.현재 위치에서 가장 빠르게 손실(오류)을 줄일 수 있는 방향으로 이동하며, 점점 더 좋은 답을 찾아가는 거죠.

 

오늘 강의에서는 바로 이 경사 하강법의 원리와 사용 방법, 그리고 우리의 삶을 어떻게 바꿀 수 있는지 이야기해 보겠습니다. 한 걸음, 한 걸음을 나아가보시죠.

 

경사 하강법에 비유되는 산 정상에서 내려오

 


#1. Gradient Descent 

Gradient Descent 를 한글로 하면,  Gradient (기울기/경사)는 함수의 변화율, 특정 지점에서의 기울기이고, Descent (감소)는 기울기를 따라 함수 값을 낮추는 과정을 의미합니다. 즉 함수의 기울기에 따라 함수 값을 낮을 쪽으로 변화시키는 과정이죠. 경사 하강법은 우리 말에서도 쓰이지 않아 괜스레 어렵게느껴지지만 원리는 어렵지 않죠. 

 

Gradient Descent 의 목적은 함수의 최소값을 구하는 것입니다. 여기서 말하는 함수를 바로 " 손실 함수(Loss Function) " 라고 하는데요.

손실 함수(Loss Function)란?

손실 함수는 모델의 예측값과 실제값 간의 차이를 측정하는 함수로, 모델의 성능을 평가하고 학습 방향을 결정하는 데 사용됩니다. 손실 함수의 역할은대표적으로 모델의 정확도를 평가하고, 최적화를 위한 파라미터를 조정하는 역할을 합니다.  

모델 정확도 평가 : 모델 예측값과 실제값의 차이를 수치화.
최적화 기준 : 손실 함수 값을 최소화하도록 모델 매개변수(또는 파라미터라고 함. 예: 가중치, 편향 등)를 조정.
학습 방향 제공 : 경사하강법 등 최적화 알고리즘에서 손실 함수를 기준으로 학습 진행.

 

손실함수는 대표적으로 회귀 문제에 쓰이는 MSE, MAE와 분류 문제에 쓰이는 Cross Entropy, 두 확률 분포간의 차이를 계산하는 KL Divergence가 있습니다. 간단히만 살펴보고 추후 수학적 이해에 대해 리뷰해보겠습니다.

 

경사 하강법의 기본수식은 다음과 같습니다.

θt+1=θtαθJ(θt)

 

위 수식에서 각 요소들이 의미하는 바는 다음과 같습니다.

 

θt: t-번째 반복에서의 파라미터 벡터.

θt+1 : t-번째 반복에서의 업데이트된 파라미터 벡터.

α: 학습률(learning rate). 이동 스텝 크기 결정.

θJ(θt): -번째 손실 함수 $J(\theta)$의 기울기(gradient).

 

 

 

경사하강법의 단계와 원리는 다음과 같습니다.

초기화 : 파라미터 θ를 임의의 값으로 설정.
기울기 계산 : 현재 θt​에서 손실 함수 J(θ)의 기울기θJ(θt) 계산.
파라미터 업데이트 : θt+1=θtαθJ(θt)
반복 : 손실 함수가 충분히 작아질 때까지, 또는 반복 횟수 기준 도달 시까지 2~3단계 반복.

 

예를 들어, 다음의 손실 함수에 대해 GD를 적용한다면 기울기는 다음과 같이 계산합니다. 

J(θ)=θ2

기울기 : θJ(θt)  = 2θ

업데이트 수식 : θt+1=θtαθJ(θt) θt(12α)

 

수식에서 뒤에 있는 항은 이동거리와 방향을 나타내는데요. 

이동 거리 : 학습률 과 기울기 크기에 의해 결정.

이동 방향 : 기울기 θJ(θt) 의 반대 방향.

 

구체적으로 이동거리와 방향을 설정하는 기울기와 학습률은 별도 챕터로 알아보겠습니다.

 


 

#2. 기울기



는 매개변수를 업데이트하기 위해 이동할 거리와 방향을 결정하는 핵심 요소입니다. 이를 세부적으로 살펴보겠습니다.

1. θJ(θt) 의 의미

손실 함수  J(θ) 의 현재 매개변수 θt 에 대한 기울기(gradient)

 

방향은 기울기가 양수일 때, 매개변수를 감소시켜야 손실 함수가 줄어듭니다. 반대로 기울기가 음수일 때, 매개변수를 증가시켜야 손실 함수가 줄어듭니다. 크기는 현재 손실 함수 값이 얼마나 급격히 변하고 있는지를 나타냅니다.

 

2. (학습률, Learning Rate)의 의미

기울기의 크기에 곱해지는 상수 값으로, 매개변수 업데이트 시 이동 거리를 조정하는데 쓰입니다.

 

학습률이 클 경우 큰 폭으로 이동하여 빠르게 수렴하려고 시도합니다.  그러나 과도하게 이동할 경우, 최적점 근처에서 진동하거나 발산할 위험 존재하죠. 반면, 학습률이 작을 경우, 작은 폭으로 이동하여 더 안정적으로 수렴하고, 시간이 오래 걸릴 수 있습니다.

 

3. αJ(θ(t))  의 의미

기울기에 학습률을 곱한 값으로, 매개변수 업데이트에서 이동할 벡터를 의미합니다. 

현재 손실 함수의 기울기 방향으로 α만큼 이동하여 손실 값을 줄이는 역할을 하죠.

 


#3. 학습률(Learning rate) 이란?

 

학습률은 경사하강법에서 매개변수를 업데이트할 때 이동하는 스텝 크기(step size)를 결정하는 중요한 하이퍼파라미터입니다. 이를 적절히 설정하면 효율적이고 안정적인 모델 학습이 가능합니다.

 

1. 학습률의 역할

손실 함수의 기울기(Gradient)에 곱해져, 매개변수를 조정할 때 이동하는 거리를 결정하는 역할을 하는데요.  학습률(α)이 적절하면 빠르고 안정적으로 최적값에 수렴 가능하고  손실 함수의 최소값에 도달할 확률을 높입니다.

 

2. 학습률이 너무 작은 경우

업데이트하는 스텝이 매우 작아, 학습이 느리게 진행됩니다. 왜냐하면 최적값에 도달하기까지 과도한 반복(iteration)이 필요해서 손실 함수 값이 줄어드는 속도가 지연되며, 시간 소모가 증가되는 원리입니다. 

 

3. 학습률이 너무 큰 경우 문제

학습률이 너무 커서 손실 함수가 줄어들지 않고 계속 진동하게 됩니다. 그 결과, 최적값 근처에서 오히려 멀어지거나, 지나친 변동으로 안정적으로 수렴하지 못하게 되죠.

 

또한 손실 함수 값이 무한대로 커지는 발산 현상 발생하게 되니다.  모델 학습이 실패하며 더 이상 유의미한 결과를 얻을 수 없습니다.

 

4. 학습률 조정의 중요성

학습률을 올바르게 설정하는 것은 모델 성능과 학습 효율성에 직접적인 영향을 미칩니다. 일반적으로 다음 전략을 활용을 사용합니다 첫째는  학습률 스케줄링(Learning Rate Scheduling) 입니다. 이것은  학습 초반에는 큰 학습률로 빠르게 탐색하고 학습이 진행됨에 따라 학습률을 점진적으로 줄여 세밀한 조정하는 방법입니다.

 

Adaptive Learning Rate 이라고 해서, Adam, RMSProp 등의 최적화 알고리즘은 학습률을 자동으로 조정하는 기능이 있습니다.

 


 

#4. GD의 단점과  최적화 알고리즘의 발전

딥러닝 모델 개발에서 최적화 함수(optimizer)는 모델 학습 성능을 크게 좌우하는 중요한 요소입니다. 인공지능 모델에서  optimizer = SGD와 같이 모델의 파라미터를 설정하는데요. 이러한 최적화 함수의 발전 과정과 주요 알고리즘들을 차례대로 살펴보겠습니다.

 

아카이브의 연구논문 An overview of gradient descent optimization으로 algorithms∗에 따르면, 최적화 알고리즘으로 경사 하강법, 모멘텀, AdaGrad, RMSProp, Adam 등을 언급합니다. 

 

https://arxiv.org/pdf/1609.04747

 

1. 경사 하강법 (Gradient Descent)

  • 설명 : 경사 하강법은 손실 함수의 기울기(gradient)를 따라 최적의 파라미터를 찾는 가장 기본적인 방법입니다.
  • 수식

θt+1=θtαθJ(θt)

 

  • 장점 : 단순하고 수학적으로 명확하며 작은 데이터셋에서는 효과적입니다.
  • 단점은다음 두가지가 있는데요.
  1. 로컬 미니멈(Local Minimum) : 비선형 함수에서는 글로벌 최저점 대신 로컬 최저점에 갇힐 위험이 있습니다.
  2. 계산량 : 매번 전체 데이터셋에 대해 기울기를 계산하므로 연산이 느리다는 점입니다.

 

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

  • 설명 : SGD는 GD가 전체 데이터셋을 사용하면서 연산 속도가 느려지는 단점을 보완하기 위해, 무작위로 선택된 하나의 "데이터 샘플" 에 대해 기울기를 계산하고 업데이트합니다.
  • 수식

θt+1=θtαθJ(θt;xi,yi)

SGD 알고리즘 시각화 (출처 : https://arxiv.org/pdf/1609.04747)
  • 장점
    1. 빠른 계산 : 전체 데이터셋을 사용하지 않아 연산량이 크게 감소.
    2. 글로벌 최적화 가능성 : 무작위성으로 인해 로컬 미니멈에서 벗어날 가능성이 높아짐.
  • 단점
    1. 진동 문제(Oscillation) : 무작위로 선택된 샘플 때문에 수렴 과정이 불안정함.
    2. 학습 속도 : 진동이 심할 경우 수렴 속도가 느려질 수 있음.

 

3. 모멘텀 (Momentum)

  • 설명 : SGD의 진동 문제를 해결하기 위해, 이전 단계의 기울기 정보를 활용하여 업데이트 속도를 높임.
  • 수식

vt+1=βvtαθJ(θt)

여기서 \( \beta \)는 모멘텀 계수입니다.

  • 장점:
    1. 수렴 속도 향상 : 기울기가 일정한 방향으로 계속 이동할 경우 속도가 빨라짐.
    2. 진동 감소 : 불필요한 진동을 줄이고 더 안정적으로 수렴.
  • 단점 : 적절한 β\betaα\alpha 값을 설정하기 어려움.

 

4. RMSProp (Root Mean Square Propagation)

  • 설명 : 학습률을 각 파라미터의 기울기 크기에 따라 조정하여 진동을 줄이는 방법
  • 수식

E[g2]t=βE[g2]t1+(1β)(θJ(θt))2
θt+1=θtαE[g2]t+ϵθJ(θt)

  • 장점 : 학습률을 자동으로 조정하여 안정적인 학습이 가능.
  • 단점 :
    1. 초매개변수(β\beta) 설정이 까다로움.
    2. 글로벌 최적화에 도달하지 못할 수 있음.

 

5. Adam (Adaptive Moment Estimation)

  • 설명 : RMSProp와 모멘텀을 결합하여 각 파라미터에 대해 적응적으로 학습률을 조정하는 알고리즘

  • 장점
    1. 적응적 학습률 : 학습률이 자동으로 조정되어 안정적이고 빠르게 수렴.
    2. 초기 수렴 속도 : 다른 방법보다 초기 학습이 빠름.
  • 단점
    1. 일부 문제에서 과적합 가능성이 있음.
    2. 수렴 단계에서 정확도가 떨어질 수 있음.

 

 

가장 많이 쓰이는 최적화 알고리즘 Adam과 더불어, 최근 연구에서 다음과 같은 최적화 알고리즘이 활용되고 있습니다.

  • AdamW : Adam의 가중치 감쇠(Weight Decay) 문제를 해결한 알고리즘.
  • Lookahead : 기본 최적화 알고리즘과 결합하여 더 안정적으로 글로벌 최적화에 도달.
  • Lion : 최근 연구된 최적화 알고리즘으로, Adam 대비 더 빠른 수렴 성능을 보이는 경우도 있음.