ニューラルネットワークで重要な活性化関数の1つである「Leaky ReLU関数」を、紹介します。理解のしやすいLeaky ReLU関数をPythonで実装も行いながら紹介しています。
Leaky ReLU関数とは?
Leaky ReLU関数のグラフ
Leaky ReLU関数は、正の値の入力は「x」を、負の値の入力は「 -0.01x 」を出力する関数です。
「 -0.01 」は場合によって稀に数値が変更されますが、「 -0.01 」が一般的です。
Leaky ReLU関数はその名前の通り、ReLU関数を少しだけ拡張させたものです。
下のグラフでLeaky ReLU関数とReLU関数を重ねてみました。
Leaky ReLU関数とReLU関数は「 x<0 」だけ違うグラフとなりますが、ほとんど同じですね。
ReLU関数は隠れ層で利用する関数として今でも利用されています。
精度を上げるために、ReLU関数とLeaky ReLU関数の両方を検証し、精度のの高い方を採用することが多いです。
それでもやはり、ReLU関数が多く使われますが、稀にLeaky ReLU関数が高い精度を発揮することがあります。
ステップ関数の数式
Leaky ReLU関数の数式は上のようになりますが、
「a」の値は「 -0.01 」が一般的なことから、下のような数式でも表せます。
Leaky ReL関数は非常にシンプルな関数なので、数式も非常にシンプルです。
中学生でも理解ができる数式ですね。
PythonでLeaky ReLU関数を実装
実装
#Leaky ReLU関数
import numpy as np
def LeakyRelu(x):
return np.where(x > 0, x , 0.01 * x)
if __name__ == '__main__':
print(LeakyRelu(-7)) # 任意の数字を入力
【実行結果】
0
5行目のnumpyのwhere()を用いて条件式を1行で表現しています。
8行目の通り、作成したstep関数に今回は「7」を出力し、「0」が出力されています。
ステップ関数のPythonでの実装は非常に簡単ですね。
【参考】Leaky ReLU関数をプロットするコード
参考程度に、matplotlibを使ってLeaky ReLU関数を描画するコードを掲載します。
#Leaky ReLU関数
import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(-6, 6, 0.1)
y = np.where(x > 0, x , 0.01 * x)
plt.grid()
plt.plot(x, y)
plt.show()
このコードを実行すると、下のグラフが実行結果として生成されます。
上手くLeaky ReLU関数をプロットできていますね。
ということで本記事は、
ニューラルネットワークで非常に重要な、活性化関数の1つであるステップ関数を紹介しました!
最後まで読んでいただき、ありがとうございました\(^o^)/
ディープラーニングのおすすめ書籍
専門書としては異例の発行部数を誇る、素晴らしい書籍です(^^)
初心者の方から知識のある方まで、幅広い方に向けて書かれていますよ!\(^o^)/
超オススメのPC用品
PCを操作する上で、トラックボールマウスが非常におすすめです!
僕も感動したこのマウスを、騙されたと思って使ってみてください!(^^)
外部モニターで2倍以上の効率化が見込めます!
安いものだと、たったの1万円前後なのでおすすめですよー!\(^o^)/