CNNザビエル重みの初期化


14

一部のチュートリアルで、「Xavier」の重みの初期化(論文:ディープフィードフォワードニューラルネットワークのトレーニングの難しさを理解する)がニューラルネットワークの重みを初期化する効率的な方法であると述べたことがわかりました。

完全に接続されたレイヤーの場合、これらのチュートリアルには経験則がありました。

Var(W)=2nin+nout,simpler alternative:Var(W)=1nin

ここで、は、正規分布で初期化されたレイヤーの重みの分散で、、は、親と現在のレイヤーのニューロンの量です。Var(W)ninnout

畳み込み層にも同様の経験則がありますか?

畳み込み層の重みを初期化するのに最適な方法を見つけるのに苦労しています。たとえば、重みの形状がであり(5, 5, 3, 8)、カーネルサイズがであるレイヤーでは5x5、3つの入力チャネル(RGB入力)をフィルタリングし、8特徴マップを作成します... 3入力ニューロンの量と見なされますか?またはむしろ75 = 5*5*3、入力は5x5各カラーチャネルのパッチなので、

問題を明確にする具体的な回答か、重みの適切な初期化を見つけ、できればソースをリンクする一般的なプロセスを説明する、より一般的な回答の両方を受け入れます。

回答:


13

この場合、ニューロンの量はになります5*5*3

特に畳み込みレイヤーに役立ちます。多くの場合、区間均一分布も機能します。 [c/(in+out),c/(in+out)]

ほとんどすべてのニューラルネットワークライブラリのオプションとして実装されています。ここに、Xavier Glorotの初期化のKerasの実装のソースコードがあります。


1
うーん..何か他にアドバイスはありますか?たとえば、私のネットワークの1つには、480.000のニューロンを持つ完全に接続されたレイヤーがあります。Xavierの初期化を適用すると、分散が約なり、ネットワークはいくつかの奇妙な干渉パターンを学習します。それはある極小値に落ちると思います。つまり、重みは本当に小さいということです。私はたいてい、インターバルで何かを使って合理的な学習を経験します。その上で何かアイデアはありますか?Xavierの初期化は本当に大きなレイヤーには適用されないと思いますか?1106[0.1,0.01]
daniel451 2016

@ascenator申し訳ありませんが、トレーニング中に重みがどのように変化するかについてはよくわかりません。ただし、学習率が高すぎたり小さすぎたりすると、奇妙な結果になる場合があります。
dontloo

多くのDLライブラリは、乱数生成メソッドのパラメータとして、分散項ではなく標準偏差項を使用します。したがって、分散の場合、結果を説明する可能性がある標準偏差が必要になります。106103
eric.mitchell 2017

0

私はここでエリックの答えを2番目にします。また、その用語だけでなく、用語の「sqrt」も使用します。それにもかかわらず、ネットの深いシグモイドを「RelU」出力に接続すると、トレーニングが停止する可能性があります。これは、シグモイドの勾配が0に下がり、学習が行われない、制限のない「Relu」出力が原因です。したがって、この場合は、ネットに「scaleDown」係数があり、初期化偏差をその係数で重み付けします。学習が行われるまで、経験的に重みを調整し続けます。見つける簡単な方法は、1回の反復の直後にモデルを保存し、RELU出力(S字型に接続されている)を確認することです。このRELU出力が妥当になるまで重みを調整し続けます。そして、それらの重みをトレーニングに使用します。良いスタートです。数回繰り返しても崩壊する場合は、安定するまで少しずつ重さを量ります。私が使ったハックだけです。それは私のセットアップのために私のために働いた。だから私の経験を共有します。さまざまなセットアップでさまざまなことが機能します。

とても幸運!

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