【活性化関数】Leaky ReLU関数とは?【超わかりやすく解説】

ニューラルネットワークで重要な活性化関数の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^)/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です