(57)【特許請求の範囲】
【請求項１】
環境の状態を表す状態ベクトルと、前記状態ベクトルで表される状態において行う行動とを対応づけたデータである行動データを１つ以上取得する取得部と、
前記取得した行動データを用いた模倣学習により、ポリシー関数 P 及び報酬関数 r を生成する学習部と、を有し、
前記報酬関数 r は、状態ベクトル S を入力することで、状態ベクトル S で表される状態において得られる報酬 r(S) を出力し、
前記ポリシー関数は、状態ベクトル S を入力した際の前記報酬関数の出力 r(S) を入力とし、状態ベクトル S で表される状態において行うべき行動 a=P(r(S)) を出力する、情報処理装置。
【請求項２】
前記学習部は、前記取得した行動データが示す状態ベクトルを前記報酬関数に入力して得られる報酬を前記ポリシー関数に入力し、その結果として得られる行動と前記行動データにおいて前記状態ベクトルと対応づけられている行動とを比較することで、前記報酬関数の学習を行う、請求項１に記載の情報処理装置。
【請求項３】
前記行動データは、前記環境についての熟練者が行った行動の履歴を表す、請求項１又は２に記載の情報処理装置。
【請求項４】
前記学習部によって生成された報酬関数を表す情報を出力する学習結果出力部を有する、請求項１乃至３いずれか一項に記載の情報処理装置。
【請求項５】
前記環境の状態を表す状態ベクトルを取得し、前記取得した状態ベクトル、並び前記学習部によって生成されたポリシー関数及び報酬関数を用い、前記状態ベクトルによって表される状態の環境において行うべき行動を表す情報を出力する行動出力部を有する、請求項１乃至４いずれか一項に記載の情報処理装置。
【請求項６】
前記学習部は、前記ポリシー関数及び報酬関数を生成した後、前記環境においてエージェントが実際に行った行動を表す第２行動データを取得し、前記第２行動データを用いた模倣学習により、前記ポリシー関数及び前記報酬関数の更新を行う、請求項１乃至５いずれか一項に記載の情報処理装置。
【請求項７】
前記学習部は、前記第２行動データを用いて得られたポリシー関数及び報酬関数の組み合わせ、及びこれまでに得られたポリシー関数及び報酬関数の１つ以上の組み合わせの中から１つを選択し、前記選択した組み合わせのポリシー関数及び報酬関数を、更新後のポリシー関数及び報酬関数とする、請求項６に記載の情報処理装置。
【請求項８】
コンピュータによって実行される制御方法であって、
環境の状態を表す状態ベクトルと、前記状態ベクトルで表される状態において行う行動とを対応づけたデータである行動データを１つ以上取得する取得ステップと、
前記取得した行動データを用いた模倣学習により、ポリシー関数 P 及び報酬関数 r を生成する学習ステップと、を有し、
前記報酬関数 r は、状態ベクトル S を入力することで、状態ベクトル S で表される状態において得られる報酬 r(S) を出力し、
前記ポリシー関数は、状態ベクトル S を入力した際の前記報酬関数の出力 r(S) を入力とし、状態ベクトル S で表される状態において行うべき行動 a=P(r(S)) を出力する、制御方法。
【請求項９】
前記学習ステップにおいて、前記取得した行動データが示す状態ベクトルを前記報酬関数に入力して得られる報酬を前記ポリシー関数に入力し、その結果として得られる行動と前記行動データにおいて前記状態ベクトルと対応づけられている行動とを比較することで、前記報酬関数の学習を行う、請求項８に記載の制御方法。
【請求項１０】
請求項８または９に記載の制御方法の各ステップをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は機械学習に関する。
【背景技術】
【０００２】
強化学習では、状態が変化しうる環境において行動をするエージェント（人やコンピュータ）について、環境の状態に応じた適切な行動を学習していく。ここで、環境の状態に応じた行動を出力する関数をポリシー（方策）関数と呼ぶ。ポリシー関数の学習を行うことにより、ポリシー関数が環境の状態に応じた適切な行動を出力するようになる。【０００３】
強化学習についての先行技術文献としては、例えば特許文献１が挙げられる。特許文献１は、学習が行われた環境と学習後の環境との間に外乱による差異が生じる場合に、その外乱を考慮して適切な行動を選択する技術を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−３２０９９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
強化学習では、前提として、エージェントの行動や、エージェントの行動によって遷移した環境の状態に対して与えられる報酬を出力する報酬関数が与えられる。報酬はエージェントの行動を評価する基準であり、報酬に基づいて評価値が定められる。例えば評価値は、エージェントが一連の行動を行う間に得られる報酬の合計である。評価値は、エージェントの行動の目的を決めるための指標である。例えばポリシー関数の学習は、「評価値を最大化する」という目的を達成するように行われる。なお、評価値は報酬に基づいて定まることから、ポリシー関数の学習は報酬関数に基づいて行われるともいえる。【０００６】
上述の方法でポリシー関数を適切に学習するためには、報酬関数や評価関数（評価値を出力する関数）を適切に設計する必要がある。すなわち、エージェントの行動をどのように評価するかや、エージェントの行動の目的などが、適切に設計される必要がある。しかしながら、これらを適切に設計するが難しいことも多く、そのような場合には、ポリシー関数を適切に学習することが難しい。【０００７】
本発明は、上記の課題に鑑みてなされたものである。本発明の目的の一つは、エージェントの行動のポリシーを学習する新たな技術を提供することである。
【課題を解決するための手段】
【０００８】
本発明の情報処理装置は、１）環境の状態を表す状態ベクトルと、状態ベクトルで表される状態において行う行動とを対応づけたデータである行動データを１つ以上取得する取得部と、２）取得した行動データを用いた模倣学習により、ポリシー関数 P 及び報酬関数 r を生成する学習部と、を有する。報酬関数 r は、状態ベクトル S を入力することで、状態ベクトル S で表される状態において得られる報酬 r(S) を出力する。ポリシー関数は、状態ベクトル S を入力した際の報酬関数の出力 r(S) を入力とし、状態ベクトル S で表される状態において行うべき行動 a=P(r(S)) を出力する。【０００９】
本発明の制御方法は、コンピュータによって実行される制御方法である。当該制御方法は、１）環境の状態を表す状態ベクトルと、状態ベクトルで表される状態において行う行動とを対応づけたデータである行動データを１つ以上取得する取得ステップと、２）取得した行動データを用いた模倣学習により、ポリシー関数 P 及び報酬関数 r を生成する学習ステップと、を有する。報酬関数 r は、状態ベクトル S を入力することで、状態ベクトル S で表される状態において得られる報酬 r(S) を出力する。ポリシー関数は、状態ベクトル S を入力した際の報酬関数の出力 r(S) を入力とし、状態ベクトル S で表される状態において行うべき行動 a=P(r(S)) を出力する。【００１０】
本発明のプログラムは、本発明の制御方法が有する各ステップをコンピュータに実行させる。
【発明の効果】
【００１１】
本発明によれば、エージェントの行動のポリシーを学習する新たな技術が提供される。
【図面の簡単な説明】
【００１２】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００１３】
【図１】実施形態１の情報処理装置が想定する状況を例示する図である。
【図２】実施形態１の情報処理装置の機能構成を例示する図である。
【図３】情報処理装置を実現するための計算機を例示する図である。
【図４】実施形態１の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図５】ポリシー関数と報酬関数を生成する処理の流れを例示するフローチャートである。
【図６】実施形態２の情報処理装置の機能構成を例示する図である。
【図７】実施形態２の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図８】実施形態３の情報処理装置の機能構成を例示する図である。
【図９】実施形態３の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図１０】実施形態４の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図１１】一般的な強化学習において想定される状況を例示する図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。また、特に説明する場合を除き、各ブロック図において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【００１５】
［実施形態１］
＜概要＞
図１は、実施形態１の情報処理装置２０００（図２における情報処理装置２０００）が想定する状況を例示する図である。情報処理装置２０００では、とりうる状態が複数ある環境（以下、対象環境）、及びその環境において複数の行動を行いうる者（以下、エージェント）を想定する。対象環境の状態は状態ベクトル S = (s1, s2, ...) で表される。
【００１６】
エージェントの例としては、自動運転車が挙げられる。この場合の対象環境は、自動運転車の状態及びその周囲の状態（周囲の地図、他車両の位置や速度、及び道路の状態など）などの集合として表される。
【００１７】
エージェントが行うべき行動は、対象環境の状態に応じて異なる。上述の自動運転車の例であれば、前方に障害物が存在しなければ車両はそのまま進行してよいが、前方に障害物があればその障害物を回避するように進行する必要がある。また、前方の路面の状態や前方の車両との車間距離などに応じ、車両の走行速度を変更する必要がある。
【００１８】
対象環境の状態に応じてエージェントが行うべき行動を出力する関数を、ポリシー関数と呼ぶ。情報処理装置２０００は、模倣学習によってポリシー関数の生成を行う。ポリシー関数が理想的なものに学習されれば、ポリシー関数は、対象環境の状態に応じ、エージェントが行うべき最適な行動を出力するものとなる。
【００１９】
模倣学習は、状態ベクトル s と行動 a とを対応づけたデータ（以下、行動データ）を利用して行われる。模倣学習によって得られるポリシー関数は、与えた行動データを模倣するものとなる。なお、模倣学習のアルゴリズムには、既存のものを利用することができる。
【００２０】
さらに本実施形態の情報処理装置２０００では、ポリシー関数の模倣学習を通じ、報酬関数の学習も行う。そのために、ポリシー関数 P が、状態ベクトル s を報酬関数 r に入力することで得られる報酬 r(s) を入力としてとる関数として定められる。具体的には、以下の数式（１）のようにポリシー関数を定める。a はポリシー関数から得られる行動である。
【数１】
0006911946.tif 000002
・・・（１）
【００２１】
すなわち、本実施形態の情報処理装置２０００では、ポリシー関数を報酬関数の汎関数として定式化する。このような定式化をしたポリシー関数を定めた上で模倣学習を行うことにより、情報処理装置２０００は、ポリシー関数の学習を行いつつ、報酬関数の学習も行うことで、ポリシー関数及び報酬関数を生成する。
【００２２】
＜作用効果＞
上述のように複数の状態をとりうる環境においてエージェントが行うべき行動を特定するための学習として、強化学習がある。強化学習では、前提として、エージェントの行動（その結果として表れる対象環境の状態）に対して与えられる報酬を出力する報酬関数 r が与えられる（図１１参照）。また、報酬 r(s) に基づいて評価値が定められる。ポリシー関数は、例えば「評価値を最大にする」といった目的に基づいて学習される。
【００２３】
報酬関数や評価関数は、適切に設計することが難しいことも多い。例えば、ヒューマンライクな行動を実現するための報酬関数や評価関数は定式化が難しい。例えば、自動運転車の行動を定めるポリシー関数を生成するとする。自動運転車の適切な動作の一つとして、「搭乗者が快適に思う走行」というものが考えられる。しかしながら、搭乗者が快適に思う走行というものを定式化することは難しい。その他にも例えば、テレビゲームにおいて、人間の対戦相手とするコンピュータの行動を定めるポリシー関数を生成するとする。テレビゲームのコンピュータの適切な動作の一つとして、「人が楽しく感じる動作」というものが考えられる。しかしながら、人が楽しく感じる動作というものを定式化することは難しい。
【００２４】
この点、本実施形態の情報処理装置２０００は、模倣学習を通じてポリシー関数の学習を行う。そのため、報酬関数や評価関数を定式化することが難しい状況でも、適切な行動を実現するポリシー関数を生成することができる。例えば、運転スキルが高い人が搭乗者を快適にさせるように自動車を運転し、その結果得られる運転のデータを用いて模倣学習を行うことで、「搭乗者が快適に思う走行」を実現するポリシー関数を生成することができる。同様に、人が実際にテレビゲームで遊び、その結果得られる操作のデータを用いて保網学習を行うことで、「人が楽しく感じる動作」を実現するポリシー関数を生成することができる。
【００２５】
さらに情報処理装置２０００では、模倣学習によるポリシー関数の学習を通じて、報酬関数の学習を行う。そのため、学習で得られる報酬関数は、模倣する行動（例えば熟練者等の行動）に基づくものとなる。よって、学習された報酬関数において、環境の状態を定める各要素がどのように扱われているかは、熟練者等が環境の状態をどのように扱っているかを表すことになる。すなわち、学習された報酬関数を利用することで、熟練者等がどのような要素を重要と考えて行動しているかという、熟練者等の行動のコツとも言える情報を把握することができる。このように、本実施形態の情報処理装置２０００によれば、エージェントが行うべき行動を表すためのポリシー関数を模倣によって学習できるだけでなく、その学習を通じて、環境の状態の各要素の重要性等について把握することができる。
【００２６】
以下、本実施形態の情報処理装置２０００についてさらに詳細に説明する。
【００２７】
＜情報処理装置２０００の機能構成の例＞
図２は、実施形態１の情報処理装置２０００の機能構成を例示する図である。情報処理装置２０００は取得部２０２０及び学習部２０４０を有する。取得部２０２０は１つ以上の行動データを取得する。行動データは、対象環境の状態を表す状態ベクトルと、その状態ベクトルで表される状態において行う行動とを対応づけたデータである。
【００２８】
学習部２０４０は、模倣学習を利用して、ポリシー関数 P 及び報酬関数 r を生成する。ここで、報酬関数 r は、状態ベクトル S を入力することで、状態ベクトル S で表される状態において得られる報酬 r(S) を出力する。また、ポリシー関数 P は、状態ベクトル S を入力した際の報酬関数の出力 r(S) を入力することで、状態ベクトル S で表される状態において行うべき行動 a を出力する。
【００２９】
＜情報処理装置２０００のハードウエア構成＞
情報処理装置２０００の各機能構成部は、各機能構成部を実現するハードウエア（例：ハードワイヤードされた電子回路など）で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ（例：電子回路とそれを制御するプログラムの組み合わせなど）で実現されてもよい。以下、情報処理装置２０００の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
【００３０】
図３は、情報処理装置２０００を実現するための計算機１０００を例示する図である。計算機１０００は任意の計算機である。例えば計算機１０００は、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）などを用いて実現される補助記憶装置である。ただし、ストレージデバイス１０８０は、RAM など、主記憶装置を構成するハードウエアと同様のハードウエアで構成されてもよい。
【００３２】
入出力インタフェース１１００は、計算機１０００と入出力デバイスとを接続するためのインタフェースである。ネットワークインタフェース１１２０は、計算機１０００を通信網に接続するためのインタフェースである。この通信網は、例えば LAN（Local Area Network）や WAN（Wide Area Network）である。ネットワークインタフェース１１２０が通信網に接続する方法は、無線接続であってもよいし、有線接続であってもよい。
【００３３】
ストレージデバイス１０８０は、情報処理装置２０００の機能構成部を実現するプログラムモジュールを記憶している。プロセッサ１０４０は、これら各プログラムモジュールをメモリ１０６０に読み出して実行することで、各プログラムモジュールに対応する機能を実現する。
【００３４】
＜処理の流れ＞
図４は、実施形態１の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。取得部２０２０は、行動データを取得する（Ｓ１０２）。学習部２０４０は、行動データを利用した模倣学習により、ポリシー関数と報酬関数を生成する（Ｓ１０４）。
【００３５】
＜エージェント及び対象環境について＞
エージェント及び対象環境としては、様々なものを扱うことができる。例えば前述したように、自動運転車両をエージェントとして扱うことができる。この場合、前述したように、自動運転車両の状態や周囲の状態の集合によって対象環境が定まる。その他にも例えば、発電装置をエージェントとして扱うことができる。この場合、発電装置の現在の発電量や発電装置の内部状態、及び要求されている発電量などの集合によって対象環境が定まる。発電装置は、これらの状態に応じて発電量の変更等を行う必要がある。その他にも例えば、ゲームのプレイヤーをエージェントとして扱うことができる。この場合、ゲームの状態（例えば将棋であれば、盤面の状態や各プレイヤーの持ち駒など）によって対象環境が定まる。ゲームのプレイヤーは、対戦相手に勝つために、ゲームの状態に応じた適切な行動を行う必要がある。
【００３６】
ここで、エージェントはコンピュータであってもよいし、人であってもよい。エージェントがコンピュータである場合、学習済みのポリシー関数から得られる行動を行うようにそのコンピュータを構成することで、そのコンピュータが適切に動作できるようになる。例えばこのコンピュータには、自動運転車両や発電装置を制御する制御装置などが挙げられる。
【００３７】
一方、エージェントが人である場合、学習済みのポリシー関数から得られる行動をその人が行うようにすることで、その人が適切な行動を行うことができるようになる。例えば、車両の運転手がポリシー関数から得られる行動を参照して車両を運転することで、安全な運転を実現できる。また、発電装置の操作者がポリシー関数から得られる行動を参照して発電装置を操作することで、無駄の少ない発電を実現できる。
【００３８】
＜行動データについて＞
ポリシー関数と報酬関数の学習は、行動データを利用して行われる。行動データとしては、様々なデータを利用することができる。例えば行動データは、対象環境において過去に行われた行動の履歴（どの状態においてどの行動が行われたかの履歴）を表す。この行動は、対象環境の扱いを熟知している熟練者によって行われたものであることが好適である。しかしながら、この行動は必ずしも熟練者によって行われたものに限定される必要はない。
【００３９】
その他にも例えば、行動データは、対象環境以外の環境において過去に行われた行動の履歴を表してもよい。この環境は、対象環境に類似する環境であることが好適である。例えば対象環境が発電装置などの設備であり、行動が設備の制御である場合、新たに設置する設備についてポリシー関数及び報酬関数の学習を行うために、その設備と類似している稼働済みの設備で行われた行動の履歴を利用することが考えられる。
【００４０】
行動データは、実際に行われた行動の履歴以外であってもよい。例えば、行動データは人手で生成されてもよい。その他にも例えば、行動データは、ランダムに生成されたデータであってもよい。すなわち、対象環境における各状態に対し、行いうる行動の中からランダムに選択したものを対応づけることで、行動データを生成する。その他にも例えば、行動データは、他の環境で利用されているポリシー関数を使って生成されてもよい。すなわち、対象環境における各状態に対し、他の環境で利用されているポリシー関数にその状態を入力することで得られる行動を対応付けることで、行動データを生成する。この場合、この「他の環境」は、対象環境と類似する環境であることが好適である。
【００４１】
行動データの生成は、情報処理装置２０００で行われてもよいし、情報処理装置２０００以外の装置で行われてもよい。
【００４２】
＜行動データの取得：Ｓ１０２＞
取得部２０２０は、１つ以上の行動データを取得する。ここで、行動データを取得する方法は任意である。例えば取得部２０２０は、情報処理装置２０００の内部又は外部に設けられている記憶装置から行動データを取得する。その他にも例えば、取得部２０２０は、外部の装置（例えば、行動データを生成した装置）から送信される行動データを受信することで、行動データを取得する。
【００４３】
＜ポリシー関数について＞
ポリシー関数には、少なくとも、報酬関数 r に状態ベクトル S を入力することで得られる報酬 r(S) が、入力として与えられる。例えばポリシー関数では、報酬の取り得る値の範囲が複数の部分範囲に区切られ、各部分範囲に行動が対応づけられる。この場合、ポリシー関数は、報酬が入力されたら、その報酬が含まれる部分範囲を特定し、その部分範囲に対応づけられている行動を出力する。そして、ポリシー関数の学習では、報酬が取り得る範囲の区切り方、及び各部分範囲に対応づける行動が決定される。
【００４４】
＜報酬関数について＞
報酬関数は、入力された状態ベクトルに対応する報酬を出力する。例えば報酬関数は線形関数として定義される。線形関数として定義される報酬関数は、例えば以下の数式（２）のように、状態ベクトル S を構成する要素 si の重み付き加算にバイアス b を加える関数として定義される。
【数２】
0006911946.tif 000003
・・・（２）
ここで、wi は状態ベクトル S のｉ番目の要素 si に付される重みである。b は実数の定数である。
【００４５】
報酬関数が上述のように定義される場合、報酬関数の学習では、各重み wi とバイアス b の決定が行われる。ただし、報酬関数は必ずしも一次式で定義される必要はなく、非線形な関数として定義されてもよい。
【００４６】
＜ポリシー関数と報酬関数の生成：Ｓ１０４＞
学習部２０４０は、模倣学習を利用して、ポリシー関数及び報酬関数を生成する（Ｓ１０４）。図５は、ポリシー関数と報酬関数を生成する処理の流れを例示するフローチャートである。
【００４７】
学習部２０４０は、ポリシー関数と報酬関数を初期化する（Ｓ２０２）。例えばこの初期化は、ポリシー関数と報酬関数のパラメータをランダムな値で初期化することで行われる。他にも例えば、ポリシー関数と報酬関数は、対象環境以外の環境（対象環境と類似する環境であることが好ましい）で利用されているポリシー関数と報酬関数と同じものに初期化されてもよい。ここで、ポリシー関数のパラメータは、例えば前述した、報酬のとりうる範囲の区切り、及び各部分範囲に対応づける行動である。また、報酬関数のパラメータは、例えば前述した、重み wi やバイアス b である。
【００４８】
Ｓ２０４からＳ２１０は、１つ以上の行動データそれぞれを対象に実行されるループ処理Ａである。Ｓ２０４において、学習部２０４０は、全ての行動データを対象としてループ処理Ａを実行したかどうかを判定する。既に全ての行動データについてループ処理Ａが実行された場合、図５の処理は終了する。一方、まだループ処理Ａの対象としていない行動データが存在する場合、学習部２０４０がそのうちの一つを選択し、図５の処理はＳ２０６に進む。ここで選択される行動データを行動データｄと呼ぶ。
【００４９】
学習部２０４０は、行動データｄを利用して報酬関数の学習を行う（Ｓ２０６）。具体的には、学習部２０４０は、行動データｄが示す状態ベクトル Sd を利用し、ポリシー関数から行動 P(r(Sd)) を得る。この行動は、状態ベクトル Sd を報酬関数 r に入力することで得られる報酬 r(Sd) を、ポリシー関数 P に入力することで得られるものである。
【００５０】
学習部２０４０は、行動データｄが示す行動 ad と、ポリシー関数から得られた行動 P(r(Sd)) に基づいて、報酬関数 r の学習を行う。この学習は、行動データｄを正例データとする教師あり学習である。そのため、この学習には、教師あり学習を実現する任意のアルゴリズムを利用することができる。
【００５１】
学習部２０４０は、行動データｄを利用してポリシー関数の学習を行う（Ｓ２０８）。具体的には、学習部２０４０は、報酬関数を利用して得られる行動 P(r(Sd)) と、行動データｄが示す行動 ad とに基づいて、ポリシー関数の学習を行う。この学習も、行動データｄを正例データとする教師あり学習である。そのため、報酬関数の学習と同様に、ポリシー関数の学習にも、教師あり学習を実現する任意のアルゴリズムを利用することができる。なお、このポリシー関数の学習には、直前のＳ２０６で更新した報酬関数を用いてもよいし、更新前の報酬関数を用いてもよい。
【００５２】
Ｓ２１０はループ処理Ａの終端であるため、図５の処理はＳ２０４に戻る。
【００５３】
以上の様に、１つ以上の行動データそれぞれについてループ処理Ａを行っていくことで、報酬関数とポリシー関数の学習が行われていく。そして、ループ処理Ａが完了した後の報酬関数とポリシー関数を、学習部２０４０によって生成された報酬関数及びポリシー関数とする。
【００５４】
ここで、図５に示す流れはあくまで例示であり、ポリシー関数と報酬関数を生成する処理の流れは図５に示した流れに限定されない。例えば、報酬関数とポリシー関数の学習の順序を逆にしてもよい。すなわち、Ｓ２０６でポリシー関数の学習を行い、Ｓ２０８で報酬関数の学習を行うようにする。この場合、Ｓ２０８において報酬関数の学習に利用するポリシー関数は、直前のＳ２０６で更新されたポリシー関数であってもよいし、Ｓ２０６で更新される前のポリシー関数であってもよい。
【００５５】
なお、ポリシー関数の学習に更新前の報酬関数を利用する場合や、報酬関数の学習に更新前のポリシー関数を利用するケースでは、行動データ１つにつき、ポリシー関数と報酬関数の更新が独立して行われる。そのためこの場合、ループ処理Ａの中においてＳ２０６とＳ２０８は並行して実行することができる。
【００５６】
［実施形態２］
＜概要＞
図６は、実施形態２の情報処理装置２０００の機能構成を例示する図である。以下で説明する点を除き、実施形態２の情報処理装置２０００は、実施形態１の情報処理装置２０００と同様の機能を有する。
【００５７】
実施形態２の情報処理装置２０００は学習結果出力部２０６０を有する。学習結果出力部２０６０は報酬関数を表す情報を出力する。例えば学習結果出力部２０６０は、報酬関数そのものを出力する。その他にも例えば、学習結果出力部２０６０は、状態ベクトルの各要素と重みとの対応付けを表す情報（対応表など）を出力してもよい。
【００５８】
なお、報酬関数を表す情報は、文字列、画像、又は音声などの任意の形式で出力することができる。例えば文字列や画像によって報酬関数を表す情報は、報酬関数に関する情報を得たい人（情報処理装置２０００のユーザ）が閲覧可能なディスプレイ装置に表示される。また、音声によって報酬関数を表す情報は、報酬関数に関する情報を得たい人の付近に設けられたスピーカから出力される。
【００５９】
＜ハードウエア構成の例＞
実施形態２の情報処理装置２０００を実現する計算機のハードウエア構成は、実施形態１と同様に、例えば図３によって表される。ただし、本実施形態の情報処理装置２０００を実現する計算機１０００のストレージデバイス１０８０には、本実施形態の情報処理装置２０００の機能を実現するプログラムモジュールがさらに記憶される。
【００６０】
＜処理の流れ＞
図７は、実施形態２の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。なお、Ｓ１０２及びＳ１０４については、図４のものと同様である。学習結果出力部２０６０は、Ｓ１０４が行われた後、報酬関数を表す情報を出力する（Ｓ３０２）。
【００６１】
＜作用効果＞
本実施形態の情報処理装置２０００によれば、学習部２０４０によって学習された報酬関数を把握することができる。ここで、報酬関数は、状態ベクトル S の各要素に付されている重みを含む。そのため、報酬関数についての情報を得ることにより、環境の状態を定める要素のうち、どの要素がエージェントの行動を定める際に重要であるのかを把握できるようになる。
【００６２】
なお、学習結果出力部２０６０は、報酬関数を表す情報に加え、ポリシー関数を表す情報をさらに出力してもよい。例えば前述したように、ポリシー関数が、報酬のとりうる値の範囲（部分範囲）に対し、エージェントが行うべき行動を対応づけたものであるとする。この場合、ポリシー関数を表す情報は、部分範囲と行動とを対応づけた情報（例えば対応表）などである。
【００６３】
報酬関数やポリシー関数を出力する方法は、前述したようにディスプレイ装置に表示させたり、スピーカから出力させたりする方法に限定されない。例えば学習結果出力部２０６０は、情報処理装置２０００の内部又は外部に設けられた記憶装置に、報酬関数やポリシー関数を記憶させてもよい。また、情報処理装置２０００には、記憶装置に記憶させた報酬関数やポリシー関数を必要に応じて読み出す機能も設ける。
【００６４】
［実施形態３］
＜概要＞
図８は、実施形態３の情報処理装置２０００の機能構成を例示する図である。以下で説明する点を除き、実施形態３の情報処理装置２０００は、実施形態１の情報処理装置２０００又は実施形態２の情報処理装置２０００と同様の機能を有する。
【００６５】
実施形態２の情報処理装置２０００は行動出力部２０８０を有する。行動出力部２０８０は、現在の対象環境の状態を表す状態ベクトルを取得し、その状態ベクトル、報酬関数、及びポリシー関数を用いて、エージェントが行うべき行動を特定する。より具体的には、行動出力部２０８０は、取得した状態ベクトル S を報酬関数 r に入力することで得られる報酬 r(S) を、ポリシー関数 P に入力する。そして行動出力部２０８０は、その結果としてポリシー関数から得られる行動 P(r(S)) を表す情報を、エージェントが行うべき行動を表す情報として出力する。
【００６６】
＜ハードウエア構成の例＞
実施形態３の情報処理装置２０００を実現する計算機のハードウエア構成は、実施形態１と同様に、例えば図３によって表される。ただし、本実施形態の情報処理装置２０００を実現する計算機１０００のストレージデバイス１０８０には、本実施形態の情報処理装置２０００の機能を実現するプログラムモジュールがさらに記憶される。
【００６７】
＜処理の流れ＞
図９は、実施形態３の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。行動出力部２０８０は、現在の環境の状態を表す状態ベクトルを取得する（Ｓ４０２）。行動出力部２０８０は、取得した状態ベクトルと、報酬関数及びポリシー関数とを用いて、エージェントが行うべき行動 P(r(S)) を特定する（４０４）。行動出力部２０８０は、特定した行動 P(r(S)) を表す情報を出力する（Ｓ４０６）。
【００６８】
＜状態ベクトルの取得：Ｓ４０２＞
行動出力部２０８０は、現在の環境の状態を表す状態ベクトルを取得する。ここで、環境の状態に応じてエージェントが行うべき行動を特定する際に、現在の状態を表す情報（例えば自動運転車の制御において、車両の状態、路面の状態、及び障害物の有無などを表す情報）を得る方法には、既存の技術を利用することができる。
【００６９】
＜行動の決定：Ｓ４０４＞
行動出力部２０８０は、エージェントが行うべき行動を特定する（Ｓ４０４）。この行動は、状態ベクトル S、報酬関数 r、及びポリシー関数 P により、P(r(S)) として特定できる。
【００７０】
＜特定された行動の出力：Ｓ４０６＞
行動出力部２０８０は、Ｓ４０４で特定された行動を出力する（Ｓ４０６）。ここで前述したように、エージェントはコンピュータであってもよいし、人であってもよい。
【００７１】
エージェントがコンピュータである場合、行動出力部２０８０は、Ｓ４０４で特定された行動を表す情報を、コンピュータが認識可能な態様で出力する。例えば行動出力部２０８０は、特定された行動をエージェントに行わせるための制御信号を、エージェントに出力する。
【００７２】
例えばエージェントが、自動運転車であるとする。この場合、例えば行動出力部２０８０は、自動運転車に設けられている ECU（Electronic Control Unit）などの制御装置に対して種々の制御信号（例えば、ステアリング角度やスロットル開度などを示す信号）を出力することで、ポリシー関数で特定された行動を自動運転車に行わせる。
【００７３】
エージェントが人である場合、行動出力部２０８０は、Ｓ４０４で特定された行動を、人が認識可能な態様で出力する。例えば行動出力部２０８０は、特定された行動の名称などを、文字列、画像、又は音声などの態様で出力する。行動の名称などを表す文字列や画像は、例えば、エージェントが閲覧可能なディスプレイ装置に表示される。行動の名称などを表す音声は、例えば、エージェントの付近に存在するスピーカから出力される。
【００７４】
例えば、ポリシー関数によって特定される行動を参照して、運転手が車両を運転するとする。この場合、行動出力部２０８０によって特定された行動の名称などが、車両に設けられたディスプレイ装置やスピーカから出力される。運転手がこの出力に従って運転操作を行うことにより、ポリシー関数に基づく適切な動作で、車両を走行させることができる。
【００７５】
［実施形態４］
実施形態４の情報処理装置２０００は以下で説明する事項を除き、実施形態１から実施形態３の情報処理装置２０００のいずれかと同様の機能を有する。
【００７６】
本実施形態の情報処理装置２０００では、前述した学習によって生成されたポリシー関数と報酬関数について、その後に対象環境において実際に行われた行動に基づいてさらに学習を行うことで、ポリシー関数及び報酬関数が更新される。具体的には、取得部２０２０が、行動データをさらに取得する。そして学習部２０４０が、この行動データを用いてポリシー関数及び報酬関数の学習を行うことで、ポリシー関数及び報酬関数を更新する。
【００７７】
ここで取得部２０２０によって取得される行動データは、対象環境において実際に行われた行動の履歴である。この行動データは、熟練者が行った行動の履歴であることが好ましい。しかしながら、必ずしも熟練者が行った行動の履歴を取得する必要はない。
【００７８】
実施形態４の情報処理装置２０００は、「行動データを取得し、その行動データを用いてポリシー関数と報酬関数を更新する」という動作を、繰り返し実行することが好適である。例えば情報処理装置２０００は、更新を定期的に実行する。すなわち情報処理装置２０００は、定期的に行動データを取得し、取得した行動データを用いてポリシー関数と報酬関数の学習を行う。ただし、情報処理装置２０００によるポリシー関数等の更新は、必ずしも定期的に行われる必要はない。例えば情報処理装置２０００は、外部の装置から送信された行動データを受信したことを契機とし、受信した行動データを用いた更新を行ってもよい。
【００７９】
学習部２０４０は、実施形態１で説明した方法により、取得した行動データを用いてポリシー関数と報酬関数の学習を行う。これにより、ポリシー関数及び報酬関数が更新される。更新されたポリシー関数及び報酬関数の組みは、その後にエージェントが行うべき行動の特定（行動出力部２０８０によって実行される処理）や、学習結果の出力（学習結果出力部２０６０によって実行される処理）に用いる。
【００８０】
ただし学習部２０４０は、必ずしも、新たに取得した行動データを用いた学習で得られたポリシー関数及び報酬関数の組みで、以前のポリシー関数及び報酬関数の組みを更新しなくてもよい。
【００８１】
具体的には、学習部２０４０は、過去の学習で得られたポリシー関数及び報酬関数の組みと、新たに得られたポリシー関数及び報酬関数の組みとを比較し、より適切な組みを更新後のポリシー関数及び報酬関数とする。ここで、n 番目に行われた学習で得られるポリシー関数及び報酬関数をそれぞれ、Pn 及び rn と表記する。学習部２０４０が n 回学習を行うと、ポリシー関数と報酬関数の組みの履歴 (P1, r1), (P2, r2),..., (Pn, rn) が得られる。
【００８２】
例えば学習部２０４０は、これらの履歴の中から、学習結果として採用するポリシー関数及び報酬関数の組みを決定する。概念としては、学習部２０４０は、これまでに生成されたポリシー関数及び報酬関数の組みのうち、行動データを最もよく模倣できるポリシー関数及び報酬関数の組みを採用する。
【００８３】
例えば学習部２０４０が、n 回目の学習（n-1 回目の更新）において行動データの集合 Dn を取得し、Dn に含まれる行動データを用いた学習を行うことで、ポリシー関数 Pn 及び報酬関数 rn を得たとする。この場合、ポリシー関数と報酬関数の各組み (Pi, ri) が行動データを模倣できている度合いは、例えば以下の数式（３）で表される。
【数３】
0006911946.tif 000004
・・・（３）
Ui は、ポリシー関数と報酬関数の組み (Pi, ri) が行動データを模倣できている度合いを表す指標値である。(Sk, ak) は、行動データの集合 Dn に含まれる状態ベクトルと行動の組みである。
【００８４】
学習部２０４０は、Ui が最大となるポリシー関数と報酬関数の組みを特定し、特定された組みを n 回目の学習の結果として採用する。すなわち、n-1 回目の更新の結果は、Ui が最大となるポリシー関数及び報酬関数となる。
【００８５】
なお、学習部２０４０は、比較対象として、過去に生成されたポリシー関数及び報酬関数の組みの全てを利用する必要はない。例えば学習部２０４０は、ポリシー関数及び報酬関数の組みの履歴のうち、過去所定個の履歴のみを利用してもよい。
【００８６】
なお、上述したように、新たに得られたポリシー関数及び報酬関数を過去に得られたポリシー関数及び報酬関数と比較できるようにするため、学習で得られるポリシー関数及び報酬関数は、履歴として記憶装置に記憶させておく。ただし、比較に用いる履歴が過去所定個に限定される場合、比較に利用されなくなった古いポリシー関数及び報酬関数については、記憶装置から削除するようにしてもよい。
【００８７】
＜処理の流れ＞
図１０は、実施形態４の情報処理装置２０００によって実行される処理の流れを例示する図である。なお、Ｓ１０２及びＳ１０４については、図４と同じステップである。
【００８８】
取得部２０２０は行動データを取得する（Ｓ５０２）。学習部２０４０は、取得した行動データを用いて、ポリシー関数及び報酬関数の学習を行う（Ｓ５０４）。学習部２０４０は、Ｓ５０４で得られたポリシー関数及び報酬関数の組みと、過去に生成した１つ以上のポリシー関数及び報酬関数の組みの中から、更新結果として採用する組みを決定する（Ｓ５０６）。Ｓ５０６で決定した組みで、ポリシー関数及び報酬関数を更新する（Ｓ５０８）。
【００８９】
図１０に示すフローチャートには処理の終了が記載されていない。しかしながら、情報処理装置２０００は、所定の条件に基づいて、図１０に示す処理を終了してもよい。例えば情報処理装置２０００は、処理の終了を指示するユーザ操作に応じて、処理を終了する。
【００９０】
＜作用効果＞
本実施形態の情報処理装置２０００によれば、ポリシー関数及び報酬関数の生成後にさらに得られる行動データを用いて、ポリシー関数及び報酬関数が更新される。そのため、ポリシー関数及び報酬関数の精度を高めていくことができる。
【００９１】
また前述したように、情報処理装置２０００は、新たに得られた行動データを用いて学習されたポリシー関数及び報酬関数を必ずしも採用する必要はなく、これまでに得られたポリシー関数及び報酬関数の中から、適切なものを選択するようにしてもよい。このようにすることで、より適切なポリシー関数及び報酬関数を得ることができるようになる。
【００９２】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記各実施形態の組み合わせ、又は上記以外の様々な構成を採用することもできる。
【図１】
0006911946.tif 000005
【図２】
0006911946.tif 000006
【図３】
0006911946.tif 000007
【図４】
0006911946.tif 000008
【図５】
0006911946.tif 000009
【図６】
0006911946.tif 000010
【図７】
0006911946.tif 000011
【図８】
0006911946.tif 000012
【図９】
0006911946.tif 000013
【図１０】
0006911946.tif 000014
【図１１】
0006911946.tif 000015