related post : [DL] Deep Learning overview
최적의 가중치는 비용함수(loss function)을 최소화함으로써 찾을 수 있는데, 그 방법으로 크게 3가지가 있다.
1) normal equation
2) 뉴턴-랩슨법
3) 경사 하강법 (Gradient Descent)
딥러닝에서 많이 사용되는 방법은 경사 하강법이다. (related post on 경사 하강법 : [ML] Linear Regression)
경사하강법에서 발생할 수 있는 문제 및 제한점들
1. 경사 소실 문제 (Vanishing gradient problem)
경사 소실 문제는 가중치를 업데이트할 때 (학습률, learning rate) X 비용함수를 가중치로 미분한 값) 부분이 0에 가까워져 업데이트가 거의 되지 않는 것을 뜻한다.
경사 소실 문제 활성화 함수 형태 때문에 발생할 수도 있고 비용 함수의 형태 때문에 발생할 수도 있는데 주로 활성화 함수 형태 때문에 발생한다.
활성화 함수의 형태 때문에 경사 소실 문제가 발생한다는 것은 무슨 뜻일까?
결과적으로 말하자면,
시그모이드 함수와 하이퍼볼릭 탄젠트 함수를 사용하면 경사 소실 현상이 발생하기 쉽다.
시그모이드(Sigmoid) 함수 형태는 위와 같은데, x의 절대값이 클 때 기울기가 0에 가까워져 경사 소실이 발생하는 것이다.
시그모이드와 유사하게 생긴 하이퍼볼릭 탄젠트(tanh) 함수도 마찬가지 이유로 경사 소실이 발생하기 쉽다.
이런 이유로 시그모이드 함수나 하이퍼볼릭 탄젠트 함수는 최근 별로 사용하지 않는 추세다. 그대신 ReLu나 Leaky relu 함수를 많이 사용한다.
2. 모든 가중치에 동일하게 고정된 학습률이 적용되는 제한점
기본적인 경사 하강법은 가중치 업데이트 횟수와 상관없이 학습률(learning rate)가 고정돼 있다. (학습률 : 한 번에 업데이트를 얼만큼 시킬 지 결정하는 하이퍼 파라미터)
이렇게 학습률이 고정돼 있으면 (1) 비용함수가 안장점(saddle point)를 잘 벗어나지 못하고 (2) 속도가 느리다는 문제가 발생한다.
3. Optimizers
이같은 문제는 다양한 optimizer를 사용해 보완할 수 있다.
optimizer : 경사하강법을 이용해 비용함수 값을 최소화하는 가중치 값을 찾는 역할을 한다.
꼭 읽어볼 블로그 글 : An overview of gradient descent optimization algorithms
대표적인 Optimizers
- Momentum
- Adagrad (Adaptive Gradient)
- RMSprop (Root Mean Square Propagation)
- Adadelta
- Adam
하이라이트 된 두 개가 많이 사용된다.
위 optimizer들 중 Momentum을 제외한 optimizers들은 고정돼 있는 학습률을 바꿔서 보완한다.
각 optimizer들이 어떻게 안장점을 빠져나가는지 보자.
아래 이미지는 Sabastian Ruder님의 글에서 가져온 것이다. 출처 링크를 타고 가서 꼭 원글을 읽어보자.
출처 : Sabastian Ruder님의 글
그림을 통해 직관적으로 알 수 있듯 Dadelta optimizer가 가장 빠르게 안장점을 빠져나온다.
0 Comments
Post a Comment