[ディープラーニングシリーズ] 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と高性能コンピューティングのビジネスニーズに効果的に対応

ブログ    
ブログ    

推薦する

11月に最も人気のあるオープンソース機械学習プロジェクトとRedditの議論トップ5

導入データ サイエンティストになる上で最も良いことの 1 つはプログラミングです。多くの場合、私は...

自動応答は人工知能ではなく、自律応答は

セキュリティ オペレーション センター (SOC) のアナリストは推論と意思決定に優れていますが、2...

Aiti Tribe Clinic 第 6 回: 機械学習は緊急事態をどのように判断するのか?

[51CTO.com からのオリジナル記事]活動の説明: Aiti Tribe は、コア開発者に詳...

Lilith モバイルゲームにおける不正防止の設計と調査

1. モバイルゲーム闇産業チェーンまず、モバイルゲームのブラック産業チェーンを紹介します。これは基本...

モデル量子化とエッジAIがインタラクションを定義する方法

AI とエッジ コンピューティングの融合により、多くの業界が変革されるでしょう。移植性を向上させ、モ...

シングルを保存: このオブジェクトジェネレーターは、将来のオブジェクトがどのように見えるかを確認するのに役立ちます

将来の妻や夫がどんな人か分からないですか?さあ、まずはAIを使って予測してみましょう。 [[3123...

...

ローコード プラットフォームに関する不完全な推奨事項!

ソフトウェア開発者向けのローコード機能それでは、ソフトウェア開発者に機械学習機能を提供するローコード...

新たな AI の冬を回避するにはどうすればよいでしょうか?

人工知能はここ数年で大きな進歩を遂げてきましたが、開発者の過剰な約束とエンドユーザーの非現実的な期待...

...

ファーウェイクラウドは、2021年世界インターネット会議で人工知能イノベーションの3つの要素を提案し、新たな産業エコシステムを構築

本日、2021年世界インターネット大会烏鎮サミットにおいて、ファーウェイ上級副社長、ファーウェイクラ...

チャットボット開発の三銃士: LLAMA、LangChain、Python

チャットボットの開発は、複数のテクノロジーとツールを組み合わせて使用​​する必要がある複雑で困難な作...

ChatGPTを使った学生の不正行為を防ぐため、一部の大学教授は紙ベースの試験と手書きのエッセイへの復帰を検討している。

8月14日、人工知能(AI)の発展は教育に新たな課題をもたらしました。フォーチュン誌の最近の報道に...

OpenAI が GPT-3 の微調整機能を公開、コマンド 1 行で実現可能!精度は最大4倍に向上します

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

ビッグデータの時代に、「アルゴリズム崇拝」に陥らないためにはどうすればいいのでしょうか?

「データ」は今日、これほど広く注目されたことはありません。以前は、携帯電話番号などの情報を何気なく...