(57)【要約】【課題】過学習を回避し、かつ、演算時間が短い機械学習を実現する。【解決手段】ポリシを学習する学習制御方法であって、計算機システムは、シミュレーションを実現する目標モデルパラメータの一部を変更した遷移モデルパラメータに基づくシミュレーションを複数回実行し、ポリシを更新する学習処理を実行する学習器と、遷移シミュレーションの実行によって更新されたポリシに関連する情報を学習履歴として管理する履歴データベースと、を備え、学習器は、履歴データベースに学習履歴を格納し、学習履歴を利用したシミュレーションを実行する必要がある場合、学習履歴に基づいて算出された遷移モデルパラメータに基づくシミュレーションを複数回実行する。【選択図】図１
2019219741.tif 000002
【特許請求の範囲】
【請求項１】
対象を制御するための処理の制御内容を決定するためのポリシを学習する計算機システムにおける学習制御方法であって、
前記計算機システムは、
任意のポリシに基づいて前記処理の制御内容を選択するシミュレーションを実現する目標モデルパラメータの一部を変更した遷移モデルパラメータを算出する学習制御部と、
前記学習制御部から入力された前記遷移モデルパラメータ又は前回のシミュレーションの結果に基づいて算出された前記遷移モデルパラメータに基づく前記シミュレーションを複数回実行し、前記シミュレーションの結果に基づいて前記ポリシを更新する学習処理を実行する学習器と、
前記遷移モデルパラメータ及び前記シミュレーションの実行によって更新された前記ポリシに関連する情報を学習履歴として管理する履歴データベースと、を備え、
前記学習制御方法は、
前記学習器が、任意のタイミングで、前記履歴データベースに前記学習履歴を格納する第１のステップと、
前記学習器が、任意の回数だけ実行された前記シミュレーションによって更新された前記ポリシの評価値に基づいて、前記学習履歴を利用した前記シミュレーションを実行する必要があるか否かを判定する第２のステップと、
前記学習履歴を利用した前記シミュレーションを実行する必要があると判定された場合、前記学習器が、前記履歴データベースから選択された使用学習履歴に基づいて算出された前記遷移モデルパラメータに基づく前記シミュレーションを複数回実行し、前記シミュレーションの結果に基づいて前記ポリシを更新する第３のステップと、を含むこと特徴とする学習制御方法。
【請求項２】
請求項１に記載の学習制御方法であって、
前記学習器が、前記評価値に基づいて、前記遷移モデルパラメータを更新するか否かを判定する第４のステップと、
前記学習器が、前記遷移モデルパラメータを更新すると判定された場合、前記学習制御部に前記遷移モデルパラメータの更新指示を出力する第５のステップと、
前記学習制御部が、前記遷移モデルパラメータの更新指示を受信した場合、現在の前記遷移モデルパラメータを更新し、前記更新された遷移モデルパラメータを前記学習器に出力する第６のステップと、を含むことを特徴とする学習制御方法。
【請求項３】
請求項２に記載の学習制御方法であって、
前記学習制御部は、前記学習履歴の関係を示す履歴関係管理情報を管理し、
前記第１のステップは、
前記学習器が、前記履歴データベースに新規学習履歴を格納する場合、前記新規学習履歴の格納通知を前記学習制御部に通知するステップと、
前記学習制御部が、前記新規学習履歴の生成元となる前記シミュレーションにおいて使用された前記遷移モデルパラメータを算出するために用いられる前記学習履歴と関連付くように前記履歴関係管理情報を更新するステップと、を含むことを特徴とする学習制御方法。
【請求項４】
請求項３に記載の学習制御方法であって、
前記第３のステップは、
前記学習制御部が、前記履歴関係管理情報に基づいて、前記使用学習履歴を選択するステップと、
前記学習制御部が、前記使用学習履歴に基づいて前記遷移モデルパラメータを算出し、前記学習器に出力するステップと、を含むことを特徴とする学習制御方法。
【請求項５】
請求項４に記載の学習制御方法であって、
前記第３のステップは、
前記学習制御部が、前記使用学習履歴に基づいて、前回の前記シミュレーションで使用された前記遷移モデルパラメータの一部を変更することによって新規遷移モデルパラメータを算出し、前記学習器に出力するステップと、
前記学習器が、前記新規遷移モデルパラメータに基づく前記シミュレーションを複数回実行するステップを含むことを特徴とする学習制御方法。
【請求項６】
対象を制御するための処理の制御内容を決定するためのポリシを学習する計算機システムであって、
任意のポリシに基づいて前記処理の制御内容を選択するシミュレーションを実現する目標モデルパラメータの一部を変更した遷移モデルパラメータを算出する学習制御部と、
前記学習制御部から入力された前記遷移モデルパラメータ又は前回のシミュレーションの結果に基づいて算出された前記遷移モデルパラメータに基づく前記シミュレーションを複数回実行し、前記シミュレーションの結果に基づいて前記ポリシを更新する学習処理を実行する学習器と、
前記遷移モデルパラメータ及び前記シミュレーションの実行によって更新された前記ポリシに関連する情報を学習履歴として管理する履歴データベースと、を備え、
前記学習器は、
任意のタイミングで、前記履歴データベースに前記学習履歴を格納し、
任意の回数だけ実行された前記シミュレーションによって更新された前記ポリシの評価値に基づいて、前記学習履歴を利用した前記シミュレーションを実行する必要があるか否かを判定し、
前記学習履歴を利用した前記シミュレーションを実行する必要があると判定された場合、前記学習器が、前記履歴データベースから選択された使用学習履歴に基づいて算出された前記遷移モデルパラメータに基づく前記シミュレーションを複数回実行し、前記シミュレーションの結果に基づいて前記ポリシを更新すること特徴とする計算機システム。
【請求項７】
請求項６に記載の計算機システムであって、
前記学習器は、
前記評価値に基づいて、前記遷移モデルパラメータを更新するか否かを判定し、
前記遷移モデルパラメータを更新すると判定された場合、前記学習制御部に前記遷移モデルパラメータの更新指示を出力し、
前記学習制御部は、前記遷移モデルパラメータの更新指示を受信した場合、現在の前記遷移モデルパラメータを更新し、前記更新された遷移モデルパラメータを前記学習器に出力することを特徴とする計算機システム。
【請求項８】
請求項７に記載の計算機システムであって、
前記学習制御部は、前記学習履歴の関係を示す履歴関係管理情報を管理し、
前記学習器は、前記履歴データベースに新規学習履歴を格納する場合、前記新規学習履歴の格納通知を前記学習制御部に通知し、
前記学習制御部は、前記新規学習履歴の格納通知を受信した場合、前記新規学習履歴の生成元となる前記シミュレーションにおいて使用された前記遷移モデルパラメータを算出するために用いられる前記学習履歴と関連付くように前記履歴関係管理情報を更新することを特徴とする計算機システム。
【請求項９】
請求項８に記載の計算機システムであって、
前記学習制御部は、
前記学習器によって前記学習履歴を利用した前記シミュレーションを実行する必要があると判定された場合、前記履歴関係管理情報に基づいて、前記使用学習履歴を選択し、
前記使用学習履歴に基づいて前記遷移モデルパラメータを算出し、前記学習器に出力することを特徴とする計算機システム。
【請求項１０】
請求項９に記載の計算機システムであって、
前記学習制御部は、前記使用学習履歴に基づいて、前回の前記シミュレーションで使用された前記遷移モデルパラメータの一部を変更することによって新規遷移モデルパラメータを算出し、前記学習器に出力し、
前記学習器は、前記新規遷移モデルパラメータに基づく前記シミュレーションを複数回実行することを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習、特に、強化学習の演算性能を向上させる技術に関する。
【背景技術】
【０００２】
近年、様々な場面での機械学習の活用されている。例えば、製造工場における製品の生産性を向上させる運用計画等を自動的に提示するシステムが注目されている。
【０００３】
機械学習の一つとして強化学習が知られている。強化学習を利用したシステムは、製造工場の業務環境等を模倣した環境と、製品の製造作業等の行動を行うエージェントとを用いて行動の試行錯誤を行って、行動を選択する指針となるポリシ又は行動の計画等を出力する。
【０００４】
強化学習の演算手法としては様々な手法が提案されている。例えば、特許文献１に記載の技術が知られている。特許文献１には、ポリシの最適化のために、ポリシの初期のパラメータを予め定めて、行動及び環境の状態遷移の試行錯誤を行って、ポリシを反復的に更新することが記載されている。
【０００５】
複雑な環境（問題）の場合、探索空間が大きいため、反復的なポリシの更新によるポリシの最適化には時間を要する。そこで、非特許文献１に記載のような演算時間の削減手法が知られている。
【０００６】
非特許文献１には、複雑な環境を簡易な環境に置き換え、簡易な環境に対して機械学習を行い、得られた結果を利用して本来の環境に対する機械学習を実行することが記載されている。非特許文献１に記載の技術と特許文献１に記載の技術とを組み合わせることによって、機械学習の様々な手法に適用できる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許出願公開第２０１７／０２７８０１８号明細書
【非特許文献】
【０００８】
【非特許文献１】Sermanet, Pierre, et al、"Pedestrian detection with unsupervised multi-stage feature learning."、Computer Vision and Pattern Recognition (CVPR)、IEEE Computer Society、2013
【発明の概要】
【発明が解決しようとする課題】
【０００９】
簡易な環境に対する機械学習から得られた結果を利用した場合、簡易な環境に特化したポリシが出力される可能がある。すなわち、本来の環境の局所解に収束する可能性がある。前述のような現象を過学習と呼ぶ。特許文献１に記載の技術は、過学習が発生する傾向が高いことが知られている。したがって、過学習の発生を抑止する工夫が必要となる。
【００１０】
過学習を回避する手法としては、ポリシ等のパラメータをランダムに設定する手法が知られている。しかし、この手法では、機械学習の演算時間が長くなる問題がある。
【００１１】
本発明は、上記の課題を解説することを目的とする。すなわち、過学習を回避し、かつ、演算時間が短い機械学習を実現する方法及びシステムを実現する。
【課題を解決するための手段】
【００１２】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、対象を制御するための処理の制御内容を決定するためのポリシを学習する計算機システムにおける学習制御方法であって、前記計算機システムは、任意のポリシに基づいて前記処理の制御内容を選択するシミュレーションを実現する目標モデルパラメータの一部を変更した遷移モデルパラメータを算出する学習制御部と、前記学習制御部から入力された前記遷移モデルパラメータ又は前回のシミュレーションの結果に基づいて算出された前記遷移モデルパラメータに基づく前記シミュレーションを複数回実行し、前記シミュレーションの結果に基づいて前記ポリシを更新する学習処理を実行する学習器と、前記遷移モデルパラメータ及び前記遷移シミュレーションの実行によって更新された前記ポリシに関連する情報を学習履歴として管理する履歴データベースと、を備え、前記学習制御方法は、前記学習器が、任意のタイミングで、前記履歴データベースに前記学習履歴を格納する第１のステップと、前記学習器が、任意の回数だけ実行された前記シミュレーションによって更新された前記ポリシの評価値に基づいて、前記学習履歴を利用した前記シミュレーションを実行する必要があるか否かを判定する第２のステップと、前記学習履歴を利用した前記シミュレーションを実行する必要があると判定された場合、前記学習器が、前記履歴データベースから選択された使用学習履歴に基づいて算出された前記遷移モデルパラメータに基づく前記シミュレーションを複数回実行し、前記シミュレーションの結果に基づいて前記ポリシを更新する第３のステップと、を含む。
【発明の効果】
【００１３】
本発明の一形態によれば、過学習を回避し、かつ、演算時間が短い機械学習を実現できる。上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１４】
【図１】実施例１のシステムの構成例を示す図である。
【図２】実施例１のサブプロセスコントローラの構成例を示す図である。
【図３】実施例１の学習条件パラメータ情報のデータ構造の一例を示す図である。
【図４】実施例１の環境パラメータのデータ構造の一例を示す図である。
【図５】実施例１のエージェントパラメータのデータ構造の一例を示す図である。
【図６】実施例１の履歴関係管理情報のデータ構造の一例を示す図である。
【図７】実施例１の学習結果ＤＢのデータ構造の一例を示す図である。
【図８】実施例１の履歴ＤＢのデータ構造の一例を示す図である。
【図９】実施例１の計算機が実行する処理の概要を説明するフローチャートである。
【図１０Ａ】実施例１の学習コントローラが実行する処理を説明するフローチャートである。
【図１０Ｂ】実施例１の学習コントローラが実行する処理を説明するフローチャートである。
【図１１】実施例１のサブプロセスコントローラが実行する処理を説明するフローチャートである。
【図１２】実施例１のスコア判定モジュールが実行する処理を説明するフローチャートである。
【図１３】実施例１の計算機によって表示されるＧＵＩの一例を示す図である。
【図１４】実施例１の計算機によって表示されるＧＵＩの一例を示す図である。
【図１５】実施例１のシステムの構成の変形例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【００１６】
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。
【００１７】
本明細書等における「第１」、「第２」、「第３」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。
【００１８】
図面等において示す各構成の位置、大きさ、形状、及び範囲等は、発明の理解を容易にするため、実際の位置、大きさ、形状、及び範囲等を表していない場合がある。したがって、本発明では、図面等に開示された位置、大きさ、形状、及び範囲等に限定されない。
【００１９】
本明細書では、機械学習の一つである強化学習を一例として発明を説明する。強化学習では、環境及びエージェントを用いたシミュレーションを実行することによって、目的とする結果が取得される。
【実施例１】
【００２０】
図１は、実施例１のシステムの構成例を示す図である。
【００２１】
システムは、計算機１００及び端末１０１から構成される。計算機１００及び端末１０１は、ネットワークを介して互いに接続される。ネットワークは、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）及びＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等が考えられる。ネットワークの接続方式は無線及び有線のいずれでもよい。なお、計算機１００及び端末１０１は直接接続されてもよい。
【００２２】
端末１０１は、ユーザが操作する端末である。端末１０１は、プロセッサ、メモリ、及びネットワークインタフェースを有する汎用計算機又は携帯端末等である。
【００２３】
ユーザは、端末１０１を用いて、強化学習を実行に必要なパラメータ、すなわち、学習条件パラメータを設定し、当該パラメータを格納する学習条件パラメータ情報１７０を計算機１００に入力する。また、ユーザは、端末１０１を用いて、計算機１００から出力される情報を確認する。学習条件パラメータ情報１７０のデータ構造については図３を用いて説明する。
【００２４】
計算機１００は、学習条件パラメータ情報１７０に基づいて、任意の対象を制御するための処理に関する強化学習を実行する。例えば、クレーンを用いた荷物の搬入作業の最適な処理手順又は処理内容を選択するためのポリシを探索するための強化学習が実行される。なお、本発明は、学習の対象及び学習内容等に限定されない。
【００２５】
計算機１００は、ハードウェアとして、プロセッサ１１０、メモリ１１１、及びネットワークインタフェース１１２を有する。なお、計算機１００は、入力装置及び出力装置と接続するＩＯインタフェース、並びに、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶媒体を有してもよい。
【００２６】
プロセッサ１１０は、メモリ１１１に格納されるプログラムを実行する。プロセッサ１１０がプログラムにしたがって処理を実行することによって、特定の機能を実現するモジュールとして動作する。以下の説明では、モジュールを主語に処理を説明する場合、プロセッサ１１０が当該モジュールを実現するプログラムを実行していることを示す。
【００２７】
メモリ１１１は、プロセッサ１１０が実行するプログラム及びプログラムが使用する情報を格納する。また、メモリ１１１は、プログラムが一時的に使用するワークエリアを含む。
【００２８】
ネットワークインタフェース１１２は、ネットワークを介して他の装置と接続するためのインタフェースである。
【００２９】
ここで、メモリ１１１に格納されるプログラム及び情報について説明する。メモリ１１１は、学習コントローラ１２０、サブプロセスコントローラ１３０、及びスコア判定モジュール１４０を実現するプログラムを格納する。また、メモリ１１１は、履歴ＤＢ１５０及び学習結果ＤＢ１６０を格納する。
【００３０】
サブプロセスコントローラ１３０は、強化学習を実行する。具体的には、サブプロセスコントローラ１３０は、環境パラメータ１７１に基づいて構築される環境モジュール１３１、及び、エージェントパラメータ１７２に基づいて構築されるエージェントモジュール１３２を用いたシミュレーションを繰り返し実行する。
【００３１】
実施例１では、サブプロセスコントローラ１３０は、目的のシミュレーションの難易度より難易度が低いシミュレーションを実現する環境に対応する環境モジュール１３１を用いて、シミュレーションを実行する。所望の学習結果が得られた場合、サブプロセスコントローラ１３０は、現在のシミュレーションの難易度を変更した環境に対応する環境モジュール１３１及び学習結果を用いたシミュレーションを実行する。前述のような難易度に応じた強化学習の遷移によって、目的の難易度の環境モジュール１３１を用いたシミュレーションの演算を高速化する。
【００３２】
学習コントローラ１２０は強化学習を制御する。学習コントローラ１２０には、対象に関するシミュレーションを行うための学習モデルが設定される。学習モデルは、環境のモデル及びエージェントのモデルを含む。学習コントローラ１２０は、学習条件パラメータ情報１７０及び学習モデルに基づいて、環境パラメータ１７１及びエージェントパラメータ１７２を生成し、サブプロセスコントローラに各パラメータを出力する。以下の説明では、環境パラメータ１７１及びエージェントパラメータ１７２を区別しない場合、モデルパラメータと記載する。
【００３３】
実施例１のサブプロセスコントローラ１３０は、任意のタイミングで、現在実行しているシミュレーションのモデルパラメータ及び学習結果（学習済のポリシ）を学習履歴として履歴ＤＢ１５０に格納する。また、サブプロセスコントローラ１３０は、任意のタイミングで学習結果の評価をスコア判定モジュール１４０に依頼する。なお、学習履歴に含めるデータは任意に設定できる。例えば、ポリシ内部データ２４１のみを学習履歴として保存してもよい。
【００３４】
なお、環境パラメータ１７１のデータ構造は図４を用いて説明し、エージェントパラメータ１７２のデータ構造は図５を用いて説明する。
【００３５】
学習コントローラ１２０は、学習履歴を反映した環境モジュール１３１及びエージェントモジュール１３２を復元する環境ロールバックコントローラ１２１及びポリシルールバックコントローラ１２２を有する。学習コントローラ１２０は、使用する学習履歴を選択するための履歴関係管理情報１２３を管理する。また、学習コントローラ１２０は、任意のシミュレーション難易度の強化学習の実行回数の合計値を管理する。
【００３６】
学習コントローラ１２０は、学習条件パラメータ情報１７０を受信した場合、最もシミュレーションの難易度が低い環境を実現する環境パラメータ１７１を算出する。学習コントローラ１２０は、所望の学習結果が得られた場合、現在のシミュレーションの難易度より難易度が高いシミュレーションを実現するための環境パラメータ１７１を算出する。
【００３７】
なお、学習コントローラ１２０は、目的とする環境を実現するためのパラメータに含まれる一部のパラメータの値を変更した環境パラメータ１７１を算出し、又は、目的とする環境を実現するためのパラメータに含まれる一部のパラメータを含まない環境パラメータ１７１を算出することによって、シミュレーションの難易度を変更できる。
【００３８】
スコア判定モジュール１４０は、学習結果を評価する。スコア判定モジュール１４０は、最適なポリシが算出されたと判定した場合、学習結果ＤＢ１６０に学習結果を格納する。また、スコア判定モジュール１４０は、学習結果の評価に基づいてく、強化学習の実行計画を決定し、実行計画に基づく指示を学習コントローラ１２０に出力する。
【００３９】
図２は、実施例１のサブプロセスコントローラ１３０の構成例を示す図である。
【００４０】
環境パラメータ１７１に基づいて構築される環境モジュール１３１は、環境制御モジュール２１０及び報酬算出モジュール２２０を含む。
【００４１】
環境制御モジュール２１０は、強化学習における環境の状態を管理し、また、状態の遷移をシミュレーションする。環境制御モジュール２１０は、シミュレーション管理モジュール２１１を有し、また、内部パラメータとして環境状態２１２を保持する。
【００４２】
環境状態２１２は、現在の環境の状態を示すパラメータである。シミュレーション管理モジュール２１１は、エージェントモジュール１３２から出力される行動２５２に基づいて、状態の遷移をシミュレーションする。
【００４３】
報酬算出モジュール２２０は、状態２５０に基づいて報酬２５１を算出し、エージェントモジュール１３２に出力する。
【００４４】
エージェントパラメータ１７２に基づいて構築されるエージェントモジュール１３２は、オプティマイザ２３０及びポリシコントローラ２４０を含む。
【００４５】
ポリシコントローラ２４０は、ポリシを対応するポリシ内部データ２４１を保持する。オプティマイザ２３０は、ポリシを更新するための更新用データ２３１及びオプティマイザ内部データ２３２を保持する。更新用データ２３１は、状態パラメータ、報酬パラメータ、及び行動パラメータから構成されるデータを格納する。
【００４６】
ここで、サブプロセスコントローラ１３０の内部の動作について説明する。
【００４７】
環境モジュール１３１は、状態確認フラグ２５３又は行動２５２を受信するまで待ち状態となる。
【００４８】
状態確認フラグ２５３を受信した場合、環境モジュール１３１の環境制御モジュール２１０は、環境状態２１２に設定された状態２５０をエージェントモジュール１３２に出力する。このとき、報酬２５１を示すデータは出力されない。
【００４９】
なお、環境モジュール１３１は、状態２５０とともに「０」に対応する報酬２５１をエージェントモジュール１３２に出力してもよい。この場合、報酬算出モジュール２２０が環境制御モジュール２１０から出力された状態２５０に基づいて「０」を算出する。
【００５０】
行動２５２を受信した場合、環境モジュール１３１の環境制御モジュール２１０は、行動２５２及び環境状態２１２をシミュレーション管理モジュール２１１に入力してシミュレーションを実行し、状態２５０を算出する。環境制御モジュール２１０は、環境状態２１２に算出された状態２５０を設定し、また、報酬算出モジュール２２０に算出された状態２５０を出力する。
【００５１】
環境モジュール１３１の報酬算出モジュール２２０は、状態２５０を入力とする所定の演算方法に基づいて報酬２５１を算出する。演算方法は、例えば、学習条件パラメータに含まれる。
【００５２】
環境モジュール１３１は、状態２５０及び報酬２５１をエージェントモジュール１３２に出力する。
【００５３】
エージェントモジュール１３２は、まず、環境モジュール１３１に状態確認フラグ２５３を出力する。エージェントモジュール１３２は、環境モジュール１３１から状態確認フラグ２５３に対する応答として状態２５０を受信する。このとき、エージェントモジュール１３２のオプティマイザ２３０は、更新用データ２３１に初期値を設定する。具体的には、オプティマイザ２３０は、状態パラメータが受信した状態２５０、行動パラメータが「なし」、及び報酬パラメータが「報酬なし」であるデータを更新用データ２３１に追加する。
【００５４】
エージェントモジュール１３２のポリシコントローラ２４０は、状態２５０及びポリシ内部データ２４１に基づいて行動２５２を選択し、環境モジュール１３１に行動２５２を出力する。エージェントモジュール１３２のオプティマイザ２３０は、環境モジュール１３１から行動２５２に対する応答として状態２５０及び報酬２５１を受信した場合、更新用データ２３１を更新する。具体的には、オプティマイザ２３０は、状態パラメータが受信した状態２５０、行動パラメータが出力した行動２５２、報酬パラメータが受信した報酬２５１であるデータを更新用データ２３１に追加する。
【００５５】
オプティマイザ２３０は、ポリシ内部データ２４１を更新する必要があるか否かを判定する。例えば、オプティマイザ２３０は、状態２５０を受信した場合、ポリシ内部データ２４１を更新する必要があると判定する。なお、オプティマイザ２３０は、状態２５０を受信する度に、ポリシ内部データ２４１を更新する必要があると判定してもよいし、一定の回数、状態２５０を受信した場合に、ポリシ内部データ２４１を更新する必要があると判定してもよい。
【００５６】
ポリシ内部データ２４１を更新する必要があると判定された場合、オプティマイザ２３０は、更新用データ２３１に基づいて、オプティマイザ内部データ２３２を更新する。また、オプティマイザ２３０は、更新されたオプティマイザ内部データ２３２に基づいてポリシ内部データ２４１を更新する。
【００５７】
実施例１のサブプロセスコントローラ１３０は、強化学習におけるシミュレーションの実行中に、学習履歴を保存するか否かを判定する。履歴ＤＢ１５０に学習履歴を保存すると判定された場合、サブプロセスコントローラ１３０は、履歴ＤＢ１５０に環境モジュール１３１及びエージェントモジュール１３２が保持する内部パラメータ等を学習履歴として履歴ＤＢ１５０に格納する。
【００５８】
なお、計算機が有する各モジュールについては、複数のモジュールを一つのモジュールにまとめてもよいし、一つのモジュールを機能毎に複数のモジュールに分けてもよい。例えば、サブプロセスコントローラ１３０にスコア判定モジュール１４０を含めるようにしてもよい。
【００５９】
図３は、実施例１の学習条件パラメータ情報１７０のデータ構造の一例を示す図である。
【００６０】
学習条件パラメータ情報１７０は、学習形態３０１、学習回数３０２、上限回数３０３、遷移条件３０４、提示情報３０５、保存条件３０６、及び選択方式３０７から構成される。
【００６１】
学習形態３０１は、強化学習の学習方式を示す値を格納するフィールドである。学習回数３０２は、ポリシを保存するタイミングを示す強化学習の実行回数を格納するフィールドである。上限回数３０３は、任意のシミュレーション難易度の強化学習の実行回数の上限値を格納するフィールドである。遷移条件３０４は、シミュレーションの難易度を調整するための情報を格納するフィールドである。提示情報３０５は、強化学習の処理結果として出力する情報を指定する値を格納するフィールドである。保存条件３０６は、履歴ＤＢ１５０に格納するデータを指定する値を格納するフィールドである。選択方式３０７は、利用する学習履歴の選択方式を格納するフィールドである。
【００６２】
なお、学習条件パラメータ情報１７０には、評価値の定義を設定するフィールドが含まれてもよい。
【００６３】
図４は、実施例１の環境パラメータ１７１のデータ構造の一例を示す図である。
【００６４】
環境パラメータ１７１は、タイムステップ４０１、関係式４０２、方程式４０３、状態４０４、及び報酬４０５から構成される。
【００６５】
タイムステップ４０１は、状態の遷移間隔を指定する値を格納するフィールドである。関係式４０２及び方程式４０３は、数式等、環境を定義する情報を格納するフィールドである。状態４０４は、環境の状態を定義する情報を格納するフィールドである。報酬４０５は、数式等、報酬の算出方法を定義する情報を格納するフィールドである。
【００６６】
図５は、実施例１のエージェントパラメータ１７２のデータ構造の一例を示す図である。
【００６７】
エージェントパラメータ１７２は、ポリシ内部変数５０１及びオプティマイザ内部変数５０２から構成される。
【００６８】
ポリシ内部変数５０１は、ポリシ内部データ２４１に設定する変数の値を格納するフィールドである。オプティマイザ内部変数５０２は、オプティマイザ内部データ２３２に設定する変数の値を格納するフィールドである。
【００６９】
図５に示すポリシ内部変数５０１には、ポリシに対応するニューラルネットワークの重みの係数が格納される。オプティマイザ内部変数５０２には、勾配法のパラメータα及びβと、更新頻度を制御するパラメータηが格納される。
【００７０】
図６は、実施例１の履歴関係管理情報１２３のデータ構造の一例を示す図である。
【００７１】
履歴関係管理情報１２３は、学習履歴の関係を木構造として管理するためのデータであり、ノードＩＤ６０１、親ノードＩＤ６０２、子ノードＩＤ６０３、難易度係数６０４、及び探索フラグ６０５から構成されるエントリを含む。一つのエントリは一つの学習履歴に対応する。
【００７２】
ノードＩＤ６０１は、学習履歴に対応するノードの識別情報を格納するフィールドである。親ノードＩＤ６０２は、親ノードの識別情報を格納するフィールドである。子ノードＩＤ６０３は、子ノードの識別情報を格納するフィールドである。難易度係数６０４は、学習履歴を得るために実行されたシミュレーションの難易度を格納するフィールドである。探索フラグ６０５は、学習履歴が利用できるか否かを示すフラグを格納する。「ＯＮ」は学習履歴が利用できることを示し、「ＯＦＦ」は学習履歴が利用できないことを示す。なお、空欄は判定が行われていないノードであることを示す。
【００７３】
図７は、実施例１の学習結果ＤＢ１６０のデータ構造の一例を示す図である。
【００７４】
学習結果ＤＢ１６０は、結果ＩＤ７０１、ポリシ内部変数７０２、及び累積報酬７０３から構成されるエントリを含む。一つのエントリは、任意の難易度の強化学習によって算出された最適な学習結果に対応する。
【００７５】
結果ＩＤ７０１は、学習結果ＤＢ１６０のエントリを識別するための識別情報を格納するフィールドである。ポリシ内部変数７０２は、学習結果として出力されるポリシ内部データ２４１を格納するフィールドである。累積報酬７０３は、学習結果を評価する評価値である累積報酬を格納するフィールドである。累積報酬は、過学習の発生の有無を判定する指標としても用いられる。なお、累積報酬以外にも、重要業績評価指標（ＫＰＩ）を評価値として用いることもできる。ＫＰＩは複数存在してもよい。
【００７６】
図８は、実施例１の履歴ＤＢ１５０のデータ構造の一例を示す図である。
【００７７】
履歴ＤＢ１５０は、履歴ＩＤ８０１、モデルパラメータ８０２、及び出力パラメータ８０３から構成されるエントリを含む。一つのエントリは、任意の難易度の強化学習の学習結果に対応する。
【００７８】
履歴ＩＤ８０１は、履歴ＤＢ１５０のエントリを識別するための識別情報を格納するフィールドである。モデルパラメータ８０２は、任意の難易度の強化学習を実行するために入力されたパラメータを格納するフィールド群である。モデルパラメータ８０２は、環境パラメータ８１１及びエージェントパラメータ８１２を含む。出力パラメータ８０３は、任意の難易度の強化学習を実行することによって算出された学習結果を格納するフィールド群である。出力パラメータ８０３は、ポリシ内部変数８２１及び累積報酬８２２を含む。
【００７９】
なお、エントリは学習条件等を格納するフィールドを含んでもよい。また、モデルパラメータ８０２は、環境パラメータのみを含んでもよい。
【００８０】
図９は、実施例１の計算機１００が実行する処理の概要を説明するフローチャートである。
【００８１】
計算機１００は、端末１０１から学習条件パラメータ情報１７０を受信した場合（ステップＳ１０１）、当該学習条件パラメータ情報１７０に基づいてモデルパラメータ（遷移モデルパラメータ）を設定し（ステップＳ１０２）、強化学習を実行する（ステップＳ１０３）。この時点では、計算機１００は、シミュレーション難易度が最も低い環境を実現する環境パラメータ１７１を設定する。強化学習では、学習履歴の出力契機が検出された場合、履歴ＤＢ１５０に学習履歴が格納される。
【００８２】
計算機１００は、任意のタイミングで、スコア判定処理を実行する（ステップＳ１０４）。
【００８３】
計算機１００は、スコア判定処理の処理結果に基づいて、任意のシミュレーション難易度における最適ポリシが算出されたか否かを判定する（ステップＳ１０５）。ここで、最適ポリシとは、過学習又は学習効率の低迷が発生していない状態で算出されたポリシであって、報酬を最大化し、かつ、制約条件を満たすポリシを意味する。
【００８４】
最適ポリシが算出されていないと判定された場合、計算機１００は、学習履歴を使用するか否かを判定する（ステップＳ１０６）。過学習又は学習効率の低迷の発生が原因で最適ポリシが算出されていないか否かが判定される。
【００８５】
学習履歴を使用しないと判定された場合、すなわち、現在のパラメータで学習を継続すると判定された場合、計算機１００は、学習条件パラメータ情報１７０及び学習結果に基づいて新たなモデルパラメータを設定し（ステップＳ１０２）、強化学習を実行する（ステップＳ１０３）。
【００８６】
具体的には、モデルパラメータに含まれるエージェントパラメータ１７２には、前回の強化学習の実行時のポリシ内部データ２４１が設定される。
【００８７】
学習履歴を使用すると判定された場合、計算機１００は、使用する学習履歴を選択し（ステップＳ１０７）、学習条件パラメータ情報１７０及び学習履歴に基づいて新たなモデルパラメータを設定し（ステップＳ１０２）、強化学習を実行する（ステップＳ１０３）。
【００８８】
例えば、計算機１００は、学習履歴に含まれるポリシ内部変数を反映したエージェントパラメータ１７２を算出し、学習履歴に含まれる環境パラメータ１７１を反映した環境パラメータ１７１を算出する。例えば、ポリシ内部変数５０１に学習履歴に含まれるポリシ内部変数が設定されたエージェントパラメータ１７２が算出される。
【００８９】
なお、環境パラメータ１７１及びエージェントパラメータ１７２のいずれか一方にのみ学習履歴を反映してもよい。
【００９０】
ステップＳ１０５において最適ポリシが算出されたと判定された場合、計算機１００は、シミュレーション難易度を変更するか否かを判定する（ステップＳ１０８）。
【００９１】
シミュレーション難易度を変更しないと判定された場合、計算機１００は処理を終了する。これは、目標のシミュレーション難易度における最適ポリシが得られたことを示す。
【００９２】
シミュレーション難易度を変更すると判定された場合、計算機１００は、シミュレーションの難易度を変更する（ステップＳ１０９）。
【００９３】
具体的には、計算機１００は、前回の強化学習によって算出されたポリシに基づいてエージェントパラメータ１７２を算出し、さらに、難易度が高いシミュレーションを実現するための環境の環境パラメータ１７１を算出する。
【００９４】
その後、計算機１００は、変更されたモデルパラメータを設定し（ステップＳ１０２）、強化学習を実行する（ステップＳ１０３）。
【００９５】
実施例１の強化学習アルゴリズムは、以下のような特徴を有する。
【００９６】
（特徴１）計算機１００は、難易度が低いシミュレーションを実行し、難易度を変更したシミュレーションを実行する場合、難易度の変更前の強化学習から算出された学習結果に基づいて算出されたモデルパラメータを設定する。これによって、効率的な強化学習を実現でき、学習に要する時間を削減できる。
【００９７】
（特徴２）計算機１００は、任意の難易度の強化学習において、前回の強化学習の学習結果を使用せずに、過去の強化学習の学習結果を使用して強化学習を再度実行する。これによって、累積報酬（評価値）の上昇が見込まれない強化学習の実行を抑止することができ、また、過学習が発生した場合の強化学習の継続を抑止することができる。
【００９８】
（特徴２）の処理を実現するために、計算機１００は、任意のタイミングで、履歴ＤＢ１５０に学習履歴を保存する。
【００９９】
図１０Ａ及び図１０Ｂは、実施例１の学習コントローラ１２０が実行する処理を説明するフローチャートである。学習コントローラ１２０は、外部入力を受け付けた場合、以下で説明する処理を実行する。なお、学習コントローラ１２０は、学習条件パラメータ情報１７０、最適ポリシ通知、継続指示、履歴使用指示、及び履歴更新通知のいずれかを外部入力として受け付ける。
【０１００】
学習コントローラ１２０は、学習条件パラメータ情報１７０を受信したか否かを判定する（ステップＳ２０１）。
【０１０１】
学習条件パラメータ情報１７０を受信したと判定された場合、学習コントローラ１２０は、総学習回数及び履歴関係管理情報１２３を初期化する（ステップＳ２０２）。
【０１０２】
具体的には、学習コントローラ１２０は、総学習回数を「０」に設定する。また、学習コントローラ１２０は、履歴関係管理情報１２３の全てのエントリを削除した後、一つのエントリを追加し、追加されたエントリのノードＩＤ６０１に「１」を設定する。
【０１０３】
次に、学習コントローラ１２０は、学習条件パラメータ情報１７０に基づいて、初期モデルパラメータを算出する（ステップＳ２０３）。
【０１０４】
ステップＳ２０３では、学習コントローラ１２０は、モデルパラメータの算出時に、シミュレーション難易度を示す難易度係数を算出する。学習コントローラ１２０は、履歴関係管理情報１２３を参照し、追加されたエントリの難易度係数６０４に算出された難易度係数を設定する。また、学習コントローラ１２０は、ルートノードの識別情報をポインタとして保持する。
【０１０５】
次に、学習コントローラ１２０は、初期モデルパラメータをサブプロセスコントローラ１３０に出力する（ステップＳ２０４）。その後、学習コントローラ１２０は、待ち状態に移行し、処理を終了する。このとき、学習コントローラ１２０は、初期モデルパラメータとともに、追加されたエントリのノードＩＤ６０１に設定された識別情報を出力する。
【０１０６】
ステップＳ２０１において、学習条件パラメータ情報１７０を受信していないと判定された場合、学習コントローラ１２０は、最適ポリシ通知を受信したか否かを判定する（ステップＳ２０５）。
【０１０７】
最適ポリシ通知を受信したと判定された場合、学習コントローラ１２０は、最適ポリシ通知に含まれる更新判定リストに基づいて、履歴関係管理情報１２３を更新する（ステップＳ２０６）。更新判定リストはノードの識別情報のリストである。更新判定リストについては図１２で説明する。
【０１０８】
具体的には、学習コントローラ１２０は、更新判定リストを参照し、選択対象として除外されることを示す除外フラグが付与されていないノードに対応するエントリの探索フラグ６０５に「ＯＮ」を設定する。また、学習コントローラ１２０は、除外フラグが付与されたノードに対応するエントリの探索フラグ６０５に「ＯＦＦ」を設定する。以下の説明では、更新判定リストに登録され、かつ、除外フラグが付与されていないノードを候補ノードと記載する。
【０１０９】
次に、学習コントローラ１２０は、シミュレーション難易度を変更するか否かを判定する（ステップＳ２０７）。
【０１１０】
例えば、学習コントローラ１２０は、前回出力した環境パラメータ１７１に含まれる一部の値が目標値に一致するか否かを判定する。
【０１１１】
前回出力した環境パラメータ１７１に含まれる一部の値が目標値に一致しない場合、学習コントローラ１２０は、シミュレーション難易度を変更すると判定する。
【０１１２】
シミュレーション難易度を変更すると判定された場合、学習コントローラ１２０は、シミュレーション難易度を変更した環境を実現するための新規モデルパラメータを算出する（ステップＳ２０８）。具体的には、以下のような処理が実行される。
【０１１３】
学習コントローラ１２０は、候補ノードの中から一つのノードを選択する。ここでは、累積報酬が最も大きいノードが選択されるものとする。学習コントローラ１２０は、選択されたノードの識別情報をポインタとして保持する。
【０１１４】
学習コントローラ１２０は、学習条件パラメータ情報１７０及び選択されたノードに対応する学習履歴に含まれる環境パラメータ１７１に基づいて、新たな環境パラメータ１７１を算出する。また、学習コントローラ１２０は、選択されたノードに対応する学習履歴に含まれるポリシ内部データに基づいて新たなエージェントパラメータ１７２を算出する。学習コントローラ１２０は、環境パラメータ１７１に基づいてシミュレーション難易度を示す難易度係数を算出する。
【０１１５】
学習コントローラ１２０は、履歴関係管理情報１２３にエントリを追加し、追加されたエントリのノードＩＤ６０１に識別情報を設定し、親ノードＩＤ６０２にポインタに設定されたノードの識別情報を設定し、難易度係数６０４に難易度係数を設定する。
【０１１６】
学習コントローラ１２０は、ポインタに設定されたノードの識別情報に対応するエントリの子ノードＩＤ６０３に、追加されたエントリのノードＩＤ６０１に設定された識別情報を設定する。以上がステップＳ２０８の処理の説明である。
【０１１７】
次に、学習コントローラ１２０は、サブプロセスコントローラ１３０に新規モデルパラメータを出力する（ステップＳ２０９）。その後、学習コントローラ１２０は、待ち状態に移行し、処理を終了する。このとき、学習コントローラ１２０は、新規モデルパラメータとともに追加されたエントリのノードＩＤ６０１に設定された識別情報を出力する。
【０１１８】
シミュレーション難易度を変更しないと判定された場合、学習コントローラ１２０は、待ち状態に移行し、処理を終了する。
【０１１９】
ステップＳ２０５において、最適ポリシ通知を受信していないと判定された場合、学習コントローラ１２０は、継続指示を受信したか否かを判定する（ステップＳ２１１）。
【０１２０】
継続指示を受信したと判定された場合、学習コントローラ１２０は、履歴関係管理情報１２３を更新する（ステップＳ２１２）。
【０１２１】
具体的には、学習コントローラ１２０は、更新判定リストに登録されたノードに対応するエントリを特定し、特定されたエントリの探索フラグ６０５に「ＯＦＦ」を設定する。
【０１２２】
次に、学習コントローラ１２０は、総学習回数が上限回数以下であるか否かを判定する（ステップＳ２１３）。すなわち、現在のモデルパラメータに基づいて強化学習を継続するか否かが判定される。
【０１２３】
総学習回数が上限回数より大きいと判定された場合、学習コントローラ１２０は、待ち状態に移行し、処理を終了する。
【０１２４】
総学習回数が上限回数以下であると判定された場合、学習コントローラ１２０は、前回の強化学習の学習結果を反映した更新モデルパラメータを算出する（ステップＳ２１４）。具体的には、以下のような処理が実行される。
【０１２５】
学習コントローラ１２０は、前回の強化学習の実行時のポリシ内部データ２４１を初期値として設定するためのエージェントパラメータ１７２を算出する。学習コントローラ１２０は、環境パラメータ１７１は前回の強化学習と同一のものを算出する。
【０１２６】
学習コントローラ１２０は、履歴関係管理情報１２３にエントリを追加し、追加されたエントリのノードＩＤ６０１に識別情報を設定し、親ノードＩＤ６０２にポインタに設定されたノードの識別情報を設定し、難易度係数６０４に前回の強化学習の難易度係数を設定する。
【０１２７】
学習コントローラ１２０は、ポインタに設定されたノードの識別情報に対応するエントリの子ノードＩＤ６０３に、追加されたエントリのノードＩＤ６０１に設定された識別情報を設定する。
【０１２８】
また、学習コントローラ１２０は、追加されたエントリのノードＩＤ６０１に設定された識別情報をポインタとして保持する。以上がステップＳ２１４の処理の説明である。
【０１２９】
次に、学習コントローラ１２０は、サブプロセスコントローラ１３０に更新モデルパラメータを出力する（ステップＳ２１５）。その後、学習コントローラ１２０は、待ち状態に移行し、処理を終了する。このとき、学習コントローラ１２０は、更新モデルパラメータとともに、追加されたエントリのノードＩＤ６０１に設定された識別情報を出力する。
【０１３０】
ステップＳ２１１において、継続指示を受信していないと判定された場合、学習コントローラ１２０は、履歴使用指示を受信したか否かを判定する（ステップＳ２１６）。
【０１３１】
履歴使用指示を受信したと判定された場合、学習コントローラ１２０は、履歴関係管理情報１２３を更新する（ステップＳ２１７）。
【０１３２】
具体的には、学習コントローラ１２０は、更新判定リストを参照して、除外フラグが付与されていないノードに対応するエントリの探索フラグ６０５に「ＯＮ」を設定し、除外フラグが付与されたノードに対応するエントリの探索フラグ６０５に「ＯＦＦ」を設定する。
【０１３３】
次に、学習コントローラ１２０は、使用する学習履歴を選択するためのノード選択処理を実行する（ステップＳ２１８）。具体的には、以下のような処理が実行される。
【０１３４】
学習コントローラ１２０は、履歴関係管理情報１２３を参照して、ポインタに設定されたノードの識別情報に対応するエントリを特定する。学習コントローラ１２０は、特定されたエントリを基準として設定し、選択方式３０７に設定された探索方式にしたがってノードを選択する。学習コントローラ１２０は、選択されたノードの識別情報をポインタとして保持する。
【０１３５】
例えば、選択方式３０７が「深さ優先」である場合、学習コントローラ１２０は、難易度係数６０４が特定されたノードの難易度係数と一致するノードを選択する。なお、探索フラグ６０５が「ＯＦＦ」及び空欄であるノードは検索対象から除外される。該当するノードが複数存在する場合、学習コントローラ１２０は、履歴ＤＢ１５０を参照して、履歴ＩＤ８０１が特定されたノードの識別情報と一致するエントリを検索する。学習コントローラ１２０は、累積報酬が最も大きいエントリに対応するノードを選択する。
【０１３６】
他の選択方法としては、学習コントローラ１２０は、親ノードが、ポインタに対応するノードの親ノードに一致するノード、又は、累積報酬が最も大きいノードを選択する。実施例１では、学習履歴に環境パラメータ１７１が含まれているため、難易度が異なるシミュレーションを実行することができる。
【０１３７】
学習コントローラ１２０は、履歴関係管理情報１２３にエントリを追加し、追加されたエントリのノードＩＤ６０１に識別情報を設定し、親ノードＩＤ６０２にポインタに設定されたノードの識別情報を設定し、難易度係数６０４に難易度係数を設定する。難易度係数６０４には、ポインタ更新前のノードの難易度係数と同一の値が設定される。
【０１３８】
学習コントローラ１２０は、履歴関係管理情報１２３を参照し、ポインタに設定されたノードの識別情報に対応するエントリの子ノードＩＤ６０３に、追加されたエントリのノードＩＤ６０１に設定された識別情報を設定する。以上がステップＳ２１８の処理の説明である。
【０１３９】
次に、学習コントローラ１２０は、履歴ＤＢ１５０を参照して、選択されたノードに対応するエントリを検索し、検索されたエントリに基づいてモデルパラメータを算出し、復元モデルパラメータとしてサブプロセスコントローラ１３０に出力する（ステップＳ２１９）。その後、学習コントローラ１２０は、待ち状態に移行し、処理を終了する。このとき、学習コントローラ１２０は、復元モデルパラメータとともに、追加されたエントリのノードＩＤ６０１に設定された識別情報を出力する。具体的には、以下のような処理が実行される。
【０１４０】
学習コントローラ１２０は、学習履歴に含まれるポリシ内部変数を反映したエージェントパラメータ１７２を算出する。例えば、ポリシ内部変数５０１に学習履歴に含まれるポリシ内部変数が設定されたエージェントパラメータ１７２が算出される。
【０１４１】
学習コントローラ１２０は、現在のシミュレーションと学習履歴に対応するシミュレーションの難易度が同一である場合、現在の環境パラメータ１７１をそのまま用いる。現在のシミュレーションと学習履歴に対応するシミュレーションの難易度が異なる場合、学習コントローラ１２０は、学習履歴に含まれる環境パラメータ１７１を反映した環境パラメータ１７１を算出する。
【０１４２】
すなわち、現在のシミュレーションと学習履歴に対応するシミュレーションの難易度が同一である場合、エージェントパラメータ１７２が異なるモデルパラメータが算出される。現在のシミュレーションと学習履歴に対応するシミュレーションの難易度が異なる場合、環境パラメータ１７１及びエージェントパラメータ１７２が異なるモデルパラメータが算出される。
【０１４３】
なお、学習履歴に環境パラメータ１７１が含まれない場合、環境パラメータ１７１は現在のものを算出する。以上がステップＳ２１９の処理の説明である。
【０１４４】
ステップＳ２１６において、継続指示を受信していないと判定された場合、すなわち、履歴更新通知を受信したと判定された場合、学習コントローラ１２０は、履歴関係管理情報１２３を更新する（ステップＳ２２０）。具体的には、以下のような処理が実行される。
【０１４５】
学習コントローラ１２０は、履歴関係管理情報１２３にエントリを追加し、追加されたエントリのノードＩＤ６０１に識別情報を設定し、親ノードＩＤ６０２にポインタに設定されたノードの識別情報を設定し、難易度係数６０４に実行中の強化学習の難易度係数を設定する。
【０１４６】
学習コントローラ１２０は、履歴関係管理情報１２３を参照し、ポイントに設定されたノードの識別情報に対応するエントリの子ノードＩＤ６０３に、追加されたエントリのノードＩＤ６０１に設定された識別情報を設定する。
【０１４７】
学習コントローラ１２０は、追加されたエントリのノードＩＤ６０１に設定された識別情報をサブプロセスコントローラ１３０に出力する。以上がステップＳ２２０の処理の説明である。
【０１４８】
次に、学習コントローラ１２０は、総学習回数に、履歴更新通知に含まれる学習回数を加算する（ステップＳ２２１）。その後、学習コントローラ１２０は、待ち状態に移行し、処理を終了する。
【０１４９】
なお、学習コントローラ１２０は、周期的に、履歴関係管理情報１２３を参照し、探索フラグ６０５に「ＯＦＦ」が設定されるエントリを削除し、また、履歴ＤＢ１５０から対応するエントリを削除しててもよい。
【０１５０】
図１１は、実施例１のサブプロセスコントローラ１３０が実行する処理を説明するフローチャートである。サブプロセスコントローラ１３０は、学習コントローラ１２０からモデルパラメータを受信した場合、以下で説明する処理を実行する。
【０１５１】
サブプロセスコントローラ１３０は、受信したモデルパラメータに基づいて、環境モジュール１３１及びエージェントモジュール１３２を構築する（ステップＳ３０１）。
【０１５２】
サブプロセスコントローラ１３０は、環境モジュール１３１及びエージェントモジュール１３２を用いてシミュレーションを実行する（ステップＳ３０２）。シミュレーションでは、現在の状態の取得、行動の選択、及び状態の更新が行われる。実施例１では、一回のシミュレーション毎にポリシが更新される。なお、サブプロセスコントローラ１３０（オプティマイザ２３０）は、学習終了条件が満たされた場合に、ポリシを更新してもよい。
【０１５３】
サブプロセスコントローラ１３０は、保存条件を満たすか否かを判定する（ステップＳ３０３）。
【０１５４】
例えば、サブプロセスコントローラ１３０は、学習終了条件を満たす場合、又は、シミュレーションの実行回数が学習回数３０２の値と一致する場合、保存条件を満たすと判定する。また、ポリシ内部データ２４１が更新された場合、保存条件を満たすと判定されてもよい。
【０１５５】
保存条件を満たさないと判定された場合、サブプロセスコントローラ１３０は、ステップＳ３０６に進む。
【０１５６】
保存条件を満たすと判定された場合、サブプロセスコントローラ１３０は、履歴ＤＢ１５０にモデルパラメータ及び学習結果を格納する（ステップＳ３０４）。
【０１５７】
具体的には、サブプロセスコントローラ１３０は、履歴ＤＢ１５０にエントリを追加する。サブプロセスコントローラ１３０は、追加されたエントリの履歴ＩＤ８０１に、学習コントローラ１２０から通知されたノードの識別情報を設定する。これによって、履歴ＤＢ１５０のエントリ及び履歴関係管理情報１２３のエントリが関連づけられる。また、サブプロセスコントローラ１３０は、ノードの識別情報を更新判定リストに登録する。
【０１５８】
次に、サブプロセスコントローラ１３０は、学習コントローラ１２０に履歴更新通知を出力する（ステップＳ３０５）。サブプロセスコントローラ１３０は、学習コントローラ１２０からノードの識別情報が入力されるまで待ち状態に移行する。ノードの識別情報が入力された場合、サブプロセスコントローラ１３０はステップＳ３０６に進む。
【０１５９】
次に、サブプロセスコントローラ１３０は、学習終了条件を満たすか否かを判定する（ステップＳ３０６）。
【０１６０】
例えば、サブプロセスコントローラ１３０は、シミュレーションの実行回数が学習回数３０２の値と一致する場合、又は、更新後の状態が終了状態に一致する場合、学習終了条件を満たすと判定する。
【０１６１】
学習終了条件を満たさないと判定された場合、サブプロセスコントローラ１３０は、ステップＳ３０２に戻る。
【０１６２】
学習終了条件を満たすと判定された場合、サブプロセスコントローラ１３０は、スコア判定モジュール１４０にスコア判定要求を出力する（ステップＳ３０７）。その後、サブプロセスコントローラ１３０は、処理を終了する。なお、スコア判定要求には更新判定リストが含まれる。
【０１６３】
図１２は、実施例１のスコア判定モジュール１４０が実行する処理を説明するフローチャートである。スコア判定モジュール１４０は、サブプロセスコントローラ１３０からスコア判定要求を受信した場合、以下で説明する処理を実行する。
【０１６４】
スコア判定モジュール１４０は、更新判定リストのループ処理を開始する（ステップＳ４０１）。
【０１６５】
具体的には、スコア判定モジュール１４０は、更新判定リストに登録されたノードの中からターゲットノードを選択する。
【０１６６】
次に、スコア判定モジュール１４０は、スコア判定モジュール１４０内に環境モジュール１３１及びエージェントモジュール１３２を構築する（ステップＳ４０２）。
【０１６７】
具体的には、スコア判定モジュール１４０は、ターゲットノードの識別情報に基づいて履歴ＤＢ１５０を参照して、環境モジュール１３１のパラメータ及びエージェントモジュール１３２のパラメータを取得する。スコア判定モジュール１４０は、取得した各パラメータを用いて環境モジュール１３１及びエージェントモジュール１３２を構築する。
【０１６８】
次に、スコア判定モジュール１４０は、環境モジュール１３１及びエージェントモジュール１３２を用いたシミュレーションを実行することによって評価値を算出する（ステップＳ４０３）。
【０１６９】
具体的には、スコア判定モジュール１４０は、終了条件が満たされるまでシミュレーションを繰り返し実行して、累積報酬を算出する。なお、当該シミュレーションでは、ポリシの更新が行われないように制御される。
【０１７０】
次に、スコア判定モジュール１４０は、累積報酬が閾値より大きいか否かを判定する（ステップＳ４０４）。
【０１７１】
なお、複数の種類の評価値が設定されている場合、スコア判定モジュール１４０は、評価値の組合せから定義される判定基準を満たすか否かを判定する。
【０１７２】
累積報酬が閾値より大きいと判定された場合、スコア判定モジュール１４０は、学習結果ＤＢ１６０を更新し（ステップＳ４０５）、その後、ステップＳ４０７に進む。
【０１７３】
具体的には、スコア判定モジュール１４０は、学習結果ＤＢ１６０にエントリを追加し、追加されたエントリの結果ＩＤ７０１に識別情報を設定する。スコア判定モジュール１４０は、追加されたエントリのポリシ内部変数７０２にエージェントモジュール１３２のパラメータとして取得したポリシ内部データ２４１を設定し、当該エントリの累積報酬７０３に算出された累積報酬を設定する。
【０１７４】
累積報酬が閾値以下であると判定された場合、スコア判定モジュール１４０は、ターゲットノードに除外フラグを付与し（ステップＳ４０６）、その後、ステップＳ４０７に進む。
【０１７５】
ステップＳ４０７では、スコア判定モジュール１４０は、更新判定リストに登録された全てのノードについて処理が完了したか否かを判定する（ステップＳ４０７）。
【０１７６】
更新判定リストに登録された全てのノードについて処理が完了していないと判定された場合、スコア判定モジュール１４０は、ステップＳ４０１に戻り、新たなターゲットノードを選択する。
【０１７７】
更新判定リストに登録された全てのノードについて処理が完了したと判定された場合、スコア判定モジュール１４０は、最適ポリシが存在するか否かを判定する（ステップＳ４０８）。
【０１７８】
具体的には、スコア判定モジュール１４０は、更新判定リストに登録されたノードの中に除外フラグが付与されていないノードが存在するか否かを判定する。更新判定リストに登録されたノードの中に除外フラグが付与されていないノードが存在する場合、スコア判定モジュール１４０は、最適ポリシが存在すると判定する。
【０１７９】
最適ポリシが存在すると判定された場合、スコア判定モジュール１４０は、学習コントローラ１２０に最適ポリシ通知を出力する（ステップＳ４０９）。その後、スコア判定モジュール１４０は処理を終了する。最適ポリシ通知には更新判定リストが含まれる。
【０１８０】
最適ポリシが存在しないと判定された場合、スコア判定モジュール１４０は、使用条件を満たすか否かを判定する（ステップＳ４１０）。
【０１８１】
例えば、累積報酬の上昇率が閾値より小さい場合、又は、各学習結果（ノード）の累積報酬が閾値より小さい場合、スコア判定モジュール１４０は、使用条件を満たすと判定する。
【０１８２】
実施例１では、強化学習を継続しても最適ポリシが算出される見込みが低い場合、又は、過学習が発生した場合、現在のモデルパラメータに基づく強化学習の実行を中止して、新たなモデルパラメータに基づく強化学習を開始する。
【０１８３】
使用条件を満たすと判定された場合、スコア判定モジュール１４０は、学習コントローラ１２０に履歴使用指示を出力する（ステップＳ４１１）。その後、スコア判定モジュール１４０は処理を終了する。履歴使用指示には更新判定リストが含まれる。
【０１８４】
使用条件を満たさないと判定された場合、スコア判定モジュール１４０は、学習コントローラ１２０に継続指示を出力する（ステップＳ４１２）。その後、スコア判定モジュール１４０は処理を終了する。継続指示には更新判定リストが含まれる。
【０１８５】
図１３及び図１４は、実施例１の計算機１００によって表示されるＧＵＩの一例を示す図である。図１３は、ユーザが強化学習の各種設定を行うために提示されるＧＵＩ１３００を示す。図１４は、ユーザが学習の推移を確認するために提示されるＧＵＩ１４００を示す。
【０１８６】
ＧＵＩ１３００は、学習形態欄１３０１、学習回数欄１３０２、上限回数欄１３０３、遷移条件欄１３０４、提示情報欄１３０５、保存対象欄１３０６、選択方式欄１３０７、及び設定ボタン１３０８を含む。
【０１８７】
学習形態欄１３０１は、学習形態を選択する欄である。実施例１では、「Ｏｎ−Ｐｏｌｉｃｙ」及び「Ｏｆｆ−Ｐｏｌｉｃｙ」等を選択するためのドロップダウンリストが提示される。
【０１８８】
学習回数欄１３０２は、学習回数を設定する欄である。上限回数欄１３０３は、上限回数を設定する欄である。
【０１８９】
遷移条件欄１３０４は、シミュレーションの難易度の調整方法を設定するための欄である。
【０１９０】
提示情報欄１３０５は、強化学習の結果として出力する情報を設定する欄である。実施例１では、ポリシ及び行動等を選択するためのドロップダウンリストが提示される。
【０１９１】
保存対象欄１３０６は、保存対象を設定する欄である。保存対象欄１３０６のボックスは必要に応じて追加又は削除できる。
【０１９２】
選択方式欄１３０７は、使用する学習履歴の選択方式を設定する欄である。
【０１９３】
設定ボタン１３０８は、各欄の値を計算機１００に設定するためのボタンである。ユーザが当該ボタンを操作した場合、各欄の値を含む学習条件パラメータ情報１７０が計算機１００に入力される。
【０１９４】
ＧＵＩ１４００は、表示ボタン１４０１、設定ボタン１４０２、履歴関係表示欄１４０３、詳細表示欄１４０４を含む。
【０１９５】
表示ボタン１４０１は、履歴関係表示欄１４０３を表示するためのボタンである。設定ボタン１４０２は、履歴関係表示欄１４０３に対する操作結果を計算機１００に反映させるためのボタンである。
【０１９６】
履歴関係表示欄１４０３は、難易度係数１４１１及び履歴構造１４１２から構成される。難易度係数１４１１は、難易度係数を表示する。履歴構造１４１２には、履歴関係管理情報１２３のノード間の接続関係を示すグラフが表示される。図１４に示すように、難易度係数毎に層を形成するグラフが表示される。黒丸は探索フラグ６０５が「ＯＦＦ」である。点線の丸は学習結果が格納されていないノードを示す。
【０１９７】
詳細表示欄１４０４は、ノードに対応する学習結果を表示する欄である。ユーザが履歴構造１４１２のノードにカーソルを合わせた場合、詳細表示欄１４０４に当該ノードに対応する学習結果が表示される。
【０１９８】
ユーザは、詳細表示欄１４０４を用いて、選択対象として選択するノード及び選択対象とするノードを選択することができる。ユーザは、前述の操作を行った後、設定ボタン１４０２を操作した場合、履歴関係管理情報１２３の探索フラグ６０５の値が更新される。
【０１９９】
（変形例）
図１５は、実施例１のシステムの構成の変形例を示す図である。
【０２００】
システムは、計算機１５００、複数の計算機１５１０、計算機１５２０、及び端末１５３０から構成される。計算機１５００、計算機１５１０、計算機１５２０はネットワーク１５５０を介して互いに接続される。また、計算機１５００及び端末１５３０は、直接、又は、ネットワークを介して接続される。
【０２０１】
計算機１５００は学習コントローラ１２０を有し、計算機１５１０はサブプロセスコントローラ１３０及び履歴ＤＢ１５０を有し、計算機１５２０はスコア判定モジュール１４０及び学習結果ＤＢ１６０を有する。本システムでは、複数の計算機１５１０が、並列に強化学習を並列実行する。
【０２０２】
学習コントローラ１２０は、計算機１５１０毎に履歴関係管理情報１２３を保持する。また、学習結果ＤＢ１６０には、計算機１５１０の識別情報を格納するフィールドが追加される。
【０２０３】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【０２０４】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０２０５】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ（登録商標）等の広範囲のプログラム又はスクリプト言語で実装できる。
【０２０６】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【０２０７】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【０２０８】
１００  計算機
１０１  端末
１１０  プロセッサ
１１１  メモリ
１１２  ネットワークインタフェース
１２０  学習コントローラ
１２１  環境ロールバックコントローラ
１２２  ポリシルールバックコントローラ
１２３  履歴関係管理情報
１３０  サブプロセスコントローラ
１３１  環境モジュール
１３２  エージェントモジュール
１４０  スコア判定モジュール
１５０  履歴ＤＢ
１６０  学習結果ＤＢ
１７０  学習条件パラメータ情報
１７１  環境パラメータ
１７２  エージェントパラメータ
２００  環境モジュール
２０１  エージェントモジュール
２１０  環境制御モジュール
２１１  シミュレーション管理モジュール
２１２  環境状態
２２０  報酬算出モジュール
２３０  オプティマイザ
２３１  更新用データ
２３２  オプティマイザ内部データ
２３４  オプティマイザ内部データ
２４０  ポリシコントローラ
２４１  ポリシ内部データ
２５０  状態
２５１  報酬
２５２  行動
２５３  状態確認フラグ
１３００、１４００  ＧＵＩ
【図１】
2019219741.tif 000003
【図２】
2019219741.tif 000004
【図３】
2019219741.tif 000005
【図４】
2019219741.tif 000006
【図５】
2019219741.tif 000007
【図６】
2019219741.tif 000008
【図７】
2019219741.tif 000009
【図８】
2019219741.tif 000010
【図９】
2019219741.tif 000011
【図１０Ａ】
2019219741.tif 000012
【図１０Ｂ】
2019219741.tif 000013
【図１１】
2019219741.tif 000014
【図１２】
2019219741.tif 000015
【図１３】
2019219741.tif 000016
【図１４】
2019219741.tif 000017
【図１５】
2019219741.tif 000018