【深層学習】活性化関数Parametric ReLU (PReLU)の意味と性質について

はるか
はるか
Parametric ReLUって、ReLUの改良版。
ふゅか
ふゅか
ReLUの「Dying ReLU問題」を解決するために作られたの!負の値にも少し出力を持たせて、ニューロンが死なないようにしてるんだよね。
はるか
はるか
PReLUは負の出力を完全に0にしない。学習中に負の傾きを調整できるのがポイント。

1. Parametric ReLU (PReLU)とは?

Parametric ReLU(パラメトリックReLU、PReLU)は、活性化関数の一つです。ReLU(Rectified Linear Unit)は広く使用されている活性化関数の一つですが、PReLUはReLUの改良版となっています。PReLUは、ReLUが抱える「Dying ReLU問題」を解決するための工夫がされており、より柔軟に学習できる特性を持っています。

2. PReLUの基本的な仕組み

2.1. ReLU関数

まず、一般的なReLU関数は次のように定義されます。

f(x)={xx>00x0 f(x) = \begin{cases} x & x > 0 \\ 0 & x \leq 0 \end{cases}

この関数では、入力値 xx が0より大きい場合、そのままの値を出力しますが、0以下のときは出力が常に0になります。これはシンプルで計算が効率的ですが、負の値を全て0にしてしまうため、ある層の多くのニューロンが「死んでしまう」ことが起きる可能性があります。これを「Dying ReLU問題」と言い、学習が進まなくなる場合があります。

ふゅか
ふゅか
ReLUは、入力が正の時はそのままの値を出力する関数だよね。
はるか
はるか
そう。負の入力は0にするだけ。

2.2. PReLU

これに対し、PReLUでは、負の値に対してもある程度の出力を許容するように設計されています。PReLUの数式は以下の通りです。

f(x)={xx>0axx0 f(x) = \begin{cases} x & x > 0 \\ a x & x \leq 0 \end{cases}

ここで、a a 学習可能なパラメータであり、通常は小さな値(例:0.01)で初期化されます。学習を通じてこの a a の値が最適化され、モデルに最も適した負の傾きが得られます。これにより、モデルは負の値も考慮した学習が可能となり、柔軟性が増します。

論文「Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification」では、Parametric ReLU (PReLU) を活性化関数として使用することにより、ImageNet 2012分類データセットでの性能が向上することが報告されています。

はるか
はるか
負の値にも少し出力を残すように設計されてる。
ふゅか
ふゅか
PReLUでは「a」というパラメータで、負の傾きを調整できるんだよ。学習で最適な値に変わるようにするの!

3. PReLUの微分

PReLUは x=0 x = 0 の点で微分可能ではありません。しかし、ニューラルネットワークなどの応用では、実装上の単純化やアルゴリズム上の理由から、あえて「形式的に」以下のように記述します。

f(x)={1(x0)a(x<0) f'(x) = \begin{cases} 1 & ( x \geq 0 )\\ a & ( x < 0) \end{cases}

4. PReLUとLeaky ReLU

4.1. Leaky ReLU

Leaky ReLUはPReLUと同様にReLUの改良版として提案され、負の入力に対しても一定の傾きを持たせた活性化関数となっています。Leaky ReLUの数式は次の通りです.

f(x)={xx>0αxx0 f(x) = \begin{cases} x & x > 0 \\ \alpha x & x \leq 0 \end{cases}

ここで、α\alpha定数固定されています。通常は小さな値(例:0.01)に設定されます。このα\alphaにより、負の入力でも少量の出力があり、ニューロンが「死んでしまう」ことを防ぐ設計となっています。

  • α\alphaは固定値:Leaky ReLUでは、この傾きの値はあらかじめ決められており、学習によって変化することはありません。多くの場合、α=0.01\alpha = 0.01が使用されます。

4.2. 違い

Leaky ReLUとParametric ReLU(PReLU)はどちらも、ReLUが抱える「Dying ReLU問題」を改善するために開発された活性化関数です。ですが、PReLUは学習するパラメータがあるという点で違います。

はるか
はるか
うん、Leaky ReLUは傾きが固定されてるんだよね。
ふゅか
ふゅか
そうそう!それで、PReLUは学習中に最適化する点で違うんだよね!

5. 関連した記事

PR