ニューラルネットワークの重みを乱数に初期化する必要があるのはなぜですか?


105

私はニューラルネットワークをゼロから構築しようとしています。すべてのAI文献全体で、ネットワークの収束を速くするために、重みを乱数に初期化する必要があるというコンセンサスがあります。

しかし、なぜニューラルネットワークの初期の重みが乱数として初期化されるのでしょうか。

これは「対称性を壊す」ために行われ、これによりニューラルネットワークの学習が速くなることをどこかで読んだことがあります。対称性を壊すことで、学習がどのように速くなりますか?

重みを0に初期化した方がいいでしょうか?そのようにして、重みはそれらの値(正または負にかかわらず)をより速く見つけることができますか?

初期化時に重みが最適値に近いことを期待することとは別に、重みをランダム化する背後にある他の基本的な哲学はありますか?


7
これはCross Validatedに適しているようです。
Sycorax

回答:


140

ここでは対称性を壊すことが不可欠であり、パフォーマンス上の理由からではありません。多層パーセプトロンの最初の2層(入力層と非表示層)を想像してください:

ここに画像の説明を入力してください

順方向伝搬中に、隠れ層の各ユニットが信号を受け取ります。

ここに画像の説明を入力してください

つまり、非表示の各ユニットは、入力の合計に対応する重みを掛けたものを取得します。

ここで、すべての重みを同じ値(たとえば、0または1)に初期化するとします。この場合、各非表示のユニットはまったく同じ信号を取得します。たとえば、すべての重みが1に初期化されている場合、各ユニットは入力(および出力sigmoid(sum(inputs)))の合計に等しい信号を取得します。すべての重みがゼロである場合、これはさらに悪いことですが、すべての非表示のユニットはゼロ信号を取得します。入力が何であっても、すべての重みが同じである場合、非表示レイヤーのすべての単位も同じになります

これは対称性の主な問題であり、重みをランダムに(または少なくとも、異なる値で)初期化する必要がある理由です。この問題は、each-to-each接続を使用するすべてのアーキテクチャに影響することに注意してください。


1
素晴らしい説明。しかし、なぜsymmetrynot という単語を使用するのcorrelationですか?誰が最初にこの単語を使用しましたか?
nn0p

1
@ nn0p:相関は、2つの信号が同様の方向に変化することを意味しますが、常にではなく、正確に同じ大きさではありません。少なくとも私が知る限り、対称性には正式な定義はありません。ここでは、ノード間のすべてのリンクでまったく同じ信号を表すために使用されているため、トレーニングは役に立ちません。
ffriend

@ffriendは、ドロップアウトを使用する場合よりもランダム化は必要ありません。私が間違っている?
emanuele

1
@emanuele Dropout自体はランダム化の一種なので、そうです、動作するはずです。それでも、各反復で「ドロップアウト」されないすべての接続は引き続き対称更新を取得するため、学習はかなり遅くなるため、実際のネットワークではランダム初期化を使用することをお勧めします。
ffriend

これはforwardpropをうまく説明しますが、backpropはどうですか?
ツェル

74

類推:

私はそれが良いアナロジーであることを望みます。私はそれをできるだけ簡単に説明しようとしました。

誰かがあなたをヘリコプターから未知の山の頂上に落とし、そこに閉じ込められたと想像してください。どこもかぶっています。あなたが知っている唯一のことは、どういうわけか海面に降りる必要があるということです。可能な限り低いポイントに降りるには、どの方向に進むべきですか?

あなたが海面までの道を見つけることができなかったので、ヘリコプターが再びあなたを連れて行き、あなたを同じ山頂の位置に落とすでしょう。自分を同じ開始位置に「初期化」しているので、もう一度同じ方向に進む必要があります

しかし、ヘリコプターがあなたを山のどこかにランダムに降ろすたびに、異なる方向と手順を踏みます。だから、そこになり、より良いチャンスあなたが可能な限り低い地点に到達するためのために。

これは、対称性を破ることが意味するものです。初期化は非対称的異なる)なので、同じ問題の異なる解決策を見つけることができます。

このアナロジーでは、着陸する場所はウェイトです。したがって、重みが異なると、最も低い(または低い)ポイントに到達する可能性が高くなります。

また、システムのエントロピーが増加するため、システムはより低いポイント(ローカルまたはグローバル最小値)を見つけるのに役立つより多くの情報を作成できます。

ここに画像の説明を入力してください


10
ヘリコプターがあなたを山のどこかでランダムに数回落としているようですが、ディープラーニングでは、重みをランダムに1回だけ初期化します。
YuFeng Shen

1
これは本当に直感的な説明です。また、NNが凸型になることはほとんどないので、ランダム化は理想的な方法です。ただし、凸型の損失関数がある場合は、当然、重みを何に初期化するかは関係ありません。
Kingz

4
これは良い例えですが、あなたとあなたの友達が同じ場所または別の場所にいる別の人のどちらかで山(つまり、ネットワーク内のノード)に落とされていると仮定する方が理にかなっています。そして、あなたはすべて互いに通信できると仮定します。コミュニケーションのある別のスポットは、より速い降下を可能にします。同じ場所とは、誰もが同じ道をたどる可能性が高いことを意味します。
ahmedhosny

26

答えは非常に簡単です。基本的なトレーニングアルゴリズムは本質的に貪欲です-彼らは大域的な最適を見つけるのではなく、「最も近い」ローカルな解決策を見つけます。その結果、固定された初期化から開始すると、ソリューションが特定の重みのセットに偏ります。ランダムに(場合によっては何回も)実行すると、エラーサーフェスの奇妙な部分でスタックする可能性がはるかに低くなります。

同じ議論が他のアルゴリズムにも当てはまり、全体最適(k-means、EMなど)を見つけることができず、グローバル最適化手法(SVMのSMOアルゴリズムなど)には当てはまりません。


だから、ランダム化するだけで極小に陥らないことが保証されていませんか?しかし、ランダム化された重みが異なる複数の実行の後、グローバルな最小値を取得する可能性がありますか?
Shayan RC、2013

1
保証はありませんが、複数の初期化を行うと、少なくとも真の最適状態に近づくことができます。
lejlot 2013年

重みを初期化するための値を設定するための標準の式またはルールはありますか?シグモイド関数が使用されるフィードフォワード、マルチレイヤー、バックプロパゲーションニューラルネットワークがあります。
lkkkk 2014年

親指のいくつかのルールはS.Haykinブック「ニューラルネットワーク」である
lejlot

3
ほとんどの人は異なるランダム初期化でトレーニングを何度も再起動せず、ネットがローカルの最適条件に到達できるため、これがランダム初期化を使用する理由ではありません。
cesarsalgado

4

あなたが述べたように、重要なポイントは対称性を壊すことです。すべての重みをゼロに初期化すると、ニューラルネットワークのすべての非表示のニューロン(ユニット)がまったく同じ計算を行うためです。異なる関数を計算するために異なる隠しユニットが欲しいので、これは私たちが望むものではありません。ただし、すべてを同じ値に初期化する場合、これは不可能です。


2
  1. 重みを0に初期化した方がいいでしょうか?そのようにして、重みはそれらの値(正または負にかかわらず)をより速く見つけることができますか?

  2. 対称性を壊すことで、学習がどのように速くなりますか?

すべての重みをゼロに初期化すると、すべての層のすべてのニューロンが同じ計算を実行し、同じ出力が得られ、ディープネット全体が役に立たなくなります。重みがゼロの場合、ディープネット全体の複雑度は単一のニューロンの複雑度と同じになり、予測はランダムよりも優れています。

同じ入力に接続されている非表示層に並んでいるノードは、学習アルゴリズムが重みを更新するために異なる重みを持っている必要があります。

重みをゼロ以外(ただし、0.1などの0に近い値)にすることで、アルゴリズムは次の反復で重みを学習し、スタックしなくなります。このようにして、対称性の破れが起こります。

  1. 初期化時に重みが最適値に近いことを期待することとは別に、重みをランダム化する背後にある他の基本的な哲学はありますか?

確率的勾配降下法などの確率的最適化アルゴリズムは、検索の開始点の選択と検索の進行にランダム性を使用します。

ニューラルネットワークの検索または学習の進行は、収束と呼ばれます。準最適解または局所最適値を発見すると、収束が早まります。

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])

重みは依然としてランダムですが、前のニューロン層のサイズに応じて範囲が異なります。

要約すると、ゼロ以外のランダムな重みは私たちを助けます

  1. ローカルオプティマから抜け出す
  2. 対称性を破る
  3. さらなる反復でグローバルオプティマに到達する

1

ランダムな値での初期化に加えて、初期の重みは大きな値で開始しないでください。これは、隠れ層と出力層でtanh関数とシグモイド関数をよく使用するためです。2つの関数のグラフを見ると、最初の反復での順方向伝播の結果はより高い値になり、これらの値はシグモイド関数とtanh関数の、導関数をゼロに収束する場所に対応します。これは、学習プロセスのコールドスタートと学習時間の増加につながります。その結果、ランダムに重みを開始する場合、これらの値に「0.01」や「0.001」などの値を掛けることで、これらの問題を回避できます。


1

まず、一部のアルゴリズムは、初期の重みがゼロであっても収束します。簡単な例は、線形パーセプトロンネットワークです。もちろん、多くの学習ネットワークはランダムな初期重み付けを必要とします(ただし、これは最速かつ最良の結果を保証するものではありません)答え)。

ニューラルネットワークは、バックプロパゲーションを使用して重みを学習および更新します。問題は、この方法では、重みがグローバル最適ではなくローカル最適(ローカル最小コスト/損失)に収束することです。

ランダムな重み付けは、ネットワークが利用可能なスペースの各方向にチャンスを取り、徐々に改善して、より良い答えに到達し、1つの方向または答えに限定されないようにします。

[下の画像は、収束の1次元の例を示しています。最初の場所を指定すると、ローカル最適化は達成されますが、グローバル最適化は達成されません。より高い次元では、ランダムな重み付けにより、適切な場所に配置される可能性が高まるか、より適切に開始される可能性が高まるため、重みがより良い値に収束します。] [1]

[1]: https //i.stack.imgur.com/2dioT.png [Kalhor、A.(2020)。分類および回帰NN。講義。]

最も単純なケースでは、新しい重みは次のとおりです。

W_new = W_old + D_loss

ここでは、コスト関数の勾配が前の重みに追加され、新しい重みが取得されます。以前の重みがすべて同じである場合、次のステップですべての重みが等しくなる可能性があります。結果として、この場合、幾何学的な観点から、ニューラルネットワークは1方向に傾いており、すべての重みは同じです。ただし、重みが異なる場合は、重みを異なる量で更新することができます。(各ウェイトが結果に与える影響因子に応じて、コストとウェイトの更新に影響します。そのため、初期のランダムなウェイトの小さなエラーでも解決できます)。

これは非常に単純な例ですが、ランダムな重み付けの初期化が学習に与える影響を示しています。これにより、ニューラルネットワークは片側に行くのではなく、別のスペースに行くことができます。その結果、学習の過程で、これらのスペースの最高のところに行きます


0

より数学的にしましょう。実際、私が答える理由は、このビットが他の答えに欠けていることに気付いたからです。2つのレイヤーがあるとします。逆伝播アルゴリズムを見ると、

dZ2 = A2-Y

dW2 =(1 / m)* dZ2 * A2.T

db2は無視してみましょう。(申し訳ありませんが申し訳ありません;))

dZ1 = W2.T * dZ2。* g1 '(Z1)

...

あなたが見る問題は太字になっています。dZ1の計算(dW1の計算に必要)にはW2があり、これは0です。重みを0を超える値に変更する機会はなく、変更することもありません。したがって、本質的に、ニューラルネットワークは何も学習しません。ロジスティック回帰(単一ユニット)よりも悪いと思います。ロジスティック回帰の場合、Xのおかげで異なる入力を取得するため、より多くの反復で学習します。この場合、他の層は常に同じ出力を提供するため、まったく学習しません。


0

私は1つのことを学びました:重みをゼロに初期化した場合、同じレイヤーのアクティベーションユニットが同じになることは明らかです。つまり、それらは同じ値を持つことになります。バックブローする場合、勾配dWのすべての行も同じであることがわかります。したがって、勾配降下法の更新後、重み行列Wのすべての行は同じです。一般に、すべての重みをゼロに初期化すると、ネットワークの対称性が失われます。つまり、各層のすべてのニューロンは同じことを学習しn[l]=1n[l]=1、すべての層でニューラルネットワークをトレーニングすることもできます。ネットワークは、ロジスティック回帰などの線形分類器よりも強力ではありません。アンドリューンコース:

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