1. 概要

このチュートリアルでは、シグモイド関数とtanh活性化関数について説明します。最初に、活性化関数について簡単に紹介し、次にこれら2つの重要な関数を示し、それらを比較します。詳細な例を提供します。

2. 活性化関数

ニューラルネットワークの重要な構成要素は、ニューロンがアクティブ化されるかどうかを決定するアクティブ化関数です。具体的には、フィードフォワードニューラルネットワークのニューロンの値は次のように計算されます。

ここで、は入力特徴、は重み、はニューロンのバイアスです。 次に、すべてのニューロンの値に活性化関数が適用され、ニューロンがアクティブであるかどうかが決定されます。

次の図では、活性化関数がどのように機能するかを図式的に見ることができます。

線形活性化関数を持つネットワークは線形回帰モデルと同等であるため、活性化関数は単変量で非線形です。 活性化関数の非線形性により、ニューラルネットワークは複雑な意味構造をキャプチャして高性能を実現できます。

3. シグモイド

シグモイド活性化関数(ロジスティック関数とも呼ばれます)は、入力として任意の実数値を取り、範囲内の値を出力します。次のように計算されます。

ここで、はニューロンの出力値です。 以下に、入力が次の範囲にある場合のシグモイド関数のプロットを示します。

予想どおり、シグモイド関数は非線形であり、ニューロンの値をの狭い範囲に制限します。 出力値が1に近い場合、ニューロンはアクティブで情報のフローを有効にし、0に近い値は非アクティブなニューロンに対応します。

また、シグモイド関数の重要な特徴は、 S字型であるため、入力値を曲線の両端(0または1)にプッシュする傾向があるという事実です。に近い領域ゼロの場合、入力値をわずかに変更すると、出力のそれぞれの変更は非常に大きくなり、その逆も同様です。 -5未満の入力の場合、関数の出力はほぼゼロですが、5より大きい入力の場合、出力はほぼ1です。

最後に、シグモイド活性化関数の出力は、範囲内にあるため、確率として解釈できます。 そのため、予測タスクの出力ニューロンでも使用されます。

4. タン

深層学習で一般的なもう1つの活性化関数は、単にtanh関数と呼ばれるタンジェント双曲線関数です。次のように計算されます。

tanh関数がシグモイドのシフトおよびストレッチバージョンであることがわかります。以下に、入力が次の範囲にあるときのプロットを示します。

tanh関数の出力範囲は、シグモイド関数と同様の動作を示します。 主な違いは、tanh関数が入力値を1と0ではなく1と-1にプッシュするという事実です。

5. 比較

両方の活性化関数は、非常に複雑な構造を学習できるため、ニューラルネットワークで広く使用されています。 それでは、それらを比較して、それらの類似点と相違点を示しましょう。

5.1. 類似点

先に述べたように、tanh関数はシグモイドのストレッチおよびシフトバージョンです。 したがって、多くの類似点があります。

両方の関数は、入力値を制限された範囲に抑制するSのような関数に属します。これは、ネットワークが重みを制限された状態に保ち、勾配の値が非常に大きくなる勾配消失問題を防ぐのに役立ちます。

5.2. 違い

2つの関数の重要な違いは、それらの勾配の動作です。各活性化関数の勾配を計算してみましょう。

以下に、シグモイド(赤)とタン(青)の活性化関数の勾配をプロットします。

ニューラルネットワークでこれらの活性化関数を使用している場合、データは通常ゼロを中心にしています。 したがって、ゼロに近い領域の各勾配の動作に注意を向ける必要があります。

tanhの勾配は、シグモイド関数の勾配の4倍であることがわかります。 これは、tanh活性化関数を使用すると、トレーニング中の勾配の値が高くなり、ネットワークの重みが更新されることを意味します。 したがって、強い勾配と大きな学習ステップが必要な場合は、tanh活性化関数を使用する必要があります。

もう1つの違いは、tanhの出力がゼロを中心に対称であるため、収束が速くなることです。

6. 勾配消失

それらの利点にもかかわらず、両方の関数は、いわゆる勾配消失問題を提示します。

ニューラルネットワークでは、エラーはネットワークの隠れ層を介して逆伝播され、重みが更新されます。 上記のような非常に深いニューラルネットワークと有界活性化関数がある場合、各隠れ層を逆伝播した後、エラーの量は劇的に減少します。したがって、初期の層では、エラーはほとんどありません。ゼロであり、これらのレイヤーの重みは適切に更新されません。 ReLU 活性化関数は、勾配消失問題を修正できます。

7. 例

最後に、これらの活性化関数を2つの入力特徴と重みの単純なニューロンに適用する例を示します。 以下に、シグモイド(左)とタン(右)の活性化関数を使用した場合の出力値と勾配を示します。

上記の例は、以前のコメントを確認します。 tanhの出力値はゼロに近く、勾配は4倍です。

8. 結論

このチュートリアルでは、tanhとsigmoidの2つの活性化関数について説明しました。 最初に用語を紹介し、次に2つの関数を例とともに説明して比較しました。