【実施例1】
【0015】
図1は、実施例1の計算機システムのハードウェア構成を示す図である。
【0016】
図1に示す計算機システムは、強化学習実行サーバ100、KPI最適化管理サーバ110、及びユーザ端末120から構成される。各装置はネットワーク140を介して互いに接続される。なお、ネットワーク140の種類としては、WAN(Wide Area Network)及びLAN(Local Area Network)等が考えられる。また、ネットワーク140の接続方式は有線又は無線のいずれでもよい。
【0017】
強化学習実行サーバ100は、モデルにしたがって強化学習を実行する。強化学習では、所定の終了条件を満たすまでエージェント及び環境間の相互作用を複数回実行する学習処理が繰り返し実行される。本明細書では、1回の学習処理におけるエージェント及び環境間の相互作用の回数の単位をステップと定義し、強化学習における学習処理の回数の単位をエピソードと定義する。
【0018】
強化学習実行サーバ100は、ハードウェアとして、CPU101、メモリ102、ストレージ装置103、及びネットワークインタフェース104を有する。各ハードウェアは内部バス等を介して接続される。
【0019】
CPU101は、メモリ102に格納されるプログラムを実行する。CPU101がプログラムにしたがって処理を実行することによって、所定の機能を有する機能部(モジュール)として動作する。以下の説明では、機能部を主語に処理を説明する場合、CPU101が、当該機能部を実現するプログラムを実行していることを表す。
【0020】
メモリ102は、CPU101が実行するプログラム及び当該プログラムに必要な情報を格納する。また、メモリ102は、プログラムが一時的に使用するワークエリアを含む。
【0021】
ストレージ装置103は、データを永続的に格納する。ストレージ装置103は、HDD(Hard Disk Drive)及びSSD(Solid State Drive)等の記憶媒体、又は不揮発性メモリ等が考えられる。なお、メモリ102に格納されるプログラム及び情報は、ストレージ装置103に格納されてもよい。この場合、CPU101は、ストレージ装置103からプログラム及び情報を読み出し、メモリ102にプログラム及び情報をロードし、また、メモリ102にロードされたプログラムを実行する。
【0022】
ネットワークインタフェース104は、ネットワークを介して他の装置と接続する。
【0023】
KPI最適化管理サーバ110は、KPIに関する情報に基づいて、モデルに含める報酬関数を自動的に生成する。また、KPI最適化管理サーバ110は、強化学習の結果に基づいて報酬関数を修正する。KPI最適化管理サーバ110は、ハードウェアとして、CPU111、メモリ112、ストレージ装置113、及びネットワークインタフェース114を有する。各ハードウェアは内部バス等を介して接続される。
【0024】
CPU111、メモリ112、ストレージ装置113、及びネットワークインタフェース114は、CPU101、メモリ102、ストレージ装置103、及びネットワークインタフェース104と同様のハードウェアである。
【0025】
KPIに関する情報には、KPIの定義情報、及び、強化学習におけるKPIの制御目的に関する情報が含まれる。強化学習におけるKPIの制御目的には、「制約」及び「目標」の二つの種別が存在する。「制約」は、KPIの範囲等、KPIが満たすべき条件を示す。「目標」はKPIの操作目標等を示す。操作目標には、例えば、KPIの最小化及びKPIの最大化がある。
【0026】
ユーザ端末120は、ユーザが使用する端末である。実施例1では、ユーザは、ユーザ端末120を用いて、強化学習のモデルのパラメータ及びKPIに関する情報等を入力する。ユーザ端末120は、ハードウェアとして、CPU121、メモリ122、ストレージ装置123、ネットワークインタフェース124、入力装置125、及び出力装置126を有する。各ハードウェアは内部バス等を介して接続される。
【0027】
CPU121、メモリ122、ストレージ装置123、及びネットワークインタフェース124は、CPU101、メモリ102、ストレージ装置103、及びネットワークインタフェース104と同様のハードウェアである。
【0028】
入力装置125は、データ等を入力するための装置であり、キーボード、マウス、及びタッチパネル等を含む。出力装置126は、データ等を出力するための装置であり、ディスプレイ及びタッチパネル等を含む。
【0029】
実施例1では、強化学習の実行、及び、報酬関数の生成のタスクを別々の計算機が実行するように構成されているが、一つの計算機が二つのタスクを実行するように構成してもよい。例えば、強化学習実行サーバ100及びKPI最適化管理サーバ110を一つの計算機上で稼働する仮想計算機として実現してもよい。
【0030】
図2は、実施例1の計算機システムのソフトウェア構成を示す図である。
【0031】
強化学習実行サーバ100は、強化学習実行部201、問題調整部202、及び環境実行部203を実現するプログラムを格納し、また、データベース204を保持する。
【0032】
強化学習実行部201は、強化学習におけるエージェントとして機能する。強化学習実行部201は、環境(環境実行部203)から出力される環境の状態及び報酬の値等の情報を取得し、取得した情報及び施策に基づいて行動を選択する。また、強化学習実行部201は、選択した行動に関する情報を環境実行部203に出力する。
【0033】
環境実行部203は、強化学習における環境として機能する。環境実行部203は、強化学習実行部201から出力される行動に関する情報を取得し、取得した情報及び現在の環境の状態に基づいて、状態の遷移のシミュレーションを実行する。また、環境実行部203は、シミュレーションの結果として遷移後の環境の状態を示す情報を強化学習実行部201に出力する。
【0034】
問題調整部202は、強化学習実行部201及び環境実行部203間の入出力を制御する。問題調整部202は、環境実行部203の代わりに報酬関数を管理し、環境実行部203が出力した情報及び報酬関数に基づいて報酬を算出する。
【0035】
実施例1では、強化学習の結果に基づいて報酬関数が更新される。これに伴って、エージェント及び環境間の相互作用において入出力される情報が変化する。そこで、問題調整部202が、エージェント及び環境間の相互作用における入出力を調整する。
【0036】
データベース204は、強化学習の結果を格納する。データベース204に格納される情報の詳細は
図8を用いて説明する。
【0037】
なお、強化学習実行サーバ100が有する機能部については、複数の機能部を一つの機能部にまとめてもよいし、一つの機能部を機能毎に複数の機能部に分けてもよい。例えば、強化学習実行部201、問題調整部202、及び環境実行部203をまとめて学習部としてもよい。
【0038】
KPI最適化管理サーバ110は、問題設定部211、報酬関数生成部212、強化学習評価部213、及び結果出力部214を実現するプログラムを格納し、また、報酬関数管理情報215、関数定義情報216、及び強化学習評価情報217を保持する。
【0039】
報酬関数管理情報215は、報酬関数を生成するための各種情報を管理するための情報である。報酬関数管理情報215の詳細は
図5を用いて説明する。
【0040】
関数定義情報216は、報酬関数を構成する部分報酬関数を生成するための関数の定義を管理するための情報である。関数定義情報216の詳細は
図6を用いて説明する。
【0041】
強化学習評価情報217は、強化学習の評価結果を管理するための情報である。強化学習評価情報217の詳細は
図7を用いて説明する。
【0042】
問題設定部211は、強化学習のモデルのパラメータ及びKPIに関する情報等を入力するためのインタフェースを提供する。問題設定部211は、インタフェースを介して入力された情報に基づいて、環境実行定義情報301、状態/行動定義情報302、及び強化学習定義情報303を生成する。また、問題設定部211は、インタフェースを介して入力された情報に基づいて報酬関数管理情報215を生成する。
【0043】
報酬関数生成部212は、報酬関数管理情報215に基づいて報酬関数を生成し、当該報酬関数に関する情報を報酬関数定義情報304として生成する。実施例1の報酬関数は、式(1)に示すように複数の部分報酬関数(報酬項)の線形結合として定義される。
【0044】
【数1】
【0045】
ここで、R(s,a)は状態sにおいて行動aを行った場合に与えられる報酬を算出するための報酬関数である。rはKPIに関する関数であり、αは重みである。重みαを乗算した関数rが一つの部分報酬関数に対応する。また、jは添字である。
【0046】
強化学習評価部213は、強化学習の結果を評価し、評価結果に基づいて強化学習評価情報217を生成する。
【0047】
結果出力部214は、強化学習の処理結果及び評価結果等を提示するための情報をユーザ端末120に出力する。
【0048】
なお、KPI最適化管理サーバ110が有する機能部については、複数の機能部を一つの機能部にまとめてもよいし、一つの機能部を機能毎に複数の機能部に分けてもよい。例えば、報酬関数生成部212が有する機能を問題設定部211に含めてもよい。
【0049】
ユーザ端末120は、KPI最適化管理サーバ110が提供するインタフェースを操作するためのアプリケーション221を実現するプログラムを格納する。
【0050】
図3は、実施例1の計算機システムにおけるソフトウェア間の動作の一例を示す図である。
図4は、実施例1のKPI最適化管理サーバ110が提供するインタフェースの一例を示す図である。
【0051】
KPI最適化管理サーバ110は、ユーザ端末120のアプリケーション221から操作要求を受け付けた場合、問題設定部211を呼び出す。問題設定部211は、インタフェースとして
図4に示すようなGUI400をユーザ端末120に提示する。ここで、GUI400について説明する。
【0052】
GUI400は、KPI最適化管理サーバ110によって提供されるインタフェースであって、出力装置126に表示される。GUI400は、モデル情報入力欄401、報酬情報入力欄402、及び設定ボタン403を含む。
【0053】
モデル情報入力欄401は、環境、環境の状態、エージェントの行動、及び学習処理等に関する情報を設定するため欄である。モデル情報入力欄401は、入力欄411、412、413を含む。
【0054】
入力欄411は、環境を定義する情報を入力する欄である。入力欄411に設定された情報は、環境実行定義情報301として入力される。本実施例では、環境実行定義情報301にKPIの定義情報が含まれるものとする。なお、KPIの定義情報は個別の情報として入力されてもよい。入力欄412は、状態及び行動を定義する情報を入力する欄である。入力欄412に設定された情報は、状態/行動定義情報302として入力される。入力欄413は、学習方法を定義する情報を入力する欄である。入力欄413に設定された情報は、強化学習定義情報303として入力される。入力欄411、412、413には、例えば、設定ファイルのパスが設定される。
【0055】
報酬情報入力欄402は、報酬関数の生成及び報酬関数の修正に必要な情報を設定するための欄である。報酬情報入力欄402は、報酬管理テーブル420、追加ボタン430、削除ボタン435、及び説明欄440を含む。
【0056】
報酬管理テーブル420は、KPIに関する情報を格納するエントリを複数含む。エントリは、KPI名421、条件422、目的423、制御値424、優先度425、及び修正方法426から構成される。後述するように、一つのエントリに対して一つの部分報酬関数が生成される。以下の説明では一つのエントリを設定データとも記載する。
【0057】
KPI名421は、KPIの識別情報を格納するフィールドである。KPI名421には、例えば、KPIの名称又は種別を表す文字列が格納される。
【0058】
条件422は、KPI名421に対応するKPIに関する報酬を与えるタイミング、すなわち、報酬の算出タイミングを示す値を格納するフィールドである。条件422は、1エピソードの終了時に報酬を与えることを表す「Goal」及び1ステップの終了時に報酬を与えることを表す「Step」等が格納される。
【0059】
目的423は、KPIの制御目的の種別を示す情報を格納するフィールドである。目的423には「制約」及び目標を示す値のいずれかが格納される。目標を示す値としては、KPIの最大化を示す「max」及びKPIの最小化を示す「min」がある。
【0060】
制御値424は、制約として設定するKPIの範囲に関する情報を格納するフィールドである。「hard」は必ず満たすべき制約であることを示す。
【0061】
優先度425は、KPIの制御目的の優先順位を示す値を格納するフィールドである。本実施例では、「1」が最も優先順位が上位であるものとする。すなわち、数値が「1」に近いほど優先順位が高いことを表す。
【0062】
修正方法426は、部分報酬関数の修正方法を指定するための欄である。例えば、強化学習が実行された後の環境において、制約を満たさない場合、又は、目標を達成できない場合等に、部分報酬関数が修正される。修正方法426には、説明欄440に示す識別番号が格納される。
【0063】
追加ボタン430は、報酬管理テーブル420にエントリを追加するための操作ボタンである。ユーザが追加ボタン430を操作した場合、報酬管理テーブル420にエントリが追加される。ユーザは、追加されたエントリに必要な値を設定する。なお、ユーザは、任意のタイミングで、エントリに設定された値を修正できる。
【0064】
削除ボタン435は、報酬管理テーブル420からエントリを削除するための操作ボタンである。ユーザが、報酬管理テーブル420のエントリを選択し、削除ボタン435を操作した場合、報酬管理テーブル420からエントリが削除される。
【0065】
説明欄440は、修正方法の識別番号及び修正方法の内容を示す欄である。
【0066】
設定ボタン403は、GUI400に入力した情報をKPI最適化管理サーバ110に送信するための操作ボタンである。
【0067】
図3の説明に戻る。
【0068】
問題設定部211は、GUI400を介して入力された各種情報を受け付ける。問題設定部211は、報酬情報入力欄402の報酬管理テーブル420を報酬関数管理情報215としてメモリ112に格納する。問題設定部211は、GUI400を介して入力された環境実行定義情報301、状態/行動定義情報302、及び強化学習定義情報303を強化学習実行サーバ100に送信する。また、問題設定部211は、報酬関数管理情報215を含む報酬関数の生成指示を報酬関数生成部212に送信する。このとき、問題設定部211は、環境実行定義情報301等に含まれるKPIの定義情報も合わせて送信する。
【0069】
環境実行定義情報301は、環境のパラメータの種別及び各パラメータが取りうる値の範囲等に関する情報を含み、強化学習定義情報303は、行動の種別等に関する情報を含む。
【0070】
報酬関数生成部212は、報酬関数管理情報215及び関数定義情報216に基づいて報酬関数を生成し、報酬関数定義情報304として強化学習実行サーバ100に送信する。
【0071】
強化学習実行サーバ100は、環境実行定義情報301に基づいて環境実行部203を生成し、強化学習定義情報303に基づいて強化学習実行部201を生成する。また、強化学習実行サーバ100は、状態/行動定義情報302及び報酬関数定義情報304に基づいて問題調整部202を生成する。
【0072】
報酬関数生成部212は、強化学習実行部201に処理の実行を指示する制御信号を出力する。強化学習実行サーバ100は、当該制御信号の受信を契機に強化学習を開始する。
【0073】
問題調整部202は、1エピソードにおける各ステップの相互作用の内容、KPI、及び報酬をデータベース204に格納する。
【0074】
強化学習評価部213は、強化学習が終了した場合、強化学習評価部213に処理の終了を通知する。強化学習評価部213は、当該通知を受信した場合、データベース204から学習結果を取得し、強化学習の評価処理を実行する。強化学習評価部213は、評価処理の結果を強化学習評価情報217として生成し、報酬関数生成部212及び結果出力部214に出力する。
【0075】
結果出力部214は、評価結果を示すGUIをユーザ端末120に提示する。報酬関数生成部212は、強化学習評価情報217に基づいて、修正が必要な部分報酬関数を特定し、修正方法426に設定された修正方法に基づいて、特定された部分報酬関数を修正する。報酬関数生成部212は、修正内容に基づいて報酬関数管理情報215を更新する。
【0076】
このように、実施例1のシステムは、KPIに関する情報に基づいて、報酬関数を自動的に生成する。また、システムは、生成された報酬関数を用いた強化学習の評価結果に基づいて、報酬関数を修正する。強化学習の評価結果に基づいて報酬関数を修正することによって、対象とする問題に適した報酬関数を提示できる。また、当該報酬関数を用いた強化学習を実行することによって、より最適な方策を得ることができる。
【0077】
図5は、実施例1の報酬関数管理情報215のデータ構造の一例を示す図である。
【0078】
報酬関数管理情報215は、ID501、KPI名502、条件503、目的504、制御値505、優先度506、修正方法507、関数508、及び重み509から構成されるエントリを複数含む。一つのエントリが一つの部分報酬関数に対応する。
【0079】
KPI名502、条件503、目的504、制御値505、優先度506、及び修正方法507は、KPI名421、条件422、目的423、制御値424、優先度425、及び修正方法426と同一のフィールドである。
【0080】
ID501は、エントリを一意に識別するための識別情報を格納するフィールドである。関数508は、関数rを格納するフィールドである。重み509は、重みαの値を格納するフィールドである。
【0081】
ここで、報酬管理テーブル420から報酬関数管理情報215を生成する処理について説明する。
【0082】
(処理1)問題設定部211は、報酬関数管理情報215を初期化する。
【0083】
(処理2)問題設定部211は、報酬管理テーブル420からエントリを一つ選択し、報酬関数管理情報215にエントリを一つ追加する。問題設定部211は、追加されたエントリのID501に識別番号を設定する。識別番号は昇順に設定される。問題設定部211は、追加されたエントリのKPI名502、条件503、目的504、制御値505、優先度506、及び修正方法507のそれぞれに、選択されたエントリのKPI名421、条件422、目的423、制御値424、優先度425、及び修正方法426の値を設定する。
【0084】
問題設定部211は、報酬管理テーブル420の全てのエントリに対して、(処理2)を繰り返し実行する。以上の処理によって、報酬関数管理情報215が生成される。なお、この時点では、関数508及び重み509は空欄である。
【0085】
図6は、実施例1の関数定義情報216のデータ構造の一例を示す図である。
【0086】
関数定義情報216は、条件601、目的602、関数タイプ603、及びペナルティ関数タイプ604から構成されるエントリを複数含む。一つのエントリが一つの関数の定義情報に対応する。
【0087】
条件601及び目的602は、条件422及び目的423と同一のフィールドである。
【0088】
関数タイプ603は、条件601及び目的602の組合せに対して定義された関数のタイプを示す情報を格納するフィールドである。ペナルティ関数タイプは、目標を満たすようにKPIを誘導するためのペナルティ関数のタイプを示す情報を格納するフィールドである。なお、具体的な関数は、KPIに関連するパラメータに基づいて生成される。
【0089】
図7は、実施例1の強化学習評価情報217のデータ構造の一例を示す図である。
【0090】
強化学習評価情報217は、強化学習における1エピソード単位の評価結果を示す評価テーブル700を複数含む。評価テーブル700にはエピソードの順番が付与される。
【0091】
評価テーブル700は、KPI名701、条件702、目的703、制御値704、評価705、及び寄与度706から構成されるエントリを複数含む。評価テーブル700には、設定データと同数のエントリが存在する。
【0092】
KPI名701、条件702、目的703、及び制御値704は、KPI名421、条件422、目的423、及び制御値424と同一のフィールドである。
【0093】
評価705は、制約を満たすか否かを示す値を格納するフィールドである。制約に関連しないエントリの評価705は空欄となる。寄与度706は、行動の選択に対する、部分報酬関数の値の寄与の大きさを表す数値を格納するフィールドである。
【0094】
図8は、実施例1のデータベース204のデータ構造の一例を示す図である。
【0095】
データベース204は、1エピソード単位の強化学習の実行結果を示す学習結果テーブル800を複数含む。学習結果テーブル800にはエピソードの順番が付与される。
【0096】
学習結果テーブル800は、ステップ801、状態802、行動803、報酬804、及びKPI805から構成されるエントリを複数含む。学習結果テーブル800には、1エピソード内で行われた相互作用(ステップ)の数だけエントリが存在する。
【0097】
ステップ801は、ステップの識別番号を格納するフィールドである。ステップ801に設定される識別番号と、エントリに対応する相互作用の実行順番とは一致する。状態802は、環境の状態を示す値を格納するフィールドである。行動803は、状態802に対応する環境の状態の下で行われた行動を示す情報を格納するフィールドである。報酬804は、状態802に対応する環境の状態の下で行動803に対する行動を行った場合に得られた報酬を格納するフィールドである。KPI805は、行動が行われた後のKPIを格納するフィールド群である。
【0098】
問題調整部202は、学習処理の実行前に、実行予定のエピソードに対応する学習結果テーブル800を生成する。問題調整部202は、1ステップの処理が実行された後、生成された学習結果テーブル800にエントリを追加し、追加されたエントリのステップ801に実行されたステップの識別番号を設定する。
【0099】
問題調整部202は、追加されたエントリの状態802に環境実行部203から取得した状態の値を設定し、当該エントリの行動803に強化学習実行部201から取得した行動の値を設定する。問題調整部202は、報酬関数に基づいて報酬を算出し、追加されたエントリの報酬804に算出された報酬を設定する。また、問題調整部202は、KPIを算出し、追加されたエントリのKPI805に算出されたKPIを設定する。なお、KPIは、環境実行部203等が算出してもよい。
【0100】
図9は、実施例1の報酬関数生成部212が実行する報酬関数生成処理の一例を説明するフローチャートである。
【0101】
報酬関数生成部212は、報酬関数管理情報215の入力を受け付けた場合、以下で説明する処理を開始する。
【0102】
報酬関数生成部212は、優先度506の値に基づいて、報酬関数管理情報215のエントリをソートする(ステップS101)。ここでは、報酬関数生成部212は、優先順位の高い順にエントリをソートする。
【0103】
次に、報酬関数生成部212は、設定データのループ処理を開始する(ステップS102)。
【0104】
具体的には、報酬関数生成部212は、優先順位の高い順に、すなわち、報酬関数管理情報215の上から順にエントリ(設定データ)を一つ選択する。
【0105】
次に、報酬関数生成部212は、選択されたエントリ及び関数定義情報216に基づいて関数rを生成する(ステップS103)。具体的には、以下のような処理が実行される。
【0106】
報酬関数生成部212は、関数定義情報216を参照し、条件601及び目的602の値の組合せが、選択されたエントリの条件503及び目的504の値の組合せと一致するエントリを検索する。
【0107】
報酬関数生成部212は、検索されたエントリの関数タイプ603に格納される関数の定義情報を取得する。報酬関数生成部212は、KPIの定義情報及び関数の定義情報に基づいて関数rを生成する。以上がステップS102の処理の説明である。
【0108】
次に、報酬関数生成部212は、選択されたエントリの優先度506の値に基づいて、部分報酬関数を用いて算出される値の大きさを規定するスケールファクタを算出する(ステップS104)。
【0109】
実施例1では、高い優先順位が設定された設定データに基づいて生成された部分報酬関数から大きな報酬が算出されるようにスケールが調整される。例えば、優先度506が「1」の部分報酬関数のスケールファクタは10
6と算出され、優先度506が「2」の部分報酬関数のスケールファクタは10
5と算出される。
【0110】
報酬関数生成部212は、選択されたエントリの関数508に、関数rにスケールファクタを乗算した関数を設定する。
【0111】
次に、報酬関数生成部212は、KPIの定義情報に基づいて、重みαを算出する(ステップS105)。
【0112】
例えば、式(2)に示すようなKPIの定義域に対して、重みαは式(3)のように算出される。
【0113】
【数2】
【0114】
【数3】
【0115】
報酬関数生成部212は、選択されたエントリの重み509に算出された重みを設定する。なお、報酬関数生成部212は、KPIの定義情報及びスケールファクタに基づいて重みαを算出してもよい。また、KPIの定義域の他に、制約として設定された値の範囲を含めて重みαが算出されてもよい。
【0116】
次に、報酬関数生成部212は、全ての設定データについて処理が完了したか否かを判定する(ステップS106)。
【0117】
全ての設定データについて処理が完了していないと判定された場合、報酬関数生成部212は、ステップS102に戻り、同様の処理を実行する。
【0118】
全ての設定データについて処理が完了したと判定された場合、報酬関数生成部212は、報酬関数を生成し(ステップS107)、当該報酬関数に関する情報を含む報酬関数定義情報304を生成する(ステップS108)。報酬関数生成部212は、報酬関数定義情報304を強化学習実行サーバ100に送信し、報酬関数生成処理を終了する。
【0119】
具体的には、報酬関数生成部212は、関数508に重み509を乗算して得られる部分報酬関数の線形結合として報酬関数を生成する。
【0120】
図10は、実施例1の強化学習評価部213が実行する評価処理の一例を説明するフローチャートである。
【0121】
強化学習評価部213は、強化学習実行部201から処理の終了通知を受信した場合、以下で説明する処理を開始する。
【0122】
強化学習評価部213は、エピソードのループ処理を開始する(ステップS201)。
【0123】
具体的には、強化学習評価部213は、データベース204にアクセスし、学習結果テーブル800を一つ取得する。このとき、強化学習評価部213は、報酬関数管理情報215を取得する。なお、強化学習評価部213は、エピソードの実行順に学習結果テーブル800を取得する。
【0124】
次に、強化学習評価部213は、学習結果テーブル800に基づいて、KPIに対して設定された制約に関する評価を行う(ステップS202)。具体的には、以下のような処理が実行される。
【0125】
強化学習評価部213は、学習結果テーブル800の最後のエントリのKPI805と、報酬関数管理情報215の制約に関連するエントリとを参照し、制約を満たしているか否かを判定する。制約が複数存在する場合、各制約に対して判定が行われる。
【0126】
制約を満たしていると判定された場合、強化学習評価部213は、制約を識別する情報及び評価結果「true」を対応づけて、ワークエリアに一時的に格納する。制約を満たしていないと判定された場合、強化学習評価部213は、制約を識別する情報及び評価結果「false」を対応づけて、ワークエリアに一時的に格納する。以上が、ステップS202の処理の説明である。
【0127】
次に、強化学習評価部213は、ステップのループ処理を開始する(ステップS203)。
【0128】
具体的には、強化学習評価部213は、学習結果テーブル800からエントリを一つ選択する。なお、エントリはステップ順に選択される。
【0129】
次に、強化学習評価部213は、選択されたエントリに対応するステップにおける部分報酬関数の値を算出する(ステップS204)。
【0130】
具体的には、強化学習評価部213は、選択されたステップに対応するエントリの状態802、行動803、及びKPI805、並びに、報酬関数管理情報215に基づいて、各部分報酬関数の値を算出する。このとき、強化学習評価部213は、ステップの識別番号、ID501、及び部分報酬関数の値を対応づけたテーブルを生成し、ワークエリアに一時的に格納する。
【0131】
次に、強化学習評価部213は、全てのステップについて処理が完了したか否かを判定する(ステップS205)。
【0132】
全てのステップについて処理が完了していないと判定された場合、強化学習評価部213は、ステップS203に戻り、同様の処理を実行する。
【0133】
全てのステップについて処理が完了したと判定された場合、強化学習評価部213は、各部分報酬関数の寄与度を算出する(ステップS206)。具体的には、以下のような処理が実行される。
【0134】
強化学習評価部213は、ターゲット部分報酬関数を選択し、ステップS204において生成されたテーブルから各ステップのターゲット部分報酬関数の値に、エピソードの終端から減衰係数を乗算する。
【0135】
強化学習評価部213は、各ステップの値を合計することによって、ターゲット部分報酬関数の期待値を算出する。強化学習評価部213は、各部分報酬関数の期待値に基づいて、部分報酬関数の寄与度を算出する。例えば、期待値の比率が寄与度として算出される。
【0136】
なお、前述した寄与度の算出方法は一例であってこれに限定されない。以上がステップS206の処理の説明である。
【0137】
次に、強化学習評価部213は、選択したエピソードに対応する評価テーブル700を生成する(ステップS207)。具体的には、以下のような処理が実行される。
【0138】
強化学習評価部213は、報酬関数管理情報215からエントリを選択する。強化学習評価部213は、評価テーブル700にエントリを追加し、追加されたエントリに、KPI名701、条件702、及び目的703に、選択されたエントリのKPI名502、条件503、及び目的504の値を設定する。
【0139】
選択されたエントリが制約に関連するエントリである場合、強化学習評価部213は、追加されたエントリの評価705に、ワークエリアに格納される評価結果を設定する。強化学習評価部213は、追加されたエントリの寄与度706に、選択されたエントリに対応する部分報酬関数の寄与度を設定する。
【0140】
強化学習評価部213は、報酬関数管理情報215の全てのエントリについて同様の処理を実行する。以上がステップS207の処理の説明である。
【0141】
次に、強化学習評価部213は、全てのエピソードについて処理が完了したか否かを判定する(ステップS208)。
【0142】
全てのエピソードについて処理が完了していないと判定された場合、強化学習評価部213は、ステップS201に戻り、同様の処理を実行する。
【0143】
全てのエピソードについて処理が完了したと判定された場合、強化学習評価部213は、評価処理を終了する。このとき、強化学習評価部213は、複数の評価テーブル700を含む強化学習評価情報217を、報酬関数生成部212及び結果出力部214に出力する。
【0144】
図11は、実施例1の報酬関数生成部212が実行する報酬関数修正処理の一例を説明するフローチャートである。
【0145】
報酬関数生成部212は、強化学習評価情報217を受け付けた場合、以下で説明する処理を開始する。
【0146】
報酬関数生成部212は、エピソードのループ処理を開始する(ステップS301)。
【0147】
具体的には、報酬関数生成部212は、強化学習評価情報217から評価テーブル700を一つ取得する。なお、報酬関数生成部212は、エピソードの実行順に評価テーブル700を取得する。
【0148】
次に、報酬関数生成部212は、寄与度706の値の大きさに基づいて、評価テーブル700のエントリをソートする(ステップS302)。ここでは、寄与度の大きい順にエントリがソートされる。このとき、報酬関数生成部212は、優先順位に基づいてエントリをソートした場合の各エントリ(各部分報酬関数)の順番を第一ソート順として管理し、また、寄与度の大きさに基づいてソートした場合の各エントリ(各部分報酬関数)の順番を第二ソート順として管理する。
【0149】
次に、報酬関数生成部212は、設定データのループ処理を開始する(ステップS303)。
【0150】
具体的には、報酬関数生成部212は、評価テーブル700の上から順にエントリを一つ選択する。
【0151】
次に、報酬関数生成部212は、選択されたエントリが制約に関連するエントリであるか否かを判定する(ステップS304)。
【0152】
具体的には、報酬関数生成部212は、選択されたエントリの評価705に値が設定されているか否かを判定する。選択されたエントリの評価705に値が設定されている場合、報酬関数生成部212は、選択されたエントリが制約に関連するエントリであると判定する。
【0153】
選択されたエントリが制約に関連するエントリではないと判定された場合、報酬関数生成部212は、ステップS307に進む。
【0154】
選択されたエントリが制約に関連するエントリであると判定された場合、報酬関数生成部212は、当該エントリの評価705に設定された値が「true」であるか否かを判定する(ステップS305)。
【0155】
選択されたエントリの評価705に設定された値が「true」であると判定された場合、報酬関数生成部212はステップS307に進む。
【0156】
選択されたエントリの評価705に設定された値が「true」でないと判定された場合、報酬関数生成部212は、選択されたエントリに対応する部分報酬関数を修正する(ステップS306)。その後、報酬関数生成部212はステップS307に進む。具体的には、以下のような処理が実行される。
【0157】
報酬関数生成部212は、報酬関数管理情報215を参照し、KPI名502、条件503、及び目的504の値の組合せが、選択されたエントリのKPI名701、条件702、及び目的703の値の組合せに一致するエントリを検索する。
【0158】
報酬関数生成部212は、検索されたエントリの修正方法507に設定された値にしたがって、部分報酬関数を修正する。例えば、修正方法507に「1」が設定されている場合、報酬関数生成部212は、関数定義情報216を参照し、条件601及び目的602の値の組合せが、選択されたエントリの条件702及び目的703の値の組合せに一致するエントリを検索する。報酬関数生成部212は、検索されたエントリのペナルティ関数タイプ604及びKPIの定義情報に基づいて、元の関数とペナルティ項との和を新たな関数rとして生成する。なお、関数rの修正に伴って重みが修正されてもよい。
【0159】
報酬関数生成部212は、報酬関数管理情報215から検索されたエントリの関数508に修正された部分報酬関数を設定する。以上がステップS306の処理の説明である。
【0160】
ステップS307では、報酬関数生成部212は、選択されたエントリについて、第一ソート順及び第二ソート順が一致するか否かを判定する(ステップS307)。
【0161】
例えば、優先度506の値に基づくソート結果である第一ソート順が「3」で、寄与度706の値に基づくソート結果である第二ソート順が「4」である場合、報酬関数生成部212は、第一ソート順及び第二ソート順は一致しないと判定する。
【0162】
実施例1では、優先度506の値に基づいて、二つのソート順が一致するようにスケールファクタが算出されている。しかし、優先度506及び寄与度706に基づくソート順に不整合が発生している場合、報酬の設定が適切でないことを意味する。そのため、このような不整合の発生が検知された場合、報酬関数生成部212は部分報酬関数を修正する。
【0163】
第一ソート順及び第二ソート順が一致すると判定された場合、報酬関数生成部212は、ステップS309に進む。
【0164】
第一ソート順及び第二ソート順が一致しないと判定された場合、報酬関数生成部212は、当該不整合を解消できるように部分報酬関数を修正する(ステップS308)。その後、報酬関数生成部212はステップS309に進む。
【0165】
具体的には、報酬関数生成部212は、他の部分報酬関数の寄与度の関係に基づいて、重みαを更新する。報酬関数生成部212は、報酬関数管理情報215から検索されたエントリの重み509に更新された重みαを設定する。
【0166】
ステップS309では、報酬関数生成部212は、選択された評価テーブル700に設定された全ての設定データの処理が完了したか否かを判定する(ステップS309)。
【0167】
選択された評価テーブル700に設定された全ての設定データの処理が完了していないと判定された場合、報酬関数生成部212は、ステップS303に戻り、同様の処理を実行する。
【0168】
選択された評価テーブル700に設定された全ての設定データの処理が完了したと判定された場合、報酬関数生成部212は、全てのエピソードについて処理が完了したか否かを判定する(ステップS310)。すなわち、報酬関数生成部212は、強化学習評価情報217に含まれる全ての評価テーブル700の処理が完了したか否かを判定する。
【0169】
全てのエピソードについて処理が完了していないと判定された場合、報酬関数生成部212は、ステップS301に戻り、同様の処理を実行する。
【0170】
全てのエピソードについて処理が完了したと判定された場合、報酬関数生成部212は、報酬関数修正処理を終了する。
【0171】
以上で説明したように、実施例1に示すシステムは、KPIに関する情報に基づいて、報酬関数を自動的に生成する。これによって、報酬の設計の負担を低減できる。したがって、処理時間及び運用費用等、強化学習に要するコストを削減できる。また、システムは、強化学習の結果に基づいて、報酬関数を修正する。これによって、より適切な学習が可能となり、最適な方策を取得できる。
【0172】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【0173】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるCPUが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
【0174】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Python、Java等の広範囲のプログラム又はスクリプト言語で実装できる。
【0175】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD−RW、CD−R等の記憶媒体に格納し、コンピュータが備えるCPUが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【0176】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。