(57)【要約】【課題】強化学習における報酬の設計の負担を低減する。【解決手段】計算機が実行する、強化学習における報酬を算出するための報酬関数の生成方法であって、計算機は、重要業績評価指標に関する情報である設定データを複数含む報酬関数の生成指示の入力を受け付けるステップと、一つの設定データに対して一つの部分報酬関数を生成するステップと、複数の部分報酬関数の線形結合を報酬関数として生成するステップと、強化学習を実行する計算機に、生成された報酬関数に関する情報を出力するステップと、を含む。【選択図】図１
2020035320.tif 000002
【特許請求の範囲】
【請求項１】
計算機が実行する、強化学習における報酬を算出するための報酬関数の生成方法であって、
前記計算機は、プロセッサ、前記プロセッサに接続されるメモリ、及び前記プロセッサに接続されるネットワークインタフェースを有し、
前記報酬関数の生成方法は、
前記プロセッサが、重要業績評価指標に関する情報である設定データを複数含む報酬関数の生成指示の入力を受け付ける第１のステップと、
前記プロセッサが、一つの前記設定データに対して一つの部分報酬関数を生成し、前記メモリに格納する第２のステップと、
前記プロセッサが、前記複数の部分報酬関数の線形結合を前記報酬関数として生成し、前記メモリに格納する第３のステップと、
前記プロセッサが、前記強化学習を実行する計算機に、前記生成された報酬関数に関する情報を出力する第４のステップと、を含むことを特徴とする報酬関数の生成方法。
【請求項２】
請求項１に記載の報酬関数の生成方法であって、
前記設定データは、重要業績評価指標の種別、前記重要業績評価指標の制御目的、前記重要業績評価指標に関する報酬の算出タイミング、及び前記重要業績評価指標の制御目的の優先順位を示す優先度を含み、
前記メモリは、前記重要業績評価指標の制御目的及び前記報酬の算出タイミングの組合せと、関数のタイプとを対応づけた関数定義情報を格納し、
前記報酬関数の生成指示は、前記重要業績評価指標の定義情報を含み、
前記第２のステップは、
前記プロセッサが、前記報酬関数の生成指示に含まれる前記複数の設定データの中からターゲット設定データを選択するステップと、
前記プロセッサが、前記ターゲット設定データに含まれる、前記重要業績評価指標の制御目的及び前記報酬の算出タイミングの組合せに基づいて前記関数定義情報を参照し、生成する関数のタイプを特定するステップと、
前記プロセッサが、前記特定された関数のタイプ及び前記重要業績評価指標の定義情報に基づいて、前記重要業績評価指標に関連するパラメータを変数とする関数を生成するステップと、
前記プロセッサが、前記ターゲット設定データに含まれる優先度に基づいて、前記関数を用いて算出される値の大きさを規定するスケールファクタを算出するステップと、
前記プロセッサが、前記ターゲット設定データに含まれる前記重要業績評価指標の定義域に基づいて、重みを算出するステップと、
前記プロセッサが、前記関数、前記スケールファクタ、及び前記重みに基づいて、前記部分報酬関数を生成するステップと、を含むことを特徴とする報酬関数の生成方法。
【請求項３】
請求項２に記載の報酬関数の生成方法であって、
前記プロセッサが、前記生成された報酬関数を用いた前記強化学習の結果を取得し、前記強化学習の結果を評価する第５のステップと、
前記プロセッサが、前記評価の結果に基づいて、修正対象の前記部分報酬関数を特定し、前記特定された部分報酬関数を修正する第６のステップと、
前記プロセッサが、前記特定された部分報酬関数の修正結果に基づいて、前記報酬関数を更新する第７のステップと、を含むことを特徴とする報酬関数の生成方法。
【請求項４】
請求項３に記載の報酬関数の生成方法であって、
前記重要業績評価指標の制御目的は、前記重要業績評価指標が満たすべき制約を含み、
前記報酬関数は、第１の制約を前記重要業績評価指標の制御目的として含む前記設定データに基づいて生成された第１の部分報酬関数を含み、
前記第６のステップは、前記第１の制約が満たされていない場合、前記プロセッサが、前記第１の部分報酬関数を、前記修正対象の部分報酬関数として特定するステップを含むことを特徴とする報酬関数の生成方法。
【請求項５】
請求項３に記載の報酬関数の生成方法であって、
前記部分報酬関数は、前記設定データと対応づけて管理され、
前記第５のステップは、前記プロセッサが、前記強化学習における行動の選択に対する、前記複数の部分報酬関数の各々から得られる値の寄与の大きさを示す寄与度を算出するステップを含み、
前記第６のステップは、
前記プロセッサが、前記部分報酬関数に対応する前記設定データに含まれる優先度に基づいて、前記部分報酬関数をソートした順番である第一ソート順と、前記寄与度に基づいて、前記部分報酬関数をソートした順番である第二ソート順とを比較するステップと、
前記プロセッサが、前記第一ソート順及び第二ソート順が異なる前記部分報酬関数を、前記修正対象の部分報酬関数として特定するステップを含むことを特徴とする報酬関数の生成方法。
【請求項６】
請求項３に記載の報酬関数の生成方法であって、
前記プロセッサが、前記設定データ及び前記部分報酬関数の修正方法を設定するためのインタフェースを提供するステップを含むことを特徴とする報酬関数の生成方法。
【請求項７】
複数の計算機を備える計算機システムであって、
前記複数の計算機の各々は、プロセッサ、前記プロセッサに接続されるメモリ、及び前記プロセッサに接続されるネットワークインタフェースを有し、
前記計算機システムは、強化学習を実行する学習部、及び前記強化学習における報酬を算出するための報酬関数を生成する報酬関数生成部を備え、
前記報酬関数生成部は、
重要業績評価指標に関する情報である設定データを複数含む報酬関数の生成指示の入力を受け付けた場合、一つの前記設定データに対して一つの部分報酬関数を生成し、
前記複数の部分報酬関数の線形結合を前記報酬関数として生成し、
前記学習部に、前記生成された報酬関数に関する情報を出力することを特徴とする計算機システム。
【請求項８】
請求項７に記載の計算機システムであって、
前記設定データは、重要業績評価指標の種別、前記重要業績評価指標の制御目的、前記重要業績評価指標に関する報酬の算出タイミング、及び前記重要業績評価指標の制御目的の優先順位を示す優先度を含み、
前記報酬関数生成部は、前記重要業績評価指標の制御目的及び前記報酬の算出タイミングの組合せと、関数のタイプとを対応づけた関数定義情報を管理し、
前記報酬関数の生成指示は、前記重要業績評価指標の定義情報を含み、
前記報酬関数生成部は、
前記報酬関数の生成指示に含まれる前記複数の設定データの中からターゲット設定データを選択し、
前記ターゲット設定データに含まれる、前記重要業績評価指標の制御目的及び前記報酬の算出タイミングの組合せに基づいて前記関数定義情報を参照し、生成する関数のタイプを特定し、
前記特定された関数のタイプ及び前記重要業績評価指標の定義情報に基づいて、前記重要業績評価指標に関連するパラメータを変数とする関数を生成し、
前記ターゲット設定データに含まれる優先度に基づいて、前記関数を用いて算出される値の大きさを規定するスケールファクタを算出し、
前記ターゲット設定データに含まれる前記重要業績評価指標の定義域に基づいて、重みを算出し、
前記関数、前記スケールファクタ、及び前記重みに基づいて、前記部分報酬関数を生成することを特徴とする計算機システム。
【請求項９】
請求項８に記載の計算機システムであって、
前記学習部は、
前記生成された報酬関数を用いて前記強化学習を実行し、
前記報酬関数生成部に、前記生成された報酬関数を用いて強化学習の結果を送信し、
前記報酬関数生成部は、
前記生成された報酬関数を用いて強化学習の結果を評価し、
前記評価の結果に基づいて、修正対象の前記部分報酬関数を特定し、前記特定された部分報酬関数を修正し、
前記特定された部分報酬関数の修正結果に基づいて、前記報酬関数を更新することを特徴とする計算機システム。
【請求項１０】
請求項９に記載の計算機システムであって、
前記重要業績評価指標の制御目的は、前記重要業績評価指標が満たすべき制約を含み、
前記報酬関数は、第１の制約を前記重要業績評価指標の制御目的として含む前記設定データに基づいて生成された第１の部分報酬関数を含み、
前記報酬関数生成部は、前記第１の制約が満たされていない場合、前記第１の部分報酬関数を、前記修正対象の部分報酬関数として特定することを特徴とする計算機システム。
【請求項１１】
請求項９に記載の計算機システムであって、
前記部分報酬関数は、前記設定データと対応づけて管理され、
前記報酬関数生成部は、
前記強化学習における行動の選択に対する、前記複数の部分報酬関数の各々から得られる値の寄与の大きさを示す寄与度を算出し、
前記部分報酬関数に対応する前記設定データに含まれる優先度に基づいて、前記部分報酬関数をソートした順番である第一ソート順と、前記寄与度に基づいて、前記部分報酬関数をソートした順番である第二ソート順とを比較し、
前記第一ソート順及び前記第二ソート順が異なる前記部分報酬関数を、前記修正対象の部分報酬関数として特定することを特徴とする計算機システム。
【請求項１２】
請求項９に記載の計算機システムであって、
前記報酬関数生成部は、前記設定データ及び前記部分報酬関数の修正方法を設定するためのインタフェースを提供することを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、強化学習で用いる報酬関数の生成方法に関する。
【背景技術】
【０００２】
近年、様々な業界において強化学習が活用されている。強化学習を行うためには、学習対象の問題に対応するモデルを構築し、各種パラメータを設定する必要がある。強化学習では、ＫＰＩ（Ｋｅｙ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｉｎｄｉｃａｔｏｒ）が所定の目的を満たすように最適な施策の学習が行われる。例えば、特許文献１に記載の技術が知られている。
【０００３】
特許文献１には、「マーケティング施策の定量的な評価指標であるＫＰＩを選択するＫＰＩ選択部、前記ＫＰＩの目標値を設定する目標値設定部、顧客プロファイルデータベースに含まれる顧客の基本属性に係る係数を用い、前記マーケティングの施策反応率である前記ＫＰＩの予測値を、過去に実施したマーケティング施策事例を参照して算出する施策反応率算出部、及び、前記予測値が前記目標値を超えるときに、前記マーケティングの施策の実施を推薦する最適施策推薦部を有する」マーケティング施策最適化装置が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−１１８９７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
強化学習を実現するためのモデルの設計作業では、複数のＫＰＩの各々の制御目的を考慮した報酬のモデル（報酬関数）を設計する必要がある。このような報酬のモデルを設計するのは非常に難しく、現状では、ユーザが試行錯誤して報酬を設計している。したがって、モデルの構築作業の負担、特に、報酬の設計の負担を低減することが要求されている。
【０００６】
本発明は、報酬の設計の負担低減を実現する方法及びシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、計算機が実行する、強化学習における報酬を算出するための報酬関数の生成方法であって、前記計算機は、プロセッサ、前記プロセッサに接続されるメモリ、及び前記プロセッサに接続されるネットワークインタフェースを有し、前記報酬関数の生成方法は、前記プロセッサが、重要業績評価指標に関する情報である設定データを複数含む報酬関数の生成指示の入力を受け付ける第１のステップと、前記プロセッサが、一つの前記設定データに対して一つの部分報酬関数を生成し、前記メモリに格納する第２のステップと、前記プロセッサが、前記複数の部分報酬関数の線形結合を前記報酬関数として生成し、前記メモリに格納する第３のステップと、前記プロセッサが、前記強化学習を実行する計算機に、前記生成された報酬関数に関する情報を出力する第４のステップと、を含む。
【発明の効果】
【０００８】
本発明によれば、報酬の設計の負担を低減できる。前述した以外の課題、構成及び効果は、以下の実施例の説明によって明らかにされる。
【図面の簡単な説明】
【０００９】
【図１】実施例１の計算機システムのハードウェア構成を示す図である。
【図２】実施例１の計算機システムのソフトウェア構成を示す図である。
【図３】実施例１の計算機システムにおけるソフトウェア間の動作の一例を示す図である。
【図４】実施例１のＫＰＩ最適化管理サーバが提供するインタフェースの一例を示す図である。
【図５】実施例１の報酬関数管理情報のデータ構造の一例を示す図である。
【図６】実施例１の関数定義情報のデータ構造の一例を示す図である。
【図７】実施例１の強化学習評価情報のデータ構造の一例を示す図である。
【図８】実施例１のデータベースのデータ構造の一例を示す図である。
【図９】実施例１の報酬関数生成部が実行する報酬関数生成処理の一例を説明するフローチャートである。
【図１０】実施例１の強化学習評価部が実行する評価処理の一例を説明するフローチャートである。
【図１１】実施例１の報酬関数生成部が実行する報酬関数修正処理の一例を説明するフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【００１１】
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。
【００１２】
本明細書等における「第１」、「第２」、「第３」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。
【００１３】
図面等において示す各構成の位置、大きさ、形状、及び範囲等は、発明の理解を容易にするため、実際の位置、大きさ、形状、及び範囲等を表していない場合がある。したがって、本発明では、図面等に開示された位置、大きさ、形状、及び範囲等に限定されない。
【００１４】
本明細書では、「報酬関数」は報酬のモデルを表し、「報酬」は報酬関数を用いて算出される値を表す。
【実施例１】
【００１５】
図１は、実施例１の計算機システムのハードウェア構成を示す図である。
【００１６】
図１に示す計算機システムは、強化学習実行サーバ１００、ＫＰＩ最適化管理サーバ１１０、及びユーザ端末１２０から構成される。各装置はネットワーク１４０を介して互いに接続される。なお、ネットワーク１４０の種類としては、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）及びＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等が考えられる。また、ネットワーク１４０の接続方式は有線又は無線のいずれでもよい。
【００１７】
強化学習実行サーバ１００は、モデルにしたがって強化学習を実行する。強化学習では、所定の終了条件を満たすまでエージェント及び環境間の相互作用を複数回実行する学習処理が繰り返し実行される。本明細書では、１回の学習処理におけるエージェント及び環境間の相互作用の回数の単位をステップと定義し、強化学習における学習処理の回数の単位をエピソードと定義する。
【００１８】
強化学習実行サーバ１００は、ハードウェアとして、ＣＰＵ１０１、メモリ１０２、ストレージ装置１０３、及びネットワークインタフェース１０４を有する。各ハードウェアは内部バス等を介して接続される。
【００１９】
ＣＰＵ１０１は、メモリ１０２に格納されるプログラムを実行する。ＣＰＵ１０１がプログラムにしたがって処理を実行することによって、所定の機能を有する機能部（モジュール）として動作する。以下の説明では、機能部を主語に処理を説明する場合、ＣＰＵ１０１が、当該機能部を実現するプログラムを実行していることを表す。
【００２０】
メモリ１０２は、ＣＰＵ１０１が実行するプログラム及び当該プログラムに必要な情報を格納する。また、メモリ１０２は、プログラムが一時的に使用するワークエリアを含む。
【００２１】
ストレージ装置１０３は、データを永続的に格納する。ストレージ装置１０３は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶媒体、又は不揮発性メモリ等が考えられる。なお、メモリ１０２に格納されるプログラム及び情報は、ストレージ装置１０３に格納されてもよい。この場合、ＣＰＵ１０１は、ストレージ装置１０３からプログラム及び情報を読み出し、メモリ１０２にプログラム及び情報をロードし、また、メモリ１０２にロードされたプログラムを実行する。
【００２２】
ネットワークインタフェース１０４は、ネットワークを介して他の装置と接続する。
【００２３】
ＫＰＩ最適化管理サーバ１１０は、ＫＰＩに関する情報に基づいて、モデルに含める報酬関数を自動的に生成する。また、ＫＰＩ最適化管理サーバ１１０は、強化学習の結果に基づいて報酬関数を修正する。ＫＰＩ最適化管理サーバ１１０は、ハードウェアとして、ＣＰＵ１１１、メモリ１１２、ストレージ装置１１３、及びネットワークインタフェース１１４を有する。各ハードウェアは内部バス等を介して接続される。
【００２４】
ＣＰＵ１１１、メモリ１１２、ストレージ装置１１３、及びネットワークインタフェース１１４は、ＣＰＵ１０１、メモリ１０２、ストレージ装置１０３、及びネットワークインタフェース１０４と同様のハードウェアである。
【００２５】
ＫＰＩに関する情報には、ＫＰＩの定義情報、及び、強化学習におけるＫＰＩの制御目的に関する情報が含まれる。強化学習におけるＫＰＩの制御目的には、「制約」及び「目標」の二つの種別が存在する。「制約」は、ＫＰＩの範囲等、ＫＰＩが満たすべき条件を示す。「目標」はＫＰＩの操作目標等を示す。操作目標には、例えば、ＫＰＩの最小化及びＫＰＩの最大化がある。
【００２６】
ユーザ端末１２０は、ユーザが使用する端末である。実施例１では、ユーザは、ユーザ端末１２０を用いて、強化学習のモデルのパラメータ及びＫＰＩに関する情報等を入力する。ユーザ端末１２０は、ハードウェアとして、ＣＰＵ１２１、メモリ１２２、ストレージ装置１２３、ネットワークインタフェース１２４、入力装置１２５、及び出力装置１２６を有する。各ハードウェアは内部バス等を介して接続される。
【００２７】
ＣＰＵ１２１、メモリ１２２、ストレージ装置１２３、及びネットワークインタフェース１２４は、ＣＰＵ１０１、メモリ１０２、ストレージ装置１０３、及びネットワークインタフェース１０４と同様のハードウェアである。
【００２８】
入力装置１２５は、データ等を入力するための装置であり、キーボード、マウス、及びタッチパネル等を含む。出力装置１２６は、データ等を出力するための装置であり、ディスプレイ及びタッチパネル等を含む。
【００２９】
実施例１では、強化学習の実行、及び、報酬関数の生成のタスクを別々の計算機が実行するように構成されているが、一つの計算機が二つのタスクを実行するように構成してもよい。例えば、強化学習実行サーバ１００及びＫＰＩ最適化管理サーバ１１０を一つの計算機上で稼働する仮想計算機として実現してもよい。
【００３０】
図２は、実施例１の計算機システムのソフトウェア構成を示す図である。
【００３１】
強化学習実行サーバ１００は、強化学習実行部２０１、問題調整部２０２、及び環境実行部２０３を実現するプログラムを格納し、また、データベース２０４を保持する。
【００３２】
強化学習実行部２０１は、強化学習におけるエージェントとして機能する。強化学習実行部２０１は、環境（環境実行部２０３）から出力される環境の状態及び報酬の値等の情報を取得し、取得した情報及び施策に基づいて行動を選択する。また、強化学習実行部２０１は、選択した行動に関する情報を環境実行部２０３に出力する。
【００３３】
環境実行部２０３は、強化学習における環境として機能する。環境実行部２０３は、強化学習実行部２０１から出力される行動に関する情報を取得し、取得した情報及び現在の環境の状態に基づいて、状態の遷移のシミュレーションを実行する。また、環境実行部２０３は、シミュレーションの結果として遷移後の環境の状態を示す情報を強化学習実行部２０１に出力する。
【００３４】
問題調整部２０２は、強化学習実行部２０１及び環境実行部２０３間の入出力を制御する。問題調整部２０２は、環境実行部２０３の代わりに報酬関数を管理し、環境実行部２０３が出力した情報及び報酬関数に基づいて報酬を算出する。
【００３５】
実施例１では、強化学習の結果に基づいて報酬関数が更新される。これに伴って、エージェント及び環境間の相互作用において入出力される情報が変化する。そこで、問題調整部２０２が、エージェント及び環境間の相互作用における入出力を調整する。
【００３６】
データベース２０４は、強化学習の結果を格納する。データベース２０４に格納される情報の詳細は図８を用いて説明する。
【００３７】
なお、強化学習実行サーバ１００が有する機能部については、複数の機能部を一つの機能部にまとめてもよいし、一つの機能部を機能毎に複数の機能部に分けてもよい。例えば、強化学習実行部２０１、問題調整部２０２、及び環境実行部２０３をまとめて学習部としてもよい。
【００３８】
ＫＰＩ最適化管理サーバ１１０は、問題設定部２１１、報酬関数生成部２１２、強化学習評価部２１３、及び結果出力部２１４を実現するプログラムを格納し、また、報酬関数管理情報２１５、関数定義情報２１６、及び強化学習評価情報２１７を保持する。
【００３９】
報酬関数管理情報２１５は、報酬関数を生成するための各種情報を管理するための情報である。報酬関数管理情報２１５の詳細は図５を用いて説明する。
【００４０】
関数定義情報２１６は、報酬関数を構成する部分報酬関数を生成するための関数の定義を管理するための情報である。関数定義情報２１６の詳細は図６を用いて説明する。
【００４１】
強化学習評価情報２１７は、強化学習の評価結果を管理するための情報である。強化学習評価情報２１７の詳細は図７を用いて説明する。
【００４２】
問題設定部２１１は、強化学習のモデルのパラメータ及びＫＰＩに関する情報等を入力するためのインタフェースを提供する。問題設定部２１１は、インタフェースを介して入力された情報に基づいて、環境実行定義情報３０１、状態／行動定義情報３０２、及び強化学習定義情報３０３を生成する。また、問題設定部２１１は、インタフェースを介して入力された情報に基づいて報酬関数管理情報２１５を生成する。
【００４３】
報酬関数生成部２１２は、報酬関数管理情報２１５に基づいて報酬関数を生成し、当該報酬関数に関する情報を報酬関数定義情報３０４として生成する。実施例１の報酬関数は、式（１）に示すように複数の部分報酬関数（報酬項）の線形結合として定義される。
【００４４】
【数１】
2020035320.tif 000003
【００４５】
ここで、Ｒ（ｓ，ａ）は状態ｓにおいて行動ａを行った場合に与えられる報酬を算出するための報酬関数である。ｒはＫＰＩに関する関数であり、αは重みである。重みαを乗算した関数ｒが一つの部分報酬関数に対応する。また、ｊは添字である。
【００４６】
強化学習評価部２１３は、強化学習の結果を評価し、評価結果に基づいて強化学習評価情報２１７を生成する。
【００４７】
結果出力部２１４は、強化学習の処理結果及び評価結果等を提示するための情報をユーザ端末１２０に出力する。
【００４８】
なお、ＫＰＩ最適化管理サーバ１１０が有する機能部については、複数の機能部を一つの機能部にまとめてもよいし、一つの機能部を機能毎に複数の機能部に分けてもよい。例えば、報酬関数生成部２１２が有する機能を問題設定部２１１に含めてもよい。
【００４９】
ユーザ端末１２０は、ＫＰＩ最適化管理サーバ１１０が提供するインタフェースを操作するためのアプリケーション２２１を実現するプログラムを格納する。
【００５０】
図３は、実施例１の計算機システムにおけるソフトウェア間の動作の一例を示す図である。図４は、実施例１のＫＰＩ最適化管理サーバ１１０が提供するインタフェースの一例を示す図である。
【００５１】
ＫＰＩ最適化管理サーバ１１０は、ユーザ端末１２０のアプリケーション２２１から操作要求を受け付けた場合、問題設定部２１１を呼び出す。問題設定部２１１は、インタフェースとして図４に示すようなＧＵＩ４００をユーザ端末１２０に提示する。ここで、ＧＵＩ４００について説明する。
【００５２】
ＧＵＩ４００は、ＫＰＩ最適化管理サーバ１１０によって提供されるインタフェースであって、出力装置１２６に表示される。ＧＵＩ４００は、モデル情報入力欄４０１、報酬情報入力欄４０２、及び設定ボタン４０３を含む。
【００５３】
モデル情報入力欄４０１は、環境、環境の状態、エージェントの行動、及び学習処理等に関する情報を設定するため欄である。モデル情報入力欄４０１は、入力欄４１１、４１２、４１３を含む。
【００５４】
入力欄４１１は、環境を定義する情報を入力する欄である。入力欄４１１に設定された情報は、環境実行定義情報３０１として入力される。本実施例では、環境実行定義情報３０１にＫＰＩの定義情報が含まれるものとする。なお、ＫＰＩの定義情報は個別の情報として入力されてもよい。入力欄４１２は、状態及び行動を定義する情報を入力する欄である。入力欄４１２に設定された情報は、状態／行動定義情報３０２として入力される。入力欄４１３は、学習方法を定義する情報を入力する欄である。入力欄４１３に設定された情報は、強化学習定義情報３０３として入力される。入力欄４１１、４１２、４１３には、例えば、設定ファイルのパスが設定される。
【００５５】
報酬情報入力欄４０２は、報酬関数の生成及び報酬関数の修正に必要な情報を設定するための欄である。報酬情報入力欄４０２は、報酬管理テーブル４２０、追加ボタン４３０、削除ボタン４３５、及び説明欄４４０を含む。
【００５６】
報酬管理テーブル４２０は、ＫＰＩに関する情報を格納するエントリを複数含む。エントリは、ＫＰＩ名４２１、条件４２２、目的４２３、制御値４２４、優先度４２５、及び修正方法４２６から構成される。後述するように、一つのエントリに対して一つの部分報酬関数が生成される。以下の説明では一つのエントリを設定データとも記載する。
【００５７】
ＫＰＩ名４２１は、ＫＰＩの識別情報を格納するフィールドである。ＫＰＩ名４２１には、例えば、ＫＰＩの名称又は種別を表す文字列が格納される。
【００５８】
条件４２２は、ＫＰＩ名４２１に対応するＫＰＩに関する報酬を与えるタイミング、すなわち、報酬の算出タイミングを示す値を格納するフィールドである。条件４２２は、１エピソードの終了時に報酬を与えることを表す「Ｇｏａｌ」及び１ステップの終了時に報酬を与えることを表す「Ｓｔｅｐ」等が格納される。
【００５９】
目的４２３は、ＫＰＩの制御目的の種別を示す情報を格納するフィールドである。目的４２３には「制約」及び目標を示す値のいずれかが格納される。目標を示す値としては、ＫＰＩの最大化を示す「ｍａｘ」及びＫＰＩの最小化を示す「ｍｉｎ」がある。
【００６０】
制御値４２４は、制約として設定するＫＰＩの範囲に関する情報を格納するフィールドである。「ｈａｒｄ」は必ず満たすべき制約であることを示す。
【００６１】
優先度４２５は、ＫＰＩの制御目的の優先順位を示す値を格納するフィールドである。本実施例では、「１」が最も優先順位が上位であるものとする。すなわち、数値が「１」に近いほど優先順位が高いことを表す。
【００６２】
修正方法４２６は、部分報酬関数の修正方法を指定するための欄である。例えば、強化学習が実行された後の環境において、制約を満たさない場合、又は、目標を達成できない場合等に、部分報酬関数が修正される。修正方法４２６には、説明欄４４０に示す識別番号が格納される。
【００６３】
追加ボタン４３０は、報酬管理テーブル４２０にエントリを追加するための操作ボタンである。ユーザが追加ボタン４３０を操作した場合、報酬管理テーブル４２０にエントリが追加される。ユーザは、追加されたエントリに必要な値を設定する。なお、ユーザは、任意のタイミングで、エントリに設定された値を修正できる。
【００６４】
削除ボタン４３５は、報酬管理テーブル４２０からエントリを削除するための操作ボタンである。ユーザが、報酬管理テーブル４２０のエントリを選択し、削除ボタン４３５を操作した場合、報酬管理テーブル４２０からエントリが削除される。
【００６５】
説明欄４４０は、修正方法の識別番号及び修正方法の内容を示す欄である。
【００６６】
設定ボタン４０３は、ＧＵＩ４００に入力した情報をＫＰＩ最適化管理サーバ１１０に送信するための操作ボタンである。
【００６７】
図３の説明に戻る。
【００６８】
問題設定部２１１は、ＧＵＩ４００を介して入力された各種情報を受け付ける。問題設定部２１１は、報酬情報入力欄４０２の報酬管理テーブル４２０を報酬関数管理情報２１５としてメモリ１１２に格納する。問題設定部２１１は、ＧＵＩ４００を介して入力された環境実行定義情報３０１、状態／行動定義情報３０２、及び強化学習定義情報３０３を強化学習実行サーバ１００に送信する。また、問題設定部２１１は、報酬関数管理情報２１５を含む報酬関数の生成指示を報酬関数生成部２１２に送信する。このとき、問題設定部２１１は、環境実行定義情報３０１等に含まれるＫＰＩの定義情報も合わせて送信する。
【００６９】
環境実行定義情報３０１は、環境のパラメータの種別及び各パラメータが取りうる値の範囲等に関する情報を含み、強化学習定義情報３０３は、行動の種別等に関する情報を含む。
【００７０】
報酬関数生成部２１２は、報酬関数管理情報２１５及び関数定義情報２１６に基づいて報酬関数を生成し、報酬関数定義情報３０４として強化学習実行サーバ１００に送信する。
【００７１】
強化学習実行サーバ１００は、環境実行定義情報３０１に基づいて環境実行部２０３を生成し、強化学習定義情報３０３に基づいて強化学習実行部２０１を生成する。また、強化学習実行サーバ１００は、状態／行動定義情報３０２及び報酬関数定義情報３０４に基づいて問題調整部２０２を生成する。
【００７２】
報酬関数生成部２１２は、強化学習実行部２０１に処理の実行を指示する制御信号を出力する。強化学習実行サーバ１００は、当該制御信号の受信を契機に強化学習を開始する。
【００７３】
問題調整部２０２は、１エピソードにおける各ステップの相互作用の内容、ＫＰＩ、及び報酬をデータベース２０４に格納する。
【００７４】
強化学習評価部２１３は、強化学習が終了した場合、強化学習評価部２１３に処理の終了を通知する。強化学習評価部２１３は、当該通知を受信した場合、データベース２０４から学習結果を取得し、強化学習の評価処理を実行する。強化学習評価部２１３は、評価処理の結果を強化学習評価情報２１７として生成し、報酬関数生成部２１２及び結果出力部２１４に出力する。
【００７５】
結果出力部２１４は、評価結果を示すＧＵＩをユーザ端末１２０に提示する。報酬関数生成部２１２は、強化学習評価情報２１７に基づいて、修正が必要な部分報酬関数を特定し、修正方法４２６に設定された修正方法に基づいて、特定された部分報酬関数を修正する。報酬関数生成部２１２は、修正内容に基づいて報酬関数管理情報２１５を更新する。
【００７６】
このように、実施例１のシステムは、ＫＰＩに関する情報に基づいて、報酬関数を自動的に生成する。また、システムは、生成された報酬関数を用いた強化学習の評価結果に基づいて、報酬関数を修正する。強化学習の評価結果に基づいて報酬関数を修正することによって、対象とする問題に適した報酬関数を提示できる。また、当該報酬関数を用いた強化学習を実行することによって、より最適な方策を得ることができる。
【００７７】
図５は、実施例１の報酬関数管理情報２１５のデータ構造の一例を示す図である。
【００７８】
報酬関数管理情報２１５は、ＩＤ５０１、ＫＰＩ名５０２、条件５０３、目的５０４、制御値５０５、優先度５０６、修正方法５０７、関数５０８、及び重み５０９から構成されるエントリを複数含む。一つのエントリが一つの部分報酬関数に対応する。
【００７９】
ＫＰＩ名５０２、条件５０３、目的５０４、制御値５０５、優先度５０６、及び修正方法５０７は、ＫＰＩ名４２１、条件４２２、目的４２３、制御値４２４、優先度４２５、及び修正方法４２６と同一のフィールドである。
【００８０】
ＩＤ５０１は、エントリを一意に識別するための識別情報を格納するフィールドである。関数５０８は、関数ｒを格納するフィールドである。重み５０９は、重みαの値を格納するフィールドである。
【００８１】
ここで、報酬管理テーブル４２０から報酬関数管理情報２１５を生成する処理について説明する。
【００８２】
（処理１）問題設定部２１１は、報酬関数管理情報２１５を初期化する。
【００８３】
（処理２）問題設定部２１１は、報酬管理テーブル４２０からエントリを一つ選択し、報酬関数管理情報２１５にエントリを一つ追加する。問題設定部２１１は、追加されたエントリのＩＤ５０１に識別番号を設定する。識別番号は昇順に設定される。問題設定部２１１は、追加されたエントリのＫＰＩ名５０２、条件５０３、目的５０４、制御値５０５、優先度５０６、及び修正方法５０７のそれぞれに、選択されたエントリのＫＰＩ名４２１、条件４２２、目的４２３、制御値４２４、優先度４２５、及び修正方法４２６の値を設定する。
【００８４】
問題設定部２１１は、報酬管理テーブル４２０の全てのエントリに対して、（処理２）を繰り返し実行する。以上の処理によって、報酬関数管理情報２１５が生成される。なお、この時点では、関数５０８及び重み５０９は空欄である。
【００８５】
図６は、実施例１の関数定義情報２１６のデータ構造の一例を示す図である。
【００８６】
関数定義情報２１６は、条件６０１、目的６０２、関数タイプ６０３、及びペナルティ関数タイプ６０４から構成されるエントリを複数含む。一つのエントリが一つの関数の定義情報に対応する。
【００８７】
条件６０１及び目的６０２は、条件４２２及び目的４２３と同一のフィールドである。
【００８８】
関数タイプ６０３は、条件６０１及び目的６０２の組合せに対して定義された関数のタイプを示す情報を格納するフィールドである。ペナルティ関数タイプは、目標を満たすようにＫＰＩを誘導するためのペナルティ関数のタイプを示す情報を格納するフィールドである。なお、具体的な関数は、ＫＰＩに関連するパラメータに基づいて生成される。
【００８９】
図７は、実施例１の強化学習評価情報２１７のデータ構造の一例を示す図である。
【００９０】
強化学習評価情報２１７は、強化学習における１エピソード単位の評価結果を示す評価テーブル７００を複数含む。評価テーブル７００にはエピソードの順番が付与される。
【００９１】
評価テーブル７００は、ＫＰＩ名７０１、条件７０２、目的７０３、制御値７０４、評価７０５、及び寄与度７０６から構成されるエントリを複数含む。評価テーブル７００には、設定データと同数のエントリが存在する。
【００９２】
ＫＰＩ名７０１、条件７０２、目的７０３、及び制御値７０４は、ＫＰＩ名４２１、条件４２２、目的４２３、及び制御値４２４と同一のフィールドである。
【００９３】
評価７０５は、制約を満たすか否かを示す値を格納するフィールドである。制約に関連しないエントリの評価７０５は空欄となる。寄与度７０６は、行動の選択に対する、部分報酬関数の値の寄与の大きさを表す数値を格納するフィールドである。
【００９４】
図８は、実施例１のデータベース２０４のデータ構造の一例を示す図である。
【００９５】
データベース２０４は、１エピソード単位の強化学習の実行結果を示す学習結果テーブル８００を複数含む。学習結果テーブル８００にはエピソードの順番が付与される。
【００９６】
学習結果テーブル８００は、ステップ８０１、状態８０２、行動８０３、報酬８０４、及びＫＰＩ８０５から構成されるエントリを複数含む。学習結果テーブル８００には、１エピソード内で行われた相互作用（ステップ）の数だけエントリが存在する。
【００９７】
ステップ８０１は、ステップの識別番号を格納するフィールドである。ステップ８０１に設定される識別番号と、エントリに対応する相互作用の実行順番とは一致する。状態８０２は、環境の状態を示す値を格納するフィールドである。行動８０３は、状態８０２に対応する環境の状態の下で行われた行動を示す情報を格納するフィールドである。報酬８０４は、状態８０２に対応する環境の状態の下で行動８０３に対する行動を行った場合に得られた報酬を格納するフィールドである。ＫＰＩ８０５は、行動が行われた後のＫＰＩを格納するフィールド群である。
【００９８】
問題調整部２０２は、学習処理の実行前に、実行予定のエピソードに対応する学習結果テーブル８００を生成する。問題調整部２０２は、１ステップの処理が実行された後、生成された学習結果テーブル８００にエントリを追加し、追加されたエントリのステップ８０１に実行されたステップの識別番号を設定する。
【００９９】
問題調整部２０２は、追加されたエントリの状態８０２に環境実行部２０３から取得した状態の値を設定し、当該エントリの行動８０３に強化学習実行部２０１から取得した行動の値を設定する。問題調整部２０２は、報酬関数に基づいて報酬を算出し、追加されたエントリの報酬８０４に算出された報酬を設定する。また、問題調整部２０２は、ＫＰＩを算出し、追加されたエントリのＫＰＩ８０５に算出されたＫＰＩを設定する。なお、ＫＰＩは、環境実行部２０３等が算出してもよい。
【０１００】
図９は、実施例１の報酬関数生成部２１２が実行する報酬関数生成処理の一例を説明するフローチャートである。
【０１０１】
報酬関数生成部２１２は、報酬関数管理情報２１５の入力を受け付けた場合、以下で説明する処理を開始する。
【０１０２】
報酬関数生成部２１２は、優先度５０６の値に基づいて、報酬関数管理情報２１５のエントリをソートする（ステップＳ１０１）。ここでは、報酬関数生成部２１２は、優先順位の高い順にエントリをソートする。
【０１０３】
次に、報酬関数生成部２１２は、設定データのループ処理を開始する（ステップＳ１０２）。
【０１０４】
具体的には、報酬関数生成部２１２は、優先順位の高い順に、すなわち、報酬関数管理情報２１５の上から順にエントリ（設定データ）を一つ選択する。
【０１０５】
次に、報酬関数生成部２１２は、選択されたエントリ及び関数定義情報２１６に基づいて関数ｒを生成する（ステップＳ１０３）。具体的には、以下のような処理が実行される。
【０１０６】
報酬関数生成部２１２は、関数定義情報２１６を参照し、条件６０１及び目的６０２の値の組合せが、選択されたエントリの条件５０３及び目的５０４の値の組合せと一致するエントリを検索する。
【０１０７】
報酬関数生成部２１２は、検索されたエントリの関数タイプ６０３に格納される関数の定義情報を取得する。報酬関数生成部２１２は、ＫＰＩの定義情報及び関数の定義情報に基づいて関数ｒを生成する。以上がステップＳ１０２の処理の説明である。
【０１０８】
次に、報酬関数生成部２１２は、選択されたエントリの優先度５０６の値に基づいて、部分報酬関数を用いて算出される値の大きさを規定するスケールファクタを算出する（ステップＳ１０４）。
【０１０９】
実施例１では、高い優先順位が設定された設定データに基づいて生成された部分報酬関数から大きな報酬が算出されるようにスケールが調整される。例えば、優先度５０６が「１」の部分報酬関数のスケールファクタは１０６と算出され、優先度５０６が「２」の部分報酬関数のスケールファクタは１０５と算出される。
【０１１０】
報酬関数生成部２１２は、選択されたエントリの関数５０８に、関数ｒにスケールファクタを乗算した関数を設定する。
【０１１１】
次に、報酬関数生成部２１２は、ＫＰＩの定義情報に基づいて、重みαを算出する（ステップＳ１０５）。
【０１１２】
例えば、式（２）に示すようなＫＰＩの定義域に対して、重みαは式（３）のように算出される。
【０１１３】
【数２】
2020035320.tif 000004
【０１１４】
【数３】
2020035320.tif 000005
【０１１５】
報酬関数生成部２１２は、選択されたエントリの重み５０９に算出された重みを設定する。なお、報酬関数生成部２１２は、ＫＰＩの定義情報及びスケールファクタに基づいて重みαを算出してもよい。また、ＫＰＩの定義域の他に、制約として設定された値の範囲を含めて重みαが算出されてもよい。
【０１１６】
次に、報酬関数生成部２１２は、全ての設定データについて処理が完了したか否かを判定する（ステップＳ１０６）。
【０１１７】
全ての設定データについて処理が完了していないと判定された場合、報酬関数生成部２１２は、ステップＳ１０２に戻り、同様の処理を実行する。
【０１１８】
全ての設定データについて処理が完了したと判定された場合、報酬関数生成部２１２は、報酬関数を生成し（ステップＳ１０７）、当該報酬関数に関する情報を含む報酬関数定義情報３０４を生成する（ステップＳ１０８）。報酬関数生成部２１２は、報酬関数定義情報３０４を強化学習実行サーバ１００に送信し、報酬関数生成処理を終了する。
【０１１９】
具体的には、報酬関数生成部２１２は、関数５０８に重み５０９を乗算して得られる部分報酬関数の線形結合として報酬関数を生成する。
【０１２０】
図１０は、実施例１の強化学習評価部２１３が実行する評価処理の一例を説明するフローチャートである。
【０１２１】
強化学習評価部２１３は、強化学習実行部２０１から処理の終了通知を受信した場合、以下で説明する処理を開始する。
【０１２２】
強化学習評価部２１３は、エピソードのループ処理を開始する（ステップＳ２０１）。
【０１２３】
具体的には、強化学習評価部２１３は、データベース２０４にアクセスし、学習結果テーブル８００を一つ取得する。このとき、強化学習評価部２１３は、報酬関数管理情報２１５を取得する。なお、強化学習評価部２１３は、エピソードの実行順に学習結果テーブル８００を取得する。
【０１２４】
次に、強化学習評価部２１３は、学習結果テーブル８００に基づいて、ＫＰＩに対して設定された制約に関する評価を行う（ステップＳ２０２）。具体的には、以下のような処理が実行される。
【０１２５】
強化学習評価部２１３は、学習結果テーブル８００の最後のエントリのＫＰＩ８０５と、報酬関数管理情報２１５の制約に関連するエントリとを参照し、制約を満たしているか否かを判定する。制約が複数存在する場合、各制約に対して判定が行われる。
【０１２６】
制約を満たしていると判定された場合、強化学習評価部２１３は、制約を識別する情報及び評価結果「ｔｒｕｅ」を対応づけて、ワークエリアに一時的に格納する。制約を満たしていないと判定された場合、強化学習評価部２１３は、制約を識別する情報及び評価結果「ｆａｌｓｅ」を対応づけて、ワークエリアに一時的に格納する。以上が、ステップＳ２０２の処理の説明である。
【０１２７】
次に、強化学習評価部２１３は、ステップのループ処理を開始する（ステップＳ２０３）。
【０１２８】
具体的には、強化学習評価部２１３は、学習結果テーブル８００からエントリを一つ選択する。なお、エントリはステップ順に選択される。
【０１２９】
次に、強化学習評価部２１３は、選択されたエントリに対応するステップにおける部分報酬関数の値を算出する（ステップＳ２０４）。
【０１３０】
具体的には、強化学習評価部２１３は、選択されたステップに対応するエントリの状態８０２、行動８０３、及びＫＰＩ８０５、並びに、報酬関数管理情報２１５に基づいて、各部分報酬関数の値を算出する。このとき、強化学習評価部２１３は、ステップの識別番号、ＩＤ５０１、及び部分報酬関数の値を対応づけたテーブルを生成し、ワークエリアに一時的に格納する。
【０１３１】
次に、強化学習評価部２１３は、全てのステップについて処理が完了したか否かを判定する（ステップＳ２０５）。
【０１３２】
全てのステップについて処理が完了していないと判定された場合、強化学習評価部２１３は、ステップＳ２０３に戻り、同様の処理を実行する。
【０１３３】
全てのステップについて処理が完了したと判定された場合、強化学習評価部２１３は、各部分報酬関数の寄与度を算出する（ステップＳ２０６）。具体的には、以下のような処理が実行される。
【０１３４】
強化学習評価部２１３は、ターゲット部分報酬関数を選択し、ステップＳ２０４において生成されたテーブルから各ステップのターゲット部分報酬関数の値に、エピソードの終端から減衰係数を乗算する。
【０１３５】
強化学習評価部２１３は、各ステップの値を合計することによって、ターゲット部分報酬関数の期待値を算出する。強化学習評価部２１３は、各部分報酬関数の期待値に基づいて、部分報酬関数の寄与度を算出する。例えば、期待値の比率が寄与度として算出される。
【０１３６】
なお、前述した寄与度の算出方法は一例であってこれに限定されない。以上がステップＳ２０６の処理の説明である。
【０１３７】
次に、強化学習評価部２１３は、選択したエピソードに対応する評価テーブル７００を生成する（ステップＳ２０７）。具体的には、以下のような処理が実行される。
【０１３８】
強化学習評価部２１３は、報酬関数管理情報２１５からエントリを選択する。強化学習評価部２１３は、評価テーブル７００にエントリを追加し、追加されたエントリに、ＫＰＩ名７０１、条件７０２、及び目的７０３に、選択されたエントリのＫＰＩ名５０２、条件５０３、及び目的５０４の値を設定する。
【０１３９】
選択されたエントリが制約に関連するエントリである場合、強化学習評価部２１３は、追加されたエントリの評価７０５に、ワークエリアに格納される評価結果を設定する。強化学習評価部２１３は、追加されたエントリの寄与度７０６に、選択されたエントリに対応する部分報酬関数の寄与度を設定する。
【０１４０】
強化学習評価部２１３は、報酬関数管理情報２１５の全てのエントリについて同様の処理を実行する。以上がステップＳ２０７の処理の説明である。
【０１４１】
次に、強化学習評価部２１３は、全てのエピソードについて処理が完了したか否かを判定する（ステップＳ２０８）。
【０１４２】
全てのエピソードについて処理が完了していないと判定された場合、強化学習評価部２１３は、ステップＳ２０１に戻り、同様の処理を実行する。
【０１４３】
全てのエピソードについて処理が完了したと判定された場合、強化学習評価部２１３は、評価処理を終了する。このとき、強化学習評価部２１３は、複数の評価テーブル７００を含む強化学習評価情報２１７を、報酬関数生成部２１２及び結果出力部２１４に出力する。
【０１４４】
図１１は、実施例１の報酬関数生成部２１２が実行する報酬関数修正処理の一例を説明するフローチャートである。
【０１４５】
報酬関数生成部２１２は、強化学習評価情報２１７を受け付けた場合、以下で説明する処理を開始する。
【０１４６】
報酬関数生成部２１２は、エピソードのループ処理を開始する（ステップＳ３０１）。
【０１４７】
具体的には、報酬関数生成部２１２は、強化学習評価情報２１７から評価テーブル７００を一つ取得する。なお、報酬関数生成部２１２は、エピソードの実行順に評価テーブル７００を取得する。
【０１４８】
次に、報酬関数生成部２１２は、寄与度７０６の値の大きさに基づいて、評価テーブル７００のエントリをソートする（ステップＳ３０２）。ここでは、寄与度の大きい順にエントリがソートされる。このとき、報酬関数生成部２１２は、優先順位に基づいてエントリをソートした場合の各エントリ（各部分報酬関数）の順番を第一ソート順として管理し、また、寄与度の大きさに基づいてソートした場合の各エントリ（各部分報酬関数）の順番を第二ソート順として管理する。
【０１４９】
次に、報酬関数生成部２１２は、設定データのループ処理を開始する（ステップＳ３０３）。
【０１５０】
具体的には、報酬関数生成部２１２は、評価テーブル７００の上から順にエントリを一つ選択する。
【０１５１】
次に、報酬関数生成部２１２は、選択されたエントリが制約に関連するエントリであるか否かを判定する（ステップＳ３０４）。
【０１５２】
具体的には、報酬関数生成部２１２は、選択されたエントリの評価７０５に値が設定されているか否かを判定する。選択されたエントリの評価７０５に値が設定されている場合、報酬関数生成部２１２は、選択されたエントリが制約に関連するエントリであると判定する。
【０１５３】
選択されたエントリが制約に関連するエントリではないと判定された場合、報酬関数生成部２１２は、ステップＳ３０７に進む。
【０１５４】
選択されたエントリが制約に関連するエントリであると判定された場合、報酬関数生成部２１２は、当該エントリの評価７０５に設定された値が「ｔｒｕｅ」であるか否かを判定する（ステップＳ３０５）。
【０１５５】
選択されたエントリの評価７０５に設定された値が「ｔｒｕｅ」であると判定された場合、報酬関数生成部２１２はステップＳ３０７に進む。
【０１５６】
選択されたエントリの評価７０５に設定された値が「ｔｒｕｅ」でないと判定された場合、報酬関数生成部２１２は、選択されたエントリに対応する部分報酬関数を修正する（ステップＳ３０６）。その後、報酬関数生成部２１２はステップＳ３０７に進む。具体的には、以下のような処理が実行される。
【０１５７】
報酬関数生成部２１２は、報酬関数管理情報２１５を参照し、ＫＰＩ名５０２、条件５０３、及び目的５０４の値の組合せが、選択されたエントリのＫＰＩ名７０１、条件７０２、及び目的７０３の値の組合せに一致するエントリを検索する。
【０１５８】
報酬関数生成部２１２は、検索されたエントリの修正方法５０７に設定された値にしたがって、部分報酬関数を修正する。例えば、修正方法５０７に「１」が設定されている場合、報酬関数生成部２１２は、関数定義情報２１６を参照し、条件６０１及び目的６０２の値の組合せが、選択されたエントリの条件７０２及び目的７０３の値の組合せに一致するエントリを検索する。報酬関数生成部２１２は、検索されたエントリのペナルティ関数タイプ６０４及びＫＰＩの定義情報に基づいて、元の関数とペナルティ項との和を新たな関数ｒとして生成する。なお、関数ｒの修正に伴って重みが修正されてもよい。
【０１５９】
報酬関数生成部２１２は、報酬関数管理情報２１５から検索されたエントリの関数５０８に修正された部分報酬関数を設定する。以上がステップＳ３０６の処理の説明である。
【０１６０】
ステップＳ３０７では、報酬関数生成部２１２は、選択されたエントリについて、第一ソート順及び第二ソート順が一致するか否かを判定する（ステップＳ３０７）。
【０１６１】
例えば、優先度５０６の値に基づくソート結果である第一ソート順が「３」で、寄与度７０６の値に基づくソート結果である第二ソート順が「４」である場合、報酬関数生成部２１２は、第一ソート順及び第二ソート順は一致しないと判定する。
【０１６２】
実施例１では、優先度５０６の値に基づいて、二つのソート順が一致するようにスケールファクタが算出されている。しかし、優先度５０６及び寄与度７０６に基づくソート順に不整合が発生している場合、報酬の設定が適切でないことを意味する。そのため、このような不整合の発生が検知された場合、報酬関数生成部２１２は部分報酬関数を修正する。
【０１６３】
第一ソート順及び第二ソート順が一致すると判定された場合、報酬関数生成部２１２は、ステップＳ３０９に進む。
【０１６４】
第一ソート順及び第二ソート順が一致しないと判定された場合、報酬関数生成部２１２は、当該不整合を解消できるように部分報酬関数を修正する（ステップＳ３０８）。その後、報酬関数生成部２１２はステップＳ３０９に進む。
【０１６５】
具体的には、報酬関数生成部２１２は、他の部分報酬関数の寄与度の関係に基づいて、重みαを更新する。報酬関数生成部２１２は、報酬関数管理情報２１５から検索されたエントリの重み５０９に更新された重みαを設定する。
【０１６６】
ステップＳ３０９では、報酬関数生成部２１２は、選択された評価テーブル７００に設定された全ての設定データの処理が完了したか否かを判定する（ステップＳ３０９）。
【０１６７】
選択された評価テーブル７００に設定された全ての設定データの処理が完了していないと判定された場合、報酬関数生成部２１２は、ステップＳ３０３に戻り、同様の処理を実行する。
【０１６８】
選択された評価テーブル７００に設定された全ての設定データの処理が完了したと判定された場合、報酬関数生成部２１２は、全てのエピソードについて処理が完了したか否かを判定する（ステップＳ３１０）。すなわち、報酬関数生成部２１２は、強化学習評価情報２１７に含まれる全ての評価テーブル７００の処理が完了したか否かを判定する。
【０１６９】
全てのエピソードについて処理が完了していないと判定された場合、報酬関数生成部２１２は、ステップＳ３０１に戻り、同様の処理を実行する。
【０１７０】
全てのエピソードについて処理が完了したと判定された場合、報酬関数生成部２１２は、報酬関数修正処理を終了する。
【０１７１】
以上で説明したように、実施例１に示すシステムは、ＫＰＩに関する情報に基づいて、報酬関数を自動的に生成する。これによって、報酬の設計の負担を低減できる。したがって、処理時間及び運用費用等、強化学習に要するコストを削減できる。また、システムは、強化学習の結果に基づいて、報酬関数を修正する。これによって、より適切な学習が可能となり、最適な方策を取得できる。
【０１７２】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【０１７３】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるＣＰＵが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０１７４】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｐｙｔｈｏｎ、Ｊａｖａ等の広範囲のプログラム又はスクリプト言語で実装できる。
【０１７５】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるＣＰＵが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【０１７６】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【０１７７】
１００  強化学習実行サーバ
１１０  ＫＰＩ最適化管理サーバ
１２０  ユーザ端末
１０１、１１１、１２１  ＣＰＵ
１０２、１１２、１２２  メモリ
１０３、１１３、１２３  ストレージ装置
１０４、１１４、１２４  ネットワークインタフェース
１２５  入力装置
１２６  出力装置
１４０  ネットワーク
２０１  強化学習実行部
２０２  問題調整部
２０３  環境実行部
２０４  データベース
２１１  問題設定部
２１２  報酬関数生成部
２１３  強化学習評価部
２１４  結果出力部
２１５  報酬関数管理情報
２１６  関数定義情報
２１７  強化学習評価情報
２２１  アプリケーション
３０１  環境実行定義情報
３０２  状態／行動定義情報
３０３  強化学習定義情報
３０４  報酬関数定義情報
４００  ＧＵＩ
４２０  報酬管理テーブル
７００  評価テーブル
８００  学習結果テーブル
【図１】
2020035320.tif 000006
【図２】
2020035320.tif 000007
【図３】
2020035320.tif 000008
【図４】
2020035320.tif 000009
【図５】
2020035320.tif 000010
【図６】
2020035320.tif 000011
【図７】
2020035320.tif 000012
【図８】
2020035320.tif 000013
【図９】
2020035320.tif 000014
【図１０】
2020035320.tif 000015
【図１１】
2020035320.tif 000016