重みを0に初期化した方がいいでしょうか?そのようにして、重みはそれらの値(正または負にかかわらず)をより速く見つけることができますか?
対称性を壊すことで、学習がどのように速くなりますか?
すべての重みをゼロに初期化すると、すべての層のすべてのニューロンが同じ計算を実行し、同じ出力が得られ、ディープネット全体が役に立たなくなります。重みがゼロの場合、ディープネット全体の複雑度は単一のニューロンの複雑度と同じになり、予測はランダムよりも優れています。
同じ入力に接続されている非表示層に並んでいるノードは、学習アルゴリズムが重みを更新するために異なる重みを持っている必要があります。
重みをゼロ以外(ただし、0.1などの0に近い値)にすることで、アルゴリズムは次の反復で重みを学習し、スタックしなくなります。このようにして、対称性の破れが起こります。
- 初期化時に重みが最適値に近いことを期待することとは別に、重みをランダム化する背後にある他の基本的な哲学はありますか?
確率的勾配降下法などの確率的最適化アルゴリズムは、検索の開始点の選択と検索の進行にランダム性を使用します。
ニューラルネットワークの検索または学習の進行は、収束と呼ばれます。準最適解または局所最適値を発見すると、収束が早まります。
1つのローカルオプティマに依存する代わりに、異なるランダムな重みでアルゴリズムを複数回実行する場合、ローカルオプティマで動けなくなることなくグローバルオプティマを見つける可能性が最も高くなります。
2015年以降、機械学習研究の進歩により、ランダム初期化の代わりにHe-et-al Initializatio nが導入されました
w=np.random.randn(layer_size[l],layer_size[l-1])*np.sqrt(2/layer_size[l-1])
重みは依然としてランダムですが、前のニューロン層のサイズに応じて範囲が異なります。
要約すると、ゼロ以外のランダムな重みは私たちを助けます
- ローカルオプティマから抜け出す
- 対称性を破る
- さらなる反復でグローバルオプティマに到達する