2019/04/23
2020/04/14
活性化関数の役割と種類についてわかりやすく解説
この記事ではニューラルネットワークやパーセプトロンで用いられている活性化関数について説明します。
今回は代表的な活性化関数であるステップ関数、シグモイド関数、ReLU関数についても解説します。
活性化関数とは
活性化関数とはどのような関数なのでしょうか。以下の図を見ながら考えていきましょう。
パーセプトロンは\( y’ = w_0 + w_1x_1 + w_2x_2 \)を計算します。その後、\( y’ \)を関数で処理して出力します。
\( y’ \)を処理する関数を活性化関数\( h(y’) \)と呼びます。出力は\( \ y = h(y’) \)で計算されます。
活性化関数の役割
なぜこれらの活性化関数を用いるのでしょうか。
モデルの表現力を増すためです。なぜ活性化関数を用いると表現力が増すのでしょう。
入力の加重和に対して、活性化関数を用いて変換を行うと様々な値の出力が行えます。様々な値の出力を持つパーセプトロンを組み合わせるとより複雑な表現が可能になります。
その結果として高度な識別問題を解決できるようになると理解すればよいでしょう。
これからは様々な活性化関数について解説していきます。
ステップ関数
パーセプトロンはどのような活性化関数を用いていたでしょうか。
以下がパーセプトロンで用いられる活性化関数です。
\( \begin{eqnarray} h(y’) = \begin{cases} 1 & ( y’ \geq 0 ) \\ 0 & ( y’ \lt 0 ) \end{cases} \end{eqnarray} \)
この活性化関数を用いると出力として1と0を得ることができます。この活性化関数のことを階段関数、またはステップ関数と呼びます。
ステップ関数は1と0しか出力できません。そのため、情報のロスが激しく表現力に乏しいのが欠点です。
以下の図を見ると\( y’ \)の値に応じて階段のようになっていることが分かります。
シグモイド関数
では他にはどのような活性化関数があるのでしょうか。
次は活性化関数の一つであるシグモイド関数について説明します。シグモイド関数はニューラルネットワークで用いられる活性化関数ですが現在はあまり使われていません。シグモイド関数を活性化関数として用いると勾配消失という現象が起こり、学習が停滞してしまうことがあるためです。
以下がシグモイド関数を表した数式になります。
\( h(y’) = \displaystyle \frac{ 1 }{ 1 + \exp ( -y’ )} \)
シグモイド関数を用いると0から1まで連続な値を出力することができます。
\( y’ \)が大きいと出力は1に近づき、\( y’ \)が小さいと出力が0に近づきます。以下のグラフからもシグモイド関数の様子が分かります。
ReLU関数
次にReLU関数について説明します。ReLU関数は最も一般に用いられる活性化関数です。勾配消失が起こりにくい、計算しやすいという2つの特徴により、ReLU関数は最も活性化関数として使い勝手がいいとされます。
ReLU関数は以下のように表されます。
\( \begin{eqnarray} h(y’) = \begin{cases} y’ & ( y’ \geq 0 ) \\ 0 & ( y’ \lt 0 ) \end{cases} \end{eqnarray} \)
ReLU関数のグラフは以下のようになります。
まとめ
今回は活性化関数としてステップ関数の他にシグモイド関数、ReLU関数について紹介しました。紹介した活性化関数以外にもtanh関数やSELU関数などが存在します。
パーセプトロンはステップ関数を、ニューラルネットワークではシグモイド関数やReLU関数を活性化関数として用います。
これらの関数を用いるとより表現力豊かなモデルを構築できることを頭に入れておきましょう。
Recommended