機械学習

ReLU関数とその微分をグラフ化してみた

以下の式で表現される関数をReLU関数といい、ディープラーニングの活性化関数の1つとして利用される。
\[
\begin{eqnarray}
f(x) = \left\{ \begin{array}{l} 0 (x<0の場合)\\ x (x≧0の場合)\end{array} \right.
\end{eqnarray}
\]

以前ご紹介した「シグモイド関数」を、ニューラルネットワークの中間層の活性化関数に利用すると、以下のサイトに記載の「勾配消失問題」が発生しやすくなる。
https://zero2one.jp/ai-word/vanishing-gradient-problem/

この「勾配消失問題」の発生を防ぐため、ニューラルネットワークの中間層の活性化関数に「ReLU関数」がよく使われる。

今回は、ReLU関数とその微分をグラフ化してみたので、その結果を共有する。

\(f(x)=\left\{ \begin{array}{l} 0 (x<0の場合)\\ x (x≧0の場合)\end{array}   \right.\)をPythonでグラフ化した結果は、以下の通り。

ReLU関数のグラフ



また、\(f(x)=\left\{ \begin{array}{l} 0 (x<0の場合)\\ x (x≧0の場合)\end{array}   \right.\)を\(x\)について微分すると、
\(\displaystyle \frac{d}{dx}f(x) = \left\{ \begin{array}{l} \displaystyle \frac{d}{dx}0=0 (x<0の場合)\\ \displaystyle \frac{d}{dx}x=1 (x≧0の場合)\end{array}   \right.\)となる。

上記、ReLU関数の微分をグラフに追加した結果は、以下の通り。

ReLU関数とその微分のグラフ

要点まとめ

  • 以下の式で表現される関数をReLU関数といい、ディープラーニングの活性化関数の1つとして利用される。
    \[
    \begin{eqnarray}
    f(x) = \left\{ \begin{array}{l} 0 (x<0の場合)\\ x (x≧0の場合)\end{array} \right.
    \end{eqnarray}
    \]
  • 「勾配消失問題」の発生を防ぐため、ニューラルネットワークの中間層の活性化関数に「ReLU関数」がよく使われる。
  • ReLU関数を\(x\)について微分すると、以下のようになる。
    \[
    \begin{eqnarray}
    f(x) = \left\{ \begin{array}{l} 0 (x<0の場合)\\ 1 (x≧0の場合)\end{array} \right.
    \end{eqnarray}
    \]