달나라 노트

Local Minima는 딥러닝에서 진짜 큰 문제를 일으킬까? (feat. Saddle Point) 본문

AI/Deep Learning

Local Minima는 딥러닝에서 진짜 큰 문제를 일으킬까? (feat. Saddle Point)

CosmosProject 2025. 11. 16. 12:57
728x90
반응형

 

 

 

경사 하강법(Gradient Descent) 얘기를 할 때 Local Minima를 언급했었습니다.

(경사 하강법 글 = https://cosmosproject.tistory.com/916)

 

그래서 Local Minima가 딥러닝에 저해되는 요소라고 언급하였는데 그러면 현실적으로 Local Minima라는 문제가 있음에도 현재 전세계적으로 딥러닝이 잘 되고 있는 이유와, 왜 그런지를 알아봅시다.

 

주제를 정의하면 다음과 같을 겁니다.

"왜 Local Minima 문제에도 불구하고 딥러닝은 잘 작동할까? Local Minima 문제를 어떻게 해결하는 것일까?"

 

(복잡한 수식이나 개념은 최대한 다루지 않고, 매우 간단하게 느낌만 알아갈 정도의 내용이라는 것을 미리 알립니다.)

 

 

 

 

1. 현실적으로 다뤄지는 딥러닝의 손실 함수(에러율 함수)는 매우 고차원 함수이다.

Local Minima Problem

지난 경사 하강법 얘기를 할 때 Local Minima를 언급하며 봤던 손실함수의 그래프입니다.

(위 그래프는 이해를 돕기 위한 많은 것을 생략하고 만든 예시일 뿐입니다. 실제 손실 함수가 저렇게 생기진 않았을거예요.)

 

보면 Global Minimum 지점이 있고, Local Minima 지점이 있죠.

그래서 에러율을 하다보면 A section에서 Local Minima 지점에 빠져 헤어나오지 못한다는 의미의 내용을 언급했습니다.

 

근데 위 손실 함수는 매우매우 단순한 2차원 구조를 가지고 있습니다.

이렇게 간단한 저차원 함수(1~3차원 등)에서는 위처럼 진짜 딥러닝에 문제가 될 수 있는 Local Minima라고 할 수 있는 지점이 비교적 쉽게 보입니다.

그리고 이러한 Local Minima가 딥러닝 모델에 저해될 수도 있구요.

 

그런데 보통 현실에서 딥러닝을 할 때의 손실 함수는 만~백만개 단위의 parameter를 가진 고차원 함수입니다.

 

저차원 손실 함수에서는 빠지면 쉽고 Global Minimum과 비교했을 때 에러율이 상대적으로 큰 Local Minima가 자주 나타날 수 있는 반면

고차원 손실 함수에서는 Local Minima가 있을 수는 있어도 대부분의 Local Minima가 Global Minimum과 압도적인 차이를 가지는 경우가 적어집니다.

 

즉, 어떤 손실 함수에서건 Local Minima는 존재할 수 있지만 고차원 손실 함수에서는 진짜 심각한 문제라고 인식할만한 나쁜 Local Minima point가 거의 사라진다는 것이죠.

따라서 어떤 Local Minima에 빠지더라도 그 학습 결과가(에러율이) 딥러닝 모델을 사용 못할 정도가 아니라는 것입니다.

 

 

 

2. Local Minima보다 더 큰 문제는 Saddle Point(안장점)

실제 딥러닝에서는 Local Minima 문제보다 Saddle Point가 더 큰 문제로 다가옵니다.

 

Saddle point(안장점) 마치 말의 안장같이 생긴 형대를 띄는 그래프를 의미합니다.

잘 상상이 안가실텐데 이 그래프는 2차원 그래프가 아닙니다. 3차원으로 생각해야 해요.

 

Saddle Point

간단하게 Saddle Point를 나타내보자면 위와 같습니다.

진짜 말의 안장같이 생겼죠.

 

Saddle Point

위 이미지를 보면 제가 그래프의 가운데 부분에 빨간색 점으로 A point라고 표시한 부분이 있습니다.

이 부분이 Saddle Point입니다.

Saddle Point는 기울기가 0입니다. 위 안장을 볼 때 곡선이 점점 완만해지며 미분값이 0이 되는 지점인 것 같죠?

 

Saddle Point의 핵심은 여기서 나옵니다.

만약 Path 1의 경로를 통해서 Saddle Point로 간다고 해보죠.

Path 1 경로는 Saddle Point를 향해 점점 올라가고 있습니다.

근데 반대로 Path 2의 경로를 통해서 Saddle Point로 접근한다고 가정하면 Path 2 경로는 Saddle Point를 향해 점점 내려가고 있어요.

 

Saddle Point의 특징은 위처럼

기울기가 0이고,

어떤 방향에서 보면 올라가지만

또 다른 방향에서 보면 내려가는

그런 형태의 지점입니다.

즉, Saddle point는 어떻게 보면 오르막이지만 어떻게 보면 내리막인 지점이죠.

 

 

그러면 왜 Saddle point가 딥러닝 학습에 문제가 될까요?

 

(1) 오르막인지 내리막인지에 대한 구분이 애매해지고 신호가 작아진다.

경사 하강법은 점점 내려가면서 손실 함수의 최저점을 찾는 과정입니다.

 

그런데 위에서 봤듯이 Saddle point에 접근하게 되면 더 내려갈 내리막이 있는데도 현재 기울기가 매우매우 작거나 0이 됩니다.

기울기가 작다는 것은 딥러닝 학습 과정에서 손실 함수의 피드백이 더 약하게 작용하게 된다는 뜻입니다.

 

간단한 예시를 들어볼게요.

 

딥러닝을 진행하는데 학습을 1번 진행했더니 모델이 예상한 값이 1000, 실제 정답은 100이라고 합시다.

이 경우 모델의 예측치와 정답간의 차이를 계산하면 1000 - 100 = 900이라는 차이가 나죠.

이정도면 꽤 큰 차이가 납니다. 현재 딥러닝 모델의 정확도가 매우 떨어진다는 의미죠.

따라서 다음 학습에서는 현재 모델이 가진 여러 값들을 더 큰 폭으로 변화시켜야 좋을 것 같습니다.

현재 모델의 예측값과 정답간의 차이가 매우 크기때문에 한 번의 학습으로 큰 폭의 변화를 일으켜야 빠르게 학습이 되겠죠.

 

반대로 다른 모델은 학습을 1번 진행했더니 모델이 예상한 값이 101, 실제 정답은 100이라고 합시다.

이 경우 모델의 예측치와 정답간의 차이가 1밖에 나지 않습니다.

모델이 정답 근처에 있음을 알 수 있죠.

따라서 이 경우는 모델이 가진 여러 값들을 작은 폭으로 변화시켜야 합니다.

왜냐면 이미 모델이 정답에 근사했는데 여기서 모델에 내장된 여러 상수값들을 큰 폭으로 변화시키면 오히려 모델이 정답에서 멀어지게 될테니까요.

 

매우매우 대략적인 예시를 들었지만 위처럼 딥러닝이 학습할 때 얼마나 많은 변화를 줄지는 현재 에러가 얼마나 큰지에 따라 달려있습니다.

이를 달리말하면 현 시점의 손실 함수의 미분값(기울기)이 클수록 모델에는 더 큰 폭의 변화가 일어나며

손실 함수의 미분값(기울기)가 작을수록 모델에는 적은 변화만 일어나게 됩니다.

 

근데 Saddle Point는 더 나아갈 내리막이 있음에도 불구하고 기울기가 0에 접근하게 됩니다.

 

따라서 Saddle Point에 빠지게 되면 한 번 학습할 때 마다 모델에 가해지는 변화가 적어집니다.

이때문에 Saddle Point는 모델의 학습을 느리게 만들어 학습을 저해합니다.

 

 

(2) 고차원 손실 함수에서는 Local Minima보다 Saddle Point가 훨씬 더 많다.

위에서 현실적인 딥러닝에서는 손실 함수가 매우 고차원이라고 했죠.

이러한 고차원 손실 함수에서는 Local Minima 지점보다 Saddle Point가 훨씬 더 빈번하게 발생하게 됩니다.

따라서 여기저기서 딥러닝 학습이 느려지고, 저해될 수 있다는 의미죠.

 

 

 

 

3. 그러면 Saddle Point는 어떻게 해결하는가?

딥러닝에서 사용하는 여러 방식 중 최신 optimizer들은 Saddle Point에 대한 다양한 해결책을 제공해줍니다.

여기서는 대표적으로 몇가지만 살펴봅니다.

 

(1) Momentum Optimizer

Momentum Optimizer는 관성을 구현한 optimizer입니다.

운동을 할 때 내가 지금 멈추려고 해도 관성에 의해 쉽게 멈추지 못하는 것 처럼

딥러닝 학습 진행 시 Saddle Point에 접근해서 기울기가 0에 근접했다고 해도(= 멈췄다고 해도) 진행 방향으로 좀 더 나아가도록(= 관성에 의해 멈추지 못하는) 유도하는 방식입니다.

 

기울기가 0이 되는 지점에 도달해도 바로 기울기를 0으로 만들어서 모델의 변화 폭을 줄이는게 아니라 이전에 진행해왔던 모멘텀(관성, 기울기)으로 좀 더 진행해보는 것이죠.

 

 

(2) Adam Optimizer

Adam Optimizer는 학습률을 변화시키는 것입니다.

똑같은 지점에 있다고 가정할 때

학습률이 크면 모델이 한번 학습할 때 변화하는 폭이 커지고,

학습률이 작으면 모델이 한번 학습할 때 변화하는 폭이 작아집니다.

Adam Optimizer는 고정된 학습률을 사용하는게 아니라 상황에 따라 학습률을 adaptive하게 변화시키며 학습을 진행하는 것이죠.

 

이렇게 하면 기울기가 0이 되어서 변화량 자체는 작아질지언정 여기에 높은 학습률을 곱하여 변화량을 키우는 방식이라고 할 수 있습니다.

 

 

 

 

 

4. 일반적인 딥러닝은 매우 고차원이어서 좋은 정답(꽤 높은 정확도를 가지는 지점)이 많아진다.

현대의 딥러닝은 parameter도 수만 수백만 단위로 매우 많습니다.

따라서 매우 복잡하고 다양성있는 고차원의 학습이 진행되며, 이러한 경우에서는 우리가 이정도면 괜찮다고 할 만한 좋은 해들이 많아집니다.

중간에 Local Minima 지점에 도달해도 이 지점이 딥러닝의 오류를 엄청나게 높게 유지하고 그런 지점이 아니라는 것이죠.

 

 

 

 

5. 결론

매우 대략적이고 디테일하고 깊은 내용들은 모두 생략한 채로 느낌만 알아보기 위해 위 내용들을 살펴보았습니다.

다시 돌아와서

"왜 Local Minima 문제에도 불구하고 딥러닝은 잘 작동할까? Local Minima 문제를 어떻게 해결하는 것일까?"

위 질문에 대한 답을 정리해보면 다음과 같습니다.

 

(1) 현실적인 딥러닝은 고차원의 손실 함수를 갖게 되어 Local Minima라고 해도 Global Mimina와 큰 차이가 없는 경우가 많다. (Local Minima에 빠지더라도 괜찮은 정확도를 보여준다.)

(2) 고차원 손실 함수에서는 Local Minima보다 Saddle Point가 더 문제인데 Saddle Point 문제를 해결해주는 방법(e.g. Optimizer)이 있어서 Saddle Point도 해결할 수 있다.

 

 

 

 

 

 

 

 

 

 

728x90
반응형
Comments