1. 定義と概要
ReLU関数(Rectified Linear Unit。正規化線形関数、ランプ関数とも呼ばれます)とは、入力が0以下のとき0を出力し、入力が0より大きいときはその値をそのまま出力する活性化関数です。数式ではf(x)=max(0,x)と表され、入力xと0を比較して大きい方をそのまま出力する、という単純な処理になります。ディープラーニングの中間層(入力層と出力層の間にあり、計算を担う層)で標準的に使われる代表的な活性化関数の一つです。
シグモイド関数(出力を0から1の範囲になめらかに変換する活性化関数)やtanh関数(出力をマイナス1から1の範囲になめらかに変換する活性化関数)は、なめらかな曲線を描く活性化関数の代表例です。これらは誤差逆伝播法(出力側で生じた誤差を逆方向に伝えながら各層の重みを調整する学習手法)の際に、1未満の微分値(関数の傾きを求める計算)が層を重ねるたびに繰り返し掛け合わされます。その結果、勾配がほぼゼロに近づく勾配消失問題(層を重ねるほど誤差の伝わり方が小さくなり、学習がほとんど進まなくなる現象)を起こしやすいという弱点を抱えています。
ReLU関数は正の入力に対して微分値が常に1で一定であるため、層を深くしても勾配が縮小しにくく、計算も単純で軽いという特徴を持ちます。この特性から、深い層を持つニューラルネットワークの中間層で標準的な活性化関数として広く採用されるようになりました。
2. 試験対策ポイント
まず押さえておきたいのは、まず定義そのものです。入力が0以下なら0、0より大きければ入力の値をそのまま出力するという単純な形で、数式f(x)=max(0,x)は、微分値が0(xが0未満のとき)または1(xが0より大きいとき)の二値になるという特性を持ちます。
この微分値の性質は、勾配消失問題の抑制と直結しています。シグモイド関数の微分値の最大は0.25、tanh関数の微分値の最大は1ですが値域全体では1未満に収まり、いずれも層を重ねるほど勾配が縮小しやすいという弱点を抱えています。ReLU関数は正の領域で微分値が常に1のため、深い層でも勾配が伝わりやすいという関係にあります。
計算コストの軽さも重要なテーマです。指数計算を含むシグモイド関数・tanh関数と異なり、ReLU関数は0と入力値を比較して大きい方を採用するだけの単純な演算のため計算負荷が小さく、学習の高速化につながります。
dying ReLU問題(ニューロンへの入力が負の値に偏り続け、出力と勾配がともに0で固定されて学習が止まる現象)も、押さえておきたいポイントです。この現象は、学習率(1回の学習でモデルの重みをどれだけ大きく更新するかを決める値)が大きすぎる場合などに起こりやすいという性質があります。
この問題を緩和するため、いくつかの派生形が考案されています。負の領域にもわずかな傾きを持たせたLeaky ReLU関数(ReLU関数の派生で、負の領域にもわずかな傾きを持たせた活性化関数)が代表例です。ほかにも、傾きを学習可能なパラメータ(モデルが学習によって調整する数値)にしたParametric ReLU(PReLU)関数などがあります。各関数の詳細な仕組みは、それぞれの派生関数を扱う別記事に譲ります。
3. 関連概念との比較・相違点
シグモイド関数との最大の違いは、出力範囲と勾配消失問題への強さです。シグモイド関数は出力が0から1に収まり微分値の最大が0.25と小さいため、層を重ねるほど勾配が縮小しやすいという弱点があります。ReLU関数は正の領域で微分値が常に1のため、勾配が縮小しにくいという点でシグモイド関数と異なります。
tanh関数との違いは、出力範囲とゼロ中心性にあります。tanh関数は出力がマイナス1から1でゼロを中心とし微分値の最大は1ですが、値域全体では1未満に収まるため勾配消失を完全には避けられません。両者とも中間層の活性化関数として使われますが、深い層での勾配の伝わりやすさに差が出ます。
3つの関数を出力範囲と微分値の観点で並べると、違いの出どころが見えやすくなります。
| 活性化関数 | 出力の範囲 | 微分値 | 勾配消失への強さ |
|---|---|---|---|
| シグモイド関数 | 0から1 | 最大0.25 | 層を重ねるほど勾配が縮小しやすい |
| tanh関数 | マイナス1から1 | 最大は1だが値域全体では1未満 | 勾配消失を完全には避けられない |
| ReLU関数 | 0以上 | 正の領域では常に1 | 層を深くしても勾配が縮小しにくい |
微分値が1未満に縮んでいく関数か、正の領域で1のまま保たれる関数かという差が、そのまま深い層での学習の進みやすさに表れます。
Leaky ReLU関数などの派生とは、dying ReLU問題への対応の有無で違いがあります。ReLU関数は負の入力で出力・勾配がともに0になるのに対し、Leaky ReLU関数は負の領域にもわずかな傾きを持たせて勾配をゼロにしない設計という違いがあります。ReLU関数を基準として、負の領域の扱いをどう変えたかという軸で派生形を整理すると理解しやすい関係にあります。
4. ビジネス・実務での活用シナリオ
画像認識の分野では、畳み込みニューラルネットワーク(CNN。画像認識などで使われる、画像の特徴を段階的に抽出するニューラルネットワークの一種)の中間層にReLU関数が採用されています。層を深くしても勾配消失が起こりにくいため、大規模な画像データセットでも実用的な学習時間でモデルを構築できるという効果があります。
音声認識や自然言語処理(人間が使う言葉をコンピュータに処理させる技術)の分野でも、大規模なニューラルネットワークの中間層にReLU関数が用いられています。計算コストを抑えながら層を重ねられるため、多層化による表現力の向上と学習時間の短縮を両立させています。
モデル開発の実務現場では、学習が進まないニューロンが多発しdying ReLU問題が疑われる場合、学習率を下げる、あるいはLeaky ReLU関数など負の領域にも傾きを持つ活性化関数へ切り替えるといった対応が取られます。現場での試行錯誤には、こうした活性化関数の特性理解が土台となっています。
5. 要点まとめ
- ReLU関数は入力が0以下なら0、正なら入力をそのまま出力するランプ関数で、正の領域の微分値が常に1のため深い層でも勾配消失が起こりにくいという特徴を持ちます。
- シグモイド関数(微分値最大0.25)・tanh関数(微分値は最大1のものの値域は限定的)と比べて勾配が縮小しにくく、計算コストも小さいため中間層の標準的な選択肢になっています。
- 負の入力が続くとニューロンの出力・勾配が0のまま固定されるdying ReLU問題があり、対策として負の領域にも傾きを持つLeaky ReLU関数などの派生が考案されています。
6. 確認問題
問1ReLU関数は、入力が0以下のときは0を、0より大きいときはその値をそのまま出力する活性化関数である。
解答・解説をみる
○ 正しい
ReLU関数(ランプ関数)の定義そのものです。数式ではf(x)=max(0,x)と表され、入力が0以下なら0、0より大きければ入力の値をそのまま出力するという関係にあります。
問2ReLU関数は正の入力に対する微分値が常に1であるため、シグモイド関数と比較して勾配消失問題が起こりにくいという特徴を持つ。
解答・解説をみる
○ 正しい
シグモイド関数の微分値の最大は0.25であるのに対し、ReLU関数は正の領域で微分値が常に1のため、層を重ねても勾配が縮小しにくいという特徴があります。
問3dying ReLU問題とは、ReLU関数を使ったニューロンへの入力が正の値に偏り続けることで、そのニューロンが常に大きな値を出力し続けてしまう現象である。
解答・解説をみる
× 誤り
正しくは、入力が負の値に偏り続けることで出力・勾配がともに0で固定され、重みが更新されなくなる現象です。入力の偏りの向きを取り違えた記述であり、正負を逆にした選択肢は注意が必要です。

