Select Language

AI Technology Community

relu関数-線形整流関数(Rectified Linear Unit,ReLU)

線形整流関数(Rectified Linear Unit, ReLU)は、修正線形ユニットとも呼ばれ、人工ニューラルネットワークでよく使われる活性化関数(activation function)で、通常は斜坡関数とその変種に代表される非線形関数を指します。整流線形ユニットは、一部のニューロンを活性化し、疎性を高めます。xが0より小さい場合、出力値は0になり、xが0より大きい場合、出力値はxになります。

公式:

図:

relu

導関数:

図:

ReLUの導関数

ReLUとsigmoidの比較:

  • sigmoidの導関数は、0の近くでは良好な活性化特性を持ちますが、正負の飽和領域では勾配がほぼ0に近くなり、勾配消失を引き起こします。一方、reluの導関数は、0より大きい場合、勾配が定数になり、勾配消失を引き起こしません。

  • relu関数の負の半分の領域での導関数は0です。ニューロンの活性化値が負の半分の領域に入ると、勾配が0になります。つまり、このニューロンは訓練されません。これが疎性です。

  • relu関数の導関数の計算はより速く、プログラムではif-else文で実装できます。一方、sigmoid関数は浮動小数点の四則演算が必要で、除算が含まれます。

reluの欠点:

訓練中に、ReLUユニットは脆弱で「死ぬ」可能性があります。例えば、大きな勾配がReLUのニューロンを流れると、勾配更新が特定の状態になり、その状態ではニューロンが他のデータポイントで再度活性化されなくなります。このようなことが起こると、このニューロンを流れるすべての勾配が0になります。つまり、このReLUユニットは訓練中に不可逆的に死んでしまい、データの多様性が失われます。

学習率を高く設定すると、ネットワークの40%のニューロンが死ぬ(訓練データ全体でこれらのニューロンが活性化されない)ことがあります。学習率を適切に設定することで、このようなことが起こる確率を低くすることができます。

ニューラルネットワークでは、隠れ層の活性化関数としてはReLUを選ぶのが最適です。

post
活性化関数
2021-05-14 15:55:39join communtity
  • 22

    item of content
活性化関数(Activation Function)とは、人工ニューラルネットワークのニューロン上で動作する関数であり、ニューロンの入力を出力にマッピングする役割を担います。活性化関数は、人工ニューラルネットワークモデルが非常に複雑で非線形の関数を学習し理解することにおいて極めて重要な役割を果たします。これらはネットワークに非線形特性を導入します。図1のように、ニューロン内で入力(inputs)が重み付けされ、合算された後、さらにある関数によって処理されます。この関数こそが活性化関数です。活性化関数を導入することで、ニューラルネットワークモデルに非線形性が追加されます。活性化関数を使用しない場合、各層の出力は単なる行列の乗算と同等になります。たとえ複数の層を積み重ねても、結局のところそれは行列の乗算以上のものではありません。

活性化関数を使わない場合、各層の出力は前層の入力の線形関数となり、ニューラルネットワークがどれだけ多くの層を持っていたとしても、出力は常に入力の線形結合となります。これは最も原始的なパーセプトロン(Perceptron)の状況です。

一方、活性化関数を使用すると、ニューロンに非線形な要素が導入され、ニューラルネットワークは任意の非線形関数に近似することが可能になります。これにより、ニューラルネットワークは多くの非線形モデルに応用できるようになります。