【文献】
上岡 拓未 ほか,複数の価値関数を用いた多目的強化学習,電子情報通信学会技術研究報告,社団法人電子情報通信学会,2006年 3月 9日,Vol.105 No.658,pp.127-132
【文献】
内部 英治 ほか,複数の報酬によって与えられる拘束のもとでの強化学習,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2006年 6月 9日,Vol.106 No.102,pp.1-6
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成については同一の参照符号が付されている。
【0013】
以下において、単一の行動に対する複数の目的が存在する構成、例えば、単一の行動が複数の基準を満たすことが必要である構成における、機械学習システムを開示する。機械学習システムは、例えば、浄水施設、発電施設、工場等の施設における自動動作システムに適用できる。
【0014】
本開示において、複数のcritic関数(評価関数)が使用され、強化学習のエージェントであるactor関数を訓練する。各critic関数は、actor関数の出力を評価する単一の目的又は単一の基準を表す。actor関数の出力は、強化学習エージェントの行動である。actor関数は、行動を示す値を出力する。actor関数が出力する行動は、連続値で表わされてよい。
【0015】
actor関数は、例えば、線形回帰関数又はニューラルネットワークである。以下の説明においては、actor関数は、ニューラルネットワークである。actor関数は、環境と相互作用する装置又はシステムで実行可能であり、例えば、連続値で表わされる行動を出力する。本開示の手法により、複数の目的を有し、連続値で表わされる行動を出力するactor関数を適切に学習することができる。
【0016】
環境は、実世界又はシミュレートされた世界の環境であってよい。actor関数は、例えばニューラルネットワークであり、2又はそれより多くのcritic関数の勾配を使用して訓練される。
【0017】
critic関数は、例えば、線形回帰関数又はニューラルネットワークである。以下の説明においては、critic関数は、ニューラルネットワークである。複数のcritic関数は、それぞれ、行動の異なる目的の観点から、行動の価値(行動価値)を評価する。各critic関数は、単一の行動価値を目標とし、各行動価値は単一の目的から決まる。
【0018】
強化学習エージェントは、環境の現在の状態を示す観測値を受信し、そして、環境の現在の状態を入力として受け取り適切な行動を出力するactor関数を使用して、環境と相互作用する。actor関数の出力する行動は、連続する数値で表わされ得る。複数のcritic関数は、それぞれ、現在の状態とactor関数の行動の情報を使用して、その行動の価値を評価する。
【0019】
critic関数は、訓練されて、より正確な行動価値(行動価値の評価値)を出力するようになる。各行動価値は、単一の目的に対応する。critic関数それぞれにおける勾配を使用して、critic関数毎に、actor関数を更新する。これにより、actor関数は、複数のcritic関数の評価から、全ての基準をできる限り満たすことができる一つの行動を出力する。
【0020】
critic関数に基づきactor関数を訓練するため、各訓練回において、actor関数の単一更新ではなく、actor関数の更新シーケンスが実行される。actor関数の訓練は、複数のcritic関数それぞれの勾配を使用して順次行われる。単一のcritic関数の代わりに、異なる目的に対応する複数のcritic関数を使用することで、効果的かつ効率的に、actor関数を訓練することができる。
【0021】
<第1実施形態>
図1から7を参照して、第1実施形態を説明する。学習システムは、環境プログラム、actorネットワークプログラム、複数criticネットワークプログラム(複数criticネットワークのプログラム)、そして、学習プログラムを含む。actorネットワークプログラムは、ニューラルネットワーク(単にネットワークとも呼ぶ)を使用し、環境プログラムからの現在状態を入力として受け取り、行動を出力する。
【0022】
複数criticネットワークプログラムは、複数のcriticニューラルネットワークを含み、環境プログラムからの現在の状態とactorネットワークプログラムからの行動とを、入力として受け取る。各criticニューラルネットワークは、actorネットワークプログラムからの行動を評価する独自の基準又は目的を有している。学習プログラムは、例えばミニバッチ学習によって、criticネットワークプログラムを更新する。学習プログラムは、criticネットワークプログラム毎に、criticネットワークプログラムから得られる勾配を使用して、actorネットワークプログラムを更新する。
【0023】
図1は、第1実施形態に係る学習システムの構成例を模式的に示す。サーバ100は、プロセッサ110、メモリ120、及び補助記憶装置130を含む。メモリ120及び/又は補助記憶装置130は、記憶装置である。これら構成要素は、バスを介して互いに接続されている。プロセッサ110は、メモリ120を参照して、様々な演算処理を実行する。
【0024】
メモリ120は、環境プログラム121、actorネットワークプログラム122、複数criticネットワークプログラム123、そして、学習プログラム124を格納している。メモリ120に格納されるプログラム及びプログラムが使用するデータは、例えば、補助記憶装置130又は外部からネットワークを介してロードされる。
【0025】
環境プログラム121は、実世界の特徴を観測又は実世界の環境をシミュレートする。例えば、実世界の浄水施設において、環境プログラム121は、施設の特徴量を観測する。環境プログラム121は、例えば、水の特性値、水量及び水位を感知することができるセンサアレイからの値を観測する。シミュレーションにおける浄水施設において、環境プログラム121は、浄水施設でのオペレーションがなされた後の水の特性値の変化、水量の変化及び水位の変化をシミュレートする。
【0026】
環境のこれらの特徴量に基づいて、システムは、環境の現在状態、及び、オペレーションにおいてなされた行動の後の環境の次の状態を観測し、そして、異なる目的の全ての基準を参照して、行動の各目的に対する良否を判定する。
【0027】
actorネットワークプログラム122は、環境の現在状態を入力として受け取り、関数を使用して行動を出力する。訓練において、actorネットワークプログラム122は、パラメータεを使用して、ランダムな行動を行うか、その関数から最適と推定される行動を行うか判定する。actorネットワークプログラム122の関数は、例えば、ニューラルネットワークである。actorネットワークプログラム122の処理フローは、
図5を参照して、後に詳述される。
【0028】
複数criticネットワークプログラム123は、複数のcritic関数を含む。複数のcritic関数は、それぞれ、例えば、ニューラルネットワークである。各critic関数は、行動が満足すべき一つの目的を表す。例えば、浄水施設において、取水レートを変更する行動は、貯水池における水量及び取水のための電力消費量を変化させることになる。この行動は水の需要(十分な水)を満たすと共に、取水のための電力消費量のコストができるだけ低くする(ローコスト)ことが要求される。
【0029】
ある一つのcriticネットワークは、行動が需要を満たすか否かを判定し、他のcriticネットワークは、行動が電力のコストを削減するか否か判定する。これらcriticネットワークは、バックプロパゲーションによって、できるだけ正確に判定することができるように訓練される。複数criticネットワークプログラム123の処理フローは、
図6を参照して、後に詳述される。
【0030】
学習プログラム124は、複数criticネットワークプログラム123を使用して、複数のcritic関数を訓練し、また、それらの勾配を使用して、critic関数毎に、actorネットワークプログラム122を訓練する。学習プログラム124の処理フローは、
図7を参照して、後に詳述される。
【0031】
補助記憶装置130は、メモリデータベース131を格納している。メモリデータベース131は、4要素からなるタプル、の集合を格納している。4要素は、現在の状態、行動、報酬、そして、次の状態である。これらは、例えば、訓練フェーズにおけるactorネットワークプログラム122の経験値である。メモリデータベース131の容量は、規定値(例えば100万タプル)であり、予め設定されている。メモリデータベース131が一杯になると、最初の経験値の組(タプル)が削除され、次の経験のための空き領域が形成される。メモリデータベース131の構成は、
図3を参照して、後に詳述される。
【0032】
図2は、第1実施形態に係る学習システムの機能ブロック図である。環境部1210は、実世界の環境の現在の状態を観測する、又は、実世界をシミュレートすることができる。環境部1210は、環境プログラム121を実行するプロセッサ110で実現される。環境部1210は、actorネットワーク部1220から行動を受け取り、その行動を実行して次の状態に移行する。報酬は、環境部1210において計算される。一つの経験は、一つのタプルであり、現在の状態、行動、異なる目的それぞれの報酬、そして新しい状態、の情報を含む。経験は、メモリデータベース131に格納される。
【0033】
actorネットワーク部1220は、システムの行動を決定する。actorネットワーク部1220は、actorネットワークプログラム122を実行するプロセッサ110によって実現される。actorネットワーク部1220は、センサデータを環境部1210から現在の状態として受信し、ニューラルネットワークのフィードフォワード法を使用して、行動を得る。actorネットワーク部1220は、ニューラルネットワークにより得た行動を使用することもあれば、使用しないこともある。actorネットワーク部1220は、パラメータεを有しており、それを使用して、ニューラルネットワークからの行動を利用するか、ランダムな行動を探索するか決定する。
【0034】
パラメータεは、予め設定されており、例えば、固定値(例えば、0.5)、又は、訓練時間に応じて1から0まで線形減少する数値である。actorネットワーク部1220は、乱数とパラメータεとを比較し、ニューラルネットワークにより決定される行動を利用するか、ランダムな行動を探索するか決定する。actorネットワーク部1220は、決定した行動を、その行動の実行のために、環境部1210に送信する。
【0035】
複数criticネットワーク部1230は、所与の状態における行動を評価する。複数criticネットワーク部1230は、複数criticネットワークプログラム123を実行するプロセッサ110によって実現される。その評価は、Q値(行動価値)として与えられる。Q値が高い程、より適切な動作であることを示す。複数criticネットワーク部1230は、2又はそれより多くのcritic関数を含み、それらは、例えば、ニューラルネットワークである。各criticネットワークは、以下の数式で与えられる正確なQ値(目標値)を出力しようとする。
【0036】
Q(s
t,a
t)=reward+γQ(s
t+1,a
t+1) (1)
s_t、a_t、はそれぞれ、現時点での状態と行動を示す。rewardは報酬を表し、γは割引率を表す。s_t+1、a_t+1、はそれぞれ、次の時点での状態と行動を示す。
【0037】
各criticニューラルネットワークは、バックプロパゲーション法を使用して、実際に出力されたQ値(推定値)と目標Q値との誤差の二乗平均の損失関数が最少となるように、訓練される。criticネットワークは、状態と当該状態において取られた行動を入力として、Q値を出力する。
【0038】
損失関数は、例えば、以下の数式で表わされる。
Loss=1/2[reward + γQ(s
t+1,a
t+1)−Q(s
t,a
t)]
2 (2)
【0039】
重要な点は、criticネットワークは、それぞれ、一つの行動が満たすべき異なる目的(基準)を表すことである。
【0040】
学習部1240は、学習プログラム124を実行するプロセッサ110により実現される。学習部1240は、メモリデータベース131から規定数の経験をサンプリングし、全てのcriticネットワークを、上述のように、バックプロパゲーション法によって訓練する。学習部1240は、criticネットワーク毎に、criticネットワークからの勾配を使用してactorネットワーク部1220(のactorネットワーク)を訓練する。
【0041】
図3は、第1実施形態に係るメモリデータベース131の構成例を模式的に示す。メモリデータベース131は、インデックス欄301、現在の状態欄302、行動欄303、報酬欄304、及び次の状態欄305を含む。一つのレコードが、一つの経験を示す。
【0042】
インデックス欄301は、メモリデータベース131に格納されている経験(レコード)の順序を示す整数を格納している。インデックスは、メモリデータベース131に格納されている経験において、メモリデータベース131が一杯であって、さらに新しい経験を格納する場合に、削除すべき最も古い経験を同定する情報を与える。
【0043】
現在の状態欄302の各セルは、現在の状態(元の状態)を定義する、実世界の環境又はシミュレートされた世界の環境においてセンサが感知した値の集合を示す。
【0044】
行動欄303の各セルは、システムが取る行動を表す連続する値を示す。行動は、実世界のシステムの仕様に依存する。例えば、行動は、浄水施設における取水レートの増加又は減少の度合いを示す、−1から+1までの間のいずれかの値で表わされる。
【0045】
報酬欄304の各セルは、システムが行動を実行して次の状態に移行した後の、異なる目的それぞれの報酬を示す数値のセットを格納する。例えば、取水レートを増加する行動の一つの報酬は、貯水池の水位が所望範囲にない場合に、0である。また、取水レートを増加する行動の他の一つの報酬は、その行動が夜に実行され、省消費電力である場合に、+1である。
【0046】
次の状態欄305は、システムが、現在の状態欄302が示す状態から、行動欄303が示す行動を取ることで遷移した状態を示す。次の状態から、システムは、報酬欄304のセルの各値を決定することができる。次の状態欄305の各セルは、実世界の環境又はシミュレートされた世界の環境においてセンサが感知した値の集合を示す。
【0047】
図4は、第1実施形態に係る、環境部1210のフローチャートを示す。サーバ100のプロセッサ110が、環境プログラム121に従って、この処理を実行する。
【0048】
ステップ401において、環境部1210は、環境の現在の状態について観測を行う。環境部1210が実世界から情報を取得する場合、現在のセンサアレイデータは、実世界の環境の現在の状態を示す。環境部1210がシミュレーションによって情報を取得する場合、現在のセンサアレイデータは、シミュレートされている環境におけるセンサデータの現在の観測値である。
【0049】
ステップ402において、環境部1210は、actorネットワーク部1220から、行動を取得する。ステップ403において、実世界又はシミュレートされている世界において、取得した行動を実行することによって、環境における現在の状態から次の状態に遷移する。次の状態はセンサデータにより同定される。ステップ404において、新しい状態において、環境部1210は、各criticネットワークの目的に対する報酬を決定する。状態に対する各criticネットワークの報酬は、予めシステム設計者によって設定されている。
【0050】
ステップ405において、環境部1210は、取得した全ての情報を一つのタプルにまとめる。情報は、移行前の現在の状態、行動、目的に応じた異なる報酬、そして新しい次の状態である。ステップ406において、環境部1210は、ステップ405でタプルに纏めた情報を、メモリデータベース131に格納する。以上により、環境部1210の処理は終了する。
【0051】
図5は、actorネットワーク部1220のフローチャートを示す。サーバ100のプロセッサ110が、actorネットワークプログラム122に従って、この処理を実行する。
図5は、actorネットワーク部1220が行動を生成(出力)する処理を示す。
【0052】
ステップ501において、actorネットワーク部1220は、環境部1210から、現在の状態を示すデータを取得する。ステップ502において、actorネットワーク部1220は、0から1までの一つの乱数を生成する。
【0053】
ステップ503において、actorネットワーク部1220は、生成した乱数をパラメータεと比較する。乱数がパラメータεより大きくない場合(503:NO)、ステップ504において、actorネットワーク部1220は、ランダムな行動を生成する。乱数がパラメータεより大きい場合(503:YES)、ステップ505において、actorネットワーク部1220は、actorニューラルネットワークに現在の状態を入力して、フィードフォワードにより、行動を示す出力を得る。
【0054】
ステップ506において、actorネットワーク部1220は、選択した行動を、環境部1210に送信する。以上により、actorネットワーク部1220の処理は終了する。
【0055】
図6は、複数criticネットワーク部1230のフローチャートを示す。サーバ100のプロセッサ110が、複数criticネットワークプログラム123に従って、この処理を実行する。
図6は、複数criticネットワーク部1230の訓練(学習)の処理を示す。
【0056】
ステップ601において、複数criticネットワーク部1230は、メモリデータベース131からのNサンプル(Nは自然数)の経験のミニバッチデータを、学習部1240から受け取る。
【0057】
ステップ602において、複数criticネットワーク部1230は、全てのcriticネットワークを更新したか判定する。全てのcriticネットワークの更新が終了している場合(602:YES)、複数criticネットワーク部1230の処理は終了する。
【0058】
未更新のcriticネットワークが存在する場合(602:NO)、ステップ603において、複数criticネットワーク部1230は、一つの未更新のcriticネットワークを選択し、当該criticネットワークに対する、N個の経験に対応する目標値を計算する。各目標値は、上記数式1により計算される。
【0059】
ステップ604において、複数criticネットワーク部1230は、選択したcriticネットワークにおいて、上記目標値に基づくバックプロパゲーションを実行し、上記数式2が示す損失関数の値が最小化されるように、当該criticネットワークの重み(学習パラメータ)を更新する。その後、複数criticネットワーク部1230は、ステップ602に戻る。
【0060】
図7は、学習部1240のフローチャートを示す。サーバ100のプロセッサ110が、学習プログラム124に従って、この処理を実行する。
【0061】
ステップ701において、学習部1240は、メモリデータベース131に、十分な数の経験(レコード)が格納されているか判定する。十分な数を示す閾値は、予め設定されており、例えば、少なくとも5000の経験が格納されていると、十分な経験が格納されていると判定される。十分な経験が格納されていない場合(701:NO)、複数criticネットワーク部1230及びactorネットワーク部1220の訓練(学習又は更新)を行うことなく、本処理は終了する。
【0062】
十分な経験がメモリデータベース131に格納されていると判定されると(701:YES)、ステップ702において、学習部1240は、メモリデータベース131からN個の経験をサンプリングする。Nは自然数であって、予め設定された値である。Nは例えば32である。サンプリングされたN個の経験は、それぞれ、<s、a、r、s´>と表わされる。ここで、sは現在の状態、aは現在の状態で取られた行動、rは異なる目的それぞれの報酬、s´は行動により移行した新しい次の状態である。
【0063】
ステップ703において、学習部1240は、これらサンプリングされた経験を、複数criticネットワーク部1230に送信する。複数criticネットワーク部1230は、
図6を参照して説明したように、criticネットワークを更新する。学習部1240は、これらcriticネットワークの更新により得られる勾配を取得する。criticネットワークの勾配は、更新前の複数の重みと更新後の複数の重みとの差により決まる。
【0064】
ステップ704及び705において、学習部1240は、ループに入り、criticネットワークの勾配を一つずつ使用して、actorネットワーク部1220(のactorネットワーク)を、訓練する。具体的には、ステップ704において、学習部1240は、全てのcriticネットワークの勾配によって、actorネットワーク部1220のactorネットワークを訓練(更新)したか判定する。全てのcriticネットワークの勾配によってactorネットワークを既に訓練している場合(704:YES)、学習部1240の処理は終了する。
【0065】
未使用のcriticネットワークの勾配が存在する場合(704:NO)、学習部1240は、一つの未使用のcriticネットワークの勾配を選択し、それを使用して、例えば公知の勾配降下法により、actorネットワークを訓練する。その後、学習部1240は、ステップ704に戻る。
【0066】
以上のように、本実施形態によれば、Actor−Critic法による機械学習システムにおいて、複数の目的(基準)を満たすことを要求される行動を効果的に学習し、出力することができる。
【0067】
<第2実施形態>
第2実施形態を
図8及ぶ
図9を参照して説明する。第1実施形態において、各criticネットワークでの報酬は、システム設計者によって任意に設定される。例えば、成功と失敗とに対する報酬は、それぞれ、+1と−1(離散値)とすることができる。また、低い又は高いコストに対する報酬は、(100000−コスト)(連続値)とすることができる。
【0068】
したがって、学習システムがactorネットワークを訓練するとき、より大きいスケールの報酬が、より大きい勾配を与え得る。そのため、actorネットワークの訓練において偏りが生まれる。本実施形態においては、報酬調整プログラム125が機械学習システムに加えられている。報酬調整プログラム125は、予め設定されている基準に従って報酬を調整する。
【0069】
図8は、第2実施形態に係る学習システムの構成例を模式的に示す。報酬調整プログラム125が追加されている点を除き、
図1を参照して説明した第1実施形態の構成と同様である。サーバ100のプロセッサ110は、報酬調整プログラム125に従って動作することで、報酬調整部として機能する。
【0070】
報酬調整プログラム125は、全ての報酬を、特定の範囲、例えば、−1から+1の範囲にスケーリングする。報酬(目的)それぞれに対する優先度が、割合(%)のスケールで予め設定される。例えば、浄水施設において、水の需要を満たすことの優先度が、最も高いことが必要である。
【0071】
したがって、それに対する報酬に対して、最も高い割合、例えば、70%が割り当てられる。消費電力におけるコスト低減は、より低い優先度を有し、例えば、30%が割り当てられる。報酬調整プログラム125は、目的それぞれの報酬を、割り当てられている割合との積により、再スケーリングする。このように、より高い優先度のcriticネットワークの報酬のスケールが、より低い優先度のcriticネットワークの報酬のスケールより大きくなる。
【0072】
例えば、優先度を付与する前の水の需要に対する報酬は、貯水池の水位が所定範囲にある場合に成功を示す+1であり、所定範囲外にある場合に失敗を示す−1であるとする。優先度を付与した後、成功の場合の報酬は+0.7であり、失敗の場合の報酬は−0.7である。電力コストに対する報酬は、優先度を付与する前は、−1から+1までのスケールを有する。電力コストに対する最も高い報酬は、例えばコストが0のときに、0.3となる。
【0073】
優先度の設定方法は、システム設計者により予め設定する方法に限定されない。例えば、学習システムが、自動的に優先度を決定してもよい。学習システムは、力任せ法(brute force method)を使用して、全ての優先度の組み合わせを試して最善の優先度を見付けてもよい。なお、優先度は設定されていない、つまり、全ての優先度が同一であってもよい。
【0074】
図9は、第2実施形態に係る、環境部1210のフローチャートを示す。サーバ100のプロセッサ110が、環境プログラム121に従って、この処理を実行する。
【0075】
ステップ901から904、906、907は、それぞれ、
図4に示すフステップ905において、環境部1210が各目的の報酬を決定した後、上述のように、割り当てられている優先度に従って、各報酬をスケーリングする。これら報酬は、ステップ906において、他の情報と共にメモリデータベース131に格納される。本実施形態によって、actorネットワークをより適切に訓練(更新)できるように、異なるスケールを有する報酬を、それらの目的に応じて適切に再スケーリングできる。
【0076】
本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0077】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。