目次
1 活性化関数とは
2. 活性化関数のまとめ
– ReLu関数
– Leaky ReLU関数
– PReLU関数
– ELU関数
– sigmoid関数
– TanH関数
– softmax 関数
-その他まとめ
1 活性化関数とは
活性化関数は、(英: Activation functions)ニューラルネットワークの出力を決定する数式です。この関数はネットワーク内の各ニューロンに関連付けられており、各ニューロンの入力がアクティブ化(「起動」)するかどうかを決定します。各ニューロンの出力を1〜0または-1〜1の範囲に正規化するのにも役立ちます。
2. 活性化関数のまとめ
ReLu関数
ReLu関数(「ランプ」と読む)はRectified Linear Unitの略称で、ランプ関数もと呼ばれています。関数への入力値が0以下の場合には出力値が常に0、入力値が0より上の場合には出力値が入力値と同じ値となる関数です。
ReLUのメリット
・非常に迅速に収束するネットワークなので、処理が速いです。
・勾配消失問題に強いです。勾配消失問題は層が深くなるにつれ勾配が消えてしまう。
・linear関数のように見えますが、ReLUには微分関数があり、バックプロパゲーションが可能です。
ReLUのデメリット
・入力がゼロに近づくか、負の場合、関数の勾配はゼロになり、ネットワークはバックプロパゲーションを実行できず、学習できません。
ライブラリ:
Tensorflow/Keras
https://www.tensorflow.org/api_docs/python/tf/keras/activations/relu
PyTorch
https://pytorch.org/docs/stable/generated/torch.nn.ReLU.html
Leaky ReLU関数
Leaky ReLU関数はLeaky Rectified Linear Unitの略称で、ReLUの拡張版です。関数への入力値が0より下の場合には出力値が入力値をα倍した値(※αの値は基本的に0.01)、入力値が0以上の場合には出力値が入力値と同じ値となる関数です。
Leaky ReLUのメリット
– Dying ReLUの問題が発生するのを防ぎます。ReLUのバリエーションは、負の領域に小さな正の傾きがあるため、負の入力値の場合でも逆伝播が可能になります。
・処理が速いです。
・勾配消失問題の解消します。
Leaky ReLUのデメリット
・結果に一貫性がない
ライブラリ:
Tensorflow/Keras
https://www.tensorflow.org/api_docs/python/tf/nn/leaky_relu
PyTorch
https://pytorch.org/docs/stable/generated/torch.nn.LeakyReLU.html
論文
https://arxiv.org/pdf/1505.00853.pdf
PReLU関数
PReLU関数はParametric Rectified Linear Unitの略称で、Leaky ReLUの拡張版です。関数への入力値が0より下の場合には出力値が入力値をα倍した値(※αはパラメーターであり学習によって決まる)、入力値が0以上の場合には出力値が入力値と同じ値となる関数です。
Parametric ReLUでは「Parametric(パラメーターの)」という言葉の通り、学習によって動的に決まるパラメーター値である点が異なります。
PReLUのメリット
・負の勾配を学習できます。リークのあるReLUとは異なり、この関数は関数の負の部分の勾配を引数として提供します。 したがって、バックプロパゲーションを実行して、αの最も適切な値を学習することが可能です。
PReLUのデメリット
・問題ごとにパフォーマンスが異なる場合があります。
ライブラリ:
Tensorflow/Keras
https://www.tensorflow.org/api_docs/python/tf/keras/layers/PReLU
PyTorch
https://pytorch.org/docs/stable/generated/torch.nn.PReLU.html
論文
https://arxiv.org/abs/1502.01852
過去記事
elu関数
elu関数はExponential Linear Unitの略称でReLUの拡張版です。関数への入力値が0以下の場合には出力値が「0.0」~「-α」(※αの値は基本的に1.0、つまり「-1.0」)の間の値になり、入力値が0より上の場合には出力値が入力値と同じ値となる関数である。
eluのメリット
・Dying ReLUの問題はありません。
・この関数は、損失関数がより速くゼロに収束する傾向がある
・ReLUとLeakyReLUの優れた機能の統合の特徴
eluのデメリット
・大きな負の値ではサチュレイトゥになります。
ライブラリ:
Tensorflow/Keras
https://www.tensorflow.org/api_docs/python/tf/keras/activations/elu
PyTorch
https://pytorch.org/docs/stable/generated/torch.nn.ELU.html
論文
https://arxiv.org/pdf/1511.07289.pdf
sigmoid関数
sigmoid関数(シグモイド)はStandard sigmoid functionの略称です。グラデーションで、0から1までの値を出力します。S(シグマ)字型曲線のグラフになるため、「シグモイド関数」と呼ばれます。
sigmoidのメリット
・滑らかなグラデーションで出力値の結論に飛び付くことを防ぎます。
・出力値は0と1の間にあり、各ニューロンの出力を正規化します。
・明確な予測-2より上または-2より下のXの場合、Y値(予測)が1または0に非常に近い曲線の端に来る傾向があります。これにより、明確な予測が可能になります。
sigmoidのデメリット
・Xの値が非常に高いか非常に低い場合、予測にほとんど変化がなく、勾配消失問題が発生します。 これにより、ネットワークがそれ以上の学習を拒否したり、速度が遅すぎて正確な予測に到達できなくなったりする可能性があります。
・ゼロ中心ではない出力
・大変な計算
ライブラリ:
Tensorflow/Keras
https://www.tensorflow.org/api_docs/python/tf/keras/activations/sigmoid
PyTorch
https://pytorch.org/docs/stable/generated/torch.nn.Softmax.html
TanH関数
tanh関数(タンエイチ」はHyperbolic tangent functionの略称で、双曲線正接関数、「ハイパボリックタンジェント」です。あらゆる入力値を-1.0~1.0の範囲の数値に変換して出力する関数です。tanh関数は、シグモイド関数の拡張バージョンともいえる活性化関数である。
TanHのメリット
・ゼロ中心—強い負、中立、および強い正の値を持つ入力のモデル化が容易になります。
・滑らかなグラデーションで出力値の結論に飛び付くことを防ぎます。
・出力値は-1と1の間にあり、各ニューロンの出力を正規化します。
TanHのデメリット
・勾配消失問題の影響が強いです。
・大変な計算
ライブラリ:
Tensorflow/Keras
https://www.tensorflow.org/api_docs/python/tf/keras/activations/tanh
PyTorch
https://pytorch.org/docs/stable/generated/torch.tanh.html
softmax 関数
sigmoid関数(ソフトマックス)はsigmoid関数の拡張版の関数となっています。出力ニューロンに使用される特別な活性化関数。 各クラスの出力を0から1の間で正規化し、入力が特定のクラスに属する確率を返します。各出力値の範囲は0.0~1.0となります。滑らかな(=ソフトな)曲線となり、1つの出力値が最大となるため、「ソフトマックス関数」と呼ばれます。
softmaxのメリット
・他の活性化関数では1つのクラスのみで複数のクラスを処理できます。各クラスの出力を0から1の間で正規化し、それらの合計で除算して、入力値が特定のクラスにある確率を示します。
・出力ニューロンに役立ちます。通常、Softmaxは、入力を複数のカテゴリに分類する必要があるニューラルネットワークの出力層にのみ使用されます。
softmaxのデメリット
・Softmaxは、クラス内のコンパクトなクラス間分離を必要としないため、大規模なマルチカテゴリタスクには適していません。
ライブラリ:
Tensorflow/Keras
https://www.tensorflow.org/api_docs/python/tf/keras/activations/softmax
PyTorch
https://pytorch.org/docs/stable/generated/torch.nn.Softmax.html
以上は代表的な活性化関数ですが、他にも以下があります。
- FRelu関数
https://arxiv.org/abs/1706.08098
過去記事
KerasでのFReLU活性化関数
- Gelu関数
https://arxiv.org/pdf/1606.08415
- Selu関数
https://arxiv.org/abs/1706.02515v5
- Relu6関数
https://arxiv.org/abs/1704.04861v1
- Softsign関数
https://arxiv.org/pdf/1710.07654v3
- Sifted Softsign関数
https://arxiv.org/pdf/1706.08566v5
- KAF関数
https://arxiv.org/pdf/1707.04236v1
- Tanexp関数
https://arxiv.org/pdf/2003.09855v2
- ARiA関数
https://arxiv.org/abs/1805.08878v1
- m-arcsinh関数
https://arxiv.org/pdf/2009.07530v1
- Hermite 関数
https://arxiv.org/pdf/1909.05479v2
- ELiSH関数
https://arxiv.org/pdf/1808.00783v1
- Swish関数
https://arxiv.org/pdf/1710.05941
- Mish関数
https://arxiv.org/abs/1908.08681
- kWTA関数
https://arxiv.org/abs/1905.10510
- HardTanh関数
https://nn.readthedocs.io/en/rtd/transfer/index.html#hardtanh
- hardShrink関数
https://nn.readthedocs.io/en/rtd/transfer/index.html#hardshrink
- softShrink関数
https://nn.readthedocs.io/en/rtd/transfer/index.html#softshrink
- Noisy関数
https://arxiv.org/pdf/1603.00391.pdf
- SoftMin関数
https://nn.readthedocs.io/en/rtd/transfer/index.html#softmin
- SoftPlus関数
https://nn.readthedocs.io/en/rtd/transfer/index.html
- LogSigmoid関数
https://nn.readthedocs.io/en/rtd/transfer/index.html#logsigmoid
- LogSoftMax関数
https://nn.readthedocs.io/en/rtd/transfer/index.html#logsoftmax
https://pytorch.org/docs/stable/generated/torch.nn.LogSoftmax.html#torch.nn.LogSoftmax
- CELU関数
https://pytorch.org/docs/stable/generated/torch.nn.CELU.html#torch.nn.CELU
- SiLU関数
https://pytorch.org/docs/stable/generated/torch.nn.SiLU.html#torch.nn.SiLU
- Threshold関数
https://pytorch.org/docs/stable/generated/torch.nn.Threshold.html#torch.nn.Threshold
- Softmax2d関数
https://pytorch.org/docs/stable/generated/torch.nn.Softmax2d.html#torch.nn.Softmax2d
- Softmax2d関数
https://pytorch.org/docs/stable/generated/torch.nn.Softmax2d.html#torch.nn.Softmax2d
- AdaptiveLogSoftmaxWithLoss関数
- Identity関数
https://pytorch.org/docs/stable/generated/torch.nn.Identity.html#torch.nn.Identity
関連記事
担当者:KW
バンコクのタイ出身 データサイエンティスト
製造、マーケティング、財務、AI研究などの様々な業界にPSI生産管理、在庫予測・最適化分析、顧客ロイヤルティ分析、センチメント分析、SaaS、PaaS、IaaS、AI at the Edge の環境構築などのスペシャリスト