인공지능/딥러닝

[딥러닝] 이론 - 기울기 소멸 (활성화 함수)

노트북 산 김에 공부 2024. 2. 3. 14:51

기울기 소멸 문제 (vanishing gradient problem)

기울기 소멸은 은닉층이 많은 신경망에서 주로 발생하는데, 출력층에서 은닉층로 전달되는 오차가 크게 줄어들어 학습이 되지 않는 현상입니다.
즉, 기울기가 소멸되기 때문에 학습되는 양이 '0'에 가까워져 학습이 더디게 진행되다 오차를 더 줄이지 못하고 그 상태로 수렴하는 현상입니다.
 
위 상황에 적합한 상황이 활성화 함수로 시그모이드, 또는 하이퍼볼릭 탄젠트를 사용하는 경우입니다.
 

시그모이드와 하이퍼볼릭 탄젠트 모두, 전달 함수 값이 매우 크거나 매우 작아질 때 도함수 값이 0에 수렴합니다. 

[딥러닝] 이론(1) 참고 - 갑자기 활성화 함수가 왜 튀어나오냐 하실 수 있지만, 활성화 함수는 순전파에도 쓰이지만 역전파 과정에서 각 활성화 함수에 대한 도함수 값이 쓰이기 때문에, 이는 가중치 조정에 직접적인 영향을 끼칩니다.

 
즉, 신경망의 깊이가 깊어질 수록, 점점 곱해지는 값(오차)이 작아지기 때문에 입력층에 갈수록 학습 효율이 떨어집니다.
 


렐루 (ReLU)

이러한 기울기 소멸 문제를 방지하려면 가장 대표적인 방법으로
활성화 함수로 렐루(ReLU)를 사용하는 것 입니다.
 

렐루 함수는 입력(x)이 음수일 때는 0을 출력하고, 양수일 때는 x그 자체를 출력하기 때문에
도함수 값이 0또는 1이 됩니다. 이는 경사 하강법에 영향을 주지 않아 지속적인 가중치 조정을 가능케 합니다.
 
그러나 렐루는 입력값이 음수일 경우 0을 반환하기 때문에 자칫하면 기울기가 0이 버려 가중치 조정이 안돼버리는 현상이 발생할 수 있습니다.

리키 렐루 (Leaky ReLU)

리키 렐루는 기울기 소멸 문제를 방지하는 또다른 방법으로
활성화 함수로 리키 렐루 (Leaky ReLU)를 사용할 수 있습니다.
 

리키 렐루는 렐루와 비슷하게 음수가 들어오면 매우 작은 값을 반환하고 양수가 들어오면 양수 그대로를 반환시킵니다.
그러나 일반 렐루와 다르게 음수가 들어오면 0이 아닌 0.0001 처럼 매우 작은 수를 반환시킵니다.
따라서 도함수 값도 0이 아닌 0과 1사이의 매우 작은 수가 됩니다 (음수일 경우)
 
즉, 도함수 값이 0이 반환될 경우 가중치 조정이 안되는 렐루 함수의 한계를 극복한 활성화 함수인 셈입니다.
(0이 아니기 때문에 중첩으로 곱해도 0이 되지 않음)
 
이 외에도 잔차학습을 통해 기울기 소멸을 해결할 수 있습니다.