ニューラルネットワークの適切な初期重みとは何ですか?


68

聞いたところでは、ニューラルネットワークの初期重みを範囲から選択するのは良い考えだと思います。ここでは特定のニューロンへの入力の数。セットは正規化されていると想定されます-平均0、分散1(これが重要かどうかわからない)。d(1d,1d)d

なぜこれが良い考えですか?


初期化手法の概要については、修士論文、ページ81を参照してください
マーティントーマ

回答:


47

ロジスティックニューロンを使用しており、勾配降下法/逆伝播法でトレーニングしていると仮定します。

ロジスティック関数は、大きな正または負の入力に対してほぼ平坦です。入力がの微分は約ですが、の微分は約です。これは、ロジスティックニューロンの入力が場合、与えられたトレーニング信号に対して、ニューロンは入力が場合の約倍遅く学習することを意味します。1 / 10 10 1 / 22000 10 2200 221/10101/220001022002

ニューロンにすばやく学習させるには、(クロスエントロピー損失関数などを使用して)巨大なトレーニング信号を生成するか、導関数を大きくする必要があります。導関数を大きくするには、範囲入力を頻繁に取得するように初期重みを設定します。[4,4]

あなたが与える最初の重みは、機能する場合と機能しない場合があります。入力がどのように正規化されるかによります。入力が平均および標準偏差を持つように正規化されている場合、均一な重みを持つ項のランダムな合計は、平均および分散を持ち、に依存しません。外で合計を得る可能性はわずかです。つまり、を増やしても、ニューロンが飽和状態にならないようにして、学習しないようにします。1 d 101d01(1d,1d)0次元[-44]D13d[4,4]d

正規化されていない入力では、これらの重みは飽和を回避するのに効果的ではない場合があります。


1
したがって、基本的には、少なくともデータの正規化を常に検討する必要があります。標準偏差が1/3になる理由と、入力合計の確率が範囲<-4,4>からどれだけ小さいかを説明できますか?
エルメス

1
これを意味するいくつかの基本的な分散特性がありますとが独立している場合、およびとは独立しており、平均を持ち、です。Y Var X + Y = Var X + Var Y X Y 0 Var X Y = Var X Var Y XYVar(X+Y)=Var(X)+Var(Y)XY0Var(XY)=Var(X)Var(Y)
ダグラスザーレ

1
チェビシェフ不等式を使用して、ランダム変数が平均から少なくとも標準偏差離れている確率を推定できます。実際にはこれはシャープではありませんが、正確な結果は分布に依存します。12
ダグラスザレ

ちなみに、私は誤算しました。分散はため、標準偏差はです。1313
ダグラスザーレ

1
「ロジスティック関数は、大きな正または負の入力に対してほぼフラットです。入力の導関数は...」関連する主題は、ロジスティック回帰のコスト関数の関数ではありませんか?これにより、コスト関数の導関数への入力は、重みと信号のサイズに関係なく、ロジスティック関数によって既に(0,1)にスケーリングされていますか?
Moobie

28

[1]は質問に対処します。

まず、バックプログラミング時に対称性を破るために、重みをゼロに設定しないでください。

通常、バイアスはゼロに初期化できますが、同じレイヤーの非表示のユニット間の対称性を破るために、重みを慎重に初期化する必要があります。異なる出力ユニットは異なる勾配信号を受信するため、この対称性の破れの問題は、出力重み(出力ユニットへの)に関係しないため、ゼロに設定することもできます。

いくつかの初期化戦略:

  • [2]および[3]は、ファンインの平方根の逆数によるスケーリングを推奨します
  • Glorot and Bengio(2010)およびディープラーニングチュートリアルでは、ファンインとファンアウトの組み合わせを使用します。
    • 双曲線正接単位の場合: Uniform(-r、r)をサンプリングし(fan-inは数値ユニットの入力の)。r=6fan-in+fan-out
    • シグモイド単位の場合: Uniform(-r、r)をサンプリングします(fan-inは数値ユニットの入力の)。r=46fan-in+fan-out
  • RBMの場合、0.1または0.01前後の小さな標準偏差を持つゼロ平均ガウスがうまく機能します(Hinton、2010)。
  • 直交ランダム行列の初期化、つまり初期化行列としてW = np.random.randn(ndim, ndim); u, s, v = np.linalg.svd(W)使用uします。

また、教師なしの事前トレーニングは、状況によっては役立つ場合があります。

重要な選択は、パラメーターを初期化するために教師なし事前トレーニングを使用するかどうか(および使用する教師なし特徴学習アルゴリズム)です。ほとんどの設定では、教師なしの事前トレーニングが役立つことがわかっており、非常にまれに怪我をすることがありますが、もちろんそれは追加のトレーニング時間と追加のハイパーパラメーターを意味します。

一部のANNライブラリには、Lasagneなどの興味深いリストもあります。

Constant([val]) Initialize weights with constant value.
Normal([std, mean]) Sample initial weights from the Gaussian distribution.
Uniform([range, std, mean]) Sample initial weights from the uniform distribution.
Glorot(initializer[, gain, c01b])   Glorot weight initialization.
GlorotNormal([gain, c01b])  Glorot with weights sampled from the Normal distribution.
GlorotUniform([gain, c01b]) Glorot with weights sampled from the Uniform distribution.
He(initializer[, gain, c01b])   He weight initialization.
HeNormal([gain, c01b])  He initializer with weights sampled from the Normal distribution.
HeUniform([gain, c01b]) He initializer with weights sampled from the Uniform distribution.
Orthogonal([gain])  Intialize weights as Orthogonal matrix.
Sparse([sparsity, std]) Initialize weights as sparse matrix.

[1]ベンジョ、ヨシュア。「ディープアーキテクチャの勾配ベースのトレーニングのための実用的な推奨事項。」ニューラルネットワーク:取引の秘cks。スプリンガーベルリンハイデルベルク、2012年。437-478。

[2] LeCun、Y.、Bottou、L.、Orr、GB、およびMuller、K.(1998a)。効率的なバックプロップ。ニューラルネットワークでは、取引の秘cks

[3] Glorot、Xavier、およびYoshua Bengio。「ディープフィードフォワードニューラルネットワークのトレーニングの難しさを理解する。」人工知能と統計に関する国際会議。2010年。


2
2つの有用なリファレンスを追加したいと思います。1)整流器を深く掘り下げる:ImageNet分類で人間レベルのパフォーマンスを超える-アクティベーション対応スケーリングの重要性についてarxiv.org/abs/1502.01852 2)の非線形ダイナミクスの正確なソリューション深い線形ニューラルネットワークの学習はarxiv.org/abs/1312.6120 -正規直交行列は単なるガウス雑音よりもはるかに優れている
古いUFO

1
エディターは、シグモイドの初期化と双曲線正接を元の用紙に一致するように切り替える必要があることを提案します。
GUNG -モニカ元に戻し

2
この編集を続けますか、フランク?そうでない場合は、ロールバックできます。
グング-モニカの復職

私は何かが欠けているに違いない。Glorot and Bengio(2010)の論文では、ロジスティックS字型アクティベーション関数を使用する際に式16の値の4倍を使用することを推奨しています。式16は、式12と一様分布の分散を使用した結果です。ただし、式16は、単位微分が0の対称活性化を想定して導出されます。さらに、彼らはこの提案された初期化をロジスティックシグモイドでテストしません。tanhとsoftsignでのみテストします。
トミーL

10

次の説明は本から取られています:Christopher Bishopによるパターン認識のためのニューラルネットワーク。素晴らしい本!入力ユニットへの入力を以前に白化したと仮定します。つまり、および< x 2 i > = 1

<xi>=0
<xi2>=1

問題は、どのように重みを選択するのが最善かということです。アイデアは、最適化プロセスが意味のあるソリューションに収束するのに役立つ分布に従ってランダムに重みの値を選択することです。

最初のレイヤーのユニットのアクティブ化には、があります。ここでです。ここで、入力とは独立して重みを選択するため、 およびここで、sigmaは重みの分布の分散です。この結果を得るには、重みが互いに独立して初期化されることを思い出す必要があります。つまり、

y=g(a)
a=i=0dwixi
<a>=i=0d<wixi>=i=0d<wi><xi>=0
<WIWJ>=δIJ
<a2>=(i=0dwixi)(i=0dwixi)=i=0d<wi2><xi2>=σ2d
<wiwj>=δij

軽微なミス:ではなく。0<xi2>=10
バイエルジ

これは、必要なを知っていると仮定して、ceratin到達する方法を説明しています。私が理解しているように、シグモイド導関数の大きな値を許可するにはを小さくする必要がありますが、デルタが消えないように小さすぎてはなりません。これは本当ですか?もしそうなら-は〜0.2であると言うのは良い経験則ですか?α α ασααα
ウリ

これは、レイヤーを追加するとユニットがすぐに飽和する傾向があるディープニューラルネットワークに特に当てはまります。その質問を扱った多くの論文があります。良いスタート地点glorotとbengioで「深いフィードフォワードニューラルネットワークを訓練することの難しさを理解する」かもしれない
jpmuc

10

まあちょうど更新、と整流器の中に深く踏み込ん:Heらによるヒトレベルのパフォーマンスのn ImageNet分類を上回る初期化と特異的に初期化を導入し、あなたのNNの入力数です。この初期化は、最近の多くの作品で使用されています(ReLUも使用)。彼らは実際、これがあなたが言及した(-1 / n、1 / n)よりもはるかに速くエラー率を減少させ始めることを示しています。詳細な説明については、このペーパーを参照してください。ただし、収束速度は次のとおりです。 w = U([0,n]) * sqrt(2.0/n)n22層の大規模モデルの収束


うわー!私にとって大きな改善。
トーマスW

ただし、多数の入力ではなく... MNISTで失敗します。
トーマスW

He初期化は(P)ReLU専用に設計されており、対称ではないという事実を考慮していることに注意してください(Xavier初期化の前提条件の1つです)。コンテキスト外でこのグラフにだまされないでください!
チョルダー氏

5

アイデアは、ネットワークを介した良好な順方向および逆方向のデータフローを保証する方法で重みを初期化することです。つまり、ネットワークの進行に合わせてアクティベーションが常に縮小または増加することは望ましくありません。

この画像は、MNISTがネットワークを1回通過した後の、3つの異なる初期化戦略の下での5層ReLU多層パーセプトロンのアクティベーションを示しています。

異なる初期化戦略を使用したReLU MLPのアクティベーション

3つの場合すべてにおいて、重みは、その標準偏差によって決定されるゼロ中心の正規分布から引き出されます。最初の重みが小さすぎる場合(標準偏差が小さい場合)、アクティベーションが窒息し、それらが大きすぎる場合、アクティベーションが爆発することがわかります。中央値、つまりほぼ正しい値は、アクティベーションと勾配更新の分散がネットワークを通過するときとほぼ同じになるように重みを設定することで見つけることができます。

重みの初期化に関するブログ記事を書い詳細に説明しますが、基本的な考え方は次のとおりです。

x(i)iniw(i)(i+1)ff(s)1

Var(x(i+1))=niVar(x(i))Var(w(i))

Var(x(i+1))=Var(x(i))

Var(w(i))=1ni.

を表す場合Lxj(i)Δj(i)

Var(Δ(i))=ni+1Var(Δ(i+1))Var(w(i)).

ni=ni+1

Var(w(i))=2ni+ni+1.

N(0,σ)σ=2ni+ni+1U(a,a)a=6ni+ni+1Var(U(a,a))=a2/3

tanhReLUf(s)=ReLU(s)

Var(w(i))=2ni.

3

μB=1mi=1Mxi   and   σB2=1mi=1m(xiμB)2x^i=xiμBσB2+ϵ   and   BN(xi)=γx^i+β
xiBN(xi)x^iγβ

γβx^ixixix^iβγトレーニング中。したがって、バッチ正規化は学習を安定させます。

その結果、バッチ正規化により、はるかに高い学習率を使用してより高速なトレーニング可能になり不適切な初期化の問題が軽減されます。BNは、ネットワークが飽和モードでスタックするのを防ぐことにより、飽和非線形性を使用することも可能にします。要約すると、バッチ正規化は、正規化されたアクティベーションをネットワークに導入する微分可能な変換です。実際には、BNレイヤーは、完全に接続されたレイヤーの直後に挿入できます。

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