(57)【要約】  ニューラルネットワーク装置（２０）は、ニューラルネットワークモデルを記憶する記憶部（２４）と、入力情報を前記ニューラルネットワークの入力層に入力して出力層を出力する演算部（２２）とを備える。ニューラルネットワークモデルのＦＣ層の重み行列（Ｗ）は、整数の重み基底行列（Ｍｗ）と実数の重み係数行列（Ｃｗ）との積で構成されている。演算部（２２）は、ＦＣ層において、前層の出力ベクトルを入力ベクトル（ｘ）として、この入力ベクトルｘを二値の入力基底行列（Ｍｘ）と実数の入力係数ベクトル（ｃｘ）との積と入力バイアス（ｂｘ）に分解して、入力ベクトル（ｘ）と重み行列Ｗとの積を求める。
2018016608.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークモデルを記憶する記憶部と、
入力情報を前記ニューラルネットワークモデルの入力層に入力して出力層を出力する演算部と、
を備え、
前記ニューラルネットワークモデルの少なくとも１つの層の重み行列が整数の行列である重み基底行列と実数の行列である重み係数行列との積で構成されているニューラルネットワーク装置。
【請求項２】
前記演算部は、前記少なくとも１つの層において、前層の出力ベクトルを入力ベクトルとして、前記入力ベクトルを整数の行列である入力基底行列と実数のベクトルである入力係数ベクトルとの積と入力バイアスとの和に分解して、前記入力ベクトルと前記重み行列との積を求める請求項１に記載のニューラルネットワーク装置。
【請求項３】
前記重み基底行列は二値行列であり、前記入力基底行列は二値行列であり、
前記演算部は、前記重み基底行列と前記入力基底行列との積演算を論理演算とビットカウントで行う請求項２に記載のニューラルネットワーク装置。
【請求項４】
前記重み基底行列は三値行列であり、前記入力基底行列は二値行列であり、
前記演算部は、前記重み基底行列と前記入力基底行列との積演算を論理演算とビットカウントで行う請求項２に記載のニューラルネットワーク装置。
【請求項５】
前記演算部は、前記入力ベクトルに対して、前記入力基底行列を最適化することで、前記入力ベクトルを分解する請求項３又は４に記載のニューラルネットワーク装置。
【請求項６】
前記演算部は、前記入力ベクトルの各要素について、前記入力ベクトルの各要素に対応する前記入力基底行列の行のすべての組み合わせと学習された前記入力係数ベクトルとの積と学習された前記入力バイアスとの和の中から最も近い候補を選ぶことで前記入力基底行列を最適化する請求項５に記載のニューラルネットワーク装置。
【請求項７】
前記記憶部は、前記入力ベクトルの各要素の値と、それに対する前記最も近い候補における入力基底行列の値との関係を規定したルックアップテーブルを記憶しており、
前記演算部は、前記ルックアップテーブルを参照することで、前記入力ベクトルに対して前記入力基底行列を最適化する請求項６に記載のニューラルネットワーク装置。
【請求項８】
前記記憶部は、前記入力ベクトルの各要素について、前記入力ベクトルの各要素に対応する前記入力基底行列の行のすべての組み合わせと、それによって得られる前記入力ベクトルの各要素の近似値の候補を大きさ順に並べたときの中点を記憶しており、
前記演算部は、前記入力ベクトルの各要素について、前記中点を用いた二分木探索法によって前記入力ベクトルの各要素に対応する前記入力基底行列の行を決定することで前記入力基底行列を最適化する請求項６に記載のニューラルネットワーク装置。
【請求項９】
車載カメラで得た画像を前記入力情報として歩行者検知を行う請求項１ないし８のいずれかに記載のニューラルネットワーク装置。
【請求項１０】
前記ニューラルネットワークモデルは、畳込みニューラルネットワークモデルであり、
前記畳込みニューラルネットワークモデルは、畳込み層の複数のフィルタをまとめることで前記重み行列とし、前記畳込み層を全結合層とみなして、当該重み行列を整数の重み基底行列と実数の重み係数行列との積で構成しており、
前記演算部は、全結合層とみなされた前記畳込み層で、分解された前記入力ベクトルと分解された前記重み行列との積を求める請求項２ないし８のいずれかに記載のニューラルネットワーク装置。
【請求項１１】
ニューラルネットワークモデルを用いて認識を行うニューラルネットワーク装置であって、
前記ニューラルネットワークモデルの少なくとも１つの層の演算として論理演算を行う、ニューラルネットワーク装置。
【請求項１２】
ニューラルネットワークモデルを用いて認識を行うニューラルネットワーク装置であって、
前記ニューラルネットワークモデルの少なくとも１つの層の演算に用いる二値又は三値の行列を記憶している、ニューラルネットワーク装置。
【請求項１３】
請求項１ないし１２のいずれかに記載のニューラルネットワーク装置と、
前記入力情報を取得する車載センサと、
前記出力に基づいて車両を制御する車両制御装置と、
を備えた、車両制御システム。
【請求項１４】
ニューラルネットワークモデルを取得する取得部と、
前記ニューラルネットワークモデルの少なくとも１つの層の重み行列を整数の行列である重み基底行列と実数の行列である重み係数行列との積に分解する重み分解部と、
前記重み基底行列と前記重み係数行列を出力する出力部と、
を備えた分解処理装置。
【請求項１５】
入力ベクトルを整数の行列である入力基底行列と実数のベクトルである入力係数ベクトルとの積と入力バイアスとの和に分解するための前記入力係数ベクトルと前記入力バイアスを学習する入力事前分解部をさらに備え、
前記出力部は、前記学習により得られた前記入力係数ベクトルを出力する請求項１４に記載の分解処理装置。
【請求項１６】
前記入力事前分解部は、前記入力係数ベクトル及び前記入力バイアスに基づいて、前記入力ベクトルに対して前記入力基底行列を最適化するためのルックアップテーブルを生成し、
前記出力部は、前記ルックアップテーブルを出力する請求項１５に記載の分解処理装置。
【請求項１７】
コンピュータを、入力情報をニューラルネットワークモデルの入力層に入力して出力層から出力情報を得るニューラルネットワーク装置として機能させるプログラムであって、
前記コンピュータの記憶部には、
前記ニューラルネットワークモデルの少なくとも１つの全結合層の重み行列を分解して得られた整数の重み基底行列及び実数の重み係数行列と、
入力ベクトルを整数の入力基底行列と実数の入力係数ベクトルとの積と入力バイアスとの和に分解するための、学習によって得られた前記入力係数ベクトル及び前記入力バイアスのうちの前記入力係数ベクトルと、
前記学習によって得られた前記入力係数ベクトル及び前記入力バイアスに基づいて得られた、前記入力ベクトルの各要素の値と、それに対する入力基底行列の値との関係を規定したルックアップテーブルと、
が記憶され、
前記プログラムは、前記コンピュータを、前記ニューラルネットワークモデルの少なくとも１つの全結合層において、前層の出力ベクトルを入力ベクトルとして、前記記憶部から読み出した前記重み基底行列、前記実数の重み係数行列、及び前記入力係数ベクトルと、前記記憶部から読み出した前記ルックアップテーブルを参照して得られた前記入力ベクトルに対応する前記入力基底行列とを用いて、前記入力ベクトルと前記重み行列との積を求める演算部として機能させるプログラム。
【請求項１８】
コンピュータを、入力情報をニューラルネットワークモデルの入力層に入力して出力層から出力情報を得るニューラルネットワーク装置として機能させるプログラムであって、
前記コンピュータの記憶部には、
前記ニューラルネットワークモデルの少なくとも１つの全結合層の重み行列を分解して得られた整数の重み基底行列及び実数の重み係数行列と、
入力ベクトルを整数の入力基底行列と実数の入力係数ベクトルとの積と入力バイアスとの和に分解するための、学習によって得られた前記入力係数ベクトル及び前記入力バイアスのうちの前記入力係数ベクトルと、
前記学習によって得られた前記入力係数ベクトル及び前記入力バイアスに基づいて得られた、前記入力ベクトルの各要素についての、前記入力ベクトルの各要素に対応する前記入力基底行列の行のすべての組み合わせと、それによって得られる前記入力ベクトルの各要素の近似値の候補を大きさ順に並べたときの中点と、
が記憶され、
前記プログラムは、前記コンピュータを、前記ニューラルネットワークモデルの少なくとも１つの全結合層において、前層の出力ベクトルを入力ベクトルとして、前記記憶部から読み出した前記重み基底行列、前記実数の重み係数行列、及び前記入力係数ベクトルと、前記入力基底行列の行のすべての組み合わせと前記中点とを用いて、前記入力ベクトルと前記重み行列との積を求める演算部として機能させるプログラム。
【請求項１９】
ニューラルネットワークモデルを記憶する記憶部と、
入力情報を前記ニューラルネットワークモデルの入力層に入力して出力層を出力する演算部と、
を備え、
前記演算部は、前記ニューラルネットワークモデルの少なくとも１つの層において、前層の出力ベクトルを入力ベクトルとして、前記入力ベクトルを整数の行列である入力基底行列と実数のベクトルである入力係数ベクトルとの積と入力バイアスとの和に分解して、分解された前記入力ベクトルと重み行列との積を求めるニューラルネットワーク装置。
【発明の詳細な説明】
【関連する出願】
【０００１】
本出願では、２０１６年７月２１日に日本国に出願された特許出願番号２０１６−１４３７０５の利益を主張し、当該出願の内容は引用することによりここに組み込まれているものとする。
【技術分野】
【０００２】
本技術は、入力情報をニューラルネットワークモデルの入力層に入力して出力層から出力情報を得るニューラルネットワーク装置及びプログラム、ニューラルネットワーク装置を備えた車両制御システム、及びこのニューラルネットワークを構成するための分解処理装置に関する。
【背景技術】
【０００３】
ニューラルネットワークを利用して入力情報を処理することで、入力情報をクラス分けしたり、入力情報から所定の情報を検出したりすることができる。図１６は、４次元の入力ベクトルを３クラスに分ける（３つのクラスのいずれに属するかを識別する）ニューラルネットワークの例を示す図である。図１６に示すように、識別すべき４次元の入力ベクトル（入力マップともいう。）が入力層ａ０として入力されると、この入力情報は、中間層ａ１〜ａ３を経て、３次元の出力層ａ４として出力される。【０００４】
入力層ａ０と中間層ａ１との間には、重み行列（フィルタともいう。）Ｗ１とバイアスベクトルｂ１が定義されており、中間層ａ１は、下式（１）によって求められる。
【数１】
2018016608.tif 000003
ここで、ｆ（・）は、活性化関数であり、例えば以下の関数（ＲｅＬＵ）が用いられる。
【数２】
2018016608.tif 000004
以下同様にして、中間層ａ２、ａ３が、下式（２）、（３）によって求められ、出力層ａ４は、下式（４）によって求められる。
【数３】
2018016608.tif 000005
【０００５】
このように、ニューラルネットワークの各層では、下記のように、前層からの入力ベクトルをｘ（ＤＩ次元）とし、重み行列Ｗ（ＤＩ行ＤＯ列）とし、及びバイアスｂ（ＤＯ次元）とすると、次層への出力ベクトル（活性化関数を適用する前）ｙ（ＤＯ次元）が下式（５）で表現される。
【数４】
2018016608.tif 000006
【発明の概要】
【０００６】
上記のようなニューラルネットワークでは、層数を多くする（深層にする）と、情報処理の精度が向上することが知られている。しかしながら、層数を多くすると、処理コストも大きくなる。具体的には、式（５）の演算において必要なメモリ容量が大きくなり、処理時間も長くなる。
【０００７】
例えば、全結合層（Fully Connected Layer、以下「ＦＣ層」ともいう。）においては、重み行列Ｗが単精度実数（３２ビット）の場合には、３２ＤＩＤＯビットのメモリを消費することになる。また、各層ではＤＩＤＯ回の単精度実数の積和演算が必要であり、特にこの計算に処理時間を要することになる。なお、ＦＣ層は、通常はニューラルネットワークの最後に配置されるが、畳み込み層（Convolutional Layer、以下「ＣＯＮＶ層」ともいう。）においても入力マップをスライディングウィンドウにより適切に切り出し、並べ替えることで、ＣＯＮＶ層をＦＣ層とみなすことができる。
【０００８】
本技術は、上記の問題点に鑑みてなされたものであり、ニューラルネットワーク装置においてメモリ消費量及び演算量を小さくすることを目的とする。
【０００９】
一態様のニューラルネットワーク装置は、ニューラルネットワークモデルを記憶する記憶部（２４）と、入力情報を前記ニューラルネットワークモデルの入力層に入力して出力層を出力する演算部（２２）とを備え、前記ニューラルネットワークモデルの少なくとも１つの層の重み行列（Ｗ）が整数の行列である重み基底行列（Ｍｗ）と実数の行列である重み係数行列（Ｃｗ）との積（ＭｗＣｗ）で構成されている。
【００１０】
一態様のニューラルネットワーク装置は、ニューラルネットワークモデルを用いて認識を行うニューラルネットワーク装置であって、前記ニューラルネットワークモデルの少なくとも１つの層の演算として論理演算を行う構成を有している。
【００１１】
一態様のニューラルネットワーク装置は、ニューラルネットワークモデルを用いて認識を行うニューラルネットワーク装置であって、前記ニューラルネットワークモデルの少なくとも１つの層の演算に用いる二値又は三値の行列を記憶している構成を有している。
【００１２】
一態様の車両制御システムは、上記のニューラルネットワーク装置（２０）と、前記入力情報を取得する車載センサ（３０）と、前記出力に基づいて車両を制御する車両制御装置（４０）とを備えた構成を有している。
【００１３】
一態様の分解処理装置は、ニューラルネットワークモデルを取得する取得部（１１）と、前記ニューラルネットワークモデルの少なくとも１つの層の重み行列を整数の行列である重み基底行列（Ｍｗ）と実数の行列である重み係数行列（Ｃｗ）との積（ＭｗＣｗ）に分解する重み分解部（１２）と、前記重み基底行列（Ｍｗ）と前記重み係数行列（Ｃｗ）を出力する出力部（１４）とを備えた構成を有している。
【００１４】
一態様のプログラムは、コンピュータを、入力情報をニューラルネットワークモデルの入力層に入力して出力層から出力情報を得るニューラルネットワーク装置として機能させるプログラムであって、前記コンピュータの記憶部（２４）には、前記ニューラルネットワークモデルの少なくとも１つの全結合層の重み行列（Ｗ）を分解して得られた整数の重み基底行列（Ｍｗ）及び実数の重み係数行列（Ｃｗ）と、入力ベクトル（ｘ）を整数の入力基底行列（Ｍｘ）と実数の入力係数ベクトル（ｃｘ）との積と入力バイアス（ｂｘ）との和に分解するための、学習によって得られた前記入力係数ベクトル（ｃｘ）及び前記入力バイアス（ｂｘ）のうちの前記入力係数ベクトル（ｃｘ）と、前記学習によって得られた前記入力係数ベクトル（ｃｘ）及び前記入力バイアス（ｂｘ）に基づいて得られた、前記入力ベクトルの各要素の値（ｘｊ）と、それに対する入力基底行列の値（ｍｘ（ｊ））との関係を規定したルックアップテーブル（ＬＵＴ）とが記憶され、前記プログラムは、前記コンピュータを、前記ニューラルネットワークモデルの少なくとも１つの全結合層において、前層の出力ベクトルを入力ベクトル（ｘ）として、前記記憶部（２４）から読み出した前記重み基底行列（Ｍｗ）、前記実数の重み係数行列（Ｃｗ）、及び前記入力係数ベクトル（ｃｘ）と、前記記憶部（２４）から読み出した前記ルックアップテーブル（ＬＵＴ）を参照して得られた前記入力ベクトル（ｘ）に対応する前記入力基底行列（Ｍｘ）とを用いて、前記入力ベクトル（ｘ）と前記重み行列（Ｗ）との積を求める演算部として機能させる。
【００１５】
一態様のプログラムは、コンピュータを、入力情報をニューラルネットワークモデルの入力層に入力して出力層から出力情報を得るニューラルネットワーク装置として機能させるプログラムであって、前記コンピュータの記憶部（２４）には、前記ニューラルネットワークモデルの少なくとも１つの全結合層の重み行列（Ｗ）を分解して得られた整数の重み基底行列（Ｍｗ）及び実数の重み係数行列（Ｃｗ）と、入力ベクトル（ｘ）を整数の入力基底行列（Ｍｘ）と実数の入力係数ベクトル（ｃｘ）との積と入力バイアス（ｂｘ）との和に分解するための、学習によって得られた前記入力係数ベクトル（ｃｘ）及び前記入力バイアス（ｂｘ）のうちの前記入力係数ベクトル（ｃｘ）と、前記学習によって得られた前記入力係数ベクトル（ｃｘ）及び前記入力バイアス（ｂｘ）に基づいて得られた、前記入力ベクトルの各要素（ｘｊ）についての、前記入力ベクトルの各要素（ｘｊ）に対応する前記入力基底行列の行のすべての組み合わせ（β）と、それによって得られる前記入力ベクトルの各要素（ｘｊ）の近似値の候補（ｐ）を大きさ順に並べたときの中点（ｍｐｉ）とが記憶され、前記プログラムは、前記コンピュータを、前記ニューラルネットワークモデルの少なくとも１つの全結合層において、前層の出力ベクトルを入力ベクトル（ｘ）として、前記記憶部（２４）から読み出した前記重み基底行列（Ｍｗ）、前記実数の重み係数行列（Ｃｗ）、及び前記入力係数ベクトル（ｃｘ）と、前記入力基底行列の行のすべての組み合わせ（β）と前記中点（ｍｐｉ）とを用いて、前記入力ベクトルと前記重み行列との積を求める演算部（２２）として機能させる。
【００１６】
一態様のニューラルネットワーク装置は、ニューラルネットワークモデルを記憶する記憶部（２４）と、入力情報を前記ニューラルネットワークモデルの入力層に入力して出力層を出力する演算部（２２）とを備え、前記演算部（２２）は、前記ニューラルネットワークモデルの少なくとも１つの層において、前層の出力ベクトルを入力ベクトル（ｘ）として、前記入力ベクトル（ｘ）を整数の行列である入力基底行列（Ｍｘ）と実数のベクトルである入力係数ベクトル（ｃｘ）との積（Ｍｘｃｘ）と入力バイアス（ｂｘ）との和に分解して（ｘ＝Ｍｘｃｘ＋ｂｘ１）、分解された前記入力ベクトル（Ｍｘｃｘ＋ｂｘ１）と重み行列（Ｗ）との積を求める構成を有している（ＷＴｘ＝Ｗ（Ｍｘｃｘ＋ｂｘ１））。
【００１７】
以下に説明するように、本技術には他の態様が存在する。したがって、この技術の開示は、本技術の一部の提供を意図しており、ここで記述され請求されている発明の範囲を制限することは意図していない。
【図面の簡単な説明】
【００１８】
【図１】図１は、実施の形態の整数分解された入力ベクトルと重み行列との積の計算を説明する図である。
【図２】図２は、実施の形態の分解処理装置の構成を示す図である。
【図３】図３は、実施の形態の重み行列を基底行列と係数行列に分解する処理を説明する図である。
【図４】図４は、実施の形態の分割手法において実施されるアルゴリズムのフロー図である。
【図５】図５は、実施の形態の重み行列を基底行列と係数行列に分解する処理の変形例を説明する図である。
【図６】図６は、実施の形態の入力ベクトルを基底行列と係数ベクトルとの積とバイアスとに分解する処理の変形例を説明する図である。
【図７】図７は、実施の形態の入力ベクトルの基底行列の全探索による更新を説明する図である。
【図８】図８は、実施の形態の入力ベクトルの基底行列の最適化を説明する図である。
【図９】図９は、実施の形態の入力ベクトルの基底行列の最適化を説明する図である。
【図１０】図１０は、実施の形態の入力ベクトルの基底行列の最適化を説明する図である。
【図１１】図１１は、実施の形態のニューラルネットワーク装置の構成を示す図である。
【図１２】図１２は、実施の形態のニューラルネットワークモデルのＦＣ層における演算部の処理を説明する図である。
【図１３】図１３は、実施の形態のＣＯＮＶ層の入力マップと出力マップとの関係を示す図である。
【図１４】図１４は、実施の形態のＣＯＮＶ層の入力マップと出力マップとの関係を示す図である。
【図１５】図１５は、実施の形態のＣＯＮＶ層の重み行列の分解を示す図である。
【図１６】図１６は、４次元の入力ベクトルを３クラスに識別するニューラルネットワークの例を示す図である。
【図１７】図１７は、実施の形態の変形例における入力ベクトルの基底行列の最適化を説明する図である。
【図１８】図１８は、実施の形態の変形例における入力ベクトルの基底行列の最適化を説明する図である。
【図１９】図１９は、実施の形態の変形例におけるプロトタイプ及び中点をプロットした数直線を示す図である。
【図２０】図２０は、実施の形態の変形例におけるプロトタイプ及び中点をプロットした数直線を示す図である。
【図２１】図２１は、実施の形態の変形例におけるβのアサインを説明する図である。
【図２２】図２２は、実施の形態の変形例におけるニューラルネットワーク装置の構成を示す図である。
【図２３】図２３は、実施の形態の変形例における二分木探索を説明する図である。
【図２４】図２４は、実施の形態の変形例における二分木探索を説明する図である。
【図２５】図２５は、実施の形態の変形例における二分木探索を説明する図である。
【図２６】図２６は、実施の形態の変形例における二分木探索を説明する図である。
【図２７】図２７は、実施の形態の変形例における二分木を説明する図である。
【図２８】図２８は、実施の形態における車両制御システムの構成を示す図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照して実施の形態を説明する。なお、以下に説明する実施の形態は、本技術を実施する場合の一例を示すものであって、本技術を以下に説明する具体的構成に限定するものではない。本技術の実施にあたっては、実施の形態に応じた具体的構成が適宜採用されてよい。
【００２０】
一態様のニューラルネットワーク装置は、ニューラルネットワークモデルを記憶する記憶部（２４）と、入力情報を前記ニューラルネットワークモデルの入力層に入力して出力層を出力する演算部（２２）とを備え、前記ニューラルネットワークモデルの少なくとも１つの層の重み行列（Ｗ）が整数の行列である重み基底行列（Ｍｗ）と実数の行列である重み係数行列（Ｃｗ）との積（ＭｗＣｗ）で構成されている。
【００２１】
この構成により、ニューラルネットワークにおける全結合層の重み行列（Ｗ）が整数の重み基底行列（Ｍｗ）と実数の重み係数行列（Ｃｗ）との積（ＭｗＣｗ）で構成されるので、当該層の演算において、メモリの消費量を小さくくできる。
【００２２】
上記のニューラルネットワーク装置において、前記演算部（２２）は、前記少なくとも１つの層において、前層の出力ベクトルを入力ベクトル（ｘ）として、前記入力ベクトル（ｘ）を整数の行列である入力基底行列（Ｍｘ）と実数のベクトルである入力係数ベクトル（ｃｘ）との積（ＭｗＣｗ）と入力バイアス（ｂｘ）との和に分解して（ｘ＝Ｍｘｃｘ＋ｂｘ１）、前記入力ベクトル（ｘ）と前記重み行列（Ｗ）との積を求めてよい（ＷＴｘ＝（ＭｗＣｗ）Ｔ（Ｍｘｃｘ＋ｂｘ１））。
【００２３】
この構成により、入力ベクトル（ｘ）と前記重み行列（Ｗ）との積を求める演算において、入力基底行列（Ｍｘ）と重み基底行列（Ｍｗ）との積演算を整数行列どうしの積演算とできるので、メモリの消費量を小さくし、演算量を小さくできる。
【００２４】
上記のニューラルネットワーク装置において、前記重み基底行列（Ｍｗ）は二値行列であってよく、前記入力基底行列（Ｍｘ）は二値行列であってよく、前記演算部（２２）は、前記重み基底行列（Ｍｗ）と前記入力基底行列（Ｍｘ）との積演算（ＭｗＭｘ）を論理演算とビットカウントで行ってよい。
【００２５】
この構成により、入力ベクトル（ｘ）と前記重み行列（Ｗ）との積を求める演算における入力基底行列（Ｍｘ）と重み基底行列（Ｍｗ）との積演算を二値行列どうしの積演算とすることができ、論理演算とビットカウントで実行できるので、入力ベクトル（ｘ）と前記重み行列（Ｗ）との積を求める演算を高速化できる。
【００２６】
上記のニューラルネットワーク装置において、前記重み基底行列（Ｍｗ）は三値行列であってよく、前記入力基底行列（Ｍｘ）は二値行列であってよく、前記演算部（２２）は、前記重み基底行列（Ｍｗ）と前記入力基底行列（Ｍｘ）との積演算（ＭｗＭｘ）を論理演算とビットカウントで行ってよい。
【００２７】
この構成により、入力ベクトル（ｘ）と前記重み行列（Ｗ）との積を求める演算における入力基底行列（Ｍｘ）と重み基底行列（Ｍｗ）との積演算を二値行列と三値行列との積演算とすることができ、論理演算とビットカウントで実行できるので、入力ベクトル（ｘ）と前記重み行列（Ｗ）との積を求める演算を高速化できる。
【００２８】
上記のニューラルネットワーク装置において、前記演算部（２２）は、前記入力ベクトル（ｘ）に対して、前記入力基底行列（Ｍｘ）を最適化することで、前記入力ベクトル（ｘ）を分解してよい。
【００２９】
この構成により、全結合層に対する入力ベクトル（ｘ）が得られるたびに入力係数ベクトル（ｃｘ）と入力バイアス（ｂｘ）を求める必要はなく、全結合層の演算量を小さくできる。
【００３０】
上記のニューラルネットワーク装置において、前記演算部（２２）は、前記入力ベクトル（ｘ）の各要素（ｘｊ）について、前記入力ベクトルの各要素に対応する前記入力基底行列の行のすべての組み合わせ（β）と前記学習された前記入力係数ベクトル（ｃｘ）との積と学習された前記入力バイアス（ｂｘ）との和（βｃｘ＋ｂｘ）の中から最も近い候補を選ぶことで前記入力基底行列（Ｍｘ）を最適化してよい。
【００３１】
この構成により、一次元の最近傍探索によって入力基底行列（Ｍｘ）を最適化できる。
【００３２】
上記のニューラルネットワーク装置において、前記記憶部（２４）は、前記入力ベクトルの各要素（ｘｊ）の値と、それに対する前記最も近い候補における入力基底行列の値（ｍｘ（ｊ））との関係を規定したルックアップテーブル（ＬＵＴ）を記憶していてよく、前記演算部（２２）は、前記ルックアップテーブル（ＬＵＴ）を参照することで、前記入力ベクトル（ｘ）に対して前記入力基底行列（Ｍｘ）を最適化してよい。
【００３３】
この構成により、入力ベクトル（ｘ）に対する入力基底行列（Ｍｘ）の最適化を高速化できる。
【００３４】
上記のニューラルネットワーク装置において、前記記憶部（２４）は、前記入力ベクトルの各要素（ｘｉ）について、前記入力ベクトルの各要素（ｘｉ）に対応する前記入力基底行列の行（β）のすべての組み合わせと、それによって得られる前記入力ベクトルの各要素の近似値の候補（ｐ）を大きさ順に並べたときの中点（ｍｐｉ）を記憶していてよく、前記演算部（２２）は、前記入力ベクトルの各要素（ｘｉ）について、前記中点（ｍｐｉ）を用いた二分木探索法によって前記入力ベクトルの各要素（ｘｉ）に対応する前記入力基底行列の行（ｍｘ（ｊ））を決定することで前記入力基底行列（Ｍｘ）を最適化してよい。
【００３５】
この構成により、入力ベクトル（ｘ）に対する入力基底行列（Ｍｘ）の最適化を高速化できるとともに、演算部（２２）の演算に必要なメモリの容量を小さくできる。
【００３６】
上記のニューラルネットワーク装置において、前記ニューラルネットワークモデルは、畳込みニューラルネットワークモデルであってよく、畳込みニューラルネットワークモデルは、畳込み層の複数のフィルタをまとめることで前記重み行列（Ｗ）とし、前記畳込み層を全結合層とみなして、当該重み行列（Ｗ）を整数の重み基底行列（Ｍｗ）と実数の重み係数行列（Ｃｗ）との積で構成していてよく、前記演算部（２２）は、全結合層とみなされた前記畳込み層で、分解された前記入力ベクトル（ｘ）と分解された前記重み行列（Ｗ）との積を求めてよい。
【００３７】
この構成により、畳込みニューラルネットワークモデルの畳込み層の演算において、メモリ消費量を小さくし、演算量を小さくできる。
【００３８】
一態様のニューラルネットワーク装置は、ニューラルネットワークモデルを用いて認識を行うニューラルネットワーク装置であって、前記ニューラルネットワークモデルの少なくとも１つの層の演算として論理演算を行う構成を有している。
【００３９】
この構成により、論理演算によって高速にニューラルネットワークモデルの演算を行うことができる。
【００４０】
一態様のニューラルネットワーク装置は、ニューラルネットワークモデルを用いて認識を行うニューラルネットワーク装置であって、前記ニューラルネットワークモデルの少なくとも１つの層の演算に用いる二値又は三値の行列を記憶している構成を有している。
【００４１】
この構成により、二値又は三値の行列によって高速にニューラルネットワークモデルの演算を行うことができる。
【００４２】
一態様の車両制御システムは、上記のニューラルネットワーク装置（２０）と、前記入力情報を取得する車載センサ（３０）と、前記出力に基づいて車両を制御する車両制御装置（４０）とを備えた構成を有している。
【００４３】
この構成により、ニューラルネットワークモデルによる認識に基づいて車両を制御できる。
【００４４】
一態様の分解処理装置は、ニューラルネットワークモデルを取得する取得部（１１）と、前記ニューラルネットワークモデルの少なくとも１つの層の重み行列を整数の行列である重み基底行列（Ｍｗ）と実数の行列である重み係数行列（Ｃｗ）との積（ＭｗＣｗ）に分解する重み分解部（１２）と、前記重み基底行列（Ｍｗ）と前記重み係数行列（Ｃｗ）を出力する出力部（１４）とを備えた構成を有している。
【００４５】
この構成により、上記のニューラルネットワーク装置を構成するための重み基底行列（Ｍｗ）と重み係数行列（Ｃｗ）を得ることができる。
【００４６】
上記の分解処理装置は、入力ベクトル（ｘ）を整数の行列である入力基底行列（Ｍｘ）と実数のベクトルである入力係数ベクトル（ｃｘ）との積と入力バイアス（ｂｘ）との和に分解する（ｘ＝Ｍｘｃｘ＋ｂｘ１）ための前記入力係数ベクトル（ｃｘ）と前記入力バイアス（ｂｘ）を学習する入力事前分解部（１３）をさらに備えていてよく、前記出力部（１４）は、前記学習により得られた前記入力係数ベクトル（ｃｘ）を出力してよい。
【００４７】
この構成により、入力ベクトル（ｘ）を分解するための係数ベクトル（ｃｘ）と入力バイアス（ｂｘ）を学習により事前に取得しておくことができる。
【００４８】
上記の分解処理装置において、前記入力事前分解部（１３）は、前記入力ベクトル（ｘ）に対して前記入力基底行列（Ｍｘ）を最適化するためのルックアップテーブル（ＬＵＴ）を生成してよく、前記出力部（１４）は、前記ルックアップテーブル（ＬＵＴ）を出力してよい。
【００４９】
この構成により、入力ベクトル（ｘ）を高速に分解するためのルックアップテーブル（ＬＵＴ）を事前に取得しておくことができる。
【００５０】
一態様のプログラムは、コンピュータを、入力情報をニューラルネットワークモデルの入力層に入力して出力層から出力情報を得るニューラルネットワーク装置として機能させるプログラムであって、前記コンピュータの記憶部（２４）には、前記ニューラルネットワークモデルの少なくとも１つの全結合層の重み行列（Ｗ）を分解して得られた整数の重み基底行列（Ｍｗ）及び実数の重み係数行列（Ｃｗ）と、入力ベクトル（ｘ）を整数の入力基底行列（Ｍｘ）と実数の入力係数ベクトル（ｃｘ）との積と入力バイアス（ｂｘ）との和に分解するための、学習によって得られた前記入力係数ベクトル（ｃｘ）及び前記入力バイアス（ｂｘ）のうちの前記入力係数ベクトル（ｃｘ）と、前記学習によって得られた前記入力係数ベクトル（ｃｘ）及び前記入力バイアス（ｂｘ）に基づいて得られた、前記入力ベクトルの各要素の値（ｘｊ）と、それに対する入力基底行列の値（ｍｘ（ｊ））との関係を規定したルックアップテーブル（ＬＵＴ）とが記憶され、前記プログラムは、前記コンピュータを、前記ニューラルネットワークモデルの少なくとも１つの全結合層において、前層の出力ベクトルを入力ベクトル（ｘ）として、前記記憶部（２４）から読み出した前記重み基底行列（Ｍｗ）、前記実数の重み係数行列（Ｃｗ）、及び前記入力係数ベクトル（ｃｘ）と、前記記憶部（２４）から読み出した前記ルックアップテーブル（ＬＵＴ）を参照して得られた前記入力ベクトル（ｘ）に対応する前記入力基底行列（Ｍｘ）とを用いて、前記入力ベクトル（ｘ）と前記重み行列（Ｗ）との積を求める演算部として機能させる。
【００５１】
この構成により、ニューラルネットワークにおける全結合層の重み行列（Ｗ）が整数の重み基底行列（Ｍｗ）と実数の重み係数行列（Ｃｗ）との積（ＭｗＣｗ）で構成され、入力ベクトル（ｘ）と前記重み行列（Ｗ）との積を求める演算において、入力基底行列（Ｍｘ）と重み基底行列（Ｍｗ）との積演算を整数行列どうしの積演算とできるので、メモリの消費量を小さくし、演算量を小さくでき、ルックアップテーブルを参照して入力ベクトル（ｘ）に対する入力基底行列（Ｍｘ）の最適化するので、入力ベクトル（ｘ）と前記重み行列（Ｗ）との積を求める演算を高速化できる。
【００５２】
一態様のプログラムは、コンピュータを、入力情報をニューラルネットワークモデルの入力層に入力して出力層から出力情報を得るニューラルネットワーク装置として機能させるプログラムであって、前記コンピュータの記憶部（２４）には、前記ニューラルネットワークモデルの少なくとも１つの全結合層の重み行列（Ｗ）を分解して得られた整数の重み基底行列（Ｍｗ）及び実数の重み係数行列（Ｃｗ）と、入力ベクトル（ｘ）を整数の入力基底行列（Ｍｘ）と実数の入力係数ベクトル（ｃｘ）との積と入力バイアス（ｂｘ）との和に分解するための、学習によって得られた前記入力係数ベクトル（ｃｘ）及び前記入力バイアス（ｂｘ）のうちの前記入力係数ベクトル（ｃｘ）と、前記学習によって得られた前記入力係数ベクトル（ｃｘ）及び前記入力バイアス（ｂｘ）に基づいて得られた、前記入力ベクトルの各要素（ｘｊ）についての、前記入力ベクトルの各要素（ｘｊ）に対応する前記入力基底行列の行のすべての組み合わせ（β）と、それによって得られる前記入力ベクトルの各要素（ｘｊ）の近似値の候補（ｐ）を大きさ順に並べたときの中点（ｍｐｉ）とが記憶され、前記プログラムは、前記コンピュータを、前記ニューラルネットワークモデルの少なくとも１つの全結合層において、前層の出力ベクトルを入力ベクトル（ｘ）として、前記記憶部（２４）から読み出した前記重み基底行列（Ｍｗ）、前記実数の重み係数行列（Ｃｗ）、及び前記入力係数ベクトル（ｃｘ）と、前記入力基底行列の行のすべての組み合わせ（β）と前記中点（ｍｐｉ）とを用いて、前記入力ベクトルと前記重み行列との積を求める演算部（２２）として機能させる。
【００５３】
この構成により、入力ベクトル（ｘ）に対する入力基底行列（Ｍｘ）の最適化を高速化できるとともに、演算部（２２）の演算に必要なメモリの容量を小さくできる。
【００５４】
一態様のニューラルネットワーク装置は、ニューラルネットワークモデルを記憶する記憶部（２４）と、入力情報を前記ニューラルネットワークモデルの入力層に入力して出力層を出力する演算部（２２）とを備え、前記演算部（２２）は、前記ニューラルネットワークモデルの少なくとも１つの層において、前層の出力ベクトルを入力ベクトル（ｘ）として、前記入力ベクトル（ｘ）を整数の行列である入力基底行列（Ｍｘ）と実数のベクトルである入力係数ベクトル（ｃｘ）との積（Ｍｘｃｘ）と入力バイアス（ｂｘ）との和に分解して（ｘ＝Ｍｘｃｘ＋ｂｘ１）、分解された前記入力ベクトル（Ｍｘｃｘ＋ｂｘ１）と前記重み行列（Ｗ）との積を求める構成を有している（ＷＴｘ＝Ｗ（Ｍｘｃｘ＋ｂｘ１））。
【００５５】
重み行列（Ｗ）が二値又は三値の要素で構成されている場合には、この構成により、入力ベクトル（ｘ）と重み行列（Ｗ）との積を求める演算において、入力基底行列（Ｍｘ）と重み行列（Ｗ）との積演算を整数行列と二値又は三値の行列との積演算とできるので、演算量を小さくできる。
【００５６】
以下、図面を参照して実施の形態を説明する。本実施の形態では、省メモリ・高速化されたニューラルネットワークモデルを構成するための分解処理装置１０と、ニューラルネットワークモデルを利用して入力情報から出力情報を得るニューラルネットワーク装置２０を説明するが、まず、本実施の形態における基本的な考え方について説明する。上記のように、ニューラルネットワークのＦＣ層では、重み行列（フィルタ）Ｗと入力ベクトル（入力マップ）ｘとの積ＷＴｘを計算する工程が含まれる。この重み行列Ｗを整数の基底行列と実数の係数行列とに分解（整数分解）し、入力ベクトルｘを整数の基底行列と実数の係数ベクトルに分解（整数分解）することで、メモリ消費量を削減できるとともに、演算量を少なくして処理時間を短縮できる。
【００５７】
図１は、本実施の形態の整数分解された積ＷＴｘの計算を説明する図である。なお、図１ではバイアスｂは省略している。また、基底数ｋｗは、重み行列Ｗの大きさに応じて決定されるが、およそ重み行列Ｗの１／８〜１／４程度（数十〜数百程度）であり、基底数ｋｘは、例えば２〜４程度とすることができる。これをバイアスｂを含めて式で表現すると、下式（６）のように表現される。
【数５】
2018016608.tif 000007
【００５８】
重み行列Ｗを分解して得られた基底行列ＭｗＴは二値又は三値の行列であり、入力ベクトルｘを分解して得られた基底行列Ｍｘは二値の行列である。なお、基底行列Ｍｘは、後述の例のように三値の行列であってもよい。式（６）の右辺第１項のＭｗＴＭｘは、二値又は三値の行列と二値又は三値の行列との積であり、これは、論理演算（ＡＮＤ、ＸＯＲ）とビットカウントで計算可能である。また、右辺第２項と第３項との和は、後述するように事前に計算可能である。よって、図１及び式（６）の分解によって、大半の演算を論理演算に帰着可能である。
【００５９】
図２は、本実施の形態の深層ニューラルネットワークを構成するための分解処理装置の構成を示す図である。図２に示すように、分解処理装置１０は、データ取得部１１と、重み分解部１２と、入力事前分解部１３と、分解結果出力部１４とを備えている。データ取得部１１は、本実施の形態のニューラルネットワークモデルの構成情報（各層の重み（フィルタ）Ｗ、バイアスｂを含む）、及び学習用の入力ベクトルを取得する。
【００６０】
重み分解部１２は、重み行列Ｗを実数の係数行列Ｃｗと二値又は三値の基底行列Ｍｗとの積に分解する。入力事前分解部１３は、入力ベクトルｘを二値又は三値の基底行列Ｍｘと実数の係数ベクトルｃｘとの積とバイアスｂｘとの和に分解するための係数ベクトルｃｘとの積とバイアスｂｘを学習によって求め、入力ベクトルｘから基底行列Ｍｘを求めるためのルックアップテーブルＬＵＴを生成する。分解結果出力部１４は、重み分解部１２で得られた係数行列Ｃｗと二値又は三値の基底行列Ｍｗとの積及び入力事前分解部１３で得られたルックアップテーブルＬＵＴを用いて、ニューラルネットワークモデルを再構成して、後述するニューラルネットワーク装置２０に出力する。以下、各機能について詳細に説明する。
【００６１】
（重み行列の分解）
重み分解部１２は、重み行列Ｗを実数の係数行列Ｃｗと整数の基底行列Ｍｗとの積に分解する。図３は、重み行列Ｗを基底数ｋｗの基底行列Ｍｗと係数行列Ｃｗに分解する処理を説明する図である。本実施の形態では、重み分解部１２は、重み行列Ｗを二値又は三値の基底行列Ｍｗと実数の係数行列Ｃｗに分解する。以下、本実施の形態の重み分解部１２において、二値又は三値の基底行列Ｍｗと実数の係数行列Ｃｗに分解する手法として、第１ないし第４の手法を説明する。
【００６２】
（第１の分解手法）
第１の分解手法として、データ非依存型の分解手法を説明する。第１の分解手法では、重み分解部１２は、分解誤差を表す下式のコスト関数ｇ１を解くことで分解を行う。
【数６】
2018016608.tif 000008
ここで、基底行列Ｍｗは二値行列であり、Ｍ∈｛−１，１｝Ｄ0×ｋｗである。
【００６３】
具体的には、重み分解部１２は、以下の手順で上記のコスト関数ｇ１を解く。
（１）基底行列Ｍｗ及び係数行列Ｃｗをランダムに初期化する。
（２）基底行列Ｍｗの要素を固定して、係数行列Ｃｗの要素を最小二乗法により最適化することで、コスト関数ｇ１が最小になるように係数行列Ｃｗの要素を更新する。
（３）係数行列Ｃｗの要素を固定して、コスト関数ｇ１が最小になるように全探索で基底行列Ｍｗの要素を更新する。
（４）収束するまで（２）及び（３）を繰り返す。例えば、コスト関数ｇ１が所定の収束条件（例えば、減少量が一定値以下となる）を満たしたときに、収束したと判定する。
（５）ステップ（１）〜ステップ（４）により得た解を候補として保持する。
（６）ステップ（１）〜ステップ（５）を繰り返し、最もコスト関数ｇ１を小さくできた候補基底行列Ｍｗ及び候補係数行列Ｃｗを最終結果として採用する。なお、このステップ（１）〜ステップ（５）の繰り返しはなくてもよいが、複数回繰り返すことで、初期値依存の問題を回避できる。
【００６４】
次に、ステップ（３）における基底行列Ｍｗの更新処理を説明する。基底行列Ｍｗのｊ行目の行ベクトルの要素は、重み行列Ｗのｊ行目の要素のみに依存する。よって、基底行列Ｍｗの各行ベクトルの値は、他の行とは独立して最適化することができるので、基底行列Ｍｗは、行ごとに網羅探索（全探索）を行うことができる。基底行列Ｍｗのｊ行目の行ベクトルは、本実施の形態のように二値分解の場合は２ｋｗ通りしか存在しない（なお、三値分解の場合にも３ｋｗ通りしか存在しない）。よって、これらをすべて網羅的にチェックし、コスト関数ｇ１を最小化する行ベクトルを採用する。これを基底行列Ｍのすべての行ベクトルに対して適用して、基底行列Ｍの要素を更新する。
【００６５】
（第２の分解手法）
第２の分解手法として、係数行列Ｃｗを疎にするデータ非依存型の分解手法を説明する。第２の分解手法では、重み分解部１２は、分解誤差である下式のコスト関数ｇ２を解くことで分解を行う。
【数７】
2018016608.tif 000009
ここで、基底行列Ｍは二値行列であり、Ｍ∈｛−１，１｝Ｄ0×ｋである。また、｜Ｃｗ｜１は、係数行列Ｃｗの要素のＬ１ノルムであり、λはその係数である。
【００６６】
重み分解部１２は、以下の手順で上記のコスト関数ｇ２を解く。
（１）基底行列Ｍｗ及び係数行列Ｃｗをランダムに初期化する。
（２）基底行列Ｍｗの要素を固定して、係数行列Ｃｗの要素を近接勾配法で最適化する。
（３）係数行列Ｃｗの要素を固定して、コスト関数ｇ２が最小になるように全探索で基底行列Ｍの要素を更新する。
（４）収束するまで（２）及び（３）を繰り返す。例えば、コスト関数ｇ２が所定の収束条件（例えば、減少量が一定値以下となる）を満たしたときに、収束したと判定する。
（５）ステップ（１）〜ステップ（４）により得た解を候補として保持する。
（６）ステップ（１）〜ステップ（５）を繰り返し、最もコスト関数ｇ２を小さくできた候補基底行列Ｍｗ及び候補係数行列Ｃｗを最終結果として採用する。なお、このステップ（１）〜ステップ（５）の繰り返しはなくてもよいが、複数回繰り返すことで、初期値依存の問題を回避できる。
【００６７】
第２の分解手法によれば、係数行列Ｃｗを疎にすることができる。係数行列Ｃｗを疎にすることで、式（６）の積ＣｗＴＭｗＴＭｘの計算において、係数行列Ｃｗのゼロ要素にかかわる部分を省略することができ、さらに高速に内積計算を行うことができる。
【００６８】
（第３の分解手法）
次に、第３の分解手法を説明する。第１の分解手法では、コスト関数ｇ１として、分解誤差
【数８】
2018016608.tif 000010
を定義し、この分解誤差を最小化することを考えた。しかしながら、重み行列Ｗを基底行列Ｍｗと係数行列Ｃｗとの積に近似した後に実際に近似をしたいのは、入力ベクトルｘと重み行列Ｗの積ＷＴｘである。
【００６９】
そこで、第３の分解手法では、サンプル入力ベクトルｘをあらかじめＳ個集め、これをまとめたものをＸ∈ＲＤ0×Ｓとする。そして、分解誤差を
【数９】
2018016608.tif 000011
と定義して、これを最小化する。即ち、第３の分解手法では、重み分解部１２は、下式のコスト関数ｇ３を解くことで分解を行う。
【数１０】
2018016608.tif 000012
このコスト関数ｇ３によれば、重み行列Ｗは、実際のデータの分布に従って分解されることになるため、分解の際の近似精度が向上する。
【００７０】
この近似分解は、基底行列Ｍｗを構成する基底ベクトルｍｗ（ｊ）を逐次的に求めることで行うことができる。第３の分解手法の手順は以下のとおりである。
（１）第１又は第２の分解手法によって、基底行列Ｍｗ及び係数行列Ｃｗを求めて、これをそれらの初期値とする。
（２）基底行列Ｍｗの要素を固定して、係数行列Ｃｗの要素を最小二乗法で最適化する。
（３）係数行列Ｃｗの要素を固定して、基底行列Ｍｗの要素を最適化することで、基底行列Ｍｗの要素を更新する。この基底行列Ｍｗの更新処理については後述する。
（４）収束するまで（２）及び（３）を繰り返し、コスト関数ｇ３を最小化した基底行列Ｍｗ及び係数行列Ｃｗを候補として保持する。
（５）ステップ（１）〜（６）を繰り返し、コスト関数ｇ３を最小化した基底行列Ｍｗ及び係数行列Ｃｗを最終結果として採用する。なお、ステップ（１）では再度第１又は第２の分解手法による基底行列Ｍｗ及び係数行列Ｃｗの最適化が行われるので、初期値が変更される。また、ステップ（５）の繰り返しはなくてもよいが、複数回繰り返すことで、初期値依存の問題を軽減できる。
【００７１】
次に、ステップ（３）における基底行列Ｍｗの更新処理を説明する。データ依存分解の場合、基底行列Ｍｗの行ベクトルの値は、もはや他の行と独立せず、依存してしまう。基底行列Ｍｗの要素は、二値又は三値、即ち離散値であるため、基底行列Ｍｗの最適化は、組合最適化問題となる。よって、基底行列Ｍｗの最適化には、例えば、グリーディアルゴリズム（Ｇｒｅｅｄｙ  ａｌｇｏｒｉｔｈｍ）、タブ−サーチ（Ｔａｂｕ  ｓｅａｒｃｈ）、シミュレイテッドアニーリング（Ｓｉｍｕｌａｔｅｄ  ａｎｎｅａｌｉｎｇ）等のアルゴリズムを用いることができる。ステップ（１）でよい初期値が得られているので、これらのアルゴリズムでも良好に分解誤差を最小化できる。
【００７２】
例えばグリーディアルゴリズムを用いる場合は、以下の手順で基底行列Ｍｗを最適化する。
（３−１）基底行列Ｍｗの要素のうち、ランダムにＴ個を選択する。
（３−２）２Ｔ通りの組み合わせ（後述の三値分解の場合は３Ｔ通り）を試し、最もコスト関数ｇ３を最小化したものを採用する。
（３−３）ステップ（３−１）及びステップ（３−２）を収束するまで繰り返す。
【００７３】
（第４の分解手法）
第４の分解手法は、第２の分解手法と第３の分解手法とを組み合わせたものである。具体的には、下式のコスト関数ｇ４を解くことで分解を行う。
【数１１】
2018016608.tif 000013
このコスト関数ｇ４によれば、重み行列Ｗは、実際のデータの分布に従って分解されることになるため、分解の際の近似精度が向上するとともに、係数行列Ｃｗを疎にすることができる。即ち、第２の分解手法のメリットと第３の分解手法のメリットをいずれも得ることができる。具体的な分解の手順は、第３の分解手法と同様である。
【００７４】
第２の実施の形態の分解では、重み行列Ｗをまとめて一括して分解していたので、基底数ｋが大きくなると分解が困難になる。そこで、本実施の形態では、以下のアルゴリズムで実数行列を逐次的に分解してもよい。
【００７５】
図４は、本実施の形態の分割手法において実施されるアルゴリズムのフロー図である。なお、以下の説明において、上記の第１〜第４の分解手法で重み行列Ｗをｋｗ個の基底を持つ基底行列Ｍｗと係数行列Ｃｗとに分解する手順を下式のように表記することとする。
【数１２】
2018016608.tif 000014
【００７６】
まず、重み分解部１２は、分解すべき重み行列Ｗを取得する（ステップＳ４１）。次に、重み分解部１２は、インデクスｊ（ｊ＝１〜Ｎ）を１とし、残差行列Ｒに重み行列Ｗを代入する（ステップＳ４２）。残差行列Ｒは、逐次的な分解によってそれまでに分解された基底行列Ｍｗ（ｊ）と係数行列Ｃｗ（ｊ）との内積の和と重み行列Ｗとの差である。
【００７７】
次に、重み分解部１２は、残差行列Ｒを第１又は第２の実施の形態の手法によって、基底行列Ｍｗと係数行列Ｃｗに分解する（ステップＳ４３）。このとき、基底数はｋｗｊとする。なお、基底数ｋｗ（ｊ）＝ｋｗ（１）、ｋｗ（２）、・・・、ｋｗ（Ｎ）は、あらかじめ重み分解部１２に記憶されている。Ｍｗ（ｊ）Ｃｗ（ｊ）が得られると、重み分解部１２は、もとの残差行列ＲとＭｗ（ｊ）Ｃｗ（ｊ）との差分を新たな残差行列Ｒとし（ステップＳ４４）、インデクスｊをインクリメントし（ステップＳ４５）、インデクスｊがＮより大きいか、即ち、Ｎ段階の逐次的な分解が終了したかを判断する（ステップＳ４６）。
【００７８】
インデクスｊがＮ以下である場合には（ステップＳ４６にてＮＯ）、重み分解部１２は、ステップＳ４３に戻って、ステップＳ４４で得られた新たな残差行列Ｒに対して、ステップＳ４５でインクリメントされた新たなｊで再度分解を行う。以上の処理を繰り返して、インデクスｊがＮより大きくなったら（ステップＳ４６でＹＥＳ）、処理を終了する。なお、上記のように、Ｎ段の基底数ｋｗ（ｊ）＝ｋｗ（１）、ｋｗ（２）、・・・、ｋｗ（Ｎ）は、あらかじめ用意されており、それらは同じ数であっても互いに異なる数であってもよい。また、基底数ｋｗは例えば８程度であればよい。
【００７９】
本実施の形態によれば、分解の基底数ｋｗを増やせば増やすほど、もとの精度に近づけることができる。
【００８０】
図５は、重み行列Ｗを基底数ｋｗの基底行列Ｍｗと係数行列Ｃｗに分解する処理の変形例を説明する図である。この変形例では、図５に示すように、重み行列Ｗのｊ列目のベクトルを個別に分解して、それらをまとめる。このようにベクトルごとに分解することで、分解にかかる計算コストを抑えることができる。個々のベクトルは、上記の第１〜第４の分解手法によって分解すればよい。
【００８１】
ここで、重み行列Ｗのｊ列目の列ベクトルをｗ（ｊ）と表記し、係数行列Ｃｗのｊ列目の列ベクトルをｃｗ（ｊ）と表記する。本実施の形態では、複数の実数ベクトルｗ（ｊ）を並べてなる重み行列Ｗを、複数の基底行列Ｍｗ（ｉ）と、複数の係数ベクトルｃｗ（ｊ）を図５に示すように斜めに並べてなる行列との積の和に分解したものとみなせる。なお、図５において行列のハッチング部分には０が入る。
【００８２】
（入力ベクトルの分解）
次に、入力ベクトルｘの分解について説明する。図６は、入力ベクトルｘを基底数ｋｘの基底行列Ｍｘと係数ベクトルｃｘとの積とバイアスｂｘとに分解する処理の変形例を説明する図である。入力ベクトルｘは、図６及び下式（１２）に示すように分解される。
【数１３】
2018016608.tif 000015
なお、バイアス項ｂｘ１を考慮しているのは、ＲｅＬＵの影響によって、入力ベクトル（マップ）は、非負で、かつバイアスが大きくなるからである。このバイアス項はなくてもよいが、要否は前層の出力に依存することになる。
【００８３】
入力ベクトルｘは、入力情報又は各層において得られるベクトルであるので、本来は、事前に分解をしておくことはできず、後述するニューラルネットワーク装置２０における実行時に分解をしなければならないものである。しかしながら、以下に説明するように、ｃｘ及びｂｘは学習によって事前に決定しておくことができるので、入力事前分解部１３は、ｃｘ及びｂｘを学習によって事前に決定する。これにより、各層において入力ベクトルｘが得られたときに、それに応じてＭｘのみを最適化することで入力ベクトルを分解することができ、処理を高速化できる。本実施の形態では、この入力ベクトルｘに応じたＭｘの最適化も、後述するルックアップテーブルを用いることで高速化する。入力事前分解部１３は、このルックアップテーブルを学習によって事前に決定する処理も行う。以下、順に説明する。
【００８４】
まず、入力ベクトルｘが得られたときにこれを分解する手法を説明する。この分解では、分解誤差を表す下式のコスト関数Ｊｘを解くことで分解を行う。
【数１４】
2018016608.tif 000016
【００８５】
具体的には、以下の手順で上記のコスト関数Ｊｘを解くことができる。
（１）基底行列Ｍｘをランダムに初期化する。
（２）基底行列Ｍｘを固定して、係数ベクトルｃｘの要素及びバイアスｂｘを最小二乗法により最適化することで、コスト関数Ｊｘが最小になるように、係数ベクトルｃｘの要素及び係数ｂｘを更新する。
（３）係数ベクトルｃｘの要素及びバイアスｂｘを固定して、コスト関数Ｊｘが最小になるように全探索で基底行列Ｍｘの要素を更新する。
（４）収束するまで（２）及び（３）を繰り返す。例えば、コスト関数Ｊｘが所定の収束条件（例えば、減少量が一定値以下となる）を満たしたときに、収束したと判定する。
【００８６】
以下では、基底行列Ｍｘが三値行列である場合を例に説明する。ステップ（３）の全探索において、Ｍｘのｊ行目をｍｘ（ｊ）と記載すると、各行は独立に下式（１４）及び図７の要領で全探索により更新できる。
【数１５】
2018016608.tif 000017
【００８７】
各層において、入力ベクトルｘが得られたら上記のコスト関数Ｊｘを解くことでこの入力ベクトルを基底行列Ｍｘと係数ベクトルｃｘに分解できる。しかしながら、実行時にこの分解を各層において行っていたのでは、多大な処理時間を有することになり、例えば車載カメラでの歩行者検知等には実用できない。そこで、本発明者は、以下の点に注目した。
【００８８】
まず、式（１４）において、ｃｘ及びｂｘはｘの値域を決めているとみることができる。また、Ｍｘは、ｃｘ及びｂｘで定められる値域の中で、どの値に相当するかを指示しているとみることができる。ここで、ｘの値域はどの要素も似たようなものであるため、学習時には分解処理装置１０で予めｃｘ及びｂｘのみを決めておき、後述するニューラルネットワーク装置２０での実行時にはＭｘだけを最適化することができる。このようにすることで、実行時の分解を高速化できる。もちろん、ｃｘ、ｂｘ、Ｍｘの３つをいずれも実行時に最適化する方がよいが、実際には上記のようにＭｘだけを最適化しても、十分に実用的である。
【００８９】
Ｍｘだけを最適化すればよいのであれば、結局のところは、実行時には式（１４）のみを計算すればよいことになる。ここで、式（１４）は、３ｋｘ通り（Ｍｘが二値行列の場合は２ｋｘ通り）の（βｃｘ＋ｂｘ）の中から最も近い候補を選ぶ一次元の最近傍探索とみることができる。例えば、ｋｘ＝２，ｃｘ＝（１．３，０．４）Ｔ、ｂｘ＝２．４の場合は、３ｋｘ通りの（βｃｘ＋ｂｘ）は、図８に示すようになる。図９は、図８の各（βｃｘ＋ｂｘ）を数直線上に並べた図である。いま、図９に示すように、入力ベクトルｘのある列ｘｊが２．１であるとすると、図９から明らかなように最も近い候補は、ｍｘ（ｊ）＝（０，−１）であり、これが最適値となる。
【００９０】
図１０は、図９の数直線を等間隔に分割して複数のビンを設定した状態を示す図である。入力事前分解部１３は、図９の数直線を等間隔に分割して設定された複数のビンごとに最適値となるβを規定したルックアップテーブルＬＵＴを作成する。ニューラルネットワーク装置２０では、入力ベクトルｘが得られたときに、それが属するビンを求めてルックアップテーブルＬＵＴを参照することで、非常に高速にｍｘ（ｊ）を求めることができる。
【００９１】
分解結果出力部１４は、重み分解部１２で重み行列Ｗを分解して得られたＭｗ及びＣｗ、及び入力事前分解部１３で得られた係数ベクトルｃｘ及びバイアスｂｘを用いて、式（６）の右辺の第２項及び第３項の和を計算する。上述のように、ｃｘ、ｂｘ、Ｍｗ、及びＣｗは、いずれも重み分解部１２又は入力事前分解部１３にて得られているので、式（６）の右辺の第２項及び第３項の和を計算することが可能である。
【００９２】
分解結果出力部１４は、各ＦＣ層について、式（６）の右辺の第１項を計算するためのｃｘ、Ｍｗ、及びＣｗ、式（６）の右辺の第２項と第３項との和、及びＭｘの各行ベクトルｍｘ（ｊ）を求めるためのルックアップテーブルＬＵＴ（ｊ）（ｊ＝１，・・・，ＤＩ）をニューラルネットワーク装置２０に出力する。
【００９３】
なお、以下では、Ｍｗを「重み基底行列」といい、Ｃｗを「重み係数行列」といい、Ｍｘを「入力基底行列」といい、ｃｘを「入力係数ベクトル」といい、ｂｘを「入力バイアス」という。
【００９４】
図１１は、ニューラルネットワーク装置２０の構成を示す図である。ニューラルネットワーク装置２０は、入力情報取得部２１と、演算部２２と、出力情報出力部２３と、記憶部２４とを備えている。記憶部２４は、ニューラルネットワークモデルが記憶されており、各ＦＣ層について、分解処理装置１０で生成され出力された式（６）の右辺の第１項を計算するための入力係数ベクトルｃｘ、重み基底行列Ｍｗ、及び重み係数行列Ｃｗ、式（６）の右辺の第２項と第３項の和（ｂｘＣｗＴＭｗＴ１＋ｂ）、並びに入力基底行列Ｍｘの各行ベクトルｍｘ（ｊ）を求めるためのルックアップテーブルＬＵＴ（ｊ）（ｊ＝１，・・・，ＤＩ）を分解処理装置１０から取得して記憶している。
【００９５】
入力情報取得部２１には、処理対象となる入力情報が入力される。演算部２２は、記憶部２４からニューラルネットワークモデルを読み出して、入力情報取得部２１にて取得された入力情報を入力層に入力して演算処理を実行し、出力層を得る。
【００９６】
図１２は、ニューラルネットワークモデルのＦＣ層における演算部２２の処理を説明する図である。演算部２２は、少なくとも１つのＦＣ層において、前層の出力ベクトルを入力ベクトルｘとして、この入力ベクトルｘを二値の入力基底行列Ｍｘと実数の入力係数ベクトルｃｘとの積と入力バイアスｂｘに分解して、入力ベクトルｘと重み行列Ｗとの積を求める。具体的には、ＦＣ層において、演算部２２は、前層の出力が得られると、これを入力ベクトルｘとして、式（６）の演算を行うことで、入力ベクトルｘと重み行列Ｗとの積を求める。
【００９７】
図１２に示すように、演算部２２は、まず、記憶部２４から読み出したルックアップテーブルＬＵＴを参照して入力ベクトルｘに対応する二値の入力基底行列Ｍｘを求める。次に、演算部２２は、得られた二値の入力基底行列Ｍｘと、記憶部２４から読み出した重み係数行列Ｃｗ、重み基底行列Ｍｗ、及び入力係数ベクトルｃｘを用いて式（６）の右辺の第１項（ＣｗＴＭｗＴＭｘｃｘ）を計算する。
【００９８】
演算部２２は、上記の計算（ＣｗＴＭｗＴＭｘｃｘ）によって得られた式（６）の右辺の第１項の値と、記憶部２４から読み出した式（６）の右辺の第２項と第３項の和（ｂｘＣｗＴＭｗＴ１＋ｂ）との和（ＣｗＴＭｗＴＭｘｃｘ＋ｂｘＣｗＴＭｗＴ１＋ｂ）を計算する。演算部２２は、さらに、その計算結果を活性化関数（例えば、ＲｅＬＵ）に入力することで、当該層の出力（次の層の入力）を算出する。
【００９９】
演算部２２は、上記のような演算をＦＣ層で実行しつつニューラルネットワークモデルに従って演算を行うことで、最後に出力層を得る。出力層の値は出力情報出力部２３に出力される。出力情報出力部２３は、演算部２２で得られた出力層の値に基づいて、求められている出力情報を出力する。例えば、ニューラルネットワークモデルがクラス分けを行うものである場合には、出力情報出力部２３は、出力情報として出力層における最も尤度の大きいクラスの情報を出力情報として出力する。
【０１００】
これまで述べたように、ニューラルネットワークにおけるＦＣ層において、上記の分解された重み行列Ｗ及び入力ベクトルの分解のためのルックアップテーブルＬＵＴによる省メモリ化及び高速化が有効である。ただし、中間層のＣＯＮＶ層についても、各種のフィルタ（３次元）を並べることで４次元のデータ構造とすることができ、上記の高速化の手法を適用できる。
【０１０１】
図１３及び図１４は、ＣＯＮＶ層の入力マップと出力マップとの関係を示す図である。図１３及び図１４において、左側が入力マップＩＭであり、右側が出力マップＯＭであり、入力マップに適用されている直方体が３次元のフィルタＦ１、Ｆ２である。フィルタＦ１とフィルタＦ２とは、異なるフィルタであって、このように互いに異なるフィルタがＣｏｕｔ個用意されている。出力マップ１枚分の演算量は、（ｆｈｆｗＣｉｎ）×（ＨＷ）となり、すべてのフィルタについて合算すると、（ｆｈｆｗＣｉｎ）×（ＨＷ）×Ｃｏｕｔとなり、本実施の形態を適用しない場合には演算量が非常に多くなる。
【０１０２】
このような場合でも、図１５に示すように、各フィルタを列ベクトルとしてそれらを行方向に並べて重み行列Ｗを生成する。これにより、ＣＯＮＶ層もＦＣ層とみなすことができ、上記の省メモリ・高速な演算が可能となる。
【０１０３】
表１は、本実施の形態のニューラルネットワーク装置２０において各ＦＣ層で必要な演算量を従来技術と比較した表である。
【表１】
2018016608.tif 000018
表１においてＢは、論理演算を実施する変数（レジスタ）のビット幅である。ＤＩ，ＤＯが数百〜数千のオーダであるのに対して、上述のように、ｋｘは２〜４程度であり、ｋｗはＤＯ／８〜ＤＯ／４程度であるので、本実施の形態では従来技術と比較して演算量は減少している。
【０１０４】
表２は、本実施の形態のニューラルネットワーク装置２０において各ＦＣ層におけるメモリの消費量を従来技術と比較した表である。
【表２】
2018016608.tif 000019
表２では、実数として単精度実数（３２ビット）を用いている。表２から明らかなように、本実施の形態では、従来技術と比較してメモリの消費量が減少している。
【０１０５】
本実施の形態の分割処理装置１０及びニューラルネットワーク装置２０によれば、ＦＣ層におけるメモリの消費量を小さくでき、かつ演算量を小さくできるので、ニューラルネットワークの層数が多く（深層ニューラルネットワーク）、上記の省メモリ・高速な演算を複数の層で適用できる場合に、本実施の形態が特に有効である。
【０１０６】
なお、上記の分解処理装置１０及びニューラルネットワーク装置２０は、それぞれ、記憶装置、メモリ、演算処理装置等を備えたコンピュータがプログラムを実行することで実現される。上記の実施の形態では、分解処理装置１０とニューラルネットワーク装置２０とを別々の装置として説明したが、これらの装置が同一のコンピュータによって構成されていてもよい。
【０１０７】
また、上述のように、予めｃｘ及びｂｘのみを決めておき、ニューラルネットワーク装置２０での実行時にはＭｘだけを最適化することで、実行時の入力ベクトルの分解を高速化できる。上記の実施の形態では、最適入力基底探索手法として、複数のビンごとにｍｘ（ｊ）を最適化するβを規定したルックアップテーブルＬＵＴを作成してニューラルネットワーク装置２０に記憶しておき、ニューラルネットワーク装置２０で入力ベクトルｘが得られたときに、各要素ｘｊについて、それが属するビンを求めてルックアップテーブルＬＵＴを参照して最適なβを求めるという手法で規定行列Ｍｘを求めた。
【０１０８】
最適入力基底探索手法は、上記に限られない。以下では、最適入力基底探索手法の変形例を説明する。以下の説明では、基底行列Ｍｘが二値行列である場合を例に説明する。まず、入力事前分解部１３は、ｍｘ（ｊ）のすべての候補βについて（βｃｘ＋ｂｘ）を計算する。例えば、ｋｘ＝４、ｃｘ＝（３．８，８．６，１．２，０．４）Ｔ、ｂｘ＝１５．２の場合は、２ｋｘ通り（本例では、ｋｘ＝４なので、２ｋｘ＝２４＝１６通り）のβについて得られる（βｃｘ＋ｂｘ）は図１７に示すようになる。以下、各βについて、（βｃｘ＋ｂｘ）の計算によって得られた値をプロトタイプｐという。
【０１０９】
次に、入力事前分解部１３は、プロトタイプｐをその値の大きさでソート（並び替え）する。図１８は、図１７の例について、プロトタイプｐの値でソートした結果を示している。このように並び替えたときのプロトタイプの値が小さい方から順に添え字１，２，・・・，１６を付して、ｐ１，ｐ２，・・・，ｐ１６と表記する。また、各プロトタイプｐｉ（ｉ＝１〜１６）に対応するβをβｉ（ｉ＝１〜１６）と表記する。
【０１１０】
入力事前分解部１３は、次に、ソートされたプロトタイプｐｉについて、隣り合うプロトタイプ間の中点ｍｐｉ（ｉ＝１〜１５）を求める。図１９は、図１８の各（βｃｘ＋ｂｘ）を数直線上に並べるとともに、それらの中点ｍｐｉ（ｉ＝１〜１５）を示した図である。なお、ｍｐｉ＝（ｐｉ＋ｐｉ＋１）／２である。
【０１１１】
入力ベクトルの各要素の値ｘｊに対してアサインすべきβは、図２０に示すように、中点ｍｐｉを境界にして定義できる。例えば、図２１に示すように、ｘｊ＝５．８に対しては、β４（−１，−１，１，１）を割り当てることができる。この割り当てをニューラルネットワーク装置２０の演算部２２で行う場合には、二分探索法を用いることができる。
【０１１２】
図２２は、本変形例のニューラルネットワーク装置２０の構成を示す図である。本変形例では、上記の実施の形態のニューラルネットワーク装置２０と比較すると、ルックアップテーブルＬＵＴの代わりに、入力ベクトルｘの各要素ｘｊについて、後述する二分木（図２７）を構成するための情報βｉ（ｉ＝１，・・・，２ｋｘ）及びｍｐｉ（ｉ＝１，・・・，２ｋｘ−１）を記憶している。
【０１１３】
演算部２２は、まず、図２３に示すように、隣接するプロトタイプの中点ｍｐｉのうち、中央の中点（本例の場合にはｍｐ８）とｘｊとを比較する。本例（ｘｊ＝５．８）の場合には、ｘｊ＜ｍｐ８であるため、解はβ１，・・・，β８のいずれかであることが分かる。演算部２２は、次に、図２４に示すように、残った候補β１，・・・，β８を２つに分ける中点ｍｐｉ（本例の場合にはｍｐ４）とｘｊとを比較する。本例（ｘｊ＝５．８）の場合には、ｘｊ＜ｍｐ４であるため、解はβ１，・・・，β４のいずれかであることが分かる。
【０１１４】
演算部２２は、次に、図２５に示すように、残った候補β１，・・・，β４を２つに分ける中点ｍｐｉ（本例の場合にはｍｐ２）とｘｊとを比較する。本例（ｘｊ＝５．８）の場合には、ｘｊ＞ｍｐ２であるため、解はβ３又はβ４であることが分かる。演算部２２は、最後に、図２６に示すように、残った候補β３，β４を２つに分ける中点ｍｐｉ（本例の場合にはｍｐ３）とｘｊとを比較する。本例（ｘｊ＝５．８）の場合には、ｘｊ＞ｍｐ３であるため、解はβ4であることが分かる。
【０１１５】
以上のようにして、演算部２２は、４回の比較演算によって解を求めることができる。図２７は、上記の二分木探索法を示す図である。一般的には、演算部２２は、ビット数分（ｋｘ回）だけの比較をすれば最終的に解を得ることができる。演算部２２は、すべてのβｉ（ｉ＝１，・・・，２ｋｘ）と中点ｍｐｉ（ｉ＝１，・・・，２ｋｘ−１）をメモリ上に保持しておけばよい。入力基底行列Ｍｘが三値行列であるときは、すべてのβｉ（ｉ＝１，・・・，３ｋｘ）と中点ｍｐｉ（ｉ＝１，・・・，３ｋｘ−１）をメモリ上に保持しておけばよい。
【０１１６】
このように、本変形例によれば、ｋｘ回の比較演算をするだけで、高速に最適なβを求めることができるとともに、メモリの消費量も小さくできる。
【０１１７】
なお、上記の実施の形態及びその変形例では、重み行列が実数行列である場合を説明したが、重み行列がもともと二値又は三値の要素で構成されている場合には、重み行列の分解は不要である。この場合には、入力ベクトルのみを二値又は三値の基底行列と実数の係数ベクトルとの積とバイアスとの和に分解すればよい。このように、重み行列がもともと二値又は三値であるニューラルネットワークは、例えば、M. Courbariaux, Y. Bengio, and J.P. David. BinaryConnect: Training deep neural networks with binary weights during propagations. In NIPS, pp. 3105-3113, 2015.やF. Li and B. Liu. Ternary weight networks. Technical Report arXiv:1605.04711, 2016.に紹介されている。
【０１１８】
入力ベクトルを基底行列と実数ベクトルに分解することで、演算量を少なくして演算を高速化できる。
【０１１９】
上記の実施の形態及びその変形例のニューラルネットワーク装置２０は、画像認識、音声認識、自然言語処理等のあらゆる分野で応用が可能であり、例えば、車載センサの検出値を入力情報として、車両の周辺の物体を認識する装置として応用可能である。図２８は、ニューラルネットワーク装置２０を含む車両制御システムの構成を示すブロック図である。車両制御システム１００は、ニューラルネットワーク装置２０と、車載センサ３０と、車両制御装置４０とを備えている。
【０１２０】
車載センサ３０は、センシングを行うことでニューラルネットワーク装置の入力装置に入力される入力情報を取得する。車載センサ３０は、例えば、単眼カメラ、ステレオカメラ、マイク、ミリ波レーダであってよい。これらの検出値はそのまま入力情報としてニューラルネットワーク装置２０に入力してもよいし、これらの検出値に対して情報処理を行って入力情報を生成してニューラルネットワーク装置２０に入力してもよい。
【０１２１】
ニューラルネットワーク装置２０は、特定種類の物体（例えば、人物、車両等）を検出して矩形枠で囲うものであってよいし、画素ごとにどのクラスに属しているかを判断するもの（セマンティックセグメンテーション）であってもよいし、他の認識処理を行うものであってもよい。
【０１２２】
また、車両制御装置４０は、ニューラルネットワーク装置の出力（認識結果）に基づいて、車両の制御を行う。車両制御は、車両の自動運転であってもよいし、車両の運転アシスト（例えば、衝突危険時の強制制動、レーンキーピング等）であってもよいし、車両のドライバへの情報提供（例えば、認識結果の提示、認識結果に基づく危険判断の結果の報知等）であってもよい。
【図１】
2018016608.tif 000020
【図２】
2018016608.tif 000021
【図３】
2018016608.tif 000022
【図４】
2018016608.tif 000023
【図５】
2018016608.tif 000024
【図６】
2018016608.tif 000025
【図７】
2018016608.tif 000026
【図８】
2018016608.tif 000027
【図９】
2018016608.tif 000028
【図１０】
2018016608.tif 000029
【図１１】
2018016608.tif 000030
【図１２】
2018016608.tif 000031
【図１３】
2018016608.tif 000032
【図１４】
2018016608.tif 000033
【図１５】
2018016608.tif 000034
【図１６】
2018016608.tif 000035
【図１７】
2018016608.tif 000036
【図１８】
2018016608.tif 000037
【図１９】
2018016608.tif 000038
【図２０】
2018016608.tif 000039
【図２１】
2018016608.tif 000040
【図２２】
2018016608.tif 000041
【図２３】
2018016608.tif 000042
【図２４】
2018016608.tif 000043
【図２５】
2018016608.tif 000044
【図２６】
2018016608.tif 000045
【図２７】
2018016608.tif 000046
【図２８】
2018016608.tif 000047
【国際調査報告】
2018016608.tif 000048
2018016608.tif 000049
2018016608.tif 000050
2018016608.tif 000051