(57)【要約】【課題】内積演算に係る処理負担をより軽減すると共に、重み係数の量子化粒度を保証する。【解決手段】複数の入力値と、前記入力値にそれぞれ対応する、量子化粒度が均一となるように量子化された複数の重み係数と、に基づいて、積和演算を実行する積和演算回路、を備え、量子化された前記重み係数は、２のべき乗で表現され、量子化された前記重み係数の指数は、予め定められた除数を分母に有する分数により表現され、前記積和演算回路は、前記除数から定まる剰余に基づいて、異なる加算乗数を用いた積和演算を行う、情報処理装置が提供される。【選択図】図１７
2019091512.tif 000002
【特許請求の範囲】
【請求項１】
複数の入力値と、前記入力値にそれぞれ対応する、量子化粒度が均一となるように量子化された複数の重み係数と、に基づいて、積和演算を実行する積和演算回路、
を備え、
量子化された前記重み係数は、２のべき乗で表現され、
量子化された前記重み係数の指数は、予め定められた除数を分母に有する分数により表現され、
前記積和演算回路は、前記除数から定まる剰余に基づいて、異なる加算乗数を用いた積和演算を行う、
情報処理装置。
【請求項２】
前記積和演算回路は、前記除数から定まる前記剰余ごとに演算結果を保持する異なる複数のアキュムレータ、を備える、
請求項１に記載の情報処理装置。
【請求項３】
前記剰余は、量子化された前記重み係数の指数に係る分子を被除数とした剰余演算により求められ、
前記積和演算回路は、前記剰余に対応する前記アキュムレータと回路を接続するセレクタ、をさらに備える、
請求項２に記載の情報処理装置。
【請求項４】
前記積和演算回路は、前記分子を前記除数で除算した際の商を整数化した値に基づいて、前記入力値に係るシフト演算を行うシフト演算器、をさらに備える、
請求項３に記載の情報処理装置。
【請求項５】
前記入力値は、べき乗表現により量子化され、
量子化された前記入力値は、予め定められた除数を分母に有する分数により表現され、
前記剰余は、量子化された前記重み係数の指数に係る分子と、量子化された前記入力値の指数に係る分子と、を加算した値を被除数とした際の剰余である、
請求項１に記載の情報処理装置。
【請求項６】
前記積和演算回路は、前記剰余に対応するアキュムレータごとに複数の加減算器、を備える、
請求項５に記載の情報処理装置。
【請求項７】
前記積和演算回路は、前記剰余に基づいて、前記剰余に対応する前記加減算器に対し演算の実行を指示する信号を入力するセレクタ、をさらに備える、
請求項６に記載の情報処理装置。
【請求項８】
前記積和演算回路は、前記剰余に対応する前記加算乗数をそれぞれ保持する複数の記憶回路、をさらに備える、
請求項１に記載の情報処理装置。
【請求項９】
前記積和演算回路は、前記剰余に基づいて、前記剰余に対応する前記記憶回路を接続するセレクタ、をさらに備える、
請求項８に記載の情報処理装置。
【請求項１０】
前記除数は、前記入力値に対して定められる第１の除数と、前記重み係数に対して定められる第２の除数と、を含み、
前記第１の除数と前記第２の除数とは、互いに異なる値である、
請求項５に記載の情報処理装置。
【請求項１１】
前記除数は、自然数である、
請求項１に記載の情報処理装置。
【請求項１２】
前記除数は、べき乗で表現される、
請求項１に記載の情報処理装置。
【請求項１３】
プロセッサが、複数の入力値と、前記入力値にそれぞれ対応する、量子化粒度が均一となるように量子化された複数の重み係数と、に基づいて、積和演算を実行すること、
を含み、
量子化された前記重み係数は、２のべき乗で表現され、
量子化された前記重み係数の指数は、予め定められた除数を分母に有する分数により表現され、
前記積和演算を行うことは、前記除数から定まる剰余に基づいて、異なる加算乗数を用いた積和演算を行う、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置、および情報処理方法に関する。
【背景技術】
【０００２】
近年、脳神経系の仕組みを模した数学モデルであるニューラルネットワークが注目されている。また、ニューラルネットワークにおける演算の処理負担を軽減するための種々の手法が提案されている。例えば、非特許文献１には、重み係数を２値化することで、処理負担を軽減する手法が記載されている。また、非特許文献２には、入力信号をログドメインに変換することにより、乗算を加算に変換する手法が記載されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】MatthieuCourbariaux、外２名、“BinaryConnect: Training Deep NeuralNetworks with binary weights during propagations”、［ｏｎｌｉｎｅ］、２０１５年１１月２日、arXiv、［平成２９年３月２２日検索］、インターネット〈URL: https://arxiv.org/pdf/1511.00363.pdf〉
【非特許文献２】Daisuke Miyashita、外２名、“Convolutional Neural Networks using Logarithmic Data Representation”、［ｏｎｌｉｎｅ］、２０１６年３月３日、arXiv、［平成２９年３月２２日検索］、インターネット〈URL: https://arxiv.org/pdf/1603.01025.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、非特許文献１に記載の手法では、＋１または−１を用いた２値化を行っているため、重み係数の次元数が増加するにつれて量子化の粒度が荒くなることが想定される。また、非特許文献２に記載の手法では、乗算の回避において所定の効果を有するものの、処理負担の軽減については、さらなる余地があるものと想定される。
【０００５】
そこで、本開示では、内積演算に係る処理負担をより軽減すると共に、重み係数の量子化粒度を保証することが可能な、新規かつ改良された情報処理装置および情報処理方法を提案する。
【課題を解決するための手段】
【０００６】
本開示によれば、複数の入力値と、前記入力値にそれぞれ対応する、量子化粒度が均一となるように量子化された複数の重み係数と、に基づいて、積和演算を実行する積和演算回路、を備え、量子化された前記重み係数は、２のべき乗で表現され、量子化された前記重み係数の指数は、予め定められた除数を分母に有する分数により表現され、前記積和演算回路は、前記除数から定まる剰余に基づいて、異なる加算乗数を用いた積和演算を行う、情報処理装置が提供される。
【０００７】
また、本開示によれば、プロセッサが、複数の入力値と、前記入力値にそれぞれ対応する、量子化粒度が均一となるように量子化された複数の重み係数と、に基づいて、積和演算を実行すること、を含み、量子化された前記重み係数は、２のべき乗で表現され、量子化された前記重み係数の指数は、予め定められた除数を分母に有する分数により表現され、前記積和演算を行うことは、前記除数から定まる剰余に基づいて、異なる加算乗数を用いた積和演算を行う、情報処理方法が提供される。
【発明の効果】
【０００８】
以上説明したように本開示によれば、内積演算に係る処理負担をより軽減すると共に、重み係数の量子化粒度を保証することが可能となる。
【０００９】
なお、上記の効果は必ずしも限定的なものではなく、上記の効果とともに、または上記の効果に代えて、本明細書に示されたいずれかの効果、または本明細書から把握され得る他の効果が奏されてもよい。
【図面の簡単な説明】
【００１０】
【図１】本開示の関連技術に係るニューラルネットワークにおける基本演算の概要について説明するための概念図である。
【図２】本開示の関連技術に係る入力ベクトルと重みベクトルとの内積演算について説明するための概要図である。
【図３】本開示の関連技術に係る２次元空間において２値量子化した重みベクトルについて説明するための図である。
【図４】本開示の関連技術に係る２次元空間において４値量子化した重みベクトルについて説明するための図である。
【図５】本開示の関連技術に係る３次元空間における重みベクトルの粒度のばらつきについて説明するための図である。
【図６】本開示の関連技術に係るＮ次元空間における重みベクトルの粒度のばらつきについて説明するための図である。
【図７】本開示の第１の実施形態に係る情報処理装置の機能ブロック図の一例である。
【図８】同実施形態に係る情報処理装置が備える積和演算回路の回路ブロック図の一例である。
【図９】同実施形態に係るアドレステーブルが保持するアドレス情報に係るオフセット表記の一例である。
【図１０】同実施形態に係る情報処理方法の処理イメージを示す図である。
【図１１】同実施形態に係る量子化粒度Δθについて説明するための図である。
【図１２】同実施形態に係るαに応じた量子化粒度Δθの最大値を示すグラフである。
【図１３】同実施形態に係る最大べき乗数について説明するための図である。
【図１４】同実施形態に係る入力数Ｎに対する乗算回数の例を示す図である。
【図１５】同実施形態に係る入力数Ｎに対する乗算回数の例を示す図である。
【図１６】本開示の第２の実施形態に係る重みベクトルを量子化した場合における積和演算回路の一例である。
【図１７】同実施形態に係る重みベクトルおよび入力ベクトルの双方を量子化した場合における積和演算回路の一例である。
【図１８】同実施形態に係る重みベクトルおよび入力ベクトルの双方を量子化した場合における積和演算回路の一例である。
【図１９】同実施形態に係る比較実験に用いたＲｅｓＮｅｔのネットワーク構造を示す図である。
【図２０】同実施形態に係るＭａｘ  Ｐｏｏｌｉｎｇ層を含まないＲｅｓＮｅｔネットワーク構成を示す図である。
【図２１】同実施形態に係るＭａｘ  Ｐｏｏｌｉｎｇ層を含むＲｅｓＮｅｔネットワーク構成を示す図である。
【図２２】同実施形態に係る画像認識率の比較結果を示す図である。
【図２３】同実施形態に係る量子化手法をバンドパスフィルタに適用した際の周波数特性（ゲイン特性）に係るシミュレーション結果を示す図である。
【図２４】同実施形態に係る量子化手法をバンドパスフィルタに適用した際の位相特性に係るシミュレーション結果を示す図である。
【図２５】同実施形態に係るＢＥＲ評価に利用したブロック図である。
【図２６】同実施形態に係るＢＰＳＫを変調方式に用いた際のＢＥＲ評価結果を示す図である。
【図２７】図２６におけるＳＮＲ７〜９ｄＢのデータを拡大した図である。
【図２８】同実施形態に係るＱＰＳＫを変調方式に用いた際のＢＥＲ評価結果を示す図である。
【図２９】図２８におけるＳＮＲ１０〜１２ｄＢのデータを拡大した図である。
【図３０】同実施形態に係る１６ＱＡＭを変調方式に用いた際のＢＥＲ評価結果を示す図である。
【図３１】図３０におけるＳＮＲ１６〜１８ｄＢのデータを拡大した図である。
【図３２】本開示の一実施形態に係るハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１２】
なお、説明は以下の順序で行うものとする。
１．第１の実施形態
１．１．背景
１．２．情報処理装置１０の機能構成例
１．３．重みベクトルの量子化
１．４．積和演算回路の構成例
１．５．学習時における量子化
１．６．効果
２．第２の実施形態
２．１．概要
２．２．重みベクトルの量子化
２．３．重みベクトルおよび入力ベクトル双方の量子化
２．４．効果
２．５．通信技術への応用例
３．ハードウェア構成例
４．まとめ
【００１３】
＜１．第１の実施形態＞
＜＜１．１．背景＞＞
近年、深層学習（Ｄｅｅｐ  Ｌｅａｒｎｉｎｇ）などニューラルネットワークを用いた学習手法が広く研究されている。ニューラルネットワークを用いた学習手法は高い精度を有する一方、演算に係る処理負担が大きいことから、当該処理負担を効果的に軽減する演算方式が求められている。
【００１４】
このため、近年においては、例えば、Ｂｉｎａｒｙ  ｗｅｉｇｈｔ  ｎｅｔｗｏｒｋや、ＸＮＯＲ  ｎｅｔなどの、演算量や情報量の軽減を目的とする演算方式も提案されている。
【００１５】
ここで、一般的なニューラルネットワークにおける基本演算の概要について説明する。図１は、ニューラルネットワークにおける基本演算の概要について説明するための概念図である。図１には、ニューラルネットワークを構成する２つの層と、当該２つの層にそれぞれ属するセルｃ１１〜ｃ１Ｎとセルｃ２１とが示されている。
【００１６】
この際、セルＣ２１に入力される入力信号（以下、入力ベクトル、とも称する）は、下層に属するセルｃ１１〜ｃ１Ｎに係る入力ベクトルと重み係数（以下、重みベクトル、とも称する）とに基づいて決定される。より詳細には、セルｃ２１に入力される入力ベクトルは、セルｃ１１〜ｃ１Ｎに係る入力ベクトルと重みベクトルとの内積演算結果にバイアスｂを加算し、さらに活性化関数ｈにより処理した値となる。
【００１７】
すなわち、セルｃ１１〜ｃ１Ｎに係る入力ベクトルと重みベクトルとをそれぞれ、ｘ＝（ｘ１，ｘ２，ｘ３，．．．ｘＮ）、ｗ＝（ｗ１，ｗ２，ｗ３，．．．ｗＮ）とした場合、セルｃ２１に入力される入力ベクトルｚは、下記の数式（１）により定義される。
【００１８】
【数１】
2019091512.tif 000003
【００１９】
この際、重みベクトルｗを法線とする超平面ｈを想定すると、Ｎ次元で表現される入力ベクトルｘと重みベクトルｗとの内積は、図２に示すように、超平面ｈを基準とした入力ベクトルｘを重みベクトルｗへ射影した射影距離ｄに｜｜ｗ｜｜を掛けた値により表現することができる。ここで、上記の｜｜ｗ｜｜は、ベクトルｗのノルムである。図２は、入力ベクトルｘと重みベクトルｗとの内積演算について説明するための概要図である。
【００２０】
ここで、入力ベクトルｘと重みベクトルｗとが２次元である場合、非特許文献１のように、重みベクトルｗを＋１または−１の２値で量子化すると、重みベクトルｗは、図３のように表すことができる。図３は、２次元空間において２値量子化した重みベクトルｗについて説明するための図である。この際、重みベクトルｗの粒度は、平面における回転角度θで表現することができ、当該粒度は、図３に示すように、９０度となる。
【００２１】
続いて、重みベクトルｗを｛０，１／４，１／２，１｝の４値で量子化する場合を考察する。図４は、２次元空間において４値量子化した重みベクトルｗについて説明するための図である。この場合、重みベクトルｗの粒度、すなわち回転角度θは、約１５度となり、２値量子化した場合と比較してより細かい粒度を保証することが可能となる。
【００２２】
一方、重みベクトルｗの粒度は、次元数が増加するにつれ、ばらつきが大きくなることが想定される。図５は、３次元空間における重みベクトルｗの粒度のばらつきについて説明するための図である。例えば、図５に示すように、（１，１，０）と（０，０，１）とで定義される面における重みベクトルｗの量子化を考えた場合、（１，１，０）方向の辺の長さは、（０，０，１）方向の辺の長さの√２倍となるため、量子化時における粒度のばらつきが大きくなることがわかる。
【００２３】
また、上記のような粒度のばらつき、すなわち不均一性は、次元数が増加するほど顕著となる。図６は、Ｎ次元空間における重みベクトルｗの粒度のばらつきについて説明するための図である。図６には、Ｎ次元空間において、（１，１，．．．，１，０）と（０，０，．．．，０，１）で定義される面が示されている。この際、（１，１，．．．，１，０）方向の辺の長さは、（０，０，．．．，０，１）方向の辺の長さの√（Ｎ−１）倍により表すことができる。例えば、Ｎ＝１００である場合には、１，１，．．．，１，０）方向の辺の長さは、（０，０，．．．，０，１）方向の辺の√９９倍（≒１０倍）となる。
【００２４】
上記のような重みベクトルｗに係る粒度の不均一性は、ニューラルネットワークの性能低下の要因となり得ることから、より精度の高い量子化手法が望まれていた。本開示に係る技術思想は、上記の点に着目して発想されたものであり、Ｎ次元空間における重みベクトルの高い近似精度を維持しながらも効果的に処理負担を軽減することを可能とする。このために、本開示の第１の実施形態に係る情報処理装置および情報処理方法は、Ｎ次元超球平面におけるベクトル方向の粒度に基づいて量子化された重みベクトルを用いて内積演算を行うことを特徴の一つとする。本開示の第１の実施形態に係る情報処理装置および情報処理方法は、重みベクトルを、細かすぎず、かつ粗すぎない粒度で量子化することで、高い近似精度と処理負担の軽減を両立することが可能である。より詳細には、本開示の第１の実施形態に係る情報処理装置および情報処理方法は、べき乗により表現された重みベクトルを用いた内積演算を行ってよい。以下、本開示の第１の実施形態に係る情報処理装置および情報処理方法の有する上記の特徴について詳細に説明する。
【００２５】
＜＜１．２．情報処理装置１０の機能構成例＞＞
続いて、本実施形態に係る情報処理方法を実現する情報処理装置１０の機能構成例について述べる。図７は、本実施形態に係る情報処理装置１０の機能ブロック図の一例である。図７を参照すると、本実施形態に係る情報処理装置１０は、入力部１１０、演算部１２０、記憶部１３０、および出力部１４０を備える。以下、上記構成について、当該構成が有する機能を中心に説明する。
【００２６】
（入力部１１０）
本実施形態に係る入力部１１０は、操作者による種々の入力操作を検出する機能を有する。このために、本実施形態に係る入力部１１０は、操作者による入力操作を検出するための各種の装置を含んでよい。入力部１１０は、例えば、各種のボタン、キーボード、タッチパネル、マウス、スイッチなどにより実現され得る。
【００２７】
（演算部１２０）
本実施形態に係る演算部１２０は、複数の入力値と当該入力値にそれぞれ対応する複数の重み係数とに基づく内積演算を行い出力値を算出する機能を有する。本実施形態に係る演算部１２０は、特に、ニューラルネットワークの順伝播に係る内積演算を行う。この際、本実施形態に係る演算部１２０は、Ｎ次元超球表面におけるベクトル方向の粒度に基づいて量子化された重み係数に基づいて出力値を算出することを特徴の一つとする。より具体的には、本実施形態に係る演算部１２０は、べき乗により表現された重み係数に基づいて出力値を算出してよい。本実施形態に内積演算の特徴については、別途詳細に説明する。
【００２８】
（記憶部１３０）
記憶部１３０は、情報処理装置１０が備える各構成で用いられるプログラムやデータなどを記憶する機能を有する。本実施形態に係る記憶部１３０は、例えば、ニューラルネットワークに用いられる種々のパラメータなどを記憶する。
【００２９】
（出力部１４０）
出力部１４０は、操作者に対し種々の情報出力を行う機能を有する。このために、本実施形態に係る出力部１４０は、視覚情報を出力するディスプレイ装置を含んで構成され得る。ここで、上記のディスプレイ装置は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイ装置、液晶ディスプレイ（ＬＣＤ：Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）装置、ＯＬＥＤ（Ｏｒｇａｎｉｃ  Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）装置などにより実現され得る。
【００３０】
以上、本実施形態に係る情報処理装置１０の機能構成例について説明した。なお、上記で説明した機能構成例はあくまで一例であり、本実施形態に係る情報処理装置１０の機能構成例は係る例に限定されない。本実施形態に係る情報処理装置１０は、図１に示す以外の構成をさらに備えてもよい。情報処理装置１０は、例えば、他の情報処理端末との情報通信を行う通信部などをさらに備えてもよい。本実施形態に係る情報処理装置１０の機能構成は、柔軟に設計変更され得る。
【００３１】
＜＜１．３．重みベクトルの量子化＞＞
次に、本実施形態に係る重みベクトルの量子化について詳細に説明する。上述したように、本実施形態に係る情報処理装置１０は、べき乗により表現された重みベクトルｗによる量子化を行うことで、粒度の均一性を高く保つことができる。この際、本実施形態に係る演算部１２０は、複数の重みベクトル成分ｗｉを値の小さい順番に並び替え、また当該複数の重みベクトル成分ｗｉを最も値の大きい重み係数ｗｉで正規化することを特徴の一つとする。ここで、並び替えて正規化された重みベクトルをｗｊとすると、重みベクトルｗｊは、下記の数式（２）〜（４）により表される。
【００３２】
【数２】
2019091512.tif 000004
【００３３】
但し、この際、上記の数式（２）におけるαは、０＜α＜１、であり、ｓｊは、ｓｊ∈｛−１，１｝であり、ｎｊは、ｎｊ∈｛０，１，２，．．．｝、であってよい。すなわち、本実施形態に係る演算部１２０は、ｎｊを整数として量子化を行う。この際、演算部１２０が実行する内積演算は、下記の数式（５）により表される。なお、下記の数式（５）におけるＫは、正規化定数を示す。また、上記αの値については、下記の数式（５）を適宜変形した場合であっても、内積演算において最終的に上記の範囲に定まればよい。本開示に示す数式は、あくまで一例であり、柔軟に変形され得る。
【００３４】
【数３】
2019091512.tif 000005
【００３５】
このため、本実施形態に係る演算部１２０による内積演算は、Ｎ回の加算演算と、−１／２ｌｏｇ（Ｎ−１）／ｌｏｇαのオーダーの乗算回数により処理が可能であることが予想される。
【００３６】
このように、本実施形態に係る情報処理方法では、重みベクトルｗをαのべき乗表現により近似し、値の小さい順番に重みベクトルｗを並び替えることを特徴の一つとする。この際、本実施形態に係る情報処理方法では、Ｎに応じてαの指数をｔ値化することで、重みベクトルｗの量子化が行われる。
【００３７】
例えば、Ｎ＝１００である場合、本実施形態に係る情報処理方法では、ｔ＝４（２ｂｉｔ），８（３ｂｉｔ），１６（４ｂｉｔ）などが採用されてもよい。上記のようにｔを設定することで、上記の数式（５）におけるｎ１−ｎ２，ｎ２−ｎ３，ｎ３−ｎ４．．．の多くは、同一の値により量子化されることで０となるため、乗算の回数を大幅に削減することが可能となる。より具体的な例を挙げると、Ｎ＝１００に対し、ｔ＝４である場合、ｎｊ−１−ｎｊが０以外の値を取り得るのは４回のみとなる。このため、本例の場合、内積演算に係る乗算回数は４回で済み、残りはすべて加算となるため、処理負担を効果的に軽減することができる。
【００３８】
＜＜１．４．積和演算回路の構成例＞＞
次に、本実施形態に係る演算方式を実現する積和演算回路について説明する。上述のように、重みベクトルｗをべき乗表現により量子化し、また並び替えを行った場合、重みベクトルｗに対応する入力ベクトルｘの並び替えも併せて行う必要がある。
【００３９】
このため、本実施形態に係る情報処理装置１０は、値の小さい順番に並び替えられた複数の重みベクトルｗと対応する入力ベクトルｘのアドレス情報を保持するテーブルを有する積和演算回路を備えてよい。
【００４０】
図８は、本実施形態に係る情報処理装置１０が備える積和演算回路２００の回路ブロック図の一例である。図８に示すように、本実施形態に係る積和演算回路は、重みベクトルｗと対応する入力ベクトルｘのアドレス情報を保持するテーブルＷＴを保持する記憶回路と、ＲＡＭ２１０、加算回路２２０、アキュムレータ２３０、αに係る乗算を行う第１の乗算回路２４０、および正規化定数に係る乗算を行う第２の乗算回路２５０を備える。
【００４１】
（アドレステーブルＷＴ）
本実施形態に係るアドレステーブルＷＴは、値の小さい順番に並び替えられた複数の重みベクトルｗと対応する入力ベクトルｘのアドレス情報、符号情報、および乗算指示情報を保持する。なお、上記のアドレス情報は、図８に示すように、Ｎｕｌｌ  Ｐｏｉｎｔｅｒを含んでもよい。この場合、アキュムレータ２３０には０が加算されることとなり、アキュムレータ２３０の値を単純にα倍することが可能となる。また、上記の符号情報は、上述した数式（５）におけるＳｊに対応する値を示す情報である。
【００４２】
また、上記の乗算指示情報は、第１の乗算回路２４０による処理内容を指示する情報である。本実施形態に係る乗算指示情報は、例えば、乗算の要否を指定する情報を含んでよい。図８には、乗算指示情報が０である場合には、第１の乗算回路２４０は乗算を行わず、乗算指示情報が１である場合には、第１の乗算回路２４０はαを乗算する場合の一例が示されている。
【００４３】
なお、本実施形態に係る乗算指示情報は、上記の例に限定されず、種々の処理内容を指定する情報を含んでよい。本実施形態に係る乗算指示情報は、例えば、乗算の回数やシフト演算を指定する情報などを含み得る。
【００４４】
（ＲＡＭ２１０）
本実施形態に係るＲＡＭ２１０は、アドレステーブルＷＴから入力されたアドレス情報に基づいて重みベクトル成分ｗｊに対応する入力ベクトル成分ｘｊを加算回路２２０に出力する。
【００４５】
（加算回路２２０）
本実施形態に係る加算回路２２０は、ＲＡＭ２１０から入力される入力ベクトル成分ｘｊと第１の乗算回路２４０から出力される値に基づいて加算を実行する。この際、本実施形態に係る加算回路２２０は、アドレステーブルＷＴが保持する符号情報に基づいて上記の加算を行う。
【００４６】
（アキュムレータ２３０）
本実施形態に係るアキュムレータ２３０は、加算回路２２０から出力される演算結果を累積する。アキュムレータ２３０は、累積した値を第１の乗算回路２４０および第２の乗算回路２５０に出力する。また、アキュムレータ２３０には、累積した値を０にリセットするためのリセット信号が適宜入力される。
【００４７】
（第１の乗算回路２４０）
本実施形態に係る第１の乗算回路２４０は、アキュムレータ２３０が累積する値に対し、αを乗算する。この際、第１の乗算回路２４０は、上述したように、アドレステーブルＷＴが保持する乗算指示情報に基づいて上記の乗算を実行する。第１の乗算回路２４０は、演算結果を加算回路２２０に出力する。
【００４８】
（第２の乗算回路２５０）
本実施形態に係る第２の乗算回路２５０は、アキュムレータ２３０から出力される値に対し、正規化定数Ｋを乗算する。
【００４９】
以上、本実施形態に係る積和演算回路２００の構成例について説明した。本実施形態に係る積和演算回路２００によれば、内積演算における乗算回数を効果的に削減し、処理負担を軽減することが可能となる。
【００５０】
一方、本実施形態に係るアドレステーブルＷＴは、入力ベクトルｘのアドレス情報を保持することで容量が大きくなるため、消費電力が増加することも想定される。このため、本実施形態に係るアドレステーブルＷＴは、図９に示すように、アドレス間の相対位置を示すオフセットを含んでもよい。図９は、本実施形態に係るアドレステーブルＷＴが保持するアドレス情報に係るオフセット表記の一例である。
【００５１】
図９に示すように、本実施形態に係るアドレステーブルＷＴは、上述した数式（５）においてｎｊ−１−ｎｊの値が連続して０である区間、すなわち乗算が行われない区間のアドレスをアドレス順にソートし、当該アドレス間のオフセットをアドレス情報として保持してもよい。本実施形態に係る上記のアドレステーブルＷＴによれば、アドレス情報に係る情報量を大幅に削減し、消費電力を効果的に低減することが可能となる。
【００５２】
なお、本実施形態に係るアドレステーブルＷＴは、図８および図９に示した形式以外にも種々の形態を取り得る。本実施形態に係るアドレステーブルＷＴは、例えば、符号情報と乗算指示情報とを明確に分離して保持しなくてもよいし、上記以外のアドレス圧縮方法を採用してもよい。本実施形態に係るアドレステーブルＷＴは、ニューラルネットワークの構成や情報処理装置１０の性能などに応じて柔軟に変形され得る。
【００５３】
＜＜１．５．学習時における量子化＞＞
次に、本実施形態に係る学習時における重みベクトルｗの量子化について説明する。本実施形態に係る情報処理方法において、学習時における重みベクトル成分ｗｉの更新については、下記の数式（６）により計算することが可能である。
【００５４】
【数４】
2019091512.tif 000006
【００５５】
但し、上記の数式（６）におけるｗｍａｘは、ｗｉの最大値を示す。また、整数化ｉｎｔについては、切り上げ、または切り捨てのうちいずれか近い方を選んでもよい。本実施形態に係る情報処理方法では、最終学習時に、ｎｉを並び替えることで、上述したアドレステーブルＷＴを生成することができる。
【００５６】
なお、１に近いαを設定した場合においては、通常の浮動小数点演算を用いたＤＮＮ（Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）による学習アルゴリズムを用いて演算を行い、学習終了後のｗｉを量子化する手法を採択することも可能である。すなわち、重みベクトルｗに係る量子化粒度が小さい場合には、ネットワーク構造を変形しなくても、認識精度が低下しない効果が期待される。
【００５７】
＜＜１．６．効果＞＞
次に、本実施形態に係る重みベクトルの量子化により奏される効果について詳細に説明する。上述したように、本実施形態に係る情報処理方法では、べき乗表現により量子化したｗｉを値の小さい順番に並び替え正規化を行うことでｗｊと定義する。この際、並び替えられた基底ベクトルをｑｊとすると、重みベクトルｗは、下記の数式（７）により表される。
【００５８】
【数５】
2019091512.tif 000007
【００５９】
すなわち、本実施形態に係る情報処理方法は、図１０に示すように、ｑ１，ｑ２，．．．ｑｊ−１で張られる空間に投影された重みベクトルとｑｊとにより形成される平面にベクトルを作成し、当該ベクトルをαｎｊ−ｎｊ+１倍する処理を繰り返す、と意味を有する。図１０は、本実施形態に係る情報処理方法の処理イメージを示す図である。
【００６０】
このため、本実施形態に係る情報処理方法では、重みベクトルをｑ１，ｑ２，．．．ｑｊ−１空間に投影した軸とｑｊとで張られる平面において、重みベクトルの量子化粒度Δθは、図１１に示すように、反時計回転および時計回転方向にそれぞれ下記の数式（８）および（９）により表すことができる。但し、この際、数式（８）および（９）におけるｌは、数式（１０）により定義される。図１１は、本実施形態に係る量子化粒度Δθについて説明するための図である。なお、図１１では、第１象限に射影された重みベクトルが示されている。
【００６１】
【数６】
2019091512.tif 000008
【００６２】
また、量子化粒度Δθ１およびΔθ２をｌで微分して０とおいた場合、それぞれの最大値は、下記の数式（１１）により定義される。
【００６３】
【数７】
2019091512.tif 000009
【００６４】
図１２は、本実施形態に係るαに応じた量子化粒度Δθの最大値を示すグラフである。このように、本実施形態に係る情報処理方法によれば、Ｎ次元空間において、すべての直交する回転方向に量子化粒度が保証される。
【００６５】
なお、べき乗演算を途中で停止した場合、図１３に示すように、量子化粒度Δθが残されることとなる。図１３は、本実施形態に係る最大べき乗数について説明するための図である。なお、図１３では、第１象限に射影された重みベクトルが示されている。この際、量子化粒度Δθを保証する最大べき乗数は、下記の数式（１２）を満たす最小なｍに対し、下記の数式（１３）を加算すればよい。従って、本実施形態に係る情報処理装置１０が実行する乗算回数は、下記の数式（１４）により求めることができる。
【００６６】
【数８】
2019091512.tif 000010
【００６７】
例えば、α＝３／４である場合、入力数Ｎに対する乗算回数は、図１４に示すグラフのように決定される。また、例えば、α＝７／８である場合には、入力数Ｎに対する乗算回数は、図１５に示すグラフのように決定される。すなわち、本実施形態に係る演算部１２０による内積演算において、乗算回数は、重みベクトルの底の値に基づいて定まるといえる。図１４および図１５は、本実施形態に係る入力数Ｎに対する乗算回数の例を示す図である。
【００６８】
以上説明したように、本実施形態に情報処理方法を実現する情報処理装置によれば、ニューラルネットワークの順伝播に係る内積演算において、乗算回数を大幅に削減することができ、積和演算回路２００による消費電力を効果的に低減することが可能となる。また、本実施形態に情報処理方法を実現する情報処理装置によれば、重みベクトルの量子化精度を向上させることができ、同一のビット数による従来の量子化手法と比較して、ニューラルネットワークによる認識精度および近似精度を向上させる効果が期待される。
【００６９】
＜２．第２の実施形態＞
＜＜２．１．概要＞＞
次に、本開示の第２の実施形態について説明する。上記の第１の実施形態では、重みベクトル成分ｗｊをαｎにより表現することで、高い近似精度を実現するとともに、内積演算における乗算回数をｌｏｇのオーダーで軽減する手法について述べた。
【００７０】
しかし、第１の実施形態における手法は、内積空間の次元数が比較的大きい場合に有効である一方、ＣＮＮ（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）のような比較的次元数の小さい内積演算については、処理負担の軽減効果が十分ではない場合も想定される。
【００７１】
そこで、本開示の第２の実施形態では、内積空間の次元数が比較的小さい場合であっても内積演算の処理負担を効果的に低減することが可能な演算回路を提案する。
【００７２】
具体的には、本開示の第２の実施形態では、重みベクトル成分ｗｉや入力ベクトル成分ｘｉをα−ｎ／ｐと表現してよい。この際、α＝２とすると、α−ｎ／ｐが取り得る値は、下記の表１のように表すことができる。
【００７３】
【表１】
2019091512.tif 000011
【００７４】
上記の表１は、すなわち、ｐの値を大きいほど、量子化の粒度を小さくできることを示している。このため、本開示の第２の実施形態では、重みベクトル成分ｗｉや入力ベクトル成分ｘｉをα−ｎ／ｐにより量子化することで、第１の実施形態と比べ量子化誤差を小さくすることが可能となる。また、本開示の第２の実施形態における演算手法によれば、第１の実施形態で述べた内積演算と同等の処理をシフト演算および加算のみで行うことが可能となり、内積演算における処理負担を効果的に低減することが可能となる。
【００７５】
＜＜２．２．重みベクトルの量子化＞＞
まず、重みベクトルｗのみをα−ｎ／ｐにより量子化する場合の手法について述べる。ここで、α＝２、ｐ∈｛１，２，３，．．．｝の自然数とし、下記の数式（１５）により内積演算を行う場合を説明する。なお、ｐは本開示における除数に対応する。また、下記の数式（１５）におけるｗｉは、下記数式（１６）により表すものとする。また、下記の数式（１６）におけるｓｉおよびｎｉはそれぞれ、ｓｉ∈｛−１，１｝、ｎｉ∈｛０，１，２，．．．｝、とする。
【００７６】
【数９】
2019091512.tif 000012
【００７７】
この際、ｗを、すべてのｗｉに対して、｜ｗｉ｜≦１、となるように正規化を行い、必要に応じてのちにｙに正規化乗数をかけるとすると、上記の数式（１５）は、下記の数式（１７）のように表すことができる。また、ここで、ｙｒを下記の数式（１８）により定義する。
【００７８】
【数１０】
2019091512.tif 000013
【００７９】
2019091512.tif 000014
【００８０】
【数１１】
2019091512.tif 000015
【００８１】
この際、上記の数式（１９）に示す内積演算は、例えば、図１６に示す積和演算回路３００により実現することが可能である。図１６は、本実施形態に係る重みベクトルを量子化した場合における積和演算回路の一例である。
【００８２】
図１６を参照すると、本実施形態に係る積和演算回路３００は、シフト演算器３１０、剰余演算器３２０、セレクタ３３０および３４０、アキュムレータ群３５０、加減算器３６０、乗算器群３７０、および加算器３８０を備える。
【００８３】
（シフト演算器３１０）
本実施形態に係るシフト演算器３１０は、入力される入力ベクトル成分ｘｉ、およびｎｉに基づくシフト演算を行う。具体的には、シフト演算器３１０は、入力ベクトル成分ｘｉを、ｉｎｔ（ｎi／ｐ）の値ぶん右にビットシフトする。
【００８４】
（剰余演算器３２０）
本実施形態に係る剰余演算器３２０は、入力されるｎｉに基づいて、ｎｉ  ｍｏｄ  ｐの演算を行い、剰余の値をセレクタ３３０および３４０に入力する。
【００８５】
（セレクタ３３０および３４０）
本実施形態に係るセレクタ３３０および３４０は、剰余演算器３２０による演算結果に基づいて、アキュムレータ群３５０が含む複数のアキュムレータのうち、回路を繋ぐアキュムレータを選択する。この際、本実施形態に係るセレクタ３３０および３４０は、剰余の値にそれぞれ対応したアキュムレータと回路が接続されるよう動作する。例えば、剰余が０である場合、セレクタ３３０および３４０は、アキュムレータｙ０と回路が繋がるよう動作し、剰余が１である場合、セレクタ３３０および３４０は、アキュムレータｙ１と回路が繋がるよう動作する。
【００８６】
（アキュムレータ群３５０）
本実施形態に係るアキュムレータ群３５０は、ｎｉ  ｍｏｄ  ｐの剰余の値にそれぞれ対応した複数のアキュムレータを備える。すなわち、本実施形態に係るアキュムレータ群３５０は、剰余の値ごとにｙｒを保持する。
【００８７】
（加減算器３６０）
本実施形態に係る加減算器３６０は、入力されるｓｉ、シフト演算結果、およびｙｒの値に基づく加減算を行う。この際、加減算器３６０には、上述のように、ｎｉ  ｍｏｄ  ｐの剰余の値に基づいて選択されたアキュムレータが保持するｙｒの値が入力される。また、加減算器３６０による演算結果に基づいて、上記選択されたアキュムレータのｙｒが更新される。
【００８８】
（乗算器群３７０）
本実施形態に係る乗算器群３７０は、上述した処理により剰余ごとに更新されたｙｒに対し、当該剰余に応じた加算乗数を乗算する。このために、本実施形態に係る乗算器群３７０は、ｎｉ  ｍｏｄ  ｐの剰余ごとに対応した複数の乗算器を含む。例えば、乗算器群３７０は、アキュムレータ群３５０から入力されるｙ０に対し１を乗算し、ｙ１に対しては２−１／ｐを乗算する。
【００８９】
（加算器３８０）
本実施形態に係る加算器３８０は、乗算器群３７０が剰余ごとに計算したｙｒの値を加算し、最終的な演算結果ｙを出力する。
【００９０】
以上、本実施形態に係る積和演算回路３００について説明した。上述したように、本実施形態に係る積和演算回路３００によれば、ｎｉ  ｍｏｄ  ｐの剰余ごとに対応したアキュムレータにｙｒをそれぞれ蓄積し最後にまとめて乗算を行うことで、乗算回数を最小限に抑えることが可能となる。なお、図１６に示した一例では、ｉについて逐次計算を行いｙｒを更新しているが、上記計算の一部または全部を並列して計算することも可能である。
【００９１】
＜＜２．３．重みベクトルおよび入力ベクトル双方の量子化＞＞
次に、重みベクトルｗと入力ベクトルｘの双方をα−ｎ／ｐにより量子化する場合の手法について述べる。ここで、α＝２、ｐ∈｛１，２，３，．．．｝の自然数とし、内積演算を行う場合を説明する。ここで、入力ベクトル成分ｘｉおよび重みベクトル成分ｗｉは、それぞれ下記の数式（２０）および（２１）で表すものとする。また、下記の数式（２０）および（２１）において、ｓｘｉ，ｓｗｉ∈｛−１，１｝、ｎｉ，ｍｉ∈｛０，１，２，．．．｝、とする。
【００９２】
【数１２】
2019091512.tif 000016
【００９３】
ここで、入力ベクトルｘおよび重みベクトルｗをそれぞれ、｜ｘｉ｜≦１、｜ｗｉ｜≦１、となるように正規化しておき、必要に応じて後にｙに正規化乗数をかけるとすると、内積演算は、下記の数式（２２）により表すことができる。また、ここで、ｙｒを下記の数式（２３）により定義する。
【００９４】
【数１３】
2019091512.tif 000017
【００９５】
この際、ｒ∈｛０，１，．．．，ｐ−１｝、とおけば、ｙｒは、負数を２の補数で表現した通常の固定小数点標記で表現可能となる。なお、上記において、ｐは自然数であってよい旨を述べたが、ｐは、べき乗表現で表されてもよい。例えば、ｐ＝２ｑ、ｑ∈｛０，１，２，．．．｝、とした場合、ｉｎｔ（（ｍi＋ｎi）／ｐ）および（ｍi＋ｎi） ｍｏｄ  ｐの計算がビットの切り出しで可能となり除算が不要となるため計算が簡略される効果がある。
【００９６】
この際、内積演算は、例えば、図１７に示す積和演算回路４００により実現することが可能である。図１７は、本実施形態に係る重みベクトルおよび入力ベクトルの双方を量子化した場合における積和演算回路の一例である。
【００９７】
図１７を参照すると、本実施形態に係る積和演算回路４００は、第１の加算器４１０、シフト演算器４２０、セレクタ４３０、ＸＯＲ回路４４０、アキュムレータ群４５０、乗算器群４６０、および第２の加算器４７０を備える。
【００９８】
（第１の加算器４１０）
本実施形態に係る第１の加算器４１０は、入力されるｍｉとｎｉとを加算する。この際、ｍｉおよびｎｉの加算結果は、図示するように、［ｂｋ−１,．．．,ｂｑ,ｂｑ−１,．．．ｂ０］のビット配列として表すことができる。
【００９９】
（シフト演算器４２０）
本実施形態に係るシフト演算器４２０は、第１の加算器４１０による演算結果に基づいて、固定小数点で表現された１をｉｎｔ（（ｍｉ＋ｎｉ）／ｐ）だけ右シフト演算する。この際、ｉｎｔ（（ｍｉ＋ｎｉ）／ｐ）の値は、第１の加算器４１０による演算結果である上記のビット配列のうち、［ｂｋ−１,．．．,ｂｑ］に該当する上位ビットの値となる。このため、シフト演算器４２０は、当該上位ビットの値を用いてシフト演算を行ってよい。
【０１００】
（セレクタ４３０）
本実施形態に係るセレクタ４３０は、（ｍｉ＋ｎｉ）  ｍｏｄ  ｐの剰余の値に基づいて、アキュムレータ群４５０が含む複数のアキュムレータおよび加減算器のうち、加減算を実行させる加減算器を選択し、Ｅｎａｂｌｅ信号＝１を入力する。この際、上記の剰余の値は、第１の加算器４１０による演算結果であるビット配列のうち、下位ｑビットに対応する［ｂｑ−１,．．．,ｂ０］に該当するため、上記と同様に演算を簡略化することが可能である。
【０１０１】
（ＸＯＲ回路４４０）
本実施形態に係るＸＯＲ回路４４０は、入力されるＳｘｉおよびＳｗｉに基づいて、１または０をアキュムレータ群４５０の各アキュムレータに入力する。具体的には、ＸＯＲ回路４４０は、ＳｗｉＳｘｉ＝−１となる場合に１を、ＳｗｉＳｘｉ＝＋１となる場合に０を各アキュムレータに入力する。
【０１０２】
（アキュムレータ群４５０）
本実施形態に係るアキュムレータ群４５０は、（ｍｉ＋ｎｉ）  ｍｏｄ  ｐの剰余の値にそれぞれ対応した複数のアキュムレータを備える。また、アキュムレータ群４５０は、当該アキュムレータと対応する複数の加減算器（１ビットのアップダウンカウンタ）を含んで構成される。
【０１０３】
ここで、上記の各加減算器は、図中右下に示すように、セレクタ４３０から入力されるＥｎａｂｌｅ信号に基づいて、加減算の要否を判定する。具体的には、各加減算器は、入力されたＥｎａｂｌｅ信号が１である場合にのみ、ＸＯＲ回路４４０から入力されるＵ／Ｄの値に従い、対応するアキュムレータが保持する値Ｏに対し１ビットのみ加算または減算を行う。本実施形態に係るアキュムレータ群４５０によれば、上位ビットに対する１ビットの加減算でｙｒの値を更新可能なことから、通常の加減算器が不要となり回路規模を小さくすることが可能となる。
【０１０４】
（乗算器群４６０）
本実施形態に係る乗算器群４６０は、上述した処理により剰余ごとに更新されたｙｒに対し、当該剰余に応じた値を乗算する。このために、本実施形態に係る乗算器群４６０は、（ｍｉ＋ｎｉ）  ｍｏｄ  ｐの剰余ごとに対応した複数の乗算器を含む。例えば、乗算器群４６０は、アキュムレータ群４５０から入力されるｙ０に対し１を乗算し、ｙ１に対しては２−１／ｐを乗算する。
【０１０５】
（第２の加算器４７０）
本実施形態に係る第２の加算器４７０は、乗算器群４６０が剰余ごとに計算したｙｒの値を加算し、最終的な演算結果ｙを出力する。
【０１０６】
以上、本実施形態に係る積和演算回路４００について説明した。上述したように、本実施形態に係る積和演算回路４００によれば、（ｍｉ＋ｎｉ）  ｍｏｄ  ｐの剰余ごとに対応したアキュムレータにｙｒをそれぞれ蓄積し最後にまとめて乗算を行うことで、乗算回数を最小限に抑えることが可能となる。なお、図１７に示した一例では、ｉについて逐次計算を行いｙｒを更新しているが、上記計算の一部または全部を並列して計算することも可能である。
【０１０７】
また、図１７に示した積和演算回路４００では、アキュムレータに対応する複数の加減算器（１ビットのアップダウンカウンタ）を並列して実装する場合の例を述べたが、本実施形態に係る積和演算回路４００は、上記構成に代えて、図１６に示した積和演算回路３００のようにセレクタと単一の加減算器を備えてもよい。また、同様に、積和演算回路３００に複数の加減算器を並列して実装することも可能である。本実施形態に係る積和演算回路の構成は、ｐの値に応じてより回路規模が小さくなるよう適宜設計され得る。
【０１０８】
また、図１７に示した積和演算回路４００では、（ｍｉ＋ｎｉ）の下位ｑビットに基づいて、加減算器およびアキュムレータを選択する場合を述べた。一方、上記の数式（２２）は、下記の数式（２４）のように変形可能である。
【０１０９】
【数１４】
2019091512.tif 000018
【０１１０】
このため、内積演算は、図１８に示す積和演算回路５００のように、単一の加減算器により実現することも可能である。図１８は、本実施形態に係る重みベクトルおよび入力ベクトルの双方を量子化した場合における積和演算回路の一例である。
【０１１１】
図１８を参照すると、本実施形態に係る積和演算回路５００は、加算器５１０、セレクタ５２０、記憶回路群５３０、シフト演算器５４０、ＸＯＲ回路５５０、加減算器５６０、およびアキュムレータ５７０を備える。
【０１１２】
（加算器５１０）
本実施形態に係る加算器５１０は、入力されるｍｉとｎｉとを加算する。加算器５１０は、図１７に示した第１の加算器４１０と同様の動作を行ってよい。
【０１１３】
（セレクタ５２０）
本実施形態に係るセレクタ５２０は、下位ｑビットに対応する［ｂｑ−１,．．．,ｂ０］の値に基づいて、記憶回路群５３０が含む複数の記憶回路のうち回路を接続する記憶回路を選択する。
【０１１４】
（記憶回路群５３０）
本実施形態に係る記憶回路群５３０は、（ｍｉ＋ｎｉ）  ｍｏｄ  ｐの剰余の値にそれぞれ対応した複数の記憶回路を備える。各記憶回路には、剰余ごとに対応した加算乗数がそれぞれ格納される。なお、記憶回路群５３０が備える各記憶回路は、上記加算乗数を定数として保持する読み取り専用回路であってもよいし、書き換え可能なレジスタであってもよい。加算乗数を定数として読み取り専用回路に記憶させる場合、回路構成が簡略化されるとともに消費電力を低減できるメリットがある。
【０１１５】
（シフト演算器５４０）
本実施形態に係るシフト演算器５４０は、接続された記憶回路が格納する加算乗数を［ｂｋ−１,．．．,ｂｑ］に該当する上位ビットの値だけ右シフト演算を行う。
【０１１６】
（ＸＯＲ回路５５０）
本実施形態に係るＸＯＲ回路５５０は、入力されるＳｘｉおよびＳｗｉに基づいて、１または０を出力する。ＸＯＲ回路５５０は、図１７に示したＸＯＲ回路４４０と同様の動作を行ってよい。
【０１１７】
（加減算器５６０）
本実施形態に係る加減算器５６０は、アキュムレータ５７０に保持されるｙに対し、シフト演算器５４０による演算結果およびＸＯＲ回路５５０からの入力に基づく加算または減算を繰り返し実行する。
【０１１８】
（アキュムレータ５７０）
本実施形態に係るアキュムレータ５７０は、内積演算の結果ｙを保持する。
【０１１９】
以上説明したように、本実施形態に係る積和演算回路５００によれば、単一の加減算器５６０および単一のアキュムレータ５７０により、内積演算を実現することができ、より回路規模を小さくすることが可能となる。
【０１２０】
なお、上記の説明では、入力ベクトルｘと重みベクトルｗとで共通のｐを用いる場合を例に述べたが、本実施形態に係る情報処理方法においては、入力ベクトルｘと重みベクトルｗで異なるｐを用いることも可能である。この場合、入力ベクトルｘおよび重みベクトルｗは、それぞれ下記の数式（２５）および（２６）により表すことができる。
【０１２１】
【数１５】
2019091512.tif 000019
【０１２２】
この際、ｐｍおよびｐｎの最小公倍数をｐ０、すなわち、ａｐｍ＝ｐ０、およびｂｐｎ＝ｐ０、とすれば、入力ベクトル成分ｘｉおよび重みベクトル成分ｗｉは、それぞれ下記の数式（２７）および（２８）により表される。
【０１２３】
【数１６】
2019091512.tif 000020
【０１２４】
従って、ｍｉ＋ｎｉの演算をａｍｉ＋ｂｎｉに置き換え、さらにｐをｐ０に置き換えることで、ｐが異なる場合であっても、上述の説明と同様に計算が可能となる。また、ｐｍおよびｐｎをべき乗表現とする場合、ａｍｉおよびｂｎｉは、それぞれシフト演算により求めることができる。
【０１２５】
続いて、本実施形態に係る入力ベクトルｘの量子化方法について詳細に説明する。入力ベクトルｘおよび重みベクトルｗの双方を量子化する場合、重みベクトルｗの量子化は事前に計算することが可能であるが、入力ベクトルｘの量子化については、ランタイムで行う必要がある。このため、入力ベクトルｘの量子化を小規模の演算回路で実現する手法が求められる。
【０１２６】
ここで、｜ｘｉ｜≦１を、ｃ＝［ｃｋ−１,．．．,ｃ０］のビット配列とする。なお、ｃは、ｃｋ−１が１に対応する固定小数点標記である。
【０１２７】
この際、ｃのｍｓｂ（ｍｏｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｉｔ：最上位ビット）から連続０のビット数をＬとする。また、ｃ＝［ｃｋ−１,．．．,ｃ０］をＬビット左シフトしたビット配列をｄとし、当該ビット配列をｍｓｂを０．５とする固定小数点として扱う。
【０１２８】
次に、下記の数式（２９）を満たす最小のｒをｒｍｉｎとする。なお、ここで、ｒ∈｛０，．．．,ｐ−１｝であるが、最小のｒが見つからない場合においては、ｒｍｉｎ＝ｐとしてよい。ここで、ｍｉを下記の数式（３０）により定義すれば、｜ｘｉ｜は、下記の数式（３１）として近似、すなわち量子化することが可能である。
【０１２９】
【数１７】
2019091512.tif 000021
【０１３０】
なお、上記で述べた計算は、ｃのｍｓｂから連続０のビット数をＬをカウントする構成と、ｐ回の固定値との比較を行う構成を備えることにより実現することが可能である。
【０１３１】
＜＜２．４．効果＞＞
次に、本実施形態に係る重みベクトルｗおよび入力ベクトルｘの量子化により奏される効果について詳細に説明する。ここでは、重みベクトル成分ｗｉおよび入力ベクトル成分ｘｉを±２−ｎ／ｐとして量子化を行う場合において、ｐ＝１、すなわち第１の実施形態で説明した量子化手法を用いた場合と、ｐ＝２、すなわち本実施形態の量子化手法を用いた場合の認識率を比較した。
【０１３２】
具体的には、重みベクトルｗおよび入力ベクトルｘをｆｌｏａｔで学習した後、得られた係数をそれぞれのｐの値で最近傍の量子化点に量子化し、再学習なしで推論を行った場合の画像認識率を比較する実験を実施した。
【０１３３】
なお、データセットには、ＣＩＦＡＲ−１０画像セット（１０クラスの分類、学習データ＝５００００画像、テストデータ＝１００００画像）を採用した。
【０１３４】
また、ネットワークには、ＲｅｓＮｅｔ２３をベースとした１１層のＲｅｓＮｅｔを用いた。図１９は、本実施形態に係る比較実験に用いたＲｅｓＮｅｔのネットワーク構造を示す図である。図１９では、図中右側に各層に入力される入力サイズが、図中左にカーネルサイズがそれぞれ示されている。また、図１９に示すように、作成したネットワークは、Ｍａｘ  Ｐｏｏｌｉｎｇ層を含まないＲｅｓＢｌｏｃｋ、およびＭａｘ  Ｐｏｏｌｉｎｇ層を含むＲｅｓＢｌｏｃｋの両方を含んでいる。図２０および図２１は、Ｍａｘ  Ｐｏｏｌｉｎｇ層を含まないＲｅｓＢｌｏｃｋ、およびＭａｘ  Ｐｏｏｌｉｎｇ層を含むＲｅｓＢｌｏｃｋのネットワーク構成をそれぞれ示す図である。
【０１３５】
続いて、実験に用いた重みベクトルｗおよび入力ベクトルｘの量子化手法について詳細に説明する。
【０１３６】
まず、ｐ＝１により量子化を行った場合のデータについて説明する。ここでは、重みベクトルｗの量子化において、ｎ＝−３〜１２の３２値（１６値×２±）を用いた。この際、量子化された重みベクトル成分ｗｉ＝±（２−ｎ）の取り得る値は、下記の表２に示すとおりである。
【０１３７】
【表２】
2019091512.tif 000022
【０１３８】
また、入力ベクトルｘの量子化においては、Ｒｅｌｕブロックへの入力前において、ｎ＝−４〜３の１６値（８値×２±）、ｎ＝−４〜１１の３２値（１６値×２±）、ｎ＝−４〜２７の６４値（３２値×２±）、の異なる３つの量子化を行った。この際、量子化された入力ベクトル成分ｘｉ＝±（２−ｎ）の取り得る値は、下記の表３〜表５に示すとおりである。
【０１３９】
【表３】
2019091512.tif 000023
【０１４０】
【表４】
2019091512.tif 000024
【０１４１】
【表５】
2019091512.tif 000025
【０１４２】
次に、ｐ＝２、すなわち本実施形態に係る手法を用いて量子化を行った場合のデータについて説明する。ここでは、重みベクトルｗの量子化において、ｎ＝−６〜９の３２値（１６値×２±）を用いた。この際、量子化された重みベクトル成分ｗｉ＝±（２−ｎ／２）の取り得る値は、下記の表６に示すとおりである。
【０１４３】
【表６】
2019091512.tif 000026
【０１４４】
また、入力ベクトルｘの量子化においては、Ｒｅｌｕブロックへの入力前において、ｎ＝−８〜−１の１６値（８値×２±）、ｎ＝−８〜７の３２値（１６値×２±）、ｎ＝−８〜２３の６４値（３２値×２±）、の異なる３つの量子化を行った。この際、量子化された入力ベクトル成分ｘｉ＝±（２−ｎ／２）の取り得る値は、下記の表７〜表９に示すとおりである。
【０１４５】
【表７】
2019091512.tif 000027
【０１４６】
【表８】
2019091512.tif 000028
【０１４７】
【表９】
2019091512.tif 000029
【０１４８】
以上説明した量子化により、再学習なしで推論を行った場合の画像認識率の比較結果を図２２に示す。図２２では、縦軸に認識精度が、横軸に入力ベクトルｘの量子化数（Ｎ値）がそれぞれ示されている。また、図２２では、量子化前の認識精度が線分Ｃにより、ｐ＝１により量子化を行った場合の認識精度が線分Ｐ１により、ｐ＝２により量子化を行った場合の認識精度が線分Ｐ２により、それぞれ示されている。
【０１４９】
ここで、線分Ｐ１および線分Ｐ２を比較すると、入力ベクトルｘの量子化数を３２値や６４値とした場合、ｐ＝２で量子化を行う方が、ｐ＝１で量子化を行うよりも認識精度が著しく向上することがわかる。また、線分Ｐ２と線分Ｃを比較しても、認識精度に大きな劣化は観察されないことがわかる。これは、すなわち入力ベクトルｘの量子化数が十分である場合、本実施形態に係る量子化手法を採用することで、再学習を行わない場合であっても、認識精度を高く維持することが可能であることを示している。
【０１５０】
このように、本実施形態に係る量子化手法によれば、内積演算における処理負担を効果的に軽減するとともに学習器の性能を高く維持することが可能となる。
【０１５１】
＜＜２．５．通信技術への応用例＞＞
次に、本実施形態に係る量子化手法の他分野への応用について説明する。上記の説明では、本実施形態に係る量子化手法をニューラルネットワークの順伝播に係る内積演算に適用する場合について述べた。一方、本実施形態に係る量子化手法は、上記の例に限定されず、内積演算を行う種々の技術に応用することが可能である。
【０１５２】
例えば、本実施形態に係る量子化手法は、通信技術分野で用いられるバンドパスフィルタにおける畳み込み演算に適用されてもよい。以下、本実施形態に係る量子化手法をバンドパスフィルタに適用した際のシミュレーション結果について説明する。
【０１５３】
図２３は、本実施形態に係る量子化手法をバンドパスフィルタに適用した際の周波数特性（ゲイン特性）に係るシミュレーション結果を示す図である。ここでは、ＲＲＣ（Ｒｏｏｔ−Ｒａｉｓｅｄ  Ｃｏｓｉｎｅ）フィルタにおける係数（６３  ｔａｐ,  ｒｏｌｌｏｆｆ  ０．５）の量子化を行った。
【０１５４】
なお、量子化には、ｐ＝２，３，４でそれぞれ３２値（０〜３１）を用いた。図中においては、ＤＮＮ（ｐ，３２）として示されている。また、比較として、浮動小数点（Ｆｌｏａｔ）、整数（Ｌｉｎｅａｒ）を用いた場合のシミュレーション結果が共に示されている。
【０１５５】
ここで、図２３を参照すると、本実施形態に係る量子化手法を適用した場合でも、バンドパス内の平坦特性は劣化していないことがわかる。一方、サイドバンドに着目すると、ＤＮＮ（２，３２）の場合であっても、約−２５ｄＢの減衰が可能となっており、またｐを大きくするほど、減衰の効果が大きくなることがわかる。なお、量子化の影響は、例えば、ＬＰＦ（Ｌｏｗ  Ｐａｓｓ  Ｆｉｌｔｅｒ）との組み合わせによりさらに軽減するものと予想される。
【０１５６】
また、図２４は、本実施形態に係る量子化手法をバンドパスフィルタに適用した際の位相特性に係るシミュレーション結果を示す図である。図２４を参照すると、本実施形態に係る量子化手法を適用した場合であっても、パスバンド内における位相の回転、すなわち位相特性の劣化は確認されないことがわかる。このように、本実施形態に係る量子化手法は、バンドパスフィルタの周波数特性を大きく劣化させることがないため、通信技術分野においても十分に適用可能だといえる。
【０１５７】
また、本実施形態に係る量子化手法の影響をさらに調査するため、ＢＥＲ（Ｂｉｔ  Ｅｒｒｏｒ  Ｒａｔｅ）による評価を実施した。図２５は、本実施形態に係るＢＥＲ評価に利用したブロック図である。
【０１５８】
図２５に示すように、本評価では、復調前におけるＡＤＣ（Ａｎａｌｏｇ  ｔｏ  Ｄｉｇｉｔａｌ  Ｃｏｎｖｅｒｔｅｒ）およびＲＲＣフィルタにおいて、浮動小数点、整数、ＤＮＮ（ｐ，３２）を適用し、ＢＥＲを測定した。また、変調および復調の方式には、ＢＰＳＫ、ＱＰＳＫ、および１６ＱＡＭをそれぞれ用いた。
【０１５９】
図２６は、ＢＰＳＫを変調方式に用いた際のＢＥＲ評価結果を示す図である。また、図２７は、図２６におけるＳＮＲ７〜９ｄＢのデータを拡大した図である。図２６および図２７を参照すると、変調方式としてＢＰＳＫを用いた場合、ｐ＝４ではＢＥＲの劣化はまったく観察されず、またｐ＝２または３である場合でも、ＢＥＲに大きな影響を与えないことがわかる。
【０１６０】
図２８は、ＱＰＳＫを変調方式に用いた際のＢＥＲ評価結果を示す図である。また、図２９は、図２８におけるＳＮＲ１０〜１２ｄＢのデータを拡大した図である。図２８および図２９を参照すると、変調方式としてＱＰＳＫを用いた場合も、ＢＰＳＫを用いた場合と同様に、ｐ＝２または３による量子化はＢＥＲに大きな影響を与えていないことがわかる。
【０１６１】
図３０は、１６ＱＡＭを変調方式に用いた際のＢＥＲ評価結果を示す図である。また、図３１は、図３０におけるＳＮＲ１６〜１８ｄＢのデータを拡大した図である。図３０および図３１を参照すると、変調方式として１６ＱＡＭを用いた場合、ｐ＝２または３による量子化では、ＢＥＲの上昇が見られるものの、ｐ＝４による量子化では、ＢＥＲの劣化が確認されないことがわかる。
【０１６２】
以上説明したように、変調方式にＢＰＳＫやＱＰＳＫを用いる場合、本実施形態に係る量子化手法は、ｐの値に依らず有効であるといえる。また、変調方式に１６ＱＡＭを用いる場合には、ｐ≧４であれば、ＢＥＲに影響を与えないものと考えられる。
【０１６３】
このように、本実施形態に係る量子化手法は、通信技術分野においても有効であり、性能の維持と処理負担の軽減との両立を実現し得る。
＜３．ハードウェア構成例＞
次に、本開示の一実施形態に係る情報処理装置１０のハードウェア構成例について説明する。図３２は、本開示の一実施形態に係る情報処理装置１０のハードウェア構成例を示すブロック図である。図３２を参照すると、情報処理装置１０は、例えば、ＣＰＵ８７１と、ＲＯＭ８７２と、ＲＡＭ８７３と、ホストバス８７４と、ブリッジ８７５と、外部バス８７６と、インターフェース８７７と、入力装置８７８と、出力装置８７９と、ストレージ８８０と、ドライブ８８１と、接続ポート８８２と、通信装置８８３と、を有する。なお、ここで示すハードウェア構成は一例であり、構成要素の一部が省略されてもよい。また、ここで示される構成要素以外の構成要素をさらに含んでもよい。
【０１６４】
（ＣＰＵ８７１）
ＣＰＵ８７１は、例えば、演算処理装置又は制御装置として機能し、ＲＯＭ８７２、ＲＡＭ８７３、ストレージ８８０、又はリムーバブル記録媒体９０１に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。
【０１６５】
（ＲＯＭ８７２、ＲＡＭ８７３）
ＲＯＭ８７２は、ＣＰＵ８７１に読み込まれるプログラムや演算に用いるデータ等を格納する手段である。ＲＡＭ８７３には、例えば、ＣＰＵ８７１に読み込まれるプログラムや、そのプログラムを実行する際に適宜変化する各種パラメータ等が一時的又は永続的に格納される。
【０１６６】
（ホストバス８７４、ブリッジ８７５、外部バス８７６、インターフェース８７７）
ＣＰＵ８７１、ＲＯＭ８７２、ＲＡＭ８７３は、例えば、高速なデータ伝送が可能なホストバス８７４を介して相互に接続される。一方、ホストバス８７４は、例えば、ブリッジ８７５を介して比較的データ伝送速度が低速な外部バス８７６に接続される。また、外部バス８７６は、インターフェース８７７を介して種々の構成要素と接続される。
【０１６７】
（入力装置８７８）
入力装置８７８には、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ、及びレバー等が用いられる。さらに、入力装置８７８としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラ（以下、リモコン）が用いられることもある。また、入力装置８７８には、マイクロフォンなどの音声入力装置が含まれる。
【０１６８】
（出力装置８７９）
出力装置８７９は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、ＬＣＤ、又は有機ＥＬ等のディスプレイ装置、スピーカ、ヘッドホン等のオーディオ出力装置、プリンタ、携帯電話、又はファクシミリ等、取得した情報を利用者に対して視覚的又は聴覚的に通知することが可能な装置である。また、本開示に係る出力装置８７９は、触覚刺激を出力することが可能な種々の振動デバイスを含む。
【０１６９】
（ストレージ８８０）
ストレージ８８０は、各種のデータを格納するための装置である。ストレージ８８０としては、例えば、ハードディスクドライブ（ＨＤＤ）等の磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイス等が用いられる。
【０１７０】
（ドライブ８８１）
ドライブ８８１は、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体９０１に記録された情報を読み出し、又はリムーバブル記録媒体９０１に情報を書き込む装置である。
【０１７１】
（リムーバブル記録媒体９０１）
リムーバブル記録媒体９０１は、例えば、ＤＶＤメディア、Ｂｌｕ−ｒａｙ（登録商標）メディア、ＨＤ  ＤＶＤメディア、各種の半導体記憶メディア等である。もちろん、リムーバブル記録媒体９０１は、例えば、非接触型ＩＣチップを搭載したＩＣカード、又は電子機器等であってもよい。
【０１７２】
（接続ポート８８２）
接続ポート８８２は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポート、ＩＥＥＥ１３９４ポート、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、ＲＳ−２３２Ｃポート、又は光オーディオ端子等のような外部接続機器９０２を接続するためのポートである。
【０１７３】
（外部接続機器９０２）
外部接続機器９０２は、例えば、プリンタ、携帯音楽プレーヤ、デジタルカメラ、デジタルビデオカメラ、又はＩＣレコーダ等である。
【０１７４】
（通信装置８８３）
通信装置８８３は、ネットワークに接続するための通信デバイスであり、例えば、有線又は無線ＬＡＮ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、又はＷＵＳＢ（Ｗｉｒｅｌｅｓｓ  ＵＳＢ）用の通信カード、光通信用のルータ、ＡＤＳＬ（Ａｓｙｍｍｅｔｒｉｃ  Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅ）用のルータ、又は各種通信用のモデム等である。
【０１７５】
＜４．まとめ＞
以上説明したように、本開示の一実施形態に係る情報処理装置は、複数の入力値と、鴎外入力値にそれぞれ対応する、べき乗表現により量子化された複数の重み係数と、に基づいて、積和演算を実行する積和演算回路、を備える。量子化された重み係数の指数は、予め定められた除数ｐを分母に有する分数により表現される。また、積和演算回路は、除数ｐから定まる剰余に基づいて、異なる加算乗数を用いた積和演算を行う。係る構成によれば、内積演算に係る処理負担をより軽減すると共に、重み係数の量子化粒度を保証することが可能となる。
【０１７６】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【０１７７】
また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
【０１７８】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）
複数の入力値と、前記入力値にそれぞれ対応する、べき乗表現により量子化された複数の重み係数と、に基づいて、積和演算を実行する積和演算回路、
を備え、
量子化された前記重み係数の指数は、予め定められた除数を分母に有する分数により表現され、
前記積和演算回路は、前記除数から定まる剰余に基づいて、異なる加算乗数を用いた積和演算を行う、
情報処理装置。
（２）
前記積和演算回路は、前記除数から定まる前記剰余ごとに演算結果を保持する異なる複数のアキュムレータ、を備える、
前記（１）に記載の情報処理装置。
（３）
前記剰余は、量子化された前記重み係数の指数に係る分子を被除数とした剰余演算により求められ、
前記積和演算回路は、前記剰余に対応する前記アキュムレータと回路を接続するセレクタ、をさらに備える、
前記（２）に記載の情報処理装置。
（４）
前記積和演算回路は、前記分子を前記除数で除算した際の商を整数化した値に基づいて、前記入力値に係るシフト演算を行うシフト演算器、をさらに備える、
前記（３）に記載の情報処理装置。
（５）
前記入力値は、べき乗表現により量子化され、
量子化された前記入力値は、予め定められた除数を分母に有する分数により表現され、
前記剰余は、量子化された前記重み係数の指数に係る分子と、量子化された前記入力値の指数に係る分子と、を加算した値を被除数とした際の剰余である、
前記（１）または（２）に記載の情報処理装置。
（６）
前記積和演算回路は、前記剰余に対応するアキュムレータごとに複数の加減算器、を備える、
前記（５）に記載の情報処理装置。
（７）
前記積和演算回路は、前記剰余に基づいて、前記剰余に対応する前記加減算器に対し演算の実行を指示する信号を入力するセレクタ、をさらに備える、
前記（６）に記載の情報処理装置。
（８）
前記積和演算回路は、前記剰余に対応する前記加算乗数をそれぞれ保持する複数の記憶回路、をさらに備える、
前記（１）に記載の情報処理装置。
（９）
前記積和演算回路は、前記剰余に基づいて、前記剰余に対応する前記記憶回路を接続するセレクタ、をさらに備える、
前記（８）に記載の情報処理装置。
（１０）
前記除数は、前記入力値に対して定められる第１の除数と、前記重み係数に対して定められる第２の除数と、を含み、
前記第１の除数と前記第２の除数とは、互いに異なる値である、
前記（５）〜７のいずれかに記載の情報処理装置。
（１１）
前記除数は、自然数である、
前記（１）〜１０のいずれかに記載の情報処理装置。
（１２）
前記除数は、べき乗で表現される、
前記（１）〜１０のいずれかに記載の情報処理装置。
（１３）
複数の入力値と、前記入力値にそれぞれ対応する、べき乗表現により量子化された複数の重み係数と、に基づいて、積和演算を実行すること、
を含み、
量子化された前記重み係数の指数は、予め定められた除数を分母に有する分数により表現され、
前記積和演算を行うことは、前記除数から定まる剰余に基づいて、異なる加算乗数を用いた積和演算を行う、
情報処理方法。
【符号の説明】
【０１７９】
１０  情報処理装置
１１０入力部
１２０演算部
１３０記憶部
１４０出力部
２００、３００、４００、５００    積和演算回路
【図１】
2019091512.tif 000030
【図２】
2019091512.tif 000031
【図３】
2019091512.tif 000032
【図４】
2019091512.tif 000033
【図５】
2019091512.tif 000034
【図６】
2019091512.tif 000035
【図７】
2019091512.tif 000036
【図８】
2019091512.tif 000037
【図９】
2019091512.tif 000038
【図１０】
2019091512.tif 000039
【図１１】
2019091512.tif 000040
【図１２】
2019091512.tif 000041
【図１３】
2019091512.tif 000042
【図１４】
2019091512.tif 000043
【図１５】
2019091512.tif 000044
【図１６】
2019091512.tif 000045
【図１７】
2019091512.tif 000046
【図１８】
2019091512.tif 000047
【図１９】
2019091512.tif 000048
【図２０】
2019091512.tif 000049
【図２１】
2019091512.tif 000050
【図２２】
2019091512.tif 000051
【図２３】
2019091512.tif 000052
【図２４】
2019091512.tif 000053
【図２５】
2019091512.tif 000054
【図２６】
2019091512.tif 000055
【図２７】
2019091512.tif 000056
【図２８】
2019091512.tif 000057
【図２９】
2019091512.tif 000058
【図３０】
2019091512.tif 000059
【図３１】
2019091512.tif 000060
【図３２】
2019091512.tif 000061