(57)【特許請求の範囲】
【請求項１】
入力データを取得する取得部と、
ニューラルネットワークを用いて、前記入力データが満たす条件を１つ以上示す条件データを生成する生成部と、
前記条件データによって示される条件の少なくとも一部を満たす用例データに対応する正解データに基づいて決定された値を、前記入力データに対応する予測データとして決定する決定部と、
を有する情報処理装置。
【請求項２】
前記条件データに含める条件の候補である複数の候補条件が定められており、
前記ニューラルネットワークは、前記入力データが入力されたことに応じて、前記条件データに含める候補条件を表す情報を出力し、
前記生成部は、前記ニューラルネットワークの出力によって表される各候補条件の論理積を表す複合条件を、前記条件データが示す条件とする、請求項１に記載の情報処理装置。
【請求項３】
前記候補条件は、前記入力データから得られる複数の要素それぞれについて、閾値と大小関係との組み合わせを示す、請求項２に記載の情報処理装置。
【請求項４】
前記生成部は、前記ニューラルネットワークに対して繰り返し入力を行い、その入力ごとに出力される情報に基づいて、前記条件データに含める複数の候補条件を決定する、請求項２又は３に記載の情報処理装置。
【請求項５】
前記決定部は、前記条件データによって示される条件の少なくとも一部を満たす用例データに対応する正解データを取得し、前記取得した正解データを統計処理することで、前記予測データを生成する、請求項１乃至４いずれか一項に記載の情報処理装置。
【請求項６】
前記条件データに含める条件の候補である複数の候補条件が定められており、
前記決定部は、複数の前記候補条件の１つ以上の組み合わせごとに予測データが対応づけて記憶されている記憶装置から、前記生成された条件データに含まれている候補条件の組み合わせに対応づけられている前記予測データを取得し、前記取得した予測データを前記入力データに対応する予測データとして決定する、請求項１乃至４いずれか一項に記載の情報処理装置。
【請求項７】
前記条件データによって示される条件と前記予測データとを対応づけた予測ルールを出力する出力部を有する、請求項１乃至６いずれか一項に記載の情報処理装置。
【請求項８】
前記ニューラルネットワークのパラメータを更新する訓練部を有し、
前記訓練部は、
訓練入力データ及び訓練正解データを取得し、
前記訓練入力データを前記生成部に入力することで前記条件データを取得し、
前記取得した条件データによって示される条件の少なくとも一部を満たす前記用例データに対応づけられている前記正解データを取得し、その正解データを用いて予測データを決定し、
前記決定した予測データと前記訓練正解データとについて予測損失を算出し、その予測損失が減少するように前記ニューラルネットワークのパラメータを更新する、請求項１乃至７いずれか一項に記載の情報処理装置。
【請求項９】
コンピュータによって実行される制御方法であって、
入力データを取得する取得ステップと、
ニューラルネットワークを用いて、前記入力データが満たす条件を１つ以上示す条件データを生成する生成ステップと、
前記条件データによって示される条件の少なくとも一部を満たす用例データに対応する正解データに基づいて決定された値を、前記入力データに対応する予測データとして決定する決定ステップと、
を有する制御方法。
【請求項１０】
請求項９に記載の制御方法が有する各ステップをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はニューラルネットワークを利用した予測に関する。
【背景技術】
【０００２】
機械学習分野において、単純な条件を複数組み合わせるルールベースのモデルは、解釈が容易であるという利点がある。その代表例は決定木である。決定木のひとつひとつのノードは単純な条件を表しており、決定木をルートから葉に辿ることは、複数の単純な条件を組み合わせた判定ルールを用いて予測することに相当する。【０００３】
一方、ニューラルネットワークのような複雑なモデルを用いた機械学習が高い予測性能を示し、注目を集めている。特に、画像やテキストなど、複雑な表現を持つデータにおいて、決定木のようなルールベースのモデルに比べて高い予測性能を示している。【０００４】
ニューラルネットワークのような複雑なモデルの欠点は、その内部構造が複雑であるため、推論過程を解釈することが難しいことである。すなわち、人間がその予測の根拠を理解しづらいことである。たとえば、ＹＥＳかＮＯを出力する二値分類を行う場合を考える。ニューラルネットワークでは、ＹＥＳとＮＯのどちらであるかを高い精度で出力することができる。しかしながら、ＹＥＳとＮＯの判別過程が複雑であり、人間がその根拠を理解することは難しい。【０００５】
上記技術分野において、非特許文献１には、ニューラルネットワークを直接予測に使う代わりに、ニューラルネットワークにグラフィカルモデルのパラメータを調整させる技術が開示されている。この技術を用いることで、ニューラルネットワークの代わりに、ニューラルネットワークよりは単純なモデルであるグラフィカルモデルを人間に提示することができる。【０００６】
非特許文献２には、訓練済みのニューラルネットワークの構造を決定木で近似する技術が開示されている。この技術を用いることで、決定木で近似できるような単純なニューラルネットワークであれば、ニューラルネットワークを模倣した動作をする決定木を人間に提示することができる。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Maruan Al-Shedivat、Avinava Dubey、及び Eric P. Xing、「Contextual Explanation Networks」、［online］、２０１７年５月２９日、arXiv、［２０１８年３月１日検索］、インターネット<URL:https://arxiv.org/abs/1705.10301>
【非特許文献２】Jan Ruben Zilke、Eneldo Loza Mencia、及び frederik Janssen、「DeepRED - Rule Extraction from Deep Neural Networks」、Discovery Science、Springer, Cham、２０１７年、vol 9956
【発明の概要】
【発明が解決しようとする課題】
【０００８】
先行技術では、解釈の容易さと予測精度の高さが両立していない。例えば非特許文献１に開示されているグラフィカルモデルには、単純な条件の組み合わせに分解することはできないため、解釈が難しいという問題がある。また、非特許文献２に記載の技術では、利用できるニューラルネットワークのモデルが、決定木で近似できるような単純なモデルに限定されてしまうため、予測性能が低くなってしまう。【０００９】
本願発明は上記の課題に鑑みてなされたものであり、予測の根拠が容易に解釈でき、なおかつ精度が高い予測を実現することである。
【課題を解決するための手段】
【００１０】
本発明の情報処理装置は、１）入力データを取得する取得部と、２）ニューラルネットワークを用いて、入力データが満たす条件を１つ以上示す条件データを生成する生成部と、３）条件データによって示される条件の少なくとも一部を満たす用例データに対応する正解データに基づいて決定された値を、入力データに対応する予測データとして決定する決定部と、を有する。【００１１】
本発明の制御方法は、コンピュータによって実行される。当該制御方法は、１）入力データを取得する取得ステップと、２）ニューラルネットワークを用いて、入力データが満たす条件を１つ以上示す条件データを生成する生成ステップと、３）条件データによって示される条件の少なくとも一部を満たす用例データに対応する正解データに基づいて決定された値を、入力データに対応する予測データとして決定する決定ステップと、を有する。【００１２】
本発明のプログラムは、コンピュータに、本発明の制御方法が有する各ステップを実行させる。
【発明の効果】
【００１３】
本発明によれば、予測の根拠が容易に解釈でき、なおかつ精度が高い予測が実現される。
【図面の簡単な説明】
【００１４】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００１５】
【図１】本実施形態の情報処理装置が行う処理を概念的に示す図である。
【図２】２次元の特徴空間を例示する図である。
【図３】決定木、及び決定木に対応する予測ルールの一例を示す図である。
【図４】グラフィカルモデル、及びグラフィカルモデルに対応する予測式の一例を示す図である。
【図５】実施形態１の情報処理装置の機能構成を例示する図である。
【図６】情報処理装置を実現するための計算機を例示する図である。
【図７】実施形態１の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図８】ニューラルネットワークの構成を例示する図である。
【図９】条件生成ニューラルネットワークの出力を用いて条件データを生成する処理を概念的に例示する図である。
【図１０】閾値を出力する条件生成ニューラルネットワークを例示する図である。
【図１１】条件生成 RNN を利用して候補条件を選択する処理の流れを例示するフローチャートである。
【図１２】条件生成 RNN を利用して複合条件ベクトルが生成される流れを概念的に例示する図である。
【図１３】用例情報の構成をテーブル形式で例示する図である。
【図１４】用例情報の別の例を示す図である。
【図１５】分類問題を扱う場合における予測データを例示する図である。
【図１６】回帰問題を扱う場合における予測データを例示する図である。
【図１７】予測ルール出力部を有する情報処理装置を例示するブロック図である。
【図１８】予測ルールをグラフィカルに出力する例を示す図である。
【図１９】条件満足度を利用して予測データを決定する処理を概念的に例示する図である。
【図２０】実施形態２の情報処理装置の機能構成を例示するブロック図である。
【図２１】事前に生成した条件データを条件生成ニューラルネットワークで選択するケースを例示する図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。また、特に説明する場合を除き、各ブロック図において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【００１７】
［実施形態１］
＜概要＞
図１は、本実施形態の情報処理装置が行う処理を概念的に示す図である。情報処理装置２０００は、入力されたデータに関する予測を出力する。図１において、入力されるデータは入力データ１０であり、予測の結果を表すデータは予測データ２０である。入力に対する予測を行う処理としては、例えば、入力された画像データに含まれるオブジェクトのクラス（例えば、人、犬、車など）を予測する処理（分類問題）がある。この場合、入力された画像データが入力データ１０であり、予測されたクラスが予測データ２０である。
【００１８】
情報処理装置２０００は、入力データ１０を取得すると、ニューラルネットワーク（NN: Neural Network）３０を用いて、入力データ１０が満たす条件を表す条件データ５０を生成する。例えば入力データ１０として、「x1=0.5, x2=1.5」という２次元データが入力されたとする。この場合、入力データ１０が満たす条件としては、「x1>0 and x2<2」といった条件が考えられる。そこで例えば、ニューラルネットワーク３０は、「x1=0.5, x2=1.5」という入力データについて、「x1>0 and x2<2」という条件データを生成する。このように、要素名、閾値、及び不等号の組み合わせで表される条件は、人間がその意味を容易に理解できる（すなわち、解釈が容易である）。
【００１９】
なお、後述するように、条件データ５０によって条件付けられる要素（上述の x1 や x2）は、入力データ１０によって直接示されている値ではなく、入力データ１０から抽出される特徴（例えば、画像データから抽出される特徴量）であってもよい。この場合、入力データ１０から特徴を抽出した上で、その特徴についての条件を表す条件データ５０を生成する。特徴抽出についての詳細は後述する。
【００２０】
情報処理装置２０００は、用例データ４０を利用して予測データ２０を決定する。例えば用例データ４０は、上述した１つ以上の特徴の値を示す。各用例データ４０には、その特徴に対応する正解を表す正解データ４２が付されている。例えば上述したように、画像データに含まれるオブジェクトの分類を行うとする。この場合、正解が分かっている画像データから抽出した特徴を用例データ４０に示し、その正解を表す正解データ４２がその用例データ４０に対応づけられている。
【００２１】
情報処理装置２０００は、条件データ５０が示す条件の少なくとも一部を満たす用例データ４０に対応する正解データ４２に基づいて決定された値を、予測データ２０として出力する。この値は、情報処理装置２０００によって決定される値であってもよいし、予め計算されている値であってもよい。
【００２２】
図１では一例として、情報処理装置２０００が用例データ４０に対応する正解データ４２を用いて予測データ２０を算出するケースを示している。なお、以下の説明では、特に断らない限り、条件データ５０が示す条件の全てを満たす用例データ４０を特定するケースについて説明する。条件データ５０が示す条件の一部のみを満たす用例データ４０を利用するケースについては後述する。
【００２３】
情報処理装置２０００は、条件データ５０が示す条件を満たす用例データ４０を特定し、特定した用例データ４０に対応する正解データ４２を取得する。図１では、条件データ５０が示す「x1>0 and x2<2」という条件を満たす用例データ４０が２つあり、対応づけられている正解データ４２はいずれも「A」である。そこで情報処理装置２０００は、「A」という予測データ２０を算出する。
【００２４】
「x1>0 and x2<2」という条件データ５０から「A」という予測データ２０を決定することは、「x1>0 and x2<2 -> A」という予測ルールを作り出すことにも相当する。このような予測ルールは、人にとって解釈が容易なルールであると言える。すなわち、情報処理装置２０００は、入力データ１０が入力されたことに応じ、動的に解釈容易な予測ルールを生成し、その予測ルールに従う予測データ２０を出力するものであると言える。
【００２５】
なお、図１では説明を分かりやすくするために、条件データ５０によって示される条件を満たす各用例データ４０が、互いに同一の値を示す正解データ４２に対応づけられている。しかしながら後述するように、条件データ５０によって示される条件を満たす各用例データ４０は、必ずしも互いに同一の値を示す正解データ４２に対応づけられている必要はない。このようなケースについての説明も含め、正解データ４２を用いて予測データ２０を決定する方法の具体的な説明は後述する。
【００２６】
概念的には、条件データ５０を生成することは、１つ以上の特徴によって構成される特徴空間の中から、入力データ１０から抽出される特徴が属する部分空間を特定することに相当する。図２は、２次元の特徴空間を例示する図である。バツ印は、入力データ１０を表す。また、「Ａ」は、対応づけられている正解データがＡである用例データ４０を表し、「Ｂ」は、対応付けられている正解データがＢである用例データ４０を表す。情報処理装置２０００は、ニューラルネットワーク３０を利用して入力データ１０に対応する条件データ５０を生成することで、入力データ１０が属する部分空間を特定する。条件データ５０はその部分空間を表す。
【００２７】
ここで、互いに同じ部分空間に属する特徴（すなわち、類似する特徴）については、対応する出力も同じであると予想できる。そこで情報処理装置２０００は、入力データ１０から抽出された特徴と互いに同じ部分空間に属する各用例データ４０（すなわち、条件データ５０によって示される条件を満たす用例データ４０）に対応付けられている正解データ４２を利用して、入力データ１０に対応する予測データ２０を決定する。
【００２８】
＜作用効果＞
本実施形態の情報処理装置２０００によって奏される作用効果を明瞭にするため、本技術分野の前提技術である決定木とグラフィカルモデルを説明する。
【００２９】
図３は、決定木、及び決定木に対応する予測ルールの一例を示す図である。決定木の内部ノードはそれぞれ条件を表し、条件の真と偽に対応する２つの子ノードを持つ。決定木では、データが入力されると、根ノードから探索が開始される。入力されたデータについて、条件が真であれば真に対応する子ノード以下がさらに探索され、偽であれば偽に対応する子ノード以下がさらに探索される。この探索を繰り返し、葉ノードに到達すれば、葉ノードが持つ予測値を予測結果として出力する。
【００３０】
決定木のルートから葉ノードに至るパスは、それぞれ、条件部と帰結節から構成される予測ルールであると解釈できる。条件部は、根ノードから葉ノードへのパスで通過する内部ノードに含まれる条件を、否定と論理積（AND）で結合した複合条件で表される。図３の例では、決定木が持つ４つの葉ノードに対応する４つの予測ルールが示されている。
【００３１】
決定木に対応する予測ルールは、人間にとって解釈が容易である。なぜなら、一つの要素に関する単純な条件の組み合わせとして見ることができるためである。また、各条件の真偽は他の条件に影響されないため、それぞれの条件の真偽を人間が容易に判断できるためである。図３の例で言えば、「x0>1」が成り立つかどうかは要素 x0 の値だけを確認すれば良く、それ以外の要素 x1 は考慮する必要がない。また、この条件が成り立つかどうかは、真か偽のどちらかで曖昧さがない。
【００３２】
また、各条件が一つの要素と一つの閾値から構成されるとき、閾値自体が持つ意味が分かりやすく、それらの条件を組み合わせた複合的な条件の意味も分かりやすくなる。
【００３３】
例えば、機械の故障予測において、観測データが温度と湿度を表すとする。このとき、『「温度 > 45 and 湿度 > 70」という条件が成り立つ時に機械が故障する』という予測ルールが得られたとする。この予測ルールによれば、「温度が 45 度より高くなり、なおかつ湿度が 70% を超えると故障する」という直感的に分かりやすい知見が得られ、ユーザには有用である。
【００３４】
これに対し、複数の要素を組み合わせた値についての条件で予測ルールを生成すると、そのルールの解釈が難しくなる。例えば、『「3.5 * 温度 + 1.9 * 湿度 > 23」という条件が成り立つ時に機械が故障する』という予測ルールがあるとする。この場合、23 という閾値は、温度や湿度を直接的に表す値ではないため、その意味を直感的に理解することが難しい。すなわち、人は、この予測ルールを見ただけでは、温度と湿度がどのような値になると機械が故障している可能性があるのかを容易に把握できない。
【００３５】
決定木は、解釈が容易である一方で、予測性能が比較的低いという欠点がある。この欠点を解消するため、多数の要素を用いた複雑な条件をノードとして用いることによって予測性能を高めた決定木も提案されている。しかしながら、決定木を複雑にすると、予測性能が向上する反面、解釈が容易であるという利点が失われてしまう。
【００３６】
次に、グラフィカルモデルについて説明する。図４は、グラフィカルモデル、及びグラフィカルモデルに対応する予測式の一例を示す図である。図４に示すグラフィカルモデルは、ロジスティック回帰と呼ばれる最も単純なグラフィカルモデルのひとつである。w0、w1、w2 はそれぞれ、クラス C0、C1、C2 を予測するための重みベクトルである。
【００３７】
このようなグラフィカルモデルでは、各要素がそれぞれ連続値を取り、さらに各要素に連続値の重みが乗算され、それらの和によって予測結果が決まる。したがって、グラフィカルモデルに対応する予測ルール（予測式）は、人間にとって解釈が難しい。例えば、各要素の重要性は、他の要素の重みとの相対的な大きさによって決定されるため、個々の要素の重要性を独立に判断することができない。
【００３８】
前述した故障予測の例で言えば、グラフィカルモデルは、温度と湿度の値を複雑に組み合わせた予測式しか示すことができず、「温度が 45 度より高くなり、しかも湿度が 70% を超えると故障する」といった直感的な理解が可能な予測式を生成できない。
【００３９】
以上のことから、１）決定木には、予測ルールの解釈は容易であるものの予測性能が低いという問題があり、２）グラフィカルモデルには、予測性能は高いものの予測ルールの解釈が難しいという問題がある。
【００４０】
この点、本実施形態の情報処理装置２０００は、入力データ１０が入力されたことに応じ、単純な条件（例えば１つの要素に関する閾値条件）の組み合わせとして条件データ５０を生成し、その条件データ５０に基づいて定まる正解データ４２を利用して、予測データ２０を決定する。ここで、入力データ１０は、条件データ５０が示す条件を満たす。そのため、条件データ５０と予測データ２０との対応関係は、条件節と帰結節の関係にあると見ることができる。すなわち、情報処理装置２０００が行う予測は、単純な条件の組み合わせから成る条件節と、その条件によって導かれる予測データ２０を示す帰結節とで構成される予測ルールに従った予測に相当する。よって、情報処理装置２０００によれば、人間にとって解釈が容易な予測ルールをユーザに提供することが可能となる。
【００４１】
さらに情報処理装置２０００は、条件データ５０の生成にニューラルネットワーク３０を利用する。一般に、ニューラルネットワークは決定木と比べて予測精度が高い。よって、情報処理装置２０００を利用することで、決定木の様に理解が容易な予測ルールをユーザに提供することを可能にしつつ、精度の高い予測を行うことができる。
【００４２】
ここで、情報処理装置２０００における重要な利点の１つとして、「ニューラルネットワーク３０のモデルの複雑さに制限がない」ということがある。ニューラルネットワークを決定木で単純化して近似する手法（非特許文献２参照）では、決定木で近似できるような単純なモデルのニューラルネットワークしか利用できないという制限がある。そのため、予測精度を高くすることが難しい。
【００４３】
この点、情報処理装置２０００では、ニューラルネットワークに予測データ２０そのものを出力させるのではなく、予測データ２０の決定に利用する条件を、ニューラルネットワークに出力させる。よって、ニューラルネットワークそのものが予測ルールを表すわけではないため、利用するニューラルネットワークは決定木に近似可能である必要がない。そのため、任意の複雑さを持ったニューラルネットワークを用いることができる。
【００４４】
なお、図１を参照した上述の説明は、情報処理装置２０００の理解を容易にするための例示であり、情報処理装置２０００の機能を限定するものではない。以下、本実施形態の情報処理装置２０００についてさらに詳細に説明する。
【００４５】
＜情報処理装置２０００の機能構成の例＞
図５は、実施形態１の情報処理装置２０００の機能構成を例示する図である。情報処理装置２０００は、取得部２０２０、生成部２０４０、及び決定部２０６０を有する。取得部２０２０は、入力データ１０を取得する。生成部２０４０は、ニューラルネットワーク３０を用いて条件データ５０を生成する。条件データ５０は、入力データ１０が満たす１つ以上の条件の組み合わせである。決定部２０６０は、条件データ５０によって示される条件の少なくとも一部を満たす用例データ４０に対応する正解データ４２に基づいて決定された値を予測データ２０として決定する。
【００４６】
＜情報処理装置２０００のハードウエア構成＞
情報処理装置２０００の各機能構成部は、各機能構成部を実現するハードウエア（例：ハードワイヤードされた電子回路など）で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ（例：電子回路とそれを制御するプログラムの組み合わせなど）で実現されてもよい。以下、情報処理装置２０００の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
【００４７】
図６は、情報処理装置２０００を実現するための計算機１０００を例示する図である。計算機１０００は任意の計算機である。例えば計算機１０００は、Personal Computer（PC）やサーバマシンなどである。計算機１０００は、情報処理装置２０００を実現するために設計された専用の計算機であってもよいし、汎用の計算機であってもよい。
【００４８】
計算機１０００は、バス１０２０、プロセッサ１０４０、メモリ１０６０、ストレージデバイス１０８０、入出力インタフェース１１００、及びネットワークインタフェース１１２０を有する。バス１０２０は、プロセッサ１０４０、メモリ１０６０、ストレージデバイス１０８０、入出力インタフェース１１００、及びネットワークインタフェース１１２０が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ１０４０などを互いに接続する方法は、バス接続に限定されない。
【００４９】
プロセッサ１０４０は、CPU（Central Processing Unit）、GPU（Graphics Processing Unit）、FPGA（Field-Programmable Gate Array）などの種々のプロセッサである。メモリ１０６０は、RAM（Random Access Memory）などを用いて実現される主記憶装置である。ストレージデバイス１０８０は、ハードディスク、SSD（Solid State Drive）、メモリカード、又は ROM（Read Only Memory）などを用いて実現される補助記憶装置である。
【００５０】
入出力インタフェース１１００は、計算機１０００と入出力デバイスとを接続するためのインタフェースである。例えば入出力インタフェース１１００には、キーボードなどの入力装置や、ディスプレイ装置などの出力装置が接続される。ネットワークインタフェース１１２０は、計算機１０００を通信網に接続するためのインタフェースである。この通信網は、例えば LAN（Local Area Network）や WAN（Wide Area Network）である。ネットワークインタフェース１１２０が通信網に接続する方法は、無線接続であってもよいし、有線接続であってもよい。
【００５１】
ストレージデバイス１０８０は、情報処理装置２０００の各機能構成部を実現するプログラムモジュールを記憶している。プロセッサ１０４０は、これら各プログラムモジュールをメモリ１０６０に読み出して実行することで、各プログラムモジュールに対応する機能を実現する。
【００５２】
ストレージデバイス１０８０は、用例情報をさらに記憶していてもよい。ただし、用例情報は、計算機１０００から取得可能な情報であればよく、ストレージデバイス１０８０に記憶されていなければならないものではない。例えば用例情報は、ネットワークインタフェース１１２０を介して計算機１０００と接続されているデータベースサーバに記憶させておくことができる。
【００５３】
＜処理の流れ＞
図７は、実施形態１の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。取得部２０２０は、入力データ１０を取得する（Ｓ１０２）。生成部２０４０は、ニューラルネットワーク３０を用いて条件データ５０を生成する（Ｓ１０４）。決定部２０６０は、条件データ５０によって示される条件の少なくとも一部を満たす用例データ４０を特定する（Ｓ１０６）。決定部２０６０は、特定した用例データ４０に対応づけられた正解データ４２を用いて予測データ２０を決定する（Ｓ１０８）。
【００５４】
ただし、情報処理装置２０００によって実行される処理の流れは、図７に示す流れに限定されない。例えば、予め条件に対応づけられて定められている値を予測データ２０として利用するケースでは、決定部２０６０は、上述のＳ１０６とＳ１０８を実行する代わりに、条件データ５０によって示される条件に対応づけられている値を取得し、取得した値を予測データ２０として決定する。このように予め定められている値を予測データ２０として利用するケースについても、後に詳しく説明する。
【００５５】
＜入力データ１０の取得：Ｓ１０２＞
取得部２０２０は入力データ１０を取得する（Ｓ１０２）。入力データ１０は、目的とする予測を行うために必要なデータである。例えば前述したように、画像データに含まれるオブジェクトのクラスを予測する処理においては、入力データ１０として画像データを利用することができる。ただし、入力データ１０は画像データに限定されず、テキストデータなどの任意のデータを入力データ１０とすることができる。
【００５６】
なお、画像データやテキストデータに対して特徴抽出を行う前処理を行い、その結果として得られる１つ以上の特徴（以下、特徴ベクトル）を入力データ１０としてもよい。この場合、後述するニューラルネットワーク３０は、特徴抽出を行う機能を有する必要がない。
【００５７】
入力データ１０は、１つ以上の種々のデータ（数値データ、文字データ、又は文字列データなど）で構成される。入力データ１０が２つ以上のデータで構成される場合、入力データ１０は、例えばベクトル形式で表される。例えば、(0.5, 1.5) という形式のデータが入力データ１０として得られる。
【００５８】
取得部２０２０が入力データ１０を取得する方法は任意である。例えば取得部２０２０は、入力データ１０が記憶されている記憶装置から入力データ１０を取得する。入力データ１０が記憶されている記憶装置は、情報処理装置２０００の内部に設けられていてもよいし、外部に設けられていてもよい。その他にも例えば、情報処理装置２０００は、ユーザによる入力操作によって入力される入力データ１０を取得する。その他にも例えば、取得部２０２０は、他の装置によって送信される入力データ１０を受信することで、入力データ１０を取得する。
【００５９】
＜条件データ５０の生成：Ｓ１０４＞
生成部２０４０は、ニューラルネットワーク３０を用いて条件データ５０を生成する。ニューラルネットワーク３０は、入力データ１０が入力されたことに応じ、条件データ５０を生成するために必要な情報を出力するように構成される。以下、ニューラルネットワーク３０の構成について具体例を挙げて説明する。
【００６０】
図８は、ニューラルネットワーク３０の構成を例示する図である。図８において、ニューラルネットワーク３０は、特徴抽出ニューラルネットワーク３２及び条件生成ニューラルネットワーク３４を有する。なお、前述したように、入力データ１０として特徴ベクトルが入力される場合、ニューラルネットワーク３０は特徴抽出ニューラルネットワーク３２を有さなくてよい。
【００６１】
特徴抽出ニューラルネットワーク３２は、入力データ１０から特徴を抽出することで特徴ベクトルを生成するニューラルネットワークである。特徴抽出ニューラルネットワーク３２の各出力ノードは、特徴ベクトルを構成する各要素の値を出力する。例えば、畳み込みニューラルネットワークの特徴抽出層を、特徴抽出ニューラルネットワーク３２として利用することができる。ただし、特徴抽出ニューラルネットワーク３２のモデルは畳み込みニューラルネットワークには限定されず、既存の種々のモデル（例えば、多層パーセプトロンやリカレントニューラルネットワークなど）を利用することができる。
【００６２】
特徴抽出ニューラルネットワーク３２は、入力データ１０から特徴を抽出できるように予め学習させておく。なお、データから特徴を抽出するようにニューラルネットワークを学習させる技術には、既存の技術を利用することができる。
【００６３】
条件生成ニューラルネットワーク３４は、特徴抽出ニューラルネットワーク３２から出力された特徴ベクトルを用いて、条件データ５０を生成する。例えば条件生成ニューラルネットワーク３４は、条件データ５０に含める条件の候補（以下、候補条件と呼ぶ）の中から１つ以上を選択する。候補条件は、特徴ベクトルを構成する要素ごとに１つ以上定めておく。特徴ベクトルの各要素についての条件は、例えば、その要素についての閾値条件（閾値と不等号の組み合わせ）である。
【００６４】
例えば特徴ベクトル F が x1 と x2 という２つの要素で構成される（すなわち、F=(x1, x2)）とする。この場合、候補条件は x1 と x2 それぞれについて定められる「閾値、不等号」の組み合わせである。具体的には、x1 について「x1>0」、「x1>1」、「X1<0」、及び「x1<1」などの候補条件を定めておく。x2 についても同様である。このように要素ごとに定めた閾値条件は、前述したように人にとって解釈が容易である。
【００６５】
条件生成ニューラルネットワーク３４の各出力ノードは、予め候補条件のいずれかに対応づけられている。条件生成ニューラルネットワーク３４は、特徴ベクトルが入力されたことに応じ、各出力ノードから対応する候補条件を選択するか否かを示す値が出力されるように、予め学習させておく（学習の方法については後述の実施形態２で説明する）。
【００６６】
例えば条件生成ニューラルネットワーク３４の各出力ノードは、対応する候補条件を肯定形式（そのままの形）で選択する場合には 1 を出力し、対応する候補条件を否定形式（否定した形）で選択する場合には -1 を出力し、対応する候補条件を選択しない場合には 0 を出力する。「候補条件を否定形式で選択する」とは、例えば候補条件が「x1>0」である場合に、「X1>0」の否定である「x1<=0」を条件データ５０に含めるということを意味する。
【００６７】
生成部２０４０は、対応する候補条件が選択されたことを表す出力ノード（上述の例では 1 又は -1 を出力した出力ノード）に対応する候補条件を表す情報（以下、候補条件情報）を取得する。生成部２０４０は、取得した候補条件情報を用いて条件データ５０を生成する。
【００６８】
図９は、条件生成ニューラルネットワーク３４の出力を用いて条件データ５０を生成する処理を概念的に例示する図である。条件生成ニューラルネットワーク３４は、F=(0.5, 1.0) という特徴ベクトルが入力されたことに応じ、(c1, c2, c3, c4) = (1, 0, 0, -1) を出力している。この出力は、候補条件 c1 については肯定形式で選択され、候補条件 c4 については否定形式で選択されたことを意味する。そのため、生成部２０４０は「c1 and ¬c4」という条件データ５０を生成する。以下、上述の（c1, c2, c3, c4）の様に、条件データ５０を定めるベクトルを複合条件ベクトルと呼ぶ。
【００６９】
候補条件情報は、生成部２０４０からアクセス可能な記憶装置に予め記憶させておく。ここで、候補条件は、人手で生成されてもよいし、コンピュータによって生成されてもよい。後者の場合、例えば、ランダムに選択した不等号に対してランダムに生成した閾値を組み合わせることで、各要素についての候補条件を生成する。そして、生成した各候補条件を条件生成ニューラルネットワーク３４の出力ノードに割り当てるようにする。
【００７０】
また、候補条件をコンピュータによって生成する場合、別途候補条件生成用のニューラルネットワークを用意し、このニューラルネットワークを利用して候補条件を生成してもよい。候補条件を生成するニューラルネットワークの学習は、後述の実施形態２で説明するニューラルネットワーク３０の学習と共に行うことができる。すなわち、情報処理装置２０００の最終的な出力である予測データ２０に基づいて定まる予測損失（詳しくは後述）の誤差を逆伝播する際に、候補条件を生成するニューラルネットワークまで誤差を逆伝播させることで学習を行うことができる。
【００７１】
ここで、条件生成ニューラルネットワーク３４は、各候補条件について、肯定形式と否定形式のどちらで選択するかまでは判断せず、選択するか否かのみを判断するように構成されてもよい。この場合、例えば条件生成ニューラルネットワーク３４は、選択する候補条件に対応する出力ノードからは 1 を出力し、選択しない候補条件に対応する出力ノードからは 0 を出力する。生成部２０４０は、1 を出力した出力ノードに対応する各候補条件について、その候補条件を入力データ１０から抽出された特徴ベクトルが満たすか否かを判定する。そして、生成部２０４０は、満たすと判定された候補条件については肯定形式で条件データ５０に含め、満たさないと判定された候補条件については否定形式で条件データ５０に含める。
【００７２】
候補条件の構成は、閾値と不等号の組み合わせには限定されない。例えば候補条件は不等号のみを表すこととし、閾値は条件生成ニューラルネットワーク３４によって出力されるようにしてもよい。この場合、条件生成ニューラルネットワーク３４の各出力は、「特徴ベクトルの要素、不等号」の組み合わせに対応づけられる。候補条件情報は、条件生成ニューラルネットワーク３４の各出力に対し、「特徴ベクトルの要素、不等号」の組み合わせを対応づけた情報となる。
【００７３】
条件生成ニューラルネットワーク３４は、選択する候補条件に対応する出力ノードからは閾値を出力し、選択しない不等号を表すものについてはその旨を示す所定値（例えば、＋∞や−∞などを表す値）を出力するように、予め学習させておく。生成部２０４０は、条件生成ニューラルネットワーク３４の出力ノードのうち、閾値を出力した出力ノードについて、出力された閾値とその出力ノードに対応づけられている「特徴ベクトルの要素、不等号」とを対応づける。なお、コンピュータにおいて擬似的に＋∞や−∞を表す方法については、既存の技術を利用することができる。
【００７４】
図１０は、閾値を出力する条件生成ニューラルネットワーク３４を例示する図である。この例では、「要素：x1、不等号：>」に対応づけられた出力ノードから -1 が出力され、「要素：x2、不等号：<=」に対応づけられた出力ノードから 3 が出力されている。そのため、生成部２０４０は、「x1>-1 and x2<=3」という条件データ５０を生成する。
【００７５】
条件生成ニューラルネットワーク３４のモデルにも、特徴抽出ニューラルネットワーク３２のモデルと同様に、種々の既存のニューラルネットワークのモデルを利用できる。ここで、特徴抽出ニューラルネットワーク３２と条件生成ニューラルネットワーク３４のモデルは、互いに同一であってもよいし、互いに異なっていてもよい。
【００７６】
ニューラルネットワーク３０の構成は、前述した特徴抽出ニューラルネットワーク３２及び条件生成ニューラルネットワーク３４を有する構成に限定されない。例えばニューラルネットワーク３０は、特徴抽出ニューラルネットワーク３２と条件生成ニューラルネットワーク３４の機能を併せ持つ１つのニューラルネットワークとして構成されてもよい。
【００７７】
その他にも例えば、入力データ１０から特徴データを抽出する処理には、ニューラルネットワークを用いなくてもよい。この場合、ニューラルネットワーク３０として、条件生成ニューラルネットワーク３４を用いる。生成部２０４０は、入力データ１０から特徴データを抽出する処理を行い、その結果抽出された特徴データを条件生成ニューラルネットワーク３４に入力することにより、条件データを生成する。なお、ニューラルネットワーク以外によって画像データやテキストデータなどの種々のデータから特徴を抽出する技術には、既存の技術を利用することができる。
【００７８】
＜＜ニューラルネットワーク３０の詳細な具体例＞＞
ここでは、条件生成ニューラルネットワーク３４の具体的な構成の例を説明する。本具体例において、条件生成ニューラルネットワーク３４のモデルは、リカレントニューラルネットワーク（recurrent neural network）である。以下、この具体例における条件生成ニューラルネットワーク３４を、条件生成 RNN ７０と呼ぶ。
【００７９】
条件生成 RNN ７０は、候補条件の内の１つを選択する処理（以下、条件選択処理）を K 回繰り返すことで、K 個の候補条件を選択する。候補条件の総数は N であるとする。
【００８０】
図１１は、条件生成 RNN ７０を利用して候補条件を選択する処理の流れを例示するフローチャートである。生成部２０４０は、条件生成 RNN ７０の内部状態のベクトルの初期値として、特徴抽出ニューラルネットワーク３２によって生成された特徴ベクトルを設定する（Ｓ２０２）。内部状態のベクトルは、条件生成 RNN ７０の出力に影響を与える内部パラメータ群であり、条件生成 RNN ７０を動作させることで更新されていく。
【００８１】
Ｓ２０４からＳ２０８までの一連の処理は、ループ処理である。このループ処理は、選択する候補条件の数と同じ回数（すなわち、Ｋ回）繰り返される。ループ処理内の一連の処理が、前述した条件選択処理を表す。
【００８２】
生成部２０４０は、条件生成 RNN ７０に対し、前回のループ処理で生成された注目ベクトルを入力することで、注目ベクトルを得る（Ｓ２０６）。ｔ回目のループ処理における条件生成ニューラルネットワーク３４の入力と出力との関係は、例えば、数式（１）で表される。
【数１】
0006927409.tif 000002
・・・（１）
ここで、RNN は条件生成 RNN ７０を関数として表現したものである。vt は、t 回目のループ処理において条件生成 RNN ７０から出力される注目ベクトルである。
【００８３】
注目ベクトルは、N 個（候補条件の総数）の要素を持つベクトルであり、各要素が１つの候補条件に対応している。そして、注目ベクトルは、或る１つの要素についてのみ値が１であり、その他の要素については値が０である（すなわち、one-hot ベクトルである）。注目ベクトルにおいて値が１の要素は、条件生成 RNN ７０によって選択された候補条件を表す。
【００８４】
例えば条件生成 RNN ７０は、出力層において argmax 関数を利用することにより、出力する値の内の１つのみが１となり、他の値が０となるようにする。argmax 関数は、ベクトルの入力を受け付け、入力されたベクトルにおいて最大の要素の値を１に変換し、なおかつ他の要素の値を０に変換する。
【００８５】
各条件選択処理で生成される注目ベクトルは、それまでに行われた条件選択処理で生成された注目ベクトルのいずれとも異なるものとする。すなわち、vt は、v1, v2, ..., vt-1 のいずれとも異なるベクトルである。
【００８６】
なお、Ｓ２０６の１回目の実行においては、生成部２０４０は、初期値として、事前に用意されているダミーのベクトルを入力する。例えばダミーベクトルは、要素が全てゼロであるベクトルである。
【００８７】
Ｓ２０８はループ処理の終端であるため、図１１の処理はＳ２０４に戻る。
【００８８】
ループ処理の実行が終わった後、生成部２０４０は、得られた K 個の注目ベクトルの総和を算出する（Ｓ２１０）。その結果得られるベクトルを、複合注目ベクトルと呼ぶ。ここで、上記ループ処理の結果、それぞれ異なる K 個の注目ベクトルが得られる。よって、複合注目ベクトルは、K個の要素の値が 1 であり、他の要素の値が 0 となる。すなわち、複合注目ベクトルは、条件生成 RNN ７０によって選択されたK個の候補条件を表す。
【００８９】
生成部２０４０は、選択された各候補条件についての候補条件情報を取得する。（Ｓ２１２）。生成部２０４０は、取得した候補条件情報を用いて、特徴ベクトルが選択された各候補条件を満たすか否か判定することで、複合条件ベクトルを生成する（Ｓ２１４）。特徴ベクトルが或る候補条件を満たす場合、生成部２０４０は、複合条件ベクトルにおいて、その候補条件に対応する要素の値を１にする。一方、特徴ベクトルが或る候補条件を満たさない場合、生成部２０４０は、複合条件ベクトルにおいて、その候補条件に対応する要素の値を -1 にする。条件生成 RNN ７０によって選択されなかった各候補条件に対応する要素（すなわち、複合注目ベクトルにおいて値が０である要素）については、複合条件ベクトルにおいても０を設定する。
【００９０】
図１２は条件生成 RNN ７０を利用して複合条件ベクトルが生成される流れを概念的に例示する図である。候補条件は C1 から C4 の４つである。また、選択する候補条件の数は２つである。そのため、２つの注目ベクトルが生成されている。１つ目の注目ベクトル v1=(0,1,0,0) は２番目の要素が１である。そのため、１回目の条件選択処理では条件 c2 が選択されている。２つ目の注目ベクトル v2=(0,0,1,0) は３番目の要素が１である。そのため、２回目の条件選択処理では、条件 c3 が選択されている。
【００９１】
上記２つの注目ベクトルを加算することで、複合注目ベクトル (0,1,1,0) が生成される。生成部２０４０は、入力データ１０から抽出された特徴ベクトルが条件 C2 と C3 それぞれを満たすか否かを判定する。図１２の例では、C2 は満たされ（C2：真）、C3 は満たされない（C3：偽）。そのため、複合条件ベクトルは (0,1,-1,0) となる。
【００９２】
＜用例データ４０の特定：Ｓ１０６＞
決定部２０６０は、条件データ５０によって示される条件を満たす用例データ４０を特定し、特定した用例データ４０に対応する正解データ４２を取得する（Ｓ１０６）。前述したように、用例データ４０と正解データ４２とを対応づけた情報を、用例情報と呼ぶ。用例情報は、情報処理装置２０００が実行する予測について、予め用意された正解を表す情報である。
【００９３】
図１３は、用例情報の構成をテーブル形式で例示する図である。図１３のテーブルをテーブル２００と呼ぶ。テーブル２００は、用例データ２０２及び正解データ２０４を有する。
用例データ２０２及び正解データ２０４はそれぞれ、互いに対応する用例データ４０と正解データ４２を示す。例えば、情報処理装置２０００が、画像データが入力されたことに応じ、その画像データに含まれるオブジェクトのクラスを出力するとする。この場合、用例情報は、用例データ２０２に画像データから抽出される特徴ベクトルを示し、正解データ２０４にその画像データに含まれるオブジェクトのクラスを示す。このように、テーブル２００の各レコードは、特定の特徴ベクトル及びその特徴データについての正解を表している。
【００９４】
ここで、用例データ２０２は、特徴ベクトルを加工したデータを示してもよい。例えば候補条件が、要素、閾値、及び不等号の組み合わせとして予め用意されているとする。この場合、各用例について、特徴ベクトルが各候補条件を満たすかどうかを、予め判定しておくことができる。そこで例えば、用例データ２０２に、或る特徴ベクトルが複数の候補条件それぞれを満たすかどうかを示すフラグの集合を示すようにする。すなわち、用例データ４０として特徴ベクトルをそのまま示すのではなく、その特徴ベクトルが各候補条件を満たすか否かを判定し、その判定結果の集合を用例データ４０に示しておく。
【００９５】
図１４は、用例情報の別の例を示す図である。この図において、用例情報は、或る特徴ベクトルについての正解を正解データ２０４に示し、その特徴ベクトルについて各候補条件 C1 から C4 が満たされるか否かを示すフラグを用例データ２０２に示している。
【００９６】
用例情報を図１４に示す構成にすると、用例データ４０が条件データ５０によって示される各条件を満たすか否かが、より容易に判定できる。また、1 ビットで表すことができる真偽値と比較し、特徴ベクトルの各要素はデータサイズが大きいと言える。そのため、用例の特徴ベクトルそのものについて利用する必要がない場合には、用例情報の構成を図１４に示す構成にすることで、用例情報のデータサイズを削減することができる。
【００９７】
なお、所定の条件を満たすデータを記憶装置等から取得する技術には、既存の技術を利用することができる。例えば決定部２０６０は、用例情報が格納されているデータベースサーバに対し、「用例データ２０２が条件データ５０に示される条件を満たす各レコードについて、正解データ２０４を取得する」という検索条件を表すクエリを送信することで、所望の正解データ４２を取得する。
【００９８】
ここで、決定部２０６０は、条件データ５０に示される条件を満たす用例データ４０の全てを利用せず、その一部のみを利用するようにしてもよい。例えば、予測データ２０の決定に利用する用例データ４０の数を、基準の個数以下とするように設定しておく。この場合、決定部２０６０は、条件データ５０に示される条件を満たす用例データ４０が基準の個数以上であれば、その中から基準の個数の用例データ４０を選択するようにする。この選択は、例えばランダムに行われる。
【００９９】
＜予測データ２０の決定：Ｓ１０８＞
決定部２０６０は、取得した正解データ４２を用いて予測データ２０を決定する。例えば、決定部２０６０は、取得した正解データ４２について統計処理を行い、その結果として得られるデータを予測データ２０とする。以下、情報処理装置２０００が分類問題を扱う場合と回帰問題を扱う場合のそれぞれについて説明する。
【０１００】
＜＜分類問題を扱う場合＞＞
情報処理装置２０００が分類問題を扱う場合、例えば予測データ２０は、クラスの識別子であるラベルとなる。例えば画像データに含まれるオブジェクトのクラスを判別する場合、ラベルは「人」や「車」といったラベルとなる。この場合において、正解データ４２がラベルを示しているとする。例えば決定部２０６０は、取得した正解データ４２について各ラベルの出現数を算出し、出現数が最大のラベルを予測データ２０とする。
【０１０１】
図１５は、分類問題を扱う場合における予測データ２０を例示する図である。図１５では、１０個の正解データ４２が取得されており、出現数が最大のラベルはＡである。そこで決定部２０６０は、「Ａ」を予測データ２０とする。
【０１０２】
その他にも例えば、各クラスについてそのクラスが正解である確率を表すデータ（クラスの確率分布）を、予測データ２０としてもよい。この場合、例えば決定部２０６０は、取得した正解データ４２について各クラスの出現数を算出し、その出現数を取得した正解データ４２の総数で割ることで、各クラスについての確率を算出する。
【０１０３】
例えば図１５の例において、Ａ、Ｂ、Ｃというラベルの出現数がそれぞれ６個、３個、１個である。そこで決定部２０６０は、予測データ２０として、「Ａ：60%、Ｂ：30%、Ｃ：10%」という確率分布を生成する。
【０１０４】
＜＜回帰問題を扱う場合＞＞
情報処理装置２０００が回帰問題を扱う場合、予測データ２０は所定の意味を持つ数値となる。この場合、決定部２０６０は、正解データ４２の統計値（平均値、中央値、最頻値、最大値、又は最小値など）を算出し、算出した統計値を予測データ２０とする。
【０１０５】
図１６は、回帰問題を扱う場合における予測データ２０を例示する図である。図１６では、１０個の正解データ４２が取得されており、各正解データ４２が数値を示している。そこで決定部２０６０は、これらの数値の平均値を算出し、算出した平均値を予測データ２０としている。
【０１０６】
＜予測データ２０の決定方法のバリエーション＞
前述の説明では、条件データ５０に示される全ての条件を満たす用例データ４０を特定し、特定した用例データ４０に対応する正解データ４２を利用して予測データ２０を算出することで、予測データ２０を決定していた。しかしながら、予測データ２０の決定方法は必ずしもこの方法に限定されない。以下、予測データ２０の決定方法の他のバリエーションについて説明する。
【０１０７】
＜＜条件データ５０が示す条件を部分的に満たす用例データ４０も利用する方法＞＞
予測データ２０の決定に利用される用例データ４０は、必ずしも条件データ５０に示される全ての条件を満たすものでなくてもよい。すなわち、決定部２０６０は、条件データ５０に示される条件の一部を満たす用例データ４０も利用して、予測データ２０を決定してもよい。例えば決定部２０６０は、各用例データ４０について、条件データ５０に示される条件を満たす度合いを算出する。この度合いを条件満足度と呼ぶ。決定部２０６０は、条件満足度が高い用例データ４０に対応づけられている正解データ４２ほど、より大きい重みを与えるようにして、正解データ４２の統計値を算出する。そして、この統計値を予測データ２０とする。
【０１０８】
図１９は、条件満足度を利用して予測データ２０を決定する処理を概念的に例示する図である。図１９において、真理値行列は、用例データ４０が各候補条件を満たすか否かを示している。なお、複合条件ベクトルと真理値行列は、全ての候補条件についてではなく、選択された候補条件についての要素のみを有してもよい。
【０１０９】
決定部２０６０は、複合条件ベクトルと真理値行列の積を算出する。ここで算出される行列は、条件データ５０によって示される各条件を用例データ４０が満たすか否かを示す。条件を満たす場合には 1 が示され、条件を満たさない場合には -1 が示される。例えば図１９において、ID=1 の用例データ４０は、C1 について条件（¬C1）と C3 についての条件（¬C3）の双方を満たしている。
【０１１０】
決定部２０６０は、算出された行列において、行ごとに全ての列の値を積算することで、条件満足度ベクトルを生成する。条件満足度ベクトルの各要素は、対応する用例データ４０についての条件満足度を示す。
【０１１１】
決定部２０６０は、条件満足度ベクトルに Softmax 関数を適用することで、重みベクトルを生成する。Softmax 関数の性質により、重みベクトルの要素の値は、１）満足度ベクトルにおける値が大きい要素ほど値が大きく、２）0 以上 1 以下であり、３）総和が１となる。
【０１１２】
決定部２０６０は、各用例データ４０に対応する正解データ４２に対して重みベクトルに示される重みを適用した統計処理（例えば、加重平均）を行うことで、予測データ２０を算出する。
【０１１３】
上述の方法によれば、条件データ５０に示される条件を一部しか満たさない用例データ４０についても、予測データ２０の決定に考慮される。こうすることで、条件データ５０に示される条件を全て満たす用例データ４０の数が少ない場合であっても、安定した予測結果を得ることができるようになる。
【０１１４】
なお、決定部２０６０は、上述の方法を無条件に利用してもよいし、条件データ５０に示される条件を全て満たす用例データ４０の数が基準の個数に満たない場合のみ、上述の方法を利用するようにしてもよい。
【０１１５】
条件データ５０に示される条件を一部しか満たさない用例データ４０も利用する方法は、上述の方法に限定されない。例えば決定部２０６０は、条件データ５０に示される条件から一部を除外するようにしてもよい。その具体的な方法は様々である。例えば条件生成ニューラルネットワーク３４として前述した条件生成 RNN ７０を利用する場合、決定部２０６０は、より遅く選択された候補条件から順に除外していき、条件データ５０に示される条件を満たす用例データ４０の数が基準の個数以上になるようにする。言い換えれば、より早く選択された候補条件ほど除外されにくいようにする。条件生成 RNN ７０がより早く選択した候補条件ほど重要な条件であると考えられるため、このようにすることで、重要度の高い条件を優先して条件データ５０に残すことができるようになる。
【０１１６】
その他にも例えば、決定部２０６０は、除外することによる用例データ４０の増分が大きい条件から順に条件データ５０から除外するようにする。例えば、条件データ５０に条件 C1 から C3 が含まれており、条件 C1 を除外すると用例データ４０が１０個増え、条件 C2 を外すと用例データ４０が５個増え、条件 C3 を外すと用例データ４０が１５個増えるとする。この場合、増分が最大である条件 C3 を条件データ５０から除外するようにする。こうすることで、条件データ５０から除外する条件の数をできる限り少なくするようにすることができる。言い換えれば、できる限り多くの条件を条件データ５０に残しつつ、用例データ４０の数を基準の個数以上にすることができる。
【０１１７】
＜＜事前に決定されている値を予測データ２０として利用する方法＞＞
条件データ５０が示す条件を満たす予測データ２０は、予め決定されていてもよい。例えば、条件データ５０として生成されうる複数の条件それぞれについて、前述した方法で正解データ４２から予測データ２０を算出することで、条件に対応する予測データ２０を予め求めておく。条件データ５０と予測データ２０との対応付けは、決定部２０６０からアクセス可能な記憶装置に記憶させておく。運用時には、決定部２０６０は、生成部２０４０によって生成された条件データ５０に対応する予測データ２０を記憶装置から取得することで、予測データ２０を決定する。こうすることで、予測データ２０を決定する処理を高速化することができる。
【０１１８】
その他にも例えば、試験用に別途用意した入力データを利用することで、条件データ５０と予測データ２０との組み合わせを複数求め、求めた各組み合わせを記憶装置に記憶させておいてもよい。具体的には、情報処理装置２０００に、試験用の入力データを入力データ１０として入力し、条件データ５０を生成する処理、及び正解データ４２から予測データ２０を算出する処理を行わせる。その結果得られた条件データ５０と予測データ２０との組み合わせを、記憶装置に記憶させておく。運用時には、決定部２０６０は、生成部２０４０によって生成された条件データ５０に対応する予測データ２０を記憶装置から取得することで、入力データ１０に対応する予測データ２０を決定する。
【０１１９】
なお、記憶装置に記憶させておく条件データ５０と予測データ２０との組み合わせは、頻出パターンマイニングなどの手法を利用して絞り込んでもよい。例えば、試験用の入力データを利用して得られた条件データ５０と予測データ２０との組み合わせのうち、頻度が所定値以上のもののみを、記憶装置に記憶させておくようにする。こうすることで、精度の高い予測を実現しつつ、記憶装置の記憶容量を削減できる。
【０１２０】
ここで、このように事前に用意した試験用の入力データを使って条件データ５０と予測データ２０の組み合わせを求めておく方法では、運用時に条件データ５０として生成されうる条件の全てが網羅されるとは限らない。そこで例えば、運用時の決定部２０６０は、生成された条件データ５０に対応する予測データ２０が記憶装置に記憶されている場合にはその予測データ２０を取得して利用し、記憶されていない場合には条件データ５０に基づいて正解データ４２を取得して予測データ２０を算出するようにする。
【０１２１】
その他にも例えば、運用時に利用する条件生成ニューラルネットワーク３４の各出力を、事前に生成した条件データ５０のいずれかに対応するように学習させてもよい。すなわち、条件生成ニューラルネットワーク３４が、事前に生成した条件データ５０のいずれか１つを選択する出力を行う。決定部２０６０は、条件生成ニューラルネットワーク３４によって選択された条件データ５０に対応づけて記憶されている予測データ２０を、記憶装置から取得する。そして、決定部２０６０は、取得した予測データ２０を、入力データ１０に対応する予測データ２０として決定する。
【０１２２】
図２１は、事前に生成した条件データ５０を条件生成ニューラルネットワーク３４で選択するケースを例示する図である。図２１では、対応する予測データ２０が予め決定されている条件データ５０として、「C1 and ¬c4」、「c2 and c3」、「¬c3 and c4」、及び「c2 and c4」という条件データ５０が定められている。この条件生成ニューラルネットワーク３４は、選択する条件データ５０に対応する出力ノードから１を出力し、その他の出力ノードから０を出力する。図２１では、「C1 and ¬c4」に対応する出力ノードから１が出力されており、この条件データ５０が選択されたことを表している。
【０１２３】
また、決定部２０６０が正解データ４２を用いて予測データ２０を決定した際に、条件データ５０と予測データ２０との組み合わせをキャッシュとして記憶装置に記憶させるようにしてもよい。この場合、決定部２０６０は、過去に生成部２０４０によって生成された条件データ５０が再度生成部２０４０によって生成された場合には、その条件データ５０に対応する予測データ２０を記憶装置から取得することで、予測データ２０を高速に得ることができる。
【０１２４】
＜予測ルールの出力＞
情報処理装置２０００は、条件データ５０と予測データ２０との組み合わせを表す予測ルールを出力する機能を有していてもよい。予測ルールを生成して出力する機能を実現する機能構成部を、出力部２０７０と呼ぶ。図１７は、出力部２０７０を有する情報処理装置２０００を例示するブロック図である。
【０１２５】
予測ルールは、例えば、条件節と帰結節の２つで構成されるルールである。条件節は条件データ５０を示し、帰結節は予測データ２０を示す。例えば、条件データ５０が「x1>0 and x2<2」であり、予測データ２０が「A」である場合において、「x1>0 and x2<2 -> A」という予測ルールが生成される。
【０１２６】
条件データ５０は、情報処理装置２０００が入力データ１０に対する予測値を予測データ２０にした理由（予測データ２０を決定する基準）を表すと言える。言い換えれば、条件データ５０は、情報処理装置２０００による入力データ１０の解釈を表すと言える。そのため、上述の予測ルールを見ることで、ユーザは、どのような基準で入力データ１０に対する予測値が予測データ２０になったのか（入力データ１０がどのように解釈されたのか）を容易に把握できる。
【０１２７】
なお、情報処理装置２０００によって生成される条件データ５０は、入力データ１０に依存する。そこで、予測ルールは、条件データ５０と予測データ２０に加え、入力データ１０を示してもよい。例えば、入力データ１０が D1 であり、条件データ５０が「x1>0 and x2<2」であり、予測データ２０が「A」である場合において、「入力：D1、ルール：x1>0 and x2<2 -> A」という予測ルールが生成される。
【０１２８】
なお、出力される予測データは、上述の様に文字列を使って表されたものに限定されず、グラフ等を用いて表されてもよい。図１８は、予測ルールをグラフィカルに出力する例を示す図である。入力データ１０から抽出された特徴ベクトルは、バツ印が表されている。用例データ４０は、対応する正解データ４２を表す文字で表されている。条件データ５０は、領域６０として表されている。この表示を見たユーザは、入力データ１０が属する領域６０に「A」という正解データ４２が多く含まれていることを容易に理解できる。そのため、ユーザは、「A」という予測結果が正しいこと、及びその予測がどのようにして導かれたのかを、容易に理解することができる。
【０１２９】
なお、図１８のようにグラフィカルな表示を行う際、出力部２０７０は、予測データ２０の決定に利用した全ての用例データ４０を表示してもよいし、一部の用例データ４０のみを表示するようにしてもよい。後者の場合、例えば出力部２０７０は、予測データ２０の決定に利用した用例データ４０から、所定個の用例データ４０をランダムに選択し、選択した用例データ４０についての表示を行う。
【０１３０】
また、出力部２０７０は、条件データ５０によって示される条件を満たさない用例データ４０（領域６０に含まれない用例データ４０）を表示してもよい。この場合、出力部２０７０は、領域６０付近の用例データ４０を優先的に表示することが好ましい。例えば出力部２０７０は、領域６０が拡大されるように、条件データ５０によって示される条件の閾値を所定値ずらして（条件を緩めて）用例データ４０を検索することで、領域６０付近の用例データ４０を特定する。
【０１３１】
出力部２０７０が予測ルールを出力する方法は様々である。例えば出力部２０７０は、ディスプレイ装置に予測ルールを表示させる。その他にも例えば、出力部２０７０は、記憶装置に予測ルールを記憶させてもよい。その他にも例えば、ユーザが他の端末から情報処理装置２０００にアクセスしている場合、情報処理装置２０００は、当該他の端末に予測ルールを送信してもよい。
【０１３２】
［実施形態２］
実施形態２の情報処理装置２０００は、ニューラルネットワーク３０の訓練を行う機能をさらに有する。すなわち、実施形態２の情報処理装置２０００は、ニューラルネットワーク３０の出力の予測損失を小さくするように、ニューラルネットワーク３０の内部パラメータを更新する機能を有する。
【０１３３】
そのために情報処理装置２０００は、訓練部２０８０を有する。図２０は、実施形態２の情報処理装置２０００の機能構成を例示するブロック図である。訓練部２０８０は、バックプロパゲーションを用いてニューラルネットワーク３０のパラメータを更新することで、ニューラルネットワーク３０の訓練を行う。
【０１３４】
以下、訓練部２０８０がニューラルネットワーク３０の訓練を行う具体的な方法について説明する。
【０１３５】
訓練部２０８０は、訓練データ８０を取得する。訓練データ８０は、訓練入力データ８２と訓練正解データ８４とが対応づけられたデータである。訓練入力データ８２は、入力データ１０と同種のデータである。すなわち、情報処理装置２０００が入力データ１０として画像データを扱うのであれば、訓練入力データ８２も画像データである。訓練正解データ８４は、訓練入力データ８２についての正解を表すデータであり、正解データ４２と同種のデータである。例えば情報処理装置２０００が、入力データ１０に含まれるオブジェクトのクラスを予測するとする。この場合、例えば訓練正解データ８４は、訓練入力データ８２に含まれるオブジェクトのクラスを示す。
【０１３６】
訓練部２０８０は、訓練入力データ８２を取得部２０２０に入力することで、予測データ２０を得る。訓練部２０８０は、得られた予測データ２０及び訓練正解データ８４について、予測損失を算出する。この予測損失としては、例えば、ニューラルネットワークの訓練に使われる一般的な予測損失（平均二乗誤差や交差エントロピー誤差など）を用いることができる。
【０１３７】
訓練部２０８０は、算出された予測損失を減少させるようにバックプロパゲーション処理を行うことで、ニューラルネットワーク３０のパラメータを更新する。ここで、少なくとも訓練部２０８０は、条件生成ニューラルネットワーク３４のパラメータの更新を行う（条件生成ニューラルネットワーク３４の訓練を行う）。特徴抽出ニューラルネットワーク３２については、訓練部２０８０による訓練が行われても良いし、行われなくてもよい。後者の場合、特徴抽出ニューラルネットワーク３２の訓練は別途の方法で行っておく。前述したように、特徴抽出ニューラルネットワーク３２の訓練には既存の手法を利用することができる。
【０１３８】
なお、訓練部２０８０による訓練の際（以下、トレーニングフェーズ）と情報処理装置２０００の実際の運用時（以下、テストフェーズ）とで、ニューラルネットワーク３０の動作を異ならせてもよい。例えば実施形態１で条件生成ニューラルネットワーク３４の具体例として説明した条件生成 RNN ７０では、argmax 関数を用いて注目ベクトルを生成していた。しかしながら、一般に、argmax 関数はバックプロパゲーションが難しい関数であると言われている。
【０１３９】
そこで例えば、トレーニングフェーズにおける条件生成ニューラルネットワーク３４、すなわち訓練部２０８０によって利用される際の条件生成ニューラルネットワーク３４は、argmax 関数の代わりに、バックプロパゲーションが可能な関数を利用して注目ベクトルを生成するように構成しておく。例えば、softmax 関数を利用して注目ベクトルを生成することが好適である。softmax 関数は、argmax 関数の連続的な近似と見ることができる。そのため、softmax 関数を利用することにより、argmax 関数の近い注目ベクトル（one-hot ベクトルに近い注目ベクトル）を生成しつつ、バックプロパゲーションが容易となる。
【０１４０】
なお、温度つきの softmax 関数を利用することが特に有用である。これにより、より argmax 関数の出力に近い出力を得ることができる。
【０１４１】
以下の数式（２）は、温度つきの softmax 関数を表す式である。温度τを 0.1 などの小さい値に設定することで、one-hot ベクトルに近い注目ベクトルを計算できる。
【数２】
0006927409.tif 000003
・・・（２）
ここで、a_(i,t) は、t 回目のループ処理で生成される注目ベクトルの i 番目の要素の値である。e_(i,t) は、t 回目のループ処理で条件生成 RNN ７０の出力層に入力される値であって、注目ベクトルの i 番目の要素を出力するノードに対して入力されるものである。
【０１４２】
その他にも、Gumbel-Softmax 関数や、その変種である ST Gumbel-Softmax 関数などを利用してもよい。Gumbel-Softmax 関数は、連続的な確率分布に従ってサンプリングを行い、one-hot ベクトルに近いベクトルを生成する関数である。温度つき Softmax 関数を利用すると各実行においてほぼ同じ候補条件が選ばれるが、Gumbel-Softmax 関数を利用すると実行ごとにそれぞれ異なる候補条件同士の組み合わせがサンプリングされうる。そのため、より適切に条件生成ニューラルネットワーク３４の訓練を進めることができる。
【０１４３】
訓練部２０８０は、条件生成ニューラルネットワーク３４によって出力される複数の注目ベクトルの総和である複合注目ベクトルを生成する。さらに訓練部２０８０は、複合注目ベクトルから複合条件ベクトルを生成する。ここで、訓練部２０８０によって生成される複合条件ベクトルの各要素は、実施形態１で説明したものと異なり、-1 以上 +1 以下の連続値を示す。ここで、訓練入力データ８２から抽出される特徴ベクトルによって満たされる候補条件に対応する要素については、注目ベクトルの値をそのまま複合条件ベクトルに設定する。一方、訓練入力データ８２から抽出される特徴ベクトルによって満たされない候補条件に対応する要素については、注目ベクトルの値に -1 を掛けた値を複合条件ベクトルに設定する。
【０１４４】
例えば訓練部２０８０は、実施形態１において図１９を用いて説明した方法、すなわち条件満足度を利用する方法を用いて、訓練用の予測データ（以下、訓練予測データ）を生成する。この方法によれば、複合条件ベクトルが連続値を示していても、訓練予測データを生成することができる。なお、回帰問題を扱う場合、訓練部２０８０が生成する訓練予測データは、予測データ２０と同様に連続値である。一方、分類問題を扱う場合、訓練部２０８０は、訓練予測データとして、各クラスについてその確からしさを表す値を出力する。すなわち、訓練用予測データは、クラスの総数と同じ数の要素を持つベクトルとなる。
【０１４５】
訓練部２０８０は、訓練予測データと訓練正解データ８４とについて予測損失を算出し、算出した予測損失に基づいてバックプロパゲーションを実行する。ここで、訓練用に生成された予測データと訓練用に用意された正解データとについて予測損失を算出する方法、及びその予測損失を用いてバックプロパゲーションを行う技術には、既存の技術を利用することができる。
【０１４６】
＜ハードウエア構成の例＞
実施形態２の情報処理装置２０００を実現する計算機のハードウエア構成は、実施形態１と同様に、例えば図６によって表される。ただし、本実施形態の情報処理装置２０００を実現する計算機１０００のストレージデバイス１０８０には、本実施形態の情報処理装置２０００の機能を実現するプログラムモジュールがさらに記憶される。
【０１４７】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記各実施形態の構成を組み合わせた構成や、上記以外の様々な構成を採用することもできる。
【図１】
0006927409.tif 000004
【図２】
0006927409.tif 000005
【図３】
0006927409.tif 000006
【図４】
0006927409.tif 000007
【図５】
0006927409.tif 000008
【図６】
0006927409.tif 000009
【図７】
0006927409.tif 000010
【図８】
0006927409.tif 000011
【図９】
0006927409.tif 000012
【図１０】
0006927409.tif 000013
【図１１】
0006927409.tif 000014
【図１２】
0006927409.tif 000015
【図１３】
0006927409.tif 000016
【図１４】
0006927409.tif 000017
【図１５】
0006927409.tif 000018
【図１６】
0006927409.tif 000019
【図１７】
0006927409.tif 000020
【図１８】
0006927409.tif 000021
【図１９】
0006927409.tif 000022
【図２０】
0006927409.tif 000023
【図２１】
0006927409.tif 000024