"エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データを学習データとして用い、入力された状態データ及び行動データから報酬値を推定する報酬推定機を機械学習により生成する報酬推定機生成部を備え、前記報酬推定機生成部は、複数の処理関数を組み合わせて複数の基底関数を生成する基底関数生成部と、前記行動履歴データに含まれる状態データ及び行動データを前記複数の基底関数に入力して特徴量ベクトルを算出する特徴量ベクトル算出部と、前記特徴量ベクトルから前記行動履歴データに含まれる報酬値を推定する推定関数を回帰/判別学習により算出する推定関数算出部と、を含み、前記報酬推定機は、前記複数の基底関数と前記推定関数とにより構成される、情報処理装置。エージェントがおかれた現在の状態を表す状態データと、当該エージェントが次にとりうる行動を表す行動データとを前記報酬推定機に入力し、当該行動をとった結果として当該エージェントが得る報酬値を推定する報酬値推定部と、前記現在の状態において前記エージェントが次にとりうる行動のうち、前記報酬値推定部により推定された報酬値が最も高い値となる行動を選択する行動選択部と、をさらに備える、請求項1に記載の情報処理装置。前記行動選択部による選択結果に基づいてエージェントを行動させる行動制御部と、前記エージェントの行動に伴って更新される状態データ及び行動データを蓄積し、当該行動の結果としてエージェントが得た報酬を表す報酬値と、蓄積した状態データ及び行動データとを対応付けて前記行動履歴データに追加する履歴データ追加部と、をさらに備える、請求項2に記載の情報処理装置。前記状態データ、前記行動データ、及び前記報酬値の組が前記行動履歴データに追加された場合、前記特徴量ベクトル算出部は、前記行動履歴データに含まれる全ての状態データ及び行動データについて特徴量ベクトルを算出し、前記情報処理装置は、特徴領空間において前記特徴量ベクトルにより示される座標点の分布が所定の分布に近づくように前記行動履歴データに含まれる前記状態データ、前記行動データ、及び前記報酬値の組を間引く分布調整部をさらに備える、請求項3に記載の情報処理装置。前記状態データ、前記行動データ、及び前記報酬値の組が前記行動履歴データに追加された場合、前記特徴量ベクトル算出部は、前記行動履歴データに含まれる全ての状態データ及び行動データについて特徴量ベクトルを算出し、前記情報処理装置は、特徴領空間において前記特徴量ベクトルにより示される座標点の分布が所定の分布に近づくように前記行動履歴データに含まれる前記状態データ、前記行動データ、及び前記報酬値の組のそれぞれに重みを設定する分布調整部をさらに備える、請求項3に記載の情報処理装置。前記分布調整部は、間引き後に残った前記状態データ、前記行動データ、及び前記報酬値の組について、特徴領空間において前記特徴量ベクトルにより示される座標点の分布が所定の分布に近づくように前記行動履歴データに含まれる前記状態データ、前記行動データ、及び前記報酬値の組のそれぞれに重みを設定する、請求項4に記載の情報処理装置。前記行動履歴データを学習データとして用い、現在の時刻においてエージェントがおかれた状態を表す状態データ及び現在の時刻においてエージェントがとる行動を表す行動データから次の時刻におけるエージェントの状態を表す状態データを予測する予測機を機械学習により生成する予測機生成部をさらに備え、前記報酬値推定部は、現在の時刻における状態データ及び行動データを前記予測機に入力して次の時刻におけるエージェントの状態を表す状態データを予測し、前記次の時刻におけるエージェントの状態を表す状態データと、当該状態においてエージェントがとりうる行動を表す行動データとを前記報酬推定機に入力して、当該行動をとった結果として当該エージェントが得る報酬値を推定する、請求項2に記載の情報処理装置。前記行動履歴データを学習データとして用い、現在の時刻においてエージェントがおかれた状態を表す状態データ及び現在の時刻においてエージェントがとる行動を表す行動データから次の時刻におけるエージェントの状態を表す状態データを予測する予測機を機械学習により生成する予測機生成部をさらに備え、前記報酬値推定部は、現在の時刻を時刻t0とした場合に、時刻t0における状態データ及び行動データを前記予測機に入力して次の時刻t1におけるエージェントの状態を表す状態データを予測する処理を実行し、k=1~n-1n≧2について、時刻tkにおける状態データ及び時刻tkにおいてエージェントがとりうる行動を表す行動データを前記予測機に入力して時刻tk1におけるエージェントの状態を表す状態データを予測する処理を逐次実行し、予測した時刻tnにおけるエージェントの状態を表す状態データと、当該状態においてエージェントがとりうる行動を表す行動データとを前記報酬推定機に入力して、当該行動をとった結果として当該エージェントが得る報酬値を推定する、請求項2に記載の情報処理装置。前記報酬推定機生成部は、複数のエージェントの状態を表す状態データと、当該状態において各エージェントがとった行動を表す行動データと、当該行動の結果として各エージェントが得た報酬を表す報酬値とを含む行動履歴データを学習データとして用い、入力された状態データ及び行動データから報酬値を推定する報酬推定機を機械学習により生成する、請求項1に記載の情報処理装置。前記基底関数生成部は、遺伝的アルゴリズムに基づいて前記基底関数を更新し、前記特徴量ベクトル算出部は、前記基底関数が更新された場合に、更新後の前記基底関数に前記状態データ及び前記行動データを入力して特徴量ベクトルを算出し、前記推定関数算出部は、前記更新後の基底関数を用いて算出された特徴量ベクトルの入力に応じて前記報酬値を推定する推定関数を算出する、請求項1に記載の情報処理装置。エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データに基づき、高い報酬を得たエージェントがとった行動及び低い報酬を得たエージェントがとらなかった行動に高いスコアを与え、高い報酬を得たエージェントがとらなかった行動及び低い報酬を得たエージェントがとった行動に低いスコアを与える条件で、各状態データに対応する行動毎のスコアを算出するスコア算出部と、前記行動履歴データ及び前記行動毎のスコアを学習データとして用い、入力された状態データから行動毎のスコアを推定するスコア推定機を機械学習により生成するスコア推定機生成部と、を備え、前記スコア推定機生成部は、複数の処理関数を組み合わせて複数の基底関数を生成する基底関数生成部と、前記行動履歴データに含まれる状態データを前記複数の基底関数に入力して特徴量ベクトルを算出する特徴量ベクトル算出部と、前記特徴量ベクトルから前記行動毎のスコアを推定する推定関数を回帰/判別学習により算出する推定関数算出部と、を含み、前記スコア推定機は、前記複数の基底関数と前記推定関数とにより構成される、情報処理装置。エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データを学習データとして用い、入力された状態データ及び行動データから報酬値を推定する報酬推定機を機械学習により生成するステップを含み、前記生成するステップは、複数の処理関数を組み合わせて複数の基底関数を生成するステップと、前記行動履歴データに含まれる状態データ及び行動データを前記複数の基底関数に入力して特徴量ベクトルを算出するステップと、前記特徴量ベクトルから前記行動履歴データに含まれる報酬値を推定する推定関数を回帰/判別学習により算出するステップと、を含み、前記報酬推定機は、前記複数の基底関数と前記推定関数とにより構成される、情報処理方法。エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データに基づき、高い報酬を得たエージェントがとった行動及び低い報酬を得たエージェントがとらなかった行動に高いスコアを与え、高い報酬を得たエージェントがとらなかった行動及び低い報酬を得たエージェントがとった行動に低いスコアを与える条件で、各状態データに対応する行動毎のスコアを算出するステップと、前記行動履歴データ及び前記行動毎のスコアを学習データとして用い、入力された状態データから行動毎のスコアを推定するスコア推定機を機械学習により生成するステップと、を含み、前記生成するステップは、複数の処理関数を組み合わせて複数の基底関数を生成するステップと、前記行動履歴データに含まれる状態データを前記複数の基底関数に入力して特徴量ベクトルを算出するステップと、前記特徴量ベクトルから前記行動毎のスコアを推定する推定関数を回帰/判別学習により算出するステップと、を含み、前記スコア推定機は、前記複数の基底関数と前記推定関数とにより構成される、情報処理方法。エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データを学習データとして用い、入力された状態データ及び行動データから報酬値を推定する報酬推定機を機械学習により生成する報酬推定機生成機能をコンピュータに実現させるためのプログラムであり、前記報酬推定機生成機能は、複数の処理関数を組み合わせて複数の基底関数を生成する基底関数生成機能と、前記行動履歴データに含まれる状態データ及び行動データを前記複数の基底関数に入力して特徴量ベクトルを算出する特徴量ベクトル算出機能と、前記特徴量ベクトルから前記行動履歴データに含まれる報酬値を推定する推定関数を回帰/判別学習により算出する推定関数算出機能と、を含み、前記報酬推定機は、前記複数の基底関数と前記推定関数とにより構成される、プログラム。エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データに基づき、高い報酬を得たエージェントがとった行動及び低い報酬を得たエージェントがとらなかった行動に高いスコアを与え、高い報酬を得たエージェントがとらなかった行動及び低い報酬を得たエージェントがとった行動に低いスコアを与える条件で、各状態データに対応する行動毎のスコアを算出するスコア算出機能と、前記行動履歴データ及び前記行動毎のスコアを学習データとして用い、入力された状態データから行動毎のスコアを推定するスコア推定機を機械学習により生成するスコア推定機生成機能と、をコンピュータに実現させるためのプログラムであり、前記スコア推定機生成機能は、複数の処理関数を組み合わせて複数の基底関数を生成する基底関数生成機能と、前記行動履歴データに含まれる状態データを前記複数の基底関数に入力して特徴量ベクトルを算出する特徴量ベクトル算出機能と、前記特徴量ベクトルから前記行動毎のスコアを推定する推定関数を回帰/判別学習により算出する推定関数算出機能と、を含み、前記スコア推定機は、前記複数の基底関数と前記推定関数とにより構成される、プログラム。ところで、本件発明者は、同文献に記載の技術に対して更なる工夫を施すことで、エージェントを賢く行動させるアルゴリズムを自動構築する技術に発展させられないか検討を行ってきた。その検討の中で、本件発明者は、ある状態におかれたエージェントがとりうる行動の中で選択すべき行動を決定するための思考ルーチンを自動構築する技術に注目した。本技術は、このような技術に関するものであり、エージェントがとるべき行動を選択する際に決め手となる情報を出力する推定機を自動構築することが可能な、新規かつ改良された情報処理装置、情報処理方法、及びプログラムを提供することを意図している。本技術のある観点によれば、エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データを学習データとして用い、入力された状態データ及び行動データから報酬値を推定する報酬推定機を機械学習により生成する報酬推定機生成部を備え、前記報酬推定機生成部は、複数の処理関数を組み合わせて複数の基底関数を生成する基底関数生成部と、前記行動履歴データに含まれる状態データ及び行動データを前記複数の基底関数に入力して特徴量ベクトルを算出する特徴量ベクトル算出部と、前記特徴量ベクトルから前記行動履歴データに含まれる報酬値を推定する推定関数を回帰/判別学習により算出する推定関数算出部と、を含み、前記報酬推定機は、前記複数の基底関数と前記推定関数とにより構成される、情報処理装置が提供される。また、本技術の別の観点によれば、エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データに基づき、高い報酬を得たエージェントがとった行動及び低い報酬を得たエージェントがとらなかった行動に高いスコアを与え、高い報酬を得たエージェントがとらなかった行動及び低い報酬を得たエージェントがとった行動に低いスコアを与える条件で、各状態データに対応する行動毎のスコアを算出するスコア算出部と、前記行動履歴データ及び前記行動毎のスコアを学習データとして用い、入力された状態データから行動毎のスコアを推定するスコア推定機を機械学習により生成するスコア推定機生成部と、を備え、前記スコア推定機生成部は、複数の処理関数を組み合わせて複数の基底関数を生成する基底関数生成部と、前記行動履歴データに含まれる状態データを前記複数の基底関数に入力して特徴量ベクトルを算出する特徴量ベクトル算出部と、前記特徴量ベクトルから前記行動毎のスコアを推定する推定関数を回帰/判別学習により算出する推定関数算出部と、を含み、前記スコア推定機は、前記複数の基底関数と前記推定関数とにより構成される、情報処理装置が提供される。また、本技術の別の観点によれば、エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データを学習データとして用い、入力された状態データ及び行動データから報酬値を推定する報酬推定機を機械学習により生成するステップを含み、前記生成するステップは、複数の処理関数を組み合わせて複数の基底関数を生成するステップと、前記行動履歴データに含まれる状態データ及び行動データを前記複数の基底関数に入力して特徴量ベクトルを算出するステップと、前記特徴量ベクトルから前記行動履歴データに含まれる報酬値を推定する推定関数を回帰/判別学習により算出するステップと、を含み、前記報酬推定機は、前記複数の基底関数と前記推定関数とにより構成される、情報処理方法が提供される。また、本技術の別の観点によれば、エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データに基づき、高い報酬を得たエージェントがとった行動及び低い報酬を得たエージェントがとらなかった行動に高いスコアを与え、高い報酬を得たエージェントがとらなかった行動及び低い報酬を得たエージェントがとった行動に低いスコアを与える条件で、各状態データに対応する行動毎のスコアを算出するステップと、前記行動履歴データ及び前記行動毎のスコアを学習データとして用い、入力された状態データから行動毎のスコアを推定するスコア推定機を機械学習により生成するステップと、を含み、前記生成するステップは、複数の処理関数を組み合わせて複数の基底関数を生成するステップと、前記行動履歴データに含まれる状態データを前記複数の基底関数に入力して特徴量ベクトルを算出するステップと、前記特徴量ベクトルから前記行動毎のスコアを推定する推定関数を回帰/判別学習により算出するステップと、を含み、前記スコア推定機は、前記複数の基底関数と前記推定関数とにより構成される、情報処理方法が提供される。また、本技術の別の観点によれば、エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データを学習データとして用い、入力された状態データ及び行動データから報酬値を推定する報酬推定機を機械学習により生成する報酬推定機生成機能をコンピュータに実現させるためのプログラムであり、前記報酬推定機生成機能は、複数の処理関数を組み合わせて複数の基底関数を生成する基底関数生成機能と、前記行動履歴データに含まれる状態データ及び行動データを前記複数の基底関数に入力して特徴量ベクトルを算出する特徴量ベクトル算出機能と、前記特徴量ベクトルから前記行動履歴データに含まれる報酬値を推定する推定関数を回帰/判別学習により算出する推定関数算出機能と、を含み、前記報酬推定機は、前記複数の基底関数と前記推定関数とにより構成される、プログラムが提供される。また、本技術の別の観点によれば、エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データに基づき、高い報酬を得たエージェントがとった行動及び低い報酬を得たエージェントがとらなかった行動に高いスコアを与え、高い報酬を得たエージェントがとらなかった行動及び低い報酬を得たエージェントがとった行動に低いスコアを与える条件で、各状態データに対応する行動毎のスコアを算出するスコア算出機能と、前記行動履歴データ及び前記行動毎のスコアを学習データとして用い、入力された状態データから行動毎のスコアを推定するスコア推定機を機械学習により生成するスコア推定機生成機能と、をコンピュータに実現させるためのプログラムであり、前記スコア推定機生成機能は、複数の処理関数を組み合わせて複数の基底関数を生成する基底関数生成機能と、前記行動履歴データに含まれる状態データを前記複数の基底関数に入力して特徴量ベクトルを算出する特徴量ベクトル算出機能と、前記特徴量ベクトルから前記行動毎のスコアを推定する推定関数を回帰/判別学習により算出する推定関数算出機能と、を含み、前記スコア推定機は、前記複数の基底関数と前記推定関数とにより構成される、プログラムが提供される。また、本技術の別の観点によれば、上記のプログラムが記録された、コンピュータにより読み取り可能な記録媒体が提供される。以上説明したように本技術によれば、エージェントがとるべき行動を選択する際に決め手となる情報を出力する推定機を自動構築することが可能になる。以下に添付図面を参照しながら、本技術に係る好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。[説明の流れについて]ここで、以下に記載する説明の流れについて簡単に述べる。まず、本実施形態に係る基盤技術について説明する。具体的には、まず、図1~図12を参照しながら、推定機の自動構築方法について説明する。次いで、図13を参照しながら、オンライン学習に基づく推定機の自動構築方法について説明する。次いで、図14~図16を参照しながら、データセットの統合方法について説明する。次いで、図17~図23を参照しながら、効率的なデータセットのサンプリング方法について説明する。次いで、図24~図27を参照しながら、効率的な重み付け方法について説明する。次いで、図28を参照しながら、効率的なデータセットのサンプリング方法及び重み付け方法を組み合わせる方法について説明する。次いで、図29~図33を参照しながら、その他のデータセットのサンプリング方法及び重み付け方法について説明する。次いで、図34~図38を参照しながら、思考ルーチンの構成及び思考ルーチンの構築方法について説明する。次いで、図39及び図40を参照しながら、本実施形態に係る情報処理装置10の機能構成について説明する。次いで、図41及び図42を参照しながら、効率的な報酬推定機の構築方法について説明する。次いで、図43及び図44を参照しながら、アクションスコア推定機を用いた思考ルーチンの構成について説明する。次いで、図45~図47を参照しながら、予測機を用いた報酬の推定方法について説明する。次いで、図48~図54を参照しながら、本実施形態に係る技術を三目並べへ応用する方法について説明する。次いで、図55~図62を参照しながら、本実施形態に係る技術を対戦ゲームへ応用する方法について説明する。次いで、図63及び図64を参照しながら、本実施形態に係る技術を五目並べへ応用する方法について説明する。次いで、図65~図67を参照しながら、本実施形態に係る技術をポーカーへ応用する方法について説明する。次いで、図68~図79を参照しながら、本実施形態に係る技術をロールプレイングゲームへ応用する方法について説明する。次いで、図80を参照しながら、本実施形態に係る情報処理装置10の機能を実現することが可能なハードウェア構成例について説明する。最後に、同実施形態の技術的思想について纏め、当該技術的思想から得られる作用効果について簡単に説明する。説明項目1:基盤技術1-1:推定機の自動構築方法1-1-1:推定機の構成1-1-2:構築処理の流れ1-2:オンライン学習について1-3:学習用データの統合方法1-3-1:特徴量空間における学習用データの分布と推定機の精度1-3-2:データ統合時にサンプリングする構成1-3-3:データ統合時に重み付けする構成1-3-4:データ統合時にサンプリング及び重み付けする構成1-4:効率的なサンプリング/重み付け方法1-4-1:サンプリング方法1-4-2:重み付け方法1-4-3:組み合わせ方法1-5:サンプリング処理及び重み付け処理に関する変形例1-5-1:変形例1距離に基づく処理1-5-2:変形例2クラスタリングに基づく処理1-5-3:変形例3密度推定手法に基づく処理2:実施形態2-1:思考ルーチンの自動構築方法2-1-1:思考ルーチンとは2-1-2:思考ルーチンの構成2-1-3:報酬推定機の構築方法2-2:情報処理装置10の構成2-3:効率的な推定報酬機の構築方法2-4:変形例1アクションスコア推定機を用いる思考ルーチン2-5:変形例2予測機を用いた報酬の推定2-5-1:予測機の構築方法2-5-2:報酬の推定方法2-6:変形例3複数エージェントの同時学習3:応用例3-1:三目並べへの応用3-2:対戦ゲームへの応用3-3:五目並べへの応用3-4:ポーカーへの応用3-5:ロールプレイングゲームへの応用4:ハードウェア構成例5:まとめ<1:基盤技術>後述する実施形態は、推定機の自動構築方法に関する。また、同実施形態は、推定機の構築に用いる学習用データを追加できるようにする仕組み以下、オンライン学習に関する。そこで、同実施形態に係る技術について詳細に説明するに先立ち、推定機の自動構築方法及びオンライン学習方法以下、基盤技術について説明する。なお、以下では遺伝アルゴリズムに基づく推定機の自動構築方法を例に挙げて説明を進めるが、同実施形態に係る技術の適用範囲はこれに限定されない。[1-1:推定機の自動構築方法]推定機の自動構築方法について説明する。1-1-1:推定機の構成はじめに、図1~図3を参照しながら、推定機の構成について説明する。図1は、推定機を利用するシステムのシステム構成例を示した説明図である。また、図2は、推定機の構築に利用する学習用データの構成例を示した説明図である。そして、図3は、推定機の構造及び構築方法の概要を示した説明図である。まず、図1を参照する。図1に示すように、推定機の構築及び推定値の算出は、例えば、情報処理装置10により実行される。情報処理装置10は、学習用データX1,t1,...,XN,tNを利用して推定機を構築する。また、情報処理装置10は、構築した推定機を利用して入力データXから推定値yを算出する。この推定値yは、入力データXの認識に利用される。例えば、推定値yが所定の閾値Thより大きい場合に認識結果YESが得られ、推定値yが所定の閾値Thより小さい場合に認識結果NOが得られる。図2を参照しながら、より具体的に推定機の構成について考えてみよう。図2に例示した学習用データの集合は、海の画像を認識する画像認識機の構築に利用されるものである。この場合、情報処理装置10により構築される推定機は、入力された画像の海らしさを表す推定値yを出力するものとなる。図2に示すように、学習用データは、データXkと目的変数tkとのペア但し、k=1~Nにより構成される。データXkは、k番目の画像データ画像kである。また、目的変数tkは、画像kが海の画像である場合に1、画像kが海の画像でない場合に0となる変数である。図2の例では、画像1が海の画像であり、画像2が海の画像であり、...、画像Nが海の画像でない。この場合、t1=1、t2=1、...、tN=0となる。この学習用データが入力されると、情報処理装置10は、入力された学習用データに基づく機械学習により、入力された画像の海らしさを表す推定値yを出力する推定機を構築する。この推定値yは、入力された画像の海らしさが高いほど1に近づき、海らしさが低いほど0に近づく値である。また、新たに入力データX画像Xが入力されると、情報処理装置10は、学習用データの集合を利用して構築された推定機に画像Xを入力し、画像Xの海らしさを表す推定値yを算出する。この推定値yを利用すると、画像Xが海の画像であるか否かを認識することが可能になる。例えば、推定値y≧所定の閾値Thの場合、入力された画像Xが海の画像であると認識される。一方、推定値y<所定の閾値Thの場合、入力された画像Xが海の画像でないと認識される。本実施形態は、上記のような推定機を自動構築する技術に関する。なお、ここでは画像認識機の構築に利用される推定機について説明したが、本実施形態に係る技術は、様々な推定機の自動構築方法に適用することができる。例えば、言語解析機の構築に適用することもできるし、楽曲のメロディーラインやコード進行などを解析する音楽解析機の構築にも適用することができる。さらに、蝶の動きや雲の流れなどの自然現象を再現したり、自然の振る舞いを予測したりする動き予測機の構築などにも適用することができる。例えば、特開2009-48266号公報、特願2010-159598号明細書、特願2010-159597号明細書、特願2009-277083号明細書、特願2009-277084号明細書などに記載のアルゴリズムに適用することができる。また、AdaBoostなどのアンサンブル学習手法や、SVMやSVRなどのカーネルを用いた学習手法などにも適用できる。AdaBoostなどのアンサンブル学習手法に適用する場合、弱学習機WeakLearnerが後述する基底関数φに対応する。また、SVMやSVRなどの学習手法に適用する場合、カーネルが後述する基底関数φに対応する。なお、SVMはSupportVectorMachine、SVRはSupportVectorRegression、RVMはRelevanceVectorMachineの略である。ここで、図3を参照しながら、推定機の構造について説明する。図3に示すように、推定機は、基底関数リストφ1,...,φM及び推定関数fにより構成される。基底関数リストφ1,...,φMは、M個の基底関数φkk=1~Mを含む。また、基底関数φkは、入力データXの入力に応じて特徴量zkを出力する関数である。さらに、推定関数fは、M個の特徴量zkk=1~Mを要素として含む特徴量ベクトルZ=z1,...,zMの入力に応じて推定値yを出力する関数である。基底関数φkは、予め用意された1又は複数の処理関数を組み合わせて生成される。処理関数としては、例えば、三角関数、指数関数、四則演算、デジタルフィルタ、微分演算、中央値フィルタ、正規化演算、ホワイトノイズの付加処理、画像処理フィルタなどが利用可能である。例えば、入力データXが画像の場合、ホワイトノイズの付加処理AddWhiteNoise、中央値フィルタMedian、ぼかし処理Blurを組み合わせた基底関数φjX=AddWhiteNoiseMedianBlurXなどが利用される。この基底関数φjは、入力データXに対し、ぼかし処理、中央値フィルタ処理、及びホワイトノイズの付加処理を順次施すことを意味する。1-1-2:構築処理の流れさて、基底関数φkk=1~Mの構成、基底関数リストの構成、推定関数fの構成は、学習用データに基づく機械学習により決定される。以下、この機械学習による推定機の構築処理について、より詳細に説明する。全体構成まず、図4を参照しながら、全体的な処理の流れについて説明する。図4は、全体的な処理の流れについて説明するための説明図である。なお、以下で説明する処理は、情報処理装置10により実行される。図4に示すように、まず、情報処理装置10に学習用データが入力されるS101。なお、学習用データとしては、データXと目的変数tの組が入力される。学習用データが入力されると、情報処理装置10は、処理関数を組み合わせて基底関数を生成するS102。次いで、情報処理装置10は、基底関数にデータXを入力して特徴量ベクトルZを算出するS103。次いで、情報処理装置10は、基底関数の評価及び推定関数の生成を行うS104。次いで、情報処理装置10は、所定の終了条件を満たしたか否かを判定するS105。所定の終了条件を満たした場合、情報処理装置10は、処理をステップS106に進める。一方、所定の終了条件を満たしていない場合、情報処理装置10は、処理をステップS102に戻し、ステップS102~S104の処理を繰り返し実行する。処理をステップS106に進めた場合、情報処理装置10は、推定関数を出力するS106。上記の通り、ステップS102~S104の処理は、繰り返し実行される。そこで、以下の説明においては、第τ回目の繰り返し処理においてステップS102で生成される基底関数を第τ世代の基底関数と呼ぶことにする。基底関数の生成S102ここで、図5~図10を参照しながら、ステップS102の処理基底関数の生成について、より詳細に説明する。まず、図5を参照する。図5に示すように、情報処理装置10は、現在の世代が2世代目以降であるか否かを判定するS111。つまり、情報処理装置10は、現在実行しようとしているステップS102の処理が第2回目以降の繰り返し処理であるか否かを判定する。2世代目以降である場合、情報処理装置10は、処理をステップS113に進める。一方、2世代目以降でない場合第1世代である場合、情報処理装置10は、処理をステップS112に進める。処理をステップS112に進めた場合、情報処理装置10は、基底関数をランダムに生成するS112。一方、処理をステップS113に進めた場合、情報処理装置10は、基底関数を進化的に生成するS113。そして、情報処理装置10は、ステップS112又はS113の処理が完了すると、ステップS102の処理を終了する。S112:基底関数をランダムに生成次に、図6及び図7を参照しながら、ステップS112の処理について、より詳細に説明する。ステップS112の処理は、第1世代の基底関数を生成する処理に関する。まず、図6を参照する。図6に示すように、情報処理装置10は、基底関数のインデックスmm=0~M-1に関する処理ループを開始するS121。次いで、情報処理装置10は、基底関数φmxをランダムに生成するS122。次いで、情報処理装置10は、基底関数のインデックスmがM-1に達したか否かを判定し、基底関数のインデックスmがM-1に達していない場合、情報処理装置10は、基底関数のインデックスmをインクリメントしてステップS121に処理を戻すS124。一方、基底関数のインデックスmがm=M-1の場合、情報処理装置10は、処理ループを終了するS124。ステップS124で処理ループを終了すると、情報処理装置10は、ステップS112の処理を完了する。ステップS122の詳細次に、図7を参照しながら、ステップS122の処理について、より詳細に説明する。ステップS122の処理を開始すると、図7に示すように、情報処理装置10は、基底関数のプロトタイプをランダムに決定するS131。プロトタイプとしては、既に例示した処理関数の他、線形項、ガウシアンカーネル、シグモイドカーネルなどの処理関数が利用可能である。次いで、情報処理装置10は、決定したプロトタイプのパラメータをランダムに決定し、基底関数を生成するS132。S113:基底関数を進化的に生成次に、図8~図10を参照しながら、ステップS113の処理について、より詳細に説明する。ステップS113の処理は、第τ世代τ≧2の基底関数を生成する処理に関する。従って、ステップS113を実行する際には、第τ-1世代の基底関数φm,τ-1m=1~M及び当該基底関数φm,τ-1の評価値vm,τ-1が得られている。まず、図8を参照する。図8に示すように、情報処理装置10は、基底関数の数Mを更新するS141。つまり、情報処理装置10は、第τ世代の基底関数の数Mτを決定する。次いで、情報処理装置10は、第τ-1世代の基底関数φm,τ-1m=1~Mに対する評価値vτ-1={v1,τ-1,...,vM,τ-1}に基づき、第τ-1世代の基底関数の中からe個の有用な基底関数を選択して第τ世代の基底関数φ1,τ、...、φe,τに設定するS142。次いで、情報処理装置10は、残りMτ-e個の基底関数φe1,τ、...、φMτ,τを生成する方法を交差、突然変異、ランダム生成の中からランダムに選択するS143。交差を選択した場合、情報処理装置10は、処理をステップS144に進める。また、突然変異を選択した場合、情報処理装置10は、処理をステップS145に進める。そして、ランダム生成を選択した場合、情報処理装置10は、処理をステップS146に進める。処理をステップS144に進めた場合、情報処理装置10は、ステップS142で選択された基底関数φ1,τ、...、φe,τの中から選択された基底関数を交差させて新たな基底関数φm’,τm’≧e1を生成するS144。また、処理をステップS145に進めた場合、情報処理装置10は、ステップS142で選択された基底関数φ1,τ、...、φe,τの中から選択された基底関数を突然変異させて新たな基底関数φm’,τm’≧e1を生成するS145。一方、処理をステップS146に進めた場合、情報処理装置10は、ランダムに新たな基底関数φm’,τm’≧e1を生成するS146。ステップS144、S145、S146のいずれかの処理を終えると、情報処理装置10は、処理をステップS147に進める。処理をステップS147に進めると、情報処理装置10は、第τ世代の基底関数がM個M=Mτに達したか否かを判定するS147。第τ世代の基底関数がM個に達していない場合、情報処理装置10は、処理を再びステップS143に戻す。一方、第τ世代の基底関数がM個に達した場合、情報処理装置10は、ステップS113の処理を終了する。S144の詳細:交差次に、図9を参照しながら、ステップS144の処理について、より詳細に説明する。ステップS144の処理を開始すると、図9に示すように、情報処理装置10は、ステップS142で選択された基底関数φ1,τ、...、φe,τの中から同じプロトタイプを持つ基底関数をランダムに2つ選択するS151。次いで、情報処理装置10は、選択した2つの基底関数が持つパラメータを交差させて新たな基底関数を生成するS152。S145の詳細:突然変異次に、図10を参照しながら、ステップS145の処理について、より詳細に説明する。ステップS145の処理を開始すると、図10に示すように、情報処理装置10は、ステップS142で選択された基底関数φ1,τ、...、φe,τの中から基底関数をランダムに1つ選択するS161。次いで、情報処理装置10は、選択した基底関数が持つパラメータの一部をランダムに変更して新たな基底関数を生成するS162。S146の詳細:ランダム生成次に、図7を参照しながら、ステップS146の処理について、より詳細に説明する。ステップS122の処理を開始すると、図7に示すように、情報処理装置10は、基底関数のプロトタイプをランダムに決定するS131。プロトタイプとしては、既に例示した処理関数の他、線形項、ガウシアンカーネル、シグモイドカーネルなどの処理関数が利用可能である。次いで、情報処理装置10は、決定したプロトタイプのパラメータをランダムに決定し、基底関数を生成するS132。以上、ステップS102の処理基底関数の生成について、より詳細に説明した。基底関数の計算S103次に、図11を参照しながら、ステップS103の処理基底関数の計算について、より詳細に説明する。図11に示すように、情報処理装置10は、学習用データに含まれるi番目のデータXiのインデックスiに関する処理ループを開始するS171。例えば、学習用データとしてN個のデータの組{X1,...,XN}が入力された場合には、i=1~Nに関して処理ループが実行される。次いで、情報処理装置10は、基底関数φmのインデックスmに関する処理ループを開始するS172。例えば、M個の基底関数を生成した場合には、m=1~Mに関して処理ループが実行される。次いで、情報処理装置10は、特徴量zmi=φmxiを計算するS173。次いで、情報処理装置10は、処理をステップS174に進め、基底関数のインデックスmに関する処理ループを続ける。そして、情報処理装置10は、基底関数のインデックスmに関する処理ループが終了すると、処理をステップS175に進め、インデックスiに関する処理ループを続ける。インデックスiに関する処理ループが終了した場合、情報処理装置10は、ステップS103の処理を終了する。以上、ステップS103の処理基底関数の計算について、より詳細に説明した。基底関数の評価推定関数の生成S104次に、図12を参照しながら、ステップS104の処理基底関数の評価推定関数の生成について、より詳細に説明する。図12に示すように、情報処理装置10は、AIC基準の増減法に基づく回帰/判別学習により推定関数のパラメータw={w0,...,wM}を算出するS181。つまり、情報処理装置10は、特徴量zmi=φm,τxiと目的変数tiの組i=1~Nが推定関数fによりフィッティングされるように、回帰/判別学習によりベクトルw={w0,...,wM}を求める。但し、推定関数fxは、fx=Σwmφm,τxw0であるとする。次いで、情報処理装置10は、パラメータwが0となる基底関数の評価値vを0に設定し、それ以外の基底関数の評価値vを1に設定するS182。つまり、評価値vが1の基底関数は有用な基底関数である。以上、ステップS104の処理基底関数の評価推定関数の生成について、より詳細に説明した。推定機の構築に係る処理の流れは上記の通りである。このように、ステップS102~S104の処理が繰り返し実行され、基底関数が進化的手法により逐次更新されることにより推定精度の高い推定関数が得られる。つまり、上記の方法を適用することで、高性能な推定機を自動構築することができる。[1-2:オンライン学習について]さて、上記のように、機械学習により推定機を自動構築するアルゴリズムの場合、学習用データの数が多いほど、構築される推定機の性能が高くなる。そのため、可能な限り多くの学習用データを利用して推定機を構築するのが好ましい。また、後述する実施形態に係る技術においては、学習用データを追加する仕組みが利用される。そこで、学習用データを追加できるようにする新たな仕組み以下、オンライン学習について紹介する。オンライン学習に係る推定機の構築は、図13に示すような処理の流れに沿って行われる。図13に示すように、まず、学習用データの集合が情報処理装置10に入力されるStep1。次いで、情報処理装置10は、入力された学習用データの集合を利用し、既に説明した推定機の自動構築方法により推定機を構築するStep2。次いで、情報処理装置10は、随時又は所定のタイミングで追加の学習用データを取得するStep3。次いで、情報処理装置10は、Step1で入力された学習用データの集合に、Step3で取得した学習用データを統合するStep4。このとき、情報処理装置10は、学習用データのサンプリング処理や重み付け処理を実行し、統合後の学習用データの集合を生成する。そして、情報処理装置10は、統合後の学習用データの集合を利用し、再び推定機を構築するStep2。このとき、情報処理装置10は、既に説明した推定機の自動構築方法により推定機を構築する。また、Step2~Step4の処理は繰り返し実行される。そして、学習用データは、処理が繰り返される度に更新される。例えば、繰り返しの度に学習用データが追加されるようにすれば、推定機の構築処理に利用される学習用データの数が増加するため、推定機の性能が向上する。なお、Step4で実行される学習用データの統合処理においては、情報処理装置10のリソースをより有効に利用すべく、より有用な学習用データが推定機の構築に利用されるように統合の仕方を工夫する。以下、この工夫について紹介する。[1-3:学習用データの統合方法]学習用データの統合方法について、より詳細に説明する。1-3-1:特徴量空間における学習用データの分布と推定機の精度まず、図14を参照しながら、特徴量空間における学習用データの分布と推定機の精度との関係について考察する。図14は、特徴量空間における学習用データの分布例を示した説明図である。1つの特徴量ベクトルは、1つの学習用データを構成するデータを基底関数リストに含まれる各基底関数に入力することで得られる。つまり、1つの学習用データには1つの特徴量ベクトル特徴量座標が対応する。そのため、特徴量座標の分布を特徴量空間における学習用データの分布と呼ぶことにする。特徴量空間における学習用データの分布は、例えば、図14のようになる。なお、表現の都合上、図14の例では2次元の特徴量空間を考えているが、特徴量空間の次元数はこれに限定されない。さて、図14に例示した特徴量座標の分布を参照すると、第4象限に疎な領域が存在していることに気づくであろう。既に説明した通り、推定関数は、全ての学習用データについて特徴量ベクトルと目的変数との関係がうまく表現されるように回帰/判別学習により生成される。そのため、特徴量座標の密度が疎な領域について、推定関数は、特徴量ベクトルと目的変数との関係をうまく表現できていない可能性が高い。従って、認識処理の対象となる入力データに対応する特徴量座標が上記の疎な領域に位置する場合、高精度の認識結果を期待することは難しい。図15に示すように、学習データセットの数が多くなると疎な領域が生じにくくなり、どの領域に対応する入力データが入力されても高い精度で認識結果を出力することが可能な推定機を構築できるようになると期待される。また、学習データセットの数が比較的少なくても、特徴量座標が特徴量空間において満遍なく分布していれば、高い精度で認識結果を出力することが可能な推定機を構築できるものと期待される。そこで、本件発明者は、学習用データを統合する際に特徴量座標の分布を考慮し、統合後の学習用データの集合に対応する特徴量座標の分布が所定の分布例えば、一様分布やガウス分布などとなるように調整する仕組みを考案した。1-3-2:データ統合時にサンプリングする構成まず、図16を参照しながら、学習用データをサンプリングする方法について説明する。図16は、学習用データをサンプリングする方法について説明するための説明図である。既に説明したように、オンライン学習を適用する場合、逐次的に学習用データを追加できるため、多量の学習用データを用いて推定機を構築することが可能になる。しかし、情報処理装置10のメモリリソースが限られている場合、学習用データの統合時に、推定機の構築に利用する学習用データの数を絞り込む必要がある。このとき、ランダムに学習用データを間引くのではなく、特徴量座標の分布を考慮して学習用データを間引くことで、推定機の精度を低下させることなく、学習用データの数を絞り込むことができる。例えば、図16に示すように、密な領域に含まれる特徴量座標を多く間引き、疎な領域に含まれる特徴量座標を極力残すようにする。このような方法で学習用データを間引くことにより、統合後の学習用データの集合に対応する特徴量座標の密度が均一になる。つまり、学習用データの数は少なくなったが、特徴量空間の全体に満遍なく特徴量座標が分布しているため、推定関数の生成時に実行する回帰/判別学習の際に特徴量空間の全体が考慮されることになる。その結果、情報処理装置10のメモリリソースが限られていても、高い精度で正しい認識結果を推定することが可能な推定機を構築することが可能になる。1-3-3:データ統合時に重み付けする構成次に、学習用データに重みを設定する方法について説明する。情報処理装置10のメモリリソースが限られている場合、学習用データの統合時に学習用データを間引く方法は有効である。一方、メモリリソースに余裕がある場合、学習用データを間引く代わりに、学習用データに重みを設定することで推定機の性能を向上させることが可能になる。例えば、疎な領域に特徴量座標が含まれる学習用データには大きな重みを設定し、密な領域に特徴量座標が含まれる学習用データには小さな重みを設定する。そして、推定関数の生成時に実行する回帰/判別学習の際に各学習用データに設定された重みを考慮するようにする。1-3-4:データ統合時にサンプリング及び重み付けする構成また、学習用データをサンプリングする方法と、学習用データに重みを設定する方法とを組み合わせてもよい。例えば、特徴量座標の分布が所定の分布となるように学習用データを間引いた後、間引き後の学習用データの集合に属する学習用データに対し、特徴量座標の密度に応じた重みを設定する。このように、間引き処理と重み付け処理とを組み合わせることにより、メモリリソースが限られていても、より高精度の推定機を構築することが可能になる。[1-4:効率的なサンプリング/重み付け方法]次に、学習用データの効率的なサンプリング/重み付け方法について説明する。1-4-1:サンプリング方法まず、図17を参照しながら、学習用データの効率的なサンプリング方法について説明する。図17は、学習用データの効率的なサンプリング方法について説明するための説明図である。図17に示すように、情報処理装置10は、全ての学習用データについて特徴量ベクトル特徴量座標を算出するS201。次いで、情報処理装置10は、算出した特徴量座標を正規化するS202。例えば、情報処理装置10は、図18に示すように、各特徴量について、分散が1、平均が0となるように値を正規化する。次いで、情報処理装置10は、ランダムにハッシュ関数gを生成するS203。例えば、情報処理装置10は、下記の式1に示すような5ビットの値を出力するハッシュ関数gを複数生成する。このとき、情報処理装置10は、Q個のハッシュ関数gqq=1~Qを生成する。但し、関数hjj=1~5は、下記の式2により定義される。また、d及びThresholdは、乱数により決定される。但し、特徴量座標の分布を一様分布に近づける場合、Thresholdの決定に用いる乱数として一様乱数を用いる。また、特徴量座標の分布をガウス分布に近づける場合、Thresholdの決定に用いる乱数としてガウス乱数を用いる。他の分布についても同様である。また、dの決定は、zdの算出に用いた基底関数の寄与率に応じた偏りのある乱数を用いて行われる。例えば、zdの算出に用いた基底関数の寄与率が大きいほど、dの発生する確率が高くなる乱数が用いられる。ハッシュ関数gqq=1~Qを生成すると、情報処理装置10は、各学習用データに対応する特徴量ベクトルZをハッシュ関数gqに入力し、ハッシュ値を算出する。そして、情報処理装置10は、算出したハッシュ値に基づいて学習用データをバケットに割り当てるS204。但し、ここで言うバケットとは、ハッシュ値として取り得る値が対応付けられた領域を意味する。例えば、ハッシュ値が5ビット、Q=256の場合について考えてみよう。この場合、バケットの構成は図19のようになる。図19に示すように、ハッシュ値が5ビットであるから、1つのハッシュ関数gqに対し、32個のバケット以下、バケットセットが設けられる。また、Q=256であるから、256組のバケットセットが設けられる。この例に沿って、学習用データをバケットに割り当てる方法について説明する。ある学習用データに対応する特徴量ベクトルZが与えられると、256個のハッシュ関数g1~g256を用いて256個のハッシュ値が算出される。例えば、g1Z=210進数表示であった場合、情報処理装置10は、その学習用データをg1に対応するバケットセットの中で2に対応するバケットに割り当てる。同様に、gqZq=2~256を算出し、各値に対応するバケットに学習用データを割り当てる。図19の例では、2種類の学習用データを白丸と黒丸とで表現し、各バケットとの対応関係を模式的に表現している。このようにして各学習用データをバケットに割り当てると、情報処理装置10は、所定の順序でバケットから学習用データを1つ選択するS205。例えば、情報処理装置10は、図20に示すように、左上ハッシュ関数のインデックスqが小さく、バケットに割り当てられた値が小さい側から順にバケットを走査し、バケットに割り当てられた学習用データを1つ選択する。バケットから学習用データを選択するルールは、図21に示した通りである。第1に、情報処理装置10は、空のバケットをスキップする。第2に、情報処理装置10は、1つの学習用データを選択した場合、同じ学習用データを他の全てのバケットから除く。第3に、情報処理装置10は、1つのバケットに複数の学習用データが割り当てられている場合にはランダムに1つの学習用データを選択する。なお、選択された学習用データの情報は、情報処理装置10により保持される。1つの学習用データを選択した後、情報処理装置10は、所定数の学習用データを選択し終えたか否かを判定するS206。所定数の学習用データを選択し終えた場合、情報処理装置10は、選択した所定数の学習用データを統合後の学習用データの集合として出力し、学習用データの統合に係る一連の処理を終了する。一方、所定数の学習用データを選択し終えていない場合、情報処理装置10は、処理をステップS205に進める。以上、学習用データの効率的なサンプリング方法について説明した。なお、特徴量空間と上記のバケットとの対応関係は図22に示したイメージ図のようになる。また、上記の方法により学習用データのサンプリングを行った結果は、例えば、図23一様分布の例のようになる。図23を参照すると、疎な領域に含まれる特徴量座標は残り、密な領域に含まれる特徴量座標が間引かれていることが分かる。なお、上記のバケットを利用しない場合、学習用データのサンプリングに要する演算負荷は格段に大きくなる点に注意されたい。1-4-2:重み付け方法次に、図24を参照しながら、学習用データの効率的な重み付け方法について説明する。図24は、学習用データの効率的な重み付け方法について説明するための説明図である。図24に示すように、情報処理装置10は、全ての学習用データについて特徴量ベクトル特徴量座標を算出するS211。次いで、情報処理装置10は、算出した特徴量座標を正規化するS212。例えば、情報処理装置10は、図24に示すように、各特徴量について、分散が1、平均が0となるように値を正規化する。次いで、情報処理装置10は、ランダムにハッシュ関数gを生成するS213。例えば、情報処理装置10は、上記の式1に示すような5ビットの値を出力するハッシュ関数gを複数生成する。このとき、情報処理装置10は、Q個のハッシュ関数gqq=1~Qを生成する。但し、関数hjj=1~5は、上記の式2により定義される。また、d及びThresholdは、乱数により決定される。但し、特徴量座標の分布を一様分布に近づける場合、Thresholdの決定に用いる乱数として一様乱数を用いる。また、特徴量座標の分布をガウス分布に近づける場合、Thresholdの決定に用いる乱数としてガウス乱数を用いる。他の分布についても同様である。また、dの決定は、zdの算出に用いた基底関数の寄与率に応じた偏りのある乱数を用いて行われる。例えば、zdの算出に用いた基底関数の寄与率が大きいほど、dの発生する確率が高くなる乱数が用いられる。ハッシュ関数gqq=1~Qを生成すると、情報処理装置10は、各学習用データに対応する特徴量ベクトルZをハッシュ関数gqに入力し、ハッシュ値を算出する。そして、情報処理装置10は、算出したハッシュ値に基づいて学習用データをバケットに割り当てるS214。次いで、情報処理装置10は、各学習用データについて密度を算出するS215。例えば、図25に示すように、学習データセットがバケットに割り当てられているものとしよう。また、白丸で表現された学習用データに注目する。この場合、情報処理装置10は、まず、各ハッシュ関数に対応するバケットセットについて、白丸を含むバケットに割り当てられている学習用データの数をカウントする。例えば、ハッシュ関数g1に対応するバケットセットを参照すると、白丸を含むバケットに割り当てられている学習用データの数は1である。同様に、ハッシュ関数g2に対応するバケットセットを参照すると、白丸を含むバケットに割り当てられている学習用データの数は2である。情報処理装置10は、ハッシュ関数g1~g256に対応するバケットセットについて、白丸を含むバケットに割り当てられている学習用データの数をカウントする。そして、情報処理装置10は、カウントした数の平均値を算出し、算出した平均値を白丸に対応する学習用データの密度とみなす。同様にして、情報処理装置10は、全ての学習用データの密度を算出する。なお、各学習用データの密度は図26のB図のように表現される。但し、色が濃い部分の密度が高く、色が薄い部分の密度が低い。さて、全ての学習用データについて密度を算出し終えると、情報処理装置10は、処理をステップS217に進めるS216。ステップS217に処理を進めた場合、情報処理装置10は、算出した密度から各学習用データに設定する重みを算出するS217。例えば、情報処理装置10は、密度の逆数を重みに設定する。なお、各学習用データに設定される重みの分布は図27のB図のように表現される。但し、色が濃い部分の重みが大きく、色が薄い部分の重みが小さい。図27を参照すると、密な領域の重みが小さく、疎な領域の重みが大きくなっていることが分かるであろう。上記のようにして各学習用データに設定する重みを算出し終えると、情報処理装置10は、重み付けに係る一連の処理を終了する。以上、学習用データの効率的な重み付け方法について説明した。なお、上記のバケットを利用しない場合、学習用データの重み付けに要する演算負荷は格段に大きくなる点に注意されたい。1-4-3:組み合わせ方法次に、図28を参照しながら、上記の効率的なサンプリング方法と効率的な重み付け方法とを組み合わせる方法について説明する。図28は、上記の効率的なサンプリング方法と効率的な重み付け方法とを組み合わせる方法について説明するための説明図である。図28に示すように、情報処理装置10は、まず、学習用データのサンプリング処理を実行するS221。このサンプリング処理は、図17に示した処理の流れに沿って実行される。そして、所定数の学習用データが得られると、情報処理装置10は、得られた学習用データを対象に重み付け処理を実行するS222。この重み付け処理は、図24に示した処理の流れに沿って実行される。なお、サンプリング処理の際に算出した特徴量ベクトルやハッシュ関数を流用してもよい。サンプリング処理及び重み付け処理を実行し終えると、情報処理装置10は、一連の処理を終了する。以上、学習用データの効率的なサンプリング/重み付け方法について説明した。[1-5:サンプリング処理及び重み付け処理に関する変形例]次に、サンプリング処理及び重み付け処理に関する変形例を紹介する。1-5-1:変形例1距離に基づく処理まず、図29を参照しながら、特徴量座標間の距離に基づく学習用データのサンプリング方法について説明する。図29は、特徴量座標間の距離に基づく学習用データのサンプリング方法について説明するための説明図である。図29に示すように、情報処理装置10は、まず、ランダムに1つの特徴量座標を選択するS231。次いで、情報処理装置10は、インデックスjを1に初期化するS232。次いで、情報処理装置10は、未だ選択されてないJ個の特徴量座標の中からj番目の特徴量座標を対象座標に設定するS233。次いで、情報処理装置10は、既に選択された全ての特徴量座標と対象座標との距離Dを算出するS234。次いで、情報処理装置10は、算出した距離Dの最小値Dminを抽出するS235。次いで、情報処理装置10は、j=Jであるか否かを判定するS236。j=Jである場合、情報処理装置10は、処理をステップS237に進める。一方、j≠Jである場合、情報処理装置10は、処理をステップS233に進める。処理をステップS237に進めた場合、情報処理装置10は、最小値Dminが最大となる対象座標特徴量座標を選択するS237。次いで、情報処理装置10は、ステップS231及びS237において選択された特徴量座標の数が所定数に達したか否かを判定するS238。ステップS231及びS237において選択された特徴量座標の数が所定数に達した場合、情報処理装置10は、選択された特徴量座標に対応する学習用データを統合後の学習用データの集合として出力し、一連の処理を終了する。一方、ステップS231及びS237において選択された特徴量座標の数が所定数に達していない場合、情報処理装置10は、処理をステップS232に進める。以上、特徴量座標間の距離に基づく学習用データのサンプリング方法について説明した。1-5-2:変形例2クラスタリングに基づく処理次に、クラスタリングに基づく学習用データのサンプリング/重み付け方法について説明する。なお、以下ではサンプリング方法及び重み付け方法についてそれぞれ別々に説明するが、これらの方法を組み合わせてもよい。データセットの選択まず、図30を参照しながら、クラスタリングに基づく学習用データのサンプリング方法について説明する。図30は、クラスタリングに基づく学習用データのサンプリング方法について説明するための説明図である。図30に示すように、まず、情報処理装置10は、特徴量ベクトルを所定数のクラスタに分類するS241。クラスタリング手法としては、例えば、k-means法や階層的クラスタリングなどの手法が利用可能である。次いで、情報処理装置10は、各クラスタから順に1つずつ特徴量ベクトルを選択するS242。そして、情報処理装置10は、選択した特徴量ベクトルに対応する学習用データを統合後の学習用データの集合として出力し、一連の処理を終了する。重みの設定次に、図31を参照しながら、クラスタリングに基づく学習用データの重み付け方法について説明する。図31は、クラスタリングに基づく学習用データの重み付け方法について説明するための説明図である。図31に示すように、まず、情報処理装置10は、特徴量ベクトルを所定数のクラスタに分類するS251。クラスタリング手法としては、例えば、k-means法や階層的クラスタリングなどの手法が利用可能である。次いで、情報処理装置10は、各クラスタの要素数をカウントし、要素数の逆数を算出するS252。そして、情報処理装置10は、算出した要素数の逆数を重みとして出力し、一連の処理を終了する。以上、クラスタリングに基づく学習用データのサンプリング/重み付け方法について説明した。1-5-3:変形例3密度推定手法に基づく処理次に、密度推定手法に基づく学習用データのサンプリング/重み付け方法について説明する。なお、以下ではサンプリング方法及び重み付け方法についてそれぞれ別々に説明するが、これらの方法を組み合わせてもよい。データセットの選択まず、図32を参照しながら、密度推定手法に基づく学習用データのサンプリング方法について説明する。図32は、密度推定手法に基づく学習用データのサンプリング方法について説明するための説明図である。図32に示すように、まず、情報処理装置10は、特徴量座標の密度をモデル化するS261。密度のモデル化には、例えば、GMMGaussianMixtureModelなどの密度推定手法が利用される。次いで、情報処理装置10は、構築したモデルに基づいて各特徴量座標の密度を算出するS262。次いで、情報処理装置10は、未だ選択されていない特徴量座標の中から、密度の逆数に比例する確率でランダムに特徴量座標を選択するS263。次いで、情報処理装置10は、所定数の特徴量座標を選択したか否かを判定するS264。所定数の特徴量座標を選択していない場合、情報処理装置10は、処理をステップS263に進める。一方、所定数の特徴量座標を選択した場合、情報処理装置10は、選択した特徴量座標に対応する学習用データを統合後の学習用データの集合として出力し、一連の処理を終了する。重みの設定次に、図33を参照しながら、密度推定手法に基づく学習用データの重み付け方法について説明する。図33は、密度推定手法に基づく学習用データの重み付け方法について説明するための説明図である。図33に示すように、まず、情報処理装置10は、特徴量座標の密度をモデル化するS271。密度のモデル化には、例えば、GMMなどの密度推定手法が利用される。次いで、情報処理装置10は、構築したモデルに基づいて各特徴量座標の密度を算出するS272。そして、情報処理装置10は、算出した密度の逆数を重みに設定し、一連の処理を終了する。以上、密度推定手法に基づく学習用データのサンプリング/重み付け方法について説明した。以上、後述する実施形態において利用可能な基盤技術について説明した。但し、後述する実施形態に係る技術は、ここで説明した基盤技術の全てを利用しなくてもよいし、当該基盤技術を変形して利用したり、或いは、他の機械学習アルゴリズムを組み合わせて利用したりしてもよい点に注意されたい。<2:実施形態>以下、本技術の一実施形態について説明する。[2-1:思考ルーチンの自動構築方法]本実施形態は、ロボットのようなエージェントの思考ルーチンや様々なゲームに登場するNPCNon-PlayerCharacterの思考ルーチンを自動構築する技術に関する。例えば、本実施形態は、ある状態SにおかれたNPCが次にとる行動aを決定する思考ルーチンを自動構築する技術に関する。本稿においては、状態Sの入力に応じて行動aを出力するプログラムを思考ルーチンと呼ぶことにする。また、以下では、NPCの行動aを決定する思考ルーチンを例に挙げて説明を進めることにする。もちろん、ロボットなどの行動を決定する思考ルーチンも同様に自動構築することが可能である。2-1-1:思考ルーチンとは上記の通り、本稿に言う思考ルーチンは、図34に示すように、状態Sの入力に応じて行動aを出力するプログラムである。なお、状態Sとは、ある瞬間に、行動aを決定すべきNPCがおかれた環境を意味する。例えば、図34に示すように、2つのNPCNPC1及び2が対戦する対戦ゲームについて考えてみよう。この対戦ゲームは、NPC1及び2がそれぞれヒットポイントを有しており、ダメージを受けるとヒットポイントが減少していく仕組みになっているものとする。この例において、ある瞬間における状態Sは、NPC1及び2のヒットポイント及び位置関係になる。この状態Sが入力されると、思考ルーチンは、NPC1がNPC2にダメージを与え、最終的にNPC2のヒットポイントを0にできることが期待されるNPC1の行動aを決定する。例えば、NPC1のヒットポイントが十分に残っており、NPC2のヒットポイントが僅かである場合、思考ルーチンは、NPC1が多少のダメージを受けることを許容してNPC2に素早くダメージを与える行動aを決定するかもしれない。また、NPC1のヒットポイントが残り僅かであり、NPC2のヒットポイントが十分に残っている場合、思考ルーチンは、NPC1がダメージを受けないようにしつつ、NPC2にダメージを与える行動aを決定するだろう。これまで、NPCの行動を決定する思考ルーチンは、熟練した技術者により長い時間をかけて設計されていた。もちろん、NPCの行動をランダムに決定する思考ルーチンも存在するであろう。しかし、賢いNPCの行動を実現することが可能な思考ルーチンを構築するには、ユーザ操作の分析や環境に応じた最適な行動の研究が欠かせなかった。さらに、こうした分析や研究の結果を踏まえて、環境に応じたNPCの最適な行動を決定するための条件設計を行う必要があった。そのため、思考ルーチンの構築には長い時間と大きな労力とが必要であった。こうした事情を踏まえ、本件発明者は、このような思考ルーチンを人手に依らずに自動構築する技術を開発した。2-1-2:思考ルーチンの構成図35に示すように、本実施形態に係る思考ルーチンは、行動履歴データに基づく思考ルーチンの自動構築技術により生成される。この行動履歴データは、状態S、行動a、報酬rにより構成される。例えば、状態S=S1において、NPC1が行動a=右へ移動をとった場合にNPC2からダメージを受けてヒットポイントが0になったとしよう。この場合、行動履歴データは、状態S=S1、行動a=右へ移動、報酬r=0となる。このような構成を有する行動履歴データを予め蓄積しておき、この行動履歴データを学習データとする機械学習により思考ルーチンを自動構築することができる。本実施形態に係る思考ルーチンは、図36に示すような構成を有する。図36に示すように、この思考ルーチンは、状態Sの入力に応じてNPCがとりうる行動aをリストアップし、各行動aについてNPCが得るであろう報酬rの推定値以下、推定報酬yを算出する。そして、思考ルーチンは、推定報酬yが最も高い行動aを選択する。なお、推定報酬yは、報酬推定機を利用して算出される。この推定報酬機は、状態S及び行動aの入力に応じて推定報酬yを出力するアルゴリズムである。また、この報酬推定機は、行動履歴データを学習データとする機械学習により自動構築される。例えば、先に紹介した推定機の自動構築方法を応用することにより、報酬推定機を自動構築することができる。報酬推定機は、図37に示すように、基底関数リストφ1,...,φM及び推定関数fにより構成される。基底関数リストφ1,...,φMは、M個の基底関数φkk=1~Mを含む。また、基底関数φkは、入力データX状態S及び行動aの入力に応じて特徴量zkを出力する関数である。さらに、推定関数fは、M個の特徴量zkk=1~Mを要素として含む特徴量ベクトルZ=z1,...,zMの入力に応じて推定報酬yを出力する関数である。基底関数φkは、予め用意された1又は複数の処理関数を組み合わせて生成される。処理関数としては、例えば、三角関数、指数関数、四則演算、デジタルフィルタ、微分演算、中央値フィルタ、正規化演算などが利用可能である。また、本実施形態に係る思考ルーチンの自動構築技術は、自動構築された思考ルーチンを利用してNPCを行動させ、その行動の結果として得られた行動履歴データを追加した行動履歴データを利用して思考ルーチンを更新する。但し、行動履歴データの追加には、先に紹介したオンライン学習に係る技術を利用することができる。2-1-3:報酬推定機の構築方法例えば、オンライン学習に係る技術を利用した報酬推定機の構築及び更新は、図38に示すような処理の流れに沿って行われる。なお、これらの処理は、情報処理装置10により実行されるものとする。図38に示すように、まず、行動履歴データが情報処理装置10に入力されるStep1。Step1において、情報処理装置10は、予め設計された簡易な思考ルーチンを用いて行動aを決定しながらNPCを環境中で振る舞わせ、行動履歴データS,a,rを得る。この簡易な思考ルーチンは、強化学習の分野においてInnate赤ちゃんが行う本能的な動きに相当と呼ばれる。このInnateは、NPCが取り得るアクションの中からランダムに行動を選択するものであってもよい。この場合、Innateの設計も不要になる。情報処理装置10は、所定数の行動履歴データが得られるまでInnateに基づくNPCの行動を繰り返し実行する。次いで、情報処理装置10は、入力された行動履歴データを利用し、既に説明した推定機の自動構築方法と同様にして報酬推定機を構築するStep2。次いで、情報処理装置10は、随時又は所定のタイミングで追加の行動履歴データを取得するStep3。次いで、情報処理装置10は、Step1で入力された行動履歴データと、Step3で取得した行動履歴データとを統合するStep4。このとき、情報処理装置10は、行動履歴データのサンプリング処理や重み付け処理を実行し、統合後の行動履歴データを生成する。そして、情報処理装置10は、統合後の行動履歴データを利用し、再び報酬推定機を構築するStep2。また、Step2~Step4の処理は繰り返し実行される。そして、行動履歴データは、処理が繰り返される度に更新される。以上、思考ルーチンの自動構築方法について簡単に説明した。ここではNPCの行動を決定する思考ルーチンの自動構築方法について述べたが、行動履歴データの構成を変えることで様々な種類の思考ルーチンを同じように自動構築することができる。つまり、本実施形態の技術を適用することにより、統一的な仕組みで様々な思考ルーチンを構築できるようになる。また、自動的に思考ルーチンが構築されるため、思考ルーチンの構築に人が時間を費やさずに済み、労力が大幅に軽減される。[2-2:情報処理装置10の構成]ここで、図39及び図40を参照しながら、本実施形態に係る情報処理装置10の機能構成について説明する。図39は、本実施形態に係る情報処理装置10の全体的な機能構成を示した説明図である。一方、図40は、本実施形態に係る情報処理装置10を構成する報酬推定機構築部12の詳細な機能構成を示した説明図である。全体的な機能構成まず、図39を参照しながら、全体的な機能構成について説明する。図39に示すように、情報処理装置10は、主に、行動履歴データ取得部11と、報酬推定機構築部12と、入力データ取得部13と、行動選択部14とにより構成される。思考ルーチンの構築処理が開始されると、行動履歴データ取得部11は、報酬推定機の構築に利用する行動履歴データを取得する。例えば、行動履歴データ取得部11は、簡易な思考ルーチンInnateに基づいて繰り返しNPCを行動させ、所定数の行動履歴データを取得する。但し、行動履歴データ取得部11は、記憶装置非図示に予め格納された行動履歴データを読み出したり、或いは、行動履歴データを提供するシステムなどからネットワークを介して行動履歴データを取得したりしてもよい。行動履歴データ取得部11により取得された行動履歴データは、報酬推定機構築部12に入力される。行動履歴データが入力されると、報酬推定機構築部12は、入力された行動履歴データに基づく機械学習により報酬推定機を構築する。例えば、報酬推定機構築部12は、既に説明した遺伝アルゴリズムに基づく推定機の自動構築方法を利用して報酬推定機を構築する。また、行動履歴データ取得部11から追加の行動履歴データが入力された場合、報酬推定機構築部12は、行動履歴データを統合し、統合後の行動履歴データを利用して報酬推定機を構築する。報酬推定機構築部12により構築された報酬推定機は、行動選択部14に入力される。この報酬推定機は、任意の入力データ状態Sに対して最適な行動を選択するために利用される。入力データ取得部13により入力データ状態Sが取得されると、取得された入力データは、行動選択部14に入力される。入力データが入力されると、行動選択部14は、入力された入力データが示す状態S及び状態SにおいてNPCがとりうる行動aを報酬推定機に入力し、報酬推定機から出力される推定報酬yに基づいて行動aを選択する。例えば、図36に示すように、行動選択部14は、推定報酬yが最も高くなる行動aを選択する。以上、情報処理装置10の全体的な機能構成について説明した。報酬推定機構築部12の機能構成次に、図40を参照しながら、報酬推定機構築部12の機能構成について詳細に説明する。図40に示すように、報酬推定機構築部12は、基底関数リスト生成部121と、特徴量計算部122と、推定関数生成部123と、行動履歴データ統合部124とにより構成される。思考ルーチンの構築処理が開始されると、まず、基底関数リスト生成部121は、基底関数リストを生成する。そして、基底関数リスト生成部121により生成された基底関数リストは、特徴量計算部122に入力される。また、特徴量計算部122には、行動履歴データが入力される。基底関数リスト及び行動履歴データが入力されると、特徴量計算部122は、入力された行動履歴データを基底関数リストに含まれる各基底関数に入力して特徴量を算出する。特徴量計算部122により算出された特徴量の組特徴量ベクトルは、推定関数生成部123に入力される。特徴量ベクトルが入力されると、推定関数生成部123は、入力された特徴量ベクトル及び行動履歴データを構成する報酬値rに基づいて回帰/判別学習により推定関数を生成する。なお、遺伝アルゴリズムに基づく推定機の構築方法を適用する場合、推定関数生成部123は、生成した推定関数に対する各基底関数の寄与率評価値を算出し、その寄与率に基づいて終了条件を満たすか否かを判定する。終了条件を満たす場合、推定関数生成部123は、基底関数リスト及び推定関数を含む報酬推定機を出力する。一方、終了条件を満たさない場合、推定関数生成部123は、生成した推定関数に対する各基底関数の寄与率を基底関数リスト生成部121に通知する。この通知を受けた基底関数リスト生成部121は、遺伝アルゴリズムにより各基底関数の寄与率に基づいて基底関数リストを更新する。基底関数リストを更新した場合、基底関数リスト生成部121は、更新後の基底関数リストを特徴量計算部122に入力する。更新後の基底関数リストが入力された場合、特徴量計算部122は、更新後の基底関数リストを用いて特徴量ベクトルを算出する。そして、特徴量計算部122により算出された特徴量ベクトルは、推定関数生成部123に入力される。上記のように、遺伝アルゴリズムに基づく推定機の構築方法を適用する場合、終了条件が満たされるまで、推定関数生成部123による推定関数の生成処理、基底関数リスト生成部121による基底関数リストの更新処理、及び特徴量計算部122による特徴量ベクトルの算出処理が繰り返し実行される。そして、終了条件が満たされた場合、推定関数生成部123から報酬推定機が出力される。また、追加の行動履歴データが入力されると、入力された追加の行動履歴データは、特徴量計算部122及び行動履歴データ統合部124に入力される。追加の行動履歴データが入力されると、特徴量計算部122は、追加の行動履歴データを基底関数リストに含まれる各基底関数に入力して特徴量を生成する。そして、追加の行動履歴データに対応する特徴量ベクトル及び既存の行動履歴データに対応する特徴量ベクトルは、行動履歴データ統合部124に入力される。なお、行動履歴データ統合部124には、既存の行動履歴データも入力されているものとする。行動履歴データ統合部124は、先に紹介したデータセットの統合方法を応用して既存の行動履歴データと追加の行動履歴データとを統合する。例えば、行動履歴データ統合部124は、特徴量空間において特徴量ベクトルにより示される座標特徴量座標の分布が所定の分布となるように行動履歴データを間引いたり、行動履歴データに重みを設定したりする。行動履歴データを間引いた場合、間引き後の行動履歴データが統合後の行動履歴データとして利用される。一方、行動履歴データに重みを設定した場合、推定関数生成部123による回帰/判別学習の際に各行動履歴データに設定された重みが考慮される。行動履歴データが統合されると、統合後の行動履歴データを用いて報酬推定機の自動構築処理が実行される。具体的には、行動履歴データ統合部124から推定関数生成部123に統合後の行動履歴データと、統合後の行動履歴データに対応する特徴量ベクトルとが入力され、推定関数生成部123により推定関数が生成される。また、遺伝アルゴリズムに基づく推定機の構築方法を適用する場合、統合後の行動履歴データを利用して推定関数の生成、寄与率の算出、基底関数リストの更新などの処理が実行される。以上、報酬推定機構築部12の詳細な機能構成について説明した。以上、本実施形態に係る情報処理装置10の構成について説明した。上記の構成を適用することにより、任意の状態SからNPCがとるべき次の行動aを決定する思考ルーチンを自動構築することができる。また、この思考ルーチンを利用して賢くNPCを行動させることが可能になる。なお、利用する行動履歴データを変えることで、ロボットなどのエージェントについても同様に賢く行動させることが可能になる。[2-3:効率的な推定報酬機の構築方法]これまで、先に紹介した推定機の自動構築方法に基づく思考ルーチンの自動構築方法について説明してきた。確かに、この方法を適用すると、思考ルーチンを自動構築することが可能になる。しかし、賢く行動するNPCの思考ルーチンを自動構築するには、ある程度長い時間をかけて学習処理を繰り返し実行する必要がある。そこで、本件発明者は、より効率良く高性能な推定報酬機を構築する方法を考案した。以下、図41及び図42を参照しながら、効率的な推定報酬機の構築方法について説明する。この方法は、より学習効率の高い行動履歴データを取得する方法に関する。より学習効率の高い行動履歴データとは、より推定報酬が高く、より推定誤差が大きく、かつ、特徴量空間における密度が疎な領域にある特徴量座標に対応するデータである。そこで、図42に示す3つのスコアを導入する。1つ目は、推定報酬が高いほど大きな値となる報酬スコアである。2つ目は、特徴量空間における密度が疎であるほど大きな値となる未知スコアである。3つ目は、推定誤差が大きいほど大きな値となる誤差スコアである。例えば、図41に示した行動a1、a2、a3に注目しよう。仮に、鎖線で囲まれた領域は、推定誤差の小さい領域であるとする。また、図の右上方向に向かうにつれて推定報酬が高くなっているとする。この場合、行動a1は、報酬スコアが比較的高く、未知スコアが比較的高く、誤差スコアが比較的低い行動であると言える。また、行動a2は、報酬スコアが比較的低く、未知スコアが比較的低く、誤差スコアが比較的高い行動であると言える。そして、行動a3は、報酬スコアが比較的高く、未知スコアが比較的高く、誤差スコアが比較的高い行動であると言える。より報酬スコアの高い行動を優先的に選択することにより、高い報酬を実現するために必要な行動履歴データを収集することができる。また、より未知スコアが高いか、より誤差スコアが高い行動を優先的に選択することにより、その行動を選択した結果が不定であるような行動履歴データを収集することができる。例えば、図41の例では、行動a3を選択することにより、より高い報酬を得られることが期待され、かつ、その行動を選択した結果が不定であるような行動履歴データを収集できると考えられる。図38に示した処理のうち、Step1及び/又はStep3において上記の方法による行動履歴データの取得を行うことで、Step2における報酬推定機の構築をより効率的に実現することが可能になる。以上、効率的な推定報酬機の構築方法について説明した。[2-4:変形例1アクションスコア推定機を用いる思考ルーチン]さて、これまでは報酬推定機を用いて報酬を推定し、推定した報酬に基づいて行動を選択する思考ルーチンについて考えてきた。ここでは、図44に示すように、アクションスコア推定機を用いてアクションスコアを推定し、推定したアクションスコアに基づいて行動を選択する思考ルーチンについて考えてみたい。ここで言うアクションスコアとは、とりうる各行動に対応付けられたスコアであり、対応する行動をとることで好ましい結果が得られる確率の高さを表す。アクションスコアを利用する場合、行動履歴データは、図43に示すような形で与えられる。まず、情報処理装置10は、これまで説明してきた行動履歴データと同様にして状態S、行動a、報酬rの組を収集する。その後、情報処理装置10は、報酬rに基づいてアクションスコアを算出する。例えば、状態S=S1において行動a=R右へ移動をとった場合に報酬r=0が得られたものとしよう。この場合、行動a=Rに対応するアクションスコアは0となり、それ以外の行動LNJに対応するアクションスコアは1となる。その結果、状態S=S1及び行動a=Rに対応するアクションスコアR,L,N,J=0,1,1,1が得られる。また、状態S=S2において行動a=L左へ移動をとった場合に報酬r=1が得られたものとしよう。この場合、行動a=Lに対応するアクションスコアは1となり、それ以外の行動RNJに対応するアクションスコアは0となる。その結果、状態S=S2及び行動a=Lに対応するアクションスコアR,L,N,J=0,1,0,0が得られる。上記のようにして得られた状態S、行動a、アクションスコアの組を行動履歴データとして利用すると、機械学習により、状態Sの入力に応じてアクションスコアの推定値を算出するアクションスコア推定機が得られる。例えば、遺伝アルゴリズムに基づく推定機の自動構築方法を適用すれば、高性能なアクションスコア推定機を自動構築することができる。また、行動履歴データを収集する際に、効率的な報酬推定機の構築方法と同様の方法を用いれば、効率的にアクションスコア推定機を自動構築することができる。アクションスコア推定機を用いる場合、思考ルーチンの構成は図44のようになる。つまり、状態Sを思考ルーチンに入力すると、思考ルーチンは、アクションスコア推定機に状態Sを入力し、アクションスコアの推定値を算出する。そして、思考ルーチンは、アクションスコアの推定値が最も高い行動を選択する。例えば、図44に示すように、アクションスコアの推定値がR,L,J,N=0.6,0.3,0.4,0.2であった場合、思考ルーチンは、推定値0.6に対応する行動Rを選択する。以上、アクションスコア推定機を用いる思考ルーチンについて説明した。[2-5:変形例2予測機を用いた報酬の推定]次に、予測機を用いた報酬の推定方法について説明する。なお、ここで言う予測機とは、ある時刻t1における状態St1及び状態St1においてNPCがとった行動at1を入力した場合に、次の時刻t2における状態St2を出力するアルゴリズムのことを意味する。2-5-1:予測機の構築方法上記の予測機は、図45に示すような方法で構築される。図45に示すように、時刻毎に取得された行動履歴データが学習データとして利用される。例えば、時刻t2において状態S2にあるNPCが何もしなかった場合に好ましい結果が得られた場合、行動履歴データは、時刻t=t2、状態S=S2、行動a=何もせず、報酬r=1となる。なお、予測機の自動構築方法については、特願2009-277084号明細書に詳しく記載されている。同明細書には、ある時点までの観測値から将来の時点における観測値を予測する予測機を機械学習により自動構築する方法が記載されている。2-5-2:報酬の推定方法上記の予測機を利用すると、図46に示すように、将来得るであろう報酬を推定することが可能になる。例えば、時刻tにおいて状態StにあるNPCが行動atをとった場合に時刻t1において実現される状態St1を予測し、その状態St1においてNPCがとりうる行動毎に推定報酬yを算出することができるようになる。そのため、時刻t1において推定される報酬に基づいて時刻tにおいてNPCがとるべき行動を選択することができるようになる。また、図47に示すように、予測機を繰り返し用いて数ステップ先の状態Stqから推定される推定報酬yを算出することもできる。この場合、各時刻においてNPCがとりうる行動の組み合わせを考慮し、最終的に最も高い推定報酬が得られる行動の組み合わせを選択することができるようになる。以上、予測機を用いた報酬の推定方法について説明した。[2-6:変形例3複数エージェントの同時学習]さて、これまでは1つのNPCに注目して最適な行動を選択する思考ルーチンの構築方法について考えてきた。しかし、2つ以上のNPCがとる行動を同時に考慮して思考ルーチンを構築することも可能である。2つのNPCが同じ環境中で行動する場合、両NPCがとる行動は状態Sに反映される。そのため、この方法を適用すると、他のNPCが最も高い推定報酬を見込める行動を選択して行動する環境中において、自身のNPCが最も高い推定報酬を見込める行動を選択するような思考ルーチンを自動構築することができる。例えば、MinMax法などを用いることにより、このような思考ルーチンの自動構築が実現される。以上、複数エージェントの同時学習について説明した。以上、本技術の一実施形態について説明した。<3:応用例>次に、本実施形態の技術を具体的に応用する方法について紹介する。[3-1:三目並べへの応用]まず、図48~図54を参照しながら、本実施形態に係る技術を三目並べへ応用する方法について説明する。図48に示すように、三目並べの主なルールは、1交互に手を打つ、2先に3つのマークが1列に並んだ方が勝ち、の2点である。また、三目並べにおいて、状態Sは盤面であり、行動aは各プレーヤが打つ手である。三目並べは、互いに最適な手を打つと必ず引き分けになることが知られている。このような完全情報ゲームに用いられる思考ルーチンの多くは、静的評価関数と先読みアルゴリズムとにより構成されている。この静的評価関数は、ある局面の有利/不利を数値化する関数である。例えば、図49に示すような局面が与えられた場合、静的評価関数は、その局面の有利/不利を表す数値y○不利:-1、どちらでもない:0、○有利:1などを出力する。本実施形態の場合、この静的評価関数の機能は、報酬推定機により実現される。また、先読みアルゴリズムは、先の手を読み、将来の静的評価関数の出力値がより高くなるような手を選択するアルゴリズムである。例えば、先読みアルゴリズムは、MinMax法などを利用して実現される。例えば、図50に示すように、先読みアルゴリズムは、自分の手番で手を打った後に、相手の手番で相手が打つ可能性のある手を想定し、想定した各手に対して自分が打てる手を想定して、自分が最も有利になる手を選択する。ところで、上記のような静的評価関数は、これまで人手により設計されていた。例えば、将棋のAIとして有名なボナンザでさえ、静的評価関数で考慮する局面の特徴などの設計事項は人手により設計されていた。また、ゲームの種類が変わると、特徴量の設計も変更する必要がある。そのため、これまでは試行錯誤を繰り返しながら静的評価関数をゲーム毎に人手で設計する必要があった。しかし、本実施形態に係る技術を適用すると、人手による設計作業を省いて思考ルーチンを自動構築することが可能になる。三目並べの場合、図51に示すように、状態S及び行動aを3×3のマトリックスで表現する。但し、状態Sは、自分の手番となた時点の盤面を表す。また、自分の手番で打った手を反映した盤面をS,aと表現する。さらに、自分の手を1、相手の手を-1、空白を0と表現する。つまり、盤面及び手を数値で表現する。このようにして盤面及び手が数値で表現できると、本実施形態に係る報酬推定機の自動構築方法を用いて思考ルーチンを自動構築することが可能になる。例えば、情報処理装置10は、まず、ランダムな場所に自分の手と相手の手とを打つInnateを利用して行動履歴データを生成する。上記の通り、S,aは、3×3マトリックスにより表現される。また、情報処理装置10は、図52に示すように、勝ちに至るまでに打った全ての手に対応するS,aに報酬1を与える。一方、情報処理装置10は、図53に示すように、負けに至るまでに打った全ての手に対応するS,aに報酬-1を与える。このようにして行動履歴データを蓄積すると、情報処理装置10は、蓄積した行動履歴データを利用して報酬推定機を構築する。実際に手を選択する場合、情報処理装置10は、図54に示すように、報酬推定機を利用して現在の状態Sから推定報酬yを算出し、推定報酬yが最大となる手を選択する。図54の例では、最大の推定報酬に対応する手Cが選択される。なお、図54の例では1手先の報酬を評価して手の選択を行っているが、対戦相手についても同じように推定報酬を算出し、MinMax法などを用いて数手先読みした結果を用いて現在の手を選択するように構成してもよい。また、学習により得られた報酬推定機を用いて常に最適な行動を選択するように構成すると、NPCによる手の選択が毎回同じになってしまうことがある。そこで、推定報酬を算出する工程に何らかのランダムネスを加えてもよい。例えば、報酬推定機により算出した推定報酬に僅かだけ乱数を加える方法が考えられる。また、遺伝アルゴリズムに基づく機械学習により報酬推定機を算出している場合、学習世代毎に算出される報酬推定機を保持しておき、利用する報酬推定機をランダムに切り替えるように構成してもよい。以上、三目並べへの応用について説明した。[3-2:対戦ゲームへの応用]次に、図55~図62を参照しながら、本実施形態に係る技術を対戦ゲームへと応用する方法について説明する。ここで考える対戦ゲームの主なルールは、図55に示すように、12人対戦ゲームであること、2各プレーヤの行動は左移動右移動左右移動なしジャンプジャンプなしの組み合わせであること、3相手のプレーヤを踏んだらY軸方向の加速度差に応じて相手にダメージを与えられること、の3点である。また、ヒットポイントが0になったプレーヤが負けである。なお、対戦ゲームへの応用には、先に説明したアクションスコア推定機を用いる思考ルーチンの構築方法が用いられる。この場合、状態Sとしては、自分の絶対座標、相手の絶対座標、時刻が利用される。そのため、状態Sは、図56に示すように3次元マトリックスにより表現される。また、ここでは、3次元マトリックスで表現される状態Sの入力に応じて5つの要素N,L,R,J,NJを持つアクションスコアを推定するアクションスコア推定機の自動構築方法について考える。但し、要素Nは、行動a=左右移動なしに対応するアクションスコアである。また、要素Lは、行動a=左移動に対応するアクションスコアである。要素Rは、行動a=右移動に対応するアクションスコアである。要素Jは、行動a=ジャンプに対応するアクションスコアである。要素NJは、行動a=ジャンプなしに対応するアクションスコアである。行動履歴データを収集するためのInnateとしては、例えば、完全にランダムにプレーヤの行動を選択するものが用いられる。例えば、このInnateは、N左右移動なし、L左移動、R右移動の中から1つの行動をランダムに選び、選んだ行動に組み合わせる行動をJジャンプ又はNJジャンプなしからランダムに1つ選ぶ。また、情報処理装置10は、図57に示すように、自分が相手にダメージを与えた時点で、前回自分又は相手がダメージを受けた時点から現時点までの行動履歴データの報酬を1に設定する。一方、自分が相手からダメージを受けた場合、情報処理装置10は、図57に示すように、前回自分又は相手がダメージを受けた時点から現時点までの行動履歴データの報酬を0に設定する。なお、報酬が1に設定された行動履歴データについて、情報処理装置10は、実際に行った行動のアクションスコアを1、行わなかった行動のアクションスコアを0に設定する。一方、報酬が0に設定された行動履歴データについて、情報処理装置10は、実際に行った行動のアクションスコアを0に設定し、行わなかった行動のアクションスコアを0に設定する。このような処理を繰り返すことにより、状態Sとアクションスコアとで構成される図57に示すような行動履歴データが得られる。行動履歴データが得られると、情報処理装置10は、図58に示した処理の流れに沿って思考ルーチンを構築する。図58に示すように、行動履歴データを取得するとS301、情報処理装置10は、取得した行動履歴データを利用した機械学習により思考ルーチンを構築するS302。次いで、情報処理装置10は、必要に応じて追加の行動履歴データを取得するS303。次いで、情報処理装置10は、追加した行動履歴データと元の行動履歴データとを統合するS304。次いで、情報処理装置10は、終了条件を満たしたか否かを判定するS305。例えば、ユーザによる終了操作が与えられた場合や、ランダムに行動するプレーヤに対する勝率が所定の閾値を越えた場合などに、情報処理装置10は、終了条件を満たしたと判定する。終了条件を満たしていない場合、情報処理装置10は、処理をステップS302に進める。一方、終了条件を満たした場合、情報処理装置10は、思考ルーチンの構築に係る一連の処理を終了する。このようにして自動構築された思考ルーチンを用いてプレーヤを行動させた結果、ランダムに行動するプレーヤに対する勝率について、図59に示すような結果が得られた。図59に示すように、15世代図58のステップS302~S304の繰り返し回数が15で思考ルーチンを利用して行動するプレーヤの勝率が100近くに達した。なお、行動の選択は、最もアクションスコアの高い行動を選択する方法で行われている。但し、この例では、行動を選択する際に、各アクションスコアに僅かの乱数を加えてから行動を選択するようにしている。また、先に説明した複数エージェントの同時学習を適用し、2人のプレーヤの行動を同時に学習して思考ルーチンを構築してみた。複数エージェントの同時学習を適用すると、ランダムでない動きをするプレーヤに対して勝とうとする思考ルーチンが自動構築されるため、より賢くプレーヤを行動させる思考ルーチンが構築される。なお、互いに思考ルーチンを用いて行動する2人のプレーヤを対戦させた結果を図60に示した。図60に示すように、学習世代によりプレーヤ1が大きく勝ち越す場合もあるが、プレーヤ2が大きく勝ち越す場合もある。また、ある学習世代において実験的に1000試合のゲームを行った結果、図61に示すように、プレーヤ1が大きく勝ち越す結果対戦勝率が得られた。但し、ランダムに行動するプレーヤを相手にした場合ランダム相手、プレーヤ1もプレーヤ2も相手に対して9割以上の高い勝率を得た。つまり、思考ルーチンを利用して行動するプレーヤは、十分に賢く行動しているのである。このように、複数エージェントの同時学習を適用すると、相手に勝とうとして思考ルーチンを強化しているうちに、ランダムに行動する相手に対しても高い確率で勝てる汎用的なアルゴリズムが得られる。ところで、これまでは状態Sとして、自分の座標、相手の座標、時刻を表現した3次元マトリクスを用いていたが、この3次元マトリクスに代えてゲーム画面の画像情報をそのまま用いる方法も考えられる。例えば、状態Sとして、図62に示すようなゲーム画面の輝度画像を用いることができる。つまり、状態Sは、行動を決定するために有用な情報が含まれてさえいれば何でもよいのである。この考えに基づくと、本実施形態に係る技術が様々なゲームやタスクに関する思考ルーチンの自動構築方法に応用できることが容易に想像できるであろう。以上、対戦ゲームへの応用について説明した。[3-3:五目並べへの応用]次に、図63及び図64を参照しながら、本実施形態に係る技術を五目並べへと応用する方法について説明する。五目並べの主なルールは、1交互に手を打つ、2縦横斜めに先に5つの石を並べた方が勝ち、の2点である。また、五目並べにおいて、状態Sは盤面であり、行動aは各プレーヤが打つ手である。五目並べへの応用方法は、基本的に三目並べへの応用方法と同じである。つまり、状態S及び行動aは、図63に示すように、2次元マトリクスで表現される。また、最初に用いる行動履歴データは、完全にランダムに石を配置するInnateを用いて取得される。そして、最終的に勝ちに至った全てのS,aに報酬1が設定され、負けに至った全てのS,aに報酬0が設定される。情報処理装置10は、この行動履歴データを用いて思考ルーチンを構築する。また、情報処理装置10は、思考ルーチンを用いて対局し、その結果を統合した行動履歴データを用いて思考ルーチンを構築する。これらの処理を繰り返すことにより、賢い行動を選択する思考ルーチンが構築される。また、行動を選択する際、情報処理装置10は、三目並べの場合と同様に全ての行動の可能性について石を置ける全ての点について石を置いたとして推定報酬を求め、最も推定報酬の高くなる点に石を置く。もちろん、情報処理装置10は、数手先を読んで石を置く位置を選択するように構成されていてもよい。なお、五目並べは、三目並べに比べて盤面の組み合わせ数が膨大である。そのため、ランダムに石を置くプレーヤは、見当違いの手を打ちがちであるために非常に弱い。従って、ランダムに石を置くプレーヤを相手に学習を行っても非常に弱い相手に勝つための思考ルーチンができあがるだけで、賢い思考ルーチンはなかなか得られない。そこで、対戦ゲームと同様に、複数エージェントの同時学習を適用し、自分と相手とを同じ環境で学習させる手法を用いる方が好ましい。このような構成にすることで、比較的高性能な思考ルーチンを自動構築することが可能になる。互いに思考ルーチンを用いて行動するプレーヤによる対局結果を図64に示した。以上、五目並べへの応用について説明した。[3-4:ポーカーへの応用]次に、図65~図67を参照しながら、本実施形態に係る技術をポーカーへと応用する方法について説明する。ポーカーの主なルールは、図65に示すように、15枚のカードを配る、2捨てるカードを選択する、3役の強い方が勝ち、の3点である。ここでは、カードが配られたときに、捨てるカードを決める思考ルーチンの構築方法について考える。図66に示すように、状態S及び行動aは、記号列で表現される。例えば、ハートのエースをHA、クラブの2をC2、ダイヤのKをDKなどと表現する。図66の場合、状態Sは、記号列SJCJC0D9D7で表現される。また、ダイヤの9及びダイヤの7を捨てた場合、行動aは、記号列D9D7で表現される。また、ゲームに勝った場合には報酬1が与えられ、負けた場合には報酬0が与えられる。このような表現を用いると、例えば、図67に示すような行動履歴データが得られる。最初に行動履歴データを取得するInnateとしては、例えば、完全にランダムに5枚のカードそれぞれを捨てるかどうか決定するものを利用する。また、情報処理装置10は、勝った行動履歴データには報酬1を設定し、負けた行動履歴データには報酬0を設定する。そして、情報処理装置10は、蓄積された行動履歴データを用いて思考ルーチンを構築する。このとき、行動を選択した結果、どのような役が揃ったか、相手の役がどのようなものだったかなどの情報は利用されない。つまり、純粋に勝ち負けだけを考慮して思考ルーチンが構築される。但し、自分が強い役を揃えるのに有利なカードの切り方を選択した行動履歴データほど報酬が1になる確率は高くなる傾向にある。さて、行動を選択する際、配られた5枚のカードそれぞれについて、カードを切る、カードを切らない、の選択肢が与えられる。そのため、行動の組み合わせは、2の5乗=32通り存在する。従って、思考ルーチンは、報酬推定機を利用し、32通りのS,aについて推定報酬を算出し、最も推定報酬の高い行動を選択する。以上、ポーカーへの応用について説明した。[3-5:ロールプレイングゲームへの応用]次に、図68~図79を参照しながら、本実施形態に係る技術をロールプレイングゲームへと応用する方法について説明する。ここでは、ロールプレイングゲームの戦闘シーンにおいてプレーヤに代わってキャラクタを賢く自動操作する思考ルーチンの自動構築方法について考える。なお、ここで考えるロールプレイングゲームのルールは、図68に示した通りである。また、図68に示すように、状態Sはプレーヤに提供される情報であり、行動aはキャラクタを操作するコマンドである。戦闘シーンの環境は、図69に示した通りである。まず、戦闘に勝つと生存者で経験値が山分けされる。さらに、経験値が貯まるとレベルアップする。また、レベルアップすると、キャラクタの職業に応じてステータスの値がアップしたり、魔法を覚えたりする。また、戦闘に5回連続で勝つと敵のレベルが1つアップすると共に、キャラクタのヒットポイントが回復する。また、敵のレベルが31に達するとゲームをクリアしたことになる。なお、戦闘シーンにおいて、キャラクタが持つステータスの1つである素早さの値に応じて各キャラクタが行動をおこせるタイミングが決まる。また、キャラクタがとれる行動は、攻撃及び魔法魔法を覚えている場合である。魔法の種類としては、Heal、Fire、Iceがある。Healは、味方のヒットポイントHPを回復する魔法である。Fireは、火を用いて敵を攻撃する魔法である。Iceは、氷を用いて敵を攻撃する魔法である。また、魔法をかけるターゲットは、単体又は全体のいずれかを選択可能である。但し、全体を選択した場合には魔法の効果が半減する。また、使える魔法の種類やレベルは、キャラクタのレベルに応じて変わる。さらに、同じ魔法でもレベルの高い魔法ほどマジックポイントMPを多く消費するが、効果は高い。キャラクタの職業及び職業毎のステータスは、図70に示した通りである。ステータス上昇率は、キャラクタのレベルが1つアップする度にステータスがアップする割合を示している。また、魔法を覚えるLvは、記載された値のレベルに達した場合にキャラクタが魔法を覚えるレベルを示している。但し、空欄に対応する魔法は覚えられない。また、0と記載されている箇所は、最初から魔法を覚えていることを示している。なお、味方のパーティは、上側4種類の職業を持つキャラクタにより構成される。一方、敵のパーティは、下側4種類の職業を持つキャラクタから選択されたキャラクタにより構成される。状態Sとして利用される味方側の情報は、図71に示した通りである。例えば、生存する味方のレベル、職業、HP、最大HP、MP、最大MP、攻撃力、防御力、素早さなどが状態Sとして利用される。なお、職業の欄は、当てはまる職業の欄に1、それ以外の欄に0が記入される。また、その他の欄には現状の値が記入される。一方、状態Sとして利用される敵側の情報は、図72に示した通りである。例えば、生存する敵のレベル、職業、累積ダメージなどが状態Sとして利用される。なお、累積ダメージは、それまでに与えたダメージの合計値を示している。また、行動aとして利用される味方側の情報は、図73に示した通りである。例えば、行動者の欄には、これから行動を行うキャラクタの場合に1、それ以外の場合に0が記入される。また、行動対象の欄には、行動の対象となるキャラクタの場合に1、それ以外の場合に0が記入される。例えば、回復魔法を受けるキャラクタに対応する行動対象の欄には1が記入される。また、アクションの種類の欄には、行う行動の欄に1、行わない行動の欄に0が記入される。一方、行動aとして利用される敵側の情報は、図74に示した通りである。図74に示すように、敵側の情報としては行動対象の情報が利用される。さて、これまで説明してきた応用例と同様、情報処理装置10は、まず、行動履歴データを取得する。このとき、情報処理装置10は、行動の種類毎に選択確率に重みを付けた上で、ランダムに行動を選択するInnateを用いて行動履歴データを取得する。例えば、情報処理装置10は、魔法よりも攻撃を選択する確率を高く設定したInnateを用いてキャラクタを行動させる。また、図75に示すように、情報処理装置10は、味方がやられた場合には報酬-5を行動履歴データに設定し、敵を倒した場合には報酬1を行動履歴データに設定する。その結果、図76のA図に示すような行動履歴データが得られる。但し、味方や敵がやられる過程の評価も考慮するため、情報処理装置10は、図76のB図に示すように、直線的に報酬の値をDecayさせる。情報処理装置10は、上記のようにして取得された行動履歴データを用いて思考ルーチンを構築する。このとき、情報処理装置10は、時刻tにおける状態S及び行動aから時刻t1における状態S’を推定する予測機を構築する。また、情報処理装置10は、時刻t1における状態S’から推定報酬を算出する報酬推定機を構築する。そして、情報処理装置10は、図77に示すように、現在の状態Sにおいてキャラクタがとりうる行動毎に、予測機を用いて次の状態S’を予測する。さらに、情報処理装置10は、予測した状態S’を報酬推定機に入力して推定報酬yを算出する。推定報酬yを算出した情報処理装置10は、推定報酬yが最大となる行動aを選択する。図77の例では、行動a=敵全体にFireに対応する推定報酬yが最大となっている。そのため、この例においては、最適な行動として、行動a=敵全体にFireが選択される。但し、思考ルーチンは、図78に示すように、推定報酬が高く、推定誤差が大きく、特徴量空間における密度が疎な特徴量座標に対応する行動を選択するように構成されていてもよい。つまり、先に説明した効率的な推定報酬機の構築方法で紹介した報酬スコア、未知スコア、誤差スコアに基づいて思考ルーチンが構築されていてもよい。なお、報酬スコアは、とりうる全ての行動について報酬推定機を用いて推定報酬を求め、推定報酬の低い方から順に1、2、3、...と、推定報酬が高くなるほど大きくなるようにスコアを与えることで得られる。また、未知スコアは、図25などに示した方法を用いて、全ての行動について特徴量座標の周辺密度を求め、密度が高い方から順に1、2、3、...と、密度が低くなるほど大きくなるようにスコアを与えることで得られる。また、誤差スコアを求める場合、情報処理装置10は、まず、既存の行動履歴データの全てについて、推定報酬yの値を実際の報酬rと比較し、その誤差を求める。次いで、情報処理装置10は、平均値よりも誤差の大きい行動履歴データに対応する特徴量座標を特徴量空間にプロットする。次いで、情報処理装置10は、プロットした特徴量座標の密度分布を求める。最後に、情報処理装置10は、全ての行動履歴データに対応する特徴量座標について密度を求め、密度が低い方から順に1、2、3、...と、密度が高くなるほど大きくなるようにスコアを与える。例えば、報酬スコアをs1、未知スコアをs2、誤差スコアをs3と表記した場合、情報処理装置10は、行動を選択する際に、s1w1s2w2s3w3但し、w1~w3は所定の重みの値を算出し、この値が最も大きくなる行動を選択する。このようにして行動を選択することにより、報酬が高く、推定誤差が大きく、特徴量空間における特徴量座標の密度が疎な行動を選択することが可能になる。ここで、図79を参照しながら、効率的な推定報酬機の構築方法を適用した場合の効果について述べる。図79のグラフは、最も高い推定報酬が得られる行動を選択した場合最適戦略と、効率的な推定報酬機の構築方法を適用した場合探索行動とでシナリオクリアまでの1ステップ当たりの平均Rewardを比較したグラフである。図79のグラフから明らかなように、3つのスコアを利用して構築された思考ルーチン探索行動の方が安定して高い報酬が得られている。この評価結果から、効率的な推定報酬機の構築方法を適用することで、演算負荷を軽減できるばかりか、より高性能な思考ルーチンを構築できることが分かった。なお、ロールプレイングゲームに応用すべく自動構築された思考ルーチンは、以下のような戦略を自身で身に付けていることも分かった。A集中攻撃:集中攻撃することで敵の数を素早く減らす。BHP減少したら回復:HPが減少した味方のHPを回復して味方が倒されにくくする。C単体攻撃、全体攻撃の使い分け:敵の数がある程度多い時は全体攻撃魔法を使う。現在集中攻撃中の敵が残りわずかなダメージで倒せそうなときは、全体攻撃魔法を用いて集中攻撃中の敵を倒しながら、他の敵にもダメージを与える。D魔法の無駄打ちはしない:HPの減っていない味方に対して回復魔法を使わない。魔法の効かない敵に対して魔法を使わない。以上、ロールプレイングゲームへの応用について説明した。以上説明したように、本実施形態に係る技術を適用すると、人手による調整を介さずに様々な思考ルーチンを自動構築することが可能になる。<4:ハードウェア構成例>上記の情報処理装置10が有する各構成要素の機能は、例えば、図80に示すハードウェア構成を用いて実現することが可能である。つまり、当該各構成要素の機能は、コンピュータプログラムを用いて図80に示すハードウェアを制御することにより実現される。なお、このハードウェアの形態は任意であり、例えば、パーソナルコンピュータ、携帯電話、PHS、PDA等の携帯情報端末、ゲーム機、又は種々の情報家電がこれに含まれる。但し、上記のPHSは、PersonalHandy-phoneSystemの略である。また、上記のPDAは、PersonalDigitalAssistantの略である。図80に示すように、このハードウェアは、主に、CPU902と、ROM904と、RAM906と、ホストバス908と、ブリッジ910と、を有する。さらに、このハードウェアは、外部バス912と、インターフェース914と、入力部916と、出力部918と、記憶部920と、ドライブ922と、接続ポート924と、通信部926と、を有する。但し、上記のCPUは、CentralProcessingUnitの略である。また、上記のROMは、ReadOnlyMemoryの略である。そして、上記のRAMは、RandomAccessMemoryの略である。CPU902は、例えば、演算処理装置又は制御装置として機能し、ROM904、RAM906、記憶部920、又はリムーバブル記録媒体928に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。ROM904は、CPU902に読み込まれるプログラムや演算に用いるデータ等を格納する手段である。RAM906には、例えば、CPU902に読み込まれるプログラムや、そのプログラムを実行する際に適宜変化する各種パラメータ等が一時的又は永続的に格納される。これらの構成要素は、例えば、高速なデータ伝送が可能なホストバス908を介して相互に接続される。一方、ホストバス908は、例えば、ブリッジ910を介して比較的データ伝送速度が低速な外部バス912に接続される。また、入力部916としては、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチ、及びレバー等が用いられる。さらに、入力部916としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラ以下、リモコンが用いられることもある。出力部918としては、例えば、CRT、LCD、PDP、又はELD等のディスプレイ装置、スピーカ、ヘッドホン等のオーディオ出力装置、プリンタ、携帯電話、又はファクシミリ等、取得した情報を利用者に対して視覚的又は聴覚的に通知することが可能な装置である。但し、上記のCRTは、CathodeRayTubeの略である。また、上記のLCDは、LiquidCrystalDisplayの略である。そして、上記のPDPは、PlasmaDisplayPanelの略である。さらに、上記のELDは、Electro-LuminescenceDisplayの略である。記憶部920は、各種のデータを格納するための装置である。記憶部920としては、例えば、ハードディスクドライブHDD等の磁気記憶デバイス、半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイス等が用いられる。但し、上記のHDDは、HardDiskDriveの略である。ドライブ922は、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体928に記録された情報を読み出し、又はリムーバブル記録媒体928に情報を書き込む装置である。リムーバブル記録媒体928は、例えば、DVDメディア、Blu-rayメディア、HDDVDメディア、各種の半導体記憶メディア等である。もちろん、リムーバブル記録媒体928は、例えば、非接触型ICチップを搭載したICカード、又は電子機器等であってもよい。但し、上記のICは、IntegratedCircuitの略である。接続ポート924は、例えば、USBポート、IEEE1394ポート、SCSI、RS-232Cポート、又は光オーディオ端子等のような外部接続機器930を接続するためのポートである。外部接続機器930は、例えば、プリンタ、携帯音楽プレーヤ、デジタルカメラ、デジタルビデオカメラ、又はICレコーダ等である。但し、上記のUSBは、UniversalSerialBusの略である。また、上記のSCSIは、SmallComputerSystemInterfaceの略である。通信部926は、ネットワーク932に接続するための通信デバイスであり、例えば、有線又は無線LAN、Bluetooth登録商標、又はWUSB用の通信カード、光通信用のルータ、ADSL用のルータ、又は各種通信用のモデム等である。また、通信部926に接続されるネットワーク932は、有線又は無線により接続されたネットワークにより構成され、例えば、インターネット、家庭内LAN、赤外線通信、可視光通信、放送、又は衛星通信等である。但し、上記のLANは、LocalAreaNetworkの略である。また、上記のWUSBは、WirelessUSBの略である。そして、上記のADSLは、AsymmetricDigitalSubscriberLineの略である。以上、ハードウェア構成例について説明した。<5:まとめ>最後に、本実施形態の技術的思想について簡単に纏める。以下に記載する技術的思想は、例えば、PC、携帯電話、携帯ゲーム機、携帯情報端末、情報家電、カーナビゲーションシステム等、種々の情報処理装置に対して適用することができる。上記の情報処理装置の機能構成は以下のように表現することができる。例えば、下記1に記載の情報処理装置は、行動履歴データを用いて報酬推定機を自動構築することができる。この報酬推定機を利用すると、エージェントがおかれた状態に応じて、その状態でエージェントがとりうる行動毎に、行動を行ったエージェントが得る報酬を推定することができる。そのため、高い報酬を得ると推定される行動をエージェントがとるように制御することで、賢く行動するエージェントの動きを実現することが可能になる。言い換えると、下記1に記載の情報処理装置は、賢く行動するエージェントの動きを実現することが可能な思考ルーチンを自動構築することができる。1エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データを学習データとして用い、入力された状態データ及び行動データから報酬値を推定する報酬推定機を機械学習により生成する報酬推定機生成部を備え、前記報酬推定機生成部は、複数の処理関数を組み合わせて複数の基底関数を生成する基底関数生成部と、前記行動履歴データに含まれる状態データ及び行動データを前記複数の基底関数に入力して特徴量ベクトルを算出する特徴量ベクトル算出部と、前記特徴量ベクトルから前記行動履歴データに含まれる報酬値を推定する推定関数を回帰/判別学習により算出する推定関数算出部と、を含み、前記報酬推定機は、前記複数の基底関数と前記推定関数とにより構成される、情報処理装置。2エージェントがおかれた現在の状態を表す状態データと、当該エージェントが次にとりうる行動を表す行動データとを前記報酬推定機に入力し、当該行動をとった結果として当該エージェントが得る報酬値を推定する報酬値推定部と、前記現在の状態において前記エージェントが次にとりうる行動のうち、前記報酬値推定部により推定された報酬値が最も高い値となる行動を選択する行動選択部と、をさらに備える、上記1に記載の情報処理装置。3前記行動選択部による選択結果に基づいてエージェントを行動させる行動制御部と、前記エージェントの行動に伴って更新される状態データ及び行動データを蓄積し、当該行動の結果としてエージェントが得た報酬を表す報酬値と、蓄積した状態データ及び行動データとを対応付けて前記行動履歴データに追加する履歴データ追加部と、をさらに備える、上記2に記載の情報処理装置。4前記状態データ、前記行動データ、及び前記報酬値の組が前記行動履歴データに追加された場合、前記特徴量ベクトル算出部は、前記行動履歴データに含まれる全ての状態データ及び行動データについて特徴量ベクトルを算出し、前記情報処理装置は、特徴領空間において前記特徴量ベクトルにより示される座標点の分布が所定の分布に近づくように前記行動履歴データに含まれる前記状態データ、前記行動データ、及び前記報酬値の組を間引く分布調整部をさらに備える、上記3に記載の情報処理装置。5前記状態データ、前記行動データ、及び前記報酬値の組が前記行動履歴データに追加された場合、前記特徴量ベクトル算出部は、前記行動履歴データに含まれる全ての状態データ及び行動データについて特徴量ベクトルを算出し、前記情報処理装置は、特徴領空間において前記特徴量ベクトルにより示される座標点の分布が所定の分布に近づくように前記行動履歴データに含まれる前記状態データ、前記行動データ、及び前記報酬値の組のそれぞれに重みを設定する分布調整部をさらに備える、上記3に記載の情報処理装置。6前記分布調整部は、間引き後に残った前記状態データ、前記行動データ、及び前記報酬値の組について、特徴領空間において前記特徴量ベクトルにより示される座標点の分布が所定の分布に近づくように前記行動履歴データに含まれる前記状態データ、前記行動データ、及び前記報酬値の組のそれぞれに重みを設定する、上記4に記載の情報処理装置。7前記行動履歴データを学習データとして用い、現在の時刻においてエージェントがおかれた状態を表す状態データ及び現在の時刻においてエージェントがとる行動を表す行動データから次の時刻におけるエージェントの状態を表す状態データを予測する予測機を機械学習により生成する予測機生成部をさらに備え、前記報酬値推定部は、現在の時刻における状態データ及び行動データを前記予測機に入力して次の時刻におけるエージェントの状態を表す状態データを予測し、前記次の時刻におけるエージェントの状態を表す状態データと、当該状態においてエージェントがとりうる行動を表す行動データとを前記報酬推定機に入力して、当該行動をとった結果として当該エージェントが得る報酬値を推定する、上記2~6のいずれか1項に記載の情報処理装置。8前記行動履歴データを学習データとして用い、現在の時刻においてエージェントがおかれた状態を表す状態データ及び現在の時刻においてエージェントがとる行動を表す行動データから次の時刻におけるエージェントの状態を表す状態データを予測する予測機を機械学習により生成する予測機生成部をさらに備え、前記報酬値推定部は、現在の時刻を時刻t0とした場合に、時刻t0における状態データ及び行動データを前記予測機に入力して次の時刻t1におけるエージェントの状態を表す状態データを予測する処理を実行し、k=1~n-1n≧2について、時刻tkにおける状態データ及び時刻tkにおいてエージェントがとりうる行動を表す行動データを前記予測機に入力して時刻tk1におけるエージェントの状態を表す状態データを予測する処理を逐次実行し、予測した時刻tnにおけるエージェントの状態を表す状態データと、当該状態においてエージェントがとりうる行動を表す行動データとを前記報酬推定機に入力して、当該行動をとった結果として当該エージェントが得る報酬値を推定する、上記2~6のいずれか1項に記載の情報処理装置。9前記報酬推定機生成部は、複数のエージェントの状態を表す状態データと、当該状態において各エージェントがとった行動を表す行動データと、当該行動の結果として各エージェントが得た報酬を表す報酬値とを含む行動履歴データを学習データとして用い、入力された状態データ及び行動データから報酬値を推定する報酬推定機を機械学習により生成する、上記1~8のいずれか1項に記載の情報処理装置。10前記基底関数生成部は、遺伝的アルゴリズムに基づいて前記基底関数を更新し、前記特徴量ベクトル算出部は、前記基底関数が更新された場合に、更新後の前記基底関数に前記状態データ及び前記行動データを入力して特徴量ベクトルを算出し、前記推定関数算出部は、前記更新後の基底関数を用いて算出された特徴量ベクトルの入力に応じて前記報酬値を推定する推定関数を算出する、上記1~9のいずれか1項に記載の情報処理装置。11エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データに基づき、高い報酬を得たエージェントがとった行動及び低い報酬を得たエージェントがとらなかった行動に高いスコアを与え、高い報酬を得たエージェントがとらなかった行動及び低い報酬を得たエージェントがとった行動に低いスコアを与える条件で、各状態データに対応する行動毎のスコアを算出するスコア算出部と、前記行動履歴データ及び前記行動毎のスコアを学習データとして用い、入力された状態データから行動毎のスコアを推定するスコア推定機を機械学習により生成するスコア推定機生成部と、を備え、前記スコア推定機生成部は、複数の処理関数を組み合わせて複数の基底関数を生成する基底関数生成部と、前記行動履歴データに含まれる状態データを前記複数の基底関数に入力して特徴量ベクトルを算出する特徴量ベクトル算出部と、前記特徴量ベクトルから前記行動毎のスコアを推定する推定関数を回帰/判別学習により算出する推定関数算出部と、を含み、前記スコア推定機は、前記複数の基底関数と前記推定関数とにより構成される、情報処理装置。12エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データを学習データとして用い、入力された状態データ及び行動データから報酬値を推定する報酬推定機を機械学習により生成するステップを含み、前記生成するステップは、複数の処理関数を組み合わせて複数の基底関数を生成するステップと、前記行動履歴データに含まれる状態データ及び行動データを前記複数の基底関数に入力して特徴量ベクトルを算出するステップと、前記特徴量ベクトルから前記行動履歴データに含まれる報酬値を推定する推定関数を回帰/判別学習により算出するステップと、を含み、前記報酬推定機は、前記複数の基底関数と前記推定関数とにより構成される、情報処理方法。13エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データに基づき、高い報酬を得たエージェントがとった行動及び低い報酬を得たエージェントがとらなかった行動に高いスコアを与え、高い報酬を得たエージェントがとらなかった行動及び低い報酬を得たエージェントがとった行動に低いスコアを与える条件で、各状態データに対応する行動毎のスコアを算出するステップと、前記行動履歴データ及び前記行動毎のスコアを学習データとして用い、入力された状態データから行動毎のスコアを推定するスコア推定機を機械学習により生成するステップと、を含み、前記生成するステップは、複数の処理関数を組み合わせて複数の基底関数を生成するステップと、前記行動履歴データに含まれる状態データを前記複数の基底関数に入力して特徴量ベクトルを算出するステップと、前記特徴量ベクトルから前記行動毎のスコアを推定する推定関数を回帰/判別学習により算出するステップと、を含み、前記スコア推定機は、前記複数の基底関数と前記推定関数とにより構成される、情報処理方法。14エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データを学習データとして用い、入力された状態データ及び行動データから報酬値を推定する報酬推定機を機械学習により生成する報酬推定機生成機能をコンピュータに実現させるためのプログラムであり、前記報酬推定機生成機能は、複数の処理関数を組み合わせて複数の基底関数を生成する基底関数生成機能と、前記行動履歴データに含まれる状態データ及び行動データを前記複数の基底関数に入力して特徴量ベクトルを算出する特徴量ベクトル算出機能と、前記特徴量ベクトルから前記行動履歴データに含まれる報酬値を推定する推定関数を回帰/判別学習により算出する推定関数算出機能と、を含み、前記報酬推定機は、前記複数の基底関数と前記推定関数とにより構成される、プログラム。15エージェントの状態を表す状態データと、当該状態においてエージェントがとった行動を表す行動データと、当該行動の結果としてエージェントが得た報酬を表す報酬値とを含む行動履歴データに基づき、高い報酬を得たエージェントがとった行動及び低い報酬を得たエージェントがとらなかった行動に高いスコアを与え、高い報酬を得たエージェントがとらなかった行動及び低い報酬を得たエージェントがとった行動に低いスコアを与える条件で、各状態データに対応する行動毎のスコアを算出するスコア算出機能と、前記行動履歴データ及び前記行動毎のスコアを学習データとして用い、入力された状態データから行動毎のスコアを推定するスコア推定機を機械学習により生成するスコア推定機生成機能と、をコンピュータに実現させるためのプログラムであり、前記スコア推定機生成機能は、複数の処理関数を組み合わせて複数の基底関数を生成する基底関数生成機能と、前記行動履歴データに含まれる状態データを前記複数の基底関数に入力して特徴量ベクトルを算出する特徴量ベクトル算出機能と、前記特徴量ベクトルから前記行動毎のスコアを推定する推定関数を回帰/判別学習により算出する推定関数算出機能と、を含み、前記スコア推定機は、前記複数の基底関数と前記推定関数とにより構成される、プログラム。備考上記の報酬推定機構築部12は、報酬推定機生成部の一例である。上記の基底関数リスト生成部121は、基底関数生成部の一例である。上記の特徴量計算部122は、特徴量ベクトル算出部の一例である。上記の推定関数生成部123は、推定関数算出部の一例である。上記の行動選択部14は、報酬値推定部、行動選択部、行動制御部の一例である。上記の行動履歴データ取得部11は、履歴データ追加部の一例である。上記の行動履歴データ統合部124は、分布調整部の一例である。上記の報酬推定機構築部12は、予測機生成部の一例である。上記の報酬推定機構築部12は、スコア算出部、スコア推定機生成部の一例である。以上、添付図面を参照しながら本技術に係る好適な実施形態について説明したが、本技術はここで開示した構成例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例又は修正例に想到し得ることは明らかであり、それらについても当然に本技術の技術的範囲に属するものと了解される。"