[Deep Learning] Activation Function : Swish vs Mish
활성화 함수(Activation Function)는 입력을 받아 활성, 비활성을 결정하는데 사용되는 함수이다. 어떤 활성화 함수를 사용하느냐에 따라 그 출력 값이 달라지기 때문에 적절한 활성화 함수를 사용하는 것이 매우 중요하다. 보통 어떠한 임계 값을 기준으로 활성화 되거나 혹은 비활성화 되는 형태를 가진다.
기존 활성화 함수들
Swish
Swish 는 매우 깊은 신경망에서 ReLU 보다 높은 정확도를 달성한다고 한다. 또한 모든 배치 크기에 대해 Swish 는 ReLU 를 능가하며, 모든 x < 0 에 대해 함수를 감소시키거나 증가시키지 않는다고 한다. Mish 와 마찬가지로 bounded below, unbounded above 특징을 가진다.
Mish
Mish 는 그래프가 무한대로 뻗어나가기 때문(unbounded above)에 캡핑으로 인한 포화를 피할 수 있으며 bounded below 이기 때문에 strong regularation 이 나타날 수 있고 overfitting 을 감소 시킬 수 있다. 또한 약간의 음수를 허용하기 때문에 Relu Zero Bound 보다는 그라디언트를 더 잘 흐르게 한다는 특징이 있다. 범위는 [-0.31, ∞) 이다.
Mish 활성화 함수는 가시화 해보면 마이너스측에서 선형에 가깝고, small decay 를 갖는 Swish 의 함수와 비슷하다. 이는 Non-monotonic 함수이고, 아래에 나타낸 그래프와 같이 Non-monotonic 1차 미분 및 2차 미분을 갖는다.
Mish는 Swish 와 비슷하게 sharp global minima 를 가지고 있으며, 이는 the region of sharp decay 에 갇힌 모델의 그라디언트 업데이트로 인해 ReLU에 비해 성능이 떨어질 수도 있다. 수학적으로 무거운 모델인 Mish 는 Swish 활성화 함수의 시간 복잡성에 비해 계산 비용이 많이 든다는 단점이 있다.
무작위로 초기화 된 5개의 신경망의 출력 환경을 ReLU, Swish 및 Mish 와 비교하였다. 이는 Swish 와 Mish 에 비해 ReLU의 좌표의 스칼라 크기 사이의 sharp transition 을 보여준다. Smoother transition 은 보다 부드러운 최적화 기능을 제공하여 손실을 줄이면서 신경망을 일반화 한다.
Relu implemenataion
def relu(x):
return max(0, x)
tensorflow implementation
def swish(x):
return x * tf.nn.sigmoid(x)
def mish(x):
return x * tf.nn.tanh(tf.nn.softplus(x))
pytorch implementation
def swish(x):
return x * torch.sigmoid(x)
def mish(x):
return x * torch.tanh(F.softplus(x))
참고자료 1 :
참고자료 2 : https://arxiv.org/ftp/arxiv/papers/1908/1908.08681.pdf
참고자료 3 : https://arxiv.org/pdf/1710.05941.pdf
참고자료 4 : https://data-newbie.tistory.com/297
참고자료 5 : https://krutikabapat.github.io/Swish-Vs-Mish-Latest-Activation-Functions/
'AI Research Topic > Deep Learning' 카테고리의 다른 글
[Deep Learning] 딥러닝에서 학습 시 학습률과 배치 크기 문제 (3) | 2020.06.22 |
---|---|
[Paper Review] CBAM : Convolutional Block Attention Module (0) | 2020.06.07 |
[Deep Learning] MediaPipe (0) | 2020.06.03 |
[Deep Learning] 딥러닝에서 사용되는 다양한 Convolution 기법들 (4) | 2020.05.18 |
[Deep Learning] Batch Normalization (배치 정규화) (10) | 2020.05.16 |