(57)【要約】【課題】内積演算に係る処理負担をより軽減すると共に、重み係数の量子化粒度を保証する。【解決手段】複数の入力値と前記入力値にそれぞれ対応する複数の重み係数とに基づく内積演算を行い出力値を算出する演算部、を備え、前記演算部は、Ｎ次元超球表面におけるベクトル方向の粒度に基づいて量子化された前記重み係数に基づいて前記出力値を算出する、情報処理装置が提供される。また、複数の入力値と前記入力値にそれぞれ対応する複数の重み係数とに基づく積和演算を実行する積和演算回路を備え、前記積和演算回路は、値の小さい順番に並び替えられた複数の前記重み係数と対応する前記入力値のアドレス情報を保持する記憶回路と、前記アドレス情報により取得される前記入力値と前記重み係数に基づく演算を実行する乗算回路と、を備える、情報処理装置が提供される。【選択図】図８
2020074240.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〉
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、非特許文献１に記載の手法では、＋１または−１を用いた２値化を行っているため、重み係数の次元数が増加するにつれて量子化の粒度が荒くなることが想定される。また、非特許文献２に記載の手法では、乗算の回避において所定の効果を有するものの、処理負担の軽減については、さらなる余地があるものと想定される。
【０００５】
そこで、本開示では、内積演算に係る処理負担をより軽減すると共に、重み係数の量子化粒度を保証することが可能な、新規かつ改良された情報処理装置および情報処理方法を提案する。
【課題を解決するための手段】
【０００６】
本開示によれば、複数の入力値と前記入力値にそれぞれ対応する複数の重み係数とに基づく内積演算を行い出力値を算出する演算部、を備え、前記演算部は、Ｎ次元超球表面に
おけるベクトル方向の粒度に基づいて量子化された前記重み係数に基づいて前記出力値を算出する、情報処理装置が提供される。
【０００７】
また、本開示によれば、複数の入力値と前記入力値にそれぞれ対応する複数の重み係数とに基づく積和演算を実行する積和演算回路を備え、前記積和演算回路は、値の小さい順番に並び替えられた複数の前記重み係数と対応する前記入力値のアドレス情報を保持する記憶回路と、前記アドレス情報により取得される前記入力値と前記重み係数に基づく演算を実行する乗算回路と、を備える、情報処理装置が提供される。
【０００８】
また、本開示によれば、プロセッサが、複数の入力値と前記入力値にそれぞれ対応する複数の重み係数とに基づく積和演算を行い出力値を算出すること、を含み、前記算出することは、Ｎ次元超球表面におけるベクトル方向の粒度に基づいて量子化された前記重み係数に基づいて前記出力値を算出すること、をさらに含む、情報処理方法が提供される。
【発明の効果】
【０００９】
以上説明したように本開示によれば、内積演算に係る処理負担をより軽減すると共に、重み係数の量子化粒度を保証することが可能となる。
【００１０】
なお、上記の効果は必ずしも限定的なものではなく、上記の効果とともに、または上記の効果に代えて、本明細書に示されたいずれかの効果、または本明細書から把握され得る他の効果が奏されてもよい。
【図面の簡単な説明】
【００１１】
【図１】本開示の関連技術に係るニューラルネットワークにおける基本演算の概要について説明するための概念図である。
【図２】本開示の関連技術に係る入力ベクトルと重みベクトルとの内積演算について説明するための概要図である。
【図３】本開示の関連技術に係る２次元空間において２値量子化した重みベクトルについて説明するための図である。
【図４】本開示の関連技術に係る２次元空間において４値量子化した重みベクトルについて説明するための図である。
【図５】本開示の関連技術に係る３次元空間における重みベクトルの粒度のばらつきについて説明するための図である。
【図６】本開示の関連技術に係るＮ次元空間における重みベクトルの粒度のばらつきについて説明するための図である。
【図７】本開示の一実施形態に係る情報処理装置の機能ブロック図の一例である。
【図８】同実施形態に係る情報処理装置が備える積和演算回路の回路ブロック図の一例である。
【図９】同実施形態に係るアドレステーブルが保持するアドレス情報に係るオフセット表記の一例を示す図である。
【図１０】同実施形態に係る情報処理方法の処理イメージを示す図である。
【図１１】同実施形態に係る量子化粒度Δθについて説明するための図である。
【図１２】同実施形態に係るαに応じた量子化粒度Δθの最大値を示すグラフである。
【図１３】同実施形態に係る最大べき乗数について説明するための図である。
【図１４】同実施形態に係る入力数Ｎに対する乗算回数の例を示す図である。
【図１５】同実施形態に係る入力数Ｎに対する乗算回数の例を示す図である。
【図１６】本開示の一実施形態に係るハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００１３】
なお、説明は以下の順序で行うものとする。
１．実施形態
１．１．背景
１．２．情報処理装置１０の機能構成例
１．３．重みベクトルの量子化
１．４．積和演算回路の構成例
１．５．学習時における量子化
１．６．効果
２．ハードウェア構成例
３．まとめ
【００１４】
＜１．実施形態＞
＜＜１．１．背景＞＞
近年、深層学習（Ｄｅｅｐ  Ｌｅａｒｎｉｎｇ）などニューラルネットワークを用いた学習手法が広く研究されている。ニューラルネットワークを用いた学習手法は高い精度を有する一方、演算に係る処理負担が大きいことから、当該処理負担を効果的に軽減する演算方式が求められている。
【００１５】
このため、近年においては、例えば、Ｂｉｎａｒｙ  ｗｅｉｇｈｔ  ｎｅｔｗｏｒｋや、ＸＮＯＲ  ｎｅｔなどの、演算量や情報量の軽減を目的とする演算方式も提案されている。
【００１６】
ここで、一般的なニューラルネットワークにおける基本演算の概要について説明する。図１は、ニューラルネットワークにおける基本演算の概要について説明するための概念図である。図１には、ニューラルネットワークを構成する２つの層と、当該２つの層にそれぞれ属するセルｃ１１〜ｃ１Ｎとセルｃ２1とが示されている。
【００１７】
この際、セルｃ２1に入力される入力信号（以下、入力ベクトル、とも称する）は、下層に属するセルｃ１１〜ｃ１Ｎに係る入力ベクトルと重み係数（以下、重みベクトル、とも称する）とに基づいて決定される。より詳細には、セルｃ２１に入力される入力ベクトルは、セルｃ１１〜ｃ１Ｎに係る入力ベクトルと重みベクトルとの内積演算結果にバイアスｂを加算し、さらに活性化関数ｈにより処理した値となる。
【００１８】
すなわち、セルｃ１１〜ｃ１Ｎに係る入力ベクトルと重みベクトルとをそれぞれ、ｘ＝（ｘ1，ｘ2，ｘ3，．．．ｘN）、ｗ＝（ｗ1，ｗ2，ｗ3，．．．ｗN）とした場合、セルｃ２１に入力される入力ベクトルｚは、下記の数式（１）により定義される。
【００１９】
【数１】
2020074240.tif 000003
【００２０】
この際、重みベクトルｗを法線とする超平面ｈを想定すると、Ｎ次元で表現される入力ベクトルｘと重みベクトルｗとの内積は、図２に示すように、超平面ｈを基準とした入力ベクトルｘを重みベクトルｗへ射影した射影距離ｄに｜｜ｗ｜｜を掛けた値により表現することができる。ここで、上記の｜｜ｗ｜｜は、ベクトルｗのノルムである。図２は、入力ベクトルｘと重みベクトルｗとの内積演算について説明するための概要図である。
【００２１】
ここで、入力ベクトルｘと重みベクトルｗとが２次元である場合、非特許文献１のように、重みベクトルｗを＋１または−１の２値で量子化すると、重みベクトルｗは、図３のように表すことができる。図３は、２次元空間において２値量子化した重みベクトルｗについて説明するための図である。この際、重みベクトルｗの粒度は、平面における回転角度θで表現することができ、当該粒度は、図３に示すように、９０度となる。
【００２２】
続いて、重みベクトルｗを｛０，１／４，１／２，１｝の４値で量子化する場合を考察する。図４は、２次元空間において４値量子化した重みベクトルｗについて説明するための図である。この場合、重みベクトルｗの粒度、すなわち回転角度θは、約１５度となり、２値量子化した場合と比較してより細かい粒度を保証することが可能となる。
【００２３】
一方、重みベクトルｗの粒度は、次元数が増加するにつれ、ばらつきが大きくなることが想定される。図５は、３次元空間における重みベクトルｗの粒度のばらつきについて説明するための図である。例えば、図５に示すように、（１，１，０）と（０，０，１）とで定義される面における重みベクトルｗの量子化を考えた場合、（１，１，０）方向の辺の長さは、（０，０，１）方向の辺の長さの√２倍となるため、量子化時における粒度のばらつきが大きくなることがわかる。
【００２４】
また、上記のような粒度のばらつき、すなわち不均一性は、次元数が増加するほど顕著となる。図６は、Ｎ次元空間における重みベクトルｗの粒度のばらつきについて説明するための図である。図６には、Ｎ次元空間において、（１，１，．．．，１，０）と（０，０，．．．，０，１）で定義される面が示されている。この際、（１，１，．．．，１，０）方向の辺の長さは、（０，０，．．．，０，１）方向の辺の長さの√（Ｎ−１）倍により表すことができる。例えば、Ｎ＝１００である場合には、１，１，．．．，１，０）方向の辺の長さは、（０，０，．．．，０，１）方向の辺の√９９倍（≒１０倍）となる。
【００２５】
上記のような重みベクトルｗに係る粒度の不均一性は、ニューラルネットワークの性能低下の要因となり得ることから、より精度の高い量子化手法が望まれていた。本開示に係る技術思想は、上記の点に着目して発想されたものであり、Ｎ次元空間における重みベクトルの高い近似精度を維持しながらも効果的に処理負担を軽減することを可能とする。このために、本開示の一実施形態に係る情報処理装置および情報処理方法は、Ｎ次元超球平面におけるベクトル方向の粒度に基づいて量子化された重みベクトルを用いて内積演算を行うことを特徴の一つとする。本開示の一実施形態に係る情報処理装置および情報処理方法は、重みベクトルを、細かすぎず、かつ粗すぎない粒度で量子化することで、高い近似精度と処理負担の軽減を両立することが可能である。より詳細には、本開示の一実施形態に係る情報処理装置および情報処理方法は、べき乗により表現された重みベクトルを用いた内積演算を行ってよい。以下、本開示の一実施形態に係る情報処理装置および情報処理方法の有する上記の特徴について詳細に説明する。
【００２６】
＜＜１．２．情報処理装置１０の機能構成例＞＞
続いて、本実施形態に係る情報処理方法を実現する情報処理装置１０の機能構成例について述べる。図７は、本実施形態に係る情報処理装置１０の機能ブロック図の一例である。図７を参照すると、本実施形態に係る情報処理装置１０は、入力部１１０、演算部１２０、記憶部１３０、および出力部１４０を備える。以下、上記構成について、当該構成が有する機能を中心に説明する。
【００２７】
（入力部１１０）
本実施形態に係る入力部１１０は、操作者による種々の入力操作を検出する機能を有する。このために、本実施形態に係る入力部１１０は、操作者による入力操作を検出するための各種の装置を含んでよい。入力部１１０は、例えば、各種のボタン、キーボード、タッチパネル、マウス、スイッチなどにより実現され得る。
【００２８】
（演算部１２０）
本実施形態に係る演算部１２０は、複数の入力値と当該入力値にそれぞれ対応する複数の重み係数とに基づく内積演算を行い出力値を算出する機能を有する。本実施形態に係る演算部１２０は、特に、ニューラルネットワークの順伝播に係る内積演算を行う。この際、本実施形態に係る演算部１２０は、Ｎ次元超球表面におけるベクトル方向の粒度に基づいて量子化された重み係数に基づいて出力値を算出することを特徴の一つとする。より具体的には、本実施形態に係る演算部１２０は、べき乗により表現された重み係数に基づいて出力値を算出してよい。本実施形態に内積演算の特徴については、別途詳細に説明する。
【００２９】
（記憶部１３０）
記憶部１３０は、情報処理装置１０が備える各構成で用いられるプログラムやデータなどを記憶する機能を有する。本実施形態に係る記憶部１３０は、例えば、ニューラルネットワークに用いられる種々のパラメータなどを記憶する。
【００３０】
（出力部１４０）
出力部１４０は、操作者に対し種々の情報出力を行う機能を有する。このために、本実施形態に係る出力部１４０は、視覚情報を出力するディスプレイ装置を含んで構成され得る。ここで、上記のディスプレイ装置は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイ装置、液晶ディスプレイ（ＬＣＤ：Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）装置、ＯＬＥＤ（Ｏｒｇａｎｉｃ  Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）装置などにより実現され得る。
【００３１】
以上、本実施形態に係る情報処理装置１０の機能構成例について説明した。なお、上記で説明した機能構成例はあくまで一例であり、本実施形態に係る情報処理装置１０の機能構成例は係る例に限定されない。本実施形態に係る情報処理装置１０は、図１に示す以外の構成をさらに備えてもよい。情報処理装置１０は、例えば、他の情報処理端末との情報通信を行う通信部などをさらに備えてもよい。本実施形態に係る情報処理装置１０の機能構成は、柔軟に設計変更され得る。
【００３２】
＜＜１．３．重みベクトルの量子化＞＞
次に、本実施形態に係る重みベクトルの量子化について詳細に説明する。上述したように、本実施形態に係る情報処理装置１０は、べき乗により表現された重みベクトルｗによる量子化を行うことで、粒度の均一性を高く保つことができる。この際、本実施形態に係る演算部１２０は、複数の重みベクトルｗiを値の小さい順番に並び替え、また当該複数の重みベクトルｗiを最も値の大きい重み係数ｗiで正規化することを特徴の一つとする。ここで、並び替えて正規化された重みベクトルをｗjとすると、重みベクトルｗjは、下記の数式（２）〜（４）により表される。
【００３３】
【数２】
2020074240.tif 000004
【００３４】
但し、この際、上記の数式（２）におけるαは、０＜α＜１、であり、ｓjは、ｓj∈｛−１，１｝であり、ｎjは、ｎj∈｛０，１，２，．．．｝、であってよい。すなわち、本実施形態に係る演算部１２０は、ｎjを整数として量子化を行う。この際、演算部１２０が実行する内積演算は、下記の数式（５）により表される。なお、下記の数式（５）におけるＫは、正規化定数を示す。また、上記αの値については、下記の数式（５）を適宜変形した場合であっても、内積演算において最終的に上記の範囲に定まればよい。本開示に示す数式は、あくまで一例であり、柔軟に変形され得る。
【００３５】
【数３】
2020074240.tif 000005
【００３６】
このため、本実施形態に係る演算部１２０による内積演算は、Ｎ回の加算演算と、−１／２ｌｏｇ（Ｎ−１）／ｌｏｇαのオーダーの乗算回数により処理が可能であることが予想される。
【００３７】
このように、本実施形態に係る情報処理方法では、重みベクトルｗをαのべき乗表現により近似し、値の小さい順番に重みベクトルｗを並び替えることを特徴の一つとする。この際、本実施形態に係る情報処理方法では、Ｎに応じてαの指数をｋ値化することで、重みベクトルｗの量子化が行われる。
【００３８】
例えば、Ｎ＝１００である場合、本実施形態に係る情報処理方法では、ｋ＝４（２ｂｉｔ），８（３ｂｉｔ），１６（４ｂｉｔ）などが採用されてもよい。上記のようにｋを設定することで、上記の数式（５）におけるｎ1−ｎ2，ｎ2−ｎ3，ｎ3−ｎ4．．．の多くは、同一の値により量子化されることで０となるため、乗算の回数を大幅に削減することが可能となる。より具体的な例を挙げると、Ｎ＝１００に対し、ｋ＝４である場合、ｎj-1−ｎjが０以外の値を取り得るのは４回のみとなる。このため、本例の場合、内積演算に係る乗算回数は４回で済み、残りはすべて加算となるため、処理負担を効果的に軽減することができる。
【００３９】
＜＜１．４．積和演算回路の構成例＞＞
次に、本実施形態に係る演算方式を実現する積和演算回路について説明する。上述のように、重みベクトルｗをべき乗表現により量子化し、また並び替えを行った場合、重みベクトルｗに対応する入力ベクトルｘの並び替えも併せて行う必要がある。
【００４０】
このため、本実施形態に係る情報処理装置１０は、値の小さい順番に並び替えられた複数の重みベクトルｗと対応する入力ベクトルｘのアドレス情報を保持するテーブルを有する積和演算回路を備えてよい。
【００４１】
図８は、本実施形態に係る情報処理装置１０が備える積和演算回路２００の回路ブロック図の一例である。図８に示すように、本実施形態に係る積和演算回路は、重みベクトルｗと対応する入力ベクトルｘのアドレス情報を保持するテーブルＷＴを保持する記憶回路と、ＲＡＭ２１０、加算回路２２０、アキュムレータ２３０、αに係る乗算を行う第１の乗算回路２４０、および正規化定数に係る乗算を行う第２の乗算回路２５０を備える。
【００４２】
（アドレステーブルＷＴ）
本実施形態に係るアドレステーブルＷＴは、値の小さい順番に並び替えられた複数の重みベクトルｗと対応する入力ベクトルｘのアドレス情報、符号情報、および乗算指示情報を保持する。なお、上記のアドレス情報は、図８に示すように、Ｎｕｌｌ  Ｐｏｉｎｔｅｒを含んでもよい。この場合、アキュムレータ２３０には０が加算されることとなり、アキュムレータ２３０の値を単純にα倍することが可能となる。また、上記の符号情報は、上述した数式（５）におけるＳｊに対応する値を示す情報である。
【００４３】
また、上記の乗算指示情報は、第１の乗算回路２４０による処理内容を指示する情報である。本実施形態に係る乗算指示情報は、例えば、乗算の要否を指定する情報を含んでよい。図８には、乗算指示情報が０である場合には、第１の乗算回路２４０は乗算を行わず、乗算指示情報が１である場合には、第１の乗算回路２４０はαを乗算する場合の一例が示されている。
【００４４】
なお、本実施形態に係る乗算指示情報は、上記の例に限定されず、種々の処理内容を指定する情報を含んでよい。本実施形態に係る乗算指示情報は、例えば、乗算の回数やシフト演算を指定する情報などを含み得る。
【００４５】
（ＲＡＭ２１０）
本実施形態に係るＲＡＭ２１０は、アドレステーブルＷＴから入力されたアドレス情報に基づいて重みベクトルｗに対応する入力ベクトルｘを加算回路２２０に出力する。
【００４６】
（加算回路２２０）
本実施形態に係る加算回路２２０は、ＲＡＭ２１０から入力される入力ベクトルｘと第１の乗算回路２４０から出力される値に基づいて加算を実行する。この際、本実施形態に係る加算回路２２０は、アドレステーブルＷＴが保持する符号情報に基づいて上記の加算を行う。
【００４７】
（アキュムレータ２３０）
本実施形態に係るアキュムレータ２３０は、加算回路２２０から出力される演算結果を累積する。アキュムレータ２３０は、累積した値を第１の乗算回路２４０および第２の乗算回路２５０に出力する。また、アキュムレータ２３０には、累積した値を０にリセットするためのリセット信号が適宜入力される。
【００４８】
（第１の乗算回路２４０）
本実施形態に係る第１の乗算回路２４０は、アキュムレータ２３０が累積する値に対し、αを乗算する。この際、第１の乗算回路２４０は、上述したように、アドレステーブルＷＴが保持する乗算指示情報に基づいて上記の乗算を実行する。第１の乗算回路２４０は、演算結果を加算回路２２０に出力する。
【００４９】
（第２の乗算回路２５０）
本実施形態に係る第２の乗算回路２５０は、アキュムレータ２３０から出力される値に対し、正規化定数Ｋを乗算する。
【００５０】
以上、本実施形態に係る積和演算回路２００の構成例について説明した。本実施形態に係る積和演算回路２００によれば、内積演算における乗算回数を効果的に削減し、処理負担を軽減することが可能となる。
【００５１】
一方、本実施形態に係るアドレステーブルＷＴは、入力ベクトルｘのアドレス情報を保持することで容量が大きくなるため、消費電力が増加することも想定される。このため、本実施形態に係るアドレステーブルＷＴは、図９に示すように、アドレス間の相対位置を示すオフセットを含んでもよい。図９は、本実施形態に係るアドレステーブルＷＴが保持するアドレス情報に係るオフセット表記の一例である。
【００５２】
図９に示すように、本実施形態に係るアドレステーブルＷＴは、上述した数式（５）においてｎj-1−ｎjの値が連続して０である区間、すなわち乗算が行われない区間のアドレスをアドレス順にソートし、当該アドレス間のオフセットをアドレス情報として保持してもよい。本実施形態に係る上記のアドレステーブルＷＴによれば、アドレス情報に係る情報量を大幅に削減し、消費電力を効果的に低減することが可能となる。
【００５３】
なお、本実施形態に係るアドレステーブルＷＴは、図８および図９に示した形式以外にも種々の形態を取り得る。本実施形態に係るアドレステーブルＷＴは、例えば、符号情報と乗算指示情報とを明確に分離して保持しなくてもよいし、上記以外のアドレス圧縮方法を採用してもよい。本実施形態に係るアドレステーブルＷＴは、ニューラルネットワークの構成や情報処理装置１０の性能などに応じて柔軟に変形され得る。
【００５４】
＜＜１．５．学習時における量子化＞＞
次に、本実施形態に係る学習時における重みベクトルｗiの量子化について説明する。本実施形態に係る情報処理方法において、学習時における重みベクトルｗiの更新については、下記の数式（６）により計算することが可能である。
【００５５】
【数４】
2020074240.tif 000006
【００５６】
但し、上記の数式（６）におけるｗmaxは、ｗiの最大値を示す。また、整数化ｉｎｔについては、切り上げ、または切り捨てのうちいずれか近い方を選んでもよい。本実施形態に係る情報処理方法では、最終学習時に、ｎiを並び替えることで、上述したアドレステーブルＷＴを生成することができる。
【００５７】
なお、１に近いαを設定した場合においては、通常の浮動小数点演算を用いたＤＮＮ（Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）による学習アルゴリズムを用いて演算を行い、学習終了後のｗiを量子化する手法を採択することも可能である。すなわち、重みベクトルｗに係る量子化粒度が小さい場合には、ネットワーク構造を変形しなくても、認識精度が低下しない効果が期待される。
【００５８】
＜＜１．６．効果＞＞
次に、本実施形態に係る重みベクトルの量子化により奏される効果について詳細に説明する。上述したように、本実施形態に係る情報処理方法では、べき乗表現により量子化したｗiを値の小さい順番に並び替え正規化を行うことでｗjと定義する。この際、並び替えられた基底ベクトルをｑjとすると、重みベクトルｗは、下記の数式（７）により表される。
【００５９】
【数５】
2020074240.tif 000007
【００６０】
すなわち、本実施形態に係る情報処理方法は、図１０に示すように、ｑ1，ｑ2，．．．ｑj-1で張られる空間に投影された重みベクトルとｑjとにより形成される平面にベクトルを作成し、当該ベクトルをαnj-nj+1倍する処理を繰り返す、と意味を有する。図１０は、本実施形態に係る情報処理方法の処理イメージを示す図である。
【００６１】
このため、本実施形態に係る情報処理方法では、重みベクトルをｑ1，ｑ2，．．．ｑj-1空間に投影した軸とｑjとで張られる平面において、重みベクトルの量子化粒度Δθは、図１１に示すように、反時計回転および時計回転方向にそれぞれ下記の数式（８）および（９）により表すことができる。但し、この際、数式（８）および（９）におけるｌは、数式（１０）により定義される。図１１は、本実施形態に係る量子化粒度Δθについて説明するための図である。なお、図１１では、第１象限に射影された重みベクトルが示されている。
【００６２】
【数６】
2020074240.tif 000008
【００６３】
また、量子化粒度Δθ1およびΔθ2をｌで微分して０とおいた場合、それぞれの最大値は、下記の数式（１１）により定義される。
【００６４】
【数７】
2020074240.tif 000009
【００６５】
図１２は、本実施形態に係るαに応じた量子化粒度Δθの最大値を示すグラフである。このように、本実施形態に係る情報処理方法によれば、Ｎ次元空間において、すべての直交する回転方向に量子化粒度が保証される。
【００６６】
なお、べき乗演算を途中で停止した場合、図１３に示すように、量子化粒度Δθが残されることとなる。図１３は、本実施形態に係る最大べき乗数について説明するための図である。なお、図１３では、第１象限に射影された重みベクトルが示されている。この際、量子化粒度Δθを保証する最大べき乗数は、下記の数式（１２）を満たす最小なｍに対し、下記の数式（１３）を加算すればよい。従って、本実施形態に係る情報処理装置１０が実行する乗算回数は、下記の数式（１４）により求めることができる。
【００６７】
【数８】
2020074240.tif 000010
【００６８】
例えば、α＝３／４である場合、入力数Ｎに対する乗算回数は、図１４に示すグラフのように決定される。また、例えば、α＝７／８である場合には、入力数Ｎに対する乗算回数は、図１５に示すグラフのように決定される。すなわち、本実施形態に係る演算部１２０による内積演算において、乗算回数は、重みベクトルの底の値に基づいて定まるといえる。図１４および図１５は、本実施形態に係る入力数Ｎに対する乗算回数の例を示す図である。
【００６９】
以上説明したように、本実施形態に情報処理方法を実現する情報処理装置によれば、ニューラルネットワークの順伝播に係る内積演算において、乗算回数を大幅に削減することができ、積和演算回路２００による消費電力を効果的に低減することが可能となる。また、本実施形態に情報処理方法を実現する情報処理装置によれば、重みベクトルの量子化精度を向上させることができ、同一のビット数による従来の量子化手法と比較して、ニューラルネットワークによる認識精度および近似精度を向上させる効果が期待される。
【００７０】
＜２．ハードウェア構成例＞
次に、本開示の一実施形態に係る情報処理装置１０のハードウェア構成例について説明する。図１６は、本開示の一実施形態に係る情報処理装置１０のハードウェア構成例を示すブロック図である。図１６を参照すると、情報処理装置１０は、例えば、ＣＰＵ８７１と、ＲＯＭ８７２と、ＲＡＭ８７３と、ホストバス８７４と、ブリッジ８７５と、外部バス８７６と、インターフェース８７７と、入力装置８７８と、出力装置８７９と、ストレージ８８０と、ドライブ８８１と、接続ポート８８２と、通信装置８８３と、を有する。なお、ここで示すハードウェア構成は一例であり、構成要素の一部が省略されてもよい。また、ここで示される構成要素以外の構成要素をさらに含んでもよい。
【００７１】
（ＣＰＵ８７１）
ＣＰＵ８７１は、例えば、演算処理装置又は制御装置として機能し、ＲＯＭ８７２、ＲＡＭ８７３、ストレージ８８０、又はリムーバブル記録媒体９０１に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。
【００７２】
（ＲＯＭ８７２、ＲＡＭ８７３）
ＲＯＭ８７２は、ＣＰＵ８７１に読み込まれるプログラムや演算に用いるデータ等を格納する手段である。ＲＡＭ８７３には、例えば、ＣＰＵ８７１に読み込まれるプログラムや、そのプログラムを実行する際に適宜変化する各種パラメータ等が一時的又は永続的に格納される。
【００７３】
（ホストバス８７４、ブリッジ８７５、外部バス８７６、インターフェース８７７）
ＣＰＵ８７１、ＲＯＭ８７２、ＲＡＭ８７３は、例えば、高速なデータ伝送が可能なホストバス８７４を介して相互に接続される。一方、ホストバス８７４は、例えば、ブリッジ８７５を介して比較的データ伝送速度が低速な外部バス８７６に接続される。また、外部バス８７６は、インターフェース８７７を介して種々の構成要素と接続される。
【００７４】
（入力装置８７８）
入力装置８７８には、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ、及びレバー等が用いられる。さらに、入力装置８７８としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラ（以下、リモコン）が用いられることもある。また、入力装置８７８には、マイクロフォンなどの音声入力装置が含まれる。
【００７５】
（出力装置８７９）
出力装置８７９は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、ＬＣＤ、又は有機ＥＬ等のディスプレイ装置、スピーカ、ヘッドホン等のオーディオ出力装置、プリンタ、携帯電話、又はファクシミリ等、取得した情報を利用者に対して視覚的又は聴覚的に通知することが可能な装置である。また、本開示に係る出力装置８７９は、触覚刺激を出力することが可能な種々の振動デバイスを含む。
【００７６】
（ストレージ８８０）
ストレージ８８０は、各種のデータを格納するための装置である。ストレージ８８０としては、例えば、ハードディスクドライブ（ＨＤＤ）等の磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイス等が用いられる。
【００７７】
（ドライブ８８１）
ドライブ８８１は、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体９０１に記録された情報を読み出し、又はリムーバブル記録媒体９０１に情報を書き込む装置である。
【００７８】
（リムーバブル記録媒体９０１）
リムーバブル記録媒体９０１は、例えば、ＤＶＤメディア、Ｂｌｕ−ｒａｙ（登録商標）メディア、ＨＤ  ＤＶＤメディア、各種の半導体記憶メディア等である。もちろん、リムーバブル記録媒体９０１は、例えば、非接触型ＩＣチップを搭載したＩＣカード、又は電子機器等であってもよい。
【００７９】
（接続ポート８８２）
接続ポート８８２は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポート、ＩＥＥＥ１３９４ポート、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）、ＲＳ−２３２Ｃポート、又は光オーディオ端子等のような外部接続機器９０２を接続するためのポートである。
【００８０】
（外部接続機器９０２）
外部接続機器９０２は、例えば、プリンタ、携帯音楽プレーヤ、デジタルカメラ、デジタルビデオカメラ、又はＩＣレコーダ等である。
【００８１】
（通信装置８８３）
通信装置８８３は、ネットワークに接続するための通信デバイスであり、例えば、有線又は無線ＬＡＮ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、又はＷＵＳＢ（Ｗｉｒｅｌｅｓｓ  ＵＳＢ）用の通信カード、光通信用のルータ、ＡＤＳＬ（Ａｓｙｍｍｅｔｒｉｃ  Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅ）用のルータ、又は各種通信用のモデム等である。
【００８２】
＜３．まとめ＞
以上説明したように、本実施形態に係る情報処理装置は、Ｎ次元超球表面におけるベクトル方向の粒度に基づいて量子化された重みベクトルを用いて、当該重みベクトルと対応する入力ベクトルとの内積演算を行うことを特徴の一つとする。係る構成によれば、内積演算に係る処理負担をより軽減すると共に、重み係数の量子化粒度を保証することが可能となる。
【００８３】
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
【００８４】
また、本明細書に記載された効果は、あくまで説明的または例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果とともに、または上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏しうる。
【００８５】
なお、以下のような構成も本開示の技術的範囲に属する。
（１）
複数の入力値と前記入力値にそれぞれ対応する複数の重み係数とに基づく内積演算を行い出力値を算出する演算部、
を備え、
前記演算部は、Ｎ次元超球表面におけるベクトル方向の粒度に基づいて量子化された前記重み係数に基づいて前記出力値を算出する、
情報処理装置。
（２）
前記演算部は、べき乗により表現された前記重み係数に基づいて前記出力値を算出する、
前記（１）に記載の情報処理装置。
（３）
前記重み係数の底は、前記演算部による内積演算において、０より大きく１未満の値に定まる、
前記（２）に記載の情報処理装置。
（４）
前記内積演算における乗算回数は、前記重み係数の底の値に基づいて定まる、
前記（２）または（３）に記載の情報処理装置。
（５）
前記演算部は、値の小さい順番に並び替えられた複数の前記重み係数に基づいて内積演算を行う、
前記（１）〜（４）のいずれかに記載の情報処理装置。
（６）
前記演算部は、最も値の大きい前記重み係数で正規化された複数の前記重み係数に基づいて内積演算を行う、
前記（５）に記載の情報処理装置。
（７）
前記演算部は、値の小さい順番に並び替えられた複数の前記重み係数と対応する前記入力値のアドレス情報を保持するテーブルに基づいて前記入力値を取得し内積演算を行う、
前記（５）または（６）に記載の情報処理装置。
（８）
前記アドレス情報は、アドレス間の相対位置を示すオフセットを含む、
前記（７）に記載の情報処理装置。
（９）
前記テーブルは、前記アドレス情報と対応付いた乗算指示情報をさらに保持する、
前記（７）または（８）に記載の情報処理装置。
（１０）
前記乗算指示情報は、少なくとも乗算の要否を指定する情報を含む、
前記（９）に記載の情報処理装置。
（１１）
前記テーブルは、前記アドレス情報と対応付いた符号情報をさらに保持する、
前記（７）〜（１０）のいずれかに記載の情報処理装置。
（１２）
前記演算部は、ニューラルネットワークの順伝播に係る内積演算を行う、
前記（１）〜（１１）のいずれかに記載の情報処理装置。
（１３）
複数の入力値と前記入力値にそれぞれ対応する複数の重み係数とに基づく積和演算を実行する積和演算回路を備え、
前記積和演算回路は、値の小さい順番に並び替えられた複数の前記重み係数と対応する前記入力値のアドレス情報を保持する記憶回路と、
前記アドレス情報により取得される前記入力値と前記重み係数に基づく演算を実行する乗算回路と、
を備える、
情報処理装置。
（１４）
プロセッサが、複数の入力値と前記入力値にそれぞれ対応する複数の重み係数とに基づく積和演算を行い出力値を算出すること、
を含み、
前記算出することは、Ｎ次元超球表面におけるベクトル方向の粒度に基づいて量子化された前記重み係数に基づいて前記出力値を算出すること、
をさらに含む、
情報処理方法。
【符号の説明】
【００８６】
１０  情報処理装置
１１０入力部
１２０演算部
１３０記憶部
１４０出力部
２００    積和演算回路
２１０    ＲＡＭ
２２０    加算回路
２３０    アキュムレータ
２４０    第１の乗算回路
２５０    第２の乗算回路
ＷＴ      アドレステーブル
【図１】
2020074240.tif 000011
【図２】
2020074240.tif 000012
【図３】
2020074240.tif 000013
【図４】
2020074240.tif 000014
【図５】
2020074240.tif 000015
【図６】
2020074240.tif 000016
【図７】
2020074240.tif 000017
【図８】
2020074240.tif 000018
【図９】
2020074240.tif 000019
【図１０】
2020074240.tif 000020
【図１１】
2020074240.tif 000021
【図１２】
2020074240.tif 000022
【図１３】
2020074240.tif 000023
【図１４】
2020074240.tif 000024
【図１５】
2020074240.tif 000025
【図１６】
2020074240.tif 000026