Google 社によって開発された歴史的に著名なCNNモデルGoogLeNet は、異なるサイズの畳み込み層を並列に並べたインセプション・モジュール(Inception Module)という横に広がりを持つ構造が特徴です。
この構造により、計算量を抑えながら効率的に多様な特徴を抽出することが可能となっています。その理由をこの記事で噛み砕いて説明します。
ここで解説する「マルチスケール処理」や「ボトルネック構造」はGoogLeNetニ限定されず、画像認識分野にとって汎用的な概念ですので、G検定のためにぜひ理解を深めていただきたいです。
■インセプション・モジュールによって多様な特徴を抽出できる理由
インセプション・モジュールでは1つの入力に対して複数サイズの畳み込みを同時に適用します。1×1畳み込み、3×3畳み込み、5×5畳み込み、およびプーリング処理を並列に行い、それらの出力をチャネル方向に結合(concat)します。
このような構造により、局所的な特徴(小さい領域)から大域的な特徴(大きい領域)特徴まで、異なるスケールの情報を同時に捉えることができます。このような性質を画像処理の分野では「マルチスケール処理」と呼びます。
単一サイズの畳み込み(例えば3×3のみ)を持つ層においては、特定のスケールの特徴しか捉えることができません。これに対して、インセプション・モジュールでは異なる視点(受容野)で特徴抽出し、表現力の高いモデルを実現できます。具体的に、1×1 畳み込みはチャネル統合に使います。3×3 畳み込みは局所的な特徴の抽出、5×5 畳み込みはより大域的な特徴の抽出に使用されます。
■インセプション・モジュールによって計算効率を改善できる理由
仮に全て5×5畳み込みにすると、計算量が大きくなってしまいます。そこでGoogLeNetでは工夫として、3×3や5×5の畳み込みの前に1×1畳み込みを挿入しています。1×1畳み込みによってチャネル数を削減してから計算を行うことで、この仕組みをbottleneck構造と呼ばれます。
■なぜ1×1畳み込みによって次元削減できるのか?
通常の畳み込み(3×3や5×5の畳み込み)は空間方向に計算を行い、近隣の画素同士を組み合わせるようにして処理を行います。
これに対して、1×1畳み込みは1画素のみ扱うため、空間方向(縦横方向)何も組み合わせずに、代わりにチャネル方向を混ぜています。厳密に言うと、チャネル方向の「重み付き和」を計算しています。それによって、チャネル方向に次元削減を行っています。1×1畳み込みによる「チャネル方向の結合」とはこの事を言っています。
例えば、入力画像のある1画素のRGB方向の値が{R,G,B}={0.1,0.6,0.3}だったとします。これに1×1畳み込みを適用すると、次元削減された後の新しい値はa×R + b×G + c×Bとなります(a,b,cは重み)。



