(57)【要約】【課題】量子化した変数を使用してニューラルネットワークの計算を実行する場合に、計算の精度が低下することを抑止する。【解決手段】情報処理装置は、ニューラルネットワークの計算を実行する情報処理装置であって、前記計算に使用する変数を量子化する場合の区切り位置を、量子化前後の変数の差分に基づく量子化誤差を小さくするように設定する位置設定部と、前記位置設定部が設定した前記区切り位置に基づいて変数を量子化する量子化部と、を有する。【選択図】図１
2020177535.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークの計算を実行する情報処理装置であって、
前記計算に使用する変数を量子化する場合の区切り位置を、量子化前後の変数の差分に基づく量子化誤差を小さくするように設定する位置設定部と、
前記位置設定部が設定した前記区切り位置に基づいて変数を量子化する量子化部と、を有することを特徴とする情報処理装置。
【請求項２】
前記位置設定部は、
前記区切り位置を順次変更し、前記区切り位置の変更毎に前記量子化誤差を算出し、
前記量子化誤差が最小になる前記区切り位置を量子化に使用する前記区切り位置に設定すること、を特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記位置設定部は、
複数の前記区切り位置を１つずつ変更して前記量子化誤差が最小になる複数の前記区切り位置を見つける処理を、複数の前記区切り位置が変更されなくなるまで繰り返し実行し、
変更されなくなった前記区切り位置を、量子化に使用する前記区切り位置に設定すること、を特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記位置設定部は、式（４）を用いて前記量子化誤差ＬＯＳＳを算出すること、を特徴とする請求項１ないし請求項３のいずれか１項に記載の情報処理装置。
【数４】
2020177535.tif 000006
ｎ：量子化する個数（ｎは２以上の自然数）
ｋｉ：量子化対象の変数Ｗｉの非ゼロ要素の要素数
Ｗｋｉ：変数Ｗｉと同じ要素数を持ち、かつ変数Ｗｉから絶対値の大きい順にｋ個の要素を取り出し、それ以外の要素は０とした変数
【請求項５】
前記位置設定部は、前記量子化誤差の変化が下に凸の特性を示す場合、黄金分割探索アルゴリズムを用いて前記量子化誤差が最小になる前記区切り位置を探索すること、を特徴とする請求項２に記載の情報処理装置。
【請求項６】
前記位置設定部は、前記量子化誤差の変化が下に凸の特性を示す場合、前記区切り位置を隣接する前記区切り位置側から順次変更し、前記量子化誤差が減少から増加に転じた場合に前記量子化誤差が最小になったと判定すること、を特徴とする請求項２に記載の情報処理装置。
【請求項７】
前記位置設定部は、前記区切り位置の間隔が均等に設定された初期状態から、前記区切り位置を設定する処理を開始すること、を特徴とする請求項１ないし請求項６のいずれか１項に記載の情報処理装置。
【請求項８】
前記位置設定部は、変数の絶対値を用いて前記区切り位置を設定すること、を特徴とする請求項１ないし請求項７のいずれか１項に記載の情報処理装置。
【請求項９】
前記位置設定部は、正負が区別された変数を用いて前記区切り位置を設定すること、を特徴とする請求項１ないし請求項７のいずれか１項に記載の情報処理装置。
【請求項１０】
前記位置設定部は、２のｍ乗個（ｍは１以上の自然数）に量子化する個数に対応する数の前記区切り位置を設定すること、を特徴とする請求項１ないし請求項９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記情報処理装置は、前記ニューラルネットワークの入力側から計算を順次実行する順伝播処理と、前記ニューラルネットワークの出力側から計算を順次実行する逆伝播処理と、前記逆伝播処理の結果に基づいて変数を更新する更新処理とを含むバッチを繰り返し実行し、
前記位置設定部は、各バッチにおいて前記更新処理の後に、次のバッチで使用する前記区切り位置を設定すること、を特徴とする請求項１ないし請求項１０のいずれか１項に記載の情報処理装置。
【請求項１２】
前記情報処理装置は、前記位置設定部により設定された前記区切り位置を用いて、前記ニューラルネットワークの推論で使用する変数を量子化すること、を特徴とする請求項１ないし請求項１０のいずれか１項に記載の情報処理装置。
【請求項１３】
ニューラルネットワークの計算を実行する情報処理装置による情報処理方法であって、
前記計算に使用する変数を量子化する場合の区切り位置を、量子化前後の変数の差分に基づく量子化誤差を小さくするように設定し、
設定した前記区切り位置に基づいて変数を量子化すること、を特徴とする情報処理方法。
【請求項１４】
ニューラルネットワークの計算を実行する情報処理装置が実行する情報処理プログラムであって、
前記情報処理装置に、
前記計算に使用する変数を量子化する場合の区切り位置を、量子化前後の変数の差分に基づく量子化誤差を小さくするように設定させ、
設定した前記区切り位置に基づいて変数を量子化させること、を特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法および情報処理プログラムに関する。
【背景技術】
【０００２】
アナログ的にコンダクタンスが変化するニューロモルフィック素子を利用して、ニューラルネットワークの処理に必要な積和演算を実行する手法が提案されている（例えば、特許文献１参照）。音声符号化装置において、数値計算での桁落ちによる線形予測係数の精度の低下をニューラルネットワークの学習機能を用いて防止する手法が提案されている（例えば、特許文献２参照）。音声と画像とを用いて音声の認識を行う場合に、音声と画像とのそれぞれの特徴パラメータを最適に統合し、認識装置における認識性能を向上させる手法が提案されている（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第６２９３９６３号
【特許文献２】特開平５−３０３３９８号公報
【特許文献３】特開２０００−２０００９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、ニューラルネットワークの計算に使用するデータや重みなどの各種変数を浮動小数点数で表現する場合、ニューラルネットワークの計算の精度を向上できるが、使用する演算器の規模は大きくなり、計算時間は長くなる。一方、データや重みなどの各種変数を量子化して固定小数点数で表現する場合、演算器の規模を削減でき、計算時間も短くできるが、ニューラルネットワークの計算の精度は低下するおそれがある。計算の精度が低下した場合、ニューラルネットワークの学習の精度は低下し、学習により構築されたニューラルネットワークを用いた推論処理等の精度は低下する。
【０００５】
１つの側面では、本発明は、量子化した変数を使用してニューラルネットワークの計算を実行する場合に、計算の精度が低下することを抑止することを目的とする。
【課題を解決するための手段】
【０００６】
一つの観点によれば、情報処理装置は、ニューラルネットワークの計算を実行する情報処理装置であって、前記計算に使用する変数を量子化する場合の区切り位置を、量子化前後の変数の差分に基づく量子化誤差を小さくするように設定する位置設定部と、前記位置設定部が設定した前記区切り位置に基づいて変数を量子化する量子化部と、を有することを特徴とする。
【発明の効果】
【０００７】
１つの側面では、本発明は、量子化した変数を使用してニューラルネットワークの計算を実行する場合に、計算の精度が低下することを抑止することができる。
【図面の簡単な説明】
【０００８】
【図１】一実施形態における情報処理装置の一例を示すブロック図である。
【図２】図１の情報処理装置の動作の一例を示す説明図である。
【図３】別の実施形態における情報処理装置の一例を示すブロック図である。
【図４】図３の情報処理装置の動作の一例を示す説明図である。
【図５】図４で説明した更新処理により最適化された区切り位置と、最適化された区切り位置により量子化された変数を示す説明図である。
【図６】図３の情報処理装置によるニューラルネットワークの学習の一例を示すフロー図である。
【図７】図６のステップＳ１２の一例を示すフロー図である。
【図８】他の情報処理装置によるニューラルネットワークの学習の一例を示すフロー図である。
【図９】学習を繰り返した場合のニューラルネットワークの認識精度の一例を示す説明図である。
【図１０】図７のステップＳ１２の別の例を示すフロー図である。
【図１１】図７のステップＳ１２のさらなる別の例を示すフロー図である。
【図１２】別の実施形態における情報処理装置の動作の一例を示すフロー図である。
【図１３】さらなる別の実施形態における情報処理装置の動作の一例を示すフロー図である。
【図１４】別の実施形態における情報処理装置の動作の一例を示すフロー図である。
【図１５】別の実施形態における情報処理装置の動作の一例を示すフロー図である。
【発明を実施するための形態】
【０００９】
以下、図面を用いて実施形態を説明する。
【００１０】
図１は、一実施形態における情報処理装置の一例を示す。図１に示す情報処理装置１００は、例えば、ニューラルネットワークを用いた画像処理等の学習または推論に使用される。情報処理装置１００は、通信バス４０で相互に接続されたＣＰＵ（Central  Processing  Unit）１０、メモリ２０およびアクセラレータ３０を有する。なお、情報処理装置１００は、ＣＰＵ１０の代わりに他のプロセッサを有してもよい。また、情報処理装置１００は、図示した以外の要素を含んでもよく、さらに、情報処理装置１００は、アクセラレータ３０を持たなくてもよい。
【００１１】
ＣＰＵ１０は、図示しない演算器と、位置設定部１２および量子化部１４とを有する。位置設定部１２および量子化部１４は、ハードウェアにより実現されてもよく、ＣＰＵ１０がメモリ２０に保持された情報処理プログラムを実行することで実現されてもよい。位置設定部１２および量子化部１４の機能は、後述する。
【００１２】
メモリ２０は、ＯＳ（Operating  System）およびアプリケーションプログラム等の各種プログラムと、ニューラルネットワークの処理で使用するデータおよび変数等とを記憶する。メモリ２０は、ニューラルネットワークの計算の途中で生成される中間データ等を記憶してもよい。アクセラレータ３０は、例えば、ＧＰＵ（Graphics  Processing  Unit）またはＤＳＰ（Digital  Signal  Processor）等であり、ＣＰＵに代わってニューラルネットワークの積和演算や行列演算等を実行可能である。
【００１３】
なお、この実施形態では、例えば、固定小数点数データを用いてニューラルネットワークの計算が実行されるため、ＣＰＵ１０およびアクセラレータ３０は、図示しない固定小数点演算器を有する。また、固定小数点数データを用いてニューラルネットワークの計算を実行する場合に計算の精度を低下させないために、ＣＰＵ１０は、浮動小数点数データを量子化して固定小数点数データに変換する場合、量子化の区切り位置（閾値）を最適化する処理を実行する。量子化の区切り位置の最適化については、図２で説明する。
【００１４】
位置設定部１２は、ニューラルネットワークの計算に使用する重み等の変数を量子化する場合の閾値である区切り位置を、量子化前の変数と量子化後の変数との差分に基づいて算出される量子化誤差を小さくするように設定する。
【００１５】
量子化部１４は、例えば、メモリ２０に記憶された浮動小数点数データ（入力データや重み）を読み出し、位置設定部１２が設定した区切り位置に基づいて、浮動小数点数データを量子化することで、固定小数点数データに変換する。あるいは、量子化部１４は、位置設定部１２が設定した区切り位置に基づいて、ニューラルネットワークの計算で得られた中間データ等の固定小数点数データの区切り位置を変更する。そして、情報処理装置１００は、区切り位置が最適化された固定小数点数データを用いて、順伝播（forward  propagation）、誤差逆伝播（back-propagation）および重みを更新する最適化（optimization）等のディープニューラルネットワークの処理を実行する。
【００１６】
図２は、図１の情報処理装置１００の動作の一例を示す。例えば、図２に示す動作は、ＣＰＵ１０が実行する情報処理プログラムにより実現される。すなわち、図２は、情報処理装置１００による情報処理方法および情報処理装置１００が実行する情報処理プログラムによる動作の例を示す。
【００１７】
図２に示す例では、ニューラルネットワークの計算で使用する変数の１つである重みを量子化する動作について説明するが、入力データやレイヤー間での中間データを量子化する場合も同様である。例えば、図２では、ニューラルネットワークにおけるレイヤーのいずれかで使用する重み（丸印）を、数直線上に並べている。図２の数直線は、図の左側ほど値が大きく、図の右側ほど値が小さい。また、重みの値は、丸印の中心で示される。
【００１８】
図２に示す例では、各重みは、４値（２進数の”１１”、”１０”、”０１”、”００”）のいずれかに量子化される。量子化後の値の個数である量子化数（量子化する個数）は、２２個である。量子化数を２のｍ乗個（ｍは１以上の自然数）に設定することで、量子化後の変数を、ｍビットの２進数の全ての値を用いて表すことができ、固定小数点数データとしてニューラルネットワークの演算を通常の演算器を使用して実行することができる。この例では、量子化後の重みは、２ビットの固定小数点数で表される。
【００１９】
浮動小数点数データを固定小数点数データに量子化することで、浮動小数点数データを用いて演算を実行する場合に比べて、乗算器等の演算器の構成を簡易にすることができ、ＣＰＵ１０またはアクセラレータ３０に搭載できる演算器の数を増やすことができる。これにより、浮動小数点数データの演算を実行する場合に比べて、ニューラルネットワークの演算の処理性能を向上することができる。
【００２０】
量子化数を”４”にする場合、位置設定部１２は、量子化の上限Δ０と下限Δ４との間に、量子化するときの閾値である区切り位置Δ１、Δ２、Δ３を設定する。なお、以下では、上限Δ０および下限Δ４も、区切り位置と称する場合もある。量子化後の値の個数である量子化数は、２値以上であれば、４値以外でもよいが、上述したように、２のｍ乗個であることが好ましい。
【００２１】
例えば、位置設定部１２は、互いに隣接する２つの区切り位置（Δ０とΔ１、Δ１とΔ２、Δ２とΔ３、Δ３とΔ４）の間隔が均等な初期状態から、区切り位置Δ１、Δ２、Δ３を設定する処理を開始する。区切り位置Δ１、Δ２、Δ３を設定する前の初期状態において、区切り位置の間隔を均等にすることで、区切り位置Δ１、Δ２、Δ３を最適化するための計算量を減らすことができる。
【００２２】
例えば、位置設定部１２は、重みの最大値ｍａｘを量子化の上限Δ０に設定し、重みの最小値ｍｉｎを量子化の下限Δ４に設定する。なお、量子化する重みの上限を予め上限Δ０に決めてもよい。この場合、上限Δ０を超える重みの値は、上限Δ０の値に変更される。同様に、量子化する重みの下限を予め下限Δ４に決めてもよい。この場合、下限Δ４を下回る重みの値は、下限Δ４の値に変更される。
【００２３】
位置設定部１２は、例えば、区切り位置Δ１、Δ２、Δ３を順次変更し、変更する毎に、量子化前の重みと量子化後の重みとの値の差分に基づいて量子化誤差を算出する。例えば、位置設定部１２は、まず、区切り位置Δ１を、区切り位置Δ０と区切り位置Δ２との間で順次変更して量子化誤差を算出し、量子化誤差が最小となる区切り位置Δ１を新たな区切り位置Δ１とする。
【００２４】
次に、位置設定部１２は、区切り位置Δ２を、新たな区切り位置Δ１と区切り位置Δ３との間で順次変更して量子化誤差を算出し、量子化誤差が最小となる区切り位置Δ２を新たな区切り位置Δ２とする。次に、位置設定部１２は、区切り位置Δ３を、新たな区切り位置Δ２と区切り位置Δ４との間で順次変更して量子化誤差を算出し、量子化誤差が最小となる区切り位置Δ３を新たな区切り位置Δ３とする。
【００２５】
この後、位置設定部１２は、新たに設定した区切り位置Δ１、Δ２、Δ３を順次変更し、変更する毎に、量子化前の重みと量子化後の重みとの値の差分に基づいて量子化誤差を算出する。そして、新たな区切り位置Δ１、Δ２、Δ３を求める処理を、区切り位置Δ１、Δ２、Δ３が変化しなくなるまで繰り返し実行し、量子化誤差が最小となる区切り位置Δ１、Δ２、Δ３の組合せを決定する。
【００２６】
区切り位置Δ１−Δ３を順次変更して量子化誤差を算出することで、最適な区切り位置Δ１、Δ２、Δ３が見つけられるため、例えば、簡易な情報処理プログラムによるループ処理を繰り返すことで、量子化誤差の最小値を検出することができる。なお、最適な区切り位置Δ１、Δ２、Δ３を求める手法は、上述に限定されず、計算量は増加するが、総当たりで求めてもよい。
【００２７】
位置設定部１２は、式（１）を用いて量子化誤差ＬＯＳＳを算出してもよい。
【００２８】
【数１】
2020177535.tif 000003
式（１）において、ｎは、量子化数（ｎは２以上の自然数）であり、ｋｉは、量子化対象の変数Ｗｉの非ゼロ要素の要素数である。Ｗｋｉは、変数Ｗｉと同じ要素数を持ち、かつ変数Ｗｉから絶対値の大きい順にｋ個の要素を取り出し、それ以外の要素は０とした変数である。
【００２９】
式（１）は、量子化前の変数の集合Ｗと、量子化後の変数の集合ＷＱの量子化誤差を二乗誤差で表した式（２）を展開することで得られ、量子化された変数の量子化誤差が最小となる条件式である。
【００３０】
【数２】
2020177535.tif 000004
式（２）において、Ｗは、量子化前のパラメータの集合であり、ＷＱは、量子化後のパラメータの集合である。
【００３１】
位置設定部１２が最適な区切り位置Δ１、Δ２、Δ３を設定した後、量子化部１４は、位置設定部１２が設定した区切り位置Δ０、Δ１、Δ２を閾値として、浮動小数点数で表された各重みを４値のいずれかに量子化する。例えば、量子化部１４は、式（３）を使用して、重みを量子化する。
【００３２】
【数３】
2020177535.tif 000005
式（３）において、ＷＱｉは、量子化後の変数の値である。ｋｉ＊は、量子化対象の重みのテンソルの非ゼロ要素の要素数を示し、量子化誤差ＬＯＳＳを最小化するｋの値である。Ｗｋ１＊は、設定された区切り位置によって分割された量子化対象の重みの各テンソルを用いて得られる集合を示す。
【００３３】
そして、情報処理装置１００は、それぞれ最適に量子化された変数等を用いて、ニューラルネットワークの計算を実行する。例えば、情報処理装置１００は、ニューラルネットワークを用いた推論において、ニューラルネットワークの入力側から計算を順次実行する順伝播処理を実行する。また、情報処理装置１００は、ニューラルネットワークを用いた学習において、順伝播処理に続いて、ニューラルネットワークの出力側から計算を順次実行する逆伝播処理を実行する。さらに、情報処理装置１００は、逆伝播処理の結果に基づいて変数を更新する更新処理を実行する。
【００３４】
なお、量子化するための区切り位置は、ミニバッチ毎に設定されてもよく、順伝播処理、逆伝播処理および更新処理の各々に対応して設定されてもよい。量子化するための区切り位置を、量子化誤差ＬＯＳＳが最小となるように設定することで、区切り位置を変更しない場合に比べて、ニューラルネットワークの計算の精度を向上することができる。例えば、画像中の物体を認識するニューラルネットワークにおいて、区切り位置を変更しない場合に比べて、画像の認識率を向上することができる。
【００３５】
また、量子化によりビット数を削減した固定小数点数データを使用してニューラルネットワークの計算を実行する場合の認識率を、浮動小数点数データを使用してニューラルネットワークの計算を実行する場合の認識率と同等以上にすることできる。この結果、浮動小数点数データを使用する場合に比べて、ＣＰＵ１０の演算効率を向上することができ、電力効率を向上することができる。
【００３６】
以上、図１および図２に示す実施形態では、区切り位置を、量子化誤差が最小となるように設定することで、区切り位置を変更しない場合に比べて、ニューラルネットワークの計算の精度を向上することができる。すなわち、量子化した変数を使用してニューラルネットワークの計算を実行する場合に、認識精度が低下することを抑止することができる。
【００３７】
例えば、固定小数点数データを用いてニューラルネットワークの演算を実行することができるため、浮動小数点数データで演算を実行する場合に比べて、乗算器等の演算器の構成を簡易にすることができ、ＣＰＵ１０に搭載できる演算器の数を増やすことができる。この結果、浮動小数点数データで演算を実行する場合に比べて、ニューラルネットワークの演算の処理性能を向上することができる。ＣＰＵ１０の演算効率を向上することができ、電力効率を向上することができる。
【００３８】
図３は、別の実施形態における情報処理装置の一例を示す。図1と同様の要素については、同じ符号を付し、詳細な説明は省略する。図３に示す情報処理装置１００Ａは、図１に示した情報処理装置１００と同様に、例えば、ニューラルネットワークにおける画像処理等の学習または推論に使用される。情報処理装置１００Ａは、通信バス４０で相互に接続されたＣＰＵ１０Ａ、メモリ２０、アクセラレータ３０、補助記憶装置５０および通信インタフェース６０を有する。なお、情報処理装置１００Ａは、図示した以外の要素を含んでもよい。
【００３９】
ＣＰＵ１０Ａは、図示しない演算器と、位置設定部１２Ａおよび量子化部１４Ａとを有する。ＣＰＵ１０Ａおよびアクセラレータ３０は、上述した実施形態と同様に、図示しない固定小数点演算器を有する。位置設定部１２Ａおよび量子化部１４Ａは、ハードウェアにより実現されてもよく、ＣＰＵ１０Ａがメモリ２０に保持された情報処理プログラムを実行することで実現されてもよい。位置設定部１２Ａは、例えば、重み等の変数を８値のいずれかに量子化するための７個の区切り位置を設定することを除き、図１に示した位置設定部１２の機能と同様の機能を有する。量子化部１４Ａは、位置設定部１２Ａにより設定された７個の区切り位置に基づいて、変数を量子化することを除き、図１に示した量子化部１４の機能と同様の機能を有する。
【００４０】
補助記憶装置５０は、ＣＰＵ１０Ａが実行するＯＳ（Operating  System）およびアプリケーションプログラム等の各種プログラムと、ニューラルネットワークの計算で使用するデータ、重み等の各種変数等とを記憶する。補助記憶装置５０が記憶するプログラム等は、メモリ２０に転送され、ＣＰＵ１０Ａにより実行される。通信インタフェース６０は、例えば、ネットワークを介して他の情報処理装置等と通信する機能を有する。これにより、ニューラルネットワークの計算を複数の情報処理装置を使用して並列に実行することが可能になる。
【００４１】
図４および図５は、図３の情報処理装置１００Ａの動作の一例を示す。図２で説明した動作と同様の動作については、詳細な説明は省略する。例えば、図４および図４で説明する動作は、ＣＰＵ１０Ａが実行する情報処理プログラムにより実現される。すなわち、図４および図５は、情報処理装置１００Ａによる情報処理方法および情報処理装置１００Ａが実行する情報処理プログラムによる動作の説明を示す。
【００４２】
図４に示す例においても、図２と同様に、ニューラルネットワークの計算で使用する変数の１つである重みを量子化する例について説明する。なお、入力データ、活性化関数（activation  functions）、ニューラルネットワークに含まれるレイヤーから出力される中間データ等が、ニューラルネットワークの計算で使用するために量子化されてもよい。
図４および図５の数直線は、絶対値を示しており、正負は区別されない。数直線は、図の左側ほど絶対値が大きく、図の右側ほど絶対値が小さい。なお、量子化する前の変数（重み）は、浮動小数点数（３２ビットまたは１６ビット等）で表される。
【００４３】
この実施形態では、各重みの絶対値は、８値（２進数の”１１１”、”１１０”、”１０１”、”１００”、”０１１”、”０１０”、”００１”、”０００”）のいずれかに量子化される。すなわち、量子化により振り分けられる値の個数である量子化数は、８個（２の３乗個）である。この場合、量子化の上限Δ０と下限Δ８との間に、量子化するときの閾値である７個の区切り位置Δ１、Δ２、Δ３、Δ４、Δ５、Δ６、Δ７が設定される。この場合、量子化後の重みは、３ビットの固定小数点数で表される。
【００４４】
なお、図４では、上限Δ０より値が大きい重みは、上限Δ０に変更され、下限Δ８より値が小さい重みは、下限Δ８に変更される。例えば、上限Δ０および下限Δ８は、ニューラルネットワークの設計者や、ニューラルネットワークを使用する使用者により、予め決められる。
【００４５】
図４の上側の太い曲線は、浮動小通点数データで表される量子化対象の変数（この例では重み）の分布を示し、符号Ｗ１−Ｗ８は、区切り位置Δ１−Δ７により分割された量子化対象の変数群を示す。図４の下側の矩形は、区切り位置Δ１−Δ７を閾値として量子化した場合の変数の分布を示し、符号ＷＱ１−ＷＱ８は、量子化された変数を示す。なお、量子化数は、ニューラルネットワークの設計者や、ニューラルネットワークを使用する使用者により、ｎ個（ｎは２以上の自然数）に予め指定される。
【００４６】
例えば、位置設定部１２Ａは、重みを量子化する処理を開始する前に、区切り位置Δ１、Δ２、Δ３、Δ４、Δ５、Δ６、Δ７を、上限Δ０と下限Δ８との間に等間隔に配置する。そして、位置設定部１２Ａは、量子化対象の重みのテンソルに含まれる要素を絶対値が大きい順に並べ替える。このため、符号Ｗ１−Ｗ８の各々で示される変数群は、正値と負値の両方を含み得る。次に、位置設定部１２Ａは、並べ替えた重みを、区切り位置にしたがって８個の集合に分割する。
【００４７】
位置設定部１２Ａは、重みを分割した後に、図２で説明した処理と同様に、重みを量子化する区切り位置のうち、区切り位置Δ１を、区切り位置Δ０から区切り位置Δ２の範囲を順次変更する毎に、上述した式（１）を用いて量子化誤差を計算する。位置設定部１２Ａは、区切り位置Δ１を動かした範囲内で量子化誤差の値が最小となった位置に区切り位置Δ１を更新する。
【００４８】
次に、位置設定部１２Ａは、区切り位置Δ２を、更新された新たな区切り位置Δ１から区切り位置Δ３の範囲を順次変更する毎に、上述した式（１）を用いて量子化誤差を計算する。位置設定部１２Ａは、区切り位置Δ２を動かした範囲内で量子化誤差の値が最小となった位置に区切り位置Δ２を更新する。
【００４９】
位置設定部１２Ａは、区切り位置Δ３、Δ４、Δ５、Δ６、Δ７の各々について、上述した区切り位置Δ１、Δ２の更新処理と同様に更新処理を順次行う。さらに、位置設定部１２Ａは、更新した区切り位置Δ１−Δ７の各々について、上述した区切り位置Δ１、Δ２の更新処理と同様に更新処理を順次行う。位置設定部１２Ａは、区切り位置Δ１−Δ７の少なくともいずれかが更新された場合、更新後の区切り位置Δ１−Δ７を使用して、さらなる更新処理を実行する。すなわち、位置設定部１２Ａは、全ての区切り位置Δ１−Δ７が更新されなくなるまで、更新処理を繰り返し実行する。
【００５０】
なお、図４に示す最適な区切り位置Δ１−Δ７を求める処理を、正負が区別されない絶対値を用いて実施する場合、正負を区別する場合に比べて、量子化のための計算量を少なくすることができる。一方で、ニューラルネットワークでの認識率の劣化量（すなわち、量子化誤差量）は、正負を区別する場合に比べて多くなる。このため、量子化のための計算量を抑えたい場合、正負が区別されない絶対値を用いて最適な区切り位置を求める処理を実行することが好ましい。
【００５１】
図５は、図４で説明した更新処理により最適化された区切り位置Δ１−Δ７と、最適化された区切り位置Δ１−Δ７により量子化された変数を示す。すなわち、図５は、更新されなくなった場合の区切り位置Δ１−Δ７を示している。
【００５２】
位置設定部１２Ａによる区切り位置Δ１−Δ７の更新処理が完了した場合、量子化部１４Ａは、上述した式（３）を用いて、重みの量子化を行う。すなわち、量子化部１４Ａは、設定された区切り位置によって分割された量子化対象の重みの各テンソルを用いて得られる集合（Ｗｋ１＊〜Ｗｋｎ＊）と、それらテンソルの非ゼロ要素の要素数（ｋ１＊〜ｋｎ＊）を用いて、変数の量子化を行う。これにより、量子化対象の重みは、量子化後の値ＷＱ１−ＷＱ８のいずれかに振り分けられる。なお、値ＷＱ１−ＷＱ８は、正負が区別されていない絶対値である。
【００５３】
これにより、情報量の多い１６ビットまたは３２ビットの浮動小数点数データを、情報量の少ない３ビットの固定小数点数データに量子化する場合にも、ニューラルネットワークの計算の精度が低下することを抑止できる。例えば、画像中の物体を認識するニューラルネットワークにおいて、区切り位置を変更しない場合に比べて、画像の認識率を向上することができる。
【００５４】
図６は、図３の情報処理装置１００によるニューラルネットワークの学習の一例を示す。例えば、図６に示すフローは、ＣＰＵ１０Ａが実行する情報処理プログラムにより実現される。すなわち、図６に示すフローは、情報処理装置１００Ａによる情報処理方法および情報処理装置１００Ａが実行する情報処理プログラムによる動作の例を示す。例えば、図６は、エポック毎に実行される。１エポックは、ニューラルネットワークの学習を行うデータサイズに相当するサイズの処理を行う単位であり、所定数のミニバッチの処理を含む。
【００５５】
まず、ＣＰＵ１０Ａは、ステップＳ１０において、ニューラルネットワークの学習を行うために、重み等の各種変数の初期値の設定、ミニバッチサイズの設定等の設定の初期化を行う。
【００５６】
次に、ＣＰＵ１０Ａの位置設定部１２Ａは、ステップＳ１２において、量子化誤差を最小にするために、図４および図５で説明したように、量子化処理に使用する区切り位置を設定する。区切り位置の設定処理の例は、図７で説明する。次に、ＣＰＵ１０Ａの量子化部１４Ａは、ステップＳ１４において、ステップＳ１２で設定された区切り位置を閾値として使用して、図５で説明したように、重み等の変数を量子化する。例えば、位置設定部１２Ａは、上述した式（３）を用いて、変数を量子化する。なお、量子化される変数は、ニューラルネットワークに入力される入力データおよびニューラルネットワークのレイヤー間で入出力される中間データを含んでもよく、その場合、区切り位置の設定は、変数毎に実施されてもよい。
【００５７】
次に、ＣＰＵ１０Ａは、ステップＳ１６において、ニューラルネットワークへの入力データおよびニューラルネットワークに設定された重み等の変数に基づいて、ニューラルネットワークの入力層から出力層に向けた計算、すなわち順伝播の計算を実行する。順伝播の計算の結果、ニューラルネットワークの出力層の出力を関数とする損失関数（loss  function）の値が計算される。
【００５８】
ニューラルネットワークの学習の目的は、ニューラルネットワークに設定される重みの値を更新することである。このため、ＣＰＵ１０Ａは、ステップＳ１６の後、ステップＳ１８において、ニューラルネットワークの出力層から入力層に向けた計算、すなわち、誤差逆伝播の計算の行うことで、重みの更新幅を決定する。例えば、誤差逆伝播の計算に使用される重みの更新幅を決定するアルゴリズムとして、勾配降下法（gradient  descent）が使用される。
【００５９】
次に、ＣＰＵ１０Ａは、誤差逆伝播の計算の後、ステップＳ２０において、算出された重みの更新幅を用いて、重みの値を更新する。次に、ステップＳ２２において、ＣＰＵ１０Ａは、１エポックの学習に対応する入力データが全て入力された場合、処理を終了し、入力されていない入力データがある場合、処理をステップＳ１２に戻す。
【００６０】
そして、ＣＰＵ１０Ａは、１エポックの学習に対応する入力データが全て入力されるまで、順伝播の計算、誤差逆伝播の計算、重みの更新の操作を繰り返し実行する。例えば、ステップＳ１２、Ｓ１４、Ｓ１６、Ｓ１８、Ｓ２０の処理は、ミニバッチサイズ毎に実行される。換言すれば、１エポックの処理が完了するまで、ミニバッチが繰り返し実行される。この実施形態では、ミニバッチ毎に繰り返される学習毎にステップＳ１２により区切り位置が更新され、ステップＳ１４により変数が量子化され、量子化誤差が最小となる位置で変数が量子化される。これにより、量子化された重み等の変数を使用するニューラルネットワークの認識率の劣化を低減することができる。
【００６１】
なお、図６に示す処理では、ミニバッチ毎に、ニューラルネットワークの計算の前に、区切り位置が設定され、設定された区切り位置にしたがって重み等が量子化される。そして、ニューラルネットワークの計算は、当該ミニバッチで設定された区切り位置を使用して量子化された重み等を使用して実行される。このため、ニューラルネットワークの計算は、区切り位置を設定し、重み等を量子化したＣＰＵ１０Ａにより実行されることが、他の情報処理装置へのデータ転送を発生させない点で効率的である。
【００６２】
図７は、図６のステップＳ１２の一例を示す。まず、ステップＳ１２０において、位置設定部１２Ａは、量子化対象の変数である重み等の変数を絶対の大きさ順に並べる。すなわち、変数は正負の区別なく並べられる。次に、ステップＳ１２１において、位置設定部１２Ａは、量子化対象の変数である重み等の変数を現在の区切り位置にしたがって分割する。
【００６３】
次に、ステップＳ１２２において、位置設定部１２Ａは、区切り位置を示す変数Ｓを”０”に設定し、値が最大の区切り位置Ｓ７を示す変数Ｓｍａｘを”７”に設定する。次に、ステップＳ１２３において、位置設定部１２Ａは、変数Ｓを”１”増加させる。
【００６４】
次に、ステップＳ１２４において、位置設定部１２Ａは、図４で説明したように、変数Ｓで示される区切り位置ΔＳを、区切り位置ΔＳ−１から区切り位置ΔＳ＋１まで順次変更し、各区切り位置ΔＳでの量子化誤差を算出する。例えば、Ｓ＝”１”の場合、位置設定部１２Ａは、区切り位置Δ１を区切り位置Δ０から区切り位置Δ２まで順次変更させて、各区切り位置Δ１での量子化誤差を算出する。例えば、位置設定部１２Ａは、上述した式（１）を用いて、量子化誤差を算出する。
【００６５】
次に、ステップＳ１２５において、位置設定部１２Ａは、ステップＳ１２４で算出した量子化誤差のうち、最小の量子化誤差が算出された区切り位置ΔＳを新たな区切り位置ΔＳに設定する。
【００６６】
次に、ステップＳ１２６において、位置設定部１２Ａは、変数Ｓが変数Ｓｍａｘに等しい場合、全ての区切り位置Δ１−Δ７を変更して量子化誤差を算出したため、処理をステップＳ１２７に移行する。位置設定部１２Ａは、変数Ｓが変数Ｓｍａｘでない場合、変更していない区切り位置があるため、処理をステップＳ１２３に戻す。
【００６７】
ステップＳ１２７において、位置設定部１２Ａは、直前に処理したステップＳ１２４、Ｓ１２５において、更新された区切り位置がある場合、最小の量子化誤差に対応する区切り位置の収束が完了していないため、処理をステップＳ１２０に戻す。一方、位置設定部１２Ａは、直前に処理したステップＳ１２４、Ｓ１２５において、更新された区切り位置がない場合、最小の量子化誤差に対応する区切り位置の収束が完了したと判断し、図７の処理を終了し、図６のステップＳ１４の処理に移行する。すなわち、連続する２回のステップＳ１２４、Ｓ１２５の処理において、区切り位置に変更がない場合、図７の処理は終了される。
【００６８】
図８は、他の情報処理装置によるニューラルネットワークの学習の一例を示す。図６と同様の処理については、同じ符号を付し、詳細な説明を省略する。図８に示す学習では、図６に示したステップＳ１０の代わりにステップＳ１１が実行され、ステップＳ１１の後、図６に示したステップＳ１６、Ｓ１８、Ｓ２０、Ｓ２２が繰り返し実行される。すなわち、図８では、図６に示したステップＳ１２、Ｓ１４は実行されない。
【００６９】
ステップＳ１１では、図６に示したステップＳ１０の処理に加えて、量子化処理に使用する区切り位置が設定される。例えば、区切り位置は、図４の初期状態に示すように等間隔に設定される。等間隔に設定された区切り位置は、ステップＳ１６、Ｓ１８、Ｓ２０の学習において、変更されずに使用される。
【００７０】
図９は、学習を繰り返した場合のニューラルネットワークの認識精度の一例を示す。図９の上側は、図６に示す処理により学習を繰り返した場合の認識精度の遷移を示し、図９の下側は、図８に示す処理により学習を繰り返した場合の認識精度の遷移を示す。学習の繰り返し回数はエポック数で示される。
【００７１】
図６に示す処理による学習（図９の上側）では、量子化後のビット数を８ビット、６ビット、４ビット、３ビットのいずれに設定する場合にも、ニューラルネットワークの認識精度（認識率）に優位差はない。すなわち、３ビットまたは４ビットに量子化する場合にも、８ビットに量子化する場合と同等の認識精度を得ることができる。また、所望の認識精度（例えば、０．９）に到達するまでのエポック数は、３ビットの場合、２０回程度になるが、４ビットの場合は、８ビットおよび６ビットの場合と有意差がない。換言すれば、３ビットにおいても、学習回数を増やすことで、所望の認識精度を得ることができる。この結果、例えば、ビット数の少ない簡易な演算器を多数搭載したアクセラレータ３０（図３）を用いることで、ビット数の多い演算器を用いて学習する場合に比べて、学習の効率を向上することができ、消費電力も削減することができる。
【００７２】
一方、図８に示す処理による学習（図９の下側）では、３ビットまたは４ビットに量子化したときの認識精度は、６ビットまたは８ビットに量子化したときの認識精度に比べて大きく劣化し、実用に耐えないレベルである。また、６ビットに量子化したときの認識精度も、８ビットに量子化したときの認識精度に比べて劣化する。さらに、８ビット以外では、学習を繰り返しても所望の認識精度（例えば、０．９）に到達することができない。
【００７３】
図９の上側に示すように、ミニバッチ毎に、最小の量子化誤差に対応する区切り位置を設定することで、区切り位置を固定で設定する場合に比べて、ニューラルネットワークの認識精度を向上することができ、少ないエポック数により学習を収束させることができる。
【００７４】
図１０は、図７のステップＳ１２の別の例を示す。図７と同様の処理については、同じ符号を付し、詳細な説明を省略する。図１０では、図７のステップＳ１２４の代わりにステップＳ１２４Ａが実行される。その他の処理は、図７と同様である。なお、図１０に示す処理は、量子化誤差の変化が下に凸の特性を示す場合に使用される。
【００７５】
ステップＳ１２４Ａでは、位置設定部１２Ａは、黄金分割探索アルゴリズムを用いて区切り位置ΔＳを変更し、量子化誤差が最も小さい区切り位置ΔＳを見つける。例えば、量子化誤差は、上述した式（１）を用いて算出される。
【００７６】
黄金分割探索アルゴリズムを用いることにより、量子化誤差を小さくする区切り位置ΔＳを見つけるまでの探索回数を低減することができ、最適な区切り位置ΔＳを算出するための計算量を削減することができる。この結果、黄金分割探索アルゴリズムを用いない場合に比べて、図６に示した学習に掛かる時間を削減することができる。
【００７７】
図１１は、図７のステップＳ１２のさらなる別の例を示す。図７と同様の処理については、同じ符号を付し、詳細な説明を省略する。図１１では、図７のステップＳ１２４の代わりにステップＳ１２４Ｂが実行される。その他の処理は、図７と同様である。なお、図１１に示す処理は、量子化誤差の変化が下に凸の特性を示す場合に使用される。
【００７８】
ステップＳ１２４Ｂでは、位置設定部１２Ａは、区切り位置ΔＳを、隣接する区切り位置の一方から他方（例えば、ΔＳ−１からΔＳ＋１）に向けて移動し、量子化誤差が減少から増加に転じた場合に、量子化誤差が最小になったと判定する。例えば、量子化誤差は、上述した式（１）を用いて算出される。
【００７９】
図１１では、区切り位置ΔＳを、ΔＳ−１からΔＳ＋１まで全て移動して量子化誤差を算出する場合に比べて、量子化誤差を算出する回数を削減することができ、学習に掛かる時間を削減することができる。
【００８０】
以上、図３から図１１に示す実施形態においても、図１から図２に示す実施形態と同様に、区切り位置を、量子化誤差が最小となるように変更することで、区切り位置を変更しない場合に比べて、ニューラルネットワークの計算の精度を向上することができる。すなわち、量子化した変数を使用してニューラルネットワークの計算を実行する場合に、計算の精度が低下することを抑止することができる。例えば、固定小数点数データを用いてニューラルネットワークの演算を実行することができるため、浮動小数点数データを用いる場合に比べて、ＣＰＵ１０Ａの演算効率を向上することができ、電力効率を向上することができる。
【００８１】
さらに、図３から図１１に示す実施形態では、ニューラルネットワークを学習させるミニバッチ毎に区切り位置を最適化し、学種を繰り返すことで、所望の認識率に到達するまでの学習回数を削減することができ、学習効率を向上することができる。また、最適な区切り位置Δ１−Δ７を求める処理を、正負が区別されない絶対値を用いて実施することで、正負を区別する場合に比べて、量子化のための計算量を少なくすることができる。
【００８２】
図１２は、別の実施形態における情報処理装置の動作の一例を示す。図６と同様の処理については、同じ符号を付し、詳細な説明を省略する。図１２に示すフローを実行する情報処理装置は、例えば、図３に示す情報処理装置１００Ａである。情報処理装置１００Ａは、情報処理プログラムを実行することで、図１２に示す処理を実現する。すなわち、図１２に示すフローは、情報処理装置１００Ａによる情報処理方法および情報処理装置１００Ａが実行する情報処理プログラムによる動作の例を示す。
【００８３】
図１２では、ステップＳ１２が、ステップＳ２０とステップＳ２２との間に配置される。但し、ステップＳ１２による処理は、ステップＳ２０の完了時だけでなく、ステップＳ１６の完了時およびステップＳ１８の完了時にそれぞれ開始されてもよい。なお、図１２のステップＳ１２で実行される処理は、図７、図１０または図１１に示したステップＳ１２のいずれかである。
【００８４】
例えば、ステップＳ１６において順伝播により生成された中間データ（次のレイヤーへの入力データ）を用いて、次回のミニバッチで中間データを量子化するための区切り位置が設定される。ステップＳ１８において逆伝播により生成された中間データ（次のレイヤーへの入力データ）を用いて、次回のミニバッチで中間データを量子化するための区切り位置が設定される。同様に、ステップＳ２０において更新された重み等の変数を用いて、次回のミニバッチで変数を量子化するための区切り位置が設定される。
【００８５】
なお、初回のミニバッチでは、区切り位置が設定されていない。このため、初回のミニバッチでの変数の量子化は、デフォルトの区切り位置を用いて実行される。例えば、デフォルトの区切り位置は、図４の初期状態に示すように等間隔に設定され、ステップＳ１０で設定される。また、各ミニバッチでの変数の量子化は、前回のミニバッチで設定された区切り位置を用いて実行される。
【００８６】
ステップＳ１２による区切り位置の設定処理を、学習後であって次回のミニバッチの投入前に実行することで、順伝播、逆伝播および重みの更新の計算が終了次第、それぞれに対応する区切り位置の設定処理を開始することができる。これにより、例えば、順伝播、逆伝播および重みの更新のそれぞれに対応する区切り位置の設定処理を複数の情報処理装置１００Ａで並列に実行することができる。この結果、図６に比べて、区切り位置を設定するための計算時間を短縮することができ、ニューラルネットワークの学習時間を短縮することができる。
【００８７】
図１３は、さらなる別の実施形態における情報処理装置の動作の一例を示す。図６と同様の処理については、同じ符号を付し、詳細な説明を省略する。図１３に示すフローを実行する情報処理装置は、例えば、図３に示す情報処理装置１００Ａである。情報処理装置１００Ａは、情報処理プログラムを実行することで、図１３に示す処理を実現する。すなわち、図１３に示すフローは、情報処理装置１００Ａによる情報処理方法および情報処理装置１００Ａが実行する情報処理プログラムによる動作の例を示す。
【００８８】
図１３では、ステップＳ１２、Ｓ１４が、ステップＳ２０とステップＳ２２との間に配置される。但し、図１２と同様に、ステップＳ１２、Ｓ１４による処理は、ステップＳ２０の完了時だけでなく、ステップＳ１６の完了時およびステップＳ１８の完了時にそれぞれ開始されてもよい。また、図１２と同様に、初回のミニバッチでの変数の量子化は、デフォルトの区切り位置を用いて、ステップＳ１０により実行される。そして、２回目以降のミニバッチでの変数の量子化は、前回のミニバッチで設定された区切り位置を用いて実行される。なお、図１３のステップＳ１２で実行される処理は、図７、図１０または図１１に示したステップＳ１２のいずれかである。
【００８９】
図１３に示す実施形態においても、図１２に示した実施形態と同様に、順伝播、逆伝播および重みの更新の計算が終了次第、それぞれに対応する区切り位置の設定処理を開始することができる。さらに、変数の量子化を、区切り位置が設定され次第開始することができる。これにより、例えば、順伝播、逆伝播および重みの更新のそれぞれに対応する区切り位置の設定処理と変数の量子化とを複数の情報処理装置１００Ａで並列に実行することができる。この結果、図６および図１２に比べて、区切り位置を設定および変数を量子化するための計算時間を短縮することができ、ニューラルネットワークの学習時間を短縮することができる。
【００９０】
図１４は、別の実施形態における情報処理装置の動作の一例を示す説明図である。図７と同様の処理については、同じ符号を付し、詳細な説明を省略する。図１４に示すステップＳ１２のフローを実行する情報処理装置は、例えば、図３に示す情報処理装置１００Ａである。情報処理装置１００Ａは、情報処理プログラムを実行することで、図１４に示す処理を実現する。すなわち、図１４に示すフローは、情報処理装置１００Ａによる情報処理方法および情報処理装置１００Ａが実行する情報処理プログラムによる動作の例を示す。
【００９１】
情報処理装置１００Ａは、図６に示す処理を実行する。図１４では、図７のステップＳ１２０の代わりにステップＳ１２０Ｃが実行される。その他の処理は、図７と同様である。位置設定部１２Ａは、ステップＳ１２０Ｃにおいて、量子化対象の変数である重み等の変数を、正負を含めた大きさ順に並べる。すなわち、変数は正負を区別して並べられる。この後のステップＳ１２１からステップＳ１２７の処理は、図７の説明と同様である。
【００９２】
この実施形態では、変数が正負を含めた大きさ順に並べられるため、例えば、ステップＳ１２１において、正値と負値とは別々に分割される。最適な区切り位置を求める処理を、正負が区別して大きさ順に並べた値を用いて実施する場合、正負を区別しない場合に比べて、量子化のための計算量は多くなる。一方で、ニューラルネットワークでの認識率の劣化量（すなわち、量子化誤差量）は、正負を区別しない場合に比べて、少なくなる。このため、認識率の劣化量を抑えたニューラルネットワークを構築したい場合、正負が区別した値を用いて最適な区切り位置を求める処理を実行することが好ましい。
【００９３】
図１４に示す実施形態においても、図１から図１１に示した実施形態と同様の効果を得ることができる。さらに、図１４に示す実施形態では、正負を区別して最適な区切り位置を設定することで、正負を区別する場合に比べて、学習後のニューラルネットワークの認識率を向上することができる。なお、図１０および図１１に示すステップＳ１２０が、図１４に示すステップＳ１２０Ｃに置き換えられてもよい。
【００９４】
図１５は、別の実施形態における情報処理装置の動作の一例を示す。図６と同様の処理については、同じ符号を付し、詳細な説明を省略する。図１５に示すフローを実行する情報処理装置は、例えば、図３に示す情報処理装置１００Ａである。情報処理装置１００Ａは、情報処理プログラムを実行することで、図１５に示す処理を実現する。すなわち、図１５に示すフローは、情報処理装置１００Ａによる情報処理方法および情報処理装置１００Ａが実行する情報処理プログラムによる動作の例を示す。
【００９５】
図１５では、図６に示す動作に対して、ステップＳ１８、Ｓ２０の処理が削除されている。すなわち、図１５では、予め実施された学習に基づいてニューラルネットワークによる推論が実行される。推論を実行する場合にも、図６と同様に、ミニバッチ毎に区切り位置を更新し、更新した区切り位置を用いて変数を量子化することで、量子化された変数を使用するニューラルネットワークの認識率の劣化を低減することができる。なお、図１５のステップＳ１２で実行される処理は、図７、図１０または図１１に示したステップＳ１２のいずれかである。また、上述した図１２および図１３からステップＳ１８、Ｓ２０の処理が削除され、予め実施された学習に基づいて推論が実行されてもよい。
【００９６】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【００９７】
１０、１０Ａ  ＣＰＵ
１２、１２Ａ  位置設定部
１４、１４Ａ  量子化部
２０  メモリ
３０  アクセラレータ
４０  通信バス
５０  補助記憶装置
６０  通信インタフェース
１００、１００Ａ  情報処理装置
Δ０−Δ８  区切り位置
【図１】
2020177535.tif 000007
【図２】
2020177535.tif 000008
【図３】
2020177535.tif 000009
【図４】
2020177535.tif 000010
【図５】
2020177535.tif 000011
【図６】
2020177535.tif 000012
【図７】
2020177535.tif 000013
【図８】
2020177535.tif 000014
【図９】
2020177535.tif 000015
【図１０】
2020177535.tif 000016
【図１１】
2020177535.tif 000017
【図１２】
2020177535.tif 000018
【図１３】
2020177535.tif 000019
【図１４】
2020177535.tif 000020
【図１５】
2020177535.tif 000021