Enjoy Engineer Life

C#,Unity,C++,UE4などの技術ブログや雑記を徒然なるままに書いていきます。

【読書メモ】Deep Learningを学ぶ〜ニューラルネットワークで主に使用されるReLU関数とは〜Part 9

最初に

本記事は以下の本から得た知見を自分用のメモも兼ねてまとめた記事となります。ただし本の内容をそのまま書き写ししているわけではなく、ある程度自身で調べたものや感想が混じっています。ご了承ください。

f:id:rossamu:20190103000547p:plain ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

また、本記事は株式会社よむネコのプロジェクトの業務内のお時間を頂いて蓄積した知見となります。
以下会社URLです。

http://www.yomune.co/ f:id:rossamu:20191023153505p:plain



今回は「ReLU」という関数について学んでいきます。

ReLUとは

最近のニューラルネットワークでは「ReLU(Rectified Linear Unit)」という関数が主に使用されています。


ReLU関数の特徴として、「最低値は0、それ以上ならそのまま出力を行う」というものが挙げられます。つまりマイナスの値をノイズとして除去することで、より特徴を掴みやすい効果が期待できる関数です。この関数は画像データと相性が良いようです。


関数の実装と、matplotlibを用いたグラフ表示は以下の通りになります。

   import numpy as np
    import matplotlib.pylab as plt
    def relu_func(x):
        return np.maximum(0,x) #入力値(x)と0を比較して大きい値の方を出力

    x = np.arange(-5.0, 5.0, 0.1)
    y = relu_func(x)
    plt.plot(x,y)
    plt.ylim(-1.1, 5.1)
    plt.show()


f:id:rossamu:20191023174540p:plain


念のためReLU関数を数式で表した場合を確認しますと、以下の通りになります。


h(x)=\left\{\begin{array}{ll}0 & (x \leqq 0) \\x & (x > 0)\end{array}\right\}



上記の通り、ReLU関数はシンプルなため実装も単純なものになります。

ReLUは派生系がいくつかあるようなので今後登場してくるかもしれません。

最後に

今回はReLUの概念についてあっさりとまとめたものになります。次回はNumpyを用いた少し複雑な計算に入っていきます。

参考