【深層学習】Dying ReLU問題とReLU(Rectified Linear Unit)について

はるか
はるか
ReLU関数は、0より大きいとそのまま値を出すだけ。

1. ReLU関数の特徴

まず、ReLU関数は以下のように定義されます。

\[ f(x) = \max(0, x) \]

この関数は、入力が正(0より大きい)であればその値を出力し、負であれば0を出力します。これにより、ニューラルネットワークの学習を高速化し、勾配消失問題(勾配がどんどん小さくなり、最適化が進まない問題)を回避しやすくするという利点があります。

2. Dying ReLU問題とは?

「Dying ReLU」問題とは、ディープラーニングにおいてよく使用される「ReLU(Rectified Linear Unit)」という活性化関数が引き起こす問題のことです。ReLUはそのシンプルさと計算の効率から、数多くのニューラルネットワークで利用されています。しかし、学習の過程で一部のニューロンが全く活動しなくなり、以降もそのニューロンが出力ゼロのまま固定されて、まったく信号が伝播されないということがあるのです。これが「Dying ReLU問題」です。特に学習率が高いと、この問題が発生しやすくなります。

ふゅか
ふゅか
でも、このReLU関数、「Dying ReLU問題」が起きるんだよね。知ってる?
はるか
はるか
うん。学習してるうちに一部のニューロンがゼロで固定される…ってやつ。困る。

2.1. Leaky ReLU(リーキ・リル)

Dying ReLU問題を解決するためには、いくつかの方法が提案されています。今回はLeaky ReLUについて紹介します。

ReLUを改良した活性化関数で、負の入力に対しても小さな値を返すようにします。例えば、負の入力に対して0.01倍の値を返すことで、完全にゼロにはならず、ニューロンが信号を伝えることができるようにします。数学的には次のようになります。

\[ f(x) = \begin{cases} x &( x\geq 0 ) \\ \alpha x & ( x<0 ) \end{cases} \]
はるか
はるか
様々な手法が考案されてる。例えば、Leaky ReLU。負の入力にも少し値を返す。

3. 関連した記事

PR