G検定(ジェネラリスト検定)
りーきーれるーかんすう
Leaky ReLU 関数
Leaky ReLU Function
Leaky ReLU 関数とは、入力が正ならその値をそのまま出力し、入力が0以下なら入力に0.01を掛けた小さな値を出力する活性化関数です。0以下の入力で出力も傾きも0になる ReLU 関数と違い、0以下の入力でも0でない小さな勾配が残ります。
詳しい説明
Leaky ReLU 関数とは
Leaky ReLU 関数は、ニューラルネットワークで使う活性化関数の一つです。活性化関数とは、ユニット(ニューロン)が受け取った入力の重み付き和に当てはめて、そのユニットの出力を決める関数です。
Leaky ReLU 関数は、入力が正のときは入力をそのまま出力し、入力が0以下のときは入力に0.01を掛けた値を出力します。入力が正の範囲では ReLU 関数とまったく同じ働きをし、違いは入力が0以下の範囲だけにあります。この違いを理解するために、まず元になる ReLU 関数を確認します。
元になる ReLU 関数と、0以下で傾きが0になること
ReLU 関数(Rectified Linear Unit、整流線形ユニット)は、入力を としたとき次の値を出力する関数です。
入力が正なら出力は入力そのものになり、0以下なら出力は0になります。深層学習の教科書であるイアン・グッドフェロー(Ian Goodfellow)、ヨシュア・ベンジオ(Yoshua Bengio)、アーロン・クールヴィル(Aaron Courville)の "Deep Learning"(2016年)は、現代のニューラルネットワークでは ReLU を使うことが既定の推奨であると書いています。
ReLU 関数の出力は、入力が0より小さい範囲ではずっと0です。その範囲では入力を少し動かしても出力が変わらないので、関数の傾き(微分の値)は0になります。
ニューラルネットワークの学習では、誤差を出力側から入力側へ逆向きに伝える誤差逆伝播法を使い、各重みをどちらへどれだけ動かせばよいかを示す勾配を計算します。あるユニットの傾きが0だと、そのユニットを通って入力側へ伝わる勾配も0になります。つまり、その入力については、そのユニットにつながる重みを動かす手がかりが得られません。
0以下の入力に小さな傾きを残す仕組み
アンドリュー・L・マース(Andrew L. Maas)、アウニ・Y・ハンヌン(Awni Y. Hannun)、アンドリュー・Y・ン(Andrew Y. Ng)の論文 "Rectifier Nonlinearities Improve Neural Network Acoustic Models"(機械学習の国際会議 ICML 2013 で発表)は、ReLU 関数の変種として Leaky ReLU 関数を次の式で定義しています。ここで はユニットへの入力、 は重み、 はその重み付き和です。この記事の活性化関数・シグモイド関数・tanh関数・ReLU関数のページでは、ユニットへの入力を「重み付きの和にバイアスを足した値」として と書いていますが、この論文自身の式はバイアス項を明示せず とだけ書いているため、この節ではその表記のまま紹介します(バイアスを重みベクトルに含めて表す書き方もあり、数学的な違いではありません)。
同じ論文は、通常の ReLU 関数を と書いています。2つの式を比べると、重み付き和が0以下のときに、ReLU 関数は0を出力し、Leaky ReLU 関数は重み付き和の0.01倍を出力する点だけが違います。
この論文によると、Leaky ReLU 関数の狙いは、ユニットが活性化していないときにも小さく0でない勾配を持たせることです。入力が0より小さい範囲での傾きは、ReLU 関数では0、Leaky ReLU 関数では0.01です。入力が正の範囲での傾きは、どちらも1です。
計算例で比べる ReLU 関数との違い
入力の重み付き和を と書き、架空の値 、、、 を2つの関数に入れます。
| 入力 | ReLU 関数の出力 | Leaky ReLU 関数の出力 |
|---|---|---|
のように正の入力では、2つの関数の出力は同じです。 でも、Leaky ReLU 関数は なので、どちらも0を出力します。違いが出るのは や のような負の入力で、ReLU 関数は0に切り捨て、Leaky ReLU 関数は負の小さな値を残します。 のように大きな負の入力でも出力は にとどまり、負の側の出力は入力の100分の1の大きさです。
次に、勾配がどう伝わるかを架空の数値で比べます。学習の途中で、出力側から のユニットへ大きさ2の勾配が届いたとします。ユニットを通って入力側へ伝わる勾配は、届いた勾配にそのユニットの傾きを掛けた値です。
ReLU 関数では勾配が0になり、この入力からはユニットにつながる重みを動かす手がかりが得られません。Leaky ReLU 関数では0.02という小さな勾配が伝わります。同じ勾配2が のユニットに届いた場合は、どちらの関数でも傾きが1なので がそのまま伝わります。
音声認識の実験で報告された結果
マースらの論文は、音声認識の音響モデルで活性化関数を比べています。音響モデルは、音声認識システムの中で音声そのものを扱う部分のモデルです。実験には、300時間分の音声からなる Switchboard という音声認識の課題を使っています。
評価には単語誤り率を使っています。単語誤り率は、音声を文字に起こした結果に含まれる単語の誤りの割合を表す指標で、小さいほど認識の精度が高いことを意味します。
論文が報告している結果は次の2点です。1点目は、ReLU 関数と Leaky ReLU 関数という2種類の整流関数を使ったディープニューラルネットワーク(DNN、層を深く重ねたニューラルネットワーク)が、シグモイド系の活性化関数を使った DNN より、単語誤り率を絶対値で最大2%改善したことです。2点目は、ReLU 関数と Leaky ReLU 関数の性能はほぼ同程度で、学習の収束は Leaky ReLU 関数のほうがやや速かったことです。
この論文の結果を読むときの注意
1つ目の注意は、Leaky ReLU 関数が ReLU 関数より認識の精度を大きく上げたとは報告されていないことです。精度の面では2つの関数はほぼ同程度で、差が見られたのは学習の収束の速さでした。シグモイド系の活性化関数に対する大きな改善は、ReLU 関数と Leaky ReLU 関数の両方に共通する結果です。
2つ目の注意は、実験が音声認識の音響モデルに限られていることです。画像認識など他の課題で同じ結果になるかは、この論文の範囲の外にあります。
3つ目の注意は、係数の0.01がこの論文の式で使われている値だということです。この論文は Leaky ReLU 関数を既存の ReLU 関数の変種として示しており、このページでも、この論文が報告している範囲にとどめて説明しています。
試験で問われること
G検定
- Leaky ReLU 関数は、入力 が正なら をそのまま出力し、0以下なら を出力します。ReLU 関数 と出力が違うのは、入力が0より小さい範囲だけです。
- 入力が0より小さい範囲の傾きは、ReLU 関数では0、Leaky ReLU 関数では0.01です。Leaky ReLU 関数では、この範囲でも誤差逆伝播で0でない小さな勾配が伝わります。入力が正の範囲の傾きは、どちらも1です。
- 数値で確かめると、 のとき ReLU 関数は0、Leaky ReLU 関数は を出力します。 のときは、どちらも5を出力します。
- マース(Andrew L. Maas)らの2013年の論文は、音声認識の音響モデルで、ReLU 関数と Leaky ReLU 関数の性能はほぼ同程度で、学習の収束は Leaky ReLU 関数のほうがやや速かったと報告しています。Leaky ReLU 関数が精度を大きく上げたという報告ではありません。
最終更新日: 2026/09/23