結論
プルーニングは学習済みモデルから影響の小さい重みや結合を取り除いてパラメータの数を減らし、量子化はパラメータの数はそのままで、1つ1つの値を表すビット数を減らします。蒸留は元のモデルを直接削らず、大きな教師モデルの出力を手本にして、小さな生徒モデルを新しく学習させます。
比較表
| 観点 | プルーニング | 量子化 | 蒸留 |
|---|---|---|---|
| 英語 | pruning | quantization | knowledge distillation |
| 減らすもの | 重みや結合、チャネルなどの数 | 1つの値を表すビット数(例:32ビットの浮動小数点数を8ビットの整数に) | モデルの規模(小さく設計した別のモデルに置き換える) |
| 元のモデルの扱い | 元のモデルの一部を取り除く | 元のモデルの値を粗い段階で表し直す | 教師として手本に使い、別の生徒モデルを作る |
| パラメータの数 | 減る | 変わらない | 生徒モデルを小さく設計した分だけ少なくなる |
| 学習との関係 | 取り除いた後、残った重みで再学習して精度を取り戻すのが基本 | 学習後にそのまま変換する方法と、量子化の誤差を見込んで学習する方法がある | 生徒モデルを学習させる工程が必ず要る |
| 速度への効き方 | 重みを1つずつ0にするだけでは、疎な計算に対応したライブラリやハードウェアがないと速くなりにくい。フィルタやチャネルをまとめて削ると速くしやすい | 整数の計算に置き換えると、メモリと計算の両方を減らしやすい | 生徒モデルが小さい分だけ速くなる |
| 代表的な研究 | LeCunらのOptimal Brain Damage(1989年)、Hanら(2015年)、フィルタ単位で削るLiら(2016年) | Jacobらの整数演算だけで推論する方式(2017年) | Hintonら(2015年)、DistilBERT(2019年) |
| シラバス項目 | 技術分野 項目34 モデルの軽量化 | 技術分野 項目34 モデルの軽量化 | 技術分野 項目34 モデルの軽量化 |
| G検定での問われ方 | 影響の小さい重みを取り除く仕組み、再学習、宝くじ仮説との関係 | ビット数とデータ量の関係の計算、パラメータの数が変わらない点 | 教師モデルと生徒モデルの関係、ソフトターゲットと温度の役割 |
最終確認日:2026年11月1日
それぞれの説明
プルーニング、量子化、蒸留は、どれも学習済みのモデルを小さく、速くするモデル圧縮の手法です。スマートフォンや工場の端末で推論するエッジAIや、大規模言語モデルを少ない計算資源で動かす場面で使われます。3つの違いは、何を減らすかと、元のモデルをどう扱うかにあります。
プルーニング
プルーニングは、出力への影響が小さい重みや結合を取り除きます。重みの絶対値が小さいものから削るのが基本で、削った後は残った重みで再学習して精度を取り戻します。2015年のHanらの研究では、AlexNetのパラメータを約6,100万から約670万に減らしても、精度は下がりませんでした。ただし、重みを1つずつ0にするだけでは0が不規則に散らばり、疎な計算に対応した仕組みがないと計算はあまり速くなりません。フィルタやチャネルをまとめて削れば、通常の計算環境でも速くしやすくなります。
量子化
量子化は、パラメータの数はそのままに、1つの値を表すビット数を減らします。32ビットの浮動小数点数を8ビットの整数にすれば、重みのデータ量は約4分の1になります。整数の計算は軽いため、速度や消費電力の面でも有利です。学習を終えたモデルをそのまま変換する方法と、量子化の誤差を見込んで学習する方法があります。
蒸留
蒸留は、元のモデルを直接削りません。大きな教師モデルの出力を手本にして、小さな生徒モデルを新しく学習させます。教師が出す各クラスの確率(ソフトターゲット)には、クラスどうしがどれだけ似ているかという情報も含まれ、生徒はそれも学べます。生徒の構造を自由に決められる一方、学習をやり直す手間がかかります。
組み合わせて使う
3つは対立する選択肢ではありません。2015年に発表されたDeep Compressionは、プルーニング、量子化、ハフマン符号化を順に行い、AlexNetの保存に必要な容量を240MBから6.9MBへ、精度を落とさずに約35分の1にしました。蒸留で作った小さなモデルを、さらに量子化することもできます。
見分けるコツ
- キーワードで見分けます。「取り除く」「刈り込む」ならプルーニング、「ビット数」「整数」「値を粗く表す」なら量子化、「教師」「生徒」「ソフトターゲット」なら蒸留です。
- パラメータの数に注目します。減るのはプルーニングで、変わらないのは量子化です。蒸留は別の小さなモデルを作るので、元のモデルを削るわけではありません。
- 3つは組み合わせて使えます。プルーニングと量子化などを順に行う研究もあるため、「どれか1つしか使えない」という説明は誤りです。
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
蒸留では、生徒モデルの構造を教師モデルと同じにする必要はなく、層の数を減らした小さなモデルを生徒にできる。
答えを見る
答え ◯ 正しい
生徒は教師の出力を手本に新しく学習するため、構造を自由に決められます。BERTを蒸留したDistilBERTも、層の数を減らした生徒モデルです。
-
プルーニングで重みの一部を取り除いたモデルは、構造が変わっているため、続けて量子化することはできない。
答えを見る
答え × 誤り
2015年に発表されたDeep Compressionは、プルーニングの後に量子化とハフマン符号化を行い、AlexNetの保存容量を約35分の1にしました。手法は組み合わせられます。
-
蒸留で得た生徒モデルは、教師モデルと同じ数のパラメータを持ち、1つ1つの値を表すビット数だけが少なくなっている。
答えを見る
答え × 誤り
パラメータの数を変えずにビット数を減らすのは量子化です。蒸留の生徒モデルは、教師の出力を手本に新しく学習させた別のモデルで、層の数を減らすなどして教師より小さく設計するのが普通です。
関連問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目34 モデルの軽量化)
- Song Han, Jeff Pool, John Tran, William J. Dally, Learning both Weights and Connections for Efficient Neural Networks, NIPS 2015
- Hao Li, Asim Kadav, Igor Durdanovic, Hanan Samet, Hans Peter Graf, Pruning Filters for Efficient ConvNets, ICLR 2017 (Abstract、1 Introduction)
- Benoit Jacob et al., Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference (2017)
- Geoffrey Hinton, Oriol Vinyals, Jeff Dean, Distilling the Knowledge in a Neural Network (2015)
- Victor Sanh, Lysandre Debut, Julien Chaumond, Thomas Wolf, DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter (2019) (3 DistilBERT: a distilled version of BERT(Student architecture))
- Song Han, Huizi Mao, William J. Dally, Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding, ICLR 2016
ほかの違い比較
- アジャイルとウォーターフォールの違い 進め方とAI開発での使い分け
- 赤池情報量規準(AIC)とベイズ情報量規準(BIC)の違い 罰則の重さ
- バギングとブースティングの違い 並列か逐次か、減らす誤差の違い
- バッチ正規化とレイヤー正規化の違い 平均と分散を計算する範囲の違い
- バッチ学習・ミニバッチ学習とオンライン学習の違い 更新回数とぶれ
- BERTとGPTの違い エンコーダとデコーダ、学習課題の違い
- CBOWとスキップグラムの違い 予測の向きと学習の速さ
- 分類問題と回帰問題の違い 出力の形で見分けるコツと評価指標
- CNN・RNNとTransformerの違い 得意なデータと計算の並列性
- 協調フィルタリングとコンテンツベースフィルタリングの違い 仕組み
- 共分散と相関係数の違い 式の関係と単位・値の範囲
- データ汚染とAdversarial Attackの違い 学習時か推論時かと対策
- 決定木とランダムフォレストの違い 解釈のしやすさと精度・安定性
- 深さ優先探索と幅優先探索の違い 調べる順番・最短解・メモリ
- 営業秘密と限定提供データの違い 3つの要件と刑事罰の有無
- Faster R-CNNとYOLOの違い 2段階型と1段階型、速度と精度
- GANと拡散モデル(Diffusion Model)の違い 学習と生成の仕組み
- GANとVAEの違い 識別器の有無と学習の仕組み
- GDPRと個人情報保護法の違い 法的根拠・本人の権利・制裁金
- 勾配降下法と誤差逆伝播法の違い 勾配を使う側と求める側
- グリッドサーチとランダムサーチの違い 試行回数の決まり方と効率
- ホールドアウト検証と交差検証の違い 分割回数・計算量・使い分け
- 画像分類(物体識別)と物体検出の違い 出力の形と使い分け
- 委託・第三者提供と共同利用の違い 同意の要否と受け手が使える範囲
- k-means法と階層的クラスタリングの違い クラスタ数を決める時期と計算量
- 個人情報・個人データと保有個人データの違い 範囲の入れ子とかかる義務
- 個人情報と個人識別符号の違い 包含関係と当たる例・当たらない例
- L1正則化とL2正則化の違い 罰則の形と重みが0になるか
- 最小二乗法と最尤法の違い 推定の基準と結果が一致する条件
- LIMEとSHAPの違い 局所近似とシャープレイ値の使い分け
- LSTMとGRUの違い ゲートの数と記憶セルの有無
- 機械学習とディープラーニングの違い 包含関係と特徴量の決め方
- 平均絶対値誤差(MAE)と平均二乗誤差(MSE)の違い 外れ値への強さ
- 正規化と正則化の違い 目的と代表的な手法を表で整理
- 主成分分析(PCA)と特異値分解(SVD)の違い 目的と計算の関係
- 主成分分析(PCA)とt-SNEの違い 線形か非線形か、保つ構造の違い
- 適合率と再現率の違い 分母の違いと重視する場面
- Q学習とSARSAの違い 更新式の1か所と方策オン・オフ
- RNNとLSTMの違い 記憶セルと勾配消失の起きにくさ
- Self-AttentionとSource-Target Attentionの違い Q・K・Vの出どころ
- セマンティック・インスタンスとパノプティックの違い 背景と個体の扱い
- 新規性と進歩性の違い 比べ方とAI発明での論点
- シグモイド関数とソフトマックス関数の違い 出力の合計と使い分け
- ソフトローとハードローの違い 法的拘束力の有無と日本・EUの例
- 強いAIと弱いAIの違い 心をもつと考えるかの違い
- 教師あり学習・教師なし学習と強化学習の違い 学習の手がかりと代表例
- 特許権と著作権の違い 発生・保護対象・期間とAIでの使い分け
- 匿名加工情報と仮名加工情報の違い 加工の程度と第三者提供の可否
- 転移学習とファインチューニングの違い 重みを固定するか更新するか
- 請負契約と準委任契約の違い 完成義務とAI開発での使い分け
- Zero-shotとFew-shotの違い 与える例の数と重みを更新しない点