1行定義
蒸留とは、大きく高性能な教師モデルの出力を手本にして小さな生徒モデルを学習させ、軽いモデルで教師に近い性能を得る手法のことです。
くわしく
蒸留(知識蒸留、knowledge distillation)は、大きなモデルが身につけた知識を、小さなモデルに移す手法です。2015年にHintonらが発表した論文で広く知られるようになりました。エッジAIのように、計算資源が限られる場面で役立ちます。
教師と生徒
まず、大きく高精度なモデル(または複数のモデルのアンサンブル)を教師モデルとして学習します。次に、小さな生徒モデルを、教師モデルの出力に近づくように学習させます。
ソフトターゲット
通常の学習で使う正解ラベルは、「犬」なら犬だけが1、ほかは0という形です(ハードターゲット)。これに対し、教師モデルの出力は「犬0.90、狼0.08、猫0.02」のような確率の分布です。この分布をソフトターゲットと呼びます。
ソフトターゲットには、「この犬の画像は、猫より狼に少し似ている」というクラスどうしの似かたの情報が含まれます。生徒モデルはこの情報も学べるため、正解ラベルだけで学ぶより効率よく学習できます。
ただし、教師の出力が1つのクラスに集中しすぎると、この情報は見えにくくなります。そこで、ソフトマックス関数に温度Tを導入し、各クラスの値をexp(z_i / T)に比例させて計算します。Tを1より大きくすると分布がなめらかになり、小さな確率の差が見えやすくなります。学習では、正解ラベルに対する誤差も組み合わせるのが一般的です。
応用とほかの軽量化手法
BERTを蒸留したDistilBERTは、大きさを40%減らして60%速くしながら、言語理解の性能の97%を保ったと報告されています。
モデルの軽量化には、影響の小さい重みを取り除くプルーニングや、数値を少ないビット数で表す量子化もあります。これらが元のモデルを直接削ったり変換したりするのに対し、蒸留は別の小さなモデルを新たに学習させます。
覚え方
「先生の迷い(確率の分布)まで生徒に伝える」と覚えます。
G検定での出題
出題のされ方
教師モデルと生徒モデルの関係、ソフトターゲットと温度付きソフトマックス関数の役割、エッジAIのための軽量化という目的、プルーニングや量子化との違いが問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| 蒸留このページの用語 | 大きく高性能な教師モデルの出力を手本にして小さな生徒モデルを学習させ、軽いモデルで教師に近い性能を得る手法 |
| プルーニング | 学習済みのニューラルネットワークから出力への寄与が小さい重みや結合を取り除き、精度をなるべく保ったままモデルを小さくする手法 |
| 量子化 | モデルの重みなどの値を、より少ないビット数の粗い段階で表すことで、メモリ使用量を減らし、計算を速く軽くする手法 |
違いを表で比べる
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
蒸留では、教師モデルが出力するクラスごとの確率の分布をソフトターゲットとして使い、生徒モデルに学習させる。
答えを見る
答え ◯ 正しい
ソフトターゲットには、正解以外のクラスとどれだけ似ているかという情報が含まれます。生徒はこれを手がかりに効率よく学べます。
-
蒸留でソフトマックス関数の温度Tを大きくすると、出力の確率分布が1つのクラスに集中し、ワンホットベクトルに近づく。
答えを見る
答え × 誤り
温度を上げると分布はなめらかになります。Tを小さくするほど1つのクラスに集中します。蒸留ではTを上げて、小さな確率の差を見えやすくします。
-
蒸留は、学習済みモデルの重みのうち影響の小さいものを取り除き、元のモデルそのものを小さくする手法である。
答えを見る
答え × 誤り
それはプルーニングの説明です。蒸留は、教師モデルを手本にして、別の小さな生徒モデルを新しく学習させます。