LoginSignup
56
68

活性化関数のSigmoid、Tangent 、ReLu、Leaky ReLuの違い

Last updated at Posted at 2017-06-28

一般的な活性化関数の違いについてメモ。
結論から言うとReLuを使おう。
それでもDead Neuronsが生まれるならLeaky ReLuなど使おう。

ここにはもっと細かく書かれてる。
https://github.com/EmbraceLife/sigmoid-SEE-vs-relu-softmax-cross-entropy/blob/master/relation-sigmoid-SSE-vs-relu-softmax-cross-entropy.ipynb

#Sigmoid or Logistic

f(x)= 1 / (1 + exp(-x))
  • 勾配爆発問題
  • 第2に、その出力はゼロにセンタリングされません。これは、勾配の更新を異なる方向に行きすぎるようにします。0 <出力<1であり、最適化がより困難になる。
  • シグモイドは飽和してグラデーションを殺します。
  • シグモイドは収束が遅い。

スクリーンショット 2017-06-28 11.31.57.png

#Hyperbolic Tangent

f(x)= (1 - exp(-2x)) / (1 + exp(-2x))

-1から1までの範囲-1すなわち-1 <出力<1であるため、出力はゼロにセンタリングされます。
ですが勾配の問題は存在。

スクリーンショット 2017-06-28 11.34.05.png

#ReLu
これは過去2〜3年で非常に普及しました。最近Tanh関数とのコンバージェンスが 6倍改善されていることが証明されました。
機械学習とコンピュータサイエンスでは、最もシンプルで一貫性のあるテクニックと方法が優先され、最良の方法であることに気付きました。したがって、消失勾配の問題を回避し、修正する。ほとんどすべての深い学習モデルは現在 ReLuを使用しています。
しかし、その限界は、ニューラルネットワークモデルの隠れ層内でのみ使用すべきであるということです。
したがって、出力層では、Classification問題にSoftmax関数を使用してクラスの確率を計算し、回帰問題に対しては単純に線形関数を使用する必要があります。
ReLuのもう1つの問題は、勾配がトレーニング中に壊れやすく、死ぬことがあるということです。それは、いかなるデータポイントでも再び活性化されないようにする、ウエイトの更新を引き起こす可能性があります。ReLuがDead Neuronsをもたらすと言うだけである。
この問題を解決するために、Dead Neuronsの問題を解決するためにLeaky ReLuという別の修正が導入されました。更新を生かし続けるために、小さなスロープが導入されています。

スクリーンショット 2017-06-28 11.36.09.png

#結論
今日ではReLuを使用するべきです.ReLuは隠されたレイヤーにのみ適用する必要があります。我々のモデルが訓練中に死んだニューロンを形成するならば、漏れやすいReLuまたはMaxout関数を使うべきです。
SigmoidとTanhは、神経ネットワークモデルの訓練に多くの問題を引き起こす、勾配が消える問題のため、今日は使用されるべきではないということだけです。

#参考
https://medium.com/towards-data-science/activation-functions-and-its-types-which-is-better-a9a5310cc8f

56
68
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
56
68