モデルの軽量化(シラバス 技術34)

1行の定義と◯×チェックは用語『モデル圧縮』の解説にあります。

学習目標

計算資源の限られた端末でAIを動かすエッジAIの利点と制約を理解し、蒸留・プルーニング・量子化といったモデル圧縮の手法がそれぞれモデルの何を減らして軽くするのかを区別したうえで、宝くじ仮説が示した考え方を説明できるようにします。

要点

なぜ軽くするのか

高い性能を出すモデルは重みの数が多く、大きなメモリと計算量を必要とすることが多くあります。データをクラウドに送って処理する方法もありますが、通信の遅れが許されない用途や、映像などのデータを外に出したくない用途もあります。そこで、スマートフォン、カメラ、自動車、工場の機器といった現場の端末(エッジ)で推論まで行うのがエッジAIです。

観点エッジAIクラウドで処理
応答通信を待たずに返せる通信の分だけ遅れる
回線が切れたとき動き続ける止まる
データ端末の外に出さずに済む外部へ送る
計算資源小さく、電力も限られる大きい

限られた資源で動かすために、精度をなるべく保ったままモデルを小さく速くする技術を、まとめてモデル圧縮と呼びます。

3つの代表的な手法

  • 量子化:重みなどの数値を、少ないビット数で表します。32ビットの浮動小数点数を8ビットの整数にすれば、重みを保存する容量は約4分の1になります。そのぶん精度が少し落ちることがあります。
  • プルーニング(枝刈り):重要度の低い重み(ニューロンどうしの結合)や、ニューロンそのものを取り除きます。値が0に近い重みを削るのが代表的な方法で、削ったあとに学習し直して精度を取り戻します。
  • 蒸留:大きく高性能な教師モデルの出力を手本に、小さな生徒モデルを学習させます。正解ラベルだけでなく、「猫らしいが少し犬にも似ている」といった、教師が出す各クラスの確率の分布もまねるため、小さなモデルでも教師に近い性能が出やすくなります。

覚えるときは「何を減らすか」で分けます。量子化は数値を表すビット数を、プルーニングは重みの数を減らします。蒸留は、モデルそのものを小さく作り直します。これらは組み合わせて使えます。2015年のDeep Compressionは、プルーニング、量子化、ハフマン符号化を順に組み合わせました。

宝くじ仮説

2018年にFrankleとCarbinが示した仮説です。ランダムな初期値で作った大きなネットワークの中には、元の初期値のまま単独で学習しても、元と同じくらいの学習回数で同程度の精度に達する小さな部分ネットワークが含まれている、というものです。この部分ネットワークを「当たりくじ」と呼びます。

当たりくじは、学習とプルーニングを繰り返し、残った重みを元の初期値に戻すことで見つけます。同じ構造でも初期値をランダムに付け直すと学習が遅くなり精度も下がるため、当たりくじは構造と初期値の組み合わせに恵まれた部分だと考えられます。大きなネットワークが学習しやすいのは、たくさんのくじを引いているからだ、という見方につながります。

最初から軽く設計する

圧縮とは別に、MobileNetのように、少ない計算量で動くよう最初から設計したモデルもあります(画像認識の項目)。

G検定で問われる深さ

圧縮率の数値や実装の手順は不要です。3つの手法がそれぞれ何を減らすか(蒸留はモデル全体の大きさ、プルーニングは重みの数、量子化は数値のビット数)、蒸留での教師と生徒の関係、宝くじ仮説の当たりくじの意味、エッジAIの利点を説明できれば十分です。

つまずきやすい点

  • 量子化は1つ1つの数値を表すビット数を減らし、プルーニングは重みや結合の数そのものを減らす、という減らす対象の違い
  • 蒸留では生徒モデルが教師モデルの重みを受け継ぐのではなく、教師が出す確率の分布を手本に学習するので、生徒は教師と違う小さな構造でよい点
  • 宝くじ仮説の当たりくじは、元の初期値のまま単独で学習すると元のネットワークと同等の精度に達する部分ネットワークで、初期値をランダムに付け直すと同じようには学習できない点
  • エッジAIは主に推論を端末側で行う形で、学習はクラウドなど計算資源の大きい場所で行うことが多い点

シラバスのキーワード

エッジAI、蒸留、宝くじ仮説、プルーニング、モデル圧縮、量子化

練習問題

  1. モデル軽量化の手法
  2. 量子化による重みのデータ量
  3. エッジAIを採用する利点
  4. 蒸留におけるソフトターゲット

混同しやすい用語

AIで作成 人による確認:未 誤りを報告

出典と作成について

作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合。手順は編集方針)

最終更新日: 最終確認日:

対応シラバス:シラバス第1.4版 技術34

改訂履歴

ディープラーニングの応用例の中項目
  1. 画像認識
  2. 自然言語処理
  3. 音声処理
  4. 深層強化学習
  5. データ生成
  6. 転移学習・ファインチューニング
  7. マルチモーダル
  8. モデルの解釈性
  9. モデルの軽量化

表示設定

テーマ
文字の大きさ
問題演習