【E資格不合格から学ぶ】GoogLeNet(画像認識)の3つのポイントを解説!

  • 「GoogLeNet」について学びたいけど理解できるか不安・・・
  • 「GoogLeNet」の仕組みが分からない?
  • 「GoogLeNet」の内容を分かりやすく教えて!

 「GoogLeNet」は、畳み込みニューラルネットワーク(CNN)の構造を持ち、「Inception module」と「Global Average Pooling」という手法を導入し、2014年にILSVRC(物体検出コンペティション)において優勝した深層学習モデルですが、難しそうで何から学んだらよいか分からず、勉強のやる気を失うケースは非常に多いです。

 私は過去に基本情報技術者試験(旧:第二種情報処理技術者試験)に合格し、また2年程前に「一般社団法人 日本ディープラーニング協会」が主催の「G検定試験」に合格しました。現在、「E資格」にチャレンジ中ですが3回不合格になり、この経験から学習の要点について学ぶ機会がありました。

 そこでこの記事では、「GoogLeNet」のポイントについて解説します。

 この記事を参考にして「GoogLeNet」が理解できれば、E資格に合格できるはずです。

<<「GoogLeNet」のポイントを今すぐ知りたい方はこちら

目次

1.概要

「GoogLeNet」とは・・・
  1. 畳み込みニューラルネットワーク(CNN)構造
  2. 3つの画期的な手法を導入
    Inceptionモジュール
    フィルタサイズの異なる複数の畳み込み処理を施した機構
     補足)Inception:直訳すると「始まり」
    Auxiliary Loss
    Global Average Pooling
  3. 2014年にILSVRC(物体検出コンペティション)において優勝
    ・分類誤差は7%
GoogLeNet Inceptionモジュール

GoogLeNet Inceptionモジュール
出典元:https://arxiv.org/pdf/1409.4842v1.pdf

2.Inceptionモジュール

Inceptionモジュールとは・・・
  1. 複数の畳み込み層pooling層から構成される小さなネットワーク
    ・「小さなネットワーク」=「1つのモジュール」として定義
    モジュールの積み重ねでネットワークを構築
  2. Inceptionモジュールを積層することによって層を深くする。
    ・様々な特徴を捉えることができる。
    ・大きな畳み込みフィルタ → 小さな畳み込みフィルタのグループで近似
    モデルの表現力とパラメータ数のトレードオフを改善
  3. 畳み込みフィルタ(1×1)
    次元削減としての側面を持つ
    ・1×1フィルタ(上図の黄色部分)の追加によって、次元を削減しているため非零パラメータの数が減少計算効率が向上
Inceptionの種類
  1. Inceptionーv1
    以前のAlexNetなどのCNNバックボーンよりも、
    ・大幅なパラメータ数削減による計算コスト削減
    ・深いネットワークにして表現力を向上
  2. Inceptionーv2
    ・畳み込みフィルタの大きさを変更
  3. Inceptionーv3
    ・新 Inceptionブロック(幅と深さのバランスがいい)を提案
    ・効率的かつ高精度な InceptionNet に進化
    ラベル平滑化を提案
    バッチ正規化を追加

2.Auxiliary classifiers

Auxiliary classifiersとは・・・
  1. 補助分類器
    ネットワークから分岐されたサブネットワークとして同時に学習
    クラス分類
    ⇒ 計算した勾配を分岐元のネットワークにフィードバック
  2. 勾配消失問題の解消
    ResNetと外観が異なるが、同様に勾配消失問題を解消できる。
  3. Auxiliary Lossの追加
    アンサンブル学習と同様の効果 ⇒ 汎化性能の向上
    ・Auxiliary Loss の代わりにBatch正規化を加える ⇒ 学習がうまくいく場合がある。
学生
学生

「Auxiliary Loss」の追加で1×1畳み込みにより次元削減が行われるから、計算量は減少できるの?

著者
著者

計算量の減少はできないよ!
なぜなら、「Auxiliary classifier」 が追加になったからだよ。

「GoogLeNet」の「Network」
「GoogLeNet」の「Network」

出典元:https://arxiv.org/pdf/1409.4842v1.pdf

3.Global Average Pooling

Global Average Poolingとは・・・

 各チャンネルの画素平均値を求める

ベクトル(各チャンネルの平均値が要素)に変換

次の演算でチャンネル毎の特徴量として計算
※計算量を大幅に削減

「Global Average Pooling」のイメージ
「Global Average Pooling」のイメージ
  • Pooling(プーリング)とは・・・必要なところは細かく、必要がないところは荒くデータを圧縮する方法
  • Pooling:直訳)集約する
  • Global: 直訳)制限のない
  • Average:直訳)平均

【グローバル平均プーリング (Global Average Pooling,全体平均プーリング)】

  • 特徴マップの空間領域の全体に対する平均プーリングを行う。
  • 物体認識系CNNの終盤層などにおいて全結合層による識別層の代わりによく用いられる [Lin et al., 2014].
引用元:「CVMLエキスパートガイド」

4.まとめ

【GoogLeNetの特徴】
  • Inceptionモジュール
    ・複数の畳み込み層を並列に重ね、複数のスケールの特徴を抽出するモジュール
    ・1×1フィルタの追加によって、次元を削減しているため非零パラメータの数が減少 ⇒ 計算効率が向上
    ・Inceptionーv1
    ・Inceptionーv2
    ・Inceptionーv3
  • Auxiliary Loss
    ・勾配消失問題を解消
    ・アンサンブル学習と同様の効果 ⇒ 汎化性能の向上
     (計算量を減少することは期待できない。)
    ・代わりにBatch正規化を加えると学習がうまくいく場合がある。
  • Global Average Pooling
     各チャンネルの画素平均値を求め、各チャンネルの平均値を要素とするベクトルに変換する。⇒ 計算量を大幅に削減

最後まで読んで頂きありがとうございます。
皆様のキャリアアップを応援しています!!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次