(57)【要約】【課題】ニューラルネットワークを使った推定装置において、膨大な回数の計算処理を行うことなく、推定結果の不確かさを表す分散値の計算を高速に行う。【解決手段】入力データの一部を欠損させるドロップアウト層と、重みの計算を行うＦＣ層又はコンボリューション層との組み合わせからなる一体化層を持つとともに、一体化層の前及び後の少なくとも一方に非線形関数を用いた計算を行う活性化層を持つニューラルネットワークにおいて、データ解析部３０が、活性化層に入力される多変量分布に係るデータを参照して、活性化層における計算を経て活性化層から出力される多変量分布の分散値をゼロに設定することができるか否かを判断し、推定計算部２０が、一体化層で計算を行う際に、データ解析部で分散値をゼロに設定することができると判断された多変量分布に関連した計算をスキップする。【選択図】図８
2019070950.tif 000002
【特許請求の範囲】
【請求項１】
入力データの一部を欠損させるドロップアウト層と、重みの計算を行うＦＣ層又はコンボリューション層との組み合わせからなる一体化層を持つとともに、前記一体化層の前及び後の少なくとも一方に非線形関数を用いた計算を行う活性化層を持つニューラルネットワークを用いて推定処理を行う情報推定装置であって、
前記活性化層に入力される多変量分布に係るデータを参照して、前記活性化層における計算を経て前記活性化層から出力される多変量分布の分散値をゼロに設定することができるか否かを判断するデータ解析部と、
前記推定処理において前記一体化層で計算を行う際に、前記データ解析部で前記分散値をゼロに設定することができると判断された多変量分布に関連した計算をスキップする推定処理部とを、
有する情報推定装置。
【請求項２】
前記データ解析部は、前記活性化層に入力される多変量分布が負の領域に偏っている場合に、前記活性化層から出力される多変量分布の分散値をゼロに設定することができると判断するよう構成されている請求項１に記載の情報推定装置。
【請求項３】
前記推定処理部は、前記活性化層の前に配置された前記一体化層において、２つの分散値を用いて共分散値を計算する場合に、前記２つの分散値のうちの少なくとも一方が、前記データ解析部で前記分散値をゼロに設定することができると判断された多変量分布に係るデータに関連している場合には、前記２つの分散値を用いて計算される前記共分散値の計算をスキップするよう構成されている請求項１又は２に記載の情報推定装置。
【請求項４】
前記推定処理部は、前記活性化層に入力される多変量分布の分散値及び共分散値がゼロに設定されたか否かを記録するよう構成されている請求項１から３のいずれか１つに記載の情報推定装置。
【請求項５】
前記推定処理部は、前記活性化層の後に配置された前記一体化層において、前記一体化層に入力される多変量分布の分散値及び共分散値から、前記一体化層から出力される多変量分布の分散値を計算する場合に、前記活性化層に入力される多変量分布の分散値及び共分散値がゼロに設定されているデータに係る計算をスキップするよう構成されている請求項１から４のいずれか１つに記載の情報推定装置。
【請求項６】
前記推定処理部は、前記活性化層の後に配置された前記一体化層から出力される多変量分布の分散値を計算する場合に、前記一体化層から出力される多変量分布の分散値が所定の閾値より大きくなると判断した時点で計算処理を終了するよう構成されている請求項１から５のいずれか１つに記載の情報推定装置。
【請求項７】
入力データの一部を欠損させるドロップアウト層と、重みの計算を行うＦＣ層又はコンボリューション層との組み合わせからなる一体化層を持つとともに、前記一体化層の前及び後の少なくとも一方に非線形関数を用いた計算を行う活性化層を持つニューラルネットワークを用いて推定処理を行う情報推定方法であって、
前記活性化層に入力される多変量分布に係るデータを参照して、前記活性化層における計算を経て前記活性化層から出力される多変量分布の分散値をゼロに設定することができるか否かを判断するデータ解析ステップと、
前記推定処理において前記一体化層で計算を行う際に、前記データ解析ステップで前記分散値をゼロに設定することができると判断された多変量分布に関連した計算をスキップする推定処理ステップとを、
有する情報推定方法。
【請求項８】
前記データ解析ステップは、前記活性化層に入力される多変量分布が負の領域に偏っている場合に、前記活性化層から出力される多変量分布の分散値をゼロに設定することができると判断するステップを更に有する請求項７に記載の情報推定方法。
【請求項９】
前記推定処理ステップは、前記活性化層の前に配置された前記一体化層において、２つの分散値を用いて共分散値を計算する場合に、前記２つの分散値のうちの少なくとも一方が、前記データ解析部で前記分散値をゼロに設定することができると判断された多変量分布に係るデータに関連している場合には、前記２つの分散値を用いて計算される前記共分散値の計算をスキップするステップを更に有する請求項７又は８に記載の情報推定方法。
【請求項１０】
前記推定処理ステップは、前記活性化層に入力される多変量分布の分散値及び共分散値がゼロに設定されたか否かを記録するステップを更に有する請求項７から９のいずれか１つに記載の情報推定方法。
【請求項１１】
前記推定処理ステップは、前記活性化層の後に配置された前記一体化層において、前記一体化層に入力される多変量分布の分散値及び共分散値から、前記一体化層から出力される多変量分布の分散値を計算する場合に、前記活性化層に入力される多変量分布の分散値及び共分散値がゼロに設定されているデータに係る計算をスキップするステップを更に有する請求項７から１０のいずれか１つに記載の情報推定方法。
【請求項１２】
前記推定処理ステップは、前記活性化層の後に配置された前記一体化層から出力される多変量分布の分散値を計算する場合に、前記一体化層から出力される多変量分布の分散値が所定の閾値より大きくなると判断した時点で計算処理を終了するステップを更に有する請求項７から１１のいずれか１つに記載の情報推定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークを用いた推定処理を行う情報推定装置及び情報推定方法に関する。特に、本発明は、ニューラルネットワークにドロップアウト層を設け、さらに活性化層での近似計算をすることによって、推定結果の不確かさを表す分散値を高速に計算する情報推定装置及び情報推定方法である。なお、推定結果として出力される推定値の分散値が大きければ、推定結果が不確かであり（すなわち、信頼性が低い）、推定結果として出力される推定値の分散値が小さければ、推定結果が確かである（すなわち、信頼性が高い）と言える。
【背景技術】
【０００２】
ニューラルネットワーク（ＮＮ： Neural Network）を用いた推定器は、他の推定器と比べ、画像やセンサー信号データなど、大量の情報を入力データとして処理し、推定を行うことができることから様々な分野への応用に期待されている。
【０００３】
ニューラルネットワークはデータを処理する層が配列された構造になっており、各層ではデータが入力されて、その層に設定された計算が行われた後に、処理後のデータが出力されるよう構成されている。具体的には、観測物からの入力データは、まずニューラルネットワークの入力層に入力されて処理が行われた後に出力され、その後、それぞれの層（中間層）に順番に入力データとして入力されて処理が行われた後に出力されながら、各層における処理が繰り返されて、ニューラルネットワーク内をデータが伝搬していく。そして、最後の層である出力層からデータが出力され、それが推定結果となる。なお、観測物からの入力データは、推定したい観測対象のｎ次元のベクトルデータであり、例えば、縦横１０ピクセルの白黒カメラ画像であれば、各ピクセルに対応した要素を持つ１０×１０＝１００次元（すなわち、ｎ＝１００）のベクトルデータとなる。
【０００４】
ニューラルネットワークの各層では、入力されるベクトルデータの次元数と、出力されるベクトルデータの次元数とが異なるように設定可能である。すなわち、ベクトルデータは各層を通るたびに、その次元数が増えたり減ったりする。また、出力層から出力されるベクトルデータの次元数は、設計者の推定させたい内容によって異なる。例えば、「速度」や「点数」という値を推定させたい場合は、出力層からの出力はｎ＝１次元のスカラーデータとなる。あるいは、入力画像から、その入力画像が「歩行者」、「自動車」、「自転車」のいずれであるかを分類させたい場合（すなわち、３クラスの分類をさせたい場合）には、出力層からの出力は、上記３クラスのうちのいずれに該当するのかを表す「点数」を格納する、ｎ＝３次元のベクトルデータとなる。
【０００５】
また、ニューラルネットワークを用いて推定処理を行う推定器で実行される処理として、学習フェーズと推定フェーズとが存在する。
【０００６】
学習フェーズでは、設計者は、学習データを使い、特定のパターンを持つ入力データに対し望むような特定の出力を出すよう、ニューラルネットワーク内のニューロンの重みを計算して学習させる。
【０００７】
推定フェーズでは、見たことのない新しいデータ、つまりテストデータを、学習フェーズで学習されたルールを持つニューラルネットワークに入力して推定させ、上手く学習ができていれば、学習した概念に従って推定結果を出す。
【０００８】
ニューラルネットワークを使用した従来の推定器が他のベイズ推定などの確率的手法を使った推定器と大きく異なる点としては、ニューラルネットワークでは推定結果が「値」として出力されるのみであり、推定結果の不確かさを表す分散値が計算できないことが挙げられる。
【０００９】
ニューラルネットワークでは、不確かさを表す分散値が計算できないため、閾値を設定してあるレベル以上の信頼できる推定結果のみを採用するなどの設定を行うことが困難であり、誤判定の可能性を多く含んでしまう可能性がある。例えば、自動車の周囲の状況を推定するなどのような、高い安全性が求められる環境下でニューラルネットワークを使用場合、その推定結果に誤判定が含まれている場合には、重大な事故につながってしまうおそれがある。
【００１０】
これに対し、下記の非特許文献１には、ニューラルネットワークにおいて、出力値とその分散値とを計算する方法が提案されている。以下、非特許文献１に開示されている計算方法について説明する。
【００１１】
非特許文献１における分散値の計算方法は、本来は学習時に過学習を防ぐために用いられるドロップアウト（ｄｒｏｐｏｕｔ）を推定時にも使用することで、推定結果の分散を計算するものである。ドロップアウトとは、例えば下記の特許文献１に開示されているように、ニューラルネットワークの層の中にドロップアウト層を設け、そのドロップアウト層に入力されるベクトルデータの各要素に対して独立に、設計者が事前に決めたある確率ｐdropでゼロにする手法である。
【００１２】
例えば、入力ベクトルデータが１００次元、すなわち１００個の要素からなる場合には、それぞれの要素に含まれる値に対して独立に、確率ｐdropでゼロにするかしないか（ゼロにしない場合には元の要素に含まれる値は変更されない）をそれぞれ判断する。結果的に、統計的には１００個の要素のうちの１００×ｐdropの個数の要素がゼロの値となる。すなわち、ドロップアウトでは、確率ｐdropに対応した個数の要素が欠損（ゼロに設定）した状態で計算処理を行う。
【００１３】
学習時には、確率ｐdropで要素が欠損した状態で計算された出力結果が、希望する正解データに対して差分が最小となるように重みを計算する。また、学習時には、この計算を何度も繰り返す。すなわち、ドロップアウト層に入力される別のベクトルデータの各要素に対して独立に、確率ｐdropでゼロにするかしないかを新たに判断し、別のベクトルデータに関し、確率ｐdropに対応した個数の要素が欠損した状態で計算処理を行って、希望する正解データに対して差分が最小となるように重みを計算する。このように入力されるベクトルデータに対してドロップアウトを使用した学習を繰り返すことによって、ベクトルデータのいかなる要素が欠損していても、同一の正解データを推定結果として出力できるように学習が行われる。
【００１４】
このドロップアウトを使用した計算方法は、従来、学習時のみに適用されていた。すなわち、従来は、学習時にはドロップアウトを使用することがあったが、推定時にはドロップアウトを使用することはなかった。
【００１５】
ところが、非特許文献１では、あえて、推定計算の場合にも、同一の対象物からの入力ベクトルデータに対し、ドロップアウトをさせたまま推定計算を何度も繰り返し行うことで、出力値とともに、その分散値を計算する手法が導入されている。非特許文献１では、このドロップアウトを使用した推定は、モンテカルロ（ＭＣ：Monte Carlo）ドロップアウトと呼ばれる。ドロップアウト層で確率ｐdropでゼロとなる入力ベクトルデータの要素群のパターンは、欠損により毎回推定計算するごとに異なるため、その後の層を通った最終的な推定結果も毎回異なる。なお、本明細書では、ベクトルデータが入力されるたびに、出力される推定結果が異なることを、推定結果が「揺れる」と表現することがある。
【００１６】
１回の計算で得られた出力値の様子を図１（ａ）に示し、何度も計算を繰り返して得られた出力値に関して分布が生じる様子を図１（ｂ）に示す。図１（ａ）には、１回の計算によって得られた出力値が、グラフ（横軸は値を表す）上にプロットされた様子が示されている。また、図１（ｂ）には、複数回（ここでは１０回）の計算によって得られた出力値が、グラフ（横軸は値を表し、縦軸は模式的に度数を表す）上にプロットされた様子が示されている。
【００１７】
さらに、図１（ｂ）に示されている出力値の分布を値ごとに度数としてカウントし、ヒストグラムによって表現した様子を図１（ｃ）に示す。図１（ｃ）には、図１（ｂ）で表されている分布の様子が、出力値の大きさ（横軸）とその度数（縦軸）の関係を示すヒストグラムで表現されている。このように何度の試行を繰り返すことで、出力値の分布を得ることができ、図１（ｃ）には、統計処理によって得られる、推定値の確率密度分布のグラフ（図１（ｃ）中の点線で描かれたグラフ）、平均値、推定分散値も示されている。なお、本明細書では、このように何度も試行を繰り返して確率密度分布を得ることを、「モンテカルロ的に計算する」と表現することがある。
【００１８】
非特許文献１では、ＭＣ回計算を繰り返し、毎回変化する最終出力ベクトルデータの値をＭＣ個（〜２００個ほど）集め、以下の式によって、それらの値の分散値を計算している。この式によって得られる分散値は、入力データに対する不確からしさとして定義される。
【００１９】
【数１】
2019070950.tif 000003
【００２０】
上記の式において、ｘ*が入力、ｙ*が出力、Ｔが計算回数（すなわち、Ｔ＝ＭＣ）であり、左辺が出力ｙ*の分散値である。上記の式のように、左辺（分散値）は、初期分散に関する定数項τ-1ＩD（右辺第１項）と、出力ｙ*の分散値（右辺第２項）から出力y*の平均の２乗（右辺第３項）を引いた値の和で表される。
【００２１】
この計算を直感的な表現で言えば、同一対象物に対するニューラルネットワークの推定値を何度も計算し、そのたびにドロップアウト層の入力ベクトルデータの値をランダムにゼロにして、ベクトルデータの要素群にランダムな欠損を作ることで、ドロップアウト層からの出力データを意図的に揺らすようにしている。このようにドロップアウト層からの出力データを意図的に揺らした場合であっても、出力層から出力される最終的な推定結果が揺れない場合、すなわち分散が小さい場合には、ニューラルネットワークはその推定値に対して信頼性が高いと考えることができる。一方、逆に出力層から出力される最終的な推定結果が大きく揺れる場合、すなわち分散が大きい場合には、ニューラルネットワークはその推定値に対して信頼性が低いと考えることができる。
【先行技術文献】
【特許文献】
【００２２】
【特許文献１】国際公開公報ＷＯ２０１４１０５８６６Ａ１
【非特許文献】
【００２３】
【非特許文献１】“Dropout as a Bayesian Approximation: Representing Model Uncertainty in Deep Learning”, Yarin Gal, Zoubin Ghahramani：２０１５年６月６日（https://arxiv.org/pdf/1506.02142v1.pdfから取得可能）
【発明の概要】
【発明が解決しようとする課題】
【００２４】
しかしながら、上述のように、ある１つの観測対象に対して分散値を得るためには、ニューラルネットワークのドロップアウト層以降の計算を繰り返し何度も行わなければならない。例えば、この計算回数はＭＣ回（〜２００回ほど）必要となる。計算回数を少なくした場合には、出力値の確率密度分布に関して滑らかな分布形状が得られず、正確に分散値を見積もることが困難である。一方、計算回数を多くするとより正確な分散値を見積もることが可能となるが、膨大な計算回数は、計算処理に時間及び手間がかかるため、実用上計算処理にとって大きな負担となるという課題がある。
【００２５】
上記の課題を解決するため、本発明は、膨大な回数の計算処理を行うことなく、推定結果の不確かさを表す分散値の計算を高速に行うことが可能な、ニューラルネットワークを用いて推定処理を行う情報推定装置及び情報推定方法を提供することを目的とする。
【課題を解決するための手段】
【００２６】
上記の目的を達成するため、本発明によれば、入力データの一部を欠損させるドロップアウト層と、重みの計算を行うＦＣ層又はコンボリューション層との組み合わせからなる一体化層を持つとともに、前記一体化層の前及び後の少なくとも一方に非線形関数を用いた計算を行う活性化層を持つニューラルネットワークを用いて推定処理を行う情報推定装置であって、
前記活性化層に入力される多変量分布に係るデータを参照して、前記活性化層における計算を経て前記活性化層から出力される多変量分布の分散値をゼロに設定することができるか否かを判断するデータ解析部と、
前記推定処理において前記一体化層で計算を行う際に、前記データ解析部で前記分散値をゼロに設定することができると判断された多変量分布に関連した計算をスキップする推定処理部とを、
有する情報推定装置が提供される。
【００２７】
また、上記の目的を達成するため、本発明によれば、入力データの一部を欠損させるドロップアウト層と、重みの計算を行うＦＣ層又はコンボリューション層との組み合わせからなる一体化層を持つとともに、前記一体化層の前及び後の少なくとも一方に非線形関数を用いた計算を行う活性化層を持つニューラルネットワークを用いて推定処理を行う情報推定方法であって、
前記活性化層に入力される多変量分布に係るデータを参照して、前記活性化層における計算を経て前記活性化層から出力される多変量分布の分散値をゼロに設定することができるか否かを判断するデータ解析ステップと、
前記推定処理において前記一体化層で計算を行う際に、前記データ解析ステップで前記分散値をゼロに設定することができると判断された多変量分布に関連した計算をスキップする推定処理ステップとを、
有する情報推定方法が提供される。
【発明の効果】
【００２８】
本発明は、ニューラルネットワークによる推定技術に関し、膨大な回数の計算処理を行うことなく、推定結果の不確かさを表す分散値の計算を高速に行うことができるようになるという効果を有し、ニューラルネットワークによる推定結果に対する信頼性を迅速かつ容易に判断することが可能となる。また、本発明によれば、信頼性に応じて推定結果を採用するか否かの判断や、他のベイズ推定などによる推定結果との融合を行うか否かの判断などが可能となり、ニューラルネットワークの適用範囲を大きく広げることができる。
【図面の簡単な説明】
【００２９】
【図１】ニューラルネットワークを使用した従来の推定器から得られる出力値を示すグラフであり、（ａ）は、１回の計算で得られた出力値の様子を示すグラフであり、（ｂ）は、複数回の計算で得られた出力値の様子を示すグラフであり、（ｃ）は、複数回の計算で得られた出力値のヒストグラムを示すグラフである。
【図２】本発明の実施の形態の前提となる推定計算が扱うニューラルネットワークの部分的構造の一例を示す図であり、（ａ）は、ＤＦ１層と活性化層とＤＦ２層とにより構成されたニューラルネットワークの一例を示す図、（ｂ）は、ＤＦ１層と活性化層により構成されたニューラルネットワークの一例を示す図、（ｃ）は、活性化層とＤＦ２層により構成されたニューラルネットワークの一例を示す図である。
【図３】本発明の実施の形態の前提となる推定計算において、ＤＦ１層の計算処理を模式的に示す図である。
【図４】本発明の実施の形態の前提となる推定計算において、ＤＦ２層の計算処理を模式的に示す図である。
【図５】本発明の実施の形態の前提となる推定計算において、ＤＦ１層での平均値及び分散値の計算処理の一例を示すフローチャートである。
【図６】本発明の実施の形態の前提となる推定計算において、ＤＦ１層での共分散値の計算処理の一例を示すフローチャートである。
【図７】本発明の実施の形態の前提となる推定計算において、ＤＦ２層での平均値及び分散値の計算処理の一例を示すフローチャートである。
【図８】本発明の第１の実施の形態における情報推定装置の構成の一例を示すブロック図である。
【図９】本発明の第１の実施の形態において、活性化関数として用いられるＲｅＬＵ関数に関連したグラフであり、（ａ）は、活性化関数として用いられるＲｅＬＵ関数の一例を示すグラフ、（ｂ）は、活性化関数に入力される分布（負の領域に偏った分布）の一例を示すグラフ、（ｃ）は、活性化関数に入力される分布が負の領域に偏った分布である場合における活性化関数からの出力の一例を示すグラフ、（ｄ）は、活性化関数に入力される分布（正の領域に偏った分布）の一例を示すグラフ、（ｅ）は、活性化関数に入力される分布が正の領域に偏った分布における活性化関数からの出力の一例を示すグラフである。
【図１０】本発明の第１の実施の形態において、活性化関数として用いられるシグモイド関数に関連したグラフであり、（ａ）は、活性化関数として用いられるシグモイド関数の一例を示すグラフ、（ｂ）は、活性化関数に入力される分布（負の領域に偏った分布）の一例を示すグラフ、（ｃ）は、活性化関数に入力される分布が負の領域に偏った分布である場合における活性化関数からの出力の一例を示すグラフ、（ｄ）は、活性化関数に入力される分布（正の領域に偏った分布）の一例を示すグラフ、（ｅ）は、活性化関数に入力される分布が正の領域に偏った分布である場合における活性化関数からの出力の一例を示すグラフである。
【図１１】本発明の第１の実施の形態において、負の領域に偏った分布が活性化層に入力された場合に、その出力がデルタ関数で近似される様子を模式的に示す図である。
【図１２】本発明の第１の実施の形態において、ガウス分布が負の領域に偏っていると判断する基準の一例を説明するための図である。
【図１３】本発明の第１の実施の形態において、分散値と共分散値との関係を説明するための図であり、（ａ）は、２つのインデックスに関する分散値が両方共ゼロではない場合に、これらの共分散値はある広がりを持った分布をなす様子を示す図、（ｂ）は、２つのインデックスに関する分散値の一方がゼロの場合に、これらの共分散値はゼロになることを示す図、（ｃ）は、２つのインデックスに関する分散値の両方がゼロの場合に、これらの共分散値はゼロになることを示す図である。
【図１４】本発明の第１の実施の形態において、ＤＦ１層での平均値及び分散値の計算処理の一例を示すフローチャートである。
【図１５】本発明の第１の実施の形態において、ＤＦ１層での共分散値の計算処理の一例を示すフローチャートである。
【図１６】本発明の第１の実施の形態において、ＤＦ２層での平均値及び分散値の計算処理の一例を示すフローチャートである。
【図１７】本発明の第１の実施の形態における提案手法を用いて得られた実験結果、及び、他の手法を用いた場合の実験結果（本発明の実施の形態の前提となる推定計算を用いた実験結果、非特許文献１で提案された技術を用いた実験結果）を示すグラフである。
【発明を実施するための形態】
【００３０】
以下、本発明の第１及び第２の実施の形態について説明する。
【００３１】
まず、本発明の第１及び第２の実施の形態の前提となるニューラルネットワークの推定計算（以下、本発明の実施の形態の前提となる推定計算、と記載する）の概要について説明する。本発明の実施の形態の前提となる推定計算は、本願と同一の発明者によって発明されたものであり、本出願人が先に出願した特願２０１６−２５２８１３号の明細書及び図面に記載されたものと同様である。なお、特願２０１６−２５２８１３号は本願の出願時には未公開であり、本発明に対する従来技術を構成するものではない。
【００３２】
本発明の実施の形態の前提となる推定計算は、上述の非特許文献１で提案されたモンテカルロ的に分散値を計算する手法における計算処理の負担（膨大な計算回数に伴う時間及び手間）を軽減するために想到されたものであり、分散値の計算を解析的に行うものである。
【００３３】
非特許文献１で提案されている推定計算は、ニューラルネットワークの推定計算時にモンテカルロ的にドロップアウトを用いてランダムな計算結果を繰り返し生成し、それらの計算結果を統計的に集計して出力値の分布を構築し、そこから分散値を求めるという手法を用いている。この場合、計算の繰り返し回数ＭＣは、経験的には最低でもＭＣ＝２００回以上とする必要があり、これよりも少ない場合には正確な分布形状や分散値を出すことができない。それに対し、本発明の実施の形態の前提となる推定計算では、モンテカルロ的な繰り返し計算を行うことなく、繰り返し計算の結果がなすであろう分布を解析的に直接求めることが可能であり、その分布から分散値を計算することが可能である。
【００３４】
本発明の実施の形態の前提となる推定計算が扱うニューラルネットワークの部分的構造の一例を図２に示す。入力データの一部を欠損させるドロップアウト層と、重みの計算を行う全結合（Fully Connected：ＦＣ）層との組み合わせからなる一体化層とを持つニューラルネットワークは、例えば、図２（ａ）のような構造を部分的に有している。すなわち、入力側（入力ベクトルＸｉｎ）から出力側（入力ベクトルＸｏｕｔ）に、ドロップアウト１層、ＦＣ（Fully Connected）１層、活性化層、ドロップアウト２層、そして最後のＦＣ（Fully Connected）２層がこの順で配列された構造を有しており、最終層から出力される値がニューラルネットワークの推定値となる。
【００３５】
ドロップアウト層及びＦＣ層では、一体となって連続した計算処理が行われるため、以下、ドロップアウト層とＦＣ層とが一体となった層（ドロップアウトを備えたＦＣ層）をまとめて一体化層（ＤＦ層）と呼ぶことがある。なお、図２（ａ）では、ニューラルネットワークの部分的構造は、ＤＦ１層（ドロップアウト１層とＦＣ１層とをまとめた層）と、活性化層と、ＤＦ２層（ドロップアウト２層とＦＣ２層とをまとめた層）とにより構成されているが、図２（ａ）に示す構造に限られるものではなく、例えば、図２（ｂ）に示すように、ＤＦ１層、活性化層のみから構成されていてもよく、図２（ｃ）に示すように、活性化層、ＤＦ２層のみから構成されていてもよい。
【００３６】
例えば、図２（ａ）の部分的構造を持つニューラルネットワークにおいて、推定値の分散値を計算したいとする。なお、ＤＦ１層以前の層には、ドロップアウト層のようなランダム性を生む計算処理を行う層はないとする。この場合、ＤＦ１層への入力値は、分布をなす確率変数ではなく、通常のニューラルネットワークのように、ある固定値となる。
【００３７】
以下、図３及び図４を参照しながら、どのように入力値が確率変数に変わり、分布をなして伝搬され、最終層で推定値として出力されるのかについて具体的に述べる。
【００３８】
上述のように、ＤＦ１層への入力値は固定値である。したがって、ＤＦ１層への入力値ＸｉｎDF1は、以下に示すようなｎXinDF1次元のベクトルＸｉｎDF1である。ベクトルＸｉｎDF1のｊ番目の要素（インデックスｊ）はＸｉｎDF1jと表される。なお、明細書中の表記ｎXinDF1は、ｎの下付き添字がＸｉｎDF1であることを表す。
【００３９】
【数２】
2019070950.tif 000004
【００４０】
図３に模式的に示すように、ＤＦ１層には入力ベクトルＸｉｎDF1が入力され、ＤＦ１層のドロップアウト１層にあらかじめ設定されたドロップアウトの確率ｐdropDF1、ＦＣ１層にあらかじめ設定された重みＷDF1及びバイアスｂDF1を用いた以下の計算が行われて、その計算結果が出力ベクトルＸｏｕｔDF1として出力される。
【００４１】
【数３】
2019070950.tif 000005
【００４２】
本発明の実施の形態の前提となる推定計算によると、ＤＦ１層からの出力値は、ｎXoutDF1次元のベクトルＸｏｕｔDF1となり、このベクトルＸｏｕｔDF1のｉ番目の要素は以下のとおりである。なお、明細書中の表記ｎXoutDF1は、ｎの下付き添字がＸｏｕｔDF1であることを表す。
【００４３】
【数４】
2019070950.tif 000006
【００４４】
さらに、ドロップアウトにより、右辺のＷi,jDF1ＸｉｎDF1j項（１≦ｊ≦ｎXinDF1）が、確率ｐdropDF1でそれぞれランダムに消えることから、各項の和である左辺のｘｏｕｔDF1iは“サンプリング和”としてとらえて計算することができる。サンプリング和は、もはや固定値ではなく、平均値ベクトルμDF1i、分散共分散行列ΣDF1iからなる多変量ガウス分布をなす確率変数となり、以下のように表される。
【００４５】
【数５】
2019070950.tif 000007
【００４６】
【数６】
2019070950.tif 000008
【００４７】
【数７】
2019070950.tif 000009
【００４８】
【数８】
2019070950.tif 000010
【００４９】
【数９】
2019070950.tif 000011
【００５０】
以上が、図３に示した、固定値であるｎXinDF1次元の入力ベクトルＸｉｎDF1がＤＦ１層を経て、確率変数であるｎXoutDF1次元の多変量ガウス分布となって出力される計算である。
【００５１】
本発明の実施の形態の前提となる推定計算では、ＤＦ１層において、上述した平均値、分散値、共分散値を計算する式を用いた計算処理が行われる。この計算処理をプログラムの処理で表した場合には、以下のようなものとなる。
【００５２】
【数１０】
2019070950.tif 000012
【００５３】
【数１１】
2019070950.tif 000013
【００５４】
上記のようにプログラムの処理で表された計算処理に関して、特にループ処理に着目して表現したフローチャートを図５及び図６に示す。図５は、本発明の実施の形態の前提となる推定計算において、ＤＦ１層での平均値及び分散値の計算処理の一例を示すフローチャートである。
【００５５】
図５のフローチャートでは、ベクトルＸｏｕｔDF1のｎXoutDF1個の要素について、ｎXoutDF1回の平均値及び分散値の計算が実行される（ループＬ１）。ベクトルＸｏｕｔDF1のｉ番目の要素（インデックスｉ）に関する平均値μDF1iの計算は、ｎXinDF1回の平均値計算処理（ステップＳ１０１）を含み（ループＬ２）、ベクトルＸｏｕｔDF1のｉ番目の要素（インデックスｉ）に関する分散値ｄｉａｇ（ΣDF1）iの計算は、ｎXinDF1回の分散値計算処理（ステップＳ１０２）を含んでいる（ループＬ３）。したがって、ｎXoutDF1回のループはｎXinDF1回のループを含んでおり、ベクトルＸｏｕｔDF1のすべての要素について平均値及び分散値を計算するためには、平均値及び分散値のそれぞれについて、ｎXoutDF1×ｎXinDF1回の計算が実行される必要がある。
【００５６】
また、図６は、本発明の実施の形態の前提となる推定計算において、ＤＦ１層での共分散値の計算処理の一例を示すフローチャートである。ベクトルＸｏｕｔDF1の共分散値の計算では、ベクトルＸｏｕｔDF1のある要素（例えばｉ１番目の要素）と別の要素（例えばｉ２番目の要素：ただし、ｉ１≠ｉ２）との組み合わせに関して、ｎXinDF1回の共分散値計算処理（ステップＳ２０１）を実行する必要がある。すなわち、図６のフローチャートでは、ｎXoutDF1×ｎXoutDF1個の組み合わせについて、ｎXoutDF1×ｎXoutDF1回の計算が実行され（ループＬ４及びループＬ５）、さらにこれらのループＬ４及びループＬ５が、ｎXinDF1回の共分散値計算処理（ステップＳ２０１）を含んでいる（ループＬ６）。したがって、共分散値の計算については、ｎXoutDF1×ｎXoutDF1回のループがｎXinDF1回のループを含んでおり、ベクトルＸｏｕｔDF1のすべての要素に関する共分散値を計算するためには、およそｎXoutDF1×ｎXoutDF1×ｎXinDF1回の計算が実行される必要がある。
【００５７】
なお、共分散値の計算では対角項（ｉ１＝ｉ２）に関する計算は実行されないことから、計算回数はｎXoutDF1×ｎXoutDF1×ｎXinDF1回よりも少ないが、ｎXoutDF1×ｎXoutDF1×ｎXinDF1と同程度のオーダー（桁数）の計算回数が必要であることは明らかである。また、もちろん、分散共分散行列の対称性を利用することで、片方の非対角項だけを計算し、他方の非対角項をその反転で計算することは可能ではあるが、計算量は半分程度削減されるにすぎない。
【００５８】
また、本発明の実施の形態の前提となる推定計算では、入出力データを混合ガウス分布とみなすことを提案している。この場合、データを構成するそれぞれのガウス分布に対し、上述した処理を独立に行う必要があるが、ここでは説明を省略する。
【００５９】
例えば図２（ａ）の部分的構造を持つニューラルネットワークでは、ＤＦ１層から出力された出力値ＸｉｎDF1（確率変数であるｎXoutDF1次元の多変量ガウス分布）は、活性化層に入力される。活性化層では、例えばＲｅＬｕ（Rectified Linear Unit）関数やシグモイド関数などの活性化関数（非線形関数）による計算処理が実行された後、入力ベクトルと同一の次元数（ｎXoutDF1次元）のベクトルが出力され、ＤＦ２層に入力される。したがって、ＤＦ２層の入力ベクトルの次元数ｎXinDF2は、ＤＦ２層の入力ベクトルの次元数ｎXoutDF1と同じになる（ｎXoutDF1＝ｎXinDF2）。なお、明細書中の表記ｎXinDF2は、ｎの下付き添字がＸｉｎDF2であることを表す。
【００６０】
ＤＦ２層に入力される多変量ガウス分布は、以下のように表される。
【００６１】
【数１２】
2019070950.tif 000014
【００６２】
なお、μinDF2は、平均を示すｎXinDF2次元ベクトルであり、インデックスｉ番目（１≦ｉ＜ｎXinDF2）の要素をμinDF2と表記する。また、ΣinDF2は、ｎXinDF2×ｎXinDF2次元の分散共分散行列であり、インデックス（ｉ，ｉ）番目（１≦ｉ≦ｎXinDF2）の対角項は分散値を示し、この要素をΣinDF2iと表記する。一方、インデックス（ｉ，ｊ）番目（１≦ｉ，ｊ，ｉ≠ｊ≦ｎXinDF2）の非対角項は共分散値を示し、この要素をΣinDF2i,jと表記する。
【００６３】
図４に模式的に示すように、ＤＦ２層には入力ベクトルＸｉｎDF2が入力され、ＤＦ２層のドロップアウト２層にあらかじめ設定されたドロップアウトの確率ｐdropDF2、ＦＣ２層にあらかじめ設定された重みＷDF2及びバイアスｂDF2を用いた以下の計算が行われて、その計算結果が出力ベクトルＸｏｕｔDF2として出力される。
【００６４】
【数１３】
2019070950.tif 000015
【００６５】
本発明の実施の形態の前提となる推定計算によると、ＤＦ１層での計算処理と同様に、ＤＦ２層での出力ベクトルＸｏｕｔDF2も、ドロップアウトによるサンプリング和と考え、以下のように定義されるｎXoutDF2次元の多変量ガウス分布となる。なお、明細書中の表記ｎXoutDF2は、ｎの下付き添字がＸｏｕｔDF2であることを表す。
【００６６】
【数１４】
2019070950.tif 000016
【００６７】
なお、μoutDF2は、平均を示すｎXoutDF2次元ベクトルであり、インデックスｉ番目（１≦ｉ＜ｎXoutDF2）の要素をμoutDF2と表記する。また、ΣoutDF2は、ｎXoutDF2×ｎXoutDF2次元の分散共分散行列であり、インデックス（ｉ，ｉ）番目（１≦ｉ≦ｎXoutDF2）の対角項は分散値を示し、この要素をΣoutDF2iと表記する。一方、インデックス（ｉ，ｊ）番目（１≦ｉ，ｊ，ｉ≠ｊ≦ｎXoutDF2）の非対角項は共分散値を示し、この要素をΣoutDF2i,jと表記する。
【００６８】
【数１５】
2019070950.tif 000017
【００６９】
【数１６】
2019070950.tif 000018
【００７０】
【数１７】
2019070950.tif 000019
【００７１】
【数１８】
2019070950.tif 000020
【００７２】
なお、ＸｏｕｔDF2の共分散の部分は、ＤＦ２層がニューラルネットワークの最終層であり、最終層から出力される出力値（すなわち、ニューラルネットワークによる推定値）の不確かさを示すのは分散値のみであるので、興味の対象外として計算する必要はない。ただし、この後、ＤＦ２層が最終層ではなく、ＤＦ２層からの出力値が更なるドロップアウト層（３つめのドロップアウト層）に入力される場合には、ＤＦ２層の出力値についても共分散値を計算する必要がある。
【００７３】
本発明の実施の形態の前提となる推定計算では、ＤＦ２層において、上述した平均値、分散値を計算する式を用いた計算処理が行われる。この計算処理をプログラムの処理で表した場合には、以下のようなものとなる。
【００７４】
【数１９】
2019070950.tif 000021
【００７５】
上記のようにプログラムの処理で表された計算処理に関して、特にループ処理に着目して表現したフローチャートを図７に示す。図７は、本発明の実施の形態の前提となる推定計算において、ＤＦ２層での平均値及び分散値の計算処理の一例を示すフローチャートである。図７のフローチャートでは、ベクトルＸｏｕｔDF2のｎXoutDF2個の要素について、ｎXoutDF2回の平均値及び分散値の計算が実行される（ループＬ７）。ベクトルＸｏｕｔDF2のある要素（例えばｉ番目の要素）に関する平均値μoutDF2i、ＬｉｓｔＷDF2μinDF2iの分散値の計算は、ｎXinDF2回の平均値計算処理（ステップＳ３０１）を含んでいる（ループＬ８）。一方、分散値については、ループＬ９におけるｎXinDF2回のＶａｒＷXinDF2i,jjの和の計算（ステップＳ３０２）と、ループＬ１０及びループＬ１１におけるｎXinDF2×ｎXinDF2個のインデックスの組み合わせに関するＣｏｖＷＸｉｎDF2i,jj1,jj2,jj1<jj2の和の計算（ステップＳ３０３）とを実行した後、これらの結果から、ＤＦ２層の出力値の分散値ｄｉａｇ（ΣoutDF2）iを計算する（ステップＳ３０４）。したがって、分散値の計算については、ｎXoutDF2回のループがｎXinDF2×ｎXinDF2回のループを含んでおり、ベクトルＸｏｕｔDF2のすべての要素に関する分散値を計算するためには、およそｎXoutDF2×ｎXinDF2×ｎXinDF2回の計算が実行される必要がある。
【００７６】
以上のように、本発明の実施の形態の前提となる推定計算では、ＤＦ１層及びＤＦ２層における計算処理が膨大な回数の計算を必要とするループ処理を含んでいる。例えばＡｌｅｘＮｅｔなどの代表的なニューラルネットワークでは、ＦＣ層の入力ベクトルの次元数ｎXinFC2は４０９６であり、ＦＣ層の出力ベクトルの次元数ｎXoutFC2は１０００であることから、上述したＤＦ２層の分散値の計算だけでも１０００×４０９６×４０９６回の繰り返し計算が必要となってしまう。したがって、本発明の実施の形態の前提となる推定計算においても、ニューラルネットワークのニューロン数が大きく、さらに層の数が増えた場合には、膨大な回数の計算を実行する必要があるという問題点がある。
【００７７】
以下、本発明の第１及び第２の実施の形態について説明する。本発明の第１の実施の形態における推定計算は、上述した本発明の実施の形態の前提となる推定計算を更に改良することによって、不確かさを表す分散値をより高速に計算できるようにしたものである。また、本発明の第２の実施の形態における推定計算は、本発明の第１の実施の形態における推定計算を改良して、推定結果が不確かであると判断された場合に計算を中断することにより、不要な計算処理が行われないようにしたものである。
【００７８】
＜第１の実施の形態＞
本発明の第１の実施の形態における推定計算では、ニューラルネットワークの活性化層において、入力される分布が、出力では平均値及び分散値がほぼゼロとなるような圧縮されたつぶれた分布になり、分布計算がそれ以降の層で必要ではない場合があることに着目し、圧縮されたつぶれた分布によって平均値及び分散値がゼロと設定（近似）することができる場合とそうではない場合とに単純に分けて計算することで、ループ処理における計算の回数を低減させ、高速の計算処理を実現する。なお、活性化層に入力された多変量分布（例えば、多変量ガウス分布）が、活性化層における計算を経て出力される場合に、平均値及び分散値をゼロと設定（近似）することのできる分布（つぶれた分布）の形状を有する場合があることについては後述する。
【００７９】
図８は、本発明の第１の実施の形態における情報推定装置の構成の一例を示すブロック図である。図８に示す情報推定装置１０は、推定計算部２０、データ解析部３０を有する。図８に示す情報推定装置１０は、ニューラルネットワークを用いて推定処理を行う推定器であり、ニューラルネットワークは、入力データの一部を欠落させるドロップアウト層、重みの計算を行うＦＣ層（Fully Connected層）、非線形関数を用いた計算を行う活性化層を持っている。なお、ＦＣ層は、コンボリューション層（畳み込み層）と数学的に同等とみなすことができる。
【００８０】
図８に示すブロック図は、本発明に関連した機能を表しているにすぎず、実際の実装では、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせによって実現されてもよい。ソフトウェアで実装される機能は、１つ又は複数の命令若しくはコードとして任意のコンピュータ可読媒体に記憶され、これらの命令又はコードは、ＣＰＵ（Central Processing Unit：中央処理ユニット）やＧＰＵ（Graphics Processing Unit：グラフィックスプロセッシングユニット）などのハードウェアベースの処理ユニットによって実行可能である。また、本発明に関連した機能は、ＩＣ（Integrated Circuit：集積回路）やＩＣチップセットなどを含む様々なデバイスによって実現されてもよい。
【００８１】
推定計算部２０は、従来のニューラルネットワークと同様に、各層において入力データの計算処理を行って推定結果を出力する機能に加えて、本発明の実施の形態の前提となる推定計算に係る機能（例えば、図５〜図７に示すフローチャートを用いて説明した計算処理を実行する機能）を有しており、入力データがドロップアウトにより、どのような分布を持って各層に伝搬されて出力されるのかについて、分布の形状を計算し、最終的な出力層から出力される分散値を計算するよう構成されている。
【００８２】
一方、データ解析部３０は、本発明の第１の実施の形態に特徴的な処理を実行する機能を有している。具体的には、データ解析部３０は、ニューラルネットワークの活性化層に入力される分布が、活性化層における計算処理によって、活性化層から圧縮されたつぶれた分布として出力されるものであるかどうかを判断する機能を有している。そして、データ解析部３０は、活性化層から圧縮されたつぶれた分布として出力されると判断できる分布については、計算を実行しない（計算をスキップする）よう制御することで計算回数を大幅に低減させて、計算時間の短縮及び計算処理の高速化を実現する。
【００８３】
以下、データ解析部３０において実行される、活性化層での計算処理を考慮した近似処理について説明する。上述した説明では、本発明の実施の形態の前提となる推定計算の膨大な計算回数を示すことを目的としていたため、仮に活性化層では何も処理されないと仮定して説明を行った。しかしながら、実際には、活性化層において活性化関数を用いた計算処理が実行される。以下、図９（ａ）〜図９（ｅ）、図１０（ａ）〜図１０（ｅ）を参照しながら、活性化関数として通常用いられるＲｅＬＵ関数及びシグモイド関数について説明する。
【００８４】
図９（ａ）は、活性化関数として用いられるＲｅＬＵ関数の一例を示す図である。ＲｅＬＵ関数は、数式では以下のように表される。
【００８５】
【数２０】
2019070950.tif 000022
【００８６】
ｍａｘ（ｘ，ｙ）はｘ＞ｙの場合にはｘとなり、それ以外はｙとなる関数である。すなわち、関数ｆ（ｘ）＝ｍａｘ（ｘ，０）は、入力値ｘが負の場合には出力値はゼロとなり、入力値ｘがゼロ以上の場合には、そのまま入力値ｘが出力値ｘとなる。この関数ｆ（ｘ）に上述のようなガウス関数からなる分布（ガウス分布）が入力値として計算された場合、その出力値はどのような分布になるのか、入力されたガウス分布の平均値に応じてどのような場合があるのかについて図９（ｂ）〜図９（ｅ）に示す。
【００８７】
例えば、図９（ｂ）に示すように入力値のガウス分布の平均値が負の場合には、出力値である関数ｆ（ｘ）は図９（ｃ）に示すようになる。図９（ｂ）では、ガウス分布を構成する値のほとんどが負の領域にあるため、ＲｅＬＵ関数による出力値ｆ（ｘ）は、ほとんどゼロとなる。すなわち、図９（ｃ）に示すように、入力されたガウス分布は、かろうじて入力値のガウス分布の正の領域がそのままの形状を残しているものの、大部分を占める負の領域の値がゼロの近くに押しつぶされた状態となり、デルタ関数のような尖ったピークの状態となる。
【００８８】
一方、図９（ｄ）に示すように入力値のガウス分布の平均値が正の場合には、関数ｆ（ｘ）は図９（ｅ）に示すようになる。この場合には、ガウス分布の値のほとんどが正の領域にあるため、ＲｅＬＵ関数による出力値ｆ（ｘ）は、大部分が入力値と同じ値となって、分布がほとんど変わらない状態となる。
【００８９】
また、図１０（ａ）は、活性化関数として用いられるシグモイド関数の一例を示す図である。シグモイド関数は、数式では以下のように表される。
【００９０】
【数２１】
2019070950.tif 000023
【００９１】
同様に、この関数ｆ（ｘ）に上述のようなガウス関数からなる分布（ガウス分布）が入力値として計算された場合、その出力値はどのような分布になるのか、入力されたガウス分布の平均値に応じてどのような場合があるのかについて図１０（ｂ）〜図１０（ｅ）に示す。
【００９２】
例えば、図１０（ｂ）に示すように入力値のガウス分布の平均値が負の場合には、出力値である関数ｆ（ｘ）は図１０（ｃ）に示すようになる。活性化関数がＲｅＬＵ関数の場合と同様に、活性化関数がシグモイド関数の場合も、入力値のガウス分布のほとんどが負の領域にある場合には、シグモイド関数による出力値ｆ（ｘ）はほとんどゼロとなり、図１０（ｃ）に示すように、出力値の分布はゼロの近くに押しつぶされた状態となる。
【００９３】
一方、図１０（ｄ）に示すように入力値のガウス分布の平均値が正の場合には、関数ｆ（ｘ）は図１０（ｅ）に示すようになる。この場合には、ガウス分布の値の大部分が正の領域にあるため、図１０（ｄ）に示すように、シグモイド関数による出力値ｆ（ｘ）は、分布がほとんど１の値の近くに押しつぶされた状態となる。
【００９４】
上述のように、活性化関数ｆ（ｘ）がＲｅＬＵ関数、シグモイド関数のどちらの場合も、入力された分布の大部分が負の領域に偏って存在する場合には、出力値ｆ（ｘ）の分布は、ｘ＝０の付近に集中した分布を有するデルタ関数のような形状となる。本発明の第１の実施の形態では、上述のような活性化関数の性質に着目して、データ解析部３０が、活性化層に入力される分布が負の領域に偏っているかどうかを判断し、活性化層に入力される分布が負の領域に偏っていると判断した場合には、図１１に示すように、その入力された分布に応答して活性化層から出力される分布はデルタ関数の状態（平均値＝０、分散値＝０）になるとみなす。なお、活性化層に入力される分布が負の領域に偏っていないと判断された場合、その分布については、通常と同様の計算処理を行ってもよく、あるいは、任意の手法を用いた近似計算を行ってもよい。
【００９５】
活性化層に入力される分布が負の領域に偏っているかどうかは、任意の条件に基づいて判断することが可能であるが、一例として、分布の平均値μと、その分布の幅、つまり標準偏差σ（あるいは分散値の平方根）を基準として判断することが可能である。例えば、活性化層へ入力されるガウス関数、活性化層から出力されるガウス関数が、以下のように平均値と標準偏差とで定義されるとする。
【００９６】
【数２２】
2019070950.tif 000024
【００９７】
このとき、例えば図１２に示すように、入力されるガウス分布の平均値μinが負の領域に存在し、さらに、ガウス分布の分布幅を表す標準偏差σinに負の符号をかけた値より小さい場合に、ガウス分布は負の側にあると判断してもよい。この条件は、以下の式のように表される。
【００９８】
【数２３】
2019070950.tif 000025
【００９９】
また、場合によっては、以下の式のように、入力されるガウス分布の平均値μinが、その標準偏差σinにある負の定数−ｃをかけた値より小さい場合に、ガウス分布は負の側にあると判断してもよい。
【０１００】
【数２４】
2019070950.tif 000026
【０１０１】
例えば、図９（ａ）〜図９（ｅ）に示すＲｅＬＵ関数の例において、以下に示すような関数ＡｃｔｉｖａｔｉｏｎＬａｙｅｒを用いて、活性化層に入力されたガウス分布が負の領域に偏っているかどうかを判断することで、活性化層から出力されるガウス分布の平均と分散値を定めることが可能である。
【０１０２】
【数２５】
2019070950.tif 000027
【０１０３】
上記の関数ＡｃｔｉｖａｔｉｏｎＬａｙｅｒは、単純に、活性化層に入力されるガウス分布が負の領域に偏っていると判断された場合（μin＜−σin）には、活性化層から出力される分布が平均値及び分散値がゼロであるデルタ関数になるとみなし、一方、そうではない場合には、出力される分布は、入力されたガウス分布の形状のままとするものである。
【０１０４】
あるいは、活性化層に入力されるガウス分布が負の領域に偏っているとみなすことができる場合（例えば、μin＜−σin）には、ｔｒｕｅ（真）を返し、そうではない場合にはｆａｌｓｅ（偽）を返すような関数ＡｃｔｉｖａｔｉｏｎＬａｙｅｒＭａｋｅＺｅｒｏを設定してもよい。
【０１０５】
【数２６】
2019070950.tif 000028
【０１０６】
上記のような関数を用いた場合には、ＤＦ１層及びＤＦ２層における計算処理が大幅に低減される。以下、一例として、図２（ａ）の部分的構造を持つニューラルネットワーク（ＤＦ１層、活性化層、ＤＦ２層により構成されたニューラルネットワーク）を参照しながら説明する。
【０１０７】
まず、ＤＦ１層においては、ＸｏｕｔDF1の分散値を計算した後、さらにＸｏｕｔDF1の共分散値を計算する必要がある。なお、本発明の実施の形態の前提となる推定計算では、上述のように、およそｎXoutDF1×ｎXoutDF1×ｎXinDF1回の計算を行う必要があった。
【０１０８】
しかし、共分散値ｏｆｆｄｉａｇ（ΣDF1）i1,i2,i1≠i2は、あるインデックスｉ１とｉ２（ただし、１≦ｉ１，ｉ２≦ｎXoutDF1，ｉ１≠ｉ２）の組み合わせに対するそれぞれの分布Ｘｏｕｔi1DF1、Ｘｏｕｔi2DF1から計算されるものであり、どちらか一方の分散値がゼロである場合（分布がデルタ関数として表される場合）、すなわち、ｖａｒ（ＸｏｕｔDF1）i1及びｖａｒ（ＸｏｕｔDF1）i2の少なくとも一方がゼロの場合には、共分散値Ｃｏｖ（ＸｏｕｔDF1）i1,i2をゼロとみなすことができる。その様子を図８に示す。２つのインデックスの組み合わせにおいて、図１３（ａ）に示すように両方の分散値がゼロではない場合には、共分散値はある広がりを持った分布をなす一方、図１３（ｂ）や図１３（ｃ）に示すように、少なくとも一方の分散値がゼロである場合には、共分散値はゼロになるとみなせる。
【０１０９】
したがって、共分散値を求める場合には、２つのインデックスのすべての組み合わせを計算する必要はなく、負の領域に偏っていない分布（活性化層から出力される分布の分散値をゼロとみなすことができない分布）同士の組み合わせに関してのみ計算すればよいことになる。この点に着目し、以下のプログラムの処理（ＤＦ１層における処理）で表されるように、ＺｅｒｏＦｌａｇ（ｉ）というブーリアン型のデータを記録するテーブルを用意して、負の領域に偏っている分布（活性化層から出力される分布の分散値をゼロとみなすことができる分布）のインデックスにはｔｒｕｅ（真）を返し、一方、負の領域に偏っていない分布（活性化層から出力される分布の分散値をゼロとみなすことができない分布）のインデックスにはｆａｌｓｅ（偽）を返すようにしておく。
【０１１０】
【数２７】
2019070950.tif 000029
【０１１１】
また、以下のプログラムの処理（ＤＦ１層における処理）で表されるように、共分散値の計算では、ＺｅｒｏＦｌａｇ（ｉ）のテーブルを参照し、ｔｒｕｅ（真）が記録されたインデックスについては計算をスキップする一方、ｆａｌｓｅ（偽）が記録されたインデックスについてのみ計算を行う。これにより、ＤＦ１層における共分散値の計算処理では、ＺｅｒｏＦｌａｇにｆａｌｓｅ（偽）が設定されているものだけが計算対象となるため、計算回数が大幅に低減される。
【０１１２】
【数２８】
2019070950.tif 000030
【０１１３】
上記のようにプログラムの処理で表されたＤＦ１層における計算処理に関するフローチャートを図１４及び図１５に示す。なお、ここでは、上述した図５及び図６のフローチャートと同一の処理については説明を省略する。
【０１１４】
図１４に示すフローチャートでは、最初に、すべての共分散値をゼロにする初期化する処理を行う（ステップＳ４０１）。また、あるインデックスｉの平均値μDF1i及び分散値ｄｉａｇ（ΣDF1）iが計算された時点で、さらに、分布が負の領域に偏っているかどうかを判断し、分布が負の領域に偏っている場合にはＺｅｒｏＦｌａｇ（ｉ）にｔｒｕｅ（真）を記録し、そうではない場合には、ＺｅｒｏＦｌａｇ（ｉ）にｆａｌｓｅ（偽）を記録する（ステップＳ４０２）。なお、ここでは、一例として、関数ＡｃｔｉｖａｔｉｏｎＬａｙｅｒＭａｋｅＺｅｒｏを使用し、例えば「μｉｎ＜−σｉｎ」の場合にＺｅｒｏＦｌａｇ（ｉ）にｔｒｕｅ（真）を記録し、そうではない場合にＺｅｒｏＦｌａｇ（ｉ）にｆａｌｓｅ（偽）を記録しているが、この条件に限定されるものではない。
【０１１５】
また、図１５に示すフローチャートでは、ＺｅｒｏＦｌａｇ（ｉ１）がｆａｌｓｅ（偽）かどうかの判断（ステップＳ５０１）、及び、ＺｅｒｏＦｌａｇ（ｉ２）がｆａｌｓｅ（偽）かどうかの判断（ステップＳ５０２）を行って、ＺｅｒｏＦｌａｇ（ｉ１）及びＺｅｒｏＦｌａｇ（ｉ２）の両方がｆａｌｓｅ（偽）の場合のみ、非ゼロとなる共分散値の計算処理を行う。このとき、ＺｅｒｏＦｌａｇ（ｉ１）がｔｒｕｅ（真）の場合、又は、ＺｅｒｏＦｌａｇ（ｉ２）がｔｒｕｅ（真）の場合には共分散値の計算処理はスキップされるので、計算回数を大幅に低減させることができる。なお、計算処理がスキップされた共分散値は、ステップＳ４０１の初期化処理によって設定されたゼロとなる。
【０１１６】
さらに、ＤＦ２層においては、以下のプログラムの処理（ＤＦ２層における処理）で表される計算処理が行われる。なお、ＤＦ２層は最終層であり、上述したように、最終層から出力される出力値の不確かさを示すのは分散値のみであるので、ここでは、共分散値については興味の対象外として計算していない。
【０１１７】
【数２９】
2019070950.tif 000031
【０１１８】
上記のようにプログラムの処理で表されたＤＦ２層における計算処理に関するフローチャートを図１６に示す。なお、ここでは、上述した図７のフローチャートと同一の処理については説明を省略する。
【０１１９】
図１６に示すフローチャートでは、最初に、すべての分散値をゼロにする初期化処理を行う（ステップＳ６０１）。また、分散値を計算する際には、ＺｅｒｏＦｌａｇ（ｊｊ）がｆａｌｓｅ（偽）であるかどうかを判断し（ステップＳ６０２）、ＺｅｒｏＦｌａｇ（ｊｊ）がｆａｌｓｅ（偽）であるＶａｒＷＸｉｎDF2i,jjのみについて計算する一方、ＺｅｒｏＦｌａｇ（ｊｊ）がｔｒｕｅ（真）である場合には計算をスキップする。さらに、ＺｅｒｏＦｌａｇ（ｊｊ１）がｆａｌｓｅ（偽）かどうかの判断（ステップＳ６０３）、及び、ＺｅｒｏＦｌａｇ（ｊｊ２）がｆａｌｓｅ（偽）かどうかの判断（ステップＳ６０４）を行って、ＺｅｒｏＦｌａｇ（ｊｊ１）及びＺｅｒｏＦｌａｇ（ｊｊ２）の両方がｆａｌｓｅ（偽）となる組み合わせのＣｏｖＷＸｉｎDF2i,jj1,jj2,jj1<jj2のみについて計算する一方、ＺｅｒｏＦｌａｇ（ｊｊ１）がｔｒｕｅ（真）の場合、又は、ＺｅｒｏＦｌａｇ（ｊｊ２）がｔｒｕｅ（真）の場合には計算をスキップする。これにより、ＤＦ２層における分散値の計算処理では、ＺｅｒｏＦｌａｇにｆａｌｓｅ（偽）が設定されているものだけが計算対象となるため、計算回数が大幅に低減される。
【０１２０】
以上説明した本発明の第１の実施の形態における処理は、ループによる繰り返し計算の処理を“行列”計算としてとらえた場合、活性化関数における計算処理で大半の分散値がゼロになることを考慮して行列をスパース化することで、計算量の削減と計算時間の短縮による計算の高速化を実現している、と言うことができる。
【０１２１】
なお、上述の本発明の第１の実施の形態における処理は、図２（ａ）に示すような活性化層が２つのＤＦ層で挟まれたニューラルネットワークの構造に基づいて説明を行っているが、こうした構造に限定されるものではない。本発明の第１の実施の形態は、活性化層に入力された分布が負の領域に偏っている場合には、活性化層から出力される分布（例えば、多変量混合ガウス分布）の平均値及び分散値がほぼゼロとなるデルタ関数のような状態に近似できることに着目し、このような分布を持つ要素については計算をスキップすることで、計算量の削減と計算時間の短縮を図ることを特徴としている。したがって、例えば、図２（ｂ）に示すようなＤＦ層及び活性化層を含む構造や、図２（ｃ）に示すような活性化層及びＤＦ層を含む構造に対しても、本発明の第１の実施の形態における処理を適用することが可能である。
【０１２２】
また、上述した本発明の第１の実施の形態における提案手法を用いて実施された実験について説明する。実際に行われた実験では、まず、ＩｍａｇｅＮｅｔが提供する画像を使い、ニューラルネットワークのＡｌｅｘＮｅｔで１０００クラス分類器として学習させた。そして、このニューラルネットワークを使って、フォワード計算で、ある入力画像に対して１０００クラスそれぞれに相当する１０００個のニューロンが出力した推定値の分散値を計算した。その実験結果を図１７に示す。なお、グラフは縦軸が、不確かさに直結した分散値であり、横軸は、１０００クラスのうちの最初の１０クラスに相当する。
【０１２３】
図１７には、クラスごとに３種類の棒グラフが並んでおり、左から、本発明の第１の実施の形態における提案手法を用いて実施された実験結果（参照符号Ｘ）、本発明の実施の形態の前提となる推定計算（特願２０１６−２５２８１３号における提案手法）を用いた実験結果（参照符号Ｙ）、非特許文献１で提案された技術に基づく実験結果（２００回のモンテカルロ的な繰り返し計算）（参照符号Ｚ）を表している。図１７に示されているとおり、それぞれの手法において同じような分散値が計算できていることから、本発明の第１の実施の形態における提案手法が近似計算を用いているにもかかわらず、推定結果の精度が維持できていることが分かる。また、本発明の実施の形態の前提となる推定計算では、推定結果を得るまでに２０分かかっていたが、一方、本発明の第１の実施の形態における提案手法による推定計算によれば、１５秒で推定結果を得ることができ、計算速度の大幅な向上が実現されている。
【０１２４】
＜第２の実施の形態＞
次に、本発明の第２の実施の形態について説明する。本発明の第２の実施の形態における推定計算は、最終層であるＤＦ２層から出力される推定結果の不確かさを表す分散値が、事前に設定されたある閾値より大きくなると分かった時点で計算処理を中断することによって、計算処理の高速化を図るものである。
【０１２５】
本発明の第２の実施の形態における情報推定装置１０の構成は、図８に示す情報推定装置１０と同様であるが、データ解析部３０は、さらに、ニューラルネットワークから最終的に出力される分散値（図２（ａ）〜図２（ｃ）におけるＤＦ２層から出力される推定値）がある閾値より大きくなるかどうかを判断し、その判断結果に応じて計算を終了する機能を有している。
【０１２６】
なお、ニューラルネットワークから最終的に出力される分散値は推定結果の不確かさを表している。例えば、ユーザがある程度信頼できる推定結果を求めているにもかかわらず、分散値が信頼性の判断基準となる閾値よりも大きくなってしまうことが分かった時点で計算処理を中断及び終了することにより、信頼性の低い推定結果を生じることになる不要な計算処理を中止することができる。
【０１２７】
本発明の第２の実施の形態は、上述した本発明の第１の実施の形態を改良することで実現できる。改めて、ＤＦ２層における分散値に着目すると、ＤＦ２層における分散値は以下のように表される。
【０１２８】
【数３０】
2019070950.tif 000032
【０１２９】
上記の（式１）の右辺第１項は、ドロップアウトの確率Ｐdropは１未満であり、分散値Ｖａｒは正であることから常に正である。また、上記の（式１）の右辺第２項は、正の係数とＶａｒＷＸｉｎDF2i,jjの総和Σとをかけたものである。ＶａｒＷＸｉｎDF2i,jjは、ＤＦ１層の出力ＸｏｕｔDF1のインデックスｊｊの分散値に（Ｗi,jjDF2）2をかけたものであり、分散値はゼロ以上であることから、ＶａｒＷＸｉｎDF2i,jjは、必ずゼロ以上となる。
【０１３０】
【数３１】
2019070950.tif 000033
【０１３１】
したがって、また、上記の（式１）の右辺第２項も常に正である。
【０１３２】
一方、上記の（式１）の右辺第３項は、ＣｏｖＷＸｉｎDF2i,jj1,jj2,jj1<jj2の総和Σを含んでいる。ＣｏｖＷＸｉｎDF2i,jj1,jj2,jj1<jj2は、ＤＦ１層の出力ＸｏｕｔDF1のインデックスｊｊ１とインデックスｊｊ２の共分散値に、Ｗi,jj1DF2・Ｗi,jj2DF2をかけたものであり、正、ゼロ、負のいずれにもなり得る。
【０１３３】
【数３２】
2019070950.tif 000034
【０１３４】
ここで、ユーザが知りたいのは、ニューラルネットワークから最終的に出力される分散値そのものではなく、ニューラルネットワークから最終的に出力される推定結果の信頼性である場合には、推定結果の信頼性に直結したＤＦ２層の分散値ｄｉａｇ（ΣoutDF2）iがある閾値より大きいか小さいかのみをユーザに提示すればよい。
【０１３５】
例えば、上記の（式１）の右辺の第１項〜第３項の加算において、まず先に、正か負か不確定な右辺第３項の計算する処理を行い（ステップＡ）、その後、必ずゼロ以上の値となる残りの右辺第１項及び第２項を足す処理を行う（ステップＢ）ことで、ＤＦ２層の分散値がある閾値より大きくなることを効率的に判断することができる。これにより、ＤＦ２層の分散値がある閾値より大きくなると判断できた時点で、推測結果の信頼性が低いとみなして、推測結果に係る計算処理を中断及び終了することができる。
【０１３６】
具体的には、まずＤＦ１層においては、平均値及び分散値については上述した第１の実施の形態と同様の計算を行う一方、共分散値については、プログラムの処理で表した場合には以下のような計算を行う。
【０１３７】
【数３３】
2019070950.tif 000035
【０１３８】
上記の共分散値の計算では、第１の実施の形態と同様にＺｅｒｏＦｌａｇ（ｉ）のテーブルがｆａｌｓｅ（偽）であるものについてのみ計算を行っているが、さらに、ＣｏｖＷＸｉｎDF2i,jj1,jj2,jj1<jj2の総和Σ（ＴｏｔａｌＣｏｖＷＸｉｎDF2s）に係る計算（ステップＡ）を同時に行うことで、上記の（式１）の右辺第３項の値を算出する。
【０１３９】
また、ＤＦ２層においては、平均値については上述した第１の実施の形態と同様の計算を行う一方、分散値については、プログラムの処理で表した場合には以下のような計算を行う。
【０１４０】
【数３４】
2019070950.tif 000036
【０１４１】
ＤＦ２層では、分散値を求める際に、まず初期化されている分散値（初期値はゼロ）に、ＤＦ１層ですでに計算されている上記式（１）の右辺第３項（ステップＡの計算結果）を足し、その後、この値に対してゼロ以上の値である残りの右辺第１項及び第２項を足す処理を行う。上記のプログラムの処理で表された計算では、まず右辺第１項を足し、さらに右辺第２項を計算して足していきながら、この計算結果があらかじめ設定された所定の閾値（Threshold）以上となった場合には、最終的に得られる分散値が所定の閾値より大きくなる（すなわち、指定されたレベルよりも信頼性が低い不確かな推定結果になる）と判断し、計算を中断及び終了する。このとき、例えば、現在の計算による推定結果信頼性が低い旨を提示するなど、計算が中断された理由をユーザに対して提示してもよい。
【産業上の利用可能性】
【０１４２】
本発明は、ニューラルネットワークを使った推定装置において、その推定結果の不確かさである分散値を高速に計算することが可能であり、ニューラルネットワークにかかる技術全般に適用可能である。さらに、本発明は、ニューラルネットワークの適用範囲を大きく広げることが可能であり、例えば、自動車や歩行者などの移動体に係る推定など、高速で信頼のできる処理が必要とされる環境で大いにその機能が発揮することが可能である。
【符号の説明】
【０１４３】
１０  情報推定装置
２０  推定計算部
３０  データ解析部
【図１】
2019070950.tif 000037
【図２】
2019070950.tif 000038
【図３】
2019070950.tif 000039
【図４】
2019070950.tif 000040
【図５】
2019070950.tif 000041
【図６】
2019070950.tif 000042
【図７】
2019070950.tif 000043
【図８】
2019070950.tif 000044
【図９】
2019070950.tif 000045
【図１０】
2019070950.tif 000046
【図１１】
2019070950.tif 000047
【図１２】
2019070950.tif 000048
【図１３】
2019070950.tif 000049
【図１４】
2019070950.tif 000050
【図１５】
2019070950.tif 000051
【図１６】
2019070950.tif 000052
【図１７】
2019070950.tif 000053