ReLU関数(ランプ関数)とは?機械学習の視点で分かりやすく解説!!

スポンサーリンク
ディープラーニング
この記事を読んで分かること
  • ReLU関数とは何か
  • ReLU関数の実装方法
  • ReLU関数の微分

ReLU関数とは

ReLU関数とは、

$$f(x)=\begin{cases}x\qquad (x > 0)\\
0\qquad (x\leq 0)\end{cases}$$

で表される関数です。

 

グラフで表すとこのような形になります。

ReLU関数

 

ReLU関数はディープラーニングの活性化関数の一つです。

 

 

ReLU関数の特徴

グラフを見ると、ReLU関数では0以上の場合ではそのまま出力され、0未満の場合では0を出力されます。

ReLU関数では単純な計算のため、処理が早いです。

また、0以上の範囲で入力を減衰させずにそのまま出力されるので、勾配の値は消失しない関数となっています。

 

ReLU関数の特徴
  • 0以上の場合ではそのままの値が出力される
  • 計算処理が早い
  • 0以上で勾配が消失することがない

 

ReLU関数の用途

ReLU関数は、勾配消失の少ない単純な関数なのでディープラーニングの至るところに用いられます。

 

ReLU関数の用途
  • ディープラーニングのあらゆる層の活性化関数

 

ReLU関数の微分

ReLU関数の微分

$$f(x)=\begin{cases}1\qquad (x > 0)\\
0\qquad (x\leq 0)\end{cases}$$

と表されます。

ステップ関数と同様の関数となります。

 

微分後の関数をグラフで表すとこのような形になります。

ReLU_dx

 

0以上の範囲で出力が1なので、勾配が小さくならず勾配消失が防がれています。

 

ReLU関数をpythonで実装

ReLU関数をpythonで実装していきます。

class Relu:
    def __init__(self):
        self.mask = None

    def forward(self, x):
        self.mask = (x <= 0)
        out = x.copy()
        out[self.mask] = 0

        return out

    def backward(self, dout):
        dout[self.mask] = 0
        dx = dout

        return dx

 

単純な関数なので、シンプルに表すことができました。

 

まとめ

ReLU関数とは、

$$f(x)=\begin{cases}x\qquad (x > 0)\\
0\qquad (x\leq 0)\end{cases}$$

で表される関数です。

ReLU関数は、単純な関数なのでディープラーニングのあらゆる活性化関数としてよく使われます。

ReLU関数の微分0以上の範囲で出力が1なので、勾配が小さくならず勾配消失が防がれています。

 

参考文献

コメント

タイトルとURLをコピーしました