プルーニングとは

ぷるーにんぐpruning別名 枝刈り、ネットワークプルーニング

1行定義

プルーニングとは、学習済みのニューラルネットワークから出力への寄与が小さい重みや結合を取り除き、精度をなるべく保ったままモデルを小さくする手法のことです。

くわしく

プルーニング(pruning)は、英語で「剪定」を意味します。庭木の余分な枝を切るように、ニューラルネットワークからほとんど役に立っていない部分を切り落とし、モデルを小さくします。量子化、蒸留と並ぶ、モデル圧縮の代表的な手法です。

仕組み

学習を終えたネットワークには、値がほぼ0で、出力にほとんど影響しない重みが少なからず含まれます。そこで、重みの絶対値などを基準に、影響の小さいものから取り除きます。取り除いた直後は精度が少し下がるため、残った重みで再学習して取り戻します。この「学習、刈り込み、再学習」を繰り返すのが基本の流れです。

考え方自体は古く、1989年にはLeCunらが、誤差の2階微分を使って削る重みを選ぶ方法(Optimal Brain Damage)を示しています。2015年のHanらの研究では、この流れでAlexNetのパラメータを約6,100万から約670万へ、およそ9分の1に減らしても、精度は落ちませんでした。

何を刈り込むか

  • 非構造的プルーニング:重みを1つずつ0にします。削れる量は多いものの、行列の形は変わりません。速くするには、0の多い行列を効率よく計算する仕組みが必要です。
  • 構造的プルーニング:チャネルやフィルタ、層などをまとめて取り除きます。ネットワークの形そのものが小さくなるため、一般的なハードウェアでも速度の向上に結び付けやすくなります。

似た言葉との区別

探索のαβ法でも「枝刈り」という言葉を使います。こちらは調べる必要のない手を省く工夫で、モデルを小さくする手法ではありません。決定木で、深くなりすぎた枝を切って過学習を防ぐ処理も、枝刈りや剪定と呼ばれます。

プルーニングで小さくしても精度を保てる理由を考える仮説として、宝くじ仮説があります。

覚え方

「伸びすぎた枝を切っても、木は実をつける」と覚えます。

G検定での出題

影響の小さい重みや結合を取り除く仕組み、取り除いた後の再学習、量子化や蒸留との違い、宝くじ仮説との関係が問われます。探索のαβ法でいう枝刈りと混同しないことも大切です。

混同しやすい用語

用語意味
αβ法Mini-Max法の探索で、調べても選ぶ手が変わらないと分かった枝を省き、同じ結果をより少ない計算で得る方法

違いを表で比べる:プルーニング・量子化と蒸留

◯×チェック

  1. 重みを1つずつ0にする非構造的なプルーニングでは、パラメータ数が大きく減っても、0の多い行列の計算に向いた仕組みがないと、推論は思ったほど速くならないことがある。

    答えを見る

    答え ◯ 正しい

    0が飛び飛びに残るだけでは、行列の形は変わりません。通常の計算では0との掛け算も行うため、速くするには疎な行列に向いたライブラリやハードウェアが必要です。

  2. ニューラルネットワークのプルーニングは、ゲーム木の探索で調べる必要のない手を省くαβ法の枝刈りと同じ手法であり、元の結果を変えずに計算だけを減らす。

    答えを見る

    答え × 誤り

    どちらも枝刈りと呼ばれますが、別物です。αβ法は結果を変えずに探索を省きます。プルーニングはモデルの重みを削るため出力がわずかに変わることがあり、再学習で補います。

  3. どの重みを取り除くかの基準として、学習後の重みの絶対値が小さいものから取り除く方法が広く使われている。

    答えを見る

    答え ◯ 正しい

    絶対値が小さい重みは、出力への影響が小さいとみなせるためです。初期の研究では、誤差の2階微分を使って影響を見積もる方法も提案されました。

練習問題

プルーニングの問題(2問)
  1. モデル軽量化の手法
  2. 蒸留におけるソフトターゲット

AIで作成 人による確認:未 誤りを報告

出典と作成について

作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合。手順は編集方針)

公開日: 最終更新日: 最終確認日:

対応シラバス:シラバス第1.4版 技術34

改訂履歴

表示設定

テーマ
文字の大きさ
問題演習