プルーニング【pruning】

概要

プルーニングとは、学習済みのニューラルネットワークから重要度の低い重みやノード、接続を削除し、モデルを簡素化する手法。計算量やメモリ使用量を削減し、より非力な環境でモデルを動作させることができるようになる。
プルーニングのイメージ画像

深層ニューラルネットワークは高い表現能力を達成するために大量のパラメータで構成されるが、出力に大きな影響を与えない「冗長な部分」が多く存在することが知られている。冗長パラメータが残ったままのモデルは推論時に必要なメモリ占有量や計算量が多く非効率である。

プルーニングでは、重みの大きさや勾配情報、あるいは性能への寄与度などを基準として、影響の小さい要素を特定し、それらを削除する。これにより、モデル全体の構造を維持しつつ、不要な計算を省いた効率的なネットワークを得ることができる。削除後には再学習や微調整を行い、性能低下を抑制することが多い。

個々の結合単位ごとに削除する「非構造化プルーニング」と、フィルターやチャネルといった構造単位で一括して削除する「構造化プルーニング」がある。個別の結合を消す手法は理論上の圧縮率は高いが特殊な実装が必要となる一方、構造化プルーニングは標準的なハードウェアでも直接的な高速化の恩恵を受けやすいとされる。

なお、“pruning” とは「剪定」「枝刈り」という意味の英単語で、本来の意味は樹木から余計な枝を選んで切り落とす作業のことである。機械学習以外のアルゴリズムプログラミングの分野でも、木構造で表された探索候補などについて、一定の基準に基づいて枝単位でスキップして探索範囲を狭める高速化手法をこのように呼ぶことがある。日本語環境では、この意味での “pruning” については「枝刈り」という対訳が定着している。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。