活性化関数のまとめ

目次

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

過去記事

https://data-analysis-stats.jp/python/%e9%ab%98%e5%ba%a6%e3%81%aa%e6%b4%bb%e6%80%a7%e5%8c%96%e9%96%a2%e6%95%b0relu/

 

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

 

以上は代表的な活性化関数ですが、他にも以下があります。

  1. FRelu関数

https://arxiv.org/abs/1706.08098

過去記事

KerasでのFReLU活性化関数

https://data-analysis-stats.jp/%e6%b7%b1%e5%b1%9e%e5%ad%a6%e7%bf%92/keras%e3%81%a7%e3%81%aefrelu%e6%b4%bb%e6%80%a7%e5%8c%96%e9%96%a2%e6%95%b0/

 

  1. Gelu関数

https://arxiv.org/pdf/1606.08415

 

  1. Selu関数

https://arxiv.org/abs/1706.02515v5

 

  1. Relu6関数

https://arxiv.org/abs/1704.04861v1

 

  1. Softsign関数

https://arxiv.org/pdf/1710.07654v3

 

  1. Sifted Softsign関数

https://arxiv.org/pdf/1706.08566v5

 

  1. KAF関数

https://arxiv.org/pdf/1707.04236v1

 

  1. Tanexp関数

https://arxiv.org/pdf/2003.09855v2

 

  1. ARiA関数

https://arxiv.org/abs/1805.08878v1

 

  1. m-arcsinh関数

https://arxiv.org/pdf/2009.07530v1

 

  1. Hermite 関数

https://arxiv.org/pdf/1909.05479v2

 

  1. ELiSH関数

https://arxiv.org/pdf/1808.00783v1

 

  1. Swish関数

https://arxiv.org/pdf/1710.05941

 

  1. Mish関数

https://arxiv.org/abs/1908.08681

 

  1. kWTA関数

https://arxiv.org/abs/1905.10510

 

  1. HardTanh関数

https://nn.readthedocs.io/en/rtd/transfer/index.html#hardtanh

 

  1. hardShrink関数

https://nn.readthedocs.io/en/rtd/transfer/index.html#hardshrink

 

  1. softShrink関数

https://nn.readthedocs.io/en/rtd/transfer/index.html#softshrink

 

  1. Noisy関数

https://arxiv.org/pdf/1603.00391.pdf

 

  1. SoftMin関数

https://nn.readthedocs.io/en/rtd/transfer/index.html#softmin

 

  1. SoftPlus関数

https://nn.readthedocs.io/en/rtd/transfer/index.html

 

  1. LogSigmoid関数

https://nn.readthedocs.io/en/rtd/transfer/index.html#logsigmoid

 

  1. LogSoftMax関数

https://nn.readthedocs.io/en/rtd/transfer/index.html#logsoftmax

https://pytorch.org/docs/stable/generated/torch.nn.LogSoftmax.html#torch.nn.LogSoftmax

 

  1. CELU関数

https://pytorch.org/docs/stable/generated/torch.nn.CELU.html#torch.nn.CELU

 

  1. SiLU関数

https://pytorch.org/docs/stable/generated/torch.nn.SiLU.html#torch.nn.SiLU

 

  1. Threshold関数

https://pytorch.org/docs/stable/generated/torch.nn.Threshold.html#torch.nn.Threshold

 

  1. Softmax2d関数

https://pytorch.org/docs/stable/generated/torch.nn.Softmax2d.html#torch.nn.Softmax2d

 

  1. Softmax2d関数

https://pytorch.org/docs/stable/generated/torch.nn.Softmax2d.html#torch.nn.Softmax2d

 

  1. AdaptiveLogSoftmaxWithLoss関数

https://pytorch.org/docs/stable/generated/torch.nn.AdaptiveLogSoftmaxWithLoss.html#torch.nn.AdaptiveLogSoftmaxWithLoss

 

  1. Identity関数

https://pytorch.org/docs/stable/generated/torch.nn.Identity.html#torch.nn.Identity

 

関連記事

Kerasでアクティベーションのパラメータチューニング

 

担当者:KW
バンコクのタイ出身 データサイエンティスト
製造、マーケティング、財務、AI研究などの様々な業界にPSI生産管理、在庫予測・最適化分析、顧客ロイヤルティ分析、センチメント分析、SaaS、PaaS、IaaS、AI at the Edge の環境構築などのスペシャリスト