2-2. 미분과 경사하강법: 딥러닝 최적화의 핵심

1. 딥러닝 최적화의 서막: 손실 함수와 미분의 필요성

딥러닝 모델은 수많은 가중치(weights)와 편향(biases)이라는 매개변수(parameters)로 구성된 복잡한 함수입니다. 이 매개변수들을 어떻게 설정하느냐에 따라 모델의 성능이 천차만별로 달라집니다. 우리가 원하는 것은 주어진 데이터를 가장 잘 설명하고, 새로운 데이터에 대해서도 정확한 예측을 수행하는 '최적의' 매개변수 조합을 찾는 것입니다. 이 과정을 최적화(Optimization)라고 부릅니다.

최적화의 핵심은 모델의 성능을 정량적으로 평가하는 지표인 손실 함수(Loss Function) 또는 비용 함수(Cost Function)의 값을 최소화하는 것입니다. 손실 함수는 모델의 예측값과 실제 정답값 사이의 오차를 계산하며, 이 오차가 작을수록 모델의 성능이 좋다고 판단합니다. 예를 들어, 회귀 문제에서는 평균 제곱 오차(Mean Squared Error, MSE)가, 분류 문제에서는 교차 엔트로피(Cross Entropy)가 널리 사용됩니다.

손실 함수는 모델의 모든 매개변수에 대한 함수로 표현됩니다. 우리는 이 다변수 함수의 최솟값을 찾아야 하는데, 이때 수학의 핵심 개념인 미분(Differentiation)이 결정적인 역할을 합니다. 미분은 함수의 변화율을 나타내며, 이 변화율 정보를 활용하여 손실 함수가 가장 빠르게 감소하는 방향을 탐색할 수 있습니다.

손실 함수를 상상할 때, 우리는 울퉁불퉁한 산의 지형을 떠올릴 수 있습니다. 산의 높이가 손실 함수의 값이고, 우리가 서 있는 위치가 현재 모델의 매개변수 조합입니다. 우리의 목표는 가장 낮은 지점, 즉 골짜기를 찾아 내려가는 것입니다. 이때, 어느 방향으로 한 발짝 내딛어야 가장 빠르게 아래로 내려갈 수 있을까요? 바로 이 질문에 대한 답을 미분이 제공합니다.

2. 미분: 함수의 변화를 측정하는 도구

미분은 어떤 함수의 한 점에서 함수의 기울기, 즉 순간적인 변화율을 계산하는 수학적 연산입니다. 딥러닝 최적화 과정에서는 이 미분 정보가 가중치를 업데이트하는 방향을 결정하는 데 필수적입니다.

1) 단변수 함수의 미분

가장 기본적인 미분은 하나의 변수에 대한 함수의 변화율을 다룹니다. 함수 $f(x)$가 있을 때, $x$가 미세하게 변할 때 $f(x)$가 얼마나 변하는지를 나타냅니다. 이는 다음과 같이 정의됩니다.

$$ \frac{df}{dx} = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h} $$

이때 $\frac{df}{dx}$는 $x$ 지점에서 함수 $f(x)$의 접선의 기울기를 의미합니다. 기울기가 양수이면 함수는 증가하고, 음수이면 감소하며, 0이면 극점(local extremum)일 가능성이 있습니다.

2) 편미분과 그레디언트 벡터

딥러닝 모델의 손실 함수는 수많은 가중치와 편향이라는 여러 변수를 가집니다. 따라서 하나의 변수에 대한 미분으로는 함수의 전체적인 변화를 파악하기 어렵습니다. 이때 편미분(Partial Differentiation)이 필요합니다.

편미분은 다변수 함수에서 특정 변수 하나를 제외한 나머지 변수들을 상수로 간주하고 해당 변수에 대해서만 미분을 수행하는 연산입니다. 예를 들어, 두 변수 $x, y$를 가지는 함수 $f(x, y)$가 있을 때, $x$에 대한 편미분은 다음과 같습니다.

$$ \frac{\partial f}{\partial x} = \lim_{h \to 0} \frac{f(x+h, y) - f(x, y)}{h} $$

마찬가지로 $y$에 대한 편미분도 계산할 수 있습니다. 각각의 편미분 값들은 해당 변수 방향으로 함수가 얼마나 변하는지를 나타냅니다. 이 모든 편미분들을 모아서 하나의 벡터로 만든 것이 바로 그레디언트(Gradient)입니다. 그레디언트 $\nabla f$는 다변수 함수 $f(x_1, x_2, \dots, x_n)$의 각 변수에 대한 편미분들을 원소로 하는 벡터입니다.

$$ \nabla f(x_1, x_2, \dots, x_n) = \left( \frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, \dots, \frac{\partial f}{\partial x_n} \right) $$

그레디언트 벡터는 매우 중요한 의미를 가집니다. 그레디언트 벡터의 방향은 함수가 현재 지점에서 가장 빠르게 증가하는 방향을 가리키며, 그레디언트 벡터의 크기는 그 증가율의 정도를 나타냅니다.

image

3. 경사하강법: 최적의 매개변수를 찾아가는 여정

그레디언트의 의미를 이해했다면, 이제 손실 함수를 최소화하는 방법을 직관적으로 떠올릴 수 있습니다. 그레디언트가 함수가 가장 빠르게 증가하는 방향을 가리키므로, 우리는 그 반대 방향으로 움직여야 손실 함수 값을 줄일 수 있습니다. 이 아이디어를 기반으로 하는 것이 바로 경사하강법(Gradient Descent)입니다.

경사하강법은 손실 함수의 최솟값을 찾기 위해 반복적으로 매개변수를 업데이트하는 알고리즘입니다. 마치 눈을 가리고 산 정상에서 가장 낮은 골짜기를 찾아 내려가는 것과 같습니다. 우리는 주변 지형(그레디언트)을 더듬어보고 가장 가파른 내리막길 방향으로 한 발짝씩 움직입니다.

1) 경사하강법의 작동 원리

경사하강법의 매개변수 업데이트 규칙은 다음과 같습니다. 현재 매개변수를 $w$라고 하고, 손실 함수를 $J(w)$라고 할 때, 다음 매개변수 $w_{new}$는 현재 매개변수 $w_{old}$에서 손실 함수의 그레디언트 $\nabla J(w_{old})$에 비례하는 값을 빼서 계산합니다.

$$ w_{new} = w_{old} - \eta \nabla J(w_{old}) $$

여기서 $\eta$ (에타)는 학습률(Learning Rate)이라고 불리는 양수 값입니다. 학습률은 우리가 그레디언트 방향으로 얼마나 크게 발걸음을 내딛을지를 결정하는 하이퍼파라미터입니다.

  • $\eta$가 너무 크면, 최솟값을 지나쳐 버리거나 발산하여 제대로 수렴하지 못할 수 있습니다. 마치 너무 큰 보폭으로 계단을 내려가다가 굴러떨어지는 것과 같습니다.
  • $\eta$가 너무 작으면, 최솟값에 도달하는 데 매우 오랜 시간이 걸리거나, 지역 최솟값에 갇혀버릴 수 있습니다. 이는 너무 작은 보폭으로 계단을 내려가다가 지쳐버리는 상황과 유사합니다.

따라서 적절한 학습률 설정은 경사하강법의 성능에 매우 중요합니다.

2) 경사하강법의 종류

딥러닝에서는 데이터셋의 규모가 매우 크기 때문에, 전체 데이터셋에 대한 손실 함수의 그레디언트를 매번 계산하는 것은 비효율적입니다. 따라서 다양한 변형된 경사하강법이 사용됩니다.

  • 배치 경사하강법 (Batch Gradient Descent, BGD): 전체 훈련 데이터셋을 사용하여 그레디언트를 계산하고 매개변수를 업데이트합니다. 가장 안정적으로 수렴하지만, 데이터셋이 클수록 계산 비용이 매우 높습니다.
  • 확률적 경사하강법 (Stochastic Gradient Descent, SGD): 훈련 데이터셋에서 랜덤하게 선택된 하나의 샘플에 대해서만 그레디언트를 계산하고 매개변수를 업데이트합니다. 계산 비용이 낮아 빠르지만, 그레디언트 추정치가 불안정하여 수렴 과정이 춤추듯이 불규칙할 수 있습니다.
  • 미니배치 경사하강법 (Mini-batch Gradient Descent, MBGD): BGD와 SGD의 절충안으로, 랜덤하게 선택된 소수의 샘플(미니배치)을 사용하여 그레디언트를 계산하고 매개변수를 업데이트합니다. 대부분의 딥러닝 모델 학습에 사용되며, 안정적인 수렴과 효율적인 계산을 동시에 제공합니다.

3) 지역 최솟값과 안장점

경사하강법은 기본적으로 현재 지점에서 가장 가파른 내리막길을 찾아 내려갑니다. 하지만 손실 함수는 복잡한 다차원 공간에서 정의되므로, 지역 최솟값(Local Minimum)이나 안장점(Saddle Point)과 같은 문제에 직면할 수 있습니다.

  • 지역 최솟값: 전체 함수에서 가장 낮은 지점인 전역 최솟값(Global Minimum)이 아닌, 특정 지역에서만 가장 낮은 지점입니다. 경사하강법은 일단 지역 최솟값에 도달하면 그레디언트가 0이 되어 더 이상 움직이지 못하고 멈춰버릴 수 있습니다.
  • 안장점: 모든 방향에서 그레디언트가 0인 지점이지만, 특정 방향에서는 증가하고 다른 방향에서는 감소하는 지점입니다. 마치 말의 안장처럼 생겼다고 하여 안장점이라고 불립니다. 안장점에서도 경사하강법은 멈출 수 있습니다.

최근 딥러닝 연구에서는 손실 함수의 고차원 비볼록(non-convex) 특성으로 인해 지역 최솟값보다는 안장점 문제에 더 자주 직면하며, 이를 극복하기 위한 다양한 고급 최적화 알고리즘(옵티마이저)들이 개발되었습니다.

4. 딥러닝 최적화에서의 미분과 경사하강법의 활용

딥러닝 모델의 학습은 결국 경사하강법을 통해 손실 함수를 최소화하는 과정입니다. 이 과정은 크게 순전파(Forward Propagation)와 역전파(Backward Propagation)로 나뉩니다.

  1. 순전파: 입력 데이터가 모델의 여러 층을 통과하며 최종 예측값을 출력합니다. 이 예측값과 실제 정답값의 차이를 손실 함수를 통해 계산합니다.
  2. 역전파: 계산된 손실 함수의 값을 모델의 출력층부터 입력층 방향으로 거슬러 올라가며, 각 가중치와 편향에 대한 손실 함수의 그레디언트를 계산합니다. 이때 연쇄 법칙(Chain Rule)이라는 미분 규칙이 핵심적으로 사용됩니다. 연쇄 법칙 덕분에 복잡한 신경망 구조에서도 각 매개변수에 대한 그레디언트를 효율적으로 계산할 수 있습니다.
  3. 매개변수 업데이트: 역전파를 통해 계산된 그레디언트를 사용하여 경사하강법 규칙에 따라 매개변수들을 업데이트합니다.

이 1-2-3 과정이 수백만 번 또는 수십억 번 반복되면서 모델은 점차 손실 함수 값을 줄여나가고, 궁극적으로는 주어진 태스크를 수행하는 데 최적화된 매개변수 조합을 학습하게 됩니다.

5. 최적화 성능 향상을 위한 고려사항

경사하강법 자체는 강력하지만, 실제 딥러닝 학습 환경에서는 몇 가지 추가적인 고려사항과 고급 기법들이 동반됩니다.

  • 학습률 스케줄링: 학습이 진행됨에 따라 학습률을 점진적으로 줄여나가 최솟값에 더 안정적으로 수렴하도록 돕습니다. 초기에는 빠르게 탐색하고, 후반에는 세밀하게 조정하는 전략입니다.
  • 모멘텀 (Momentum): 이전 스텝에서 이동했던 방향을 기억하여 현재 그레디언트 방향과 합치는 기법입니다. 이를 통해 지역 최솟값이나 안장점을 더 쉽게 탈출하고, 가파른 경사면에서 불필요한 진동을 줄여 학습 속도를 높입니다.
  • 적응적 학습률 옵티마이저 (Adaptive Learning Rate Optimizers): Adam, RMSprop, Adagrad 등과 같은 옵티마이저들은 각 매개변수마다 고유한 학습률을 동적으로 조정합니다. 이들은 경사가 완만한 차원에서는 학습률을 높이고, 경사가 가파른 차원에서는 학습률을 낮춤으로써 효율적인 학습을 가능하게 합니다. 대부분의 최신 딥러닝 모델 학습에 활용됩니다.
  • 데이터 정규화/표준화: 입력 데이터의 스케일이 너무 크거나, 변수별로 범위가 다르면 손실 함수의 표면이 비대칭적이 되어 최적화 과정에서 비효율을 초래할 수 있습니다. 데이터 정규화(Normalization)나 표준화(Standardization)를 통해 이를 완화하여 더 부드러운 손실 함수 표면을 만들고 학습 효율을 높입니다.

이처럼 미분과 경사하강법은 딥러닝 최적화의 근간을 이루는 핵심 수학적, 알고리즘적 요소입니다. 이 원리들을 깊이 이해하는 것은 딥러닝 모델의 동작 방식을 파악하고, 발생하는 문제들을 진단하며, 나아가 새로운 모델을 설계하는 데 필수적인 역량입니다. 딥러닝 여정에서 이 두 가지 개념은 가장 기본적인 도구이자 끊임없이 참고해야 할 나침반과 같습니다.

비슷한 글 추천

Comments (0)

No comments yet. Be the first to comment!