以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
図面等において示す各構成の位置、大きさ、形状、及び範囲等は、発明の理解を容易にするため、実際の位置、大きさ、形状、及び範囲等を表していない場合がある。したがって、本発明では、図面等に開示された位置、大きさ、形状、及び範囲等に限定されない。
本明細書では、機械学習の一つである強化学習を一例として発明を説明する。強化学習では、環境及びエージェントを用いたシミュレーションを実行することによって、目的とする結果が取得される。
図1は、実施例1のシステムの構成例を示す図である。
システムは、計算機100及び端末101から構成される。計算機100及び端末101は、ネットワークを介して互いに接続される。ネットワークは、例えば、LAN(Local Area Network)及びWAN(Wide Area Network)等が考えられる。ネットワークの接続方式は無線及び有線のいずれでもよい。なお、計算機100及び端末101は直接接続されてもよい。
端末101は、ユーザが操作する端末である。端末101は、プロセッサ、メモリ、及びネットワークインタフェースを有する汎用計算機又は携帯端末等である。
ユーザは、端末101を用いて、強化学習を実行に必要なパラメータ、すなわち、学習条件パラメータを設定し、当該パラメータを格納する学習条件パラメータ情報170を計算機100に入力する。また、ユーザは、端末101を用いて、計算機100から出力される情報を確認する。学習条件パラメータ情報170のデータ構造については図3を用いて説明する。
計算機100は、学習条件パラメータ情報170に基づいて、任意の対象を制御するための処理に関する強化学習を実行する。例えば、クレーンを用いた荷物の搬入作業の最適な処理手順又は処理内容を選択するためのポリシを探索するための強化学習が実行される。なお、本発明は、学習の対象及び学習内容等に限定されない。
計算機100は、ハードウェアとして、プロセッサ110、メモリ111、及びネットワークインタフェース112を有する。なお、計算機100は、入力装置及び出力装置と接続するIOインタフェース、並びに、HDD(Hard Disk Drive)及びSSD(Solid State Drive)等の記憶媒体を有してもよい。
プロセッサ110は、メモリ111に格納されるプログラムを実行する。プロセッサ110がプログラムにしたがって処理を実行することによって、特定の機能を実現するモジュールとして動作する。以下の説明では、モジュールを主語に処理を説明する場合、プロセッサ110が当該モジュールを実現するプログラムを実行していることを示す。
メモリ111は、プロセッサ110が実行するプログラム及びプログラムが使用する情報を格納する。また、メモリ111は、プログラムが一時的に使用するワークエリアを含む。
ネットワークインタフェース112は、ネットワークを介して他の装置と接続するためのインタフェースである。
ここで、メモリ111に格納されるプログラム及び情報について説明する。メモリ111は、学習コントローラ120、サブプロセスコントローラ130、及びスコア判定モジュール140を実現するプログラムを格納する。また、メモリ111は、履歴DB150及び学習結果DB160を格納する。
サブプロセスコントローラ130は、強化学習を実行する。具体的には、サブプロセスコントローラ130は、環境パラメータ171に基づいて構築される環境モジュール131、及び、エージェントパラメータ172に基づいて構築されるエージェントモジュール132を用いたシミュレーションを繰り返し実行する。
実施例1では、サブプロセスコントローラ130は、目的のシミュレーションの難易度より難易度が低いシミュレーションを実現する環境に対応する環境モジュール131を用いて、シミュレーションを実行する。所望の学習結果が得られた場合、サブプロセスコントローラ130は、現在のシミュレーションの難易度を変更した環境に対応する環境モジュール131及び学習結果を用いたシミュレーションを実行する。前述のような難易度に応じた強化学習の遷移によって、目的の難易度の環境モジュール131を用いたシミュレーションの演算を高速化する。
学習コントローラ120は強化学習を制御する。学習コントローラ120には、対象に関するシミュレーションを行うための学習モデルが設定される。学習モデルは、環境のモデル及びエージェントのモデルを含む。学習コントローラ120は、学習条件パラメータ情報170及び学習モデルに基づいて、環境パラメータ171及びエージェントパラメータ172を生成し、サブプロセスコントローラに各パラメータを出力する。以下の説明では、環境パラメータ171及びエージェントパラメータ172を区別しない場合、モデルパラメータと記載する。
実施例1のサブプロセスコントローラ130は、任意のタイミングで、現在実行しているシミュレーションのモデルパラメータ及び学習結果(学習済のポリシ)を学習履歴として履歴DB150に格納する。また、サブプロセスコントローラ130は、任意のタイミングで学習結果の評価をスコア判定モジュール140に依頼する。なお、学習履歴に含めるデータは任意に設定できる。例えば、ポリシ内部データ241のみを学習履歴として保存してもよい。
なお、環境パラメータ171のデータ構造は図4を用いて説明し、エージェントパラメータ172のデータ構造は図5を用いて説明する。
学習コントローラ120は、学習履歴を反映した環境モジュール131及びエージェントモジュール132を復元する環境ロールバックコントローラ121及びポリシルールバックコントローラ122を有する。学習コントローラ120は、使用する学習履歴を選択するための履歴関係管理情報123を管理する。また、学習コントローラ120は、任意のシミュレーション難易度の強化学習の実行回数の合計値を管理する。
学習コントローラ120は、学習条件パラメータ情報170を受信した場合、最もシミュレーションの難易度が低い環境を実現する環境パラメータ171を算出する。学習コントローラ120は、所望の学習結果が得られた場合、現在のシミュレーションの難易度より難易度が高いシミュレーションを実現するための環境パラメータ171を算出する。
なお、学習コントローラ120は、目的とする環境を実現するためのパラメータに含まれる一部のパラメータの値を変更した環境パラメータ171を算出し、又は、目的とする環境を実現するためのパラメータに含まれる一部のパラメータを含まない環境パラメータ171を算出することによって、シミュレーションの難易度を変更できる。
スコア判定モジュール140は、学習結果を評価する。スコア判定モジュール140は、最適なポリシが算出されたと判定した場合、学習結果DB160に学習結果を格納する。また、スコア判定モジュール140は、学習結果の評価に基づいてく、強化学習の実行計画を決定し、実行計画に基づく指示を学習コントローラ120に出力する。
図2は、実施例1のサブプロセスコントローラ130の構成例を示す図である。
環境パラメータ171に基づいて構築される環境モジュール131は、環境制御モジュール210及び報酬算出モジュール220を含む。
環境制御モジュール210は、強化学習における環境の状態を管理し、また、状態の遷移をシミュレーションする。環境制御モジュール210は、シミュレーション管理モジュール211を有し、また、内部パラメータとして環境状態212を保持する。
環境状態212は、現在の環境の状態を示すパラメータである。シミュレーション管理モジュール211は、エージェントモジュール132から出力される行動252に基づいて、状態の遷移をシミュレーションする。
報酬算出モジュール220は、状態250に基づいて報酬251を算出し、エージェントモジュール132に出力する。
エージェントパラメータ172に基づいて構築されるエージェントモジュール132は、オプティマイザ230及びポリシコントローラ240を含む。
ポリシコントローラ240は、ポリシを対応するポリシ内部データ241を保持する。オプティマイザ230は、ポリシを更新するための更新用データ231及びオプティマイザ内部データ232を保持する。更新用データ231は、状態パラメータ、報酬パラメータ、及び行動パラメータから構成されるデータを格納する。
ここで、サブプロセスコントローラ130の内部の動作について説明する。
環境モジュール131は、状態確認フラグ253又は行動252を受信するまで待ち状態となる。
状態確認フラグ253を受信した場合、環境モジュール131の環境制御モジュール210は、環境状態212に設定された状態250をエージェントモジュール132に出力する。このとき、報酬251を示すデータは出力されない。
なお、環境モジュール131は、状態250とともに「0」に対応する報酬251をエージェントモジュール132に出力してもよい。この場合、報酬算出モジュール220が環境制御モジュール210から出力された状態250に基づいて「0」を算出する。
行動252を受信した場合、環境モジュール131の環境制御モジュール210は、行動252及び環境状態212をシミュレーション管理モジュール211に入力してシミュレーションを実行し、状態250を算出する。環境制御モジュール210は、環境状態212に算出された状態250を設定し、また、報酬算出モジュール220に算出された状態250を出力する。
環境モジュール131の報酬算出モジュール220は、状態250を入力とする所定の演算方法に基づいて報酬251を算出する。演算方法は、例えば、学習条件パラメータに含まれる。
環境モジュール131は、状態250及び報酬251をエージェントモジュール132に出力する。
エージェントモジュール132は、まず、環境モジュール131に状態確認フラグ253を出力する。エージェントモジュール132は、環境モジュール131から状態確認フラグ253に対する応答として状態250を受信する。このとき、エージェントモジュール132のオプティマイザ230は、更新用データ231に初期値を設定する。具体的には、オプティマイザ230は、状態パラメータが受信した状態250、行動パラメータが「なし」、及び報酬パラメータが「報酬なし」であるデータを更新用データ231に追加する。
エージェントモジュール132のポリシコントローラ240は、状態250及びポリシ内部データ241に基づいて行動252を選択し、環境モジュール131に行動252を出力する。エージェントモジュール132のオプティマイザ230は、環境モジュール131から行動252に対する応答として状態250及び報酬251を受信した場合、更新用データ231を更新する。具体的には、オプティマイザ230は、状態パラメータが受信した状態250、行動パラメータが出力した行動252、報酬パラメータが受信した報酬251であるデータを更新用データ231に追加する。
オプティマイザ230は、ポリシ内部データ241を更新する必要があるか否かを判定する。例えば、オプティマイザ230は、状態250を受信した場合、ポリシ内部データ241を更新する必要があると判定する。なお、オプティマイザ230は、状態250を受信する度に、ポリシ内部データ241を更新する必要があると判定してもよいし、一定の回数、状態250を受信した場合に、ポリシ内部データ241を更新する必要があると判定してもよい。
ポリシ内部データ241を更新する必要があると判定された場合、オプティマイザ230は、更新用データ231に基づいて、オプティマイザ内部データ232を更新する。また、オプティマイザ230は、更新されたオプティマイザ内部データ232に基づいてポリシ内部データ241を更新する。
実施例1のサブプロセスコントローラ130は、強化学習におけるシミュレーションの実行中に、学習履歴を保存するか否かを判定する。履歴DB150に学習履歴を保存すると判定された場合、サブプロセスコントローラ130は、履歴DB150に環境モジュール131及びエージェントモジュール132が保持する内部パラメータ等を学習履歴として履歴DB150に格納する。
なお、計算機が有する各モジュールについては、複数のモジュールを一つのモジュールにまとめてもよいし、一つのモジュールを機能毎に複数のモジュールに分けてもよい。例えば、サブプロセスコントローラ130にスコア判定モジュール140を含めるようにしてもよい。
図3は、実施例1の学習条件パラメータ情報170のデータ構造の一例を示す図である。
学習条件パラメータ情報170は、学習形態301、学習回数302、上限回数303、遷移条件304、提示情報305、保存条件306、及び選択方式307から構成される。
学習形態301は、強化学習の学習方式を示す値を格納するフィールドである。学習回数302は、ポリシを保存するタイミングを示す強化学習の実行回数を格納するフィールドである。上限回数303は、任意のシミュレーション難易度の強化学習の実行回数の上限値を格納するフィールドである。遷移条件304は、シミュレーションの難易度を調整するための情報を格納するフィールドである。提示情報305は、強化学習の処理結果として出力する情報を指定する値を格納するフィールドである。保存条件306は、履歴DB150に格納するデータを指定する値を格納するフィールドである。選択方式307は、利用する学習履歴の選択方式を格納するフィールドである。
なお、学習条件パラメータ情報170には、評価値の定義を設定するフィールドが含まれてもよい。
図4は、実施例1の環境パラメータ171のデータ構造の一例を示す図である。
環境パラメータ171は、タイムステップ401、関係式402、方程式403、状態404、及び報酬405から構成される。
タイムステップ401は、状態の遷移間隔を指定する値を格納するフィールドである。関係式402及び方程式403は、数式等、環境を定義する情報を格納するフィールドである。状態404は、環境の状態を定義する情報を格納するフィールドである。報酬405は、数式等、報酬の算出方法を定義する情報を格納するフィールドである。
図5は、実施例1のエージェントパラメータ172のデータ構造の一例を示す図である。
エージェントパラメータ172は、ポリシ内部変数501及びオプティマイザ内部変数502から構成される。
ポリシ内部変数501は、ポリシ内部データ241に設定する変数の値を格納するフィールドである。オプティマイザ内部変数502は、オプティマイザ内部データ232に設定する変数の値を格納するフィールドである。
図5に示すポリシ内部変数501には、ポリシに対応するニューラルネットワークの重みの係数が格納される。オプティマイザ内部変数502には、勾配法のパラメータα及びβと、更新頻度を制御するパラメータηが格納される。
図6は、実施例1の履歴関係管理情報123のデータ構造の一例を示す図である。
履歴関係管理情報123は、学習履歴の関係を木構造として管理するためのデータであり、ノードID601、親ノードID602、子ノードID603、難易度係数604、及び探索フラグ605から構成されるエントリを含む。一つのエントリは一つの学習履歴に対応する。
ノードID601は、学習履歴に対応するノードの識別情報を格納するフィールドである。親ノードID602は、親ノードの識別情報を格納するフィールドである。子ノードID603は、子ノードの識別情報を格納するフィールドである。難易度係数604は、学習履歴を得るために実行されたシミュレーションの難易度を格納するフィールドである。探索フラグ605は、学習履歴が利用できるか否かを示すフラグを格納する。「ON」は学習履歴が利用できることを示し、「OFF」は学習履歴が利用できないことを示す。なお、空欄は判定が行われていないノードであることを示す。
図7は、実施例1の学習結果DB160のデータ構造の一例を示す図である。
学習結果DB160は、結果ID701、ポリシ内部変数702、及び累積報酬703から構成されるエントリを含む。一つのエントリは、任意の難易度の強化学習によって算出された最適な学習結果に対応する。
結果ID701は、学習結果DB160のエントリを識別するための識別情報を格納するフィールドである。ポリシ内部変数702は、学習結果として出力されるポリシ内部データ241を格納するフィールドである。累積報酬703は、学習結果を評価する評価値である累積報酬を格納するフィールドである。累積報酬は、過学習の発生の有無を判定する指標としても用いられる。なお、累積報酬以外にも、重要業績評価指標(KPI)を評価値として用いることもできる。KPIは複数存在してもよい。
図8は、実施例1の履歴DB150のデータ構造の一例を示す図である。
履歴DB150は、履歴ID801、モデルパラメータ802、及び出力パラメータ803から構成されるエントリを含む。一つのエントリは、任意の難易度の強化学習の学習結果に対応する。
履歴ID801は、履歴DB150のエントリを識別するための識別情報を格納するフィールドである。モデルパラメータ802は、任意の難易度の強化学習を実行するために入力されたパラメータを格納するフィールド群である。モデルパラメータ802は、環境パラメータ811及びエージェントパラメータ812を含む。出力パラメータ803は、任意の難易度の強化学習を実行することによって算出された学習結果を格納するフィールド群である。出力パラメータ803は、ポリシ内部変数821及び累積報酬822を含む。
なお、エントリは学習条件等を格納するフィールドを含んでもよい。また、モデルパラメータ802は、環境パラメータのみを含んでもよい。
図9は、実施例1の計算機100が実行する処理の概要を説明するフローチャートである。
計算機100は、端末101から学習条件パラメータ情報170を受信した場合(ステップS101)、当該学習条件パラメータ情報170に基づいてモデルパラメータ(遷移モデルパラメータ)を設定し(ステップS102)、強化学習を実行する(ステップS103)。この時点では、計算機100は、シミュレーション難易度が最も低い環境を実現する環境パラメータ171を設定する。強化学習では、学習履歴の出力契機が検出された場合、履歴DB150に学習履歴が格納される。
計算機100は、任意のタイミングで、スコア判定処理を実行する(ステップS104)。
計算機100は、スコア判定処理の処理結果に基づいて、任意のシミュレーション難易度における最適ポリシが算出されたか否かを判定する(ステップS105)。ここで、最適ポリシとは、過学習又は学習効率の低迷が発生していない状態で算出されたポリシであって、報酬を最大化し、かつ、制約条件を満たすポリシを意味する。
最適ポリシが算出されていないと判定された場合、計算機100は、学習履歴を使用するか否かを判定する(ステップS106)。過学習又は学習効率の低迷の発生が原因で最適ポリシが算出されていないか否かが判定される。
学習履歴を使用しないと判定された場合、すなわち、現在のパラメータで学習を継続すると判定された場合、計算機100は、学習条件パラメータ情報170及び学習結果に基づいて新たなモデルパラメータを設定し(ステップS102)、強化学習を実行する(ステップS103)。
具体的には、モデルパラメータに含まれるエージェントパラメータ172には、前回の強化学習の実行時のポリシ内部データ241が設定される。
学習履歴を使用すると判定された場合、計算機100は、使用する学習履歴を選択し(ステップS107)、学習条件パラメータ情報170及び学習履歴に基づいて新たなモデルパラメータを設定し(ステップS102)、強化学習を実行する(ステップS103)。
例えば、計算機100は、学習履歴に含まれるポリシ内部変数を反映したエージェントパラメータ172を算出し、学習履歴に含まれる環境パラメータ171を反映した環境パラメータ171を算出する。例えば、ポリシ内部変数501に学習履歴に含まれるポリシ内部変数が設定されたエージェントパラメータ172が算出される。
なお、環境パラメータ171及びエージェントパラメータ172のいずれか一方にのみ学習履歴を反映してもよい。
ステップS105において最適ポリシが算出されたと判定された場合、計算機100は、シミュレーション難易度を変更するか否かを判定する(ステップS108)。
シミュレーション難易度を変更しないと判定された場合、計算機100は処理を終了する。これは、目標のシミュレーション難易度における最適ポリシが得られたことを示す。
シミュレーション難易度を変更すると判定された場合、計算機100は、シミュレーションの難易度を変更する(ステップS109)。
具体的には、計算機100は、前回の強化学習によって算出されたポリシに基づいてエージェントパラメータ172を算出し、さらに、難易度が高いシミュレーションを実現するための環境の環境パラメータ171を算出する。
その後、計算機100は、変更されたモデルパラメータを設定し(ステップS102)、強化学習を実行する(ステップS103)。
実施例1の強化学習アルゴリズムは、以下のような特徴を有する。
(特徴1)計算機100は、難易度が低いシミュレーションを実行し、難易度を変更したシミュレーションを実行する場合、難易度の変更前の強化学習から算出された学習結果に基づいて算出されたモデルパラメータを設定する。これによって、効率的な強化学習を実現でき、学習に要する時間を削減できる。
(特徴2)計算機100は、任意の難易度の強化学習において、前回の強化学習の学習結果を使用せずに、過去の強化学習の学習結果を使用して強化学習を再度実行する。これによって、累積報酬(評価値)の上昇が見込まれない強化学習の実行を抑止することができ、また、過学習が発生した場合の強化学習の継続を抑止することができる。
(特徴2)の処理を実現するために、計算機100は、任意のタイミングで、履歴DB150に学習履歴を保存する。
図10A及び図10Bは、実施例1の学習コントローラ120が実行する処理を説明するフローチャートである。学習コントローラ120は、外部入力を受け付けた場合、以下で説明する処理を実行する。なお、学習コントローラ120は、学習条件パラメータ情報170、最適ポリシ通知、継続指示、履歴使用指示、及び履歴更新通知のいずれかを外部入力として受け付ける。
学習コントローラ120は、学習条件パラメータ情報170を受信したか否かを判定する(ステップS201)。
学習条件パラメータ情報170を受信したと判定された場合、学習コントローラ120は、総学習回数及び履歴関係管理情報123を初期化する(ステップS202)。
具体的には、学習コントローラ120は、総学習回数を「0」に設定する。また、学習コントローラ120は、履歴関係管理情報123の全てのエントリを削除した後、一つのエントリを追加し、追加されたエントリのノードID601に「1」を設定する。
次に、学習コントローラ120は、学習条件パラメータ情報170に基づいて、初期モデルパラメータを算出する(ステップS203)。
ステップS203では、学習コントローラ120は、モデルパラメータの算出時に、シミュレーション難易度を示す難易度係数を算出する。学習コントローラ120は、履歴関係管理情報123を参照し、追加されたエントリの難易度係数604に算出された難易度係数を設定する。また、学習コントローラ120は、ルートノードの識別情報をポインタとして保持する。
次に、学習コントローラ120は、初期モデルパラメータをサブプロセスコントローラ130に出力する(ステップS204)。その後、学習コントローラ120は、待ち状態に移行し、処理を終了する。このとき、学習コントローラ120は、初期モデルパラメータとともに、追加されたエントリのノードID601に設定された識別情報を出力する。
ステップS201において、学習条件パラメータ情報170を受信していないと判定された場合、学習コントローラ120は、最適ポリシ通知を受信したか否かを判定する(ステップS205)。
最適ポリシ通知を受信したと判定された場合、学習コントローラ120は、最適ポリシ通知に含まれる更新判定リストに基づいて、履歴関係管理情報123を更新する(ステップS206)。更新判定リストはノードの識別情報のリストである。更新判定リストについては図12で説明する。
具体的には、学習コントローラ120は、更新判定リストを参照し、選択対象として除外されることを示す除外フラグが付与されていないノードに対応するエントリの探索フラグ605に「ON」を設定する。また、学習コントローラ120は、除外フラグが付与されたノードに対応するエントリの探索フラグ605に「OFF」を設定する。以下の説明では、更新判定リストに登録され、かつ、除外フラグが付与されていないノードを候補ノードと記載する。
次に、学習コントローラ120は、シミュレーション難易度を変更するか否かを判定する(ステップS207)。
例えば、学習コントローラ120は、前回出力した環境パラメータ171に含まれる一部の値が目標値に一致するか否かを判定する。
前回出力した環境パラメータ171に含まれる一部の値が目標値に一致しない場合、学習コントローラ120は、シミュレーション難易度を変更すると判定する。
シミュレーション難易度を変更すると判定された場合、学習コントローラ120は、シミュレーション難易度を変更した環境を実現するための新規モデルパラメータを算出する(ステップS208)。具体的には、以下のような処理が実行される。
学習コントローラ120は、候補ノードの中から一つのノードを選択する。ここでは、累積報酬が最も大きいノードが選択されるものとする。学習コントローラ120は、選択されたノードの識別情報をポインタとして保持する。
学習コントローラ120は、学習条件パラメータ情報170及び選択されたノードに対応する学習履歴に含まれる環境パラメータ171に基づいて、新たな環境パラメータ171を算出する。また、学習コントローラ120は、選択されたノードに対応する学習履歴に含まれるポリシ内部データに基づいて新たなエージェントパラメータ172を算出する。学習コントローラ120は、環境パラメータ171に基づいてシミュレーション難易度を示す難易度係数を算出する。
学習コントローラ120は、履歴関係管理情報123にエントリを追加し、追加されたエントリのノードID601に識別情報を設定し、親ノードID602にポインタに設定されたノードの識別情報を設定し、難易度係数604に難易度係数を設定する。
学習コントローラ120は、ポインタに設定されたノードの識別情報に対応するエントリの子ノードID603に、追加されたエントリのノードID601に設定された識別情報を設定する。以上がステップS208の処理の説明である。
次に、学習コントローラ120は、サブプロセスコントローラ130に新規モデルパラメータを出力する(ステップS209)。その後、学習コントローラ120は、待ち状態に移行し、処理を終了する。このとき、学習コントローラ120は、新規モデルパラメータとともに追加されたエントリのノードID601に設定された識別情報を出力する。
シミュレーション難易度を変更しないと判定された場合、学習コントローラ120は、待ち状態に移行し、処理を終了する。
ステップS205において、最適ポリシ通知を受信していないと判定された場合、学習コントローラ120は、継続指示を受信したか否かを判定する(ステップS211)。
継続指示を受信したと判定された場合、学習コントローラ120は、履歴関係管理情報123を更新する(ステップS212)。
具体的には、学習コントローラ120は、更新判定リストに登録されたノードに対応するエントリを特定し、特定されたエントリの探索フラグ605に「OFF」を設定する。
次に、学習コントローラ120は、総学習回数が上限回数以下であるか否かを判定する(ステップS213)。すなわち、現在のモデルパラメータに基づいて強化学習を継続するか否かが判定される。
総学習回数が上限回数より大きいと判定された場合、学習コントローラ120は、待ち状態に移行し、処理を終了する。
総学習回数が上限回数以下であると判定された場合、学習コントローラ120は、前回の強化学習の学習結果を反映した更新モデルパラメータを算出する(ステップS214)。具体的には、以下のような処理が実行される。
学習コントローラ120は、前回の強化学習の実行時のポリシ内部データ241を初期値として設定するためのエージェントパラメータ172を算出する。学習コントローラ120は、環境パラメータ171は前回の強化学習と同一のものを算出する。
学習コントローラ120は、履歴関係管理情報123にエントリを追加し、追加されたエントリのノードID601に識別情報を設定し、親ノードID602にポインタに設定されたノードの識別情報を設定し、難易度係数604に前回の強化学習の難易度係数を設定する。
学習コントローラ120は、ポインタに設定されたノードの識別情報に対応するエントリの子ノードID603に、追加されたエントリのノードID601に設定された識別情報を設定する。
また、学習コントローラ120は、追加されたエントリのノードID601に設定された識別情報をポインタとして保持する。以上がステップS214の処理の説明である。
次に、学習コントローラ120は、サブプロセスコントローラ130に更新モデルパラメータを出力する(ステップS215)。その後、学習コントローラ120は、待ち状態に移行し、処理を終了する。このとき、学習コントローラ120は、更新モデルパラメータとともに、追加されたエントリのノードID601に設定された識別情報を出力する。
ステップS211において、継続指示を受信していないと判定された場合、学習コントローラ120は、履歴使用指示を受信したか否かを判定する(ステップS216)。
履歴使用指示を受信したと判定された場合、学習コントローラ120は、履歴関係管理情報123を更新する(ステップS217)。
具体的には、学習コントローラ120は、更新判定リストを参照して、除外フラグが付与されていないノードに対応するエントリの探索フラグ605に「ON」を設定し、除外フラグが付与されたノードに対応するエントリの探索フラグ605に「OFF」を設定する。
次に、学習コントローラ120は、使用する学習履歴を選択するためのノード選択処理を実行する(ステップS218)。具体的には、以下のような処理が実行される。
学習コントローラ120は、履歴関係管理情報123を参照して、ポインタに設定されたノードの識別情報に対応するエントリを特定する。学習コントローラ120は、特定されたエントリを基準として設定し、選択方式307に設定された探索方式にしたがってノードを選択する。学習コントローラ120は、選択されたノードの識別情報をポインタとして保持する。
例えば、選択方式307が「深さ優先」である場合、学習コントローラ120は、難易度係数604が特定されたノードの難易度係数と一致するノードを選択する。なお、探索フラグ605が「OFF」及び空欄であるノードは検索対象から除外される。該当するノードが複数存在する場合、学習コントローラ120は、履歴DB150を参照して、履歴ID801が特定されたノードの識別情報と一致するエントリを検索する。学習コントローラ120は、累積報酬が最も大きいエントリに対応するノードを選択する。
他の選択方法としては、学習コントローラ120は、親ノードが、ポインタに対応するノードの親ノードに一致するノード、又は、累積報酬が最も大きいノードを選択する。実施例1では、学習履歴に環境パラメータ171が含まれているため、難易度が異なるシミュレーションを実行することができる。
学習コントローラ120は、履歴関係管理情報123にエントリを追加し、追加されたエントリのノードID601に識別情報を設定し、親ノードID602にポインタに設定されたノードの識別情報を設定し、難易度係数604に難易度係数を設定する。難易度係数604には、ポインタ更新前のノードの難易度係数と同一の値が設定される。
学習コントローラ120は、履歴関係管理情報123を参照し、ポインタに設定されたノードの識別情報に対応するエントリの子ノードID603に、追加されたエントリのノードID601に設定された識別情報を設定する。以上がステップS218の処理の説明である。
次に、学習コントローラ120は、履歴DB150を参照して、選択されたノードに対応するエントリを検索し、検索されたエントリに基づいてモデルパラメータを算出し、復元モデルパラメータとしてサブプロセスコントローラ130に出力する(ステップS219)。その後、学習コントローラ120は、待ち状態に移行し、処理を終了する。このとき、学習コントローラ120は、復元モデルパラメータとともに、追加されたエントリのノードID601に設定された識別情報を出力する。具体的には、以下のような処理が実行される。
学習コントローラ120は、学習履歴に含まれるポリシ内部変数を反映したエージェントパラメータ172を算出する。例えば、ポリシ内部変数501に学習履歴に含まれるポリシ内部変数が設定されたエージェントパラメータ172が算出される。
学習コントローラ120は、現在のシミュレーションと学習履歴に対応するシミュレーションの難易度が同一である場合、現在の環境パラメータ171をそのまま用いる。現在のシミュレーションと学習履歴に対応するシミュレーションの難易度が異なる場合、学習コントローラ120は、学習履歴に含まれる環境パラメータ171を反映した環境パラメータ171を算出する。
すなわち、現在のシミュレーションと学習履歴に対応するシミュレーションの難易度が同一である場合、エージェントパラメータ172が異なるモデルパラメータが算出される。現在のシミュレーションと学習履歴に対応するシミュレーションの難易度が異なる場合、環境パラメータ171及びエージェントパラメータ172が異なるモデルパラメータが算出される。
なお、学習履歴に環境パラメータ171が含まれない場合、環境パラメータ171は現在のものを算出する。以上がステップS219の処理の説明である。
ステップS216において、継続指示を受信していないと判定された場合、すなわち、履歴更新通知を受信したと判定された場合、学習コントローラ120は、履歴関係管理情報123を更新する(ステップS220)。具体的には、以下のような処理が実行される。
学習コントローラ120は、履歴関係管理情報123にエントリを追加し、追加されたエントリのノードID601に識別情報を設定し、親ノードID602にポインタに設定されたノードの識別情報を設定し、難易度係数604に実行中の強化学習の難易度係数を設定する。
学習コントローラ120は、履歴関係管理情報123を参照し、ポイントに設定されたノードの識別情報に対応するエントリの子ノードID603に、追加されたエントリのノードID601に設定された識別情報を設定する。
学習コントローラ120は、追加されたエントリのノードID601に設定された識別情報をサブプロセスコントローラ130に出力する。以上がステップS220の処理の説明である。
次に、学習コントローラ120は、総学習回数に、履歴更新通知に含まれる学習回数を加算する(ステップS221)。その後、学習コントローラ120は、待ち状態に移行し、処理を終了する。
なお、学習コントローラ120は、周期的に、履歴関係管理情報123を参照し、探索フラグ605に「OFF」が設定されるエントリを削除し、また、履歴DB150から対応するエントリを削除しててもよい。
図11は、実施例1のサブプロセスコントローラ130が実行する処理を説明するフローチャートである。サブプロセスコントローラ130は、学習コントローラ120からモデルパラメータを受信した場合、以下で説明する処理を実行する。
サブプロセスコントローラ130は、受信したモデルパラメータに基づいて、環境モジュール131及びエージェントモジュール132を構築する(ステップS301)。
サブプロセスコントローラ130は、環境モジュール131及びエージェントモジュール132を用いてシミュレーションを実行する(ステップS302)。シミュレーションでは、現在の状態の取得、行動の選択、及び状態の更新が行われる。実施例1では、一回のシミュレーション毎にポリシが更新される。なお、サブプロセスコントローラ130(オプティマイザ230)は、学習終了条件が満たされた場合に、ポリシを更新してもよい。
サブプロセスコントローラ130は、保存条件を満たすか否かを判定する(ステップS303)。
例えば、サブプロセスコントローラ130は、学習終了条件を満たす場合、又は、シミュレーションの実行回数が学習回数302の値と一致する場合、保存条件を満たすと判定する。また、ポリシ内部データ241が更新された場合、保存条件を満たすと判定されてもよい。
保存条件を満たさないと判定された場合、サブプロセスコントローラ130は、ステップS306に進む。
保存条件を満たすと判定された場合、サブプロセスコントローラ130は、履歴DB150にモデルパラメータ及び学習結果を格納する(ステップS304)。
具体的には、サブプロセスコントローラ130は、履歴DB150にエントリを追加する。サブプロセスコントローラ130は、追加されたエントリの履歴ID801に、学習コントローラ120から通知されたノードの識別情報を設定する。これによって、履歴DB150のエントリ及び履歴関係管理情報123のエントリが関連づけられる。また、サブプロセスコントローラ130は、ノードの識別情報を更新判定リストに登録する。
次に、サブプロセスコントローラ130は、学習コントローラ120に履歴更新通知を出力する(ステップS305)。サブプロセスコントローラ130は、学習コントローラ120からノードの識別情報が入力されるまで待ち状態に移行する。ノードの識別情報が入力された場合、サブプロセスコントローラ130はステップS306に進む。
次に、サブプロセスコントローラ130は、学習終了条件を満たすか否かを判定する(ステップS306)。
例えば、サブプロセスコントローラ130は、シミュレーションの実行回数が学習回数302の値と一致する場合、又は、更新後の状態が終了状態に一致する場合、学習終了条件を満たすと判定する。
学習終了条件を満たさないと判定された場合、サブプロセスコントローラ130は、ステップS302に戻る。
学習終了条件を満たすと判定された場合、サブプロセスコントローラ130は、スコア判定モジュール140にスコア判定要求を出力する(ステップS307)。その後、サブプロセスコントローラ130は、処理を終了する。なお、スコア判定要求には更新判定リストが含まれる。
図12は、実施例1のスコア判定モジュール140が実行する処理を説明するフローチャートである。スコア判定モジュール140は、サブプロセスコントローラ130からスコア判定要求を受信した場合、以下で説明する処理を実行する。
スコア判定モジュール140は、更新判定リストのループ処理を開始する(ステップS401)。
具体的には、スコア判定モジュール140は、更新判定リストに登録されたノードの中からターゲットノードを選択する。
次に、スコア判定モジュール140は、スコア判定モジュール140内に環境モジュール131及びエージェントモジュール132を構築する(ステップS402)。
具体的には、スコア判定モジュール140は、ターゲットノードの識別情報に基づいて履歴DB150を参照して、環境モジュール131のパラメータ及びエージェントモジュール132のパラメータを取得する。スコア判定モジュール140は、取得した各パラメータを用いて環境モジュール131及びエージェントモジュール132を構築する。
次に、スコア判定モジュール140は、環境モジュール131及びエージェントモジュール132を用いたシミュレーションを実行することによって評価値を算出する(ステップS403)。
具体的には、スコア判定モジュール140は、終了条件が満たされるまでシミュレーションを繰り返し実行して、累積報酬を算出する。なお、当該シミュレーションでは、ポリシの更新が行われないように制御される。
次に、スコア判定モジュール140は、累積報酬が閾値より大きいか否かを判定する(ステップS404)。
なお、複数の種類の評価値が設定されている場合、スコア判定モジュール140は、評価値の組合せから定義される判定基準を満たすか否かを判定する。
累積報酬が閾値より大きいと判定された場合、スコア判定モジュール140は、学習結果DB160を更新し(ステップS405)、その後、ステップS407に進む。
具体的には、スコア判定モジュール140は、学習結果DB160にエントリを追加し、追加されたエントリの結果ID701に識別情報を設定する。スコア判定モジュール140は、追加されたエントリのポリシ内部変数702にエージェントモジュール132のパラメータとして取得したポリシ内部データ241を設定し、当該エントリの累積報酬703に算出された累積報酬を設定する。
累積報酬が閾値以下であると判定された場合、スコア判定モジュール140は、ターゲットノードに除外フラグを付与し(ステップS406)、その後、ステップS407に進む。
ステップS407では、スコア判定モジュール140は、更新判定リストに登録された全てのノードについて処理が完了したか否かを判定する(ステップS407)。
更新判定リストに登録された全てのノードについて処理が完了していないと判定された場合、スコア判定モジュール140は、ステップS401に戻り、新たなターゲットノードを選択する。
更新判定リストに登録された全てのノードについて処理が完了したと判定された場合、スコア判定モジュール140は、最適ポリシが存在するか否かを判定する(ステップS408)。
具体的には、スコア判定モジュール140は、更新判定リストに登録されたノードの中に除外フラグが付与されていないノードが存在するか否かを判定する。更新判定リストに登録されたノードの中に除外フラグが付与されていないノードが存在する場合、スコア判定モジュール140は、最適ポリシが存在すると判定する。
最適ポリシが存在すると判定された場合、スコア判定モジュール140は、学習コントローラ120に最適ポリシ通知を出力する(ステップS409)。その後、スコア判定モジュール140は処理を終了する。最適ポリシ通知には更新判定リストが含まれる。
最適ポリシが存在しないと判定された場合、スコア判定モジュール140は、使用条件を満たすか否かを判定する(ステップS410)。
例えば、累積報酬の上昇率が閾値より小さい場合、又は、各学習結果(ノード)の累積報酬が閾値より小さい場合、スコア判定モジュール140は、使用条件を満たすと判定する。
実施例1では、強化学習を継続しても最適ポリシが算出される見込みが低い場合、又は、過学習が発生した場合、現在のモデルパラメータに基づく強化学習の実行を中止して、新たなモデルパラメータに基づく強化学習を開始する。
使用条件を満たすと判定された場合、スコア判定モジュール140は、学習コントローラ120に履歴使用指示を出力する(ステップS411)。その後、スコア判定モジュール140は処理を終了する。履歴使用指示には更新判定リストが含まれる。
使用条件を満たさないと判定された場合、スコア判定モジュール140は、学習コントローラ120に継続指示を出力する(ステップS412)。その後、スコア判定モジュール140は処理を終了する。継続指示には更新判定リストが含まれる。
図13及び図14は、実施例1の計算機100によって表示されるGUIの一例を示す図である。図13は、ユーザが強化学習の各種設定を行うために提示されるGUI1300を示す。図14は、ユーザが学習の推移を確認するために提示されるGUI1400を示す。
GUI1300は、学習形態欄1301、学習回数欄1302、上限回数欄1303、遷移条件欄1304、提示情報欄1305、保存対象欄1306、選択方式欄1307、及び設定ボタン1308を含む。
学習形態欄1301は、学習形態を選択する欄である。実施例1では、「On−Policy」及び「Off−Policy」等を選択するためのドロップダウンリストが提示される。
学習回数欄1302は、学習回数を設定する欄である。上限回数欄1303は、上限回数を設定する欄である。
遷移条件欄1304は、シミュレーションの難易度の調整方法を設定するための欄である。
提示情報欄1305は、強化学習の結果として出力する情報を設定する欄である。実施例1では、ポリシ及び行動等を選択するためのドロップダウンリストが提示される。
保存対象欄1306は、保存対象を設定する欄である。保存対象欄1306のボックスは必要に応じて追加又は削除できる。
選択方式欄1307は、使用する学習履歴の選択方式を設定する欄である。
設定ボタン1308は、各欄の値を計算機100に設定するためのボタンである。ユーザが当該ボタンを操作した場合、各欄の値を含む学習条件パラメータ情報170が計算機100に入力される。
GUI1400は、表示ボタン1401、設定ボタン1402、履歴関係表示欄1403、詳細表示欄1404を含む。
表示ボタン1401は、履歴関係表示欄1403を表示するためのボタンである。設定ボタン1402は、履歴関係表示欄1403に対する操作結果を計算機100に反映させるためのボタンである。
履歴関係表示欄1403は、難易度係数1411及び履歴構造1412から構成される。難易度係数1411は、難易度係数を表示する。履歴構造1412には、履歴関係管理情報123のノード間の接続関係を示すグラフが表示される。図14に示すように、難易度係数毎に層を形成するグラフが表示される。黒丸は探索フラグ605が「OFF」である。点線の丸は学習結果が格納されていないノードを示す。
詳細表示欄1404は、ノードに対応する学習結果を表示する欄である。ユーザが履歴構造1412のノードにカーソルを合わせた場合、詳細表示欄1404に当該ノードに対応する学習結果が表示される。
ユーザは、詳細表示欄1404を用いて、選択対象として選択するノード及び選択対象とするノードを選択することができる。ユーザは、前述の操作を行った後、設定ボタン1402を操作した場合、履歴関係管理情報123の探索フラグ605の値が更新される。
(変形例)
図15は、実施例1のシステムの構成の変形例を示す図である。
システムは、計算機1500、複数の計算機1510、計算機1520、及び端末1530から構成される。計算機1500、計算機1510、計算機1520はネットワーク1550を介して互いに接続される。また、計算機1500及び端末1530は、直接、又は、ネットワークを介して接続される。
計算機1500は学習コントローラ120を有し、計算機1510はサブプロセスコントローラ130及び履歴DB150を有し、計算機1520はスコア判定モジュール140及び学習結果DB160を有する。本システムでは、複数の計算機1510が、並列に強化学習を並列実行する。
学習コントローラ120は、計算機1510毎に履歴関係管理情報123を保持する。また、学習結果DB160には、計算機1510の識別情報を格納するフィールドが追加される。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD−RW、CD−R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。