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を選ぶのが最適です。
22
item of content
活性化関数を使わない場合、各層の出力は前層の入力の線形関数となり、ニューラルネットワークがどれだけ多くの層を持っていたとしても、出力は常に入力の線形結合となります。これは最も原始的なパーセプトロン(Perceptron)の状況です。
一方、活性化関数を使用すると、ニューロンに非線形な要素が導入され、ニューラルネットワークは任意の非線形関数に近似することが可能になります。これにより、ニューラルネットワークは多くの非線形モデルに応用できるようになります。
- 1079hits
- 0replay
-
0like
- collect
- send report