特許第6855360号(P6855360)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社デンソーアイティーラボラトリの特許一覧

<>
  • 特許6855360-情報推定装置及び情報推定方法 図000036
  • 特許6855360-情報推定装置及び情報推定方法 図000037
  • 特許6855360-情報推定装置及び情報推定方法 図000038
  • 特許6855360-情報推定装置及び情報推定方法 図000039
  • 特許6855360-情報推定装置及び情報推定方法 図000040
  • 特許6855360-情報推定装置及び情報推定方法 図000041
  • 特許6855360-情報推定装置及び情報推定方法 図000042
  • 特許6855360-情報推定装置及び情報推定方法 図000043
  • 特許6855360-情報推定装置及び情報推定方法 図000044
  • 特許6855360-情報推定装置及び情報推定方法 図000045
  • 特許6855360-情報推定装置及び情報推定方法 図000046
  • 特許6855360-情報推定装置及び情報推定方法 図000047
  • 特許6855360-情報推定装置及び情報推定方法 図000048
  • 特許6855360-情報推定装置及び情報推定方法 図000049
  • 特許6855360-情報推定装置及び情報推定方法 図000050
  • 特許6855360-情報推定装置及び情報推定方法 図000051
  • 特許6855360-情報推定装置及び情報推定方法 図000052
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6855360
(24)【登録日】2021年3月19日
(45)【発行日】2021年4月7日
(54)【発明の名称】情報推定装置及び情報推定方法
(51)【国際特許分類】
   G06N 3/04 20060101AFI20210329BHJP
   G06F 17/18 20060101ALI20210329BHJP
【FI】
   G06N3/04
   G06F17/18 Z
【請求項の数】12
【全頁数】31
(21)【出願番号】特願2017-196740(P2017-196740)
(22)【出願日】2017年10月10日
(65)【公開番号】特開2019-70950(P2019-70950A)
(43)【公開日】2019年5月9日
【審査請求日】2020年2月27日
(73)【特許権者】
【識別番号】502324066
【氏名又は名称】株式会社デンソーアイティーラボラトリ
(74)【代理人】
【識別番号】100093067
【弁理士】
【氏名又は名称】二瓶 正敬
(72)【発明者】
【氏名】安達 仁吾
【審査官】 金田 孝之
(56)【参考文献】
【文献】 特開2018−106463(JP,A)
【文献】 特開2018−200677(JP,A)
【文献】 特開2002−236906(JP,A)
【文献】 米国特許出願公開第2018/0181865(US,A1)
【文献】 Yarin Gal, et al.,Dropout as a Bayesian Approximation: Representing Model Uncertainty in Deep Learning,arXiv.org [Online],2016年10月 4日,pp.1-12,URL,https://arxiv.org/abs/1506.02142
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00−99/00
G06F 17/00−17/18
(57)【特許請求の範囲】
【請求項1】
入力データの一部を欠損させるドロップアウト層と、重みの計算を行うFC層又はコンボリューション層との組み合わせからなる一体化層を持つとともに、前記一体化層の前及び後の少なくとも一方に非線形関数を用いた計算を行う活性化層を持つニューラルネットワークを用いて推定処理を行う情報推定装置であって、
前記活性化層に入力される多変量分布に係るデータを参照して、前記活性化層における計算を経て前記活性化層から出力される多変量分布の分散値をゼロに設定することができるか否かを判断するデータ解析部と、
前記推定処理において前記一体化層で計算を行う際に、前記データ解析部で前記分散値をゼロに設定することができると判断された多変量分布に関連した計算をスキップする推定処理部とを、
有する情報推定装置。
【請求項2】
前記データ解析部は、前記活性化層に入力される多変量分布が負の領域に偏っている場合に、前記活性化層から出力される多変量分布の分散値をゼロに設定することができると判断するよう構成されている請求項1に記載の情報推定装置。
【請求項3】
前記推定処理部は、前記活性化層の前に配置された前記一体化層において、2つの分散値を用いて共分散値を計算する場合に、前記2つの分散値のうちの少なくとも一方が、前記データ解析部で前記分散値をゼロに設定することができると判断された多変量分布に係るデータに関連している場合には、前記2つの分散値を用いて計算される前記共分散値の計算をスキップするよう構成されている請求項1又は2に記載の情報推定装置。
【請求項4】
前記推定処理部は、前記活性化層に入力される多変量分布の分散値及び共分散値がゼロに設定されたか否かを記録するよう構成されている請求項1から3のいずれか1つに記載の情報推定装置。
【請求項5】
前記推定処理部は、前記活性化層の後に配置された前記一体化層において、前記一体化層に入力される多変量分布の分散値及び共分散値から、前記一体化層から出力される多変量分布の分散値を計算する場合に、前記活性化層に入力される多変量分布の分散値及び共分散値がゼロに設定されているデータに係る計算をスキップするよう構成されている請求項1から4のいずれか1つに記載の情報推定装置。
【請求項6】
前記推定処理部は、前記活性化層の後に配置された前記一体化層から出力される多変量分布の分散値を計算する場合に、前記一体化層から出力される多変量分布の分散値が所定の閾値より大きくなると判断した時点で計算処理を終了するよう構成されている請求項1から5のいずれか1つに記載の情報推定装置。
【請求項7】
入力データの一部を欠損させるドロップアウト層と、重みの計算を行うFC層又はコンボリューション層との組み合わせからなる一体化層を持つとともに、前記一体化層の前及び後の少なくとも一方に非線形関数を用いた計算を行う活性化層を持つニューラルネットワークを用いて推定処理を行う情報推定方法であって、
前記活性化層に入力される多変量分布に係るデータを参照して、前記活性化層における計算を経て前記活性化層から出力される多変量分布の分散値をゼロに設定することができるか否かを判断するデータ解析ステップと、
前記推定処理において前記一体化層で計算を行う際に、前記データ解析ステップで前記分散値をゼロに設定することができると判断された多変量分布に関連した計算をスキップする推定処理ステップとを、
有する情報推定方法。
【請求項8】
前記データ解析ステップは、前記活性化層に入力される多変量分布が負の領域に偏っている場合に、前記活性化層から出力される多変量分布の分散値をゼロに設定することができると判断するステップを更に有する請求項7に記載の情報推定方法。
【請求項9】
前記推定処理ステップは、前記活性化層の前に配置された前記一体化層において、2つの分散値を用いて共分散値を計算する場合に、前記2つの分散値のうちの少なくとも一方が、前記データ解析部で前記分散値をゼロに設定することができると判断された多変量分布に係るデータに関連している場合には、前記2つの分散値を用いて計算される前記共分散値の計算をスキップするステップを更に有する請求項7又は8に記載の情報推定方法。
【請求項10】
前記推定処理ステップは、前記活性化層に入力される多変量分布の分散値及び共分散値がゼロに設定されたか否かを記録するステップを更に有する請求項7から9のいずれか1つに記載の情報推定方法。
【請求項11】
前記推定処理ステップは、前記活性化層の後に配置された前記一体化層において、前記一体化層に入力される多変量分布の分散値及び共分散値から、前記一体化層から出力される多変量分布の分散値を計算する場合に、前記活性化層に入力される多変量分布の分散値及び共分散値がゼロに設定されているデータに係る計算をスキップするステップを更に有する請求項7から10のいずれか1つに記載の情報推定方法。
【請求項12】
前記推定処理ステップは、前記活性化層の後に配置された前記一体化層から出力される多変量分布の分散値を計算する場合に、前記一体化層から出力される多変量分布の分散値が所定の閾値より大きくなると判断した時点で計算処理を終了するステップを更に有する請求項7から11のいずれか1つに記載の情報推定方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワークを用いた推定処理を行う情報推定装置及び情報推定方法に関する。特に、本発明は、ニューラルネットワークにドロップアウト層を設け、さらに活性化層での近似計算をすることによって、推定結果の不確かさを表す分散値を高速に計算する情報推定装置及び情報推定方法である。なお、推定結果として出力される推定値の分散値が大きければ、推定結果が不確かであり(すなわち、信頼性が低い)、推定結果として出力される推定値の分散値が小さければ、推定結果が確かである(すなわち、信頼性が高い)と言える。
【背景技術】
【0002】
ニューラルネットワーク(NN: Neural Network)を用いた推定器は、他の推定器と比べ、画像やセンサー信号データなど、大量の情報を入力データとして処理し、推定を行うことができることから様々な分野への応用に期待されている。
【0003】
ニューラルネットワークはデータを処理する層が配列された構造になっており、各層ではデータが入力されて、その層に設定された計算が行われた後に、処理後のデータが出力されるよう構成されている。具体的には、観測物からの入力データは、まずニューラルネットワークの入力層に入力されて処理が行われた後に出力され、その後、それぞれの層(中間層)に順番に入力データとして入力されて処理が行われた後に出力されながら、各層における処理が繰り返されて、ニューラルネットワーク内をデータが伝搬していく。そして、最後の層である出力層からデータが出力され、それが推定結果となる。なお、観測物からの入力データは、推定したい観測対象のn次元のベクトルデータであり、例えば、縦横10ピクセルの白黒カメラ画像であれば、各ピクセルに対応した要素を持つ10×10=100次元(すなわち、n=100)のベクトルデータとなる。
【0004】
ニューラルネットワークの各層では、入力されるベクトルデータの次元数と、出力されるベクトルデータの次元数とが異なるように設定可能である。すなわち、ベクトルデータは各層を通るたびに、その次元数が増えたり減ったりする。また、出力層から出力されるベクトルデータの次元数は、設計者の推定させたい内容によって異なる。例えば、「速度」や「点数」という値を推定させたい場合は、出力層からの出力はn=1次元のスカラーデータとなる。あるいは、入力画像から、その入力画像が「歩行者」、「自動車」、「自転車」のいずれであるかを分類させたい場合(すなわち、3クラスの分類をさせたい場合)には、出力層からの出力は、上記3クラスのうちのいずれに該当するのかを表す「点数」を格納する、n=3次元のベクトルデータとなる。
【0005】
また、ニューラルネットワークを用いて推定処理を行う推定器で実行される処理として、学習フェーズと推定フェーズとが存在する。
【0006】
学習フェーズでは、設計者は、学習データを使い、特定のパターンを持つ入力データに対し望むような特定の出力を出すよう、ニューラルネットワーク内のニューロンの重みを計算して学習させる。
【0007】
推定フェーズでは、見たことのない新しいデータ、つまりテストデータを、学習フェーズで学習されたルールを持つニューラルネットワークに入力して推定させ、上手く学習ができていれば、学習した概念に従って推定結果を出す。
【0008】
ニューラルネットワークを使用した従来の推定器が他のベイズ推定などの確率的手法を使った推定器と大きく異なる点としては、ニューラルネットワークでは推定結果が「値」として出力されるのみであり、推定結果の不確かさを表す分散値が計算できないことが挙げられる。
【0009】
ニューラルネットワークでは、不確かさを表す分散値が計算できないため、閾値を設定してあるレベル以上の信頼できる推定結果のみを採用するなどの設定を行うことが困難であり、誤判定の可能性を多く含んでしまう可能性がある。例えば、自動車の周囲の状況を推定するなどのような、高い安全性が求められる環境下でニューラルネットワークを使用場合、その推定結果に誤判定が含まれている場合には、重大な事故につながってしまうおそれがある。
【0010】
これに対し、下記の非特許文献1には、ニューラルネットワークにおいて、出力値とその分散値とを計算する方法が提案されている。以下、非特許文献1に開示されている計算方法について説明する。
【0011】
非特許文献1における分散値の計算方法は、本来は学習時に過学習を防ぐために用いられるドロップアウト(dropout)を推定時にも使用することで、推定結果の分散を計算するものである。ドロップアウトとは、例えば下記の特許文献1に開示されているように、ニューラルネットワークの層の中にドロップアウト層を設け、そのドロップアウト層に入力されるベクトルデータの各要素に対して独立に、設計者が事前に決めたある確率pdropでゼロにする手法である。
【0012】
例えば、入力ベクトルデータが100次元、すなわち100個の要素からなる場合には、それぞれの要素に含まれる値に対して独立に、確率pdropでゼロにするかしないか(ゼロにしない場合には元の要素に含まれる値は変更されない)をそれぞれ判断する。結果的に、統計的には100個の要素のうちの100×pdropの個数の要素がゼロの値となる。すなわち、ドロップアウトでは、確率pdropに対応した個数の要素が欠損(ゼロに設定)した状態で計算処理を行う。
【0013】
学習時には、確率pdropで要素が欠損した状態で計算された出力結果が、希望する正解データに対して差分が最小となるように重みを計算する。また、学習時には、この計算を何度も繰り返す。すなわち、ドロップアウト層に入力される別のベクトルデータの各要素に対して独立に、確率pdropでゼロにするかしないかを新たに判断し、別のベクトルデータに関し、確率pdropに対応した個数の要素が欠損した状態で計算処理を行って、希望する正解データに対して差分が最小となるように重みを計算する。このように入力されるベクトルデータに対してドロップアウトを使用した学習を繰り返すことによって、ベクトルデータのいかなる要素が欠損していても、同一の正解データを推定結果として出力できるように学習が行われる。
【0014】
このドロップアウトを使用した計算方法は、従来、学習時のみに適用されていた。すなわち、従来は、学習時にはドロップアウトを使用することがあったが、推定時にはドロップアウトを使用することはなかった。
【0015】
ところが、非特許文献1では、あえて、推定計算の場合にも、同一の対象物からの入力ベクトルデータに対し、ドロップアウトをさせたまま推定計算を何度も繰り返し行うことで、出力値とともに、その分散値を計算する手法が導入されている。非特許文献1では、このドロップアウトを使用した推定は、モンテカルロ(MC:Monte Carlo)ドロップアウトと呼ばれる。ドロップアウト層で確率pdropでゼロとなる入力ベクトルデータの要素群のパターンは、欠損により毎回推定計算するごとに異なるため、その後の層を通った最終的な推定結果も毎回異なる。なお、本明細書では、ベクトルデータが入力されるたびに、出力される推定結果が異なることを、推定結果が「揺れる」と表現することがある。
【0016】
1回の計算で得られた出力値の様子を図1(a)に示し、何度も計算を繰り返して得られた出力値に関して分布が生じる様子を図1(b)に示す。図1(a)には、1回の計算によって得られた出力値が、グラフ(横軸は値を表す)上にプロットされた様子が示されている。また、図1(b)には、複数回(ここでは10回)の計算によって得られた出力値が、グラフ(横軸は値を表し、縦軸は模式的に度数を表す)上にプロットされた様子が示されている。
【0017】
さらに、図1(b)に示されている出力値の分布を値ごとに度数としてカウントし、ヒストグラムによって表現した様子を図1(c)に示す。図1(c)には、図1(b)で表されている分布の様子が、出力値の大きさ(横軸)とその度数(縦軸)の関係を示すヒストグラムで表現されている。このように何度の試行を繰り返すことで、出力値の分布を得ることができ、図1(c)には、統計処理によって得られる、推定値の確率密度分布のグラフ(図1(c)中の点線で描かれたグラフ)、平均値、推定分散値も示されている。なお、本明細書では、このように何度も試行を繰り返して確率密度分布を得ることを、「モンテカルロ的に計算する」と表現することがある。
【0018】
非特許文献1では、MC回計算を繰り返し、毎回変化する最終出力ベクトルデータの値をMC個(〜200個ほど)集め、以下の式によって、それらの値の分散値を計算している。この式によって得られる分散値は、入力データに対する不確からしさとして定義される。
【0019】
【数1】
【0020】
上記の式において、x*が入力、y*が出力、Tが計算回数(すなわち、T=MC)であり、左辺が出力y*の分散値である。上記の式のように、左辺(分散値)は、初期分散に関する定数項τ-1D(右辺第1項)と、出力y*の分散値(右辺第2項)から出力y*の平均の2乗(右辺第3項)を引いた値の和で表される。
【0021】
この計算を直感的な表現で言えば、同一対象物に対するニューラルネットワークの推定値を何度も計算し、そのたびにドロップアウト層の入力ベクトルデータの値をランダムにゼロにして、ベクトルデータの要素群にランダムな欠損を作ることで、ドロップアウト層からの出力データを意図的に揺らすようにしている。このようにドロップアウト層からの出力データを意図的に揺らした場合であっても、出力層から出力される最終的な推定結果が揺れない場合、すなわち分散が小さい場合には、ニューラルネットワークはその推定値に対して信頼性が高いと考えることができる。一方、逆に出力層から出力される最終的な推定結果が大きく揺れる場合、すなわち分散が大きい場合には、ニューラルネットワークはその推定値に対して信頼性が低いと考えることができる。
【先行技術文献】
【特許文献】
【0022】
【特許文献1】国際公開公報WO2014105866A1
【非特許文献】
【0023】
【非特許文献1】“Dropout as a Bayesian Approximation: Representing Model Uncertainty in Deep Learning”, Yarin Gal, Zoubin Ghahramani:2015年6月6日(https://arxiv.org/pdf/1506.02142v1.pdfから取得可能)
【発明の概要】
【発明が解決しようとする課題】
【0024】
しかしながら、上述のように、ある1つの観測対象に対して分散値を得るためには、ニューラルネットワークのドロップアウト層以降の計算を繰り返し何度も行わなければならない。例えば、この計算回数はMC回(〜200回ほど)必要となる。計算回数を少なくした場合には、出力値の確率密度分布に関して滑らかな分布形状が得られず、正確に分散値を見積もることが困難である。一方、計算回数を多くするとより正確な分散値を見積もることが可能となるが、膨大な計算回数は、計算処理に時間及び手間がかかるため、実用上計算処理にとって大きな負担となるという課題がある。
【0025】
上記の課題を解決するため、本発明は、膨大な回数の計算処理を行うことなく、推定結果の不確かさを表す分散値の計算を高速に行うことが可能な、ニューラルネットワークを用いて推定処理を行う情報推定装置及び情報推定方法を提供することを目的とする。
【課題を解決するための手段】
【0026】
上記の目的を達成するため、本発明によれば、入力データの一部を欠損させるドロップアウト層と、重みの計算を行うFC層又はコンボリューション層との組み合わせからなる一体化層を持つとともに、前記一体化層の前及び後の少なくとも一方に非線形関数を用いた計算を行う活性化層を持つニューラルネットワークを用いて推定処理を行う情報推定装置であって、
前記活性化層に入力される多変量分布に係るデータを参照して、前記活性化層における計算を経て前記活性化層から出力される多変量分布の分散値をゼロに設定することができるか否かを判断するデータ解析部と、
前記推定処理において前記一体化層で計算を行う際に、前記データ解析部で前記分散値をゼロに設定することができると判断された多変量分布に関連した計算をスキップする推定処理部とを、
有する情報推定装置が提供される。
【0027】
また、上記の目的を達成するため、本発明によれば、入力データの一部を欠損させるドロップアウト層と、重みの計算を行うFC層又はコンボリューション層との組み合わせからなる一体化層を持つとともに、前記一体化層の前及び後の少なくとも一方に非線形関数を用いた計算を行う活性化層を持つニューラルネットワークを用いて推定処理を行う情報推定方法であって、
前記活性化層に入力される多変量分布に係るデータを参照して、前記活性化層における計算を経て前記活性化層から出力される多変量分布の分散値をゼロに設定することができるか否かを判断するデータ解析ステップと、
前記推定処理において前記一体化層で計算を行う際に、前記データ解析ステップで前記分散値をゼロに設定することができると判断された多変量分布に関連した計算をスキップする推定処理ステップとを、
有する情報推定方法が提供される。
【発明の効果】
【0028】
本発明は、ニューラルネットワークによる推定技術に関し、膨大な回数の計算処理を行うことなく、推定結果の不確かさを表す分散値の計算を高速に行うことができるようになるという効果を有し、ニューラルネットワークによる推定結果に対する信頼性を迅速かつ容易に判断することが可能となる。また、本発明によれば、信頼性に応じて推定結果を採用するか否かの判断や、他のベイズ推定などによる推定結果との融合を行うか否かの判断などが可能となり、ニューラルネットワークの適用範囲を大きく広げることができる。
【図面の簡単な説明】
【0029】
図1】ニューラルネットワークを使用した従来の推定器から得られる出力値を示すグラフであり、(a)は、1回の計算で得られた出力値の様子を示すグラフであり、(b)は、複数回の計算で得られた出力値の様子を示すグラフであり、(c)は、複数回の計算で得られた出力値のヒストグラムを示すグラフである。
図2】本発明の実施の形態の前提となる推定計算が扱うニューラルネットワークの部分的構造の一例を示す図であり、(a)は、DF1層と活性化層とDF2層とにより構成されたニューラルネットワークの一例を示す図、(b)は、DF1層と活性化層により構成されたニューラルネットワークの一例を示す図、(c)は、活性化層とDF2層により構成されたニューラルネットワークの一例を示す図である。
図3】本発明の実施の形態の前提となる推定計算において、DF1層の計算処理を模式的に示す図である。
図4】本発明の実施の形態の前提となる推定計算において、DF2層の計算処理を模式的に示す図である。
図5】本発明の実施の形態の前提となる推定計算において、DF1層での平均値及び分散値の計算処理の一例を示すフローチャートである。
図6】本発明の実施の形態の前提となる推定計算において、DF1層での共分散値の計算処理の一例を示すフローチャートである。
図7】本発明の実施の形態の前提となる推定計算において、DF2層での平均値及び分散値の計算処理の一例を示すフローチャートである。
図8】本発明の第1の実施の形態における情報推定装置の構成の一例を示すブロック図である。
図9】本発明の第1の実施の形態において、活性化関数として用いられるReLU関数に関連したグラフであり、(a)は、活性化関数として用いられるReLU関数の一例を示すグラフ、(b)は、活性化関数に入力される分布(負の領域に偏った分布)の一例を示すグラフ、(c)は、活性化関数に入力される分布が負の領域に偏った分布である場合における活性化関数からの出力の一例を示すグラフ、(d)は、活性化関数に入力される分布(正の領域に偏った分布)の一例を示すグラフ、(e)は、活性化関数に入力される分布が正の領域に偏った分布における活性化関数からの出力の一例を示すグラフである。
図10】本発明の第1の実施の形態において、活性化関数として用いられるシグモイド関数に関連したグラフであり、(a)は、活性化関数として用いられるシグモイド関数の一例を示すグラフ、(b)は、活性化関数に入力される分布(負の領域に偏った分布)の一例を示すグラフ、(c)は、活性化関数に入力される分布が負の領域に偏った分布である場合における活性化関数からの出力の一例を示すグラフ、(d)は、活性化関数に入力される分布(正の領域に偏った分布)の一例を示すグラフ、(e)は、活性化関数に入力される分布が正の領域に偏った分布である場合における活性化関数からの出力の一例を示すグラフである。
図11】本発明の第1の実施の形態において、負の領域に偏った分布が活性化層に入力された場合に、その出力がデルタ関数で近似される様子を模式的に示す図である。
図12】本発明の第1の実施の形態において、ガウス分布が負の領域に偏っていると判断する基準の一例を説明するための図である。
図13】本発明の第1の実施の形態において、分散値と共分散値との関係を説明するための図であり、(a)は、2つのインデックスに関する分散値が両方共ゼロではない場合に、これらの共分散値はある広がりを持った分布をなす様子を示す図、(b)は、2つのインデックスに関する分散値の一方がゼロの場合に、これらの共分散値はゼロになることを示す図、(c)は、2つのインデックスに関する分散値の両方がゼロの場合に、これらの共分散値はゼロになることを示す図である。
図14】本発明の第1の実施の形態において、DF1層での平均値及び分散値の計算処理の一例を示すフローチャートである。
図15】本発明の第1の実施の形態において、DF1層での共分散値の計算処理の一例を示すフローチャートである。
図16】本発明の第1の実施の形態において、DF2層での平均値及び分散値の計算処理の一例を示すフローチャートである。
図17】本発明の第1の実施の形態における提案手法を用いて得られた実験結果、及び、他の手法を用いた場合の実験結果(本発明の実施の形態の前提となる推定計算を用いた実験結果、非特許文献1で提案された技術を用いた実験結果)を示すグラフである。
【発明を実施するための形態】
【0030】
以下、本発明の第1及び第2の実施の形態について説明する。
【0031】
まず、本発明の第1及び第2の実施の形態の前提となるニューラルネットワークの推定計算(以下、本発明の実施の形態の前提となる推定計算、と記載する)の概要について説明する。本発明の実施の形態の前提となる推定計算は、本願と同一の発明者によって発明されたものであり、本出願人が先に出願した特願2016−252813号の明細書及び図面に記載されたものと同様である。なお、特願2016−252813号は本願の出願時には未公開であり、本発明に対する従来技術を構成するものではない。
【0032】
本発明の実施の形態の前提となる推定計算は、上述の非特許文献1で提案されたモンテカルロ的に分散値を計算する手法における計算処理の負担(膨大な計算回数に伴う時間及び手間)を軽減するために想到されたものであり、分散値の計算を解析的に行うものである。
【0033】
非特許文献1で提案されている推定計算は、ニューラルネットワークの推定計算時にモンテカルロ的にドロップアウトを用いてランダムな計算結果を繰り返し生成し、それらの計算結果を統計的に集計して出力値の分布を構築し、そこから分散値を求めるという手法を用いている。この場合、計算の繰り返し回数MCは、経験的には最低でもMC=200回以上とする必要があり、これよりも少ない場合には正確な分布形状や分散値を出すことができない。それに対し、本発明の実施の形態の前提となる推定計算では、モンテカルロ的な繰り返し計算を行うことなく、繰り返し計算の結果がなすであろう分布を解析的に直接求めることが可能であり、その分布から分散値を計算することが可能である。
【0034】
本発明の実施の形態の前提となる推定計算が扱うニューラルネットワークの部分的構造の一例を図2に示す。入力データの一部を欠損させるドロップアウト層と、重みの計算を行う全結合(Fully Connected:FC)層との組み合わせからなる一体化層とを持つニューラルネットワークは、例えば、図2(a)のような構造を部分的に有している。すなわち、入力側(入力ベクトルXin)から出力側(入力ベクトルXout)に、ドロップアウト1層、FC(Fully Connected)1層、活性化層、ドロップアウト2層、そして最後のFC(Fully Connected)2層がこの順で配列された構造を有しており、最終層から出力される値がニューラルネットワークの推定値となる。
【0035】
ドロップアウト層及びFC層では、一体となって連続した計算処理が行われるため、以下、ドロップアウト層とFC層とが一体となった層(ドロップアウトを備えたFC層)をまとめて一体化層(DF層)と呼ぶことがある。なお、図2(a)では、ニューラルネットワークの部分的構造は、DF1層(ドロップアウト1層とFC1層とをまとめた層)と、活性化層と、DF2層(ドロップアウト2層とFC2層とをまとめた層)とにより構成されているが、図2(a)に示す構造に限られるものではなく、例えば、図2(b)に示すように、DF1層、活性化層のみから構成されていてもよく、図2(c)に示すように、活性化層、DF2層のみから構成されていてもよい。
【0036】
例えば、図2(a)の部分的構造を持つニューラルネットワークにおいて、推定値の分散値を計算したいとする。なお、DF1層以前の層には、ドロップアウト層のようなランダム性を生む計算処理を行う層はないとする。この場合、DF1層への入力値は、分布をなす確率変数ではなく、通常のニューラルネットワークのように、ある固定値となる。
【0037】
以下、図3及び図4を参照しながら、どのように入力値が確率変数に変わり、分布をなして伝搬され、最終層で推定値として出力されるのかについて具体的に述べる。
【0038】
上述のように、DF1層への入力値は固定値である。したがって、DF1層への入力値XinDF1は、以下に示すようなnXinDF1次元のベクトルXinDF1である。ベクトルXinDF1のj番目の要素(インデックスj)はXinDF1jと表される。なお、明細書中の表記nXinDF1は、nの下付き添字がXinDF1であることを表す。
【0039】
【数2】
【0040】
図3に模式的に示すように、DF1層には入力ベクトルXinDF1が入力され、DF1層のドロップアウト1層にあらかじめ設定されたドロップアウトの確率pdropDF1、FC1層にあらかじめ設定された重みWDF1及びバイアスbDF1を用いた以下の計算が行われて、その計算結果が出力ベクトルXoutDF1として出力される。
【0041】
【数3】
【0042】
本発明の実施の形態の前提となる推定計算によると、DF1層からの出力値は、nXoutDF1次元のベクトルXoutDF1となり、このベクトルXoutDF1のi番目の要素は以下のとおりである。なお、明細書中の表記nXoutDF1は、nの下付き添字がXoutDF1であることを表す。
【0043】
【数4】
【0044】
さらに、ドロップアウトにより、右辺のWi,jDF1XinDF1j項(1≦j≦nXinDF1)が、確率pdropDF1でそれぞれランダムに消えることから、各項の和である左辺のxoutDF1iは“サンプリング和”としてとらえて計算することができる。サンプリング和は、もはや固定値ではなく、平均値ベクトルμDF1i、分散共分散行列ΣDF1iからなる多変量ガウス分布をなす確率変数となり、以下のように表される。
【0045】
【数5】
【0046】
【数6】
【0047】
【数7】
【0048】
【数8】
【0049】
【数9】
【0050】
以上が、図3に示した、固定値であるnXinDF1次元の入力ベクトルXinDF1がDF1層を経て、確率変数であるnXoutDF1次元の多変量ガウス分布となって出力される計算である。
【0051】
本発明の実施の形態の前提となる推定計算では、DF1層において、上述した平均値、分散値、共分散値を計算する式を用いた計算処理が行われる。この計算処理をプログラムの処理で表した場合には、以下のようなものとなる。
【0052】
【数10】
【0053】
【数11】
【0054】
上記のようにプログラムの処理で表された計算処理に関して、特にループ処理に着目して表現したフローチャートを図5及び図6に示す。図5は、本発明の実施の形態の前提となる推定計算において、DF1層での平均値及び分散値の計算処理の一例を示すフローチャートである。
【0055】
図5のフローチャートでは、ベクトルXoutDF1のnXoutDF1個の要素について、nXoutDF1回の平均値及び分散値の計算が実行される(ループL1)。ベクトルXoutDF1のi番目の要素(インデックスi)に関する平均値μDF1iの計算は、nXinDF1回の平均値計算処理(ステップS101)を含み(ループL2)、ベクトルXoutDF1のi番目の要素(インデックスi)に関する分散値diag(ΣDF1iの計算は、nXinDF1回の分散値計算処理(ステップS102)を含んでいる(ループL3)。したがって、nXoutDF1回のループはnXinDF1回のループを含んでおり、ベクトルXoutDF1のすべての要素について平均値及び分散値を計算するためには、平均値及び分散値のそれぞれについて、nXoutDF1×nXinDF1回の計算が実行される必要がある。
【0056】
また、図6は、本発明の実施の形態の前提となる推定計算において、DF1層での共分散値の計算処理の一例を示すフローチャートである。ベクトルXoutDF1の共分散値の計算では、ベクトルXoutDF1のある要素(例えばi1番目の要素)と別の要素(例えばi2番目の要素:ただし、i1≠i2)との組み合わせに関して、nXinDF1回の共分散値計算処理(ステップS201)を実行する必要がある。すなわち、図6のフローチャートでは、nXoutDF1×nXoutDF1個の組み合わせについて、nXoutDF1×nXoutDF1回の計算が実行され(ループL4及びループL5)、さらにこれらのループL4及びループL5が、nXinDF1回の共分散値計算処理(ステップS201)を含んでいる(ループL6)。したがって、共分散値の計算については、nXoutDF1×nXoutDF1回のループがnXinDF1回のループを含んでおり、ベクトルXoutDF1のすべての要素に関する共分散値を計算するためには、およそnXoutDF1×nXoutDF1×nXinDF1回の計算が実行される必要がある。
【0057】
なお、共分散値の計算では対角項(i1=i2)に関する計算は実行されないことから、計算回数はnXoutDF1×nXoutDF1×nXinDF1回よりも少ないが、nXoutDF1×nXoutDF1×nXinDF1と同程度のオーダー(桁数)の計算回数が必要であることは明らかである。また、もちろん、分散共分散行列の対称性を利用することで、片方の非対角項だけを計算し、他方の非対角項をその反転で計算することは可能ではあるが、計算量は半分程度削減されるにすぎない。
【0058】
また、本発明の実施の形態の前提となる推定計算では、入出力データを混合ガウス分布とみなすことを提案している。この場合、データを構成するそれぞれのガウス分布に対し、上述した処理を独立に行う必要があるが、ここでは説明を省略する。
【0059】
例えば図2(a)の部分的構造を持つニューラルネットワークでは、DF1層から出力された出力値XinDF1(確率変数であるnXoutDF1次元の多変量ガウス分布)は、活性化層に入力される。活性化層では、例えばReLu(Rectified Linear Unit)関数やシグモイド関数などの活性化関数(非線形関数)による計算処理が実行された後、入力ベクトルと同一の次元数(nXoutDF1次元)のベクトルが出力され、DF2層に入力される。したがって、DF2層の入力ベクトルの次元数nXinDF2は、DF2層の入力ベクトルの次元数nXoutDF1と同じになる(nXoutDF1=nXinDF2)。なお、明細書中の表記nXinDF2は、nの下付き添字がXinDF2であることを表す。
【0060】
DF2層に入力される多変量ガウス分布は、以下のように表される。
【0061】
【数12】
【0062】
なお、μinDF2は、平均を示すnXinDF2次元ベクトルであり、インデックスi番目(1≦i<nXinDF2)の要素をμinDF2と表記する。また、ΣinDF2は、nXinDF2×nXinDF2次元の分散共分散行列であり、インデックス(i,i)番目(1≦i≦nXinDF2)の対角項は分散値を示し、この要素をΣinDF2iと表記する。一方、インデックス(i,j)番目(1≦i,j,i≠j≦nXinDF2)の非対角項は共分散値を示し、この要素をΣinDF2i,jと表記する。
【0063】
図4に模式的に示すように、DF2層には入力ベクトルXinDF2が入力され、DF2層のドロップアウト2層にあらかじめ設定されたドロップアウトの確率pdropDF2、FC2層にあらかじめ設定された重みWDF2及びバイアスbDF2を用いた以下の計算が行われて、その計算結果が出力ベクトルXoutDF2として出力される。
【0064】
【数13】
【0065】
本発明の実施の形態の前提となる推定計算によると、DF1層での計算処理と同様に、DF2層での出力ベクトルXoutDF2も、ドロップアウトによるサンプリング和と考え、以下のように定義されるnXoutDF2次元の多変量ガウス分布となる。なお、明細書中の表記nXoutDF2は、nの下付き添字がXoutDF2であることを表す。
【0066】
【数14】
【0067】
なお、μoutDF2は、平均を示すnXoutDF2次元ベクトルであり、インデックスi番目(1≦i<nXoutDF2)の要素をμoutDF2と表記する。また、ΣoutDF2は、nXoutDF2×nXoutDF2次元の分散共分散行列であり、インデックス(i,i)番目(1≦i≦nXoutDF2)の対角項は分散値を示し、この要素をΣoutDF2iと表記する。一方、インデックス(i,j)番目(1≦i,j,i≠j≦nXoutDF2)の非対角項は共分散値を示し、この要素をΣoutDF2i,jと表記する。
【0068】
【数15】
【0069】
【数16】
【0070】
【数17】
【0071】
【数18】
【0072】
なお、XoutDF2の共分散の部分は、DF2層がニューラルネットワークの最終層であり、最終層から出力される出力値(すなわち、ニューラルネットワークによる推定値)の不確かさを示すのは分散値のみであるので、興味の対象外として計算する必要はない。ただし、この後、DF2層が最終層ではなく、DF2層からの出力値が更なるドロップアウト層(3つめのドロップアウト層)に入力される場合には、DF2層の出力値についても共分散値を計算する必要がある。
【0073】
本発明の実施の形態の前提となる推定計算では、DF2層において、上述した平均値、分散値を計算する式を用いた計算処理が行われる。この計算処理をプログラムの処理で表した場合には、以下のようなものとなる。
【0074】
【数19】
【0075】
上記のようにプログラムの処理で表された計算処理に関して、特にループ処理に着目して表現したフローチャートを図7に示す。図7は、本発明の実施の形態の前提となる推定計算において、DF2層での平均値及び分散値の計算処理の一例を示すフローチャートである。図7のフローチャートでは、ベクトルXoutDF2のnXoutDF2個の要素について、nXoutDF2回の平均値及び分散値の計算が実行される(ループL7)。ベクトルXoutDF2のある要素(例えばi番目の要素)に関する平均値μoutDF2i、ListWDF2μinDF2iの分散値の計算は、nXinDF2回の平均値計算処理(ステップS301)を含んでいる(ループL8)。一方、分散値については、ループL9におけるnXinDF2回のVarWXinDF2i,jjの和の計算(ステップS302)と、ループL10及びループL11におけるnXinDF2×nXinDF2個のインデックスの組み合わせに関するCovWXinDF2i,jj1,jj2,jj1<jj2の和の計算(ステップS303)とを実行した後、これらの結果から、DF2層の出力値の分散値diag(ΣoutDF2iを計算する(ステップS304)。したがって、分散値の計算については、nXoutDF2回のループがnXinDF2×nXinDF2回のループを含んでおり、ベクトルXoutDF2のすべての要素に関する分散値を計算するためには、およそnXoutDF2×nXinDF2×nXinDF2回の計算が実行される必要がある。
【0076】
以上のように、本発明の実施の形態の前提となる推定計算では、DF1層及びDF2層における計算処理が膨大な回数の計算を必要とするループ処理を含んでいる。例えばAlexNetなどの代表的なニューラルネットワークでは、FC層の入力ベクトルの次元数nXinFC2は4096であり、FC層の出力ベクトルの次元数nXoutFC2は1000であることから、上述したDF2層の分散値の計算だけでも1000×4096×4096回の繰り返し計算が必要となってしまう。したがって、本発明の実施の形態の前提となる推定計算においても、ニューラルネットワークのニューロン数が大きく、さらに層の数が増えた場合には、膨大な回数の計算を実行する必要があるという問題点がある。
【0077】
以下、本発明の第1及び第2の実施の形態について説明する。本発明の第1の実施の形態における推定計算は、上述した本発明の実施の形態の前提となる推定計算を更に改良することによって、不確かさを表す分散値をより高速に計算できるようにしたものである。また、本発明の第2の実施の形態における推定計算は、本発明の第1の実施の形態における推定計算を改良して、推定結果が不確かであると判断された場合に計算を中断することにより、不要な計算処理が行われないようにしたものである。
【0078】
<第1の実施の形態>
本発明の第1の実施の形態における推定計算では、ニューラルネットワークの活性化層において、入力される分布が、出力では平均値及び分散値がほぼゼロとなるような圧縮されたつぶれた分布になり、分布計算がそれ以降の層で必要ではない場合があることに着目し、圧縮されたつぶれた分布によって平均値及び分散値がゼロと設定(近似)することができる場合とそうではない場合とに単純に分けて計算することで、ループ処理における計算の回数を低減させ、高速の計算処理を実現する。なお、活性化層に入力された多変量分布(例えば、多変量ガウス分布)が、活性化層における計算を経て出力される場合に、平均値及び分散値をゼロと設定(近似)することのできる分布(つぶれた分布)の形状を有する場合があることについては後述する。
【0079】
図8は、本発明の第1の実施の形態における情報推定装置の構成の一例を示すブロック図である。図8に示す情報推定装置10は、推定計算部20、データ解析部30を有する。図8に示す情報推定装置10は、ニューラルネットワークを用いて推定処理を行う推定器であり、ニューラルネットワークは、入力データの一部を欠落させるドロップアウト層、重みの計算を行うFC層(Fully Connected層)、非線形関数を用いた計算を行う活性化層を持っている。なお、FC層は、コンボリューション層(畳み込み層)と数学的に同等とみなすことができる。
【0080】
図8に示すブロック図は、本発明に関連した機能を表しているにすぎず、実際の実装では、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせによって実現されてもよい。ソフトウェアで実装される機能は、1つ又は複数の命令若しくはコードとして任意のコンピュータ可読媒体に記憶され、これらの命令又はコードは、CPU(Central Processing Unit:中央処理ユニット)やGPU(Graphics Processing Unit:グラフィックスプロセッシングユニット)などのハードウェアベースの処理ユニットによって実行可能である。また、本発明に関連した機能は、IC(Integrated Circuit:集積回路)やICチップセットなどを含む様々なデバイスによって実現されてもよい。
【0081】
推定計算部20は、従来のニューラルネットワークと同様に、各層において入力データの計算処理を行って推定結果を出力する機能に加えて、本発明の実施の形態の前提となる推定計算に係る機能(例えば、図5図7に示すフローチャートを用いて説明した計算処理を実行する機能)を有しており、入力データがドロップアウトにより、どのような分布を持って各層に伝搬されて出力されるのかについて、分布の形状を計算し、最終的な出力層から出力される分散値を計算するよう構成されている。
【0082】
一方、データ解析部30は、本発明の第1の実施の形態に特徴的な処理を実行する機能を有している。具体的には、データ解析部30は、ニューラルネットワークの活性化層に入力される分布が、活性化層における計算処理によって、活性化層から圧縮されたつぶれた分布として出力されるものであるかどうかを判断する機能を有している。そして、データ解析部30は、活性化層から圧縮されたつぶれた分布として出力されると判断できる分布については、計算を実行しない(計算をスキップする)よう制御することで計算回数を大幅に低減させて、計算時間の短縮及び計算処理の高速化を実現する。
【0083】
以下、データ解析部30において実行される、活性化層での計算処理を考慮した近似処理について説明する。上述した説明では、本発明の実施の形態の前提となる推定計算の膨大な計算回数を示すことを目的としていたため、仮に活性化層では何も処理されないと仮定して説明を行った。しかしながら、実際には、活性化層において活性化関数を用いた計算処理が実行される。以下、図9(a)〜図9(e)、図10(a)〜図10(e)を参照しながら、活性化関数として通常用いられるReLU関数及びシグモイド関数について説明する。
【0084】
図9(a)は、活性化関数として用いられるReLU関数の一例を示す図である。ReLU関数は、数式では以下のように表される。
【0085】
【数20】
【0086】
max(x,y)はx>yの場合にはxとなり、それ以外はyとなる関数である。すなわち、関数f(x)=max(x,0)は、入力値xが負の場合には出力値はゼロとなり、入力値xがゼロ以上の場合には、そのまま入力値xが出力値xとなる。この関数f(x)に上述のようなガウス関数からなる分布(ガウス分布)が入力値として計算された場合、その出力値はどのような分布になるのか、入力されたガウス分布の平均値に応じてどのような場合があるのかについて図9(b)〜図9(e)に示す。
【0087】
例えば、図9(b)に示すように入力値のガウス分布の平均値が負の場合には、出力値である関数f(x)は図9(c)に示すようになる。図9(b)では、ガウス分布を構成する値のほとんどが負の領域にあるため、ReLU関数による出力値f(x)は、ほとんどゼロとなる。すなわち、図9(c)に示すように、入力されたガウス分布は、かろうじて入力値のガウス分布の正の領域がそのままの形状を残しているものの、大部分を占める負の領域の値がゼロの近くに押しつぶされた状態となり、デルタ関数のような尖ったピークの状態となる。
【0088】
一方、図9(d)に示すように入力値のガウス分布の平均値が正の場合には、関数f(x)は図9(e)に示すようになる。この場合には、ガウス分布の値のほとんどが正の領域にあるため、ReLU関数による出力値f(x)は、大部分が入力値と同じ値となって、分布がほとんど変わらない状態となる。
【0089】
また、図10(a)は、活性化関数として用いられるシグモイド関数の一例を示す図である。シグモイド関数は、数式では以下のように表される。
【0090】
【数21】
【0091】
同様に、この関数f(x)に上述のようなガウス関数からなる分布(ガウス分布)が入力値として計算された場合、その出力値はどのような分布になるのか、入力されたガウス分布の平均値に応じてどのような場合があるのかについて図10(b)〜図10(e)に示す。
【0092】
例えば、図10(b)に示すように入力値のガウス分布の平均値が負の場合には、出力値である関数f(x)は図10(c)に示すようになる。活性化関数がReLU関数の場合と同様に、活性化関数がシグモイド関数の場合も、入力値のガウス分布のほとんどが負の領域にある場合には、シグモイド関数による出力値f(x)はほとんどゼロとなり、図10(c)に示すように、出力値の分布はゼロの近くに押しつぶされた状態となる。
【0093】
一方、図10(d)に示すように入力値のガウス分布の平均値が正の場合には、関数f(x)は図10(e)に示すようになる。この場合には、ガウス分布の値の大部分が正の領域にあるため、図10(d)に示すように、シグモイド関数による出力値f(x)は、分布がほとんど1の値の近くに押しつぶされた状態となる。
【0094】
上述のように、活性化関数f(x)がReLU関数、シグモイド関数のどちらの場合も、入力された分布の大部分が負の領域に偏って存在する場合には、出力値f(x)の分布は、x=0の付近に集中した分布を有するデルタ関数のような形状となる。本発明の第1の実施の形態では、上述のような活性化関数の性質に着目して、データ解析部30が、活性化層に入力される分布が負の領域に偏っているかどうかを判断し、活性化層に入力される分布が負の領域に偏っていると判断した場合には、図11に示すように、その入力された分布に応答して活性化層から出力される分布はデルタ関数の状態(平均値=0、分散値=0)になるとみなす。なお、活性化層に入力される分布が負の領域に偏っていないと判断された場合、その分布については、通常と同様の計算処理を行ってもよく、あるいは、任意の手法を用いた近似計算を行ってもよい。
【0095】
活性化層に入力される分布が負の領域に偏っているかどうかは、任意の条件に基づいて判断することが可能であるが、一例として、分布の平均値μと、その分布の幅、つまり標準偏差σ(あるいは分散値の平方根)を基準として判断することが可能である。例えば、活性化層へ入力されるガウス関数、活性化層から出力されるガウス関数が、以下のように平均値と標準偏差とで定義されるとする。
【0096】
【数22】
【0097】
このとき、例えば図12に示すように、入力されるガウス分布の平均値μinが負の領域に存在し、さらに、ガウス分布の分布幅を表す標準偏差σinに負の符号をかけた値より小さい場合に、ガウス分布は負の側にあると判断してもよい。この条件は、以下の式のように表される。
【0098】
【数23】
【0099】
また、場合によっては、以下の式のように、入力されるガウス分布の平均値μinが、その標準偏差σinにある負の定数−cをかけた値より小さい場合に、ガウス分布は負の側にあると判断してもよい。
【0100】
【数24】
【0101】
例えば、図9(a)〜図9(e)に示すReLU関数の例において、以下に示すような関数ActivationLayerを用いて、活性化層に入力されたガウス分布が負の領域に偏っているかどうかを判断することで、活性化層から出力されるガウス分布の平均と分散値を定めることが可能である。
【0102】
【数25】
【0103】
上記の関数ActivationLayerは、単純に、活性化層に入力されるガウス分布が負の領域に偏っていると判断された場合(μin<−σin)には、活性化層から出力される分布が平均値及び分散値がゼロであるデルタ関数になるとみなし、一方、そうではない場合には、出力される分布は、入力されたガウス分布の形状のままとするものである。
【0104】
あるいは、活性化層に入力されるガウス分布が負の領域に偏っているとみなすことができる場合(例えば、μin<−σin)には、true(真)を返し、そうではない場合にはfalse(偽)を返すような関数ActivationLayerMakeZeroを設定してもよい。
【0105】
【数26】
【0106】
上記のような関数を用いた場合には、DF1層及びDF2層における計算処理が大幅に低減される。以下、一例として、図2(a)の部分的構造を持つニューラルネットワーク(DF1層、活性化層、DF2層により構成されたニューラルネットワーク)を参照しながら説明する。
【0107】
まず、DF1層においては、XoutDF1の分散値を計算した後、さらにXoutDF1の共分散値を計算する必要がある。なお、本発明の実施の形態の前提となる推定計算では、上述のように、およそnXoutDF1×nXoutDF1×nXinDF1回の計算を行う必要があった。
【0108】
しかし、共分散値offdiag(ΣDF1i1,i2,i1≠i2は、あるインデックスi1とi2(ただし、1≦i1,i2≦nXoutDF1,i1≠i2)の組み合わせに対するそれぞれの分布Xouti1DF1、Xouti2DF1から計算されるものであり、どちらか一方の分散値がゼロである場合(分布がデルタ関数として表される場合)、すなわち、var(XoutDF1i1及びvar(XoutDF1i2の少なくとも一方がゼロの場合には、共分散値Cov(XoutDF1i1,i2をゼロとみなすことができる。その様子を図8に示す。2つのインデックスの組み合わせにおいて、図13(a)に示すように両方の分散値がゼロではない場合には、共分散値はある広がりを持った分布をなす一方、図13(b)や図13(c)に示すように、少なくとも一方の分散値がゼロである場合には、共分散値はゼロになるとみなせる。
【0109】
したがって、共分散値を求める場合には、2つのインデックスのすべての組み合わせを計算する必要はなく、負の領域に偏っていない分布(活性化層から出力される分布の分散値をゼロとみなすことができない分布)同士の組み合わせに関してのみ計算すればよいことになる。この点に着目し、以下のプログラムの処理(DF1層における処理)で表されるように、ZeroFlag(i)というブーリアン型のデータを記録するテーブルを用意して、負の領域に偏っている分布(活性化層から出力される分布の分散値をゼロとみなすことができる分布)のインデックスにはtrue(真)を返し、一方、負の領域に偏っていない分布(活性化層から出力される分布の分散値をゼロとみなすことができない分布)のインデックスにはfalse(偽)を返すようにしておく。
【0110】
【数27】
【0111】
また、以下のプログラムの処理(DF1層における処理)で表されるように、共分散値の計算では、ZeroFlag(i)のテーブルを参照し、true(真)が記録されたインデックスについては計算をスキップする一方、false(偽)が記録されたインデックスについてのみ計算を行う。これにより、DF1層における共分散値の計算処理では、ZeroFlagにfalse(偽)が設定されているものだけが計算対象となるため、計算回数が大幅に低減される。
【0112】
【数28】
【0113】
上記のようにプログラムの処理で表されたDF1層における計算処理に関するフローチャートを図14及び図15に示す。なお、ここでは、上述した図5及び図6のフローチャートと同一の処理については説明を省略する。
【0114】
図14に示すフローチャートでは、最初に、すべての共分散値をゼロにする初期化する処理を行う(ステップS401)。また、あるインデックスiの平均値μDF1i及び分散値diag(ΣDF1iが計算された時点で、さらに、分布が負の領域に偏っているかどうかを判断し、分布が負の領域に偏っている場合にはZeroFlag(i)にtrue(真)を記録し、そうではない場合には、ZeroFlag(i)にfalse(偽)を記録する(ステップS402)。なお、ここでは、一例として、関数ActivationLayerMakeZeroを使用し、例えば「μin<−σin」の場合にZeroFlag(i)にtrue(真)を記録し、そうではない場合にZeroFlag(i)にfalse(偽)を記録しているが、この条件に限定されるものではない。
【0115】
また、図15に示すフローチャートでは、ZeroFlag(i1)がfalse(偽)かどうかの判断(ステップS501)、及び、ZeroFlag(i2)がfalse(偽)かどうかの判断(ステップS502)を行って、ZeroFlag(i1)及びZeroFlag(i2)の両方がfalse(偽)の場合のみ、非ゼロとなる共分散値の計算処理を行う。このとき、ZeroFlag(i1)がtrue(真)の場合、又は、ZeroFlag(i2)がtrue(真)の場合には共分散値の計算処理はスキップされるので、計算回数を大幅に低減させることができる。なお、計算処理がスキップされた共分散値は、ステップS401の初期化処理によって設定されたゼロとなる。
【0116】
さらに、DF2層においては、以下のプログラムの処理(DF2層における処理)で表される計算処理が行われる。なお、DF2層は最終層であり、上述したように、最終層から出力される出力値の不確かさを示すのは分散値のみであるので、ここでは、共分散値については興味の対象外として計算していない。
【0117】
【数29】
【0118】
上記のようにプログラムの処理で表されたDF2層における計算処理に関するフローチャートを図16に示す。なお、ここでは、上述した図7のフローチャートと同一の処理については説明を省略する。
【0119】
図16に示すフローチャートでは、最初に、すべての分散値をゼロにする初期化処理を行う(ステップS601)。また、分散値を計算する際には、ZeroFlag(jj)がfalse(偽)であるかどうかを判断し(ステップS602)、ZeroFlag(jj)がfalse(偽)であるVarWXinDF2i,jjのみについて計算する一方、ZeroFlag(jj)がtrue(真)である場合には計算をスキップする。さらに、ZeroFlag(jj1)がfalse(偽)かどうかの判断(ステップS603)、及び、ZeroFlag(jj2)がfalse(偽)かどうかの判断(ステップS604)を行って、ZeroFlag(jj1)及びZeroFlag(jj2)の両方がfalse(偽)となる組み合わせのCovWXinDF2i,jj1,jj2,jj1<jj2のみについて計算する一方、ZeroFlag(jj1)がtrue(真)の場合、又は、ZeroFlag(jj2)がtrue(真)の場合には計算をスキップする。これにより、DF2層における分散値の計算処理では、ZeroFlagにfalse(偽)が設定されているものだけが計算対象となるため、計算回数が大幅に低減される。
【0120】
以上説明した本発明の第1の実施の形態における処理は、ループによる繰り返し計算の処理を“行列”計算としてとらえた場合、活性化関数における計算処理で大半の分散値がゼロになることを考慮して行列をスパース化することで、計算量の削減と計算時間の短縮による計算の高速化を実現している、と言うことができる。
【0121】
なお、上述の本発明の第1の実施の形態における処理は、図2(a)に示すような活性化層が2つのDF層で挟まれたニューラルネットワークの構造に基づいて説明を行っているが、こうした構造に限定されるものではない。本発明の第1の実施の形態は、活性化層に入力された分布が負の領域に偏っている場合には、活性化層から出力される分布(例えば、多変量混合ガウス分布)の平均値及び分散値がほぼゼロとなるデルタ関数のような状態に近似できることに着目し、このような分布を持つ要素については計算をスキップすることで、計算量の削減と計算時間の短縮を図ることを特徴としている。したがって、例えば、図2(b)に示すようなDF層及び活性化層を含む構造や、図2(c)に示すような活性化層及びDF層を含む構造に対しても、本発明の第1の実施の形態における処理を適用することが可能である。
【0122】
また、上述した本発明の第1の実施の形態における提案手法を用いて実施された実験について説明する。実際に行われた実験では、まず、ImageNetが提供する画像を使い、ニューラルネットワークのAlexNetで1000クラス分類器として学習させた。そして、このニューラルネットワークを使って、フォワード計算で、ある入力画像に対して1000クラスそれぞれに相当する1000個のニューロンが出力した推定値の分散値を計算した。その実験結果を図17に示す。なお、グラフは縦軸が、不確かさに直結した分散値であり、横軸は、1000クラスのうちの最初の10クラスに相当する。
【0123】
図17には、クラスごとに3種類の棒グラフが並んでおり、左から、本発明の第1の実施の形態における提案手法を用いて実施された実験結果(参照符号X)、本発明の実施の形態の前提となる推定計算(特願2016−252813号における提案手法)を用いた実験結果(参照符号Y)、非特許文献1で提案された技術に基づく実験結果(200回のモンテカルロ的な繰り返し計算)(参照符号Z)を表している。図17に示されているとおり、それぞれの手法において同じような分散値が計算できていることから、本発明の第1の実施の形態における提案手法が近似計算を用いているにもかかわらず、推定結果の精度が維持できていることが分かる。また、本発明の実施の形態の前提となる推定計算では、推定結果を得るまでに20分かかっていたが、一方、本発明の第1の実施の形態における提案手法による推定計算によれば、15秒で推定結果を得ることができ、計算速度の大幅な向上が実現されている。
【0124】
<第2の実施の形態>
次に、本発明の第2の実施の形態について説明する。本発明の第2の実施の形態における推定計算は、最終層であるDF2層から出力される推定結果の不確かさを表す分散値が、事前に設定されたある閾値より大きくなると分かった時点で計算処理を中断することによって、計算処理の高速化を図るものである。
【0125】
本発明の第2の実施の形態における情報推定装置10の構成は、図8に示す情報推定装置10と同様であるが、データ解析部30は、さらに、ニューラルネットワークから最終的に出力される分散値(図2(a)〜図2(c)におけるDF2層から出力される推定値)がある閾値より大きくなるかどうかを判断し、その判断結果に応じて計算を終了する機能を有している。
【0126】
なお、ニューラルネットワークから最終的に出力される分散値は推定結果の不確かさを表している。例えば、ユーザがある程度信頼できる推定結果を求めているにもかかわらず、分散値が信頼性の判断基準となる閾値よりも大きくなってしまうことが分かった時点で計算処理を中断及び終了することにより、信頼性の低い推定結果を生じることになる不要な計算処理を中止することができる。
【0127】
本発明の第2の実施の形態は、上述した本発明の第1の実施の形態を改良することで実現できる。改めて、DF2層における分散値に着目すると、DF2層における分散値は以下のように表される。
【0128】
【数30】
【0129】
上記の(式1)の右辺第1項は、ドロップアウトの確率Pdropは1未満であり、分散値Varは正であることから常に正である。また、上記の(式1)の右辺第2項は、正の係数とVarWXinDF2i,jjの総和Σとをかけたものである。VarWXinDF2i,jjは、DF1層の出力XoutDF1のインデックスjjの分散値に(Wi,jjDF22をかけたものであり、分散値はゼロ以上であることから、VarWXinDF2i,jjは、必ずゼロ以上となる。
【0130】
【数31】
【0131】
したがって、また、上記の(式1)の右辺第2項も常に正である。
【0132】
一方、上記の(式1)の右辺第3項は、CovWXinDF2i,jj1,jj2,jj1<jj2の総和Σを含んでいる。CovWXinDF2i,jj1,jj2,jj1<jj2は、DF1層の出力XoutDF1のインデックスjj1とインデックスjj2の共分散値に、Wi,jj1DF2・Wi,jj2DF2をかけたものであり、正、ゼロ、負のいずれにもなり得る。
【0133】
【数32】
【0134】
ここで、ユーザが知りたいのは、ニューラルネットワークから最終的に出力される分散値そのものではなく、ニューラルネットワークから最終的に出力される推定結果の信頼性である場合には、推定結果の信頼性に直結したDF2層の分散値diag(ΣoutDF2iがある閾値より大きいか小さいかのみをユーザに提示すればよい。
【0135】
例えば、上記の(式1)の右辺の第1項〜第3項の加算において、まず先に、正か負か不確定な右辺第3項の計算する処理を行い(ステップA)、その後、必ずゼロ以上の値となる残りの右辺第1項及び第2項を足す処理を行う(ステップB)ことで、DF2層の分散値がある閾値より大きくなることを効率的に判断することができる。これにより、DF2層の分散値がある閾値より大きくなると判断できた時点で、推測結果の信頼性が低いとみなして、推測結果に係る計算処理を中断及び終了することができる。
【0136】
具体的には、まずDF1層においては、平均値及び分散値については上述した第1の実施の形態と同様の計算を行う一方、共分散値については、プログラムの処理で表した場合には以下のような計算を行う。
【0137】
【数33】
【0138】
上記の共分散値の計算では、第1の実施の形態と同様にZeroFlag(i)のテーブルがfalse(偽)であるものについてのみ計算を行っているが、さらに、CovWXinDF2i,jj1,jj2,jj1<jj2の総和Σ(TotalCovWXinDF2s)に係る計算(ステップA)を同時に行うことで、上記の(式1)の右辺第3項の値を算出する。
【0139】
また、DF2層においては、平均値については上述した第1の実施の形態と同様の計算を行う一方、分散値については、プログラムの処理で表した場合には以下のような計算を行う。
【0140】
【数34】
【0141】
DF2層では、分散値を求める際に、まず初期化されている分散値(初期値はゼロ)に、DF1層ですでに計算されている上記式(1)の右辺第3項(ステップAの計算結果)を足し、その後、この値に対してゼロ以上の値である残りの右辺第1項及び第2項を足す処理を行う。上記のプログラムの処理で表された計算では、まず右辺第1項を足し、さらに右辺第2項を計算して足していきながら、この計算結果があらかじめ設定された所定の閾値(Threshold)以上となった場合には、最終的に得られる分散値が所定の閾値より大きくなる(すなわち、指定されたレベルよりも信頼性が低い不確かな推定結果になる)と判断し、計算を中断及び終了する。このとき、例えば、現在の計算による推定結果信頼性が低い旨を提示するなど、計算が中断された理由をユーザに対して提示してもよい。
【産業上の利用可能性】
【0142】
本発明は、ニューラルネットワークを使った推定装置において、その推定結果の不確かさである分散値を高速に計算することが可能であり、ニューラルネットワークにかかる技術全般に適用可能である。さらに、本発明は、ニューラルネットワークの適用範囲を大きく広げることが可能であり、例えば、自動車や歩行者などの移動体に係る推定など、高速で信頼のできる処理が必要とされる環境で大いにその機能が発揮することが可能である。
【符号の説明】
【0143】
10 情報推定装置
20 推定計算部
30 データ解析部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17