ReLU関数(Rectified Linear Unit)は、ディープラーニングで広く使われる活性化関数の一つです。入力が0以下の場合は0を出力し、0より大きい場合は入力値をそのまま出力するシンプルな仕組みを持ち、勾配消失問題を軽減して学習を高速化する重要な役割を果たします。
ReLU関数とは
ReLU関数を一言でいうと、ニューラルネットワークにおいて「入力された負の値を0にし、正の値はそのまま通す」という極めてシンプルな処理を行う活性化関数です。
詳しく解説
深層学習のニューラルネットワークでは、入力データに対して重み付けとバイアスの加算を行い、その結果を次の層へ伝えるために活性化関数を適用します。従来のシグモイド関数やハイパボリックタンジェント関数では、入力が非常に大きいまたは小さい領域で勾配がほぼ0になってしまう勾配消失問題が発生し、深いネットワークの学習が困難でした。ReLU関数は、正の領域で勾配が常に1であるため、誤差逆伝播法における勾配消失を効果的に防ぎ、多層構造のディープラーニングモデルを効率よく学習させることを可能にしました。また、計算処理が極めて軽量である点も、大規模モデルにおける実用上の大きな強みとなっています。
具体例・使われ方
画像認識や自然言語処理など、多様なタスクに用いられる多層のニューラルネットワークの中間層で標準的に利用されています。例えば、CNN(畳み込みニューラルネットワーク)を用いた画像分類モデルの各畳み込み層の直後に配置され、特徴量の抽出効率を高める役割を担っています。
似た用語との違い
従来のシグモイド関数やハイパボリックタンジェント関数がなめらかなS字曲線を描くのに対し、ReLU関数は折れ線形状を持つ点が異なります。また、負の入力に対して完全に0を出力するため、出力がスパース(まばら)になりやすい特徴があります。
注意点
ReLU関数には、学習の過程で大きな勾配が流れ込んだ際にニューロンの出力が常に0となり、それ以降更新されなくなってしまう「Dying ReLU問題」という現象が起きるリスクがあります。この問題を改善するために、負の領域でわずかな傾きを持たせるLeaky ReLUなどの派生関数が使われることもあります。