【CVナレッジポイントのまとめと分析】 | パラメータの初期化

【CVナレッジポイントのまとめと分析】 | パラメータの初期化

【前書き】

このシリーズの記事は、すでに Python を始めていて、ある程度のプログラミングの基礎を持っている学生や人、さらには人工知能、アルゴリズム、機械学習の分野での仕事を探している学生や人に適しています。この一連の記事には、深層学習、機械学習、コンピューター ビジョン、特徴量エンジニアリングなどが含まれます。初心者がディープラーニングをすぐに始めるのに役立ち、求職者がアルゴリズムの知識ポイントを完全に理解するのに役立つと信じています。

1. パラメータの初期化とは何ですか?

初期化パラメータは、ネットワーク モデルのトレーニング前に各ノードの重みとバイアスを初期化して割り当てるプロセスを指します。

ディープ ラーニングでは、ニューラル ネットワークの重み初期化方法がモデルの収束速度とパフォーマンスに重大な影響を与えます。モデルのトレーニングとは、簡単に言うと、より良いパフォーマンスを達成するために重みパラメーター W を繰り返し更新することです。ネットワークの深さ (層の数) が増加すると、学習中に勾配の消失勾配の爆発などの問題が発生しやすくなります。したがって、重み W の初期化は非常に重要です。適切な重みの初期化は、勾配の消失や勾配の爆発の問題を完全に解決することはできませんが、これら 2 つの問題に対処するのに非常に役立ち、モデルの改善に非常に役立ちます。コンバージェンスの速度とパフォーマンス。

2. モデルパラメータの更新プロセス

パラメーター初期化の原理を要約する前に、ネットワーク モデルの実行プロセスを簡単に見てみましょう。パラメーター初期化の目的は、ネットワーク モデルをより適切にトレーニングできるようにすることです。現在でも、ほとんどのネットワーク トレーニングでは誤差逆伝播アルゴリズムが採用されています。誤差逆伝播は、正と負の 2 つのプロセスに分かれています。ここでは詳細は説明しませんが、最初にいくつかの概念を紹介します。下の図はニューラル ネットワークの層です。

図からわかるように、各層の内部コンポーネントには主に次のものがあります。

入力 X/hi : 元のサンプル X からの入力 (i=0) または前の層 (層 i-1) の出力 hi 。

重み W : ネットワーク モデル トレーニングの主な目的、ii 層の重みパラメーター wi。

状態値 z : 各層の活性化関数 f の入力としてネットワーク層内にあるため、状態値と呼ばれます。

活性化値 h : 活性化関数 f の後の状態値 zi の出力。これは i 番目の層の最終出力 hi です。

ネットワーク モデル内でデータが流れると、次のようなことが起こります (ここでは、デフォルトではバイアス項目 B はありません)。

zi = wi ⋅ hi − 1 hi = f ( zi ) \begin{aligned} z^{i} &=w^{i} \cdot h^{i-1} \\ h^{i} &=f\ left(z^{i}\right) \end{aligned}zh私は=whi 1=f( z

次に、バックプロパゲーションのプロセスでは、合成関数の導関数であるため、連鎖則によれば、導関数のセットが 2 つ存在します。1 つは損失関数 Cost から z までの導関数で、もう 1 つは の導関数です。 W に対する損失関数のコスト。

3.パラメータ初期化のためのいくつかの基本条件

どのような初期化パラメータが最適ですか?

パラメーターの初期化の目的は、トレーニング中にニューラル ネットワークが有益な情報を学習できるようにすることであることに留意することが重要です。つまり、パラメーターの勾配がゼロであってはなりません。そして、完全に接続されたニューラル ネットワークでは、パラメーターの勾配がバックプロパゲーションによって得られる状態勾配とアクティベーション値に関連していることがわかっています。アクティベーション値の飽和により、層の状態勾配情報が 0 になり、その後、以下のすべてのレイヤーのパラメータ勾配が 0 になります。アクティブ化値 0 を入力すると、対応するパラメータ勾配が 0 になります。したがって、パラメーターの勾配が 0 に等しくないことを確認したい場合は、パラメーターの初期化により各レイヤーのアクティベーション値が飽和せず、アクティベーション値が 0 にならないようにする必要があります。これら 2 つの条件をパラメータの初期化条件として要約します。

  • 初期化の必要条件1:各層の活性値飽和していないこと。

  • 初期化の必要条件 2: 各層の活性化値が0 ではない

4. 初期化が大きすぎたり小さすぎたりする危険性

重みの初期値が大きすぎると、勾配が爆発してネットワークが収束しなくなります。重みの初期値が小さすぎると、勾配が消滅し、ネットワークの収束が遅くなるか、極小値に収束します。

重みの初期値が大きすぎると、重みパラメータに対する損失関数の勾配値が非常に大きくなり、勾配降下法によりパラメータが更新されるたびにパラメータの更新の大きさも大きくなり、損失関数の値に変化し、その最小値の周りで振動します。

逆に、初期値が小さすぎると、重みパラメータに対する損失の傾きが非常に小さくなり、パラメータが更新されるたびに更新範囲も非常に小さくなり、損失が収束してしまいます。非常にゆっくり、または最小値に収束する前に、極小値に収束します。

5. 一般的な初期化方法

1. オール0初期化

それは所有権を0にリセットすることです。もちろん、これは不可能です。ニューラル ネットワークは勾配を通じてパラメーターを更新します。パラメーターはすべて 0、勾配は 0 になり、ニューラル ネットワークは学習を停止します。

2. ランダム初期化

パラメータはランダム化されますが、ネットワーク入力ニューロンの数がnin n_{in}であると仮定すると、ランダム パラメータはガウス分布または一様分布に従います。n、出力ニューロンの数はnout n_{out}です。nあなた_の場合、ガウス分布の対象となるパラメータは次のようにランダムに初期化されます。

w = 0.001 ∗ randn ⁡ ( n in , n out ) w=0.001 * \operatorname{randn}\left(n_{\text {in }}, n_{\text {out }}\right)w=0.001ランドン( n nアウト )

このうち、ガウス分布の平均値は 0、分散は 1 です。0.001 が制御係数であるため、パラメーターの期待値は可能な限り 0 に近づきます。

3.ザビエル

初期化方法は、2010 年の論文「ディープ フィードフォワード ニューラル ネットワークのトレーニングの難しさを理解する」で Bengio らによって提案されました。

各層の分散が順伝播中と逆伝播中に一貫していることを保証するために、順伝播中は各層の活性化値の分散は変更されません。逆伝播中は各層の勾配値の分散は変更されません。 . 変更します。パラメータランダム初期化の分布範囲は各層の入出力数に応じて決まり、その層の入出力パラメータ数で得られる分布範囲内で一様分布となります。

4.初期化

ザビエル法と同様に、He 初期化法も、順方向伝播中に状態値の分散が変化しないように初期化することを望み、逆方向伝播中には活性化値の勾配の分散が変化しないようにします。

その初期化メソッドは次のとおりです。

W 〜 N ( 0 , 2 n 1 ) \math{W} \sim \math{N}\left(0, \sqrt{\frac{2}{\math{n}_{1}}}\right)WN( 0 ,n12 )

ここで、n 1 \mathrm{n}_{1}n1層 l のニューロンの数です。

6. グラデーション消失の根本原因

ニューラル ネットワークの重みの初期値は通常 1 未満の数値であるため、式内で 1 未満の複数の数値を連続的に乗算することに相当し、結果として積の小さな合計が得られます。これはあくまで2層の場合で、層数が増え続けると積和はどんどん0に近づき、層が多すぎると下の層の傾きが0に近づき、0に近づきません。初期の重みが小さすぎるため、シグモイド関数も 0 に近づき、傾きが 0 に近づき、これも更新の失敗につながります。

7. グラデーションの消失を軽減するにはどうすればよいですか?

  1. 事前トレーニングと微調整

  2. グラデーションクリッピング

  3. 合理的なパラメータ初期化スキームを使用し、初期化する方法

  4. ReLU、LReLU、ELU、maxout などのアクティベーション関数を使用します。

    シグモイド関数の勾配は、x が増加するにつれて増加または減少し、消失しますが、ReLU では変化しません。

  5. バッチ正規化 BN の使用

  6. 残留構造

【プロジェクトの推薦】

Xiaobai の主要なカンファレンス論文のコア コード ライブラリ: https://github.com/xmu-xiaoma666/ external-tention-pytorch

Xiaobai 用 YOLO ターゲット検出ライブラリ: https://github.com/iscyy/yoloair

Xiaobai のトップジャーナルとカンファレンスの論文分析: https://github.com/xmu-xiaoma666/FightingCV-Paper-Reading

https://zhuanlan.zhihu.com/p/336005430

https://blog.csdn.net/yyl424525/article/details/100823398

おすすめ

転載: blog.csdn.net/Jason_android98/article/details/127424853