死んだReluニューロンを確認する方法


10

背景:ニューラルネットワークをreluアクティベーションでフィッティングしているときに、予測がほぼ一定になることがあります。これは、ここで述べたように、トレーニング中にreluニューロンが死んでしまったためだと思います。(ニューラルネットワークの「死にかけているReLU」問題とは?

質問:ニューロンが死んでいるかどうかをチェックするために、コード自体にチェックを実装することを望んでいます。その後、必要に応じて、コードをネットワークに適合させることができます。

このように、死んだニューロンをチェックするのに適した基準は何ですか?現在、予測としてのばらつきが少ないかどうかを市町村として確認することを考えています。

それが役立つ場合は、ケラスを使用しています。


tensorboardにバイアスの要約を追加します:tensorflow.org/get_started/summaries_and_tensorboard
Emre

回答:


6

死んだReLUは、ほとんどの場合、その引数値が負であり、勾配が0に留まることを意味します。その時点からどのようにトレーニングしても。トレーニング中に勾配を確認するだけで、ReLUが死んでいるかどうかを確認できます。

実際には、単にリークのあるReLUを使用することもできます。つまり、f(x)= max(0、x)の代わりに、x> 0の場合はf(x)= xを設定し、x <= 0の場合はf(x)= 0.01xを設定します。このようにすると、常にゼロ以外の小さな勾配が可能になり、ユニットがトレーニングで完全に動かなくなることはなくなります。


1

死んだニューロンは、トレーニング中に更新されないニューロンです。グラデーション0。

Kerasでは、特定のデータ行に対して直接勾配抽出を行うことができます。 (別の良い例)

または、ニューロンの重みを抽出して、自分で勾配を計算することもできます
(たとえば、reluの場合、reluへの負の引数-> 0勾配)。

残念ながら、勾配はデータポイント固有です。トレーニングデータのすべての行の勾配が0の場合にのみ、トレーニングエポック中にニューロンがすべてのミニバッチに対して更新されないことを確認できます。

グラディエーションが0の場合、リーキーレルには値がないので、リーキーレルは有用な戦略になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.