スパース重みとは、ニューラルネットワークなどの機械学習モデルにおいて、値がゼロであるパラメータの割合が高い状態、またはその重み自体のことです。モデルの軽量化や推論処理の高速化、メモリ消費量の削減を目的として、不要な結合を削減するプルーニングなどの技術によって構築されます。
スパース重みとは
スパース重みとは、機械学習モデルにおいて、数多くのパラメータのうち、大部分がゼロになっている状態、またはそのゼロにされた重みのことです。これにより、計算や保存に必要なリソースを大幅に削減できます。
詳しく解説
ニューラルネットワークは一般に数億から数千億ものパラメータを持ち、膨大な計算量とメモリを消費します。しかし、学習後のモデルには予測結果にほとんど影響を与えない不要な結合が多く存在します。この不要な重みをゼロに置き換えるプロセスをプルーニングと呼び、これによって作られるのがスパース重みです。スパースな状態にすることで、ゼロとの掛け算をスキップできるようになり、計算効率が向上します。また、非ゼロのデータのみを保持する特別なデータ構造を利用することで、モデルのファイルサイズやメモリ使用量を劇的に圧縮することが可能になります。
具体例・使われ方
例えば、スマートフォンのようなエッジデバイスで大規模言語モデル(LLM)や画像認識AIを動作させる際、メモリ制限をクリアするためにスパース重みが活用されます。また、GPUなどの最新ハードウェアでは、特定のスパース行列演算の高速化をサポートしており、これにより実質的な推論速度が向上するケースがあります。
似た用語との違い
混同されやすい概念にデンス重みとスパースデータがあります。デンス重みは、すべての重みにゼロ以外の実数値が詰まっている標準的な状態を指します。一方、スパースデータはモデルの入力データが疎であることを指すのに対し、スパース重みはモデル内部のパラメータ自体が疎であることを指します。
注意点
注意点として、重みをスパースにしすぎると、モデルの表現力が低下し、予測の精度が下がる精度劣化が発生します。また、ソフトウェアやハードウェアがスパース演算に最適化されていない場合、ゼロをスキップする処理のオーバーヘッドによって、かえって計算速度が低下することがあります。