SENet(エスイーネット)は、CNNの特徴マップの「チャネルごとの重要度」を自動で学習して調整する、Squeeze-and-Excitation(SE)ブロックを導入した画像認識モデルです。この記事では、SEブロックの3ステップ(圧縮→重み計算→掛け合わせ)を順番に解説します。

📖 ひと言でいうと

SENetは、CNNが作る特徴マップの各チャネルに「今回の画像ではこのチャネルが大事」という重み(0〜1)を付けて、重要なチャネルを強調し不要なチャネルを抑えるモデルです。例えるなら、大勢のスピーカーが同時に音を出しているミキサー室で、曲に合わせて各スピーカーの音量つまみを自動調整するエンジニアのような仕組みです。厳密には、この「つまみの位置」を入力画像ごとに動的に計算するのがSEブロックの役割です。

🖼 1枚でわかるSENet

SENet — チャネルに「注意」を向けるCNN
  • 提案年 — 2017年。CNNの性能向上が目的
  • 中核部品 — Squeeze-and-Excitation(SE)ブロック
  • Squeeze — グローバル平均プーリング(GAP)で各チャネルを1つの値に圧縮
  • Excitation — 全結合層+シグモイドで0〜1のチャネル重みを計算
  • Scale — 重みを元の特徴マップに掛け、重要なチャネルを強調
つくもち屋「G検定対策」SUMMARY

📘 公式テキストの説明

2017年に提案された画像認識モデルで、畳み込みニューラルネットワーク(CNN)の性能向上を目的としている。このモデルは、各チャネルの重要度を動的に調整する「Squeeze-and-Excitation(SE)ブロック」を導入している。SEブロックは、まず入力特徴マップの空間情報をグローバル平均プーリング(GAP)によって圧縮し、各チャネルの全体的な情報を抽出する。次に、全結合層を通じてチャネル間の相関を学習し、シグモイド関数で0から1の範囲に正規化された重みを得る。最後に、この重みを元の特徴マップに再度掛け合わせることで、重要なチャネルを強調し、不要なチャネルの影響を抑制する。この手法により、CNNは入力画像の特徴をより効果的に捉えることが可能となり、画像認識タスクにおいて高い精度を達成している。

読み解きのカギは「チャネル」です。CNNの畳み込み層の出力(特徴マップ)は、縦×横×チャネル数の3次元で、各チャネルは「縦線に反応する層」「特定の色に反応する層」のように異なる特徴を捉えています。従来のCNNはすべてのチャネルを同じ重みで次の層に渡していましたが、SEブロックは画像ごとに「どのチャネルが役立つか」を計算し、メリハリを付けてから渡します。

🔍 しっかり理解する

SEブロックの3ステップ

SEブロックの処理は、名前のとおりSqueeze(圧縮)とExcitation(励起)、そして最後のScale(掛け合わせ)の流れで理解できます。

特徴マップ
縦×横×チャネル数
Squeeze
GAPでチャネルごとに1値へ圧縮
Excitation
全結合層で相関を学習しシグモイドで0〜1の重みに
Scale
重みを元の特徴マップに掛けて強弱を付ける

Squeezeでは、グローバル平均プーリング(GAP)によって各チャネルの縦×横全体を平均し、チャネルごとに1つの数値へ圧縮します。これで「各チャネルが画像全体でどれくらい活性化したか」の要約ができます。Excitationでは、この要約ベクトルを小さな全結合層2つに通してチャネル同士の関係を学習し、シグモイド関数で0〜1の重みに変換します。最後のScaleで、この重みを元の特徴マップのチャネルごとに掛け合わせます。重み0.9のチャネルはほぼそのまま、重み0.1のチャネルは大きく抑制される、というわけです。

「後付けできる部品」であることが強み

SEブロックは、それ自体が独立したネットワークというより、既存のCNNに挿入できる小さなモジュールです。ResNetの残差ブロックに組み込めばSE-ResNet、Inceptionに組み込めばSE-Inceptionというように、さまざまなモデルの強化パーツとして機能します。追加される計算量とパラメータはわずかで、精度向上の効果に対してコストが小さいことが特長です。

注意機構(Attention)との関係

SEブロックの「重要な部分に重みを付ける」という発想は、注意機構(Attention)の一種と位置づけられます。ただし、Transformerの自己注意が「どの位置(単語やパッチ)に注目するか」を扱うのに対し、SEブロックは「どのチャネル(特徴の種類)に注目するか」を扱う点が異なります。空間方向ではなくチャネル方向の注意である、と整理しておきましょう。

💡 具体例で考える

SENetは、画像認識の世界的コンペILSVRCの2017年大会(最終回)で優勝したモデルとして知られています。AlexNet(2012年)に始まりGoogLeNetやResNetが競い合ったこの大会の掉尾を飾ったのがSENetであり、「チャネル方向の注意」というシンプルな追加部品だけで最先端モデルをさらに押し上げられることを示しました。

動作のイメージも具体的に考えてみましょう。たとえば黄色い花の画像を分類するとき、「黄色に強く反応するチャネル」や「花びらのような曲線に反応するチャネル」は判断に役立ちますが、「空の青に反応するチャネル」はあまり役立ちません。SEブロックは入力ごとにこの判断を行い、前者の重みを大きく、後者の重みを小さくして次の層に渡します。同じネットワークでも、犬の画像が来ればまた別のチャネルが強調されます。この「入力に応じた動的な調整」が、固定の重みしか持たない従来のCNNとの本質的な違いです。

⚠️ よくある誤解・紛らわしい用語

💡 ポイント
  • 「SEブロックは空間のどこを見るかを決める」は誤り — SEブロックが調整するのはチャネル方向の重要度です。空間方向(画像のどの場所か)の注意ではありません。
  • GAPの役割の混同 — SENetのGAPは各チャネルの情報を1値に要約する「Squeeze」のための操作です。GoogLeNetなどで全結合層の代わりに使われるGAPと操作自体は同じですが、ここでは重み計算の入力を作る目的で使われています。
  • シグモイドとソフトマックスの混同 — SEブロックの重みはシグモイドで各チャネル独立に0〜1へ正規化されます。合計が1になるソフトマックスではないため、複数のチャネルが同時に高い重みを持てます。
  • SENetとResNetの関係 — SENetはResNetの改良版という単純な位置づけではなく、SEブロックをさまざまな既存CNNに組み込む枠組みです。

📝 試験でのポイント

💡 ポイント
  • 「各チャネルの重要度を動的に調整するブロックを導入したモデルはどれか」という形式で、SENet(SEブロック)を選ばせる出題が想定されます。
  • SEブロックの処理順序(GAPで圧縮→全結合層→シグモイドで重み→元の特徴マップに掛け合わせ)の並べ替えや穴埋めに対応できるようにしておきましょう。
  • 提案年2017年、目的は「CNNの性能向上」という基本情報も選択肢の判別材料になります。
  • 「チャネル方向の注意機構」という位置づけを、Transformerの自己注意(空間・系列方向)と区別して押さえておくと応用問題に強くなります。

📚 まとめ

💡 ポイント
  • SENetは2017年に提案された、CNNの性能向上を目的とする画像認識モデルです。
  • 中核はSqueeze-and-Excitation(SE)ブロックで、GAPによる圧縮→全結合層とシグモイドによる重み計算→元の特徴マップへの掛け合わせ、という流れでチャネルの重要度を動的に調整します。
  • 既存のCNNに後付けできる軽量モジュールであり、ILSVRC 2017で優勝した実績を持ちます。
  • 「チャネル方向の注意」というキーワードで覚えるのが試験対策の近道です。