(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-06-23
(45)【発行日】2025-07-01
(54)【発明の名称】閾値決定プログラム、閾値決定方法および閾値決定装置
(51)【国際特許分類】
G06N 3/0495 20230101AFI20250624BHJP
【FI】
G06N3/0495
(21)【出願番号】P 2021136804
(22)【出願日】2021-08-25
【審査請求日】2024-05-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】クレシュパ エンジ
(72)【発明者】
【氏名】田原 司睦
(72)【発明者】
【氏名】坂井 靖文
【審査官】多賀 実
(56)【参考文献】
【文献】特開2021-005211(JP,A)
【文献】国際公開第2019/220755(WO,A1)
【文献】中国特許出願公開第112580805(CN,A)
【文献】中国特許出願公開第112287986(CN,A)
【文献】Hui Guan et al.,"Post-Training 4-bit Quantization on Embedding Tables",arXiv.org [online],arXiv:1911.02079v1,Cornell University ,2019年11月,pp.1-11,[検索日 2025.02.12], インターネット:<URL: https://arxiv.org/abs/1911.02079v1>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
推論モデルに含まれるニューラルネットワークの量子化において、
閾値の候補となる複数の異なる変数それぞれに対して、
変数を用いて量子化対象の複数の数値を量子化する処理と、量子化対象の各数値と量子化後の各数値とを用いて計算した、前記複数の数値それぞれに対する量子化誤差に基づいて量子化誤差の統計値を計算する処理とを、実行し、
前記閾値の候補となる複数の異なる変数のうち、最小の前記統計値を有する変数を前記閾値に決定し、
前記ニューラルネットワークの層ごとに、決定された前記閾値を用いて量子化対象の前記複数の数値各々を量子化することで、前記推論モデルを生成する処理を実行させ、前記変数を用いて量子化対象の複数の数値を量子化する処理において、
前記変数において規定される数値範囲から外れた数値を、前記
変数に対応する量子化後の数値に変換
し、
前記変数において規定される数値範囲内の数値を、スケーリングファクタを用いて量子化後の数値に変換する、
処理をコンピュータに実行させるための閾値決定プログラム。
【請求項2】
前記量子化対象は、前記ニューラルネットワークにおける重み、バイアス、又はアクティベーションであることを特徴とする請求項
1に記載の閾値決定プログラム。
【請求項3】
推論モデルに含まれるニューラルネットワークの量子化において、
閾値の候補となる複数の異なる変数それぞれに対して、
変数を用いて量子化対象の複数の数値を量子化する処理と、量子化対象の各数値と量子化後の各数値とを用いて計算した、前記複数の数値それぞれに対する量子化誤差に基づいて量子化誤差の統計値を計算する処理とを、実行し、
前記閾値の候補となる複数の異なる変数のうち、最小の前記統計値を有する変数を前記閾値に決定し、
前記ニューラルネットワークの層ごとに、決定された前記閾値を用いて量子化対象の前記複数の数値各々を量子化することで、前記推論モデルを生成する処理を実行させ、前記変数を用いて量子化対象の複数の数値を量子化する処理において、
前記変数において規定される数値範囲から外れた数値を、前記
変数に対応する量子化後の数値に変換
し、
前記変数において規定される数値範囲内の数値を、スケーリングファクタを用いて量子化後の数値に変換する、
処理をコンピュータが実行することを特徴とする閾値決定方法。
【請求項4】
推論モデルに含まれるニューラルネットワークの量子化において、
閾値の候補となる複数の異なる変数それぞれに対して、
変数を用いて量子化対象の複数の数値を量子化する処理と、量子化対象の各数値と量子化後の各数値とを用いて計算した、前記複数の数値それぞれに対する量子化誤差に基づいて量子化誤差の統計値を計算する処理とを、実行し、
前記閾値の候補となる複数の異なる変数のうち、最小の前記統計値を有する変数を前記閾値に決定し、
前記ニューラルネットワークの層ごとに、決定された前記閾値を用いて量子化対象の前記複数の数値各々を量子化することで、前記推論モデルを生成する処理を実行させ、前記変数を用いて量子化対象の複数の数値を量子化する処理において、
前記変数において規定される数値範囲から外れた数値を、前記変数に対応する量子化後の数値に変換し、
前記変数において規定される数値範囲内の数値を、スケーリングファクタを用いて量子化後の数値に変換する、
処理部を有する閾値決定装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、閾値決定技術に関する。
【背景技術】
【0002】
機械学習により生成される学習済みモデルの一種であるニューラルネットワークは、画像処理、自然言語処理等の様々な分野において、入力データに対する推論を行うために利用されている(例えば、非特許文献1及び非特許文献2を参照)。
【0003】
近年のニューラルネットワークの複雑な構成に起因して、ニューラルネットワークによる推論を行うコンピュータの消費電力は増加する傾向にある。そこで、消費電力を削減するために、ニューラルネットワークの量子化が行われることがある。ニューラルネットワークの量子化は、所定のビット幅で表される量子化対象の数値を、より小さなビット幅で表される量子化後の数値に変換する処理である。
【0004】
ニューラルネットワークの量子化は、消費電力及びメモリ使用量の削減に有効であるが、量子化対象の数値の精度を劣化させる。例えば、32ビットの単精度浮動小数点数(FP32)を量子化によって8ビットの整数(INT8)に変換すると、推論精度が大きく低下する(例えば、非特許文献3を参照)。
【0005】
ニューラルネットワークの量子化に関連して、ニューラルネットワークの効率改善を促進する技術が知られている(例えば、特許文献1を参照)。演算の低ビット化によりCNN(Convolutional Neural Network)を軽量化しつつ、適切な演算を可能とする、ニューラルネットワークの学習装置も知られている(例えば、特許文献2を参照)。ニューラルネットワークの一部選択されたレイヤに係わる精度を、より低ビットに調整する方法も知られている(例えば、特許文献3を参照)。
【0006】
アテンション機構に基づくシーケンス変換モデルも知られている(例えば、非特許文献4を参照)。
【先行技術文献】
【特許文献】
【0007】
【文献】特表2021-500654号公報
【文献】特開2020-9048号公報
【文献】特開2020-113273号公報
【非特許文献】
【0008】
【文献】A. Canziani et al, "An Analysis of Deep Neural Network Models for Practical Applications", arXiv:1605.07678v4, 14 April 2017
【文献】O. Sharir et al., "The Cost of Training NLP Models: A Concise Overview", arXiv:2004.08900v1, 19 April 2020
【文献】"8-bit Inference with TensorRT"、[online]、Szymon Migacz, NVIDIA、2017年5月8日、[令和3年6月16日検索]、インターネット<URL:https://on-demand.gputechconf.com/gtc/2017/presentation/s7310-8-bit-inference-with-tensorrt.pdf>
【文献】A. Vaswani et al., "Attention is All You Need", 31st Conference on Neural Information Processing Systems (NIPS 2017), 2017
【発明の概要】
【発明が解決しようとする課題】
【0009】
ニューラルネットワークの量子化では、量子化対象の数値を量子化後の数値に変換する適切なスケーリングファクタを選択することが重要である。量子化対象の数値は、ニューラルネットワークの2つの層の間における複数のエッジそれぞれの重み、ニューラルネットワークの各層に含まれる複数のノードそれぞれの出力値等である。各ノードの出力値は、アクティベーションと呼ばれる。量子化対象の複数の数値及び量子化後の複数の数値は、テンソルにより表されることもある。
【0010】
量子化対象の数値に対してクリッピングを行うことで、量子化後の数値の精度が改善されることがある。クリッピングは、閾値によって規定される数値範囲から外れた数値を、閾値に対応する量子化後の数値に変換する処理である。しかしながら、クリッピングのための適切な閾値を選択することは難しい。
【0011】
なお、かかる問題は、重み又はアクティベーションの量子化に限らず、ニューラルネットワークにおける様々な数値の量子化において生ずるものである。
【0012】
1つの側面において、本発明は、ニューラルネットワークの量子化による推論精度の低下を抑制することを目的とする。
【課題を解決するための手段】
【0013】
1つの案では、閾値決定プログラムは、以下の処理をコンピュータに実行させる。
【0014】
コンピュータは、ニューラルネットワークの量子化において、量子化対象の複数の数値のうち、閾値によって規定される数値範囲から外れた数値を、閾値に対応する量子化後の数値に変換する場合、閾値を決定する。このとき、コンピュータは、複数の数値それぞれに対する量子化誤差に基づいて閾値を決定する。
【発明の効果】
【0015】
1つの側面によれば、ニューラルネットワークの量子化による推論精度の低下を抑制することができる。
【図面の簡単な説明】
【0016】
【
図1】比較例の閾値決定処理のフローチャートである。
【
図3】非特許文献3の量子化を適用した場合の実験結果を示す図である。
【
図4】実施形態の閾値決定装置の機能的構成図である。
【
図6】推論装置が行う閾値決定処理のフローチャートである。
【
図8】重みに対する閾値決定処理のフローチャートである。
【
図9】実施形態の量子化を適用した場合の実験結果を示す図である。
【
図10】情報処理装置のハードウェア構成図である。
【発明を実施するための形態】
【0017】
以下、図面を参照しながら、実施形態を詳細に説明する。
【0018】
非特許文献3の量子化では、FP32をINT8に変換する際、スケーリングファクタを適用する前にクリッピングを行うことで、FP32の数値範囲が制限される。この場合、数値範囲の上限は正の閾値+|T|によって規定され、数値範囲の下限は負の閾値-|T|によって規定される。
【0019】
したがって、量子化により、-|T|以下の浮動小数点数は、-|T|に対応する整数に変換され、+|T|以上の浮動小数点数は、+|T|に対応する整数に変換される。-|T|に対応する整数は-127であり、+|T|に対応する整数は+127である。-|T|よりも小さい浮動小数点数と+|T|よりも大きい浮動小数点数は、外れ値と呼ばれる。
【0020】
スケーリングファクタを適用する前にクリッピングを行うことで、量子化ノイズを低減することができ、量子化後の数値の精度が改善される。
【0021】
図1は、非特許文献3に基づく比較例の閾値決定処理の例を示すフローチャートである。
図1の閾値決定処理は、ニューラルネットワークの層毎に行われる。
【0022】
まず、コンピュータは、数値範囲の下限又は上限を示す閾値の候補を表す変数Xに初期値を設定し(ステップ101)、Xを用いて量子化対象のN個(Nは2以上の整数)の数値を量子化する(ステップ102)。ステップ102において、コンピュータは、Xによって規定される数値範囲から外れた数値を、Xに対応する量子化後の数値に変換し、数値範囲内の数値を、スケーリングファクタを用いて量子化後の数値に変換する。
【0023】
次に、コンピュータは、量子化対象のN個の数値の確率分布Pと、量子化後のN個の数値の確率分布Qとを用いて、次式によりカルバック・ライブラー情報量(Kullback-Leibler divergence,KL情報量)を計算する(ステップ103)。
【0024】
【0025】
式(1)のKL(P||Q)は、確率分布Pと確率分布QのKL情報量を表し、P(i)は、量子化対象のi番目(i=1~N)の数値の確率を表し、Q(i)は、量子化後のi番目の数値の確率を表す。logは、二進対数又は自然対数を表す。KL(P||Q)は、確率分布Pと確率分布Qの差異を表す指標として用いられる。
【0026】
次に、コンピュータは、すべての候補についてKL情報量を計算したか否かをチェックする(ステップ104)。未処理の候補が残っている場合(ステップ104,NO)、コンピュータは、Xの値を更新し(ステップ106)、次の候補についてステップ102以降の処理を繰り返す。
【0027】
すべての候補についてKL情報量を計算した場合(ステップ104,YES)、コンピュータは、最小のKL情報量を有する候補を、閾値として選択する(ステップ105)。
【0028】
図2は、
図1のステップ106における更新処理の例を示している。0~2048は、確率分布Pを表すヒストグラムのビンの位置を示している。この場合、変数Xは、数値範囲の上限を示す閾値の候補を表し、Xの初期値は、128番目のビンの位置に設定される。
【0029】
ステップ106において、コンピュータは、Xの値を示すビンの位置を1だけインクリメントすることで、Xをビン幅だけ増加させる。ステップ106の処理を繰り返すことで、Xの値は、128番目のビンの位置から2048番目のビンの位置まで変化する。ステップ102において、Xよりも大きい外れ値は、Xに対応する量子化後の数値に変換される。
【0030】
最小のKL情報量を有する閾値を用いて量子化を行うことで、量子化後の数値の確率分布を量子化対象の数値の確率分布に近づけることができる。しかしながら、
図1の閾値決定処理は、CNNのアクティベーションを8ビットの数値に変換する量子化に対して有効であるに過ぎない。
【0031】
KL情報量は、量子化対象の各数値の出現頻度と量子化後の各数値の出現頻度の情報を含んでいるに過ぎず、それらの数値自体の情報を含んでいない。このため、量子化後の数値のビット幅が小さい場合、最小のKL情報量を有する閾値を用いて量子化を行っても、推論精度が大きく低下することがある。
【0032】
図3は、非特許文献3の量子化を適用した場合の実験結果の例を示している。この実験では、学習済みモデルとして、非特許文献4に記載されたシーケンス変換モデルであるトランスフォーマが用いられている。実験で用いたトランスフォーマは、エンコーダ及びデコーダを含み、エンコーダ及びデコーダ各々は、9個の全結合層を含む。
【0033】
量子化対象の数値は、エンコーダ又はデコーダの各層に含まれるマルチヘッドアテンションブロック内の線形層の重みであり、FP32により表される。量子化後の数値のビット幅は、2ビットである。
【0034】
データセットとしては、Multi30kのドイツ語-英語翻訳データセットが用いられている。訓練データは29000文であり、検証データは1014文であり、推論対象の入力データは1000文である。
【0035】
量子化なしは、FP32で表される重みを量子化することなく推論を行った場合を表し、量子化(KL)は、最小のKL情報量を有する閾値に基づく量子化を適用して推論を行った場合を表す。
【0036】
推論精度1は、エンコーダの9個の全結合層に対して量子化を適用した場合のBLEU(bilingual evaluation understudy)スコアを表す。推論精度2は、エンコーダ及びデコーダそれぞれの9個の全結合層に対して量子化を適用した場合のBLEUスコアを表す。BLEUスコアが大きいほど、推論精度は高くなる。
【0037】
量子化なしの推論精度は、35.08である。一方、量子化(KL)の推論精度1は、33.26であり、量子化(KL)の推論精度2は、11.88である。この場合、量子化(KL)の推論精度2が大きく低下していることが分かる。
【0038】
図4は、実施形態の閾値決定装置の機能的構成例を示している。
図4の閾値決定装置401は、決定部411を含む。決定部411は、ニューラルネットワークの量子化において、量子化対象の複数の数値のうち、閾値によって規定される数値範囲から外れた数値を、閾値に対応する量子化後の数値に変換する場合、閾値を決定する。このとき、決定部411は、複数の数値それぞれに対する量子化誤差に基づいて閾値を決定する。
【0039】
図4の閾値決定装置401によれば、ニューラルネットワークの量子化による推論精度の低下を抑制することができる。
【0040】
図5は、
図4の閾値決定装置401に対応する推論装置の機能的構成例を示している。
図5の推論装置501は、決定部511、量子化部512、推論部513、及び記憶部514を含む。決定部511は、
図4の決定部411に対応する。
【0041】
記憶部514は、画像処理、自然言語処理等における推論を行う推論モデル521と、推論対象の入力データ524とを記憶する。推論モデル521は、ニューラルネットワークを含む学習済みモデルであり、例えば、教師あり機械学習により生成される。推論モデル521は、トランスフォーマであってもよい。
【0042】
決定部511は、推論モデル521に含まれるニューラルネットワークの層毎に、クリッピングのための閾値522を決定し、記憶部514に格納する。閾値522は、量子化対象の数値の数値範囲の下限及び上限を示す。
【0043】
決定部511は、閾値522の複数の候補各々によって規定される数値範囲に基づいて、量子化対象のN個(Nは2以上の整数)の数値各々を量子化することで、各数値に対応する量子化後の数値を生成する。
【0044】
FP32をINT8に変換する量子化では、例えば、数値範囲の上限が正の閾値の候補TCによって規定され、数値範囲の下限が負の閾値の候補-TCによって規定される。この場合、決定部511は、例えば、次式により、量子化対象のi番目(i=1~N)の数値v(i)を量子化後のi番目の数値q(i)に変換することができる。
【0045】
q(i)=round(v(i)/S) (2)
【0046】
式(2)のSは、スケーリングファクタを表し、round(v(i)/S)は、v(i)/Sを四捨五入した値を表す。ただし、v(i)がTC以上の場合、q(i)=127となり、v(i)が-TC以下の場合、q(i)=-127となる。
【0047】
次に、決定部511は、量子化対象の各数値と、量子化対象の各数値に対応する量子化後の数値とを用いて、量子化誤差を計算し、量子化対象のN個の数値それぞれに対する量子化誤差の統計値を計算する。そして、決定部511は、複数の候補各々から計算された統計値に基づいて、複数の候補の中から閾値522を選択する。
【0048】
統計値としては、例えば、平均値、中央値、最頻値、最大値、又は総和が用いられ、閾値522としては、例えば、最小の統計値を有する候補が選択される。量子化誤差の統計値を用いることで、ニューラルネットワークの各層に適した閾値522を容易に決定することができる。
【0049】
FP32をINT8に変換する量子化では、例えば、次式により、量子化対象のN個の数値それぞれに対する量子化誤差の平均値QEが計算される。
【0050】
【0051】
式(3)のvq(i)は、q(i)を逆量子化した数値を表し、式(4)の|vq(i)-v(i)|は、i番目の量子化誤差を表す。ただし、q(i)=127の場合、vq(i)=TCとなり、q(i)=-127の場合、vq(i)=-TCとなる。
【0052】
量子化誤差は、量子化対象の各数値の出現頻度と量子化後の各数値の出現頻度の情報とともに、それらの数値自体の情報を含んでいる。このため、量子化誤差の最小の統計値を有する候補を閾値522として選択することで、最小のKL情報量を有する候補を選択した場合よりも、量子化後の数値の精度が向上する。したがって、量子化後の数値のビット幅が小さい場合であっても、量子化による推論精度の低下を抑制して、高い推論精度を維持することができる。
【0053】
量子化部512は、ニューラルネットワークの層毎に、閾値522を用いて量子化対象のN個の数値各々を量子化することで、量子化推論モデル523を生成し、記憶部514に格納する。
【0054】
量子化対象の数値の量子化において、量子化部512は、閾値522が示す下限及び上限によって規定される数値範囲から外れた外れ値を、下限又は上限に対応する量子化後の数値に変換する。そして、量子化部512は、数値範囲内の数値を、スケーリングファクタを用いて量子化後の数値に変換する。
【0055】
量子化対象は、例えば、ニューラルネットワークの各層における重み、バイアス、又はアクティベーションである。量子化後の数値のビット幅は、量子化対象の数値のビット幅よりも小さい。重み、バイアス、又はアクティベーションを量子化することで、ニューラルネットワークを効率よく圧縮することができる。
【0056】
推論部513は、量子化推論モデル523を用いて入力データ524に対する推論を行い、推論結果を出力する。推論モデル521の代わりに量子化推論モデル523を用いて推論を行うことで、消費電力及びメモリ使用量が削減されるとともに、推論処理が高速化される。
【0057】
図6は、
図5の推論装置501が行う閾値決定処理の例を示すフローチャートである。
図6の閾値決定処理は、推論モデル521に含まれるニューラルネットワークの層毎に行われる。
【0058】
まず、決定部511は、閾値522の候補を表す変数Xに初期値を設定し(ステップ601)、Xを用いて量子化対象のN個の数値を量子化する(ステップ602)。ステップ602において、決定部511は、Xによって規定される数値範囲から外れた数値を、Xに対応する量子化後の数値に変換し、数値範囲内の数値を、スケーリングファクタを用いて量子化後の数値に変換する。
【0059】
次に、決定部511は、量子化対象の各数値と量子化後の各数値とを用いて、量子化誤差を計算し、量子化対象のN個の数値それぞれに対する量子化誤差の統計値を計算する(ステップ603)。
【0060】
次に、決定部511は、すべての候補について量子化誤差の統計値を計算したか否かをチェックする(ステップ604)。未処理の候補が残っている場合(ステップ604,NO)、決定部511は、Xの値を更新し(ステップ606)、次の候補についてステップ602以降の処理を繰り返す。
【0061】
すべての候補について量子化誤差の統計値を計算した場合(ステップ604,YES)、決定部511は、最小の統計値を有する候補を、閾値522として選択する(ステップ605)。
【0062】
図6の閾値決定処理によれば、閾値522の候補毎に量子化誤差の統計値が計算されるため、計算された統計値に基づいて、各候補に対する量子化後の数値の精度を推測することができる。したがって、複数の候補の中から、より高い精度を有する候補を選択することが可能になる。
【0063】
次に、量子化対象がニューラルネットワークの各層における重みである場合の閾値決定処理について説明する。
【0064】
図7は、ニューラルネットワークの1つの層における量子化対象の重みの分布の例を示している。横軸は、重みを表し、縦軸は、出現頻度を表す。重みは、FP32により表される。Wは、1つの層におけるN個の重みの集合を表す。max(W)は、N個の重みの最大値を表し、min(W)は、N個の重みの最小値を表す。
【0065】
図7の重みの分布は、M本のビンを含むヒストグラムにより表されている。この場合、ビン幅Bは、次式により計算される。
【0066】
B=(max(W)-min(W))/M (5)
【0067】
図8は、重みに対する閾値決定処理の例を示すフローチャートである。
図8の閾値決定処理は、推論モデル521に含まれるニューラルネットワークの層毎に行われる。
【0068】
制御変数kは、閾値522の候補を指定するハイパーパラメータとして用いられる。量子化対象の重みの数値範囲の下限は-TH(k)で表され、上限は+TH(k)で表される。TH(k)は、kに応じて変化する正の数値であり、数値範囲の上限の候補を表す。
【0069】
まず、決定部511は、kに初期値k0を設定し(ステップ801)、次式によりTH(k)を計算する(ステップ802)。
【0070】
TH(k)=max(abs(W))-k*B (6)
【0071】
式(6)のabs(W)は、Wに含まれる各重みの絶対値の集合を表し、max(abs(W))は、abs(W)の要素の最大値を表す。
【0072】
次に、決定部511は、TH(k)を用いて量子化対象のN個の重みW(i)(i=1~N)を量子化することで、量子化後の重みQ(i)を生成する(ステップ803)。
【0073】
ステップ803において、決定部511は、-TH(k)以下のW(i)を、-TH(k)に対応する量子化後の重み-THQ(k)に変換し、TH(k)以上のW(i)を、TH(k)に対応する量子化後の重みTHQ(k)に変換する。また、決定部511は、-TH(k)よりも大きく、かつ、TH(k)よりも小さいW(i)を、スケーリングファクタを用いてQ(i)に変換する。例えば、Q(i)がINT8で表される場合、THQ(k)=127であってもよい。
【0074】
次に、決定部511は、制御変数iに初期値1を設定し(ステップ804)、i番目の重みW(i)の絶対値abs(W(i))とTH(k)とを比較する(ステップ805)。
【0075】
abs(W(i))がTH(k)よりも小さい場合(ステップ805,YES)、決定部511は、次式により、W(i)に対する量子化誤差qe(i)を計算する(ステップ806)。
【0076】
qe(i)=abs(WQ(i)-W(i)) (7)
【0077】
式(7)のWQ(i)は、Q(i)を逆量子化した数値を表し、abs(WQ(i)-W(i))は、WQ(i)-W(i)の絶対値を表す。
【0078】
一方、abs(W(i))がTH(k)以上である場合(ステップ805,NO)、決定部511は、次式により、W(i)に対する量子化誤差qe(i)を計算する(ステップ807)。
【0079】
qe(i)=abs(W(i))-TH(k) (8)
【0080】
次に、決定部511は、iとNを比較する(ステップ808)。iがNに達していない場合(ステップ808,NO)、決定部511は、iを1だけインクリメントして(ステップ812)、ステップ805以降の処理を繰り返す。
【0081】
iがNに達した場合(ステップ808,YES)、決定部511は、次式により、N個の量子化誤差qe(i)の平均値QE(k)を計算する(ステップ809)。
【0082】
QE(k)=ave(qe) (9)
【0083】
式(9)のqeは、qe(1)~qe(N)の集合を表し、ave(qe)は、qe(1)~qe(N)の平均値を表す。
【0084】
次に、決定部511は、TH(k)とL*Bを比較する(ステップ810)。Lは、正の整数を表す。TH(k)がL*Bよりも大きい場合(ステップ810,YES)、決定部511は、kをΔkだけインクリメントして(ステップ813)、ステップ802以降の処理を繰り返す。例えば、
図7に示した重みの分布において、M=2048の場合、k0=0、Δk=0.2、L=127であってもよい。
【0085】
TH(k)がL*B以下である場合(ステップ810,NO)、決定部511は、QE(k)の計算を終了し、計算されたQE(k)のうち最小のQE(k)を有するTH(k)を選択する(ステップ811)。そして、決定部511は、数値範囲の下限を示す閾値522を-TH(k)に決定し、数値範囲の上限を示す閾値522をTH(k)に決定する。
【0086】
図9は、実施形態の量子化を適用した場合の実験結果の例を示している。学習済みモデル及びデータセットは、
図3に示した実験と同様である。
【0087】
量子化なしの推論精度と量子化(KL)の推論精度1及び推論精度2は、
図3に示した実験結果と同様である。量子化(QE)は、最小のQE(k)を有する閾値522に基づく量子化を適用して推論を行った場合を表す。
【0088】
量子化(QE)の推論精度1は、35.09であり、量子化(QE)の推論精度2は、34.93である。この場合、量子化(QE)の推論精度1及び推論精度2は、量子化なしの推論精度とほとんど変わっていないことが分かる。したがって、KL情報量の代わりに量子化誤差の平均値を用いて閾値522を決定することで、量子化前と同じ程度の推論精度が維持される。
【0089】
図4の閾値決定装置401の構成は一例に過ぎず、閾値決定装置401の用途又は条件に応じて構成要素を変更してもよい。
図5の推論装置501の構成は一例に過ぎず、推論装置501の用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
【0090】
図1、
図6、及び
図8のフローチャートは一例に過ぎず、閾値決定処理の用途又は条件に応じて、一部の処理を省略又は変更してもよい。例えば、
図8の閾値決定処理において、量子化対象をバイアス又はアクティベーションに変更することも可能である。
【0091】
図2に示した更新処理は一例に過ぎず、閾値の候補の更新方法は、閾値決定処理の用途又は条件に応じて変化する。
図3及び
図9に示した実験結果は一例に過ぎず、推論精度は、推論モデル及び量子化対象に応じて変化する。
図7に示した重みの分布は一例に過ぎず、重みの分布は、推論モデルに応じて変化する。
【0092】
式(1)~式(9)は一例に過ぎず、推論装置501は、別の計算式を用いて閾値522を決定してもよい。
【0093】
図10は、
図4の閾値決定装置401及び
図5の推論装置501として用いられる情報処理装置(コンピュータ)のハードウェア構成例を示している。
図10の情報処理装置は、CPU(Central Processing Unit)1001、メモリ1002、入力装置1003、出力装置1004、補助記憶装置1005、媒体駆動装置1006、及びネットワーク接続装置1007を含む。これらの構成要素はハードウェアであり、バス1008により互いに接続されている。
【0094】
メモリ1002は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)等の半導体メモリであり、処理に用いられるプログラム及びデータを記憶する。メモリ1002は、
図5の記憶部514として動作してもよい。
【0095】
CPU1001(プロセッサ)は、例えば、メモリ1002を利用してプログラムを実行することにより、
図4の決定部411として動作する。CPU1001は、メモリ1002を利用してプログラムを実行することにより、
図5の決定部511、量子化部512、及び推論部513としても動作する。
【0096】
入力装置1003は、例えば、キーボード、ポインティングデバイス等であり、ユーザ又はオペレータからの指示又は情報の入力に用いられる。出力装置1004は、例えば、表示装置、プリンタ等であり、ユーザ又はオペレータへの問い合わせ又は指示、及び処理結果の出力に用いられる。処理結果は、入力データ524に対する推論結果であってもよい。
【0097】
補助記憶装置1005は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置1005は、ハードディスクドライブであってもよい。情報処理装置は、補助記憶装置1005にプログラム及びデータを格納しておき、それらをメモリ1002にロードして使用することができる。
【0098】
媒体駆動装置1006は、可搬型記録媒体1009を駆動し、その記録内容にアクセスする。可搬型記録媒体1009は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体1009は、CD-ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリ等であってもよい。ユーザ又はオペレータは、可搬型記録媒体1009にプログラム及びデータを格納しておき、それらをメモリ1002にロードして使用することができる。
【0099】
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ1002、補助記憶装置1005、又は可搬型記録媒体1009のような、物理的な(非一時的な)記録媒体である。
【0100】
ネットワーク接続装置1007は、LAN(Local Area Network)、WAN(Wide Area Network)等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェース回路である。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置1007を介して受信し、それらをメモリ1002にロードして使用することができる。
【0101】
なお、情報処理装置が
図10のすべての構成要素を含む必要はなく、情報処理装置の用途又は条件に応じて一部の構成要素を省略することも可能である。例えば、ユーザ又はオペレータとのインタフェースが不要である場合は、入力装置1003及び出力装置1004を省略してもよい。可搬型記録媒体1009又は通信ネットワークを使用しない場合は、媒体駆動装置1006又はネットワーク接続装置1007を省略してもよい。
【0102】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【0103】
図1乃至
図10を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
ニューラルネットワークの量子化において、量子化対象の複数の数値のうち、閾値によって規定される数値範囲から外れた数値を、前記閾値に対応する量子化後の数値に変換する場合、前記複数の数値それぞれに対する量子化誤差に基づいて前記閾値を決定する、
処理をコンピュータに実行させるための閾値決定プログラム。
(付記2)
前記閾値を決定する処理は、前記複数の数値それぞれに対する量子化誤差の統計値に基づいて前記閾値を決定する処理を含むことを特徴とする付記1記載の閾値決定プログラム。
(付記3)
前記統計値に基づいて前記閾値を決定する処理は、
前記閾値の複数の候補各々によって規定される数値範囲に基づいて前記複数の数値各々を量子化することで、前記複数の数値各々に対応する量子化後の数値を生成する処理と、
前記複数の数値各々と、前記複数の数値各々に対応する量子化後の数値とに基づいて、前記統計値を計算する処理と、
前記複数の候補各々から計算された前記統計値に基づいて、前記複数の候補の中から前記閾値を選択する処理と、
を含むことを特徴とする付記2記載の閾値決定プログラム。
(付記4)
前記量子化対象は、前記ニューラルネットワークにおける重み、バイアス、又はアクティベーションであることを特徴とする付記1乃至3の何れか1項に記載の閾値決定プログラム。
(付記5)
ニューラルネットワークの量子化において、量子化対象の複数の数値のうち、閾値によって規定される数値範囲から外れた数値を、前記閾値に対応する量子化後の数値に変換する場合、前記複数の数値それぞれに対する量子化誤差に基づいて前記閾値を決定する、
処理をコンピュータが実行することを特徴とする閾値決定方法。
(付記6)
前記閾値を決定する処理は、前記複数の数値それぞれに対する量子化誤差の統計値に基づいて前記閾値を決定する処理を含むことを特徴とする付記5記載の閾値決定方法。
(付記7)
前記統計値に基づいて前記閾値を決定する処理は、
前記閾値の複数の候補各々によって規定される数値範囲に基づいて前記複数の数値各々を量子化することで、前記複数の数値各々に対応する量子化後の数値を生成する処理と、
前記複数の数値各々と、前記複数の数値各々に対応する量子化後の数値とに基づいて、前記統計値を計算する処理と、
前記複数の候補各々から計算された前記統計値に基づいて、前記複数の候補の中から前記閾値を選択する処理と、
を含むことを特徴とする付記6記載の閾値決定方法。
(付記8)
前記量子化対象は、前記ニューラルネットワークにおける重み、バイアス、又はアクティベーションであることを特徴とする付記5乃至7の何れか1項に記載の閾値決定方法。
【符号の説明】
【0104】
401 閾値決定装置
411、511 決定部
501 推論装置
512 量子化部
513 推論部
514 記憶部
521 推論モデル
522 閾値
523 量子化推論モデル
524 入力データ
1001 CPU
1002 メモリ
1003 入力装置
1004 出力装置
1005 補助記憶装置
1006 媒体駆動装置
1007 ネットワーク接続装置
1008 バス
1009 可搬型記録媒体