ReLU関数

ReLU関数の数式

ReLU(れるー)と言われる関数があります。
こちら「Rectified Linear Unit」の略ですね。

古くから、ニューラルネットワークの活性化関数には「シグモイド関数」が使われていましたが、最近は「ReLU関数」が主に使われることが多いのだそうです。
え!? じゃあ、なんで?「ステップ関数」や「シグモイド関数」を紹介したの?って思いますよね?
ロジスティクス回帰で「シグモイド関数」が使われてますし、単純パーセプトロンだと1か0を出力するので「ステップ関数」が使われているそうです。

※ReLUは、入力が0を超えていれば、その入力をそのまま出力し、0以下ならば0を出力する関数です。

ReLU関数のサンプルプログラム

では、さっそくReLUのサンプルプログラムです。
2パターン用意してみました。
0以下なら0。0を超えていれば入力値をそのまま返しています。

NumPyって便利だなぁ~と思います。
目的を達成するNumPy関数が既にありますからね!
しかも!処理速度も速いです!
試しに、この2つのサンプルで処理速度を計測してみました。
前者が”0.24”秒。NumPyが”0.13”秒という結果でした。
素直にNumPy使っとこ!と思いましたねw

def relu(x):
    return x * (x > 0.0)
def relu(x):
    return np.maximum(0, x)

ReLU関数のグラフ

最後にReLU関数のグラフがどのように表示されるかをご紹介します。
グラフを表示するためのプログラムサンプルも載せておいたので、ご自身の環境で実行してみてください。
以下のようなグラフになるかと思います。

-5~5までの数字の中で、0以下なら0と出力され
0を超える入力は、そのまま出力されているという意味がわかります。
この関数が、多層パーセプトロンの活性化関数として使わるということなので頭の片隅に置いておきましょう!

import matplotlib.pyplot as plt
import numpy as np

def relu(x):
    return np.maximum(0, x)

x = np.arange(-5.0, 5.0, 1)
y = relu(x)
plt.plot(x, y)
plt.ylim(-1, 5)
plt.show()

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

This website stores cookies on your computer. These cookies are used to provide a more personalized experience and to track your whereabouts around our website in compliance with the European General Data Protection Regulation. If you decide to to opt-out of any future tracking, a cookie will be setup in your browser to remember this choice for one year.

Accept or Deny