マグニチュードプルーニング(マグニチュードプルーニング)
重みの絶対値(マグニチュード)が小さいものから除去するニューラルネットワーク最古のプルーニング手法。LeCun 1990提案のOBDが起源。
マグニチュードプルーニング — ニューラルネットワーク圧縮の原点
マグニチュードプルーニング(Magnitude-based Weight Pruning)は重みの絶対値の大きさ(マグニチュード)を基準に不要な重みを除去するプルーニング手法です。ニューラルネットワーク圧縮の歴史の中で最も古く、最も広く知られている手法の一つです。
歴史的背景
プルーニングの概念はHanson & Pratt(1989)の研究に遡ります。その後1990年にYann LeCunらが "Optimal Brain Damage (OBD)" を発表し、重みの重要度をテイラー展開(二次近似)で理論的に評価する枠組みを提示しました。マグニチュードプルーニングはその簡略版として、二次導関数の計算を省略し単純に|w|が小さいものから除去するアプローチとして定着しました。
1993年にはBabakBarrett & HassibiがOBS(Optimal Brain Surgeon)でヘッシアン行列を用いたさらに精密な手法を提案しており、SparseGPTはこのOBSを現代LLMに適用したものです。
アルゴリズム
基本的な実装は非常にシンプルです:
import torch
def magnitude_prune(model, sparsity_ratio):
all_weights = torch.cat([p.flatten() for p in model.parameters()])
threshold = torch.quantile(all_weights.abs(), sparsity_ratio)
for param in model.parameters():
mask = param.abs() > threshold
param.data *= mask # 閾値以下をゼロに
イテレーティブプルーニング(Gradual Pruning)
一度に大量の重みを除去すると精度が大幅に劣化するため、実用的にはイテレーティブプルーニングが使われます:
- 小さな割合(例:10%)をプルーニング
- 短時間fine-tuning(pruning後の精度回復)
- スパース率が目標に達するまで繰り返す
Han et al. 2015の "Learning both Weights and Connections for Neural Network"(DeepCompression)がこの手法の代表例です。
LotteryTicket Hypothesis との関係
Frankle & Carlin(2018)の Lottery Ticket Hypothesis(LTH)はマグニチュードプルーニングの研究から生まれた重要な洞察です。LTHは「大きなネットワークには元々小さなサブネットワーク(winning ticket)が含まれており、このサブネットワークだけで訓練しても同等の精度が得られる」ことを示しました。
LLM での限界
LLMに対してマグニチュードプルーニングを直接適用すると精度劣化が大きいことが知られています。主な原因:
- 外れ値(Outliers)問題:LLMの特定チャネルには極端に大きな活性化値があり、これと対になる重みは絶対値が大きくなりやすい。マグニチュードだけではこの文脈が考慮されない
- レイヤー間の感度差:初期レイヤーと後期レイヤーでプルーニングへの感度が異なるが、均一な閾値設定では対応できない
Wandaはこの外れ値問題に活性化ノルムの乗算で対応し、マグニチュードプルーニングより大幅な改善を達成しました。
まとめ
マグニチュードプルーニングはニューラルネットワーク圧縮の出発点として、現代の高度なプルーニング手法の理解に不可欠な基礎概念です。シンプルさゆえのLLMでの限界を理解することが、WandaやSparseGPTのような手法がなぜ改善をもたらすかを把握する鍵になります。