Mishの利点
・少しマイナスの情報を保持することでDyingReLU減少が改善された。 ・Mishは飽和を避けてくれる。一般的にgradientが0に近いとtrainingのスピードが急激に遅くなる ・マイナスに行く事は強い正規化の効果もある ・ReLUのように特異点がない(連続である)Swish Familyを比べてみた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482094/1cb2e3df-11e0-4751-5f39-bb68025f269b.png) Swishに似た活性化関数(Swish Family)を比較してみた。 右図から分かるようにMishとxlog(1+tanh(e^x))がSwishよりやや精度が高い事が分かる。しかし、xlog(1+tanh(e^x))はoverfittingしやすく学習が不安定であった。 よってMishが優秀な事が分かる。Mishな一次微分を変形してみると(2)のようになる。
∆(x) parameterは前処理のような振る舞いをする。それによって、正規化と勾配をsmoothにしてくれる。Swishに前処理を行うという事はSwishより精度が高くなる可能性があるらしい
Smoothだと何が良いの?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482094/def76c8b-675b-bd09-16e0-927f8d44ed7c.png)5層のNetworkをランダムにinitializationしReLUとMishを比べてみた。
Mishの方がReLUよりSmoothなのが分かる
図から分かるようにMishの最小値の範囲が一番広い。最小値の範囲が広いとgeneralizationに役立つ。
SwishやReLUは複数の最小値がある=>overfittingしやすい?!
実行速度
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482094/396cbfd0-2fa5-7cb2-0446-c0e63edc6e97.png) MishはReLUに比べて約3倍遅い。CUDA-baseのimplementationしたMish-CUDAはReLUとほぼ同じ速度になっている。結論
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482094/4e1e592d-c21e-91c4-5bf8-749f8da33db5.png)論文が主張している通りであれば、理論も結果もReLUやSwishより良さそう。
今後色々な研究で使われるか見ていきたい。