スパース化(Sparsification)とは
Sparsification
パラメータや計算グラフの大部分を0または未使用にし、実質的な計算量・メモリ使用量を削減する手法の総称
ひとことで言うと
モデルの中の多くの部分を「使わない」状態にして、計算量やメモリを減らす手法。
概要
スパース化とは、ニューラルネットワークの重みや中間出力の大部分を0または未使用の状態にし、密な(dense)行列演算を前提とした場合よりも実質的な計算量・メモリ使用量を削減する手法の総称を指す。重みの多くを0にするプルーニングはスパース化の代表的な実現手段の1つであり、他にもMixture of Expertsのように入力ごとに一部のパラメータのみを活性化させる構造的なアプローチも、広義のスパース化に含まれる。スパース化の効果を実際の高速化につなげるには、スパースな行列演算に対応した専用のハードウェアやライブラリのサポートが必要になることが多い。
利点
- パラメータ数に対して実質的に使用する計算量・メモリ量を減らせるため、モデルサイズを保ったまま推論コストを下げられる
- Mixture of Expertsのように、入力ごとに必要な部分のみを活性化させることで、モデル全体の表現力を保ちながら計算量を抑えられる
欠点
- 非構造的なスパースパターンは、対応するハードウェアやライブラリがない環境では計算の高速化につながらない
- スパース化の度合いを高めすぎると、密な演算と比べて精度が低下しやすい