316 モデル圧縮

モデル圧縮は、メモリ使用量の削減によってエッジデバイス上で推論できるようになることを実現したり、あるいはパラメータ数を少なくすることによって計算量を小さくさせる、すなわち学習や予測に要する時間を減らすことで効率的な検証ができるようになるといったメリットが期待できる手法。モデル圧縮の代表的な手法にはPruning(枝刈り)、Quantize(量子化)、Distillation(蒸留)の3つの手法ある。

Pruning(枝刈り)

Pruning(枝刈り)は関係性が薄いノードを間引く方法です。ディープラーニングの結果、過学習してしまった無駄なノードをなくすことで、計算量を減らします。重要度の低いノードを選んで切り離すため、精度もあまり下げずに高速化することが可能です。

​人間の脳も年齢とともに情報が蓄積されていくため、必要なときに情報を引き出しにくいといわれます。人間の脳の情報を整理することはできませんが、AIデバイスのノード間の関連度を数値化して、チューニングすることは可能です。​

Quantize(量子化)

量子化とは近似的にデータを扱うことをいい、情報量を少なくして計算を効率化する方法です。ディープラーニングでは、ノード間の情報を32ビット浮動小数点精度単位で扱うのが一般的ですが、用途によっては情報量が多すぎます。仮に8ビットで量子化すれば処理速度が増し、低スペックの端末機械にAIを搭載するのも容易になります。

ASICやFPGAなどは効率よく計算することが期待できます。ただしビットが小さくなるほど精度が低下する可能性もあります。

Distillation(蒸留)

AIの開発対象に、それより大きなモデルを教師モデルとして継承する方法を蒸留といいます。大きなモデルの学習結果を生徒モデルへ引き継ぐことで、低スペックのデバイスでも高い精度を実現できます。蒸留では、大きなモデルの学習結果(soft target)と、教師モデルの学習などに利用する正解ラベル(hard target)を比較させて正解を導き出します。

​たとえば飛行機の画像を判定する際、hard targetには「この画像は飛行機だ」という正解の情報しかありませんが、soft targetを用いることで「飛行機には翼があり、窓があり……」という多角的な学習が期待できます。​