본문 바로가기
데이터 과학 수학

딥러닝 학습의 복병, 안장점의 위협과 고차원 최적화

by dexien 2026. 4. 4.

경사하강법을 공부하면서 한 가지 당연하게 생각했던 게 있습니다. 기울기가 0이 되면 학습이 완료된 거라고요. 그런데 실제로 AI 모델을 돌려보면 손실이 줄지 않는데 기울기는 0에 가까운 이상한 상황이 생깁니다. 처음엔 학습이 잘 됐다고 생각했는데 성능이 기대에 한참 못 미치는 거죠.

원인이 안장점이었습니다. 기울기가 0이라고 다 최솟값이 아니라는 건 임계점 글에서 다뤘는데, 고차원으로 가면 이 문제가 훨씬 심각해집니다. 오늘은 왜 그런지, 그리고 현대 AI가 이 문제를 어떻게 해결하는지 따라가 보겠습니다.

딥러닝 학습을 방해하는 안장점의 3D 곡면 구조와 고차원 최적화 개념
딥러닝 학습의 복병, 안장점의 위협과 고차원 최적화

안장점이란 무엇인가

안장점(Saddle Point)은 어떤 방향으로 보면 극소이고, 다른 방향으로 보면 극대인 임계점입니다. 말안장처럼 앞뒤로는 오목하고 좌우로는 볼록한 모양입니다. 이 지점에서 기울기는 정확히 0입니다.

f(x, y) = x² - y²이 대표적인 예입니다. (0, 0)에서 x 방향으로 미분하면 2x = 0, y 방향으로 미분하면 -2y = 0. 둘 다 0이니 임계점입니다. 그런데 x 방향으로는 아래로 볼록(극소), y 방향으로는 위로 볼록(극대)입니다. 기울기가 0이지만 최솟값이 아닌 전형적인 안장점입니다.

경사하강법이 이 지점 근처에 오면 기울기가 거의 0이라 이동량이 극도로 줄어듭니다. 학습이 멈춘 것처럼 보이지만 실제로는 안장점 근처에서 맴도는 상황입니다.

f(x,y)=x제곱 빼기 y제곱 함수에서 원점이 안장점인 것을 x방향 극소 y방향 극대로 보여주는 3D 다이어그램
f(x,y)=x²-y²의 원점은 x방향으로는 극소, y방향으로는 극대인 전형적인 안장점이다


고차원에서 안장점이 압도적으로 많은 이유

변수가 2개일 때는 안장점이 큰 문제가 아닐 수 있습니다. 그런데 가중치가 1억 개인 딥러닝 모델에서는 얘기가 달라집니다. 수학적으로 생각해 보면 이유가 바로 나옵니다.

극솟값이 되려면 모든 방향에서 아래로 볼록해야 합니다. 변수가 10,000개라면 10,000개 방향 전부에서 동시에 극소여야 한다는 뜻입니다. 각 방향이 독립적으로 극소일 확률이 50%라고 하면 10,000개 전부가 극소일 확률은 (1/2)의 10,000승입니다. 사실상 0에 가깝습니다.

변수 2개:  극솟값 확률 ≈ 25%  (2방향 모두 극소)
변수 100개:  극솟값 확률 ≈ (0.5)^100 ≈ 0.0000...1%
변수 10,000개:  극솟값 확률 ≈ 사실상 0

→ 고차원에서 만나는 임계점 대부분은 안장점이다

즉 딥러닝 모델이 학습하면서 만나는 임계점 대부분은 로컬 미니멈이 아니라 안장점입니다. 로컬 미니멈을 걱정하는 것보다 안장점을 빠르게 통과하는 게 훨씬 중요한 문제입니다.


평탄한 구간(Plateau) — 학습이 멈춘 것처럼 보이는 구간

안장점 자체보다 더 厄介한 게 그 주변에 형성되는 평탄한 구간(Plateau)입니다. 안장점 근처는 기울기가 거의 0에 가까워서 경사하강법의 이동량이 극도로 작아집니다. 손실 그래프를 보면 어느 순간부터 거의 수평으로 유지되는 구간이 나타납니다.

이걸 보고 학습이 수렴했다고 판단하면 안 됩니다. 실제로는 안장점 근처에서 맴돌다가 결국 탈출하지 못하고 학습이 종료되는 경우입니다. 충분히 학습되지 않은 모델이 나오는 이유 중 하나입니다.

로컬 미니멈과 안장점이 학습에 미치는 영향을 비교하면 이렇습니다.

구분 로컬 미니멈 안장점
수학적 특징 모든 방향에서 위로 휨 방향에 따라 위/아래 공존
고차원 발생 확률 매우 낮음 압도적으로 높음
학습 영향 학습 완전 종료 학습 정체 또는 극도로 느려짐
해결 전략 다양한 초기값 설정 모멘텀, 적응적 학습률

딥러닝 학습 곡선에서 안장점 근처의 평탄한 구간 플래토가 나타나는 손실 함수 그래프
학습 곡선에서 손실이 수평으로 유지되는 구간은 안장점 근처에서 정체되고 있다는 신호다


안장점을 탈출하는 현대 최적화 알고리즘

단순한 경사하강법으로는 안장점을 탈출하기 어렵습니다. 기울기가 거의 0이니 이동량이 너무 작아지거든요. 이 문제를 해결하기 위해 나온 게 모멘텀(Momentum)입니다.

모멘텀은 과거에 이동했던 방향과 속도를 기억해서 관성처럼 활용합니다. 기울기가 0인 지점을 만나도 이전에 달려오던 힘으로 그냥 통과합니다. 공이 언덕을 넘을 때 속도가 있으면 작은 웅덩이를 그냥 지나치는 것과 같은 원리입니다.

기본 경사하강법:  w = w - α × dL/dw

모멘텀 적용:     v = β×v - α × dL/dw
                w = w + v

v: 이전 이동량(속도), β: 모멘텀 계수 (보통 0.9)

Adam은 여기서 한 발 더 나갑니다. 각 가중치마다 학습률을 따로 조절합니다. 기울기가 계속 크게 나오는 방향은 학습률을 줄이고, 기울기가 작게 나오는 방향은 학습률을 키웁니다. 안장점에서 거의 평탄한 방향으로는 더 크게 이동하게 되는 거죠. 현재 대부분의 딥러닝 코드에서 기본 optimizer로 Adam을 쓰는 이유가 여기 있습니다.


헤세 행렬과 고윳값 — 안장점을 수학적으로 판정하는 방법

임계점이 극소인지 극대인지 안장점인지 수학적으로 정확하게 판정하려면 이계 도함수 정보를 모은 헤세 행렬(Hessian Matrix)을 씁니다. 다변수 함수에서 이계 편미분을 모아 행렬로 만든 겁니다.

H = | ∂²f/∂x²    ∂²f/∂x∂y |
    | ∂²f/∂y∂x   ∂²f/∂y² |

고윳값(Eigenvalue) 기준:
모두 양수 → 극소 (Local Minimum)
모두 음수 → 극대 (Local Maximum)
양수와 음수 혼재 → 안장점 (Saddle Point)

고윳값이 양수와 음수가 섞여 있다는 건, 어떤 방향으로는 오목하고 어떤 방향으로는 볼록하다는 뜻입니다. 수학적으로 안장점이 확정됩니다. 다만 실제 딥러닝에서 수억 개 가중치의 헤세 행렬을 직접 계산하는 건 연산량이 너무 많아서 이론적 분석에 주로 쓰이고, 실무에서는 Adam 같은 알고리즘이 이 역할을 간접적으로 대신합니다.

헤세 행렬 고윳값이 모두 양수일 때 극소 모두 음수일 때 극대 혼재할 때 안장점인 것을 비교한 인포그래픽
헤세 행렬의 고윳값 부호 조합으로 임계점이 극소인지 극대인지 안장점인지 판정할 수 있다


실제 학습에서 이 개념이 보이는 순간

PyTorch로 모델을 학습시키다가 손실이 갑자기 수평이 되면 대부분 안장점 근처입니다. 이때 optimizer를 SGD에서 Adam으로 바꾸거나, 학습률을 잠깐 올려주면 탈출하는 경우가 많습니다. 이제 왜 그게 효과가 있는지 이해가 될 겁니다.

학습률 스케줄러(Learning Rate Scheduler)가 존재하는 이유도 같은 맥락입니다. 평탄한 구간에서는 학습률을 높여서 안장점을 빠르게 통과하고, 최솟값 근처에서는 학습률을 줄여서 정밀하게 수렴하게 만드는 겁니다.

안장점을 이해하기 전에는 손실 그래프가 수평이 되면 그냥 학습이 끝난 줄 알았습니다. 이제는 그게 정체인지 수렴인지 구분할 수 있고, 정체라면 어떻게 대응해야 할지도 알게 됐습니다. 수학을 아는 것과 모르는 것의 차이가 여기서 나옵니다.


소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 블로그 이름