Stats & AI tech blog - '일단 시도함'
[ML/DL] DNN, Deep Neural Network (심층신경망) (1) - 기울기 소실 (Vanishing gradient) 본문
[ML/DL] DNN, Deep Neural Network (심층신경망) (1) - 기울기 소실 (Vanishing gradient)
justdoit ok? 2024. 4. 2. 14:002024.04.01 - [Deep Learning] - [DL] MLP, Multi-Layer Perceptron (다층 퍼셉트론)
이전 포스팅에서 다층 퍼셉트론(MLP) 구조에 대해 알아보았다.
이번 포스팅에서는 심층신경망(DNN)에 대한 개념과 DNN의 문제점 중 하나인 기울기 소실(Vanishing gradient) 문제와 해결방법에 대해 알아보도록 하겠다.
1. DNN
다층 퍼셉트론 (MLP) 구조는 크게 입력층(input layer), 은닉층(hidden layer), 출력층(output layer)으로 나누어 지는데,
여기서 은닉층 (hidden layer)의 개수가 여러 개로 구성된 신경망을 심층신경망(DNN)이라고 정의한다.
그리고 심층신경망(DNN)을 학습하는 과정을 딥러닝(Deep Learning)이라고 부른다.
현재는 학습 능력이 뛰어난 DNN을 활용해서 많은 인공신경망 연구가 진행되고 있지만, DNN이 등장 초기에는 많은 문제점들이 제기되었다. 이번 포스팅부터 세 차례에 걸쳐 DNN의 초기 문제점인 기울기 소실 / 차원의 저주 / 과적합에 대해 알아보도록 하겠다.
2. 기울기 소실 (Vanishing gradient)
인공신경망은 역전파 과정을 통해 최적 파라미터를 위한 학습을 진행한다.
역전파 과정에서는 손실 함수(Loss function)를 최소화 하기 위해 경사하강법(Gradient Descent) 등의 옵티마이저를 사용한다.
경사하강법에서는 경사(Gradient)에 학습률(Learning rate)을 곱한만큼 가중치(weight)를 조정하는데, Layer가 깊어지게 될 수록 상위 Layer로 전달되는 경사가 0이 되거나 0에 가깝게 되는 기울기 소실(Vanishing gradient) 문제가 발생하게 된다.
기울기 소실이 발생하는 원인은 활성화 함수(Activation function)를 보면 쉽게 이해할 수 있다.
먼저, 활성화 함수가 Sigmoid 함수라고 가정하고 문제를 확인해 보겠다.
- Sigmoid function
오른쪽 도함수 그래프를 보면 Sigmoid함수의 가장 큰 gradient는 0.25인 것을 확인할 수 있다.
만약, 여러 Layer를 거치면서 함수가 거듭 곱해진다면 gradient는 0에 가까워지게 되고, 기울기가 없어지면서 가중치 조정이 어려워지게 된다. 이러한 문제를 기울기 소실 (Vanishing gradient)라고 한다.
이후, 기울기 소실 문제를 해결하기 위해 새로운 활성화 함수들이 제시되었다.
첫 번째는 하이퍼볼릭 탄젠트 함수이다.
- Hyperbolic tangent function
이번에도 오른쪽 도함수 그래프를 보면 sigmoid함수와 비슷하지만 gradient의 최대값이 1이 되면서 vanishing gradient 문제를 완화할 수 있다는 걸 확인할 수 있다. 하지만 하이퍼볼릭 탄젠트 함수 역시 여전히 학습이 느리고, 층이 많아질수록 gradient는 줄어든다는 단점이 존재한다.
- ReLU (Rectified Linear Unit)
렐루(ReLU) 도함수 그래프를 보면 0보다 클 때 항상 gradient가 1인 것을 확인할 수 있다.
이런 경우는 Layer가 추가되면서 함수가 거듭 곱해져도 gradient가 발산하거나 소실되지 않는다. ReLU는 기울기 소실 문제를 해결하고 연산 속도 또한 빠르다는 장점이 있지만, 0보다 작을 때는 미분값이 0이기 때문에 입력값이 음수인 정보를 죽인다는 단점 또한 존재한다.
이 단점을 개선하기 위해 ReLU를 조금 변형한 leaky ReLU 함수도 제시되었다. 음수일 경우 0이 아닌 0.001과 같은 아주 작은 값을 출력하도록 설정하면서 음수 정보의 완전한 죽임을 방지하는 함수이다.
지금까지 DNN구조의 첫번째 문제점인 기울기 소실(Vanishing gradient)와 이를 해결하기 위한 몇 가지 활성화 함수들을 알아보았다. 다음 포스팅에서는 두번째 문제점인 차원의 저주(Curse of dimensionality)에 대해 알아보도록 하겠다.
'Statistics & AI > Deep Learning' 카테고리의 다른 글
[ML/DL] 딥러닝 최신 연구 동향 및 모델 참고 사이트 (0) | 2024.04.15 |
---|---|
[ML/DL] CNN, Convolutional Neural Network (컨볼루션 신경망) (0) | 2024.04.05 |
[ML/DL] DNN, Deep Neural Network (심층신경망) (3) - 과적합 (overfitting) (0) | 2024.04.03 |
[ML/DL] DNN, Deep Neural Network (심층신경망) (2) - 차원의 저주 (Curse of dimensionality) (0) | 2024.04.02 |
[ML/DL] MLP, Multi-Layer Perceptron (다층 퍼셉트론) (0) | 2024.04.01 |