回答:
ロジスティックニューロンを使用しており、勾配降下法/逆伝播法でトレーニングしていると仮定します。
ロジスティック関数は、大きな正または負の入力に対してほぼ平坦です。入力がの微分は約ですが、の微分は約です。これは、ロジスティックニューロンの入力が場合、与えられたトレーニング信号に対して、ニューロンは入力が場合の約倍遅く学習することを意味します。1 / 10 10 1 / 22000 10 2200 2
ニューロンにすばやく学習させるには、(クロスエントロピー損失関数などを使用して)巨大なトレーニング信号を生成するか、導関数を大きくする必要があります。導関数を大きくするには、範囲入力を頻繁に取得するように初期重みを設定します。
あなたが与える最初の重みは、機能する場合と機能しない場合があります。入力がどのように正規化されるかによります。入力が平均および標準偏差を持つように正規化されている場合、均一な重みを持つ項のランダムな合計は、平均および分散を持ち、に依存しません。外で合計を得る可能性はわずかです。つまり、を増やしても、ニューロンが飽和状態にならないようにして、学習しないようにします。1 d (− 101次元[-4、4]D
正規化されていない入力では、これらの重みは飽和を回避するのに効果的ではない場合があります。
[1]は質問に対処します。
まず、バックプログラミング時に対称性を破るために、重みをゼロに設定しないでください。
通常、バイアスはゼロに初期化できますが、同じレイヤーの非表示のユニット間の対称性を破るために、重みを慎重に初期化する必要があります。異なる出力ユニットは異なる勾配信号を受信するため、この対称性の破れの問題は、出力重み(出力ユニットへの)に関係しないため、ゼロに設定することもできます。
いくつかの初期化戦略:
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年。
次の説明は本から取られています:Christopher Bishopによるパターン認識のためのニューラルネットワーク。素晴らしい本!入力ユニットへの入力を以前に白化したと仮定します。つまり、および< x 2 i > = 1
問題は、どのように重みを選択するのが最善かということです。アイデアは、最適化プロセスが意味のあるソリューションに収束するのに役立つ分布に従ってランダムに重みの値を選択することです。
最初のレイヤーのユニットのアクティブ化には、があります。ここでです。ここで、入力とは独立して重みを選択するため、 およびここで、sigmaは重みの分布の分散です。この結果を得るには、重みが互いに独立して初期化されることを思い出す必要があります。つまり、
まあちょうど更新、と整流器の中に深く踏み込ん:Heらによるヒトレベルのパフォーマンスのn ImageNet分類を上回る初期化と特異的に初期化を導入し、あなたのNNの入力数です。この初期化は、最近の多くの作品で使用されています(ReLUも使用)。彼らは実際、これがあなたが言及した(-1 / n、1 / n)よりもはるかに速くエラー率を減少させ始めることを示しています。詳細な説明については、このペーパーを参照してください。ただし、収束速度は次のとおりです。
w = U([0,n]) * sqrt(2.0/n)
n
アイデアは、ネットワークを介した良好な順方向および逆方向のデータフローを保証する方法で重みを初期化することです。つまり、ネットワークの進行に合わせてアクティベーションが常に縮小または増加することは望ましくありません。
この画像は、MNISTがネットワークを1回通過した後の、3つの異なる初期化戦略の下での5層ReLU多層パーセプトロンのアクティベーションを示しています。
3つの場合すべてにおいて、重みは、その標準偏差によって決定されるゼロ中心の正規分布から引き出されます。最初の重みが小さすぎる場合(標準偏差が小さい場合)、アクティベーションが窒息し、それらが大きすぎる場合、アクティベーションが爆発することがわかります。中央値、つまりほぼ正しい値は、アクティベーションと勾配更新の分散がネットワークを通過するときとほぼ同じになるように重みを設定することで見つけることができます。
重みの初期化に関するブログ記事を書いて詳細に説明しますが、基本的な考え方は次のとおりです。
を表す場合
トレーニング中。したがって、バッチ正規化は学習を安定させます。
その結果、バッチ正規化により、はるかに高い学習率を使用してより高速なトレーニングが可能になり、不適切な初期化の問題が軽減されます。BNは、ネットワークが飽和モードでスタックするのを防ぐことにより、飽和非線形性を使用することも可能にします。要約すると、バッチ正規化は、正規化されたアクティベーションをネットワークに導入する微分可能な変換です。実際には、BNレイヤーは、完全に接続されたレイヤーの直後に挿入できます。