以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、本実施形態に係る生成装置100の構成例を示す。生成装置100は、アクションに応じて現在の状態から次の状態へと遷移する遷移モデルについて、累積期待利得の算出に用いる利得ベクトルを生成する。
ここで、遷移モデルは、例えば「ロボットが移動する」、「音声を認識して、認識した音声に対応する返事および情報を発する」、ならびに「消費者が商品の情報を得つつ、消費活動をする」等の動作を、それぞれの動作に含まれる個別のアクションと、当該アクションによって遷移する複数の状態をモデル化した遷移モデルである。なお、複数の状態のうち、1以上の状態は観測不能な隠れ状態であってよく、この場合、部分観測マルコフ決定過程(POMDP)としてモデル化することができる。
生成装置100は、厳密に遷移パラメータ(一例として、状態遷移確率関数)が決定されていなくても、累積期待利得に応じて意志決定戦略(アクションの実行による状態間の遷移)を算出すべく、利得ベクトルを生成する。生成装置100は、対象時点よりも時間的に次の時点以降の利得ベクトルに基づき、対象時点の利得ベクトルを生成する。生成装置100は、一例として、コンピュータ上でソフトウェアを実行することにより実現される。生成装置100は、取得部110と、初期化部120と、第1決定部130と、第1生成部140と、除去部150と、を備える。
取得部110は、対象時点の次の時点以降に得られる累積期待利得の成分を次の時点の状態毎に含む次の時点の利得ベクトルを取得する。取得部110は、次の時点の利得ベクトルを少なくとも1つ含む次の時点における利得ベクトルの集合を取得してよい。取得部110は、例えば、外部のデータベース1000等の記憶装置に接続され、次の時点の利得ベクトルを取得する。また、取得部110は、当該生成装置100の内部の記憶装置等に接続され、次の時点の利得ベクトルを取得してもよい。
初期化部120は、将来の時点における利得ベクトルを初期化する。初期化部120は、取得部110に接続され、遷移モデルが対象とする期間全体において利得ベクトルを算出するのに先立って、予め定められた将来の時点(例えば、期間の最後の時点)における利得ベクトルの集合を初期化する。例えば、初期化部120は、将来のある時点における利得ベクトルをゼロベクトルの集合とすることにより初期化する。初期化部120は、初期化された利得ベクトルの集合を第1決定部130に供給する。
第1決定部130は、次の時点の利得ベクトルを用いて得られる累積期待利得に応じて、対象時点から次の時点への遷移に用いられる遷移パラメータの値を、遷移パラメータの取り得る範囲の中から決定する。第1決定部130は、取得部110に接続され、次の時点の利得ベクトルおよび初期化された利得ベクトルを受け取る。ここで、遷移パラメータの取り得る範囲は、ユーザ等から予め指定された範囲でよく、これに代えて、予め他のアルゴリズム等で算出された範囲でもよい。ユーザは、ネットワーク等を介して、当該範囲の情報をデータベース1000等の記憶装置に記憶してよく、この場合、第1決定部130は、取得部110を介して当該範囲の情報を取得する。
第1決定部130は、取得部110が利得ベクトルの集合を取得する場合、次の時点における利得ベクトルの集合に含まれる利得ベクトルのそれぞれについて遷移パラメータの値を決定する。第1決定部130による遷移パラメータ等の詳細な決定方法については追って説明する。第1決定部130は、決定した遷移パラメータを、第1生成部140に供給する。
第1生成部140は、第1決定部130に接続され、決定された遷移パラメータを用いて、次の時点の利得ベクトルから、対象時点の利得ベクトルを生成する。第1生成部140は、取得部110が利得ベクトルの集合を取得する場合、次の時点における利得ベクトルの集合に含まれる利得ベクトルのそれぞれについて、決定された遷移パラメータを用いて対象時点の利得ベクトルを生成して対象時点の利得ベクトルの集合に加える。第1生成部140は、生成した利得ベクトルを除去部150に供給する。
除去部150は、第1生成部140に接続され、第1生成部140が生成した対象時点の利得ベクトルの集合から、各状態の確率分布の範囲内で最大値を構成しない利得ベクトルを除去する。除去部150は、生成した対象時点の利得ベクトルの集合を枝刈りする。ここで、第1生成部140が生成する利得ベクトルの集合が、予め定められた数以下の場合等、枝刈りが不要と判断した場合、除去部150は、除去動作をしなくてもよい。また、枝刈りが不要と予め判断できる場合、除去部150はなくてもよい。除去部150は、データベース1000に接続され、利得ベクトルをデータベース1000に供給して記憶する。
以上の本実施形態に係る生成装置100は、次の時点の利得ベクトルに基づき、対象時点の利得ベクトルを生成する。そして、生成装置100は、生成した対象時点の利得ベクトルを次の時点の利得ベクトルとし、時刻を1つ遡った時点を対象時点として、当該対象時点の利得ベクトルを次に生成する。このように、生成装置100は、将来の時点から遡って対象時点における利得ベクトルを生成する。これにより、生成装置100は、遷移モデルが対象とする期間全体における利得ベクトルを、順次生成することができる。生成装置100による利得ベクトルの生成動作を、図2を用いて説明する。
図2は、本実施形態に係る生成装置100の動作フローを示す。本実施形態において、生成装置100は、S310〜S360の処理を実行することにより、アクションに応じて現在の状態から次の状態へと遷移する遷移モデルの、累積期待利得の算出に用いる利得ベクトルの集合を生成する。
まず、取得部110は、外部または生成装置100内部のデータベース1000から次の時点の利得ベクトルの集合を取得する(S310)。ここで、時点n(nは0以上の整数)における利得ベクトルαnの集合をΛnとする。
取得部110は、対象時点をnとすると、次の時点n+1の利得ベクトルαn+1の集合Λn+1を取得する。ここで、利得ベクトルαnは、各状態に対応する複数の要素を有する。それぞれの要素は、時点nにおいて当該状態にあり、αnに対応付けられたアクションを実行した場合に可能な累積期待利得を示す。
また、取得部110は、遷移パラメータの取り得る範囲の情報を取得する。ここで、状態s(s∈S、Sは状態の集合)においてアクションa(a∈A、Aはアクションの集合)を実行した場合に、状態sから状態tに遷移し、観測値z(z∈Z、Zは観測の集合)が観測される確率を、遷移パラメータである状態遷移確率P(t,z|s,a)とする。即ち、取得部110は、各s∈Sとa∈Aの組について、状態遷移確率関数P(・,・|s,a)の取り得る範囲Ps aを取得する。
次に、初期化部120は、遷移モデルにおける将来の時点Nにおける利得ベクトルαNの集合ΛNを初期化する(S320)。例えば、初期化部120は、利得ベクトルαNの集合ΛNを長さが状態の数(|S|)と同じ数のゼロベクトルだけからなる集合{(0,...,0)}として集合ΛNを初期化する。
次に、第1決定部130は、次の時点n+1の利得ベクトルαn+1の集合Λn+1を用いて得られる累積期待利得に応じて、対象時点nから次の時点n+1への遷移に用いられる遷移パラメータの値を決定する(S330)。第1決定部130は、遷移パラメータとして、各s∈Sとa∈Aの組についての状態遷移確率関数P(・,・|s,a)を、状態遷移確率の取り得る範囲Ps aの中から決定する。
ここで、累積期待利得は、アクションを実行して状態が遷移した場合に応じて累積される即時期待利得である。即時期待利得は、状態遷移確率P(t,z|s,a)と状態sでアクションaを実行した場合に得られる即時利得との積に応じて算出されてよい。第1決定部130は、利得ベクトルの集合Λn+1に含まれる利得ベクトルαn+1のそれぞれについて遷移パラメータの値を決定する。
例えば、第1決定部130は、次のn+1の利得ベクトルαn+1の集合Λn+1を用いて得られる累積期待利得が、最小となる遷移パラメータの値を決定する。また、第1決定部130は、次の時点n+1の利得ベクトルαn+1の集合Λn+1を用いて得られる累積期待利得が、近似的に最小となる遷移パラメータの値を決定してもよい。これに代えて、第1決定部130は、当該累積期待利得が、遷移パラメータの取り得る範囲Ps aのうち予め定められた基準以下、最高値、平均値、または予め定められたパーセンタイル値等となる遷移パラメータの値を決定してもよい。
次に、第1生成部140は、決定された遷移パラメータを用いて、対象時点nの利得ベクトルαnの集合Λnを生成する(S340)。第1生成部140は、対象時点nにおいて行う複数のアクションaのそれぞれに対応して、各状態sにおける当該アクションaに応じて第1決定部130により決定された遷移パラメータに基づく累積期待利得と、各状態sに基づく即時期待利得とに基づいて、対象時点nの利得ベクトルαnを生成する。例えば、第1生成部140は、複数のアクションa毎に利得ベクトルαnを生成して集合Λnに加える。
第1生成部140は、時点nにおける利得ベクトルαnの集合Λnを、次の時点n+1における利得ベクトルαn+1の集合Λn+1に基づいて生成する。
次に、除去部150は、対象時点の利得ベクトルαnの集合Λnから、如何なる確率ベクトルπについても当該πとの内積を最大としない利得ベクトルを除去する(S350)。そして、除去部150は、利得ベクトルαnの集合Λnを、データベース1000に記憶する。除去部150の具体的な除去方法は後述する。
次に、生成装置100は、利得ベクトルαnの集合Λnの生成を継続するか否かを判断する(S360)。例えば、生成装置100は、n=0となるか否かを判断し、n=0となる場合、処理を終了する(S360:Yes)。また、生成装置100は、n=0とならない場合(S360:No)、nから1を差し引いて、生成した利得ベクトルαnの集合Λnを次の時点の利得ベクトルの集合とした(S370)後に、処理をS320に戻す。これにより、生成装置100は、nがNから0になるまで利得ベクトルαnの集合Λnを生成する。
図3は、図2における動作フローの具体的アルゴリズムの第1の例を示す。ここでは、図3を例に生成装置100の処理のアルゴリズムの概要を説明する。
まず、1行目に示すように、初期化部120は、将来の時点Nの利得ベクトルαNの集合ΛNをゼロベクトルだけからなる集合{(0,...,0)}として初期化する。
次に、2行目に示すように、生成装置100は、2〜4行目で定義する第1ループ処理を実行する。3行目に示すように、生成装置100は、第1ループ処理内でRobustDPbackup関数により利得ベクトルαnの集合Λnを生成する。即ち、生成装置100は、第1ループ処理において、対象時点nをN−1から始めて3行目の処理を実行して利得ベクトルαnの集合Λnを生成し、当該対象時点nが0になるまでN回繰り返す。
そして、生成装置100は、対象時点nを0からN−1にして順次生成した利得ベクトルαnの集合Λnを出力する。このように、生成装置100は、対象時点nを将来の時点N−1から時系列に順次遡って、当該対象時点nに対応する利得ベクトルαnの集合Λnを順次生成する。利得ベクトルαnの集合Λnを生成するRobustDPbackup関数について、図4を用いて説明する。
図4は、図2における動作フローの具体的アルゴリズムの第2の例を示す。ここでは、図4を例に生成装置100の利得ベクトルαnの集合Λnを生成する処理のアルゴリズムを説明する。即ち、図4に示すアルゴリズムは、RobustDPbackup関数の例を示す。
まず、1行目に示すように、第1決定部130は、時点n+1における利得ベクトルの集合Λn+1を取得する。
次に、2行目に示すように、第1決定部130は、時点nの全てのアクションaに対する利得ベクトルの集合Λ* nを空集合として初期化する。
次に、3行目に示すように、第1決定部130は、アクションaのそれぞれに対して、3〜13行目で定義する第1ループ処理を実行する。
4行目に示すように、第1決定部130は、第1ループ処理内で、アクションaに対応づけられた利得ベクトルαa nの集合Λa nを空集合として初期化する。
次に、5行目に示すように、第1決定部130は、第1ループ処理内で、利得ベクトルの集合Λn+1に含まれるz個の利得ベクトルαz(z∈Z、Zは観測の集合)のうち、重複を許した全ての組み合わせに対して、5〜10行目で定義する第2ループ処理を実行する。
次に、6行目に示すように、第1決定部130は、第2ループ処理内で、状態s(s∈S)のそれぞれに対して、6〜8行目で定義する第3ループ処理を実行する。
7行目に示すように、第1決定部130は、第3ループ処理内で、各s∈Sとa∈Aの組における状態遷移確率関数の取り得る範囲Ps a(:=P(・,・|s,a))の中から、予め定められた式が最小となる状態遷移確率関数P(・,・|s,a)を、遷移パラメータP*(・,・|s,a)と決定する。ここで、予め定められた式は、一例として、状態遷移確率P(t,z|s,a)と利得ベクトルの要素αz(t)との積について、時点n+1の状態tおよび観測値zについて総和を取った累積期待利得を示す。即ち、第1決定部130は、第3ループ処理を実行することで、各s∈Sとa∈Aの組における状態遷移確率関数の取り得る範囲Ps aの中から、最も累積期待利得が低くなる状態遷移確率関数P(・,・|s,a)を、遷移パラメータP*(・,・|s,a)と決定する。
次に、9行目に示すように、第1生成部140は、第2ループ処理内で第3ループ処理の後に、決定した遷移パラメータP*(・,・|s,a)を用いて、アクションaに対応する利得ベクトルαa nを生成して集合Λa nに加える。第1生成部140は、一例として、第1決定部130により決定された遷移パラメータP*(・,・|s,a)によって状態遷移をする場合の累積期待利得と、状態sにおける即時期待利得との和を成分とする、対象時点nの利得ベクトルαa nを生成する。
ここで、9行目の括弧()内の第1項は、状態sにおいてアクションaを実行した場合に得られる即時期待利得を示す。また、第2項は、状態sでアクションaを実行して、状態tに遷移して観測量zが観測されたという条件における累積期待利得を示す。そして、第1生成部140は、生成した対象時点nの利得ベクトルαa nと集合Λa nの和集合を、集合Λa nとして更新する。以上の第2ループ処理は、z個の利得ベクトルαzの組み合わせ毎に、最も累積期待利得が低くなる状態遷移確率関数P(・,・|s,a)を決定して(即ち、最悪の場合の確率値を決定して)、対象時点nの利得ベクトルαa nを生成する。
次に、11行目に示すように、除去部150は、第1ループ処理内で第2ループ処理の後に、Prune関数に集合Λa nを入力することにより集合Λa nを枝刈りしてよい。ここで、Prune関数は、入力されたベクトル集合に含まれるベクトルのうち、少なくとも一つの確率ベクトルbについて、bとの内積が最大値を構成するベクトル以外のベクトルを入力集合から除去する。
また、12行目に示すように、除去部150は、第1ループ処理内で、Prune関数に集合Λnと集合Λa nの和集合を入力することにより集合Λ* nを更新する。Prune関数について、図5および図6を用いて説明する。
図5は、本実施形態に係る利得ベクトルの集合Λnと累積期待利得の関係を示す。ここで利得ベクトルα1、α2、α3、およびα4を含む利得ベクトルの集合Λnを想定する。各利得ベクトルは、各状態sの確率分布bに応じた累積期待利得の値を算出するのに用いることができる。図5は、説明の目的で便宜的に、各利得ベクトルが、確率分布bではなく単一の状態iである確率値b(i)のみに応じて、累積期待利得の値を返すものとして説明する。ここで、確率値b(i)は、0以上1以下の値である。
例えば、状態iである確率値b(i)がb1である場合、利得ベクトルα1はb1の値に応じた累積期待利得r1を返し、利得ベクトルα2はb1の値に応じた累積期待利得r2を返し、利得ベクトルα3はb1の値に応じた累積期待利得r3を返し、利得ベクトルα4はb1の値に応じた累積期待利得r4を返す。
図5に示すように、累積期待利得r1〜r4のうち最大値を取るのは累積期待利得r1なので、利得ベクトルα1〜α4の集合から確率値b1に応じて累積期待利得r1に対応する利得ベクトルα1を選択することができる。同様に、確率値b2に応じて累積期待利得の最大値を取る利得ベクトルα2を選択し、確率値b3に応じて累積期待利得の最大値を取る利得ベクトルα3を選択することができる。
ここで、最適な戦略に従って意思決定を実行する場合、後述するが、累積期待利得が最大となる利得ベクトルを選択する。即ち、利得ベクトルα1〜α4の集合のうち、どの確率値b(i)においても最大値を構成しない利得ベクトルα4は、選択されない不要な利得ベクトルであることが判明する。そこで、除去部150は、このような不要な利得ベクトルを削除する。即ち、除去部150は、確率値b(i)が取り得る範囲内の複数の値をそれぞれ用いて累積期待利得を算出し、最大値を構成しない利得ベクトルを特定して削除する。これにより、除去部150は、無意味な利得ベクトルを枝刈りし、計算をより効率化することができる。
図6は、最大値を取る利得ベクトルの部分を連結することにより得られる、本実施形態に係る累積期待利得の最大値を返す利得関数を示す。図6に示すように、複数の利得ベクトルα1〜α4のうち累積期待利得が最大値となる区間のみを連結すると、太線で示すように、下に凸方向が向く区分線形凸関数となる利得関数vn(b)が得られる。利得関数vn(b)は、vn(b)=max[Σib(i)α(i)]で表される確率分布bに依存する関数となる。
図7は、本実施形態に係る利得ベクトルの集合Λnと累積期待利得の関係の変形例を示す。図7は、図5と同様に、第1生成部140が利得ベクトルα1、α2、α3、およびα4を含む利得ベクトルの集合Λnを生成する例を説明する。
本変形例において、除去部150は、選択用の確率分布b1'およびb2'を設定する。なお、図7では説明のため便宜的に、選択用の確率分布b1'およびb2'はベクトルではなく、単一の状態iに対応した確率値b(i)であるものとして説明する。
例えば、除去部150は、選択用の確率分布b1'について、利得ベクトルα1〜α4のうち累積期待利得の最大値を与える利得ベクトルα1を利得ベクトルの集合Λnに残す。また、除去部150は、選択用の確率分布b2'について、利得ベクトルα1〜α4のうち累積期待利得の最大値を与える利得ベクトルα3を利得ベクトルの集合Λnに残す。このように、除去部150は、第1生成部140が生成した対象時点の利得ベクトルαnの集合Λnから、各状態の確率分布の範囲内における予め定められた選択用の確率分布において累積期待利得の最大値を与えない利得ベクトルを除去する。
ここで、予め定められた選択用の確率分布は、ユーザが予め入力してデータベース1000等の記憶装置に記憶してよい。以上のように、除去部150は、選択用の確率分布を用いることで、不要な利得ベクトルを除去することができ、効率的に枝刈りを実行することができる。
図8は、図7の変形例に対応する累積期待利得の最大値を返す利得関数を示す。図8は、図6と同様に、最大値を取る利得ベクトルの部分を連結することにより得られる利得関数を示す。図8に示すように、利得ベクトルの集合Λnに含まれる利得ベクトルα1およびα3のうち累積期待利得が最大値となる区間のみを連結すると、太線で示す下に凸方向が向く区分線形凸関数となる利得関数vn(b)が得られる。αを利得ベクトルの集合Λnに含まれる利得ベクトルとした場合、利得関数vn(b)は、vn(b)=max[Σib(i)α(i)]で表される確率分布bに依存する関数となる。
以上のように、本実施形態における生成装置100は、集合Λ* nを更新し、全てのアクションaに対して第1ループ処理を繰り返す。これにより、生成装置100は、利得ベクトルαnの集合Λnを生成することができ、14行目に示すように、生成した集合Λ* nを返し、当該アルゴリズムを終了させる。
以上の図4に示すアルゴリズムは、利得ベクトルの集合Λn+1に含まれるz個の利得ベクトルαzのうち、重複を許した全ての組み合わせに対して、最悪となる場合の状態遷移確率関数を決定して、利得ベクトルαnの集合Λnを生成する例を説明した。これに代えて、生成装置100は、各s∈Sとa∈Aの組における状態遷移確率の取り得る範囲Ps a(:=P(・,・|s,a))を凸集合とした凸最適化問題を解くことで、利得ベクトルαnの集合Λnを生成してもよい。凸最適化問題を解いて利得ベクトルαnの集合Λnを生成する関数について、図9を用いて説明する。
図9は、図2における動作フローの具体的アルゴリズムの第3の例を示す。即ち、図9に示すアルゴリズムは、RobustDPbackup関数に代えて用いられるPoint−based RobustDPbackup関数の例を示す。
まず、1行目に示すように、第1決定部130は、時点n+1における利得ベクトルの集合Λn+1および想定確率ベクトルπの集合Πを取得する。ここで、想定確率ベクトルπは、想定確率π(s)を要素として含むベクトルであり、想定確率π(s)は、図5から図8で説明した選択用の確率分布である。また、想定確率π(s)は、状態がsであるとユーザが想定する(信じる)確率であってよい。想定確率ベクトルπの集合Πは、ユーザ等によって予めデータベース等に記憶されてよく、第1決定部130は、取得部110を介して当該想定確率ベクトルπの集合Πを取得してよい。
次に、2行目に示すように、第1決定部130は、利得ベクトルの集合Λnを空集合として初期化する。
次に、3行目に示すように、第1決定部130は、想定確率ベクトルπ(π∈Π)のそれぞれに対して、3〜19行目で定義する第1ループ処理を実行する。
4行目に示すように、第1決定部130は、第1ループ処理内で、想定確率ベクトルπに対応づけられた利得ベクトルαnの集合Λn,πを空集合として初期化する。
次に、5行目に示すように、第1決定部130は、第1ループ処理内で、アクションa(a∈A)のそれぞれに対して、5〜17行目で定義する第2ループ処理を実行する。
6行目に示すように、第1決定部130は、(数1)式で示す目的関数U(z)の総和を最小化させる凸最適化問題を解く。なお、6行目の(1)は、(数1)式を示す。
第1決定部130は、各sおよびaについて、状態遷移確率関数P(・,・|s,a)の想定範囲を凸集合Ps aとした凸最適化問題にすることで、既知の手法で当該凸最適化問題を効率的に解くことができる。
次に、7行目に示すように、第1決定部130は、第2ループ処理内で、観測値z(z∈Z)のそれぞれに対して、7〜9行目で定義する第3ループ処理を実行する。
8行目に示すように、第1決定部130は、(数1)式を解いて得られる利得ベクトルαzのうち、目的関数U(z)を最大にする利得ベクトルをα* zとする。即ち、利得ベクトルα* zは、(数1)式の不等式(≧)を等号(=)とする利得ベクトルである。第1決定部130は、(数1)式を解く過程において、このような利得ベクトルを記憶しておくことが望ましい。
次に、10行目に示すように、第1決定部130は、第2ループ処理内で第3ループ処理の後に、状態s(s∈S)のそれぞれに対して、10〜12行目で定義する第4ループ処理を実行する。
11行目に示すように、第1決定部130は、(数1)式を解いて得られる状態遷移確率関数P(・,・|s,a)のうち、目的関数U(z)を最大にする状態遷移確率関数をP*(・,・|s,a)とする。即ち、状態遷移確率関数P*(・,・|s,a)は、(数1)式の最適解である。即ち、第1決定部130は、対象時点nから次の時点n+1への遷移に用いられる遷移パラメータを、当該状態遷移確率関数P*(・,・|s,a)とする。第1決定部130は、(数1)式を解く過程において、このような状態遷移確率関数を記憶しておくことが望ましい。
次に、13行目に示すように、第1生成部140は、第2ループ処理内で第4ループ処理の後に、状態s(s∈S)のそれぞれに対して、13〜15行目で定義する第5ループ処理を実行する。
14行目に示すように、第1生成部140は、遷移パラメータP*(・,・|s,a)を用いて、利得ベクトルα* nを生成する。第1生成部140は、一例として、遷移パラメータP*(・,・|s,a)によって算出される累積期待利得と、状態sに基づく即時期待利得との和を成分とする、対象時点nの利得ベクトルα* nを生成する。
14行目の第1項は、状態sにおいてアクションaを実行した場合に得られる即時期待利得を示す。また、第2項は、状態sでアクションaを実行して、状態tに遷移して観測量zが観測されたという条件において、可能な累積期待利得を示す。ここで、第2項の累積期待利得には、係数γを乗じた例を示す。係数γは、0から1の間の値を有する割引率(0<γ≦1)であり、将来得られる利得をどれだけ軽視するかを示す係数である。
割引率γは、例えば、1時点先をγだけ割り引くと、2時点先はγの2乗だけ割り引かれ、n時点先はγのn乗だけ割り引かれるように設定される。このような割引率γは、図9に示すアルゴリズムに適用することだけには限定されず、図4に示すアルゴリズム(例えば、9行目の第2項等)に適用してもよい。
次に、16行目に示すように、第1生成部140は、第2ループ処理内で第5ループ処理の後に、生成した対象時点nの利得ベクトルα* nと集合Λn,πの和集合を、集合Λn,πとして更新する。このように、第2ループ処理は、それぞれのπ毎に順次実行され、全てのアクションaについて凸計画問題を解き、集合Λn,πとして更新するので、1つのπに対して複数の利得ベクトルα* nが更新される場合がある。
次に、18行目に示すように、第1生成部140は、第2ループ処理の後に、1つのπに対して1つの利得ベクトルαnを選択して、利得ベクトルαnの集合Λnを更新する。即ち、第2ループ処理で生成された利得ベクトルα* n(α* n∈Λn,π)のうち、状態s(s∈S)についてπ(s)とα(s)の積の和が最大となる利得ベクトルαnを選択して、集合Λnに加える。
このように、第1ループ処理は、1つのπ毎に1つの利得ベクトルαnを選択して集合Λnに加え、πの数だけ繰り返し実行する。これによって、生成装置100は、集合Λnに含まれる利得ベクトルαnの数をπの数以下に抑えることができる。以上のように、図9に示すアルゴリズムは、第1ループ処理を繰り返して集合Λnを更新し、利得ベクトルαnの集合Λnを生成する。そして、20行目に示すように、生成した集合Λnを返し、当該アルゴリズムを終了させる。
以上の図9に示すアルゴリズムは、状態遷移確率関数P(・,・|s,a)の想定範囲P
s aを(数1)式に示す凸集合で表すことにより、状態遷移確率P(t,z|s,a)を決定し、対象時点nの利得ベクトルα
nを生成することを説明した。この場合において、状態遷移確率P(t,z|s,a)の基準値を予め定められた値P
0(t,z|s,a)とし、状態遷移確率P(t,z|s,a)の想定範囲を基準値の1/κ倍(0<κ<1)までとすることにより、(数1)式の凸計画問題を、次式で示す線形計画問題とすることができる。
なお、(数2)式において、状態遷移確率P(t,z|s,a)の想定範囲を基準値の1/κ倍としたが、これに代えて、基準値の中心値または分散値等を用いてもよい。このように、第1決定部130は、状態遷移確率P(t,z|s,a)の取り得る範囲として、状態遷移確率の基準値P0(t,z|s,a)の定数倍までの範囲の中から当該状態遷移確率を決定してよい。この場合、第1決定部130は、図9に示すアルゴリズムの6行目において、(数1)式に代えて、(数2)式を解いてよい。
以上のように、本実施形態の生成装置100は、遷移パラメータの取り得る範囲の中から、次の時点の利得ベクトルを用いて得られる累積期待利得が最小となるように、最悪の場合における遷移パラメータの値を決定して、対象時点の利得ベクトルを生成することができる。このようにして生成した利得ベクトルを用いることで、一定の性能が保証された最適意思決定戦略を算出することができる。最適意思決定戦略として実行すべき適切なアクションを選択する選択装置について、図10を用いて説明する。
図10は、本実施形態に係る選択装置200の構成例を示す。選択装置200は、アクションaに応じて現在の状態から次の状態へと遷移する遷移モデルにおいて、利得ベクトルの集合に基づいてアクションaを選択する。選択装置200は、集合取得部210と、確率取得部220と、選択部230と、出力部240と、第2決定部250と、第2生成部260と、を備える。
集合取得部210は、対象時点n以降に得られる累積期待利得の成分を対象時点nの状態毎に含む対象時点nの利得ベクトルαnの集合Λnを取得する。集合取得部210は、例えば、外部のデータベース1000等の記憶装置に接続され、対象時点nの利得ベクトルαnの集合Λnを取得する。また、集合取得部210は、当該生成装置100の内部の記憶装置等に接続され、対象時点nの利得ベクトルαnの集合Λnを取得してもよい。本実施形態の集合取得部210は、生成装置100が生成した対象時点nの利得ベクトルαnの集合Λnを取得する例を説明する。
確率取得部220は、対象時点nにおいて各状態sにある想定確率ベクトルπを取得する。確率取得部220は、集合取得部210と同様に、外部のデータベース1000等の記憶装置に接続され、想定確率ベクトルπを取得してよい。
選択部230は、利得ベクトルαnの集合Λnおよび想定確率ベクトルπに基づいて、利得ベクトルαnの集合Λnの中から利得ベクトルα* nを選択する。選択部230は、集合取得部210および確率取得部220に接続され、利得ベクトルαnの集合Λnおよび想定確率ベクトルπを受けとる。
出力部240は、選択された利得ベクトルα* nに対応するアクションaを、選択すべきアクションaとして出力する。出力部240は、選択部230に接続され、選択された利得ベクトルα* nを受けとる。出力部240は、生成装置100が選択された利得ベクトルα* nを生成する場合に用いたアクションaを、対応するアクションaとして選択部230を介して集合取得部210から受けとってよい。この場合、集合取得部210は、それぞれの利得ベクトルαnに対応するアクションaを更に取得する。出力部240は、出力するアクションaを実行させてよい。
第2決定部250は、対象時点nから次の時点n+1への遷移に用いられる遷移パラメータの値を、遷移パラメータの取り得る範囲の中から決定する。第2決定部250は、出力部240に接続され、選択された利得ベクトルα* nを用いて得られる累積期待利得が予め定められた基準以下となる遷移パラメータの値を決定してよい。また、第2決定部250は、選択された利得ベクトルα* nを用いて得られる累積期待利得が最小となる遷移パラメータの値を決定する。
第2生成部260は、決定された遷移パラメータを用いて、対象時点nの次の時点n+1において各状態tにある想定確率π(t)を生成する。第2生成部260は、第2決定部250に接続され、受けとった遷移パラメータの値と次の時点における利得ベクトルαn+1の集合Λn+1の情報を用いて、次の時点n+1の想定確率ベクトルπを生成する。第2生成部260は、外部のデータベース1000等の記憶装置に接続され、生成した想定確率ベクトルπを記憶する。
以上の本実施形態に係る選択装置200は、例えば時点n=0から将来の時点N(N>n)に向けて時系列に順次アクションaを実行して想定確率ベクトルπを更新し、意思決定戦略を実行する。選択装置200の意思決定戦略の実行について、図11を用いて説明する。
図11は、本実施形態に係る選択装置200の動作フローを示す。選択装置200は、S410〜S470の処理を実行することにより、利得ベクトルαnの集合Λnに基づいて実行すべきアクションaを選択する。
まず、集合取得部210は、利得ベクトルαnの集合Λnを取得する(S410)。集合取得部210は、集合Λnに含まれる利得ベクトルαnのそれぞれに対応するそれぞれのアクションaと共に、集合Λnを取得してよい。集合取得部210は、意思決定戦略を実行する期間における最初の時点を対象時点nとして、当該対象時点nの利得ベクトルαnの集合Λnを取得する。本実施形態に係る集合取得部210は、n=0を対象時点とする例を説明する。また、集合取得部210は、次の時点n+1の利得ベクトルαn+1の集合Λn+1を取得してよい。これに代えて、集合取得部210は、意思決定戦略を実行する期間における利得ベクトルの集合を取得してもよい。
また、確率取得部220は、想定確率ベクトルπを取得する。初期の時点n(=0)の想定確率ベクトルは、ユーザ等によって予め定められた値であってよい。
次に、選択部230は、対象時点nの利得ベクトルα
nの集合Λ
nから、一の利得ベクトルα
* nを選択する(S420)。選択部230は、次式で示すように、利得ベクトルα
n(α
n∈Λ
n)の中から、想定確率ベクトルπ
nとの内積が最大となる利得ベクトルα
* nを選択する。
次に、出力部240は、選択された利得ベクトルα* nに対応するアクションaを出力する(S430)。出力部240は、対応するアクションaを出力して、当該アクションaを実行させてよい。出力部240は、アクションaの実行により、観測値zを得る。
第2決定部250は、対象時点nから次の時点n+1への遷移に用いられる遷移パラメータの値を決定する(S440)。第2決定部250は、想定確率ベクトルπ、対応するアクションa、観測値z、および次の時点n+1の利得ベクトルα
n+1の集合Λ
n+1を用いて、遷移パラメータの値を決定する。第2決定部250は、一例として、次式を用いて、遷移パラメータの値を決定する。
第2決定部250は、p(・,・|・,a)の想定される範囲Paにおいて、対象時点nから次の時点n+1に遷移する場合に(累積期待利得が最小となる)最悪の場合であって、かつ、当該累積期待利得と想定確率ベクトルπとの内積が最大となる状態遷移確率関数を算出する。ここで、P(・,・|・,a)が、Paの範囲内にあるということは、全てのsについて、状態遷移確率関数P(・,・|s,a)がPs aの範囲内にあることを意味する。このように、第2決定部250は、生成装置100が生成した対象時点nおよび次の時点n+1の利得ベクトルの集合を取得することができるので、当該利得ベクトルの集合を用いて、対象時点nから次の時点n+1に遷移する場合の最悪の場合となる確率を算出することができる。
第2生成部260は、(数4)式で算出した確率を次式に代入して、次の時点n+1の想定確率π
n+1(t)を各tについて算出する(S450)。第2生成部260は、算出した想定確率ベクトルπ
n+1を記憶装置等に記憶して更新する。
次に、第2生成部260は、アクションaの選択を終了するか否かを判断する(S460)。第2生成部260は、例えば、対象時点nが遷移モデルの対象期間の最後の時点Nになるまで、アクションaの選択を継続する(S460:No)。この場合、第2生成部260は、次の時点を対象時点nとし(S470)、ステップS410に戻ってアクションaの選択を継続させる。なお、ステップS410において、確率取得部220は、第2生成部260が更新した次の時点n+1の想定確率ベクトルπn+1を取得する。
選択装置200は、対象時点が将来の時点N(N>n)になるまで、時系列に順次アクションaの選択と想定確率ベクトルの更新を継続し、意思決定戦略を算出する。第2生成部260は、対象時点が将来の時点Nになった場合に、アクションaの選択を終了する(S460:Yes)。
以上のように、本実施形態に係る選択装置200は、生成装置100が生成した利得ベクトルの集合と、想定確率ベクトルπに基づき、実行するアクションaおよび次の時点の想定確率ベクトルπn+1を算出する。そして、選択装置200は、生成装置100が生成した利得ベクトルの集合と、算出した想定確率ベクトルπn+1に基づき、次に実行するアクションaの選択および次の時点の想定確率ベクトルの更新を繰り返し、遷移モデルの対象期間における意思決定戦略を時系列に順次算出することができる。
本実施形態に係る生成装置100は、状態遷移確率関数の取り得る範囲の中から、最悪の場合の状態遷移確率関数を決定して、利得ベクトルの集合を生成する。そして、選択装置200は、生成した利得ベクトルの集合に基づき、最悪の場合において累積期待利得が最大となるように意思決定戦略を算出する。すなわち、本実施形態に係る生成装置100および選択装置200は、遷移モデルの遷移パラメータが予め定められた範囲内に存在する場合に、当該範囲内において最悪の場合に得られる累積期待利得を示すことができる。したがって、生成装置100および選択装置200は、遷移モデルの遷移パラメータを正確に推定できない場合であっても、現実的な最適意志決定戦略を算出できる遷移パラメータの範囲を推定することができる。
なお、本実施形態において、生成装置100および選択装置200は、別個独立に機能する装置である例を説明した。これに代えて、生成装置100および選択装置200は、1つの装置に備わってもよい。例えば、選択装置200は、生成装置100を備え、集合取得部210は、生成装置100により生成された利得ベクトルの集合を取得する。
図12は、本実施形態に係る生成装置100および選択装置200として機能するコンピュータ1900のハードウェア構成の一例を示す。本実施形態に係るコンピュータ1900は、ホスト・コントローラ2082により相互に接続されるCPU2000、RAM2020、グラフィック・コントローラ2075、および表示装置2080を有するCPU周辺部と、入出力コントローラ2084によりホスト・コントローラ2082に接続される通信インターフェイス2030、ハードディスクドライブ2040、およびDVDドライブ2060を有する入出力部と、入出力コントローラ2084に接続されるROM2010、フレキシブルディスク・ドライブ2050、および入出力チップ2070を有するレガシー入出力部と、を備える。
ホスト・コントローラ2082は、RAM2020と、高い転送レートでRAM2020をアクセスするCPU2000およびグラフィック・コントローラ2075とを接続する。CPU2000は、ROM2010およびRAM2020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ2075は、CPU2000等がRAM2020内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置2080上に表示させる。これに代えて、グラフィック・コントローラ2075は、CPU2000等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
入出力コントローラ2084は、ホスト・コントローラ2082と、比較的高速な入出力装置である通信インターフェイス2030、ハードディスクドライブ2040、DVDドライブ2060を接続する。通信インターフェイス2030は、ネットワークを介して他の装置と通信する。ハードディスクドライブ2040は、コンピュータ1900内のCPU2000が使用するプログラムおよびデータを格納する。DVDドライブ2060は、DVD−ROM2095からプログラムまたはデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。
また、入出力コントローラ2084には、ROM2010と、フレキシブルディスク・ドライブ2050、および入出力チップ2070の比較的低速な入出力装置とが接続される。ROM2010は、コンピュータ1900が起動時に実行するブート・プログラム、および/または、コンピュータ1900のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ2050は、フレキシブルディスク2090からプログラムまたはデータを読み取り、RAM2020を介してハードディスクドライブ2040に提供する。入出力チップ2070は、フレキシブルディスク・ドライブ2050を入出力コントローラ2084へと接続すると共に、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ2084へと接続する。
RAM2020を介してハードディスクドライブ2040に提供されるプログラムは、フレキシブルディスク2090、DVD−ROM2095、またはICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、RAM2020を介してコンピュータ1900内のハードディスクドライブ2040にインストールされ、CPU2000において実行される。
プログラムは、コンピュータ1900にインストールされ、コンピュータ1900を取得部110、初期化部120、第1決定部130、第1生成部140、除去部150、集合取得部210、確率取得部220、選択部230、出力部240、第2決定部250、および第2生成部260として機能させる。
プログラムに記述された情報処理は、コンピュータ1900に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段である取得部110、初期化部120、第1決定部130、第1生成部140、除去部150、集合取得部210、確率取得部220、選択部230、出力部240、第2決定部250、および第2生成部260として機能する。そして、この具体的手段によって、本実施形態におけるコンピュータ1900の使用目的に応じた情報の演算または加工を実現することにより、使用目的に応じた特有の生成装置100および選択装置200が構築される。
一例として、コンピュータ1900と外部の装置等との間で通信を行う場合には、CPU2000は、RAM2020上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス2030に対して通信処理を指示する。通信インターフェイス2030は、CPU2000の制御を受けて、RAM2020、ハードディスクドライブ2040、フレキシブルディスク2090、またはDVD−ROM2095等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信し、もしくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス2030は、DMA(ダイレクト・メモリ・アクセス)方式により記憶装置との間で送受信データを転送してもよく、これに代えて、CPU2000が転送元の記憶装置または通信インターフェイス2030からデータを読み出し、転送先の通信インターフェイス2030または記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
また、CPU2000は、ハードディスクドライブ2040、DVDドライブ2060(DVD−ROM2095)、フレキシブルディスク・ドライブ2050(フレキシブルディスク2090)等の外部記憶装置に格納されたファイルまたはデータベース等の中から、全部または必要な部分をDMA転送等によりRAM2020へと読み込ませ、RAM2020上のデータに対して各種の処理を行う。そして、CPU2000は、処理を終えたデータを、DMA転送等により外部記憶装置へと書き戻す。このような処理において、RAM2020は、外部記憶装置の内容を一時的に保持するものとみなせるから、本実施形態においてはRAM2020および外部記憶装置等をメモリ、記憶部、または記憶装置等と総称する。本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、CPU2000は、RAM2020の一部をキャッシュメモリに保持し、キャッシュメモリ上で読み書きを行うこともできる。このような形態においても、キャッシュメモリはRAM2020の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもRAM2020、メモリ、および/または記憶装置に含まれるものとする。
また、CPU2000は、RAM2020から読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、RAM2020へと書き戻す。例えば、CPU2000は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数または定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすかどうかを判断し、条件が成立した場合(または不成立であった場合)に、異なる命令列へと分岐し、またはサブルーチンを呼び出す。
また、CPU2000は、記憶装置内のファイルまたはデータベース等に格納された情報を検索することができる。例えば、第1属性の属性値に対し第2属性の属性値がそれぞれ対応付けられた複数のエントリが記憶装置に格納されている場合において、CPU2000は、記憶装置に格納されている複数のエントリの中から第1属性の属性値が指定された条件と一致するエントリを検索し、そのエントリに格納されている第2属性の属性値を読み出すことにより、所定の条件を満たす第1属性に対応付けられた第2属性の属性値を得ることができる。
以上に示したプログラムまたはモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク2090、DVD−ROM2095の他に、DVD、Blu−ray(登録商標)、またはCD等の光学記録媒体、MO等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークまたはインターネットに接続されたサーバシステムに設けたハードディスクまたはRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ1900に提供してもよい。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。