Leaky ReLU関数 (G検定)

Leaky ReLU関数

1. 定義と概要

Leaky ReLU関数とは、f(x)=x(xが0より大きいとき)、f(x)=αx(xが0以下のとき)と定義される活性化関数(ニューロンが受け取った入力を、次の層へ渡す値に変換する関数)です。αは負の領域の傾きを決める係数で、慣習的に0.01程度の小さな正の値が使われます。

ReLU関数(f(x)=0、xが0以下のとき、f(x)=x、xが0より大きいとき)と正の領域では同じ形です。ただし負の領域で常に0を出力するReLU関数と異なり、Leaky ReLU関数は負の入力に対しても僅かな値を出力します。グラフで見ると、原点より左側が水平にぺたりと寝てしまうか、ごく緩い下り坂として残るかという違いになります。

ReLU関数は正の領域で傾きが常に1のため、勾配(誤差をどれだけ重みの調整に反映するかを左右する量)が縮小しにくいという特徴を持ちます。シグモイド関数やtanh関数に比べて勾配消失問題(層を重ねるほど誤差の伝わり方が小さくなり、学習がほとんど進まなくなる現象)が起こりにくいという利点から、中間層で広く使われるようになりました。

一方で、学習が進む過程である重みの更新によってニューロンへの入力が常に0以下になると、出力も勾配も常に0となります。それ以降そのニューロンの重みが更新されなくなるdying ReLU問題(ReLU関数を使ったニューロンの出力が常に0になり、以降の学習に寄与しなくなる現象)が生じます。いわば、一度眠り込んだニューロンを起こす手がかりが残らない状態です。

Leaky ReLU関数は、負の領域にも僅かな傾きαを持たせることで勾配が完全に0にならないようにし、この問題を緩和する目的で考案されました。

2. 試験対策ポイント

まず整理しておきたいのは、dying ReLU問題の発生メカニズムと、Leaky ReLU関数がそれをどう緩和するかという関係です。ReLU関数はある重みの更新によってニューロンへの入力が常に0以下に落ち込むと、出力も勾配も0のまま固定され、それ以降そのニューロンが学習に寄与しなくなります。Leaky ReLU関数は負の領域にも小さな傾きαを持たせることで勾配を完全な0にせず、この学習停止を緩和する設計です。

数式ではf(x)=x(xが0より大きいとき)、f(x)=αx(xが0以下のとき)と表され、αには慣習的に0.01が使われます。このαは、データから自動で調整される値ではなく、学習を始める前に人があらかじめ決めておくハイパーパラメータ(学習の前に人があらかじめ設定する値で、データから自動では調整されない値)です。ここは後述のParametric ReLU関数と混同しやすいポイントにあたります。

ReLU関数の派生形は、負側の傾きαの決め方によって整理されます。Leaky ReLU関数はαを0.01などの固定値とするのに対し、Parametric ReLU関数はαを誤差逆伝播法(出力側で生じた誤差を逆方向に伝えながら各層の重みを調整する学習手法)によって学習するパラメータとして扱います。チャンネルごとに異なるαを持たせることもできます。

Randomized ReLU関数は、訓練時にαを一定範囲からランダムにサンプリングするという、また別の決め方を採ります。この3つの手法は、αの決め方(固定・学習・ランダム化)で対応づけて整理できる関係にあります。

Leaky ReLU関数もReLU関数と同様に、x=0の点では微分不可能(その点でグラフの傾きが一意に定まらず、傾きを計算できない性質)です。実用上はこの点が学習の妨げになることはほとんどなく、正の領域では勾配消失に強いというReLU関数の性質を引き継いでいます。

3. 関連概念との比較・相違点

ReLU関数との最大の違いは、負側に勾配を持つかどうかにあります。ReLU関数は負の入力に対して出力・勾配が常に0となり、dying ReLU問題を起こす可能性があります。これに対しLeaky ReLU関数は、負側にも僅かな傾きαを持たせることで勾配が0にならず、学習が完全に止まるリスクを抑えます。

正の領域ではどちらも同じ形の関数であり、違いが表れるのは入力が0以下になったときだけです。Parametric ReLU関数・Randomized ReLU関数との違いも、負側の傾きαをどう決めるかという一点に集約されます。4つの関数の関係は、次のように整理できます。

手法 負の入力への出力 負側の傾きαの決め方
ReLU関数 常に0 負側の傾きを持たない
Leaky ReLU関数 入力にαを掛けた僅かな値 0.01程度の固定値(ハイパーパラメータ)
Parametric ReLU関数 入力にαを掛けた値 誤差逆伝播法で最適化する学習対象(チャンネルごとに変えられる)
Randomized ReLU関数 入力にαを掛けた値 訓練のたびに一定範囲からランダムに選ぶ

この並びが示すとおり、3つの改良版は、αを固定するか、学習するか、ランダム化するかという発展の方向性の違いとして位置づけられます。試験では関数名と決め方の組み合わせを入れ替えた選択肢が出やすいため、この対応関係を押さえておくと判断しやすくなります。

4. ビジネス・実務での活用シナリオ

画像を生成するAIの分野では、DCGAN(畳み込み層を使ったGANの代表的な構造)のDiscriminator(識別器)は、入力されたデータが本物か偽物かを見分ける役割を持つネットワークで、その中間層にLeaky ReLU関数が使われます。dying ReLU問題による学習の停滞を抑えながら、本物と偽物を見分ける能力を安定して学習させる狙いがあります。

音声波形や気温の変化のように負の値にも意味があるデータを扱う深層学習モデルでは、負の入力を一律に0へ切り捨てないLeaky ReLU関数が、情報の損失を抑える選択肢になります。負側の情報がそのまま消えるか、縮小されつつも次の層へ届くかという差が効いてくる場面です。

層を深く重ねるモデルほど、一部のニューロンがdying ReLU問題で機能を止めてしまうリスクが高まります。そうした大規模なモデルの学習を安定させる目的で、Leaky ReLU関数はReLU関数の代替として採用が検討されます。

5. 要点まとめ

  • Leaky ReLU関数はReLU関数を改良した活性化関数で、入力が0未満でも0.01程度の小さな傾きαを持たせることで、出力・勾配が完全に0になることを防ぎます。
  • 負の入力が続くとニューロンの出力・勾配が常に0になるReLU関数のdying ReLU問題を緩和する目的で導入されました。傾きαを学習するParametric ReLU関数、ランダム化するRandomized ReLU関数という発展形につながります。
  • DCGANのDiscriminator側をはじめ、深い層で学習の停滞を避けたい場面で採用されます。

6. 確認問題

問1Leaky ReLU関数は、入力が0未満の場合に入力へ0.01などの小さな正の傾きを掛けた値を出力し、出力が完全な0になることはない。

解答・解説をみる

○ 正しい

Leaky ReLU関数の定義そのものにあたります。負の領域でも僅かな出力を持たせることで、dying ReLU問題を緩和する設計です。

問2Leaky ReLU関数における負側の傾きαは、Parametric ReLU関数と同様に誤差逆伝播法によって学習される可変のパラメータである。

解答・解説をみる

× 誤り

正しくは、Leaky ReLU関数のαは固定のハイパーパラメータで、慣習的に0.01が使われ、学習によって更新されることはありません。αを誤差逆伝播法で学習するのはParametric ReLU関数であり、両者を取り違えた記述です。

問3DCGANでは、Discriminator側の中間層にLeaky ReLU関数が用いられることが多く、dying ReLU問題による学習停滞を抑える役割を持つ。

解答・解説をみる

○ 正しい

DCGANはDiscriminator側にLeaky ReLU関数、Generator側は出力層を除きReLU関数を用いる構成が代表的とされます。