ReLU(Rectified Linear Unit)とは、f(x) = max(0, x)で定義される活性化関数です。入力が正ならそのまま出力し、負なら0を出力するシンプルな関数ですが、深層学習の性能を大幅に向上させた革新的な存在です。
ReLUの利点
計算が高速(条件分岐のみ)、勾配消失問題を大幅に軽減(正の領域で勾配が1)、スパースな活性化パターンを生み出す(一部のニューロンのみ活性化)という3つの大きな利点があります。
| ひとことで言うと | 「マイナスなら0、プラスならそのまま」という、最もよく使われる活性化関数。 |
|---|---|
| 何がうれしいか | 計算が非常に軽く、勾配消失が起きにくいので深いモデルでも学習が進む。 |
| 注意点 | 常に0を出し続けて学習が止まる「死んだReLU」が起きることがある。 |
Dying ReLU問題
負の入力に対して勾配が常に0となるため、学習中に一度「死んだ」ニューロン(常に0を出力)は二度と回復しない「Dying ReLU」問題があります。
1入力値正負どちらもあり得る
▶
20以下か判定符号を見る
▶
30以下→0その先へ伝えない
▶
40超→そのまま値を素通しする
ReLUの変種
Dying ReLU問題を解決するため、Leaky ReLU(負の領域に小さな勾配)、Parametric ReLU(勾配を学習可能に)、ELU、GELU、Swishなどの変種が提案されています。特にGELUはTransformerで標準的に使用されています。