Google Inceptionモデルのトポロジは、次の場所にあります。GoogleInception Netowrk
このモデルには3つのソフトマックスレイヤー(#154、#152、#145)があり、そのうちの2つはこのモデルの初期のエスケープです。
私が知っていることから、softmaxレイヤーは最終出力用ですが、なぜそれほど多くあるのですか?他の2つのレイヤーの目的は何ですか?
Google Inceptionモデルのトポロジは、次の場所にあります。GoogleInception Netowrk
このモデルには3つのソフトマックスレイヤー(#154、#152、#145)があり、そのうちの2つはこのモデルの初期のエスケープです。
私が知っていることから、softmaxレイヤーは最終出力用ですが、なぜそれほど多くあるのですか?他の2つのレイヤーの目的は何ですか?
回答:
短い答え:深いアーキテクチャ、特にGoogLeNet(22層)は、トレーニング中に逆勾配の問題が発生する危険性があります(逆伝搬アルゴリズム)。GoogLeNetのエンジニアは、最終的な損失が中間の損失と最終的な損失の組み合わせになるように、中間層にも分類子を追加することでこの問題に対処しました。これが、ネットワークの最後のレイヤーとして通常の単一レイヤーとは異なり、合計3つの損失レイヤーが表示される理由です。
より長い答え:従来の機械学習では、通常、特徴エンジニアリングと分類の間には違いがあります。ニューラルネットワークは、問題を「エンドツーエンド」で解決する能力で最も有名です。つまり、ニューラルネットワークは、データの表現を学習する段階と分類子をトレーニングする段階を組み合わせます。したがって、標準アーキテクチャ(AlexNetなど)のニューラルネットワークは、「表現学習」フェーズ(前から最後までのレイヤー)と「分類」フェーズで構成されていると考えることができます。損失関数。
より深いネットワークを作成する場合、「勾配の消失」問題として作成された問題が発生します。これは実際にはニューラルネットワークに固有のものではありません。むしろ勾配ベースの学習方法に。それはささいなことではないので、それ自体適切な説明に値します。良いリファレンスはこちらをご覧ください。「back-prop "アルゴリズム。
GoogLeNetの開発者はこの問題をどのように処理しましたか?彼らは、すべての識別情報を運ぶのは最終層の機能だけではないという事実を認識しました。中間機能は異なるラベルを区別することもできます。そして最も重要なのは、これらの値は、グラデーションがより多くの情報を運ぶ以前のレイヤーから抽出されるため、より「信頼できる」ことです。この直感に基づいて、彼らは2つの中間層に「補助分類子」を追加しました。これが、質問で参照したネットワークの真ん中にある「早期脱出」損失層の理由です。
総損失は、これら3つの損失層の組み合わせになります。私は元の記事から引用します:
これらの分類器は、Inception(4a)および(4d)モジュールの出力の上に配置される、より小さな畳み込みネットワークの形式をとります。トレーニング中に、それらの損失はネットワークの総損失に加算され、割引の重みが付けられます(補助分類子の損失は0.3で重み付けされます)。推論時に、これらの補助ネットワークは破棄されます。
視覚的に: