コンテンツにスキップ

量子化(AI推論)とは

量子化(AI推論)とは、数の刻みをわざと粗くして、AIの計算を軽くする技術です。 NEDOは、ニューラルネットワークの量子化を、演算の入り口と出口に出入りする数を細かい値から粗い値へ丸めて、計算の負荷を軽くする技術だと注記しています。

AIの推論では、掛け算と足し算(積和演算)を膨大な回数繰り返します。量子化は、その途中に出入りする数を何ビットで表すか、という一点についての技術です。以下の定義は、NEDOの注釈によるものです。

NEDOは、刻みを細かくするほど認識の精度は上がるものの、その分だけ多くのビットが要り、計算の負荷が重くなるとしています。細かさと軽さが正面から衝突する、という構図です。

NEDO、ソシオネクスト、ArchiTek、豊田自動織機が2020年に発表したAIエッジLSIのリリースは、それまでのネットワーク構造では、小数を32ビットか16ビットの浮動小数点で、整数を8ビットで表してきたとしています。量子化は、この桁数を削る操作です。

桁数を削ると、2つのものが同時に小さくなります。1つは、メモリに収める数のかさです。もう1つは、その数を計算する回路そのものです。

浮動小数点をやめると、回路がほぼ半分になります

Section titled “浮動小数点をやめると、回路がほぼ半分になります”

電子情報通信学会の公開知識ベースは、この効果を数字で示しています。

同資料は、学習能力の等しいニューラルネットワークを、浮動小数点で組んだ場合と固定小数点で組んだ場合とでFPGAへ実装して比べると、固定小数点の側の回路がおよそ半分の大きさに収まるとしています。回路が小さくなるだけでなく、演算そのものも速く、学習にかかる時間も短くなるとしています。以上は、同資料が2009年時点の内容として記すFPGA実装での比較です。

同資料は、この道の代償も併記しています。演算を簡単にするほど学習の成績は落ちてしまうため、どこまで簡単にしてよいかのつり合いが問題になるとしています。

極端に粗くすると、掛け算が消えます

Section titled “極端に粗くすると、掛け算が消えます”

粗さを上げていくと、途中で回路の種類そのものが入れ替わります。

同じ知識ベースは、回路規模をさらに小さくするために、活性化関数を2値化または3値化することが有効だとしています。2値化ではニューロンの出力が+1と-1だけ、3値化では+1、0、-1だけになるため、関数の値を覚えておくメモリ(LUT)が要らなくなり、出力と重みを掛ける回路を足し引きの回路へ置き換えられるとしています。重み係数を2のべき乗だけに絞ってシナプス乗算器を省いた提案も挙げ、その場合の掛け算はシフトレジスタで済むとしています。

粗くすると、回路の形そのものが入れ替わります。

ルネサス エレクトロニクスは、この考え方をSRAMへ持ち込んでいます。同社の2019年のニュースリリースは、それまでのPIM(Processing-in-Memory)が0と1の2値だけを扱うSRAM構造で、1ビットの演算では大規模なCNNに必要な精度に届かなかったとしています。

そこで同社は3値(-1, 0, 1)SRAM構造のPIMを開発したとしています。以下はこの試作技術についての記述です。3値のメモリに、簡単なデジタルの演算ブロックを足した構成だとしています。これにより回路が増える分も演算誤差が増える分もどちらも小さく抑えたうえで、求められる精度に合わせて演算のビット数を1.5ビット(3値)と4ビットのあいだで切り替えられるとしています。利用者ごとに異なる演算規模と精度の要求へ対応でき、演算精度と消費電力のつり合いを最適化できるとしています。

粗くするほど、収めるデータも回路も小さくなります
数の刻みを、上から順に粗くしていきます32ビット 浮動小数点従来のネットワーク構造で使われてきた表し方です8ビット 整数後段のヘッドネットワークはここを使います2ビット(3進数)乗算回路を加減算回路へ置き換えられます1ビット(2進数)出力が+1と-1の2つだけになります粗くするほど、メモリに収めるデータも、計算する回路も小さくなりますそのかわり、元の値との差が誤差になります
棒の長さは、ビット数に比例させて描いています。2ビットや1ビットまで下げると、電子情報通信学会の公開知識ベースが述べるとおり、乗算回路を加減算回路へ置き換える道が開けます。

刻みをどこへ割り当てるかで、精度が上下します

Section titled “刻みをどこへ割り当てるかで、精度が上下します”

ビット数のほかに、精度を左右する要素があります。刻みの置き所です。

NEDOと沖電気工業(OKI)は2021年、LCQ(Learnable Companding Quantization)という低ビット量子化技術を発表しました。AIの学習の最中に、量子化値を最も良い位置へ割り当てる技術だとしています。

両者は、先行技術の弱点を具体的に記しています。先行技術では、元の値をどの値へ丸めるか(量子化値)が固定値としてあらかじめ決まっているため、2ビットのような極端に低いビット数まで縮めると、その固定値とのずれが認識精度の劣化になるとしています。

LCQは、DNNの誤差勾配をもとに圧縮関数と伸張関数そのものを学習させ、それを織り込んで量子化することで、目盛りが等間隔でない量子化関数を作り、良い位置へ量子化値を置くとしています。もとにしたCompandingは音声符号化の分野でよく使われる非線形の量子化技術で、圧縮と伸張の英語をつないだ造語だと注記しています。

以下は、画像認識の高精度なネットワークについての公表値です。32ビットを2ビットへ、つまりビット数を16分の1にしたとき、先行技術では認識の精度が約3%下がるところ、LCQでは下げ幅が1.7%にとどまったとしています。

同じ2ビットでも、刻みをどこへ割り当てるかで精度が上下します。 なお、2ビットで表せる段階は4つです(ビット数から計算した値です)。

刻みの数が同じでも、割り当て方で精度が上下します
あらかじめ決めた等間隔の刻みです4段階を等しい幅で刻みます値が中央に集まっていても、刻みの幅は同じままです先行技術では、認識精度が約3%落ちたとされています学習で割り当てた刻みです同じ4段階を、山の中心へ集めます値が集まるところへ、刻みを細かく割り当てます同じ2ビットで、劣化を1.7%に抑えたとされています刻みの数だけでなく、刻みをどこへ割り当てるかが精度を左右します画像認識の高精度なネットワークを32ビットから2ビットへ圧縮したときの公表値です
横軸は量子化する前の値、山は値の分布、破線は割り当てた4段階の量子化値を表しています。NEDOと沖電気工業は、量子化値を固定値としてあらかじめ割り当てる方式では超低ビットほど誤差が大きく響くとし、学習で割り当てる方式との差を認識精度で示しています。

場所ごとに、粗さを使い分けます

Section titled “場所ごとに、粗さを使い分けます”

NEDO、ソシオネクスト、ArchiTek、豊田自動織機は2020年、ハイブリッド量子化DNN技術を発表しました。深層学習の実行に必要なパラメーターやアクティベーションを低ビット化する技術です。

バックボーンネットワークには3進数の2ビットと2進数の1ビットを、ヘッドネットワークには整数の8ビットを割り当て、粗さの違う量子化を1つのネットワークに混ぜるとしています。これにより、認識精度の低下を抑えながら低消費電力を実現したとしています。

同リリースは、バックボーンネットワークを、入力された画像からフィーチャーマップを取り出す側、ヘッドネットワークを、それを受け取って後段の処理を進める側だと注記しています。入口側は粗く、出口側は細かく、という配分です。

以下は、試作したAIエッジLSIの測定結果です。この量子化を適用したAI認識処理は、汎用GPUと比べて10倍以上の電力効率だったとしています。

ルネサスの3値SRAM構造のPIMも、必要精度に応じて1.5ビットと4ビットを切り替える設計です。粗さは、ネットワーク全体へ一律に当てるものから、場所ごとに割り当てるものへ移りつつあります。

刻みの限界は、ハードウェア側にもあります

Section titled “刻みの限界は、ハードウェア側にもあります”

量子化はソフトウェア側の技術に思えますが、粗さの下限を握るのが素子の側だということもあります。

NEDO、産業技術総合研究所、パナソニックセミコンダクターソリューションズ、北海道大学が2018年に発表した脳型情報処理回路のリリースは、重み値を素子の抵抗値として保存する方式について、その素子が再現性よく書き分けられる階調の数が、深層学習の推論の出来に響くと注記しています。

素子が何段階を安定して覚えられるかが、そのハードウェアで使える刻みの細かさを左右します。

インメモリ演算の記事で触れた階調の話は、量子化の側からたどっても同じ場所へ行き着きます。

量子化(AI推論)とは何ですか?

NEDOは、ニューラルネットワークの量子化を、演算の入り口と出口に出入りする数を細かい値から粗い値へ丸めて、計算の負荷を軽くする技術だと注記しています。刻みを細かくするほど認識の精度は上がるものの、その分だけビット数が要り、計算の負荷が重くなるとしています。

何ビットまで下げられるのですか?

NEDOと沖電気工業は、画像認識の高精度なネットワークを32ビットから2ビットへと16分の1に圧縮した事例を発表しています。電子情報通信学会の公開知識ベースは、活性化関数を2値化して出力を+1と-1だけにする方式にも触れています。用途と要求精度によって下限が上下します。

粗くすると認識精度はどれくらい落ちますか?

NEDOと沖電気工業の2021年の発表では、32ビットを2ビットへ縮めたとき、先行技術では認識の精度が約3%下がるのに対し、開発したLCQでは下げ幅が1.7%にとどまったとしています。画像認識の高精度なネットワークについての公表値です。

ビット数を減らすと、なぜ電力が下がるのですか?

電子情報通信学会の公開知識ベースは、学習能力の等しいネットワークをFPGAへ実装して比べると、固定小数点で組んだ側の回路がおよそ半分の大きさに収まるとしています。さらに2値化や3値化まで進めると、出力と重みを掛ける回路を足し引きの回路へ置き換えられるとしています。2009年時点の内容としての記述で、計算する回路そのものが小さくなるという話です。

ネットワーク全体を同じビット数にするのですか?

NEDO、ソシオネクスト、ArchiTek、豊田自動織機が発表したハイブリッド量子化DNN技術は、バックボーンネットワークへ3進数の2ビットと2進数の1ビットを、ヘッドネットワークへ整数の8ビットを割り当て、粗さの違う量子化を1つのネットワークに混ぜるとしています。粗さは場所ごとに割り当てられます。

量子化とインメモリ演算はどう関係しますか?

ルネサス エレクトロニクスの3値SRAM構造のPIMは、メモリ回路の中で積和演算まで行いながら、必要精度に応じて演算ビット数を1.5ビットや4ビットへ切り替えられるとしています。またNEDOらの脳型情報処理回路では、素子が再現性よく書き分けられる階調の数が推論の出来に響くと注記されています。粗さの選び方は、ハードウェアの構造と一体です。

学習の段階でも量子化を使うのですか?

NEDOと沖電気工業のLCQは、DNNの学習時に量子化値を割り当てる技術で、誤差勾配に基づいて圧縮関数と伸張関数を学習し、それを反映した量子化を行うとしています。学習の段階で量子化を織り込んでおく形です。

この記事の事実は、誰でも読める公開資料を根拠とし、各URLの到達可否をこちらで実測しています。したがって、リンク先が移動または消滅した場合は、その旨をこのページへ反映します。

  • NEDO ニュースリリース「AIに最適な量子化値を割り当てる低ビット量子化技術を開発」2021年6月21日(2026年8月30日にリンク生存を実測、200)── ニューラルネットワークの量子化が、演算に出入りする数を粗く丸めて計算の負荷を下げる技術だと注記されていること、刻みを細かくするほど精度は上がるがビット数と負荷が増えること、先行技術が量子化値を固定値として先に割り当てるため超低ビットでは誤差が認識精度の劣化になること、LCQが誤差勾配をもとに圧縮関数と伸張関数を学習して等間隔でない量子化関数を作ること、Compandingが音声符号化分野の非線形量子化技術であり圧縮と伸張の英語をつないだ造語であること、ビット数を32ビットから2ビットへ16分の1にしたときの認識精度の劣化が先行技術で約3%、LCQで1.7%であること。数値は沖電気工業との共同成果としての公表値です
  • NEDO ニュースリリース「AIエッジLSIでAI認識・画像処理効率10倍、SLAM時間1/20を達成」2020年6月18日(2026年8月30日にリンク生存を実測、200)── それまでのネットワーク構造が小数を32ビットか16ビットの浮動小数点で、整数を8ビットで表してきたこと、ハイブリッド量子化DNN技術がバックボーンネットワークへ3進数の2ビットと2進数の1ビットを、ヘッドネットワークへ整数の8ビットを割り当てて粗さの違う量子化を混ぜること、これにより認識精度の低下を抑えながら低消費電力を実現したこと、バックボーンネットワークが入力画像からフィーチャーマップを取り出しヘッドネットワークがそれを受け取って後段の処理を進めること、量子化DNNが深層学習の演算を低ビット化して計算量を減らすものであること、試作したAIエッジLSIの測定でAI認識処理が汎用GPU比10倍以上の電力効率化を達成したこと。以上を、この記事の根拠にしています
  • ソシオネクスト ニュースリリース「AIエッジLSIでAI認識・画像処理効率10倍、SLAM時間1/20を達成」2020年6月18日、公開PDF(2026年8月30日にリンク生存を実測、200、application/pdf)── 上記と同一内容を、開発企業側の公式リリースとして併記しています
  • 電子情報通信学会『知識の森』10群9編6章「ニューラルネットワーク集積回路」公開PDF、ver.1/2019.5.30(2026年8月30日にリンク生存を実測、200、application/pdf)── 演算を簡単にすると学習の性能が落ちるため両者のつり合いが問題になること、学習能力の等しいネットワークをFPGAへ実装すると固定小数点で組んだ側の回路がおよそ半分の大きさに収まり演算も学習も速くなること、活性化関数の2値化と3値化が回路縮小に有効でありニューロンの出力が2値化では+1と-1、3値化では+1、0、-1に限られるためLUTが要らなくなり掛け算の回路を足し引きの回路へ置き換えられること、重み係数を2のべき乗に絞ると掛け算をシフトレジスタで済ませられること。以上を、この記事の根拠にしています。なお、章の概要は2018年12月受領ですが、ここで引いた6-2節は2009年9月受領で、同資料自身が次節以降の解説を2009年時点の内容だと断っています
  • ルネサス エレクトロニクス ニュースリリース「次世代AIチップに向けて、新たなProcessing-in-Memory 技術を開発、AI処理実効性能で8.8 TOPS/Wを実証」2019年6月13日(2026年8月30日にリンク生存を実測、200)── それまでのPIMが0と1の2値だけを扱うSRAM構造で1ビットの演算では大規模なCNNに必要な精度へ届かなかったこと、3値(-1, 0, 1)SRAM構造のPIMが3値のメモリと簡単なデジタル演算ブロックを組み合わせ、回路が増える分も演算誤差が増える分も小さく抑えたうえで演算ビット数を1.5ビットや4ビットへ切り替えられること、利用者ごとに異なる演算規模と精度の要求へ対応でき演算精度と消費電力のつり合いを最適化できること。いずれも同社が自社の開発成果として発表している内容です
  • NEDO ニュースリリース「世界最高水準の低消費電力化を実現するAI半導体向け「脳型情報処理回路」を開発」2018年6月18日(2026年8月30日にリンク生存を実測、200)── 産業技術総合研究所、パナソニックセミコンダクターソリューションズ、北海道大学との共同成果として、脳型情報処理回路が学習の結果として決まる重み値を素子の抵抗値の形で保存するため、その素子が再現性よく書き分けられる階調の数が深層学習の推論の出来を左右することを、この記事の根拠にしています
回答待ち 更新中 公開Q&A

このページの質問窓口

AIに疑問を送る

「匿名で送信する」を押して内容を送ると、受付ID付きの回答URLを発行します。URLでは進捗を追うことができ、通常は1日以内に回答します。個人情報を取り除いて編集した質問と回答だけを、承認済み資料の出典リンクとともに公開Q&A一覧へ掲載します。

通常、1日以内に回答します 回答待ち 更新中

  1. 匿名で送る 分かりにくい箇所、指摘、追加してほしい内容を書きます。
  2. 受付IDと回答URLを保存する 送信後に発行されるURLへ、進捗が順次反映されます。
  3. 進捗と回答を追う URLには、受付済み、回答作成中、解決済みの状態と回答が載ります。
公開Q&A一覧へ 5〜4,000文字。氏名・連絡先などの個人情報、秘密情報は入力禁止です。

このフォームは匿名です。氏名・連絡先・応募情報などの個人情報、秘密情報、社外秘情報、契約情報、非公開資料の入力は禁止です。投稿原文は運営用DBに保存し、公開面には、個人情報・秘密情報・危険な命令を除く安全審査と読みやすい文章への編集を経た質問文と回答だけを載せます。状態は「受付済み」「回答作成中」「解決済み」の3段階です。安全審査の結果によっては公開を保留します。サイト側の機械検査を通った内容だけを運営側のAI回答作成環境へ送り、回答案の作成と、それとは独立したAI審査に使います。機械検査には見落としの可能性があり、回答作成と審査の履歴は利用中の環境に保持されます。IPアドレスや端末情報は送信対象外です。回答URLは公開Q&A用で、共有先からも開けます。送信により、この利用条件と審査後のQ&A公開に同意したものとします。