(57)【要約】  複数の制御対象の各々の最適化を行う計算機システムであって、計算機システムは、プロセッサ、及びプロセッサに接続されるメモリを有する少なくとも一つの計算機を備え、制御対象毎に、制御対象の状態及び行動に対する報酬を定義する報酬関数情報を管理し、複数の報酬関数情報は、第１の制御対象の報酬を定義する第１の報酬関数情報及び第２の制御対象の報酬を定義する第２の報酬関数情報を含み、プロセッサは、第１の報酬関数情報の更新を行う場合、第１の報酬関数情報及び第２の報酬関数情報のそれぞれの報酬を比較して、第２の報酬関数情報に設定された報酬の中から第１の報酬関数情報に反映させる報酬を特定し、特定された報酬に基づいて第１の報酬関数情報を更新し、第１の報酬関数情報を用いて、第１の制御対象の最適な行動を決定する。
2018070038.tif 000002
【特許請求の範囲】
【請求項１】
複数の制御対象の各々の最適化を行う計算機システムであって、
前記計算機システムは、プロセッサ、及び前記プロセッサに接続されるメモリを有する少なくとも一つの計算機を備え、
制御対象毎に、制御対象の状態及び行動に対する報酬を定義する報酬関数情報を管理し、
前記複数の報酬関数情報は、第１の制御対象の前記報酬を定義する第１の報酬関数情報及び第２の制御対象の前記報酬を定義する第２の報酬関数情報を含み、
前記プロセッサは、
前記第１の報酬関数情報の更新を行う場合、前記第１の報酬関数情報及び前記第２の報酬関数情報のそれぞれの前記報酬を比較して、前記第２の報酬関数情報に設定された報酬の中から前記第１の報酬関数情報に反映させる報酬を特定し、
前記特定された報酬に基づいて前記第１の報酬関数情報を更新し、
前記第１の報酬関数情報を用いて、前記第１の制御対象の最適な行動を決定することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記報酬関数情報は、前記状態及び前記行動の少なくともいずれかから定義される条件、前記条件を満たす場合に与えられる前記報酬、及び前記報酬の統計的な信頼性を示す信頼値から構成されるエントリを含み、
前記プロセッサは、
前記第１の報酬関数情報の前記条件及び前記第２の報酬関数情報の前記条件を参照して、比較する二つのエントリを特定し、
前記特定された二つのエントリの前記信頼値に基づいて、前記第２の報酬関数情報から特定されたエントリに含まれる前記報酬を、前記第１の報酬関数情報から特定されたエントリに含まれる前記報酬として反映させるか否かを判定し、
前記第２の報酬関数情報から特定されたエントリに含まれる前記報酬を、前記第１の報酬関数情報から特定されたエントリに含まれる前記報酬として反映させる場合、前記第１の報酬関数情報から特定されたエントリに、前記第２の報酬関数情報から特定されたエントリに含まれる前記報酬を設定することを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記少なくとも一つの計算機は、前記複数の報酬関数情報の条件を構成する状態の属性を管理するための属性情報を管理し、
前記プロセッサは、
前記第１の報酬関数情報から第１のエントリを選択し、
前記属性情報に基づいて、前記第２の報酬関数情報に含まれるエントリの中から、前記第１のエントリに含まれる条件と類似する条件が設定される第２のエントリを特定し、
前記第１のエントリに含まれる前記信頼値及び前記第２のエントリに含まれる前記信頼値に基づいて、前記第２のエントリに含まれる前記報酬を前記第１のエントリに含まれる前記報酬に反映させるか否かを判定することを特徴とする計算機システム。
【請求項４】
請求項３に記載の計算機システムであって、
前記プロセッサは、
前記第１の報酬関数情報を用いて、前記第１の制御対象の最適な行動の組み合わせを決定した後、前記条件と、前記第１の制御対象の最適な行動を規定する目的変数値との間の関連性を示す関連値を算出し、
前記関連値に基づいて前記信頼値を算出することを特徴とする計算機システム。
【請求項５】
請求項４に記載の計算機システムであって、
前記プロセッサは、
前記第１の報酬関数情報を用いて、前記第１の制御対象の最適な行動の組み合わせを決定した後、前記第１のエントリに含まれる報酬の前記目的変数値に対する寄与の大きさを示す寄与値を算出し、
前記寄与値に基づいて前記第１のエントリに含まれる前記信頼値を更新することを特徴とする計算機システム。
【請求項６】
請求項５に記載の計算機システムであって、
前記プロセッサは、前記寄与値が前記目的変数値に対する前記第１のエントリに含まれる報酬の寄与が小さいことを示す値である場合、前記第１のエントリに含まれる前記信頼値を統計的な信頼性が低いことを示す値に更新することを特徴とする計算機システム。
【請求項７】
複数の制御対象の各々の最適化を行う計算機システムにおける制御方法であって、
前記計算機システムは、プロセッサ、及び前記プロセッサに接続されるメモリを有する少なくとも一つの計算機を備え、
制御対象毎に、制御対象の状態及び行動に対する報酬を定義する報酬関数情報を管理し、
前記複数の報酬関数情報は、第１の制御対象の前記報酬を定義する第１の報酬関数情報及び第２の制御対象の前記報酬を定義する第２の報酬関数情報を含み、
前記制御方法は、
前記プロセッサが、前記第１の報酬関数情報の更新を行う場合、前記第１の報酬関数情報及び前記第２の報酬関数情報のそれぞれの前記報酬を比較して、前記第２の報酬関数情報に設定された報酬の中から前記第１の報酬関数情報に反映させる報酬を特定する第１のステップと、
前記プロセッサが、前記特定された報酬に基づいて前記第１の報酬関数情報を更新する第２のステップと、
前記プロセッサが、前記第１の報酬関数情報を用いて、前記第１の制御対象の最適な行動を決定する第３のステップと、を含むことを特徴とする制御方法。
【請求項８】
請求項７に記載の制御方法であって、
前記報酬関数情報は、前記状態及び前記行動の少なくともいずれかから定義される条件、前記条件を満たす場合に与えられる前記報酬、及び前記報酬の統計的な信頼性を示す信頼値から構成されるエントリを含み、
前記第１のステップは、
前記プロセッサが、前記第１の報酬関数情報の前記条件及び前記第２の報酬関数情報の前記条件を参照して、比較する二つのエントリを特定するステップと、
前記プロセッサが、前記特定された二つのエントリの前記信頼値に基づいて、前記第２の報酬関数情報から特定されたエントリに含まれる前記報酬を、前記第１の報酬関数情報から特定されたエントリに含まれる前記報酬として反映させるか否かを判定するステップと、を含み、
前記第２のステップは、前記第２の報酬関数情報から特定されたエントリに含まれる前記報酬を、前記第１の報酬関数情報から特定されたエントリに含まれる前記報酬として反映させる場合、前記プロセッサが、前記第１の報酬関数情報から特定されたエントリに、前記第２の報酬関数情報から特定されたエントリに含まれる前記報酬を設定するステップを含むことを特徴とする制御方法。
【請求項９】
請求項８に記載の制御方法であって、
前記少なくとも一つの計算機は、前記複数の報酬関数情報の条件を構成する状態の属性を管理するための属性情報を管理し、
前記第１のステップは、
前記プロセッサが、前記第１の報酬関数情報から第１のエントリを選択するステップと、
前記プロセッサが、前記属性情報に基づいて、前記第２の報酬関数情報に含まれるエントリの中から、前記第１のエントリに含まれる条件と類似する条件が設定される第２のエントリを特定するステップと、
前記プロセッサが、前記第１のエントリに含まれる前記信頼値及び前記第２のエントリに含まれる前記信頼値に基づいて、前記第２のエントリに含まれる前記報酬を前記第１のエントリに含まれる前記報酬に反映させるか否かを判定するステップと、を含むことを特徴とする制御方法。
【請求項１０】
請求項９に記載の制御方法であって、
前記プロセッサが、前記第１の報酬関数情報を用いて、前記第１の制御対象の最適な行動の組み合わせを決定した後、前記条件と、前記第１の制御対象の最適な行動を規定する目的変数値との間の関連性を示す関連値を算出するステップと、
前記プロセッサが、前記関連値に基づいて前記信頼値を算出するステップと、を含むことを特徴とする制御方法。
【請求項１１】
請求項１０に記載の制御方法であって、
前記プロセッサが、前記第１の報酬関数情報を用いて、前記第１の制御対象の最適な行動の組み合わせを決定した後、前記第１のエントリに含まれる報酬の前記目的変数値に対する寄与の大きさを示す寄与値を算出する第４のステップと、
前記プロセッサが、前記寄与値に基づいて前記第１のエントリに含まれる前記信頼値を更新する第５のステップと、を含むことを特徴とする制御方法。
【請求項１２】
請求項１１に記載の制御方法であって、
前記第５のステップは、前記寄与値が前記目的変数値に対する前記第１のエントリに含まれる報酬の寄与が小さいことを示す値である場合、前記プロセッサが、前記第１のエントリに含まれる前記信頼値を統計的な信頼性が低いことを示す値に更新するステップを含むことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、強化学習に基づく複数の制御対象の最適化技術に関する。
【背景技術】
【０００２】
近年、ビッグデータと呼ばれる大量の情報間の未知の関係を解析する技術が発展してきている。このような情報間の関係を解析する目的の一つは、情報間の関係を表す評価式を用いて、システムを最適化するためである。【０００３】
例えば、特許文献１には、「マスター機器が、複数の家電機器それぞれに対応する複数の家電機器エージェント３０ａ〜３０ｅと、複数の家電機器エージェント３０ａ〜３０ｅそれぞれに対して、複数の家電機器から得られる複数の機器情報を入力して、複数の家電機器エージェント３０ａ〜３０ｅから得られる制御コマンドを複数の家電機器に出力し、その結果、複数の家電機器から得られる状態変化量により報酬を算出し、当該報酬をパラメータとして複数の家電機器エージェント３０ａ〜３０ｅの価値関数を更新するエージェント管理部３７とを有する。」ことが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−９９１１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
強化学習に基づくシステムの最適化では、効率的な処理が求められている。システムの最適化では、複数のシステムで情報共有をすることによって最適化をより効率的にすることが可能である。しかし、目的が異なる複数のシステムの各々を最適化する場合、特許文献１のようにマスター機器を用いて管理することができない。そのため、個々の学習器が連携でいないため、効率的な強化学習を実現できない。【０００６】
本発明は、目的が異なる複数のシステムの各々を高速に最適化することができる計算機システム及び方法を実現することを目的とする。
【課題を解決するための手段】
【０００７】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、複数の制御対象の各々の最適化を行う計算機システムであって、前記計算機システムは、プロセッサ、及び前記プロセッサに接続されるメモリを有する少なくとも一つの計算機を備え、制御対象毎に、制御対象の状態及び行動に対する報酬を定義する報酬関数情報を管理し、前記複数の報酬関数情報は、第１の制御対象の前記報酬を定義する第１の報酬関数情報及び第２の制御対象の前記報酬を定義する第２の報酬関数情報を含み、前記プロセッサは、前記第１の報酬関数情報の更新を行う場合、前記第１の報酬関数情報及び前記第２の報酬関数情報のそれぞれの前記報酬を比較して、前記第２の報酬関数情報に設定された報酬の中から前記第１の報酬関数情報に反映させる報酬を特定し、前記特定された報酬に基づいて前記第１の報酬関数情報を更新し、前記第１の報酬関数情報を用いて、前記第１の制御対象の最適な行動を決定することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、異なる制御対象に対して使用される報酬を共有することによって、効率的に個々の制御対象を効率化することができる。前述した以外の課題、構成及び効果は、以下の実施例の説明によって明らかにされる。
【図面の簡単な説明】
【０００９】
【図１】実施例１のシステムの構成例を示す図である。
【図２】実施例１のサーバが実行する処理の概要を示す図である。
【図３】実施例１のステート／アクション情報の一例を示す図である。
【図４】実施例１の目的変数情報の一例を示す図である。
【図５】実施例１の報酬関数情報の一例を示す図である。
【図６】実施例１の報酬関数共有情報の一例を示す図である。
【図７】実施例１の強化学習モジュールが実行する処理の一例を説明するフローチャートである。
【図８】実施例１の報酬関係抽出モジュールが実行する処理の一例を説明するフローチャートである。
【図９】実施例１の報酬共有モジュールが実行する処理の一例を示す図である。
【図１０】実施例１の強化学習方式の効果を示す図である。
【図１１】実施例２のシステムの構成例を示す図である。
【図１２】実施例２の属性情報の一例を示す図である。
【図１３】実施例２の実施例１のサーバが実行する処理の概要を示す図である。
【図１４】実施例２の報酬共有モジュールが実行する処理の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明の一実施形態を、図面を参照して説明する。各図において共通の構成については同一の参照符号が付されている。
【実施例１】
【００１１】
図１は、実施例１のシステムの構成例を示す図である。【００１２】
実施例１のシステムは、サーバ１００、第１のエージェント１５０−１、第２のエージェント１５０−２、及び第３のエージェント１５０−３から構成される。サーバ１００は、ネットワーク１６０を介して、第１のエージェント１５０−１、第２のエージェント１５０−２、及び第３のエージェント１５０−３と接続する。以下の説明では、第１のエージェント１５０−１、第２のエージェント１５０−２、及び第３のエージェント１５０−３を区別しない場合、エージェント１５０と記載する。【００１３】
なお、ネットワーク１６０は、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等が考えられる。また、ネットワーク１６０の接続方式は、無線又は有線のいずれでもよい。【００１４】
エージェント１５０は制御対象である。本実施例のエージェント１５０は、環境のステートを示す値を取得し、また、サーバ１００の指示にしたがってアクションを行う。各エージェント１５０には目的が設定される。例えば、特定の作業の高速化が目的として設定される。本実施例では、目的は目的変数として管理される。以下の説明では、目的変数の値を目的変数値とも記載する。【００１５】
本実施例では、各エージェント１５０は、アクション及び目的が類似するが、独自の制御構造を持つものとする。また、一つのエージェント１５０に設定された目的は、他のエージェントに設定された目的とは依存関係を有さないものとする。【００１６】
サーバ１００は、エージェント１５０が取得した値に基づいてアクションを決定する強化学習を実行する。ここで、サーバ１００のハードウェア構成及びソフトウェア構成について説明する。【００１７】
サーバ１００は、演算装置１０１、主記憶装置１０２、副記憶装置１０３、ネットワークインタフェース１０４、入力装置１０５、及び出力装置１０６を有する。各ハードウェアは、内部バス等を介して互いに接続される。【００１８】
演算装置１０１は、プログラムにしたがって演算処理を実行する。演算装置１０１は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）及びＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等が考えられる。演算装置１０１が、主記憶装置１０２に格納されるプログラムを実行することによって、所定の機能を実現するモジュールとして動作する。【００１９】
主記憶装置１０２は、演算装置１０１が実行するプログラム及び情報を格納する。また、主記憶装置１０２は、プログラムが一時的に使用するワークエリアを含む。主記憶装置１０２は、例えば、ＤＲＡＭ（ＤＹＮＡＭＩＣ  ＲＡＮＤＯＭ  ＡＣＣＥＳＳ  ＭＥＭＯＲＹ）等のアクセスが高速な揮発性の記憶装置が考えられる。主記憶装置１０２に格納されるプログラムについては後述する。【００２０】
副記憶装置１０３は、永続的にデータを格納する。副記憶装置１０３は、例えば、磁気記憶装置及びフラッシュメモリ等の容量が大きい不揮発性の記憶装置が考えられる。副記憶装置１０３に格納される情報について後述する。【００２１】
なお、主記憶装置１０２に格納されるプログラムは、副記憶装置１０３に格納されてもよい。この場合、演算装置１０１が、副記憶装置１０３からプログラムを読み出し、主記憶装置１０２にプログラムをロードする。【００２２】
ネットワークインタフェース１０４は、ネットワークを介して他の装置と接続するためのインタフェースである。入力装置１０５は、サーバ１００にデータを入力するための装置であり、例えば、マウス、キーボード、及びタッチパネル等が考えられる。出力装置１０６は、処理結果等のデータを出力するための装置であり、例えば、ディスプレイ及びタッチパネル等が考えられる。【００２３】
ここで、主記憶装置１０２に格納されるプログラム及び副記憶装置１０３に格納される情報について説明する。【００２４】
主記憶装置１０２は、強化学習モジュール１１１、報酬関係抽出モジュール１１２、通信モジュール１１３、及び報酬共有モジュール１１４を実現するプログラムを格納する。なお、主記憶装置１０２は、ＯＳ等のプログラムが格納されるが、本実施例とは直接関係しないため省略している。【００２５】
通信モジュール１１３は、エージェント１５０との間の通信を制御する。【００２６】
強化学習モジュール１１１は、強化学習を実行する。強化学習モジュール１１１が実行する処理の詳細は、図７を用いて説明する。【００２７】
報酬関係抽出モジュール１１２は、ステート／アクション情報１２１を用いた統計処理を実行することによって目的変数値と関連性がある要因（条件）を特定し、当該要因（条件）に基づいて報酬を更新する。報酬関係抽出モジュール１１２が実行する処理の詳細は、図８を用いて説明する。【００２８】
報酬共有モジュール１１４は、エージェント１５０間の報酬の共有を制御する。報酬共有モジュール１１４が実行する処理の詳細は、図９を用いて説明する。【００２９】
なお、強化学習モジュール１１１、報酬関係抽出モジュール１１２、及び通信モジュール１１３は、エージェント１５０毎に存在する。【００３０】
副記憶装置１０３は、ステート／アクション情報１２１、目的変数情報１２２、報酬関数情報１２３、及び報酬関数共有情報１２４を格納する。【００３１】
ステート／アクション情報１２１は、エピソード単位でエージェント１５０のステート及びアクションを管理する情報である。ステート／アクション情報１２１の詳細は、図３を用いて説明する。ここで、エピソードとは、初期状態から終端状態までの一連の動作単位を表す。【００３２】
目的変数情報１２２は、エージェント１５０に設定された目的に対応する目的変数値を管理する情報である。サーバ１００は、強化学習を実行することによって、目的変数値が最適な値になるように最適なアクションの組み合わせ等を学習する。例えば、目的変数値が大きくなるアクションの組み合わせ、目的変数値が小さくなるアクションの組み合わせ、又は、目的変数値が所定の設定値に集束するアクションの組み合わせ等が学習される。目的変数情報１２２の詳細は、図４を用いて説明する。【００３３】
報酬関数情報１２３は、強化学習モジュール１１１がアクションを決定する場合に使用する報酬関数の情報である。報酬関数情報１２３の詳細は、図５を用いて説明する。【００３４】
報酬関数共有情報１２４は、各エージェント１５０の報酬関数を管理する情報である。報酬関数共有情報１２４の詳細は、図６を用いて説明する。【００３５】
なお、ステート／アクション情報１２１、目的変数情報１２２、及び報酬関数情報１２３は、エージェント毎に存在する。【００３６】
図２は、実施例１のサーバ１００が実行する処理の概要を示す図である。【００３７】
本実施例では、各エージェント１５０に対する強化学習は非同期に行われるものとする。なお、各強化学習がシリアルに実行されてもよい。【００３８】
図２は、第１のエージェント１５０−１に対する強化学習及び第２のエージェント１５０−２に対する強化学習が非同期に実行されている様子を示す。なお、非同期に実行される強化学習の数が三つ以上でも同様の構成となる。【００３９】
通信モジュール１１３は、エピソードが開始してからエピソードが終了するまでエージェント１５０から現在のステートの値を取得し、また、エピソードが終了した場合、目的変数値を取得する。通信モジュール１１３は、取得したステートの値及び目的変数値を強化学習モジュール１１１に送信する。強化学習モジュール１１１は、ステートの値、アクションの値、及び報酬関数情報１２３に基づく強化学習を実行することによって、アクションを決定する。通信モジュール１１３は、強化学習モジュール１１１によって決定されたアクションをエージェント１５０に送信する。【００４０】
強化学習モジュール１１１は、ステート／アクション情報１２１にステート及びアクションの値を登録し、また、目的変数情報１２２に目的変数値を登録する。また、強化学習モジュール１１１は、所定のタイミングで、報酬関係抽出モジュール１１２を呼び出す。【００４１】
報酬関係抽出モジュール１１２は、ステート／アクション情報１２１及び目的変数情報１２２を用いた統計処理を実行することによって、報酬を与える要因（条件）と目的変数値との間の関連性に基づいて、報酬関数情報１２３を更新する。【００４２】
報酬共有モジュール１１４は、更新された報酬関数情報１２３を報酬関数共有情報１２４に登録する。また、報酬共有モジュール１１４は、他のエージェント１５０に対する強化学習に用いられた報酬関数情報１２３を参照し、統計的な信頼性の高い報酬が存在するか否かを判定する。統計的な信頼性の高い報酬が存在する場合、報酬共有モジュール１１４は、更新された報酬関数情報１２３に当該報酬を反映することによって当該報酬関数情報１２３を修正する。【００４３】
強化学習モジュール１１１は、前述のような手順によって修正された報酬関数情報１２３を用いて強化学習を実行する。【００４４】
図３は、実施例１のステート／アクション情報１２１の一例を示す図である。【００４５】
ステート／アクション情報１２１は、エピソード３０１、時間３０２、ステート３０３、及びアクション３０４から構成されるエントリを含む。一つのエントリが一つのエピソードに対応する。【００４６】
エピソード３０１は、エピソードを一意に識別するための識別情報である。エピソードが開始してからエピソードが終了する前で間には、一つ以上のアクションが行われる。したがって、ステート／アクション情報１２１には、エピソード３０１が同一のエントリが一つ以上含まれる。【００４７】
時間３０２は、エピソードにおいてアクションを決定するための処理の時刻である。時間３０２には、例えば、エージェント１５０がステートの値を取得した時刻又はアクションが行われた時刻が設定される。【００４８】
ステート３０３は、ステートの値である。ステート３０３には、エージェント１５０が取得するステートの数だけ列が存在する。ステートの種類毎にステート変数が設定される。図３では、三つのステートが取得されていることを示す。【００４９】
アクション３０４は、アクションの値である。アクション３０４には、強化学習において決定されるアクションの数だけ列が存在する。アクションの種類毎にアクション変数が設定される。図３では、一つのアクションが実行されることを示す。【００５０】
図３の一番上のエントリは、エピソードＥ１に対応するエピソードであり、時刻Ｔ１においてステート変数Ｓ１がＳ１１、ステート変数Ｓ２がＳ２３、ステート変数Ｓ３がＳ３２であり、アクション変数Ａ１１に対応するアクションが実行されたこと示す。また、エピソードＥ１では、時間Ｔ１、Ｔ２、Ｔ３、Ｔ４、Ｔ５のそれぞれの時刻でアクションが行われたことを示す。【００５１】
図４は、実施例１の目的変数情報１２２の一例を示す図である。【００５２】
目的変数情報１２２は、エピソード４０１及び目的変数４０２から構成されるエントリを含む。一つのエントリが一つの目的変数に対応する。本実施例では、制御対象毎に目的が設定される。例えば、開始位置からものをつかむという動作を一つのエピソードとして管理する場合、ものをつかむまでの時間が目的として設定される。【００５３】
エピソード４０１は、エピソード３０１と同一のものである。目的変数４０２は、制御対象に設定された目的に対応する目的変数値である。【００５４】
図５は、実施例１の報酬関数情報１２３の一例を示す図である。【００５５】
報酬関数情報１２３は、条件ＩＤ５０１、変数名５０２、値５０３、報酬５０４、及び信頼値５０５から構成されるエントリを含む。【００５６】
条件ＩＤ５０１は、条件を一意に識別するための識別情報である。【００５７】
変数名５０２は、ステート変数及びアクション変数の名称である。値５０３は、変数名５０２に対応する変数の具体的な値である。報酬が与えられる条件は、一つ以上の変数（ステート変数及びアクション変数）の値の組み合わせとして定義される。なお、変数名５０２及び値５０３は、報酬関数共有情報１２４と同様に、条件６０２（図６参照）として管理してもよい。【００５８】
報酬５０４は、変数名５０２及び値５０３によって定義された条件に一致する場合に与えられる報酬である。【００５９】
信頼値５０５は、報酬５０４に設定された値の統計的な信頼性を示す値である。【００６０】
条件ＩＤ５０１が「Ｃ１」の条件は、ステート変数Ｓ１がＳ１１、ステート変数Ｓ２がＳ２３、アクション変数Ａ１がＡ１１である。当該条件に一致するエピソードは、他のエピソードより目的変数値が０．１だけ高いことを意味する。また、当該条件は、前述した目的変数値の差がランダムに発生する確率が５％以下であることを意味する。【００６１】
図６は、実施例１の報酬関数共有情報１２４の一例を示す図である。【００６２】
報酬関数共有情報１２４は、エージェントＩＤ６０１、条件６０２、報酬６０３、及び信頼値６０４から構成されるエントリを含む。【００６３】
エージェントＩＤ６０１は、エージェント１５０を一意に識別するための識別情報である。【００６４】
条件６０２は、一つの条件を定義する変数の名称及び値を格納する。なお、条件６０２は、報酬関数情報１２３と同様に、変数名５０２及び値５０３に分けて管理してもよい。【００６５】
報酬６０３は、報酬５０４と同一のものである。信頼値６０４は、信頼値５０５と同一のものである。【００６６】
図７は、実施例１の強化学習モジュール１１１が実行する処理の一例を説明するフローチャートである。【００６７】
強化学習モジュール１１１は、処理を開始すると、エージェント１５０からのステートの値の送信を待つ。強化学習モジュール１１１は、通信モジュール１１３を介して、エージェント１５０からステートの値を受信した場合（ステップＳ７０１）、報酬関数情報１２３を参照して（ステップＳ７０２）、重みＱを更新する（ステップＳ７０３）。具体的には、以下のような処理が実行される。【００６８】
強化学習モジュール１１１は、任意の戦略にしたがってアクションを選択する。【００６９】
強化学習モジュール１１１は、ステートの値及びアクションの値に基づいて報酬関数情報１２３を参照し、当てはまる条件を特定する。さらに、強化学習モジュール１１１は、特定された条件の報酬５０４の平均値又は合計値を報酬として算出する。【００７０】
強化学習モジュール１１１は、エージェント１５０からアクションを行った後のステートの値を取得する。【００７１】
さらに、強化学習モジュール１１１は、下式（１）を用いて重みＱを更新する。【００７２】
【数１】
2018070038.tif 000003
【００７３】
ここで、Ａはアクションを表し、ＳＴ−１はアクションを行う前の状態を表し、また、ＳＴはアクションを行った後の状態を表す。αは学習係数を表し、０＜α≦１の範囲のパラメータである。Γは割引率を表し、０＜Γ≦１の範囲のパラメータである。Ｑ（ＳＴ，Ａ）は、状態ＳＴ−１の下でアクションＡを行った場合の重みである。【００７４】
強化学習モジュール１１１は、取り得る全てのアクションについて同様の処理を実行する。【００７５】
次に、強化学習モジュール１１１は、重みＱに基づいてアクションを選択し（ステップＳ７０４）、通信モジュール１１３を介して、選択されたアクションの実行指示をエージェント１５０に送信する（ステップＳ７０５）。このように、強化学習モジュール１１１は、重みＱに基づいて、制御対象の最適なアクションを決定できる。アクションの選択方法としては、例えば、重みＱが最大となるアクションを選択する方法が考えられる。なお、本実施例は、アクションの選択方法に限定されない。【００７６】
次に、強化学習モジュール１１１は、報酬関数情報１２３を更新するか否かを判定する（ステップＳ７０６）。本実施例では、更新条件を満たすか否かが判定される。更新条件は、例えば、以下のようなものが考えられる。【００７７】
発生したエピソードの数を基準とする更新方法が考えられる。具体的には、強化学習モジュール１１１は、発生したエピソードの数が所定の閾値以上である場合、報酬関数情報１２３を更新する。【００７８】
また、データのトレンドを基準とする更新方法も考えられる。具体的には、強化学習モジュール１１１は、ステート変数、アクション変数、又は目的変数の値が、過去の分布から所定の閾値以上ずれている場合、報酬関数情報１２３を更新する。【００７９】
また、目的変数値を基準とする更新方法も考えられる。具体的には、強化学習モジュール１１１は、現在の報酬関数情報１２３を用いても目的変数値が最適化されないことを検知した場合、報酬関数情報１２３を更新する。【００８０】
また、強化学習モジュール１１１は、ユーザから明示的に報酬関数情報１２３の更新指示を受け付けた場合、報酬関数情報１２３を更新する。【００８１】
報酬関数情報１２３を更新しないと判定された場合、強化学習モジュール１１１は、ステップＳ７０８に進む。【００８２】
報酬関数情報１２３を更新すると判定された場合、強化学習モジュール１１１は、報酬関係抽出モジュール１１２を呼び出し（ステップＳ７０７）、その後、ステップＳ７０８に進む。【００８３】
ステップＳ７０８では、強化学習モジュール１１１は、終了フラグが立っているか否かを判定する（ステップＳ７０８）。例えば、ユーザから終了指示を受け付けた場合、又は、エージェント１５０から終了指示を受け付けた場合、終了フラグが立っていると判定される。【００８４】
終了フラグが立っていないと判定された場合、強化学習モジュール１１１は、ステップＳ７０１に戻り、エージェント１５０からのステートの値の送信を待つ。【００８５】
終了フラグが立っていると判定された場合、強化学習モジュール１１１は、処理を終了する。【００８６】
なお、強化学習モジュール１１１は、エージェント１５０から目的変数値を受信した場合、目的変数値をエピソードの識別情報とともに目的変数情報１２２に登録する。【００８７】
図８は、実施例１の報酬関係抽出モジュール１１２が実行する処理の一例を説明するフローチャートである。【００８８】
報酬関係抽出モジュール１１２は、強化学習モジュール１１１から呼び出された場合、以下の処理を開始する。以下の説明では、報酬関係抽出モジュール１１２を呼び出した強化学習モジュール１１１をターゲット強化学習モジュール１１１とも記載する。【００８９】
報酬関係抽出モジュール１１２は、ターゲット強化学習モジュール１１１が使用するステート／アクション情報１２１を参照し、変数の（ステート変数／アクション変数）の組み合わせ生成する（ステップＳ８０１）。【００９０】
具体的には、報酬関係抽出モジュール１１２は、ステート変数及びアクション変数を要素とする集合から部分集合を生成する。なお、組み合わせの数の上限が設定されている場合、要素の数が多い組み合わせ又は要素の数が少ない組み合わせのいずれかを優先的に生成する。また、要素に含まれる変数を予め指定しておき、当該変数を含む組み合わせのみを生成するようにしてもよい。【００９１】
報酬関係抽出モジュール１１２は、生成された変数の組み合わせの中から、対象の変数の組み合わせを選択する（ステップＳ８０２）。【００９２】
次に、報酬関係抽出モジュール１１２は、ステート／アクション情報１２１を参照して、選択された変数の値を選択する（ステップＳ８０３）。当該変数の値の組み合わせが条件として設定される。【００９３】
変数の値の選択方法は、様々考えられる。例えば、ステート／アクション情報１２１に設定された値の中から値を選択する方法が考えられる。また、他の方法としては、変数が取り得る値の範囲の中から任意の値を選択するが考えられる。なお、変数が取りうる値が連続値である場合、クラスタリング等に基づいて複数の範囲に分割し、分割後の範囲から値を選択すればよい。【００９４】
次に、報酬関係抽出モジュール１１２は、設定された条件に基づいて、エピソードの特徴量を算出する（ステップＳ８０４）。【００９５】
本実施例では、報酬関係抽出モジュール１１２は、エピソード毎に、設定された条件に一致するアクションを含む確率を特徴量として算出する。例えば、条件がステート変数Ｓ１＝Ｓ１１、ステート変数Ｓ２＝Ｓ２３、アクション変数Ａ１＝Ａ１１である場合、エピソードＥ１のアクションの数が５であり、条件に一致するアクションの数は１であるため、当該エピソードの特徴量は２０％となる。報酬関係抽出モジュール１１２は、エピソードの数と同数の成分を有する特徴量ベクトルを生成する。なお、前述した特徴量は一例であって、これに限定されない。【００９６】
次に、報酬関係抽出モジュール１１２は、条件と目的変数値との間の関連性を示す値を算出する（ステップＳ８０５）。条件と目的変数値との間の関連性を示す値は、様々なものが考えられる。本実施例では、一例として以下のような方法に基づいて条件と目的変数値との間の関連性を示す値を算出する。【００９７】
報酬関係抽出モジュール１１２は、横軸が特徴量、縦軸が目的変数となる二次元空間に、各エピソードの特徴量及び目的変数値を成分とする点をプロットする。報酬関係抽出モジュール１１２は、特徴量の中央値で二次元空間を分割する。ここでは、特徴量が中央値より小さい領域を第１領域と定義し、特徴量が中央値以上の領域を第２領域と定義する。【００９８】
報酬関係抽出モジュール１１２は、第１領域に含まれるエピソードの目的変数値と第２領域に含まれるエピソードの目的変数値との間に統計的な差があるか否かを判定する。統計的な差は、各領域に含まれる目的変数値の平均値の差等が考えられる。【００９９】
二つの領域間の目的変数値に統計的な差がある場合、ステップＳ８０２及びステップＳ８０３において設定された条件に一致するアクションの数が多いほど、目的変数値が大きくなる。したがって、設定された条件に一致するアクションの数を増やすことによって、強化学習の速度が向上する可能性がある。【０１００】
二つの領域間の目的変数値に統計的な差が存在すると判定された場合、報酬関係抽出モジュール１１２は、ステップＳ８０６に進む。一方、二つの領域間の目的変数値に統計的な差が存在しないと判定された場合、報酬関係抽出モジュール１１２は、ステップＳ８０６を省略して、ステップＳ８０７に進む。【０１０１】
以上がステップＳ８０５の処理の説明である。【０１０２】
次に、報酬関係抽出モジュール１１２は、ターゲット強化学習モジュール１１１が使用する報酬関数情報１２３を更新する（ステップＳ８０６）。具体的には、以下のような処理が実行される。【０１０３】
報酬関係抽出モジュール１１２は、二つの領域間の目的変数値の差を、新たな報酬として算出し、また、二つの領域間の目的変数値の差の有意確率を信頼値として算出する。【０１０４】
報酬関係抽出モジュール１１２は、ターゲット強化学習モジュール１１１が使用する報酬関数情報１２３を参照し、変数名５０２の組み合わせがステップＳ８０２において選択された変数の組み合わせと一致し、かつ、値５０３がステップＳ８０３において選択された値の組み合わせに一致するエントリを検索する。すなわち、設定された条件に一致するエントリが検索される。報酬関係抽出モジュール１１２は、検索されたエントリの報酬５０４及び信頼値５０５に、算出された報酬及び信頼値を設定する。【０１０５】
以上が、ステップＳ８０６の説明である。【０１０６】
次に、報酬関係抽出モジュール１１２は、全ての変数の値の組み合わせについて処理が完了したか否かを判定する（ステップＳ８０７）。【０１０７】
全ての変数の値の組み合わせについて処理が完了していないと判定された場合、報酬関係抽出モジュール１１２は、ステップＳ８０３に戻り、新たな値の組み合わせについて同様の処理を実行する。【０１０８】
全ての変数の値の組み合わせについて処理が完了したと判定された場合、報酬関係抽出モジュール１１２は、全ての変数の組み合わせについて処理が完了したか否かを判定する（ステップＳ８０８）。【０１０９】
全ての変数の組み合わせについて処理が完了していないと判定された場合、報酬関係抽出モジュール１１２は、ステップＳ８０２に戻り、新たな変数の組み合わせについて同様の処理を実行する。【０１１０】
全ての変数の組み合わせについて処理が完了したと判定された場合、報酬関係抽出モジュール１１２は、報酬共有モジュール１１４を呼び出す（ステップＳ８０９）。その後、報酬関係抽出モジュール１１２は、処理を終了する。なお、報酬関係抽出モジュール１１２は、エージェント１５０の識別情報を報酬共有モジュール１１４に入力する。【０１１１】
なお、報酬関係抽出モジュール１１２は、ステート／アクション情報１２１に登録された全てのエントリを用いて前述した処理を実行してもよいし、発生時刻が現時刻と近い１００個のエピソードを用いて前述した処理を実行してもよい。【０１１２】
なお、報酬関係抽出モジュール１１２は、強化学習モジュール１１１から学習結果を取得し、目的変数に対する寄与値を算出し、寄与値が低い報酬の信頼値５０５の値を大きくしてもよい。これによって、強化学習の高速化に貢献する報酬のみが共有されるように制御できる。【０１１３】
図９は、実施例１の報酬共有モジュール１１４が実行する処理の一例を示す図である。【０１１４】
報酬共有モジュール１１４は、報酬関係抽出モジュール１１２から呼び出されると以下で説明する処理を開始する。以下の説明では、報酬共有モジュール１１４を呼び出した報酬関係抽出モジュール１１２をターゲット報酬関係抽出モジュール１１２とも記載する。【０１１５】
報酬共有モジュール１１４は、ターゲット報酬関係抽出モジュール１１２が使用する報酬関数情報１２３を読み出し（ステップＳ９０１）、報酬関数共有情報１２４を更新する（ステップＳ９０２）。具体的には、以下のような処理が実行される。【０１１６】
報酬共有モジュール１１４は、入力されたエージェント１５０の識別情報に基づいて報酬関数情報１２３を読み出す。報酬共有モジュール１１４は、読み出された報酬関数情報１２３からエントリを一つ選択し、エージェントＩＤ６０１が入力されたエージェント１５０の識別情報と一致し、かつ、条件６０２が選択されたエントリの変数名５０２及び値５０３によって定義される条件と一致するエントリを検索する。【０１１７】
エントリが存在しない場合、報酬共有モジュール１１４は、報酬関数共有情報１２４にエントリを追加し、追加されたエントリのエージェントＩＤ６０１にエージェント１５０の識別情報を設定する。報酬共有モジュール１１４は、追加されたエントリの条件６０２に、選択されたエントリの変数名５０２及び値５０３によって定義される条件を設定する。また、報酬共有モジュール１１４は、追加されたエントリの報酬６０３及び信頼値６０４に、選択されたエントリの報酬５０４及び信頼値５０５の値を設定する。【０１１８】
エントリが存在する場合、報酬共有モジュール１１４は、当該エントリの報酬６０３及び信頼値６０４に、選択されたエントリの報酬５０４及び信頼値５０５の値を上書きする。【０１１９】
報酬共有モジュール１１４は、報酬関数情報１２３の全てのエントリについて同様の処理を実行する。【０１２０】
なお、前述した報酬関数共有情報１２４の更新方法は一例であって、これに限定されない。例えば、（１）、（２）、（３）のような更新方法でもよい。【０１２１】
（１）エントリが存在する場合、報酬共有モジュール１１４は、選択されたエントリの信頼値５０５の値が検索されたエントリの信頼値６０４の値より大きい場合、又は、選択されたエントリの報酬５０４の値が検索されたエントリの報酬６０３の値より大きい場合、上書きを行う。【０１２２】
（２）報酬共有モジュール１１４は、信頼値５０５の値が閾値より大きいエントリのみを報酬関数共有情報１２４に登録する。【０１２３】
（３）報酬共有モジュール１１４は、過去の報酬関数情報１２３に対する上書きをせず、最新の報酬関数情報１２３をそのまま報酬関数共有情報１２４に登録する。報酬関数情報１２３には、報酬関数共有情報１２４の履歴が格納されることになる。この場合、報酬関数共有情報１２４のエントリには、報酬関数情報１２３が更新された時刻を示すカラムが含まれてもよい。【０１２４】
以上がステップＳ９０２の処理の説明である。【０１２５】
次に、報酬共有モジュール１１４は、読み出した報酬関数情報１２３に設定される条件（エントリ）の中から対象の条件（エントリ）を選択する（ステップＳ９０３）。【０１２６】
次に、報酬共有モジュール１１４は、読み出された報酬関数情報１２３とは異なる報酬関数情報１２３の条件（エントリ）と、選択された条件（エントリ）とを比較し（ステップＳ９０４）、他のエージェント１５０が使用する報酬を反映する必要があるか否かを判定する（ステップＳ９０５）。具体的には、以下のような処理が実行される。【０１２７】
報酬共有モジュール１１４は、条件６０２が、選択されたエントリの変数名５０２及び値５０３によって定義される条件と一致するエントリを検索する。なお、報酬関数情報１２３の全てのエントリを検索範囲としてもよいし、直近の期間内のエントリを検索範囲としてもよい。直近の期間内のエントリに絞ることによって、環境の変化に対する追従性を高めることができる。なお、読み出された報酬関数情報１２３とは異なる報酬関数情報１２３は、他のエージェント１５０が管理する報酬関数情報１２３、及び、同一のエージェント１５０の過去の報酬関数情報１２３のいずれでもよい。【０１２８】
報酬共有モジュール１１４は、検索されたエントリの信頼値６０４の値が、選択されたエントリの信頼値５０５の値より大きいエントリが存在するか否かを判定する。前述の条件を満たすエントリが存在する場合、報酬共有モジュール１１４は、他のエージェント１５０が使用する報酬を反映する必要があると判定する。【０１２９】
以上がステップＳ９０４及びステップＳ９０５の処理の説明である。【０１３０】
他のエージェント１５０が使用する報酬を反映する必要がないと判定された場合、報酬共有モジュール１１４は、ステップＳ９０７に進む。【０１３１】
他のエージェント１５０が使用する報酬を反映する必要があると判定された場合、報酬共有モジュール１１４は、送信された報酬関数情報１２３を更新する（ステップＳ９０６）。【０１３２】
具体的には、報酬共有モジュール１１４は、選択されたエントリの報酬５０４及び信頼値５０５に、検索されたエントリの報酬６０３及び信頼値６０４の値を設定する。なお、検索されたエントリが複数存在する場合、信頼値６０４が最も大きいエントリの報酬６０３及び信頼値６０４を設定するものとする。【０１３３】
次に、報酬共有モジュール１１４は、読み出された報酬関数情報１２３の全ての条件について処理が完了したか否かを判定する（ステップＳ９０７）。【０１３４】
読み出された報酬関数情報１２３の全ての条件について処理が完了していないと判定された場合、報酬共有モジュール１１４は、ステップＳ９０３に戻り、新たな条件について同様の処理を実行する。【０１３５】
読み出された報酬関数情報１２３の全ての条件について処理が完了したと判定された場合、報酬共有モジュール１１４は、処理を終了する。【０１３６】
以上で説明したように、報酬関係抽出モジュール１１２は、強化学習の結果に基づいて報酬関数情報１２３を更新し、また、報酬共有モジュール１１４は、他のエージェント１５０が使用する報酬関数情報１２３に基づいて報酬関数情報１２３を更新する。強化学習モジュール１１１は、更新された報酬関数情報１２３を用いて強化学習を実行する。【０１３７】
実施例１では、一つのサーバ１００に複数の強化学習モジュール１１１等を含む構成であったがこれに限定されない。制御対象ごとにサーバ１００を備える計算機システムでもよい。また、サーバ１００は、物理的な計算機でもよいし、仮想的な計算機でもよい。また、各モジュールを一つのモジュールに統合してもよいし、一つのモジュールを複数のモジュールに分割してもよい。【０１３８】
図１０は、実施例１の強化学習方式の効果を示す図である。【０１３９】
図１０は、エージェント１５０の数が１０である場合の強化学習の試行回数を示すグラフである。当該グラフの横軸は強化学習の試行回数を表し、縦軸は目的変数Ｙの値を示す。通常方式は従来の強化学習を示し、報酬共有方式は実施例１の強化学習を示す。ここでは、目的変数Ｙの値を設定値「１」に集束させる最適化を目的とした強化学習を想定する。【０１４０】
図１０に示すように、実施例１の強化学習を用いることによって、強化学習の試行回数を減少させることができる。すなわち、効率的な強化学習を実現することができる。強化学習を効率的に行うことによって、強化学習に要する時間を削減できる。
【実施例２】
【０１４１】
実施例２では、データの属性に基づいて共有する報酬を決定する点が実施例１と異なる。以下、実施例１との差異を中心に実施例２について説明する。【０１４２】
図１１は、実施例２のシステムの構成例を示す図である。【０１４３】
システムを構成する装置は、実施例１と同一である。また、実施例２のサーバ１００が備えるハードウェア構成は、実施例１のサーバ１００が備えるハードウェア構成と同一である。また、サーバ１００の主記憶装置１０２に格納されるプログラムは実施例１と同一である。実施例２では、サーバ１００の副記憶装置１０３に、ステート／アクション情報１２１、目的変数情報１２２、報酬関数情報１２３、及び報酬関数共有情報１２４の他に、属性情報１１０１が含まれる点が実施例１と異なる。【０１４４】
属性情報１１０１は、各エージェント１５０が取得するステートの値の属性を管理する情報である。属性情報１１０１の詳細は、図１２を用いて説明する。【０１４５】
図１２は、実施例２の属性情報１１０１の一例を示す図である。【０１４６】
属性情報１１０１は、変数名１２０１、インデックス１２０２、及び属性１２０３から構成されるエントリを含む。【０１４７】
変数名１２０１は、ステートを示す変数の名称である。インデックス１２０２は、変数名１２０１に対応する変数に設定された属性に設定されるインデックスである。例えば、二つの属性が設定される変数の場合、変数名１２０１が同一のエントリが二つ存在し、それぞれのエントリのインデックス１２０２には「１」及び「２」が設定される。属性１２０３は、変数の属性である。【０１４８】
なお、属性情報１１０１は、ユーザが予め設定してもよいし、システムの挙動等の解析結果に基づいて設定してもよい。【０１４９】
図１３は、実施例２の実施例１のサーバ１００が実行する処理の概要を示す図である。【０１５０】
実施例２の強化学習モジュール１１１及び報酬関係抽出モジュール１１２が実行する処理は、実施例１と同一である。【０１５１】
実施例２では、報酬共有モジュール１１４が実行する処理が一部異なる。具体的には、報酬共有モジュール１１４は、属性情報１１０１に基づいて、類似する変数によって定義される条件を特定し、特定された条件の報酬を比較し、比較結果に基づいて報酬関数情報１２３を修正する。【０１５２】
図１４は、実施例２の報酬共有モジュール１１４が実行する処理の一例を示す図である。【０１５３】
報酬共有モジュール１１４は、ターゲット報酬関係抽出モジュール１１２が使用する報酬関数情報１２３及び属性情報１１０１を読み出し（ステップＳ１４０１）、報酬関数共有情報１２４を更新する（ステップＳ９０２）。【０１５４】
次に、報酬共有モジュール１１４は、読み出した報酬関数情報１２３に設定される条件（エントリ）の中から対象の条件（エントリ）を選択する（ステップＳ９０３）。【０１５５】
次に、報酬共有モジュール１１４は、ステップＳ１４０１において読み出された属性情報１１０１及び他のエージェント１５０が使用する属性情報１１０１を参照して、フィルタリング処理を行うことによって比較可能な報酬関数情報１２３を特定する（ステップＳ１４０２）。【０１５６】
具体的には、報酬共有モジュール１１４は、ステップＳ１４０１において読み出された属性情報１１０１及び他のエージェント１５０が使用する属性情報１１０１を参照し、類似するステートを含む報酬関数情報１２３を検索する。例えば、各報酬関数情報１２３のステートに対応する変数間の距離を算出し、当該距離が閾値以下の報酬関数情報１２３を検索する。【０１５７】
なお、読み出した報酬関数情報１２３に設定された全てのステートに対応する変数を用いて距離が算出されてもよいし、また、選択された条件に関連のある変数のみを用いて算出されてもよい。【０１５８】
なお、属性に基づく報酬関数情報１２３の距離の算出方法は、学習結果に基づいて動的に変更してもよい。例えば、類似する条件であっても、目的変数値への寄与が低い報酬である場合には、当該距離が長くなるように重み係数を設定する方法が考えられる。【０１５９】
次に、報酬共有モジュール１１４は、特定された報酬関数情報１２３の条件（エントリ）と、選択された条件（エントリ）とを比較し（ステップＳ１４０３）、他のエージェント１５０が使用する報酬を反映する必要があるか否かを判定する（ステップＳ９０５）。具体的には、以下のような処理が実行される。【０１６０】
報酬共有モジュール１１４は、属性情報１１０１に基づいて、選択されたエントリの変数名５０２に類似する変数から定義される条件６０２を特定し、また、類似する変数の値が選択されたエントリの値５０３に一致するエントリを検索する。【０１６１】
報酬共有モジュール１１４は、検索されたエントリの信頼値６０４の値が、選択されたエントリの信頼値５０５の値より大きいエントリが存在するか否かを判定する。前述の条件を満たすエントリが存在する場合、報酬共有モジュール１１４は、他のエージェント１５０が使用する報酬を反映する必要があると判定する。【０１６２】
他のエージェント１５０が使用する報酬を反映する必要がないと判定された場合、報酬共有モジュール１１４は、ステップＳ９０７に進む。【０１６３】
他のエージェント１５０が使用する報酬を反映する必要があると判定された場合、報酬共有モジュール１１４は、送信された報酬関数情報１２３を更新する（ステップＳ９０６）。【０１６４】
次に、報酬共有モジュール１１４は、読み出された報酬関数情報１２３の全ての条件について処理が完了したか否かを判定する（ステップＳ９０７）。【０１６５】
読み出された報酬関数情報１２３の全ての条件について処理が完了していないと判定された場合、報酬共有モジュール１１４は、ステップＳ９０３に戻り、新たな条件について同様の処理を実行する。【０１６６】
実施例２によれば、変数の名称が異なっている場合であっても、属性が類似する変数から定義される条件の報酬を比較することによって、報酬の共有が可能となる。したがって、制御対象間の変数名が一致するように制御する必要がないため、管理コストを削減できる。【０１６７】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。【０１６８】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるＣＰＵが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。【０１６９】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ等の広範囲のプログラム又はスクリプト言語で実装できる。【０１７０】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるＣＰＵが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。【０１７１】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【図１】
2018070038.tif 000004
【図２】
2018070038.tif 000005
【図３】
2018070038.tif 000006
【図４】
2018070038.tif 000007
【図５】
2018070038.tif 000008
【図６】
2018070038.tif 000009
【図７】
2018070038.tif 000010
【図８】
2018070038.tif 000011
【図９】
2018070038.tif 000012
【図１０】
2018070038.tif 000013
【図１１】
2018070038.tif 000014
【図１２】
2018070038.tif 000015
【図１３】
2018070038.tif 000016
【図１４】
2018070038.tif 000017
【手続補正書】
【提出日】平成30年7月13日(2018.7.13)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
【図１】実施例１のシステムの構成例を示す図である。
【図２】実施例１のサーバが実行する処理の概要を示す図である。
【図３】実施例１のステート／アクション情報の一例を示す図である。
【図４】実施例１の目的変数情報の一例を示す図である。
【図５】実施例１の報酬関数情報の一例を示す図である。
【図６】実施例１の報酬関数共有情報の一例を示す図である。
【図７】実施例１の強化学習モジュールが実行する処理の一例を説明するフローチャートである。
【図８】実施例１の報酬関係抽出モジュールが実行する処理の一例を説明するフローチャートである。
【図９】実施例１の報酬共有モジュールが実行する処理の一例を示す図である。
【図１０】実施例１の強化学習方式の効果を示す図である。
【図１１】実施例２のシステムの構成例を示す図である。
【図１２】実施例２の属性情報の一例を示す図である。
【図１３】実施例２のサーバが実行する処理の概要を示す図である。
【図１４】実施例２の報酬共有モジュールが実行する処理の一例を示す図である。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１４９
【補正方法】変更
【補正の内容】
【０１４９】
図１３は、実施例２のサーバ１００が実行する処理の概要を示す図である。
【国際調査報告】
2018070038.tif 000018
2018070038.tif 000019
2018070038.tif 000020
2018070038.tif 000021