AI・機械学習
中級

特徴蒸留(トクチョウジョウリュウ)

教師モデルの中間層が出力する特徴マップ(Feature Map)を生徒モデルに転写する蒸留手法。最終層の出力分布のみを使う従来の知識蒸留と比較して、より豊富な内部表現の情報を生徒に伝達でき、特に画像認識タスクで高い圧縮効率を示す。

0 回閲覧
0 いいね

特徴蒸留とは

特徴蒸留(Feature Distillation)は、教師モデルの中間層が生成する特徴マップ(Feature Map)の情報を生徒モデルに転写する蒸留手法の総称である。Adriana Romero らが2015年に発表した FitNets が先駆的研究として知られ、以降多数の改良手法が提案されている。

従来の出力蒸留との違い

Hinton の知識蒸留(Vanilla KD)は教師モデルの最終出力(ソフトラベル)のみを使うが、特徴蒸留は教師の「思考過程」に相当する中間層の活性化パターンも学習信号として活用する。

手法転写対象情報量計算コスト
出力蒸留(Vanilla KD)最終層の確率分布低(クラス数次元のみ)低
特徴蒸留(FitNets)中間層の特徴マップ高(空間×チャネル次元)中
注意蒸留(AT)注意マップ中(空間次元のみ)低〜中
関係蒸留(RKD)サンプル間の関係性中中〜高

主要な特徴蒸留手法

FitNets(2015)

教師の中間層「ヒント層」の出力を生徒の対応する層(「ガイド層」)が再現するように学習する。教師と生徒でチャネル数が異なる場合は1×1畳み込み層で次元を合わせる。学習は2段階で行い、まずヒント層までの蒸留で生徒の浅い層を固定し、その後全体をファインチューニングする。

PKT: Probabilistic Knowledge Transfer(2018)

特徴マップの確率的な解釈に基づく手法である。教師と生徒の特徴空間における確率分布の一致度をカーネル密度推定で評価し、その乖離を最小化する。

Overhaul of Feature Distillation(2019)

特徴蒸留の各要素(変換関数、距離関数、特徴位置)を体系的に再検討した研究である。マージン付き ReLU 変換と部分的 L2 距離の組み合わせが最良の結果を示すことを明らかにした。

ReviewKD(2021)

生徒モデルの各層が教師の対応する層だけでなく、教師の複数の層からの統合的なフィードバック(レビュー)を受ける手法である。特徴ピラミッドを構築して多スケールの情報を効率的に転写する。

実装上の考慮事項

次元の不一致への対処

教師と生徒のチャネル数が異なる場合、1×1畳み込み(Convolutional Regressor)を挟んで次元を合わせる。この変換層自体も学習対象となる。

ヒント層の選択

どの中間層をヒント層として使うかは性能に大きく影響する。一般的に、教師のネットワークの中間付近(1/3〜2/3の深さ)の層が最も有用な特徴情報を含むとされている。

損失の重み付け

特徴蒸留損失とタスク損失のバランスが重要である。特徴蒸留損失の重みが大きすぎると生徒が教師の表現に過度に拘束され、汎化性能が低下する。

適用分野

物体検出

YOLO や Faster R-CNN のようなリアルタイム物体検出モデルの圧縮に特徴蒸留が活用されている。バックボーンの中間特徴と検出ヘッドの特徴の両方を蒸留対象とすることで、mAP の低下を最小限に抑えつつ推論を高速化できる。

セマンティックセグメンテーション

ピクセル単位の分類タスクでは、空間的な特徴構造の情報が特に重要であるため、出力蒸留よりも特徴蒸留の方が効果的であることが多い。

自然言語処理

Transformer の中間層の隠れ状態を蒸留対象とする手法が TinyBERT で実証されている。Attention マップと隠れ状態の両方を蒸留することで、BERT の性能を4層モデルで高い再現率で維持する。

FAQ

Q1: 特徴蒸留と出力蒸留を併用すべきですか?

併用が推奨される。出力蒸留でクラス間の関係性を、特徴蒸留で内部表現の構造を転写することで、それぞれ補完的な効果を得られる。多くの最新手法はこの併用を前提としている。

Q2: Transformer モデルにも適用できますか?

適用可能である。TinyBERT では Self-Attention の出力と Feed-Forward 層の出力をヒント層として蒸留している。ViT(Vision Transformer)に対してもパッチトークンの特徴を蒸留する手法が提案されている。

Q3: どの中間層を蒸留するのが最も効果的ですか?

経験的にネットワークの中間〜後半の層が最も効果的である。浅い層は汎用的な低レベル特徴(エッジ、テクスチャ)を持ち転写の必要性が低く、最終層付近はタスク固有の情報に特化しすぎるためである。