分散スケーリング初期化子とxavier初期化子の違いは何ですか?


20

TensorflowのResNetの実装では、分散スケーリングイニシャライザーを使用していることがわかります。xavierイニシャライザーも一般的です。私はこれについてあまり経験がありませんが、実際にはどちらが良いですか?


ザビエルの初期化のより詳細な説明については、このリンクを訪問することができます:prateekvjoshi.com/2016/03/29/...それはその背後にあるザビエルの初期化と直感の適切な導出が含まれています。
ヒマンシュシン

回答:


31

歴史的視点

Xavier GlorotとYoshua Bengioが「ディープフィードフォワードニューラルネットワークのトレーニングの難しさを理解する」で最初に提案したXavier 初期化は、レイヤーの出力の分散をその入力の分散と等しくしようとする重み初期化手法です。 。このアイデアは実際には非常に有用であることが判明しました。当然、この初期化はレイヤーのアクティベーション機能に依存します。GlorotとBengioは、彼らの論文で、ロジスティックS字型アクティベーション関数を検討しました。これは、現時点ではデフォルトの選択でした。

その後、シグモイド活性化はReLuを上回りました。これは、勾配の消失/爆発の問題を解決できるためです。その結果、この新しいアクティベーション関数に同じアイデア(アクティベーションの分散のバランス)を適用した新しい初期化手法が登場しました。Kaiming Heにより「整流器の奥深くへの探求:ImageNet分類での人間レベルのパフォーマンスの向上」で提案され、現在ではHe初期化と呼ばれています

テンソルフローでは、Heの初期化はvariance_scaling_initializer()関数(実際にはより一般的な初期化子ですが、デフォルトではHeの初期化を実行します)で実装されますが、Xavierの初期化子は論理的にxavier_initializer()です。

概要

要約すると、機械学習の実践者の主な違いは次のとおりです。

  • ReLuアクティベーションを使用したレイヤーでは、初期化がよりうまく機能します。
  • Xavierの初期化は、シグモイドアクティベーションを使用したレイヤーでより適切に機能します。

pytorchではどの初期化が使用されていますか?アクティベーションに依存しますか?
チャーリーパーカー

2
こんにちは、tanh()アクティベーション機能については、どの初期化機能を使用する必要があります。
GoingMyWay

@GoingMyWayは、これに応じてpytorch.org/docs/stable/...、あなたはゲイン5/3で彼を初期化使用することができます。それがどこから来たのかわからない。
ポドゴルスキー

3

分散スケーリングは、Xavierの一般化です:http : //tflearn.org/initializations/。どちらも、グラデーションのスケールがすべてのレイヤーで類似しているという原則に基づいて動作します。Xavierは、時間の実験的テストに耐えているため、おそらくより安全に使用できます。分散スケーリング用の独自のパラメーターを選択しようとすると、トレーニングが阻害されたり、ネットワークがまったく収益を得られなくなる可能性があります。


ありがとう。分散のために独自のパラメーターを選択することはどういう意味ですか?
花道

TF実装では、これは因子パラメーター(入力分散と出力分散の比率を決定します)
-liangjy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.