[ディープラーニングシリーズ] PaddlePaddleとTensorflowでGoogLeNet InceptionV2/V3/V4を実装する

[ディープラーニングシリーズ] PaddlePaddleとTensorflowでGoogLeNet InceptionV2/V3/V4を実装する

前回の記事では、GoogLeNet InceptionV1のネットワーク構造を紹介しました。この記事では、Inception V2/V3/V4の開発履歴と、そのネットワーク構造とハイライトについて詳しく説明します。


GoogLeNet インセプション V2

GoogLeNet Inception V2 は、「バッチ正規化: 内部共変量シフトの削減によるディープ ネットワーク トレーニングの高速化」に登場しました。注目すべきは、次の役割を果たすバッチ正規化メソッドです。

  • 勾配の爆発や消失などの最適化の問題を気にせずに、大きな学習率を使用します。
  • モデル効果の初期重みへの依存を減らしました。
  • 収束を加速することができます。ある程度、収束速度を低下させる手法であるドロップアウトを使用する必要はありませんが、正規化の役割を果たしてモデルの一般化を向上させます。
  • ReLU を使用しなくても、活性化関数の飽和問題は軽減できます。
  • 現在の層から次の層への分布スケーリング(スケーリング(分散)、シフト(期待値))係数を学習できます。

機械学習では通常、トレーニング サンプルは独立かつ同一に分布 (iid) しており、トレーニング サンプルの分布はテスト サンプルの分布と一致しているという仮定を立てます。実際のデータがこの仮定を満たしている場合、モデルの効果は良好である可能性があり、その逆も同様です。これは学術的には共変量シフトと呼ばれており、サンプル (外部) の観点からは、ニューラル ネットワークでも同じことが言えます。構造的(内部的)な観点から見ると、ニューラルネットワークは複数の層で構成されているため、特徴を抽出しながらサンプルを層間で伝播させます。各層の入力分布に一貫性がなければ、必然的にモデル効果が悪かったり、学習速度が遅くなったりします。学術的には、これを内部共変量シフトと呼びます。

仮定: y yはサンプルラベル、 X = { x 1 x 2 x 3 ... . . . . } X ={x1、x2、x3、......}サンプルx x がニューラルネットワークの複数の層を通過した後の各層の入力です。

理論的には、 p ( x , y ) p(x,y)の結合確率分布は、次のように、セットX X内の任意の入力層の結合確率分布と一致するはずです。 p ( x , y ) = p ( x 1 , y ) p(x,y)=p(x1,y) ;

P x x ⋅p x y = p x ....しかし 神経各層つまりP X 1 P X 2

BN アルゴリズムのプロセス全体は次のとおりです。

  • トレーニングはバッチモードで行われます。m 個のサンプルの期待値と分散を計算した後、トレーニング データがホワイトニングされます。ホワイトニング操作により、特徴の相関関係が除去され、データが球面上にスケーリングされます。これを行う利点は、最適化アルゴリズムを高速化でき、最適化の精度も向上できることです。直感的な説明は次のとおりです。

左側は白色化なしの元の実行可能領域、右側は白色化後の実行可能領域です。

  • モデルの学習にとってより有益な場合に元の入力を復元できる (残差ネットワークと同様):

ここでパラメータγ γσ σを学習する必要があります。

畳み込みニューラルネットワークにおけるバッチ正規化

畳み込みネットワークでは重み共有戦略が採用されており、各特徴マップに対してγσペアを 1 つだけ学習する必要があります。


GoogLeNet インセプション V3

GoogLeNet Inception V3 は、「コンピュータ ビジョンの Inception アーキテクチャの再考」で提案されました (この論文では、著者はネットワーク構造を v2 と呼んでいますが、最終バージョンの v4 を標準として使用しています)。この論文のハイライトは次のとおりです。

  • 一般的なネットワーク構造設計原則を提案する
  • 畳み込み分解を導入して効率を向上
  • 効率的な特徴マップ次元削減の導入

ネットワーク構造設計の原則

前述のように、ディープラーニング ネットワークの探究は実験科学に近いものです。実験では、いくつかの構造設計原則がまとめられていますが、正直に言うと、必ずしも実用的ではないと思います。

  • 特にニューラルネットワークの最初の数層における特徴表現のボトルネックを回避する

ニューラルネットワークには、多層畳み込みなどの特徴を自動的に抽出するプロセスが含まれています。ネットワークの初期段階で抽出された特徴が粗すぎると詳細が失われ、後で構造を洗練しても効果的に表現できないことは直感的かつ常識的に理解できます。極端な例を挙げると、宇宙の惑星を識別するために、通常は近くから遠くへ、家、木、海、大陸プレートから惑星全体、そして宇宙全体へと進みます。最初から宇宙に直接ズームアウトすると、すべての惑星が球体であり、どれが地球でどれが水星であるかを区別できないことがわかります。したがって、レイヤー数が深くなるにつれて特徴マップのサイズは徐々に小さくなるはずですが、特徴を効果的に表現して組み合わせるために、チャネルの数は徐々に増加します。

次の図はこの原則に違反しています。最初は直接サンプリングして 35×35×320 から 17×17×320 に縮小しており、多数の特徴の詳細が失われています。後で Inception を使用してさまざまな特徴の抽出と組み合わせを実行しても、役に立ちません。

  • ニューラル ネットワークの特定の層では、より多くの活性化出力ブランチが相互に分離された特徴表現を生成し、高次のスパース特徴を生成して、収束を加速することができます。下の図の 1×3 および 3×1 の活性化出力に注意してください。

  • 次元削減を適切に使用すれば、ネットワークの特徴表現能力が損なわれることなく、収束を高速化できます。典型的な例は、1 つの 5×5 を 2 つの 3×3 に置き換える次元削減戦略です。パディングを考慮せずに、1 つの 5×5 の代わりに 2 つの 3×3 を使用すると、計算コストを 1-(3×3+3×3)/(5×5)=28% 節約できます。

  • また、n×n 畳み込みカーネルは、2 つの 1×n カーネルと n×1 カーネルを順番に接続することで次元を削減するために使用されます (行列分解に少し似ています)。n=3 の場合、計算パフォーマンスは 1-(3+3)/9=33% 向上します。ただし、高性能コンピューティングのパフォーマンスを考慮すると、この分解によって L1 キャッシュ ミス率が増加する可能性があります。

  • ネットワークの幅と深さを適切にバランスさせることにより、ネットワークの計算オーバーヘッドを最適化します (この記述は特に非現実的です)。
  • サンプリング次元削減では、従来のサンプリング方法はプーリング+畳み込み演算です。特徴表現のボトルネックを防ぐために、多くの場合、より多くの畳み込みカーネルが必要です。たとえば、入力はn d×d特徴マップで、k個の畳み込みカーネルがあり、プーリング中のストライド= 2です。特徴表現のボトルネックを回避するために、kの値は2nであることがよくあります。インセプションモジュール構造を導入することで、特徴表現のボトルネックなしで計算の複雑さが軽減されます。これを実現するには2つの方法があります。

スムーズなサンプル注釈

マルチ分類サンプルの場合、注釈は一般的にワンホット([0,0,0,1]など)です。クロスエントロピーに似た損失関数を使用すると、モデルは学習中にグラウンドトゥルースラベルに自信過剰な確率を割り当てます。さらに、グラウンドトゥルースラベルのロジット値が他のラベルと大きく異なるため、過剰適合が発生し、一般化が低下します。 1 つの解決策は、正規化項を追加することです。つまり、サンプル ラベルの確率分布を調整して、サンプル注釈が「ソフト」になるようにします (例: [0.1、0.2、0.1、0.6])。この方法により、実験でトップ 1 とトップ 5 のエラー率が 0.2% 減少しました。

ネットワーク構造


GoogLeNet インセプション V4

GoogLeNet Inception V4/およびResNet V1/V2の3つの構造は、論文「Inception-v4、Inception-ResNet、および残余接続の学習への影響」で提案されました。この論文のハイライトは、より優れたGoogLeNet Inception v4ネットワーク構造を提案し、それを残余ネットワークと統合し、v4に劣らず、トレーニング速度が速い構造を提案していることです。

GoogLeNet Inception V4 ネットワーク構造

GoogLeNet Inception ResNet ネットワーク構造


コーディング練習

  Tensorflow コードは slim モジュールに完全実装されており、PaddlePaddle コードは前回の記事で書いた inception v1 コードを参考に記述することができます。


要約する

この記事はより理論的な内容で、主にGoogLeNetのインセプションモジュールの開発について説明しています。これにはv2で提案されたバッチ正規化、v3で提案された畳み込み階層とより一般的なネットワーク構造基準、v4での残差ネットワークとの組み合わせが含まれます。実際のアプリケーションでは、同じデータを異なるネットワーク構造で実行して結果を確認し、異なるネットワーク構造の損失削減率、精度の向上などを実際に体験できます。

<<:  10社にインタビュー、機械学習のインタビュー内容をまとめました

>>:  アクセラレーションクラウドが新製品を発売、異種コンピューティングアクセラレーションプラットフォームがAIと高性能コンピューティングのビジネスニーズに効果的に対応

ブログ    
ブログ    

推薦する

GPT-4Vがロボットの頭脳として機能すると、AIで計画を立てることができなくなる可能性があります

GPT-4V はすでに、Web サイトのコード設計やブラウザの制御に役立っています。これらのアプリケ...

AIチップがまだ普及していないのはなぜでしょうか?

2019年、国内外の業界関係者が共同でAIチップの開発を推進しました。 7nmチップはまだ完全に展...

脳コンピューターインターフェース技術は本当に人気がある

[[274622]]参加者は脳波計を装着し、コンピューターの画面を見つめながら、急速に点滅するターゲ...

AI が台頭して 9 年目を迎えた今、どんな大きな可能性があるのでしょうか?

2012年以来、人工知能の復活は9年目に入りました。「人工知能とは何か」に対する人々の認識は、当初...

...

...

清華大学がLLM4VGベンチマークを開発:LLMビデオタイミングポジショニングパフォーマンスの評価に使用

12月29日、大規模言語モデル(LLM)は、単純な自然言語処理から、テキスト、オーディオ、ビデオなど...

Java プログラミング スキル - データ構造とアルゴリズム「フィボナッチ検索」

[[398011]]基本的な紹介フィボナッチとは、線分を 2 つの部分に分割し、一方の長さと全体の...

エッジコンピューティングとエッジ AI とは何ですか?この2つの違いは何でしょうか?

AIチップはクラウドとエッジに分かれています。クラウドチップは高いパフォーマンスが求められますが、...

スマートホームとは何ですか?そしてそれは必要ですか?

スマートホームのコンセプトを最も簡単に説明すると、それは家の自然な進化であるということです。スマート...

...

...

科学技術の時代におけるあらゆる産業の発展を可能にするAIIA2020人工知能開発者会議が開幕

人工知能は科学技術革命を牽引する重要な原動力として、国家戦略計画や産業界の注目の的となり、オープンソ...

人工知能が医療に及ぼす12の影響

人工知能はヘルスケアに変革をもたらす力となることが期待されています。では、医師と患者は AI 駆動型...

...