【활성화 함수】Mish는 Swish보다 정밀도 좋은가?

Mish의 장점



· 조금 마이너스 정보를 유지함으로써 DyingReLU 감소가 개선되었다.
・Mish는 포화를 피해 준다. 일반적으로 gradient가 0에 가까워지면 training의 속도가 급격히 느려집니다.
・마이너스에 가는 것은 강한 정규화의 효과도 있다
・ReLU와 같이 특이점이 없다(연속이다)

Swish Family를 비교해 보았다




Swish와 유사한 활성화 함수(Swish Family)를 비교해 보았다.
오른쪽 그림에서 알 수 있듯이 Mish와 xlog(1+tanh(e^x))가 Swish보다 약간 정밀도가 높은 것을 알 수 있다. 그러나 xlog(1+tanh(e^x))는 overfitting하기 쉽고 학습이 불안정했다.
따라서 Mish가 우수한 것을 알 수 있다.



Mish인 1차 미분을 변형해 보면 (2)와 같다.
∆(x) parameter는 전처리와 같은 행동을 한다. 이에 따라 정규화와 그라디언트를 smooth로 해준다. Swish에 전처리를 한다는 것은 Swish보다 정밀도가 높아질 가능성이 있는 것 같다

Smooth는 무엇이 좋은가?





5층의 Network를 랜덤하게 initialization해 ReLU와 Mish를 비교해 보았다.
Mish 쪽이 ReLU보다 Smooth인 것을 알 수 있다



그림에서 알 수 있듯이 Mish의 최소값 범위가 가장 넓습니다. 최소값의 범위가 넓으면 generalization에 도움이 된다.
Swish나 ReLU는 복수의 최소치가 있다=>overfitting하기 쉽다?!

실행 속도




Mish는 ReLU에 비해 ​​약 3배 느리다. CUDA-base의 implementation한 Mish-CUDA는 ReLU와 거의 같은 속도로 되어 있다.

결론





논문이 주장하고 있는 대로라면, 이론도 결과도 ReLU나 Swish보다 좋을 것 같다.
앞으로 다양한 연구에서 사용되는지 보고 싶다.

참고문헌



Mish: A Self Regularized Non-Monotonic Activation Function
htps : // 아 rぃ v. rg / pdf / 1908. 08681v3. pdf

좋은 웹페이지 즐겨찾기