ニューラルネットワークの「死にゆくReLU」問題とは何ですか?


119

視覚認識のための畳み込みニューラルネットワークに関するスタンフォードのコースノートを参照すると、次の段落が述べられています。

「残念ながら、ReLUユニットはトレーニング中に壊れやすく、「死ぬ」可能性があります。たとえば、ReLUニューロンを流れる大きな勾配により、ニューロンがデータポイントで再びアクティブにならないように重みが更新される可能性があります。つまり、ReLUユニットは、データマニホルドからノックオフされる可能性があるため、トレーニング中に不可逆的に死ぬ可能性があります。学習率の設定が高すぎると、ネットワークの%が「死んでいる」(つまり、トレーニングデータセット全体でアクティブにならないニューロン)場合があります。学習率を適切に設定すれば、これはあまり問題になりません。

ここでのニューロンの死はどういう意味ですか?

簡単な言葉で直感的な説明をお願いします。


2
「死んだニューロン」に関する科学記事への参照を見つけることができますか?これはグーグルの試みの最初の結果であるため、この質問が参照付きで編集された場合は素晴らしいでしょう。
マレクシデデク

この問題を解決するための正則化によってバイアスを防ぐことができますか?
レン

3
重み<= 0の各エポックで新しいランダムな(正規分布)値を与えることで、死んだreluニューロンを再活性化することができました。これがフェーズ遷移と呼ばれるものかどうかわからない)より高い学習率を使用できるようになり、全体的な精度が向上しました(線形回帰でのみテストされています)。実装は本当に簡単です。
ボリ

1
@boli、ここで実装を共有できますか?
anu

回答:


121

「デッド」ReLUは、どの入力に対しても常に同じ値(発生時はゼロですが、それは重要ではありません)を出力します。おそらく、これはその重みの大きな負のバイアス項を学習することで達成されます。

言い換えると、それは、入力を区別する際に役割をとらないことを意味します。分類のために、これをすべての可能な入力データの外側の決定面として視覚化できます。

ReLUがこの状態になると、0での関数勾配も0になるため、回復する可能性は低くなります。そのため、勾配降下学習は重みを変更しません。(y=0.01xx <0の場合)負の入力に対して小さな正の勾配を持つ「リーク」ReLUは、この問題に対処して回復する機会を与える1つの試みです。

S字型ニューロンとtanhニューロンは、値が飽和すると同様の問題に悩まされる可能性がありますが、少なくとも小さな勾配が常にあり、長期的に回復することができます。


7
良いコメントであり、より良い方法でその問題を追加するのに役立つ指数線形単位(ELU)に言及する価値もあります:arxiv.org/abs/1511.07289
padura

14
@alex:バイアスは精度にとって非常に重要だからです。バイアスを取り除くことは、すべての決定面が原点を通過しなければならないということとほとんど同じです-いくつかの例外を除いて、これは悪い選択です。実際、ニューラルネットワークまたは関連モデル(線形回帰やロジスティック回帰など)のバイアス項を取り除くと、通常、モデルにバイアスがかかります!これは、アンダーフィットとオーバーフィットの両方を同時に行うモデルになる可能性がある数少ない方法の1つです。、、、
Neil Slater

1
@Alex:ReLUに小さな正のバイアスを追加することは一般的だと思います。それが「死にゆくReLU問題」に役立つかどうかはわかりません-勾配値は数値的にあまり変化しません(ReLUの勾配は1または0であり、オーバーシュートする可能性があるのは1であるためです)開始バイアスが小さいと、ほとんど違いがないように見えます)。ほとんどの場合、最初の学習に小さな後押しを加えるのは単なるトリックだと思いますが、それはより良いスタートを切り、一般的にはより低い勾配をより早く得ることで役立つかもしれません。
ニールスレーター

1
@max:あなたは私の答えの「あらゆる入力のための」部分が欠落しています。これらの重みへのすべてのパスカットされるため、フィードフォワードネットワークの「デッド」ニューロンに関連付けられた重みへの勾配は流れません。勾配がそのReLUユニットに供給する重みのサブセットに流れる代替経路はありません。ReLUをCNNなどで表示したり、ウェイトを共有したりすると、フィーチャマップ内のすべての場所を一度にゼロにする必要があります。ただし、「任意の入力用」の別のインスタンスとしてそれを表示します。
ニールスレーター

1
@anu:勾配降下法による。大きな誤差値によって引き起こされる大きな正の勾配により、バイアス項の単一ステップがニューロンを「殺す」のに十分な大きさになり、将来の入力の状​​態(重みとバイアス)に達する可能性がありますReLU関数に0以上に上昇したことがない
ニール・スレーター

102

ReLU(Rectified Linear Unit)がどのように見えるかを確認しましょう。

xn

zn=i=0kwiain
wiainxnReLU=max(0,zn)

非常に単純なエラー測定を想定

error=ReLUy

errorzn=δn={1zn00zn<0
wj
error=errorwj=errorzn×znwj=δn×ajn={ajnzn00zn<0

=xn

xnx

zn<0

ReLU=max(0.1x,x)ここに画像の説明を入力してください


整流器への入力の式でバイアス項を忘れていませんか?
トム・ヘイル

私は、すべてのレイヤーでa_0 = 1であり、w_0がバイアスであると仮定する教科書の表記法に従ったと思います。バイアスは重要ではありませんので、とにかくそれを省略する方が良いでしょう
MohamedEzz

@MohamedEzz、私はあなたのポイントを理解していませんでしたWhat if, for the input 𝑥𝑛, the current weights put the ReLU on the left flat side while it optimally should be on the right side for this particular input ?、入力が負の場合、勾配は0になりますか?この場合に最適なものは何ですか?あなたはそれを理解するのを手伝ってもらえますか?
ANU

1
最適とは、ネットワークがこの入力に対してより良い予測を行うために、ReLUが正の値を与えるように重みを調整する必要がある場合、勾配が0であるためにこの調整を行うことができないことを意味しました平らな面に。
MohamedEzz

すばらしい答え。ありがとう
デビッド・レファエリ

13

ReLUニューロンはゼロを出力し、すべての負の入力に対してゼロ導関数を持ちます。したがって、ネットワーク内の重みが常にReLUニューロンへの負の入力につながる場合、そのニューロンはネットワークのトレーニングに効果的に寄与していません。数学的には、そのニューロンからの重みの更新に対する勾配の寄与は常にゼロです(詳細については、「数学の付録」を参照してください)。

L(W)LLWL

一般に、何が起こるかは、情報がネットワークをどのように流れるかに依存します。トレーニングが進むにつれて、ニューロンが生成する値がドリフトし、重みがそれらの一部を通るすべてのデータフローを殺すことが可能になることが想像できます。(ただし、ネットワークの初期段階で重みが更新されるため、これらの好ましくない構成が残る場合があります!)この問題は、重みの初期化(この問題の原因となる可能性もあります)およびデータフローとの関係に関するブログ投稿で検討しました。ここでの私のポイントは、その記事のプロットで説明できると思います。

異なる初期化戦略を使用したReLU MLPのアクティベーション

プロットは、異なる初期化戦略でネットワークを1回通過した後、ReLUアクティベーションを使用した5層マルチレイヤーパーセプトロンのアクティベーションを表示します。重みの構成によっては、ネットワークの出力が停止することがわかります。

数学的な付録

Lxj(i)jif(s)=max(0,s)sj(i)(i+1)i(i+1)

Lwjk(i)=Lxk(i+1)xk(i+1)wjk(i).

右側の最初の項は再帰的に計算できます。右側の2番目の用語は、重みを直接含む唯一の場所であり、次のように分類できます。wjk(i)

xk(i+1)wjk(i)=f(sj(i))sj(i)sj(i)wjk(i)=f(sj(i))xj(i).

これから、出力が常に負の場合、ニューロンにつながる重みが更新されず、ニューロンが学習に寄与しないことがわかります。


素晴らしい説明!Therefore, if your inputs are on roughly the same scale, a large step in the direction of the gradient can leave you with weights that give similar inputs which can end up being negative.、入力が正規化されている場合に重みがどのように負になっているのかを理解してもらえますか?
anu

重み更新@anuです使用すると、大規模な選択、この場合には意味大きなステップ、取るので、もし、、そして場合肯定的である、そして、あなたがいることがわかりますなるかもしれません負。バイアスを大きな負の値に更新する場合、これは特に悪いです。λ Dワットワットwλdwλdww
ジョンソン

@JohnsonJia、私はそれを手に入れました:)、もう1つの明確化が必要です、なぜ負の貢献は重量とバイアスの両方にある可能性があるため、重量に比べてバイアスの場合に特に悪いのですか?間違っている場合は私を修正しますか?
anu

バイアスは入力によって変更されないため、、したがってが非常に負の場合、はすべての値に対して負のままである場合があります。のB ZのXz=wx+bbzx
ジョンソン

5

より具体的に言えば、ReLUのローカル勾配()は逆伝播のために逆流する勾配に乗算されますが、更新された勾配の結果は大きな負の値になる可能性があります(流れる勾配がbackは大きな負の数です)。1

このような大きな負の更新勾配は、学習率が比較的大きいときに大きな負の生成します。そのため、このニューロンで発生する更新を抑制します。壊れた」。ワットIwiwi


4

「Dying ReLU」は、トレーニングセットのデータに対して0を出力するニューロンを指します。これは、ニューロンの重み * 入力の合計(アクティベーションとも呼ばれる)がすべての入力パターンで<= 0になるために発生します。これにより、ReLUは0を出力します。この場合、ReLUの導関数は0であるため、重みの更新は行われず、ニューロンは0の出力でスタックします。

注意事項:

  1. ReLUが死んでも、テスト時にニューロンの出力がゼロのままになるという意味ではありません。分布の違いに応じて、この場合もそうでない場合もあります。
  2. 死ぬReLUは永久に死んでいません。新しいトレーニングデータを追加するか、新しいトレーニングに事前トレーニングモデルを使用すると、これらのニューロン元に戻る可能性があります。
  3. 技術的にDying ReLUは、すべてのトレーニングデータに対して0を出力する必要はありません。データによってはゼロ以外の値を出力する場合がありますが、エポックの数では重みを大幅に移動するには不十分です。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.