【CVのナレッジポイントのまとめと分析】 | 正則化

【CVのナレッジポイントのまとめと分析】 | 正則化

【前書き】

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

1. 過学習の定義

過小適合と過適合をより適切に説明するために、まず Wu Enda のコースから画像を借りて説明しましょう。

単純なデータセット (x, y) の場合、x は特徴を表し、y は結果を表します。
上図の左側の図では、パラメータが 2 つだけの仮説を使用しています: h θ ( x ) = θ 0 + θ 1 x h_{\theta}(x)=\theta_{0}+\theta_{1 } xh( × )=0+1×この関数はすべての点にうまく適合していないことがわかり、このモデルはアンダーフィッティング

中央の図では、3 つのパラメーターを使用して仮説を取得する機能が追加されています: h θ ( x ) = θ 0 + θ 1 x + θ 2 x 2 h_{\theta}(x)=\theta_{0 } +\theta_{1} x+\theta_{2} x^{2}h( × )=0+1バツ+2バツ2図の曲線を取得すると、フィッティング効果が悪くないことがわかります。

一番右の図では、仮説が 5 次多項式になるように、一番左の図に基づいて複数のパラメーターを追加しました。h θ ( x ) = ∑ i = 0 5 θ ixi h_{\ theta }(x)=\sum_{i=0}^{5} \theta_{i} x^{i}h( × )=i = 05私はバツ私はこの曲線はグラフ内のすべての点を通過していることがわかりますが、この曲線をデータのテストに使用すると、テスト セット内のデータに過剰適合し、仮定が厳密になりすぎるため、正解率が非常に低くなる可能性があります。過学習と呼ぶことができます過剰適合の症状は、一般に、トレーニング セットでは高い精度率ですが、テスト セットでは低い精度率です。

2.過剰適合のいくつかの理由

(1)モデリングサンプルの選択エラー。これには、サンプルが少なすぎる、間違ったサンプリング方法、サンプリング時のビジネスシナリオやビジネス特性の不十分な考慮などが含まれますが、その結果、抽出されたサンプルデータがビジネスを表すのに十分な効果が得られなくなります。ロジックやビジネスシーン。

(2)サンプル内のノイズ データが干渉しすぎるため、モデルはノイズ特性を過剰に記憶しますが、入力と出力の間の実際の関係を無視します。

(3)モデルを適用する際に、モデリングにおける「論理的仮定」が確立できない予測モデルは仮定に基づいてのみ構築および適用できます。一般的な仮定には、過去のデータが将来を予測できるという仮定、ビジネス リンクに大きな変化がないという仮定、モデリング データがその後のアプリケーションと類似しているという仮定が含まれます。データなど 上記の前提がビジネス シナリオに違反する場合、これらの前提に基づいて構築されたモデルを効果的に適用することはできません。

(4)パラメータが多すぎてモデルの複雑さが高すぎる

(5)デシジョンツリーモデルデシジョン ツリーの成長に対して合理的な制限や枝刈りが行われていない場合、デシジョン ツリーの自由な成長には、各リーフに純粋なイベント データ (イベント) または非イベント データ (イベントなし) のみが含まれる可能性があります。この種の意思決定 もちろん、ツリーはトレーニング データと完全に一致 (適合) できますが、それを新しいビジネスの実際のデータに適用すると、その効果はめちゃくちゃになります。

(6)ニューラルネットワークモデル

a. サンプル データにより、一意ではない隠れた単位表現が存在する可能性があります。つまり、生成された分類の意思決定面は一意ではありません。学習が進むにつれて、BP アルゴリズムによって重みが収束する可能性があります。過度に複雑な意思決定が表面化し、極限状態に達します。

b. 重み学習の反復回数が十分であり (オーバートレーニング)、トレーニング データのノイズとトレーニング サンプルの非代表的な特徴が適合します。

3. モデルトレーニングの過学習を解決するためのアイデアは何ですか?

(1) 重み減衰主にニューラル ネットワーク モデルで使用されます。

これは、各反復中に小さな係数で各重みを減らします。これは、E の定義を変更し、ネットワーク重みの合計量に対応するペナルティ項を追加するのと同じです。この方法の動機は、重みを比較的小さく保つことです。重みの減衰を回避し、学習プロセスが複雑な意思決定面の反対方向に偏るようにします。

(2) 適切な停止基準

二次誤差関数の場合、早期停止と重み減衰の同様の結果が得られる理由の説明。楕円は定誤差関数の輪郭を示し、Wml は誤差関数の最小値を表します。重みベクトルの開始点が原点であり、局所的な負の勾配の方向に移動する場合、重みベクトルは曲線で指定されたパスに沿って移動します。トレーニング プロセスを早期に停止することで、重みベクトル w を見つけます。定性的には、チェックポイントの重み減衰正則化項を使用し、正則化誤差関数を最小化して重みを取得することに似ています。

(3) データの検証

最も成功したアプローチの 1 つは、トレーニング データに加えて一連の検証データをアルゴリズムに提供することです。検証セットで最小の誤差が生じる反復回数を使用する必要があります。検証セットがいつ使用されるかは必ずしも明らかではありません。最小誤差に達しました。

(4) 相互検証

相互検証方法は、検証セットを提供するために追加のデータが利用できる場合にはうまく機能しますが、過剰適合の問題は、トレーニング セットが小さい場合により深刻になります。

(5) 通常アイテムを追加します

L1 正則化はスパースな解を生成しやすく、L2 正則化はパラメータ w が 0 になる傾向があります。

(6) ツリーモデルの場合

a. ツリーが大きくなりすぎる前に成長を停止します。各リーフには最低どのくらいのデータ (しきい値) が必要ですか?

b. 木が十分に大きくなった後、変化が正解率を低下させるまで枝や葉を剪定します。

(7)過学習を防ぐために、早期停止データ拡張 (Data augmentation)正則化 (正規化)ドロップアウトなどの手法が使用されます。

4.正則化とは何ですか?

まず規則性(規則性)を理解します。規則性は関数の滑らかさの度合いを表し、規則性が高いほど関数は滑らかになります。(滑らかさは、関数の導出可能性を測定します。関数が滑らかな関数である場合、その関数は無限に導出可能、つまり任意の n 次導出可能です)。

機械学習では損失関数の後に余分な項目が追加されることがわかりますが、一般的によく使われる余分な項目は2種類あり、一般的に英語ではℓ1、ℓ2と呼ばれ、L1正則化、L2と呼ばれます。中国語の正則化、または L1 ノルムと L2 ノルム。L1 と L2 は実際には数学における標準であり、標準を使用することで目的を達成できます。1 ノルムの定義は絶対値の合計であり、2 ノルムは二乗和です。

L1 正則化と L2 正則化は損失関数のペナルティ項目とみなすことができます。いわゆる「罰」とは、損失関数の特定のパラメーターに対するいくつかの制限を指します。線形回帰モデルのうち、L1正則化を用いたモデルはLasso回帰、L2正則化を用いたモデルはRidge回帰(リッジ回帰)と呼ばれます。

正則化は過学習の問題を解決することです。これについては、Andrew Ng の Machine Learning ビデオで言及されています。過学習を解決するには 2 つの方法があります。

方法 1: 選択する変数の数を可能な限り最小限に抑えます。各変数を手動でチェックしてどの変数がより重要であるかを判断し、それらのより重要な機能変数を保持します。明らかに、このアプローチには問題の十分な理解、専門的な経験、または事前の知識が必要です。したがって、どの変数を保持すべきかを決定するのは簡単な作業ではありません。さらに、一部の特徴変数を破棄すると、問題内の一部の情報も破棄されます。たとえば、すべての特性変数は住宅価格の予測に役立つ可能性がありますが、実際には一部の情報を破棄したり、これらの特性変数を破棄したりする必要はありません。最良の方法は、重要な特徴変数を自動的に選択し、不要な特徴変数を自動的に破棄するために、ある種の制約を採用することです。

方法 2: 正則化。正則化手法を使用すると、重要でない特徴変数が自動的に弱められ、多くの特徴変数から重要な特徴変数が自動的に「抽出」され、特徴変数の大きさのオーダーが削減されます。この方法は、多くの特徴変数があり、それぞれが予測に与える影響が小さい場合に非常に効果的です。住宅価格予測の例で見られるように、多くの特徴変数を持つことができ、それぞれが有用であるため、それらを削除したくありません。これが正則化の概念につながります。

**5、**L1 および L2 正則化の直感的な理解

右上隅の色付きの円は誤差項の関数です。最小化されたときは、これら 2 つが交差したときです。左側の L1 機能の画像は鋭い角を持っています。明らかに、数直線上、つまり整数の点で交差する方が簡単なので、正確に 0 になる解がより多くなります。L2 は円弧上で交差しますが、さまざまな位置が可能です。

上の図は目的関数、つまり二乗誤差項の輪郭と L1 および L2 ノルムの輪郭 (左側は L1) を表しています。正則化コスト関数の目標は、経験的リスクとモデルの複雑さを解決することです。トレードオフ間の関係は、図では黒い線と色付きの線の交点として視覚化されます。

色付きの線は最適化プロセスで遭遇する等高線、円は目的関数の値、円の中心はサンプルの観測値 (サンプルを想定)、半径は誤差値、制限条件は黒い境界 (つまり、正則化部分) 、2 つの交差部分が最適なパラメーターです。

左の画像のこの頂点の値は (w1,w2)=(0,w) です。L1 関数には多くの「突き出たコーナー」(2 次元の場合は 4 つ、多次元の場合はさらに多く) があるため、正規項を追加せずにこれらのコーナーに接触する確率は、それよりもはるかに高いことが直感的に想像できます。 L1 の他の部分の確率は であり、これらのコーナーには 0 に等しい重みが多数存在するため、L1 はスパース モデルを生成でき、それを特徴の選択に使用できます。

右図では、2次元平面上のL2正則化の関数グラフが円形になっており、正方形に比べてエッジや角が削れています。したがって、正規項のない損失関数が L と交差する場合、w1 または w2 がゼロに等しい確率ははるかに小さくなります。これが、L2 正則化にスパース性がない理由です。

L2 正則化はパラメータの円形の解空間を定義することに相当し、L1 正則化はパラメータのダイヤモンド型の解空間を定義することに相当します。L1 の「鋭いエッジ」解空間は、明らかに裾野点で目的関数の輪郭と衝突する可能性が高くなります。疎な解が得られる

L1 正則化

元のコスト関数の後に L1 正則化項を追加します。つまり、すべての重み w の絶対値の合計に λ/n を乗算したものです (ここでは、1/ を乗算する必要がある L2 正則化項とは異なります)。 2)

C = C 0 + λ n ∑ w ∣ w ∣ C=C_{0}+\frac{\lambda}{n} \sum_{w}|w|C=C0+nww

また、最初に導関数を計算します。

∂ C ∂ w = ∂ C 0 ∂ w + λ n sgn ⁡ ( w ) \frac{\partial C}{\partial w}=\frac{\partial C_{0}}{\partial w}+\frac{ \lambda}{n} \operatorname{sgn}(w)∂w _∂C _=∂w _∂C _0+nサイン( w )

上式において、sgn(w)はwの記号を表します。この場合、重み w の更新規則は次のようになります。

w → w ′ = w − η λ n sgn ⁡ ( w ) − η ∂ C 0 ∂ ww \rightarrow w^{\prime}=w-\frac{\eta \lambda}{n} \operatorname{sgn}( w)-\eta \frac{\partial C_{0}}{\partial w}ww=wnl _サイン( w )∂w _∂C _0

元の更新ルールに η * λ * sgn(w)/n の項が追加されています。w が正の場合、更新される w は小さくなります。w が負の場合、更新された w は大きくなります。そのため、その効果は、ネットワーク内の重みが可能な限りゼロになるように、w を 0 に近づけることです。これは、ネットワークの複雑さを軽減し、過剰適合を防ぐことと同じです。

また、上記以外の問題として、wが0の場合はどうすればよいでしょうか?w が 0 に等しい場合、|W| は微分不可能であるため、元の非正則化方法に従ってのみ w を更新できます。これは項 η λ sgn(w)/n を削除することと同じなので、次のように規定できます。 sgn(0)=0 なので、w=0 の状況も統一されます。

(プログラミング時は、sgn(0)=0、sgn(w>0)=1、sgn(w<0)=-1とします。)

L2 正則化 (重み減衰)

L2 正則化では、コスト関数の後に正則化項を追加します。

C = C 0 + λ 2 n ∑ ww 2 C=C_{0}+\frac{\lambda}{2 n} \sum_{w} w^{2}C=C0+2n _ww2

C0 は元のコスト関数を表し、後者の項は L2 正則化項です。これは、すべてのパラメーター w の二乗和をトレーニング セットのサンプル サイズ n で割った値から得られます。λ は正則化項の係数で、正則化項と C0 項の比率を重み付けします。また、係数 1/2 がありますが、1/2 は主に後の導出結果の便宜のためによく見られますが、後者の導出では 2 が得られ、これに 1 を掛けると切り上げられるだけです。 /2.

L2 正則化項はどのように過学習を回避するのでしょうか? それを推測して見てみましょう。まず導関数を求めます。

∂ C ∂ w = ∂ C 0 ∂ w + λ nw ∂ C ∂ b = ∂ C 0 ∂ b \begin{aligned} \frac{\partial C}{\partial w} &=\frac{\partial C_{0 }}{\partial w}+\frac{\lambda}{n} w \\ \frac{\partial C}{\partial b} &=\frac{\partial C_{0}}{\partial b} \終わり{整列}∂w _∂C _∂b _∂C _=∂w _∂C _0+nw=∂b _∂C _0

L2 正則化項は b の更新には影響を与えませんが、w の更新には影響を与えることがわかります。

w → w − η ∂ C 0 ∂ w − η λ nw = ( 1 − η λ n ) w − η ∂ C 0 ∂ w \begin{aligned} w & \rightarrow w-\eta \frac{\partial C_{ 0}}{\partial w}-\frac{\eta \lambda}{n} w \\ &=\left(1-\frac{\eta \lambda}{n}\right) w-\eta \frac {\partial C_{0}}{\partial w} \end{aligned}ww∂w _∂C _0nl _w=( 1nl _)w∂w _∂C _0

L2 正則化が使用されない場合、導出結果の w の前の係数は 1 ですが、w の前の係数は 1−ηλ/n になります。これは、η、λ、n がすべて正であるため、1−ηλ/n の方が小さくなります。 1 よりも大きくなり、その効果は重量減衰の原因である w を減らすことです。もちろん、後続の微分項を考慮すると、w の最終値は増加または減少する可能性があります。

さらに、ミニバッチベースの確率的勾配降下法では、w と b を更新する式が上記のものとは少し異なることに注意する必要があります。

w → ( 1 − η λ n ) w − η m ∑ x ∂ C x ∂ wb → b − η m ∑ x ∂ C x ∂ bw \rightarrow\left(1-\frac{\eta \lambda}{n} \right) w-\frac{\eta}{m} \sum_{x} \frac{\partial C_{x}}{\partial w}\\b \rightarrow b-\frac{\eta}{m} \sum_{x} \frac{\partial C_{x}}{\partial b}w( 1nl _)wメートルhバツ∂w _∂C _×bbメートルhバツ∂b _∂C _×

上記の w の更新式を比較すると、後者の項目が変更され、すべての導関数の合計を η で乗算し、m で除算した値になることがわかります。ここで、m はミニバッチ内のサンプル数です。

これまで、L2 正則化項には w を「小さく」する効果があることだけを説明してきましたが、なぜ w を「小さく」することで過学習を防ぐことができるのかについては説明していませんでした。いわゆる「明白な」説明は次のとおりです。重み w が小さいということは、ある意味、ネットワークの複雑さが低く、データへの適合が適切であることを意味します (このルールはオッカムの剃刀とも呼ばれます)。実際のアプリケーションでもこれは検証されており、L2 正則化の効果は、正則化を行わない場合よりも優れていることがよくあります。もちろん、多くの人 (私を含む) にとって、この説明はそれほど明白ではないと思われるため、もう少し数学的な説明をここに示します (Zhihu から引用)。

オーバーフィッティングすると、フィッティング関数の係数が非常に大きくなることがよくありますが、なぜですか? 下図に示すように、オーバーフィッティングとは、フィッティング関数があらゆる点を考慮する必要があり、最終的なフィッティング関数が大きく変動することを意味します。いくつかの短い間隔で、関数の値が大幅に変化します。これは、いくつかの小さな区間における関数の微分値 (絶対値) が非常に大きいことを意味します。独立変数の値は大きくても小さくてもよいため、係数が十分に大きい場合にのみ微分値が大きくなり得ます。

正則化とは、パラメータのノルムが大きくなりすぎないように制限することで、ある程度の過学習を軽減することができます。

6. L1 正則化と L2 正則化の違い

  1. **L2 正則化**: モデルの解は、ノルムが小さい W に偏り、モデル空間の制限は W のノルムのサイズを制限することによって実現され、それによって過剰適合がある程度回避されます。しかし、リッジ回帰には疎な解を生成する機能がなく、得られた係数は予測結果を計算するためにデータ内のすべての特徴を必要とするため、計算量は改善されていません。L1 ノルム正則化項の「疎な解」特徴により、L1 は特徴の選択、より多くの「重要な」特徴の検索、およびいくつかのそれほど重要でない特徴のゼロ設定に適しています。

  2. L1 正規化器: その優れた特性は、スパース性を生成して、W の多くの項をゼロにすることができることです。スパースは計算の利点を排除するだけでなく、より重要なことに、より「説明可能」になります。L2 ノルム正則化項は、小さなパラメーター値を持つ多くのモデルを生成できます。これは、そのようなモデルが強力な抗干渉能力を持ち、さまざまなデータセットやさまざまな「極端な条件」に適応できることを意味します。

一般的な回帰分析では回帰wは特徴量の係数を表しますが、上式から正則化項が係数を加工(制限)していることがわかります。

L1 正則化と L2 正則化の説明は次のとおりです。

  • L1 正則化は、重みベクトル w の各要素の絶対値の合計を指し、通常は ||w||1 として表されます。

  • L2 正則化は、重みベクトル w の各要素の二乗和と平方根を指します (リッジ回帰の L2 正則化項目には二乗記号があることがわかります)。通常は ||w||2 として表されます。

では、L1 と L2 の正則化を追加すると何になるのでしょうか? L1 正規化と L2 正規化の役割は次のとおりです。これらの表現は多くの記事で見つけることができます。

  • L1 正則化では、スパースな重み行列を生成できます。つまり、特徴の選択に使用できるスパース モデルを生成できます。

  • L2 正則化はモデルの過学習 (オーバーフィッティング) を防ぐことができます。L1 もある程度は過学習を防ぐことができます

7. BNを知っていますか? どのような機能やメリットがあるのでしょうか?

BN (Batch Normolization) は、深層ネットワークにおける勾配消失勾配爆発の問題を解決するために Google によって提案されており、正則化において一定の役割を果たすことができますその原理について話しましょう。

バッチ正規化。つまり、モデルの各ランダム勾配降下トレーニング中に、畳み込みの各層の出力がミニバッチを通じて正規化されるため、結果 (各次元) の平均値は 0 、分散は 1なります

BN の操作は 4 つのステップに分かれています。入力はxi x_{i}ですバツ私は、最初のステップは平均を計算することです。

μ β = 1 m ∑ i = 1 mxi \mu_{\beta}=\frac{1}{m} \sum_{i=1}^{m} x_{i}メートルb=メートル1i = 1メートルバツ私は

2 番目のステップでは、データの分散を計算します。

σ β 2 = 1 m ∑ i = 1 m ( xi − μ β ) 2 \sigma_{\beta}^{2}=\frac{1}{m} \sum_{i=1}^{m}\left (x_{i}-\mu_{\beta}\right)^{2}pb2=メートル1i = 1メートル( ×私はメートルb)2

3 番目のステップは正規化です。

xi ∗ = xi − μ β σ β 2 + ϵ x_{i}^{*}=\frac{x_{i}}\mu_{\beta}}{\sqrt{\sigma_{\beta}^{2} +\イプシロン}}バツ=pb2+ϵ バツ私はメートルb

4 番目のステップのスケール変換とオフセット:

yi = γ ⋅ xi ∗ + β = BN γ , β ( xi ) y_{i}=\gamma \cdot x_{i}^{*}+\beta=B N_{\gamma, \beta}\left(x_ {i}\右)y私は=cバツ+b=BN _c b( ×私は)

んんm はミニバッチ内のデータ数を表し、BN が実際にホワイトニング操作ホワイトニング操作は線形であり、最後の「スケール変換とオフセット」操作により、BN は線形性と非線形性の間でトレードオフを行うことができ、このオフセットのパラメーターγ \gammaγと $\beta$ は、トレーニング中にニューラル ネットワークによって学習されます。

BN 操作後、ネットワークの各層の出力の小さい値が「伸張」され、大きい値が「縮小」されるため、勾配の消失と勾配の爆発が効果的に回避されます。全体的に見て、BN はパラメーター (γ, β) を持つ学習可能なネットワーク層です

8. BN トレーニングとテストの違いは何ですか?

トレーニング中の平均と分散はBatchに対するものです。

テストする場合、平均と分散はデータセット全体に対するものになります。したがって、トレーニング プロセス中の通常の順伝播と逆導出に加えて、各バッチの平均と分散も記録する必要があります。これにより、トレーニングが完了した後、全体の平均と分散は次のように計算できます。式

E [ x ] ← EB [ µ B ] Var ⁡ [ x ] ← mm E 2 EB [ σ 2 2 ] \begin{aligned}\mathrm{E}[x] & \leftarrow\mathrm{E}_{\mathcal {B}}\left[\mu_{\mathcal{B}}\right]\\\演算子名{Var}[x] & \leftarrow\frac{m}{m E_{\mathcal{2}}}\mathrm {E}_{\mathcal{B}}\left[\sigma_{2}^{2}\right]\end{aligned}E [ × ]はい[ × ]EB[ mBm E2メートルEB[ p22]

上記の簡単な理解は次のとおりです。テスト モデルでは、すべてのバッチμ β \mu_{\beta}の平均値を直接計算します。メートルb値の平均、次に各バッチの標準偏差σ β \sigma_{\beta}pbの不偏推定(不偏推定は、標本統計量を使用して母集団パラメータを推定する場合の不偏推論です)

最終テスト段階での BN の使用式は次のとおりです。

y = γ Var ⁡ [ x ] + ϵ ⋅ x + ( β − γ E [ x ] Var ⁡ [ x ] + ϵ ) y=\frac{\gamma}{\sqrt{\operatorname{Var}[x]+ \epsilon}} \cdot x+\left(\beta-\frac{\gamma\mathrm{E}[x]}{\sqrt{\operatorname{Var}[x]+\epsilon}}\right)y=はい[ × ]+ϵ cバツ+( bはい[ × ]+ϵ γ E [ x ])

9. BNとLNについて教えてください。違いは何ですか? LN はどの次元で正規化されますか?

LN:層の正規化。LN は「水平」で、同じ層のすべてのニューロンを通じてサンプルを正規化します

BN: バッチ正規化。ニューロンのすべてのサンプルが正規化された、BN は「垂直」であるため、バッチ サイズと関係があります

どちらの目的も、モデルの収束を高速化し、トレーニング時間を短縮することです。

10. BN とドロップアウトを同時に使用するにはどうすればよいですか?

BNとドロップアウトを同時に使用すると、分散シフトの問題が発生する可能性があります

分散オフセットについて、論文では 2 つの解決策が示されています。

  1. 分散オフセットを拒否し、すべての BN 層の背後にあるドロップアウト層のみを使用します(オープン ソース モデルのほとんどは現在ネットワークの中央に BN を追加しているため、ドロップアウトを追加できるのはソフトマックスの前の層のみであり、その効果は変わりません) OK、少なくともドロップアウトがない場合より悪くはなりません。別の方法は、モデルのトレーニング後にパラメーターを修正し、テスト モードを使用してトレーニング データの BN の平均と分散を計算し、テストを正規化することです。この論文は、この方法がベースラインよりも優れていることを証明しています)

  2. Dropout の原文では、ガウス ドロップアウトが提案されています。この論文は、ガウス ドロップアウトをさらに拡張し、均一に分散された Dropoutを提案しています。この利点の 1 つは、この形式の Dropout (「Uout」としても知られています) が分散低減感度を相殺することです。

11. 2 つの正規化されたパラメータ分布

L1 正則化はパラメータ分布がラプラス分布であることを前提とし、L2 正則化はパラメータ分布が正規分布であることを前提とします。

12. 予測する場合、dropout によってトレーニングされた重みを使用するか、keep-prib で乗算する必要がありますか?なぜですか?

keep-prib を乗算します

ニューロンは予測中にランダムに破棄できないため、「補償」スキームでは各ニューロンの重みに p を乗じてテスト データトレーニング データが「全体的に」ほぼ同じになるようにします。テスト時に、このニューロンの重みにpを乗算すると同じ期待値が得られることが保証されます

注: 現在の主流はドロップアウトの代わりに反転ドロップアウトを使用することであり、反転ドロップアウトには keep-prib を乗算する必要はありません。そのアプローチは、トレーニング フェーズ中にドロップアウト操作を実行した層の出力アクティベーション値を keep_prob で除算することであり、テストされたモデルに変更を加える必要はありません。

13. なぜ L1 正則化で過学習を軽減できるのか

L1 はモデルの各パラメータの絶対値の合計∣ w ⃗ ∣ 0 \left|\vec{w}\right|_{0}w 0、目的関数を最適化した後、パラメータの一部は 0 になり、パラメータの他の部分はゼロ以外の実数値になります。これはフィルタ機能として機能します過学習は特徴が多すぎることが原因であり、L1 は特徴をフィルタリングできるため、過学習を軽減できます

14. BN+CONV 融合公式と関数

ネットワークがトレーニングされた後の推論段階では、動作を高速化するために、通常、畳み込み層と BN 層が融合されます。

推論段階、E[x] はスライド平均Var[x] はスライド分散

BN層を畳み込み層に融合することは、畳み込みの計算量を増やすことなく、畳み込みカーネルをある程度修正することに相当し、同時にBN層全体の計算量が省略される。

15. 他にどのような正規化方法がありますか?

1層の正規化

現在のトレーニング例が 1 つしかない場合でも、妥当な統計範囲を見つけることができるようにするための、最も直接的なアイデアの 1 つは、MLP 自体の同じ隠れ層に複数のニューロンが含まれている、同様に、CNN の同じ畳み込み層には k が含まれている、というものです。出力チャネルでは、各チャネルには m n ニューロンが含まれ、チャネル全体には k m*n ニューロンが含まれます。同様に、RNN の各タイム ステップの隠れ層にもいくつかのニューロンが含まれます。次に、集合 S の範囲と同じ層の隠れ層にあるニューロンの応答値を直接使用して、平均と分散を計算できます。これがレイヤー正規化の基本的な考え方です。以下の図はMLP、CNN、RNNのLayer Normalizationの集合Sの計算範囲を示していますが、非常に直感的なのでここでは詳しく説明しません。

上で述べたように、BN は RNN で使用するのが非常に不便であり、RNN のような動的ネットワークには、同じ隠れ層内の統計を計算するモードである Layer Normalization の方が適しています。しかし、層正規化は現時点では RNN シナリオでの適用にのみ適しているようで、CNN やその他の環境での効果は BatchNorm や GroupNorm などのモデルほど良くありません。現状から判断すると、動的ネットワークにおける正規化メカニズムはさらに研究する価値のある分野です。

2 インスタンスの正規化

上記からわかるように、レイヤー正規化はミニバッチへの依存を脇に置き、平均分散をカウントできるようにするために、同じレイヤー内のすべてのニューロンの応答値を使用するのが自然です。統計範囲を狭くした場合、さらに絞り込んだ統計を使用できますか? 同じ畳み込み層内の各畳み込みカーネルが出力チャネルを生成し、各出力チャネルが複数の活性化されたニューロンも含む 2 次元平面であるため、CNN では明らかに可能です。当然、統計範囲はさらに拡大できます。単一のコンボリューション カーネルに対応する出力チャネルの内部へ。図 14 は、CNN のインスタンス正規化を示しています。図内の特定の畳み込み層では、各出力チャネルのニューロンが平均分散をカウントするための集合 S として使用されます。RNN や MLP の場合、CNN のように同じ隠れ層が狭められると、単一のニューロンだけが残り、出力も CNN の 2 次元平面ではなく単一の値になります。これは、集合 S が形成されないことを意味します。したがって、RNN と MLP はインスタンス正規化操作を実行できません。これはよく知られています。

CNN BN のバッチ サイズが 1 に設定されている場合、上のインスタンス ノルムの図と比較してください。この 2 つは同等ですか? つまり、インスタンスの正規化は、バッチ サイズ = 1 のバッチ正規化の特殊なケースであるように見えます。しかし、よく考えてみると、両者にはまだ違いがあることがわかります。

インスタンス正規化は、画像スタイル変換などの一部の画像生成タスクでは BN よりも大幅に優れていますが、分類などの他の多くの画像タスクでは BN ほど効果的ではありません。

3 グループの正規化

上記のレイヤー正規化とインスタンス正規化から、これらは 2 つの極端なケースであることがわかります。レイヤー正規化は統計範囲として同じレイヤー内のすべてのニューロンを使用しますが、インスタンス正規化は CNN の同じ畳み込みレイヤーを使用します。各コンボリューション カーネルは、対応する出力チャンネルは、独自の統計範囲として単独で使用されます。では、その間に統計的な範囲はあるのでしょうか? チャネル グループ化は CNN で一般的に使用されるモデル最適化手法であるため、CNN の特定の畳み込み層の出力チャネルまたは入力チャネルをグループ化し、グループ化範囲内で統計を作成することを考えるのは自然です。これは、2017 年に Facebook の何開明研究グループによって提案された改良モデルであるグループ正規化の核となるアイデアです。

以下の図は、CNN におけるグループ正規化を示しています。理論的には、MLP と RNN もこのモードを導入できますが、関連する研究はまだ見られていません。ただし、理論的には、MLP と RNN がこれを行う場合、グループ内のニューロンが少なすぎるため、推定は統計的妥当性を欠きます。推測効果は良くありませんが、素晴らしいと思います。

グループ正規化は、バッチ サイズを比較的小さくする必要があるシナリオや、物体検出/ビデオ分類などのアプリケーション シナリオでは、BN よりも優れています。

【プロジェクトの推薦】

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://blog.csdn.net/qq_35556254/article/details/90813562

https://blog.csdn.net/SecondLieutenant/article/details/78931706

https://blog.csdn.net/zwqjoy/article/details/79806989

https://www.nowcoder.com/issue/tutorial?zhuanlanId=qMKkxM&uuid=24c5ab2b16094e04b0c8c5d44c6c949a

Supongo que te gusta

Origin blog.csdn.net/Jason_android98/article/details/127259168
Recomendado
Clasificación