以下に、図面を参照して、本発明にかかる強化学習方法、強化学習プログラム、および強化学習装置の実施の形態を詳細に説明する。
(実施の形態にかかる強化学習方法の一実施例)
図1は、実施の形態にかかる強化学習方法の一実施例を示す説明図である。強化学習装置100は、強化学習により制御対象を制御するためのコンピュータである。強化学習装置100は、例えば、サーバやPC(Personal Computer)、または、マイクロコントローラなどである。
制御対象は、何らかの事象であり、例えば、現実に存在する物理系である。制御対象は、環境(environment)とも呼ばれる。制御対象は、具体的には、自動車、ロボット、ドローン、ヘリコプター、サーバルーム、発電機、化学プラント、または、ゲームなどである。
強化学習は、例えば、制御対象に対する探索行動を決定し、制御対象の状態と、決定した探索行動と、決定した探索行動に応じて観測した制御対象の報酬とに基づき、価値関数を学習する一連の処理を繰り返すことにより、制御対象を制御する。強化学習は、例えば、Q学習、SARSA、または、actor-criticなどを利用する。
価値関数は、制御対象に対する行動の価値を規定する関数である。価値関数は、例えば、状態行動価値関数または状態価値関数などである。行動は、入力(input)とも呼ばれる。行動は、例えば、連続量である。制御対象に対する行動に応じて制御対象の状態(state)が変化する。制御対象の状態は、観測可能である。
ここで、強化学習による学習効率の向上が望まれる場合がある。例えば、強化学習を、シミュレータ上ではなく、実在する制御対象を制御するために利用しようとする場合、特に、強化学習の初期段階でも精度のよい価値関数を学習することが求められ、強化学習による学習効率の向上が望まれる傾向がある。
しかしながら、従来では、強化学習による学習効率の向上を図ることは難しい。例えば、様々な状態に対して様々な行動を試行しなければ、精度のよい価値関数を得ることは難しく、強化学習にかかる処理時間の増大化を招くことになる。特に、強化学習を、実在する制御対象を制御するために利用しようとする場合、制御対象の状態を任意に変更することが難しく、種々の状態に対して種々の行動を試行することが難しくなる。
これに対し、制御対象の性質に起因する価値関数の特性を利用して、強化学習による学習効率の向上を図る手法が考えられる。例えば、価値関数の特性が、制御対象の状態または行動に対する価値に単調性を有する場合が考えられる。この場合、強化学習の過程で価値関数を学習する都度、単調性を利用して価値関数をさらに更新することにより、強化学習による学習効率の向上を図る手法が考えられる。
かかる手法でも、価値関数を効率よく学習することは難しい。例えば、強化学習の過程で価値関数を学習する都度、単調性を利用して価値関数を更新した結果、価値関数の誤差を拡大し、強化学習による学習効率を却って低下させることになる可能性が生じる。
従来では、比較的少ない状態に対してしか行動を試行しておらず、様々な状態に対して様々な行動を試行していない強化学習の初期段階には、精度のよい価値関数を得ることが難しい。強化学習の初期段階には、試行回数が少なく、学習した状態と行動との組み合わせの数が少なく、行動を試行していない状態に関しては学習が進みづらく、誤差が大きくなる。また、行動を試行済みの状態の偏りにより、単調性を満たさない状態を経由した学習が行われ、強化学習の進度が遅くなり、学習効率が悪くなる。
また、強化学習を、実社会の制御対象を制御するために利用しようとする場合、学習結果の精度だけではなく、学習時間や学習に要するリソースの制約下での効率性が求められる。また、実社会の制御対象を制御するため、強化学習の初期段階でも、適切な制御を行うことが求められる。これに対し、従来では、強化学習を研究目的に開発する場合があり、学習する状態と行動との組み合わせの数が比較的多い状況で、最適解への収束速度の向上、または、最適解への収束の理論的な保証などを目標として、強化学習の技術が開発される傾向がある。研究目的に開発された強化学習の技術では、強化学習の初期段階における学習効率の向上を目標としていないため、実社会の制御対象を制御するために利用することが好ましいとは限らない。研究目的に開発された強化学習の技術では、強化学習の初期段階に、制御対象を適切に制御することが難しく、精度のよい価値関数を得ることが難しい傾向がある。
そこで、本実施の形態では、価値関数が有する特性を利用して、強化学習の過程で価値関数を学習する都度、価値関数を更新するか否かを判断してから更新することにより、強化学習による学習効率の向上を図ることができる強化学習方法について説明する。
図1において、強化学習装置100は、強化学習を実現する。強化学習は、価値関数を学習する一連の処理を繰り返して、制御対象を制御する。以下の説明では、価値関数を学習する一連の処理を「単位学習ステップ」と表記する場合がある。価値関数は、例えば、基底関数を用いて表現される。
価値関数は、例えば、制御対象の状態または行動に対する価値の特性に単調性を有する。単調性は、例えば、単調増加である。単調増加は、具体的には、例えば、制御対象の状態または行動を表す変数の値が大きくなるほど、価値を表す変数の値が大きくなる性質である。単調性は、例えば、単調減少であってもよい。単調性は、例えば、単峰性であってもよい。
価値関数は、具体的には、真の状態で、特性に単調性を有する。真の状態は、強化学習により無限回学習した状態に対応する理想的な状態である。一方で、価値関数は、具体的には、推定の状態では、制御対象の状態または行動の一部の範囲において、特性に単調性を有さない場合がある。推定の状態は、強化学習による学習回数が比較的少ない状態である。価値関数は、真の状態に近いほど、精度が高いと扱われる。
図1の例では、(1-1)強化学習装置100は、単位学習ステップごとに、基底関数を用いて、単位学習ステップに用いた制御対象の状態または行動の、強化学習に対する寄与度を算出する。強化学習装置100は、例えば、単位学習ステップに用いた制御対象の状態および行動を基底関数に代入した結果を、単位学習ステップに用いた制御対象の状態または行動の寄与度として算出する。寄与度を算出する一例は、具体的には、図6~図16を用いて第1動作例~第5動作例に後述する。
(1-2)強化学習装置100は、単位学習ステップ後の価値関数、および、算出した寄与度に基づいて、価値関数を更新するか否かを判断する。強化学習装置100は、例えば、単位学習ステップごとに、今回の単位学習ステップで学習した価値関数、および、算出した寄与度に基づいて、価値関数を更新するか否かを判断する。図1の例では、例えば、今回の単位学習ステップで学習した価値関数が、グラフ110に示す価値関数101である場合を一例として説明する。グラフ110の「×」は、今回の単位学習ステップに用いた状態である。この場合、強化学習装置100は、例えば、単調性を考慮して、価値関数のうち「×」に対応する部分を補正して、価値関数を更新するか否かを判断する。価値関数を更新するか否かを判断する一例は、具体的には、図6~図16を用いて第1動作例~第5動作例に後述する。
(1-3)強化学習装置100は、価値関数を更新すると判断した場合、単調性に基づいて、価値関数を更新する。強化学習装置100は、例えば、単位学習ステップごとに、価値関数を更新すると判断した場合、今回の単位学習ステップで学習した価値関数に基づいて、価値関数を更新する。図1の例では、強化学習装置100は、例えば、価値関数101を更新すると判断した場合、単調性を考慮して、価値関数101のうち「×」に対応する価値が低下するように補正して、価値関数101を価値関数101’に更新する。強化学習装置100は、例えば、価値関数101を更新しないと判断した場合、価値関数101を更新しない。価値関数を更新する一例は、具体的には、図6~図16を用いて第1動作例~第5動作例に後述する。
これにより、強化学習装置100は、強化学習による学習効率の向上を図ることができる。強化学習装置100は、例えば、比較的少ない状態に対してしか行動を試行しておらず、様々な状態に対して様々な行動を試行していない強化学習の初期段階でも、精度のよい価値関数を得やすくすることができる。このため、強化学習装置100は、強化学習にかかる処理時間の低減化を図ることができる。また、強化学習装置100は、価値関数の更新要否を判断するため、価値関数の誤差を拡大するような更新を防止することができる。学習効率の一例は、具体的には、図17~図22を用いて後述する。
従来では、強化学習の初期段階には、試行回数が少なく、学習した状態と行動との組み合わせの数が少なく、行動を試行していない状態に関しては学習が進みづらく、誤差が大きくなる。また、行動を試行済みの状態の偏りにより、単調性を満たさない状態を経由した学習が行われ、強化学習の進度が遅くなり、学習効率が悪くなる。これに対し、強化学習装置100は、比較的少ない状態に対してしか行動を試行しておらず、様々な状態に対して様々な行動を試行していない強化学習の初期段階でも、精度のよい価値関数を得やすくすることができる。また、強化学習装置100は、行動を試行済みの状態の偏りがあっても、価値関数の更新により、単調性を満たさない状態を経由した学習が行われることを抑制することができる。さらに、強化学習装置100は、寄与度に基づいて、試行回数の多寡を考慮して価値関数の更新要否を判断することができ、価値関数の誤差を拡大するような更新を防止することができる。
また、従来では、強化学習を研究目的に開発する場合があり、学習する状態と行動との組み合わせの数が比較的多い状況で、最適解への収束速度の向上、または、最適解への収束の理論的な保証などを目標として、強化学習の技術が開発される傾向がある。研究目的に開発された強化学習の技術では、強化学習の初期段階に、制御対象を適切に制御することが難しく、精度のよい価値関数を得ることが難しい傾向がある。これに対し、強化学習装置100は、比較的少ない状態に対してしか行動を試行しておらず、様々な状態に対して様々な行動を試行していない強化学習の初期段階でも、精度のよい価値関数を得やすくすることができる。そして、強化学習装置100は、価値関数を利用して、制御対象を適切に制御しやすくすることができる。
また、上述した、強化学習の過程で価値関数を学習する都度、必ず、単調性を利用して価値関数を更新する手法では、例えば、価値関数101を、必ず、価値関数101’に更新することになる。これによれば、価値関数のうち「×」に対応する部分が、過去に何度も行動を試行して精度よく学習した部分であっても補正してしまうことになり、価値関数の精度低下を招くことになる。
特に、学習した状態と行動との組み合わせの数が少ないと、価値関数の精度低下を招きやすくなる。具体的には、学習した状態と行動との組み合わせの数が少なく、価値関数のうち「×」より右側の凹部が、まだ学習が少ない部分である場合に、学習が少ない凹部に合わせて、学習が多い「×」に対応する部分を補正する結果となり、価値関数の精度低下を招くことになる。これに対し、強化学習装置100は、価値関数の更新要否を判断するため、価値関数の誤差を拡大するような更新を防止することができ、価値関数の精度低下を抑制することができる。
(強化学習装置100のハードウェア構成例)
次に、図2を用いて、強化学習装置100のハードウェア構成例について説明する。
図2は、強化学習装置100のハードウェア構成例を示すブロック図である。図2において、強化学習装置100は、CPU(Central Processing Unit)201と、メモリ202と、ネットワークI/F(Interface)203と、記録媒体I/F204と、記録媒体205とを有する。また、各構成部は、バス200によってそれぞれ接続される。
ここで、CPU201は、強化学習装置100の全体の制御を司る。メモリ202は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU201のワークエリアとして使用される。メモリ202に記憶されるプログラムは、CPU201にロードされることで、コーディングされている処理をCPU201に実行させる。
ネットワークI/F203は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F203は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F203は、例えば、モデムやLAN(Local Area Network)アダプタなどである。
記録媒体I/F204は、CPU201の制御に従って記録媒体205に対するデータのリード/ライトを制御する。記録媒体I/F204は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体205は、記録媒体I/F204の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体205は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体205は、強化学習装置100から着脱可能であってもよい。
強化学習装置100は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、強化学習装置100は、記録媒体I/F204や記録媒体205を複数有していてもよい。また、強化学習装置100は、記録媒体I/F204や記録媒体205を有していなくてもよい。
(強化学習装置100の機能的構成例)
次に、図3を用いて、強化学習装置100の機能的構成例について説明する。
図3は、強化学習装置100の機能的構成例を示すブロック図である。強化学習装置100は、記憶部300と、取得部301と、学習部302と、算出部303と、更新部304と、出力部305とを含む。
記憶部300は、例えば、図2に示したメモリ202や記録媒体205などの記憶領域によって実現される。以下では、記憶部300が、強化学習装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部300が、強化学習装置100とは異なる装置に含まれ、記憶部300の記憶内容が強化学習装置100から参照可能である場合があってもよい。
取得部301~出力部305は、制御部の一例として機能する。取得部301~出力部305は、具体的には、例えば、図2に示したメモリ202や記録媒体205などの記憶領域に記憶されたプログラムをCPU201に実行させることにより、または、ネットワークI/F203により、その機能を実現する。各機能部の処理結果は、例えば、図2に示したメモリ202や記録媒体205などの記憶領域に記憶される。
記憶部300は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部300は、制御対象の状態と、制御対象に対する行動と、制御対象の報酬とを蓄積する。記憶部300は、報酬の代わりに、制御対象のコストを蓄積する場合があってもよい。以下の説明では、記憶部300が報酬を蓄積する場合を一例として説明する。これにより、記憶部300は、各機能部が状態と行動と報酬とを参照可能にすることができる。
制御対象は、例えば、発電設備である場合がある。発電設備は、例えば、風力発電設備である。この場合、行動は、例えば、発電設備の発電機トルクである。状態は、例えば、発電設備の発電量と、発電設備のタービンの回転量と、発電設備のタービンの回転速度と、発電設備に対する風向と、発電設備に対する風速となどの少なくともいずれかである。報酬は、例えば、発電設備の発電量である。
制御対象は、例えば、産業用ロボットである場合がある。この場合、行動は、例えば、産業用ロボットのモータートルクである。状態は、例えば、産業用ロボットの撮影した画像と、産業用ロボットの関節位置と、産業用ロボットの関節角度と、産業用ロボットの関節角速度となどの少なくともいずれかである。報酬は、例えば、産業用ロボットによる製品の生産量である。生産量は、例えば、組み立て数である。組み立て数は、例えば、産業用ロボットが組み立てた製品の数である。
制御対象は、例えば、空調設備である場合がある。この場合、行動は、例えば、空調設備の設定温度と、空調設備の設定風量との少なくともいずれかである。状態は、例えば、空調設備がある部屋の内部の温度と、空調設備がある部屋の外部の温度と、気候との少なくともいずれかである。コストは、例えば、空調設備の消費電力量である。
記憶部300は、価値関数を記憶する。価値関数は、行動の価値を示す値を算出するための関数である。価値関数は、例えば、状態行動価値関数または状態価値関数などである。価値関数は、例えば、基底関数を用いて表現される。価値関数は、例えば、制御対象の状態または行動に対する価値の特性に単調性を有する。単調性は、例えば、単調増加である。単調性は、例えば、単調減少または単峰性であってもよい。記憶部300は、例えば、価値関数を表現する基底関数と、基底関数にかかる重みとを記憶する。重みは、後述するwkである。これにより、記憶部300は、各機能部が価値関数を参照可能にすることができる。
記憶部300は、制御対象を制御する制御則を記憶する。制御則は、例えば、行動を決定するための規則である。制御則は、具体的には、現状で最適と判断される最適行動を決定する。記憶部300は、例えば、制御則のパラメータを記憶する。制御則は、方策とも呼ばれる。これにより、記憶部300は、行動を決定可能にすることができる。
取得部301は、各機能部の処理に用いられる各種情報を取得する。取得部301は、取得した各種情報を、記憶部300に記憶し、または、各機能部に出力する。また、取得部301は、記憶部300に記憶しておいた各種情報を、各機能部に出力してもよい。取得部301は、例えば、利用者の操作入力に基づき、各種情報を取得する。取得部301は、例えば、強化学習装置100とは異なる装置から、各種情報を受信してもよい。
取得部301は、制御対象の状態と、行動に応じた制御対象の報酬とを取得する。取得部301は、例えば、制御対象の状態と、行動に応じた制御対象の報酬とを取得し、記憶部300に出力する。これにより、取得部301は、制御対象の状態と、行動に応じた制御対象の報酬とを記憶部300に蓄積させることができる。
学習部302は、価値関数を学習する。強化学習では、例えば、価値関数を学習する単位学習ステップが繰り返される。学習部302は、例えば、単位学習ステップにより、価値関数を学習する。学習部302は、具体的には、単位学習ステップとして、現在の状態に応じた探索行動を決定し、探索行動に応じた報酬に基づいて、価値関数を表現する基底関数にかかる重みを更新する。探索行動の決定は、例えば、ε貪欲法またはボルツマン選択などを用いる。学習部302は、より具体的には、図6~図16を用いて後述する第1動作例~第5動作例に示すように、価値関数を表現する基底関数にかかる重みを更新する。これにより、学習部302は、価値関数の精度向上を図ることができる。
算出部303は、単位学習ステップごとに、価値関数の表現に用いられる基底関数を用いて、単位学習ステップに用いた制御対象の状態または行動の、強化学習に対する寄与度を算出する。算出部303は、例えば、単位学習ステップに用いた状態および行動を基底関数に代入した結果を、単位学習ステップに用いた状態または行動の寄与度として算出する。
算出部303は、単位学習ステップごとに、算出した寄与度に基づいて、単位学習ステップに用いた状態または行動の、強化学習における経験度を算出する。経験度は、強化学習において、いずれかの状態または行動について、どの程度試行したかを示す。このため、経験度は、価値関数のうち、いずれかの状態または行動に関する部分が、どの程度信頼性が高いかを示す。また、算出部303は、単位学習ステップに用いた状態または行動とは異なる別の状態または行動の経験度を算出する。
算出部303は、例えば、制御対象の状態または行動ごとの強化学習における経験度を、基底関数により規定する経験度関数を更新する。算出部303は、具体的には、単位学習ステップに用いた状態および行動を経験度関数に代入した結果を、単位学習ステップに用いた状態または行動の経験度として算出する。また、算出部303は、具体的には、同様に、別の状態または行動の経験度を算出する。算出部303は、より具体的には、図6~図16を用いて後述する第1動作例~第5動作例に示すように、経験度関数を更新し、経験度を算出する。これにより、算出部303は、価値関数を更新するか否かを判断する指標となる情報を、更新部304が参照可能にすることができる。
算出部303は、例えば、更新部304が価値関数を更新すると判断した場合、単位学習ステップに用いた状態または行動の経験度が大きくなるように、さらに経験度関数を更新する場合があってもよい。算出部303は、具体的には、図8および図9を用いて後述する第2動作例に示すように、経験度関数を更新する。これにより、算出部303は、経験度関数の精度向上を図ることができる。
更新部304は、価値関数を更新するか否かを判断する。更新部304は、例えば、単位学習ステップ後の価値関数、および、算出した寄与度に基づいて、価値関数を更新するか否かを判断する。更新部304は、具体的には、単位学習ステップ後の価値関数、および、算出した寄与度に基づき更新した経験度関数に基づいて、価値関数を更新するか否かを判断する。更新部304は、より具体的には、単位学習ステップに用いた状態または行動の経験度と、別の状態または行動の経験度とに基づいて、価値関数を更新するか否かを判断する。
一例として、更新部304は、単位学習ステップに用いた状態または行動の経験度が、別の状態または行動の経験度よりも小さいか否かを判断する。また、更新部304は、単位学習ステップに用いた状態または行動と、別の状態または行動との間で、単調性を満たすか否かを判断する。そして、更新部304は、単位学習ステップに用いた状態または行動の経験度が、別の状態または行動の経験度よりも小さく、かつ、単調性を満たさない場合、価値関数のうち単位学習ステップに用いた状態または行動に対応する部分について更新すると判断する。具体例としては、更新部304は、図6~図11を用いて後述する第1動作例~第3動作例に示すように、価値関数を更新するか否かを判断する。
また、一例として、更新部304は、単位学習ステップに用いた状態または行動の経験度が、別の状態または行動の経験度以上、かつ、単調性を満たさない場合、価値関数のうち、別の状態または行動に対応する部分について更新すると判断してもよい。具体例としては、更新部304は、図12および図13を用いて後述する第4動作例に示すように、価値関数を更新するか否かを判断する。
また、一例として、単調性が単峰性である場合がある。この場合、更新部304は、単位学習ステップに用いた状態または行動が、単位学習ステップに用いた状態または行動よりも経験度が大きい制御対象の状態または行動の2つに挟まれる場合、価値関数を更新すると判断する。具体例としては、更新部304は、図14~図16を用いて後述する第5動作例に示すように、価値関数を更新するか否かを判断する。
更新部304は、価値関数を更新しないと判断した後、所定回数分の単位学習ステップが実行されるまで、価値関数を更新するか否かを判断しなくてもよい。そして、更新部304は、所定回数分の単位学習ステップが実行されてから、価値関数を更新するか否かを判断する。更新部304は、例えば、図10および図11を用いて後述する第3動作例に示すように、価値関数を更新するか否かを判断する。これにより、更新部304は、1度更新しないと判断した後、数回の単位学習ステップにより、更新要になる可能性が比較的低いと判断し、判断および更新の処理を省略することができ、処理量の低減化を図ることができる。
更新部304は、価値関数を更新すると判断した場合、価値関数を更新する。更新部304は、例えば、単調性に基づいて、価値関数を更新する。更新部304は、具体的には、単位学習ステップに用いた状態または行動の価値が、単位学習ステップに用いた状態または行動よりも経験度が大きい制御対象の状態または行動の価値に近づくように、価値関数を更新する。更新部304は、より具体的には、図6~図11を用いて後述する第1動作例~第3動作例に示すように、価値関数を更新する。
更新部304は、具体的には、単位学習ステップに用いた状態または行動よりも経験度が小さい制御対象の状態または行動の価値が、単位学習ステップに用いた状態または行動の価値に近づくように、価値関数を更新してもよい。更新部304は、より具体的には、図12および図13を用いて後述する第4動作例に示すように、価値関数を更新する。
更新部304は、具体的には、単調性が単峰性である場合、単位学習ステップに用いた状態または行動の価値が、単位学習ステップに用いた状態または行動よりも経験度が大きい制御対象の状態または行動のいずれかの価値に近づくように、価値関数を更新する。更新部304は、より具体的には、図14~図16を用いて後述する第5動作例に示すように、価値関数を更新する。
更新部304は、更新した価値関数に基づいて、さらに制御則を更新してもよい。更新部304は、例えば、Q学習、SARSA、または、actor-criticなどに従って、更新した価値関数に基づいて、制御則を更新する。これにより、更新部304は、制御対象をさらに効率よく制御可能に、制御則を更新することができる。
ここでは、学習部302が、単位学習ステップの学習結果を価値関数に反映させてから、更新部304が、価値関数をさらに更新するか否かを判断し、価値関数を更新する場合について説明したが、これに限らない。例えば、学習部302が、単位学習ステップの学習結果を価値関数に反映させず、更新部304に渡して、更新部304が、単位学習ステップの学習結果を価値関数に反映させつつ、価値関数をさらに更新する場合があってもよい。
この場合、更新部304は、学習部302が今回の単位学習ステップの学習結果を価値関数に反映させる前に、前回の単位学習ステップ後の価値関数、および、算出した寄与度に基づいて、価値関数を更新するか否かを判断する。
そして、更新部304は、価値関数を更新すると判断した場合、今回の単位学習ステップの学習結果を価値関数に反映させると共に価値関数を更新する。また、更新部304は、価値関数を更新しないと判断した場合、今回の単位学習ステップの学習結果を価値関数に反映させる。これにより、更新部304は、精度のよい価値関数を得やすくすることができる。
出力部305は、制御則により制御対象に対する行動を決定し、行動を実施する。行動は、例えば、制御対象に対する指令値である。出力部305は、例えば、制御対象に対する指令値を、制御対象に出力する。これにより、出力部305は、制御対象を制御することができる。
出力部305は、いずれかの機能部の処理結果を出力してもよい。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F203による外部装置への送信、または、メモリ202や記録媒体205などの記憶領域への記憶である。これにより、出力部305は、強化学習装置100の利便性の向上を図ることができる。
(強化学習装置100の機能的構成の具体例)
次に、図4を用いて、強化学習による制御対象を風力発電設備とした場合における、強化学習装置100の機能的構成の具体例について説明する。
図4は、強化学習装置100の機能的構成の具体例を示すブロック図である。風力発電設備400は、風車410と、発電機420とを含む。風車410に風が当たると、風車410は、強化学習装置100の制御指令値に基づいて動作し、風を動力に変換して発電機420に送る。発電機420は、強化学習装置100の制御指令値に基づいて動作し、風車410の動力を用いて発電を実施する。
強化学習装置100は、状態取得部401と、報酬計算部402と、価値関数学習部403と、経験度算出部404と、価値関数補正部405と、制御指令値出力部406とを含む。状態取得部401は、風力発電設備400の状態として、発電機420の回転数や出力電力、および、風速などを取得する。状態取得部401は、風力発電設備400の状態を、報酬計算部402と、価値関数学習部403に出力する。
報酬計算部402は、風力発電設備400の状態、および、風力発電設備400に対する行動に基づいて、風力発電設備400の報酬を算出する。報酬は、例えば、単位時間の発電量などである。風力発電設備400に対する行動は、制御指令値であり、制御指令値出力部406から受け付け可能である。報酬計算部402は、風力発電設備400の報酬を、価値関数学習部403に出力する。
価値関数学習部403は、単位学習ステップを実施し、受け付けた風力発電設備400の状態や風力発電設備400の報酬、および、風力発電設備400に対する行動に基づいて、価値関数を学習する。価値関数学習部403は、学習した価値関数を、価値関数補正部405に出力する。また、価値関数学習部403は、受け付けた風力発電設備400の状態や風力発電設備400の報酬を、経験度算出部404に転送する。
経験度算出部404は、受け付けた風力発電設備400の状態や風力発電設備400の報酬、および、風力発電設備400に対する行動に基づいて、経験度関数を更新する。経験度算出部404は、経験度関数に基づいて、風力発電設備400の今回の状態または行動の経験度、および、他の状態または行動の経験度を算出する。経験度算出部404は、算出した経験度を、価値関数補正部405に出力する。
価値関数補正部405は、価値関数および経験度に基づいて、価値関数をさらに更新するか否かを判断する。価値関数補正部405は、価値関数を更新すると判断した場合、単調性を利用して、価値関数および経験度に基づいて、価値関数を更新する。価値関数補正部405は、価値関数を更新すると判断した場合、更新後の価値関数を、制御指令値出力部406に出力する。価値関数補正部405は、価値関数を更新しないと判断した場合、価値関数を更新せず、制御指令値出力部406に転送する。
制御指令値出力部406は、価値関数に基づいて制御則を更新し、制御則により風力発電設備400に出力する制御指令値を決定し、決定した制御指令値を出力する。制御指令値は、例えば、風車410のピッチ角などの指令値である。制御指令値は、例えば、発電機420のトルクや回転数などの指令値である。このように、強化学習装置100は、風力発電設備400を制御可能である。
(価値関数の定義例)
次に、強化学習装置100の第1動作例~第5動作例について説明する。まず、図5を用いて、強化学習装置100の第1動作例~第5動作例で共通する、価値関数の定義例について説明する。
図5は、価値関数の定義例を示す説明図である。図5のグラフ500は、価値関数Q(s,a)を実線で示す。また、図5のグラフ500は、価値関数Q(s,a)を表現する基底関数φk(s,a)を、破線で示す。価値関数Q(s,a)は、例えば、基底関数φk(s,a)を用いて、下記式(1)により定義される。wkは、基底関数φk(s,a)の重みである。sは、任意の状態である。aは、任意の行動である。bは、定数である。
(強化学習装置100の第1動作例)
次に、図6を用いて、価値関数Q(s,a)を上記式(1)により定義した場合の、強化学習装置100の第1動作例について説明する。
図6は、強化学習装置100の第1動作例を示す説明図である。図6の例では、強化学習装置100は、いずれかの時点において、価値関数を学習し、制御対象の状態の強化学習に対する寄与度に基づいて経験度関数を更新した場合を一例として説明する。グラフ610は、いずれかの時点において学習された価値関数を示す。グラフ620は、いずれかの時点において更新された経験度関数を示す。グラフ610,620の「×」は、いずれかの時点における状態を示す。
ここで、強化学習装置100は、いずれかの時点における状態との間で価値関数の単調性を満たさず、かつ、いずれかの時点における状態よりも経験度が大きい、別の状態を探索する。ここでは、単調性は、単調増加の性質である。強化学習装置100は、例えば、いずれかの時点における状態よりも大きい状態の中から、価値が小さく、かつ、経験度が大きい状態と、いずれかの時点における状態よりも小さい状態の中から、価値が大きく、かつ、経験度が大きい状態とを探索する。
図6の例では、いずれかの時点における状態との間で価値関数の単調性を満たさない状態は、範囲611,612に含まれる。また、いずれかの時点における状態よりも経験度が大きい状態は、範囲621,622に含まれる。このため、強化学習装置100は、範囲631,632の中から、別の状態を探索する。
そして、強化学習装置100は、探索した1以上の状態の価値に基づいて、価値関数のうち「×」に対応する価値を補正することにより、価値関数を更新する。強化学習装置100は、例えば、探索した1以上の状態のうち、経験度が最も大きい状態の価値に基づいて、価値関数のうち「×」に対応する価値を補正することにより、価値関数を更新する。
ここで、強化学習装置100が、価値関数を学習し、状態の寄与度に基づいて経験度関数を更新し、価値関数を更新するか否かを判断し、価値関数を更新すると判断した場合に更新する一連の動作について、より具体的に説明する。
具体的には、まず、強化学習装置100は、下記式(2)により、TD誤差δを算出する。tは、単位時間の倍数で示される時刻である。t+1は、時刻tから単位時間経過した次の時刻である。stは、時刻tにおける状態である。st+1は、次の時刻t+1における状態である。atは、時刻tにおける行動である。Q(s,a)は、価値関数である。γは、割引率(discount rate)である。γは、0~1の値である。
次に、強化学習装置100は、算出したTD誤差に基づいて、下記式(3)により、各基底関数φk(s,a)にかかる重みwkを更新する。αは、定数である。
そして、強化学習装置100は、寄与度|φk(st,at)|に基づいて、下記式(4)および下記式(5)により、経験度関数E(s,a)を更新する。ekは、経験度関数E(s,a)にかかる重みである。
次に、強化学習装置100は、状態stとの間で価値関数の単調性を満たさず、かつ、状態stよりも経験度が大きい状態を探索する。強化学習装置100は、例えば、状態stの近傍から複数の状態をサンプリングし、サンプル集合Sを生成する。そして、強化学習装置100は、サンプル集合Sから、下記式(6)および下記式(7)を満たす状態s’を探索する。
次に、強化学習装置100は、1つの状態も探索されなかった場合、価値関数を更新しないと判断する。一方で、強化学習装置100は、1以上の状態が探索された場合、価値関数を更新すると判断する。強化学習装置100は、価値関数を更新すると判断した場合、下記式(8)により、探索された1以上の状態から、いずれかの状態s’を選択する。
次に、強化学習装置100は、選択した状態s’の価値に基づいて、下記式(9)により、状態stの価値と、選択した状態s’の価値との差δ’を算出する。
次に、強化学習装置100は、算出した差δ’に基づいて、下記式(10)により、各基底関数φk(s,a)にかかる重みwkを更新する。
これにより、強化学習装置100は、現在の状態stの価値が、現在の状態stよりも経験度が大きい別の状態s’の価値に近づくように、価値関数を更新することができる。また、強化学習装置100は、現在の状態stよりも経験度が大きい別の状態s’の価値を用いるため、価値関数の誤差の低減化を図ることができ、価値関数の精度向上を図ることができる。また、強化学習装置100は、価値関数を更新する際の補正幅を、現在の状態stの価値と別の状態s’の価値との差δ’以下に抑制することができ、価値関数の精度に悪影響を与える可能性の低減化を図ることができる。
また、強化学習装置100は、価値関数の学習と同様の手法で、価値関数を更新することができる。強化学習装置100は、例えば、価値関数の学習にかかる上記式(2)および上記式(3)と同様の、上記式(9)および上記式(10)により価値関数を更新することができる。換言すれば、強化学習装置100は、価値関数の学習と更新を、下記式(11)に纏めることができる。このため、強化学習装置100は、価値関数を基底関数で表現する強化学習の枠組みに悪影響を与える可能性を低減することができる。
このように、強化学習装置100は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。強化学習による学習効率が、どのように向上するかについては、具体的には、図17~図22を用いて後述する。
ここでは、強化学習装置100が、価値関数を学習した際に経験度関数を更新する場合について説明したが、これに限らない。例えば、強化学習装置100が、価値関数を学習した際と、価値関数を更新した際との両方で、経験度関数を更新する場合があってもよい。この場合に対応する動作例が、後述する第2動作例である。
ここでは、強化学習装置100が、価値関数を学習する都度、価値関数を更新するか否かを判断する場合について説明したが、これに限らない。例えば、1度価値関数を更新しないと判断した後、価値関数を数回学習しても、価値関数の更新が必要になる可能性は、比較的低いと判断される。このため、強化学習装置100が、1度価値関数を更新しないと判断した後、判断および更新の処理を省略する場合があってもよい。この場合、強化学習装置100が、経験度の最大値と最小値との差に基づいて、価値関数を更新しないと判断してもよい。この場合に対応する動作例が、後述する第3動作例である。
ここでは、強化学習装置100が、現在の状態stの価値が、現在の状態stよりも経験度が大きい別の状態s’の価値に近づくように、価値関数を更新する場合について説明したが、これに限らない。例えば、強化学習装置100が、現在の状態stよりも経験度が小さい別の状態s’の価値が、現在の状態stの価値に近づくように、価値関数を更新する場合があってもよい。この場合に対応する動作例が、後述する第4動作例である。
ここでは、単調性が、単調増加である場合について説明したが、これに限らない。例えば、単調性が、単調減少である場合があってもよい。また、例えば、単調性が、単峰性である場合があってもよい。この場合の動作例が、後述する第5動作例である。
(第1動作例における学習処理手順)
次に、図7を用いて、強化学習装置100が実行する、学習処理手順の一例について説明する。学習処理は、例えば、図2に示したCPU201と、メモリ202や記録媒体205などの記憶領域と、ネットワークI/F203とによって実現される。
図7は、第1動作例における学習処理手順の一例を示すフローチャートである。図7において、強化学習装置100は、上記式(2)および上記式(3)により、報酬rtと、状態stと、状態st+1と、行動atとに基づいて、価値関数を更新する(ステップS701)。次に、強化学習装置100は、上記式(4)および上記式(5)により、経験度関数を更新する(ステップS702)。
次に、強化学習装置100は、n個の状態をサンプリングし、サンプル集合Sを生成する(ステップS703)。次に、強化学習装置100は、サンプル集合Sから1つの状態を取り出し、状態s’に設定する(ステップS704)。そして、強化学習装置100は、上記式(6)により、状態stと状態s’とにおいて、価値関数が単調性を満たすか否かを判定する(ステップS705)。
ここで、単調性を満たさない場合(ステップS705:No)、強化学習装置100は、ステップS708の処理に移行する。一方で、単調性を満たす場合(ステップS705:Yes)、強化学習装置100は、ステップS706の処理に移行する。
ステップS706では、強化学習装置100は、上記式(7)により、状態s’の経験度が、状態stの経験度よりも大きいか否かを判定する(ステップS706)。ここで、状態s’の経験度が状態stの経験度以下である場合(ステップS706:No)、強化学習装置100は、ステップS708の処理に移行する。一方で、状態s’の経験度が状態stの経験度より大きい場合(ステップS706:Yes)、ステップS707の処理に移行する。
ステップS707では、強化学習装置100は、状態s’を候補集合S’に追加する(ステップS707)。そして、強化学習装置100は、ステップS708の処理に移行する。
ステップS708では、強化学習装置100は、サンプル集合Sが空であるか否かを判定する(ステップS708)。ここで、サンプル集合Sが空ではない場合(ステップS708:No)、強化学習装置100は、ステップS704の処理に戻る。一方で、サンプル集合Sが空である場合(ステップS708:Yes)、強化学習装置100は、ステップS709の処理に移行する。
ステップS709では、強化学習装置100は、候補集合S’が空であるか否かを判定する(ステップS709)。ここで、候補集合S’が空である場合(ステップS709:Yes)、強化学習装置100は、学習処理を終了する。一方で、候補集合S’が空ではない場合(ステップS709:No)、強化学習装置100は、ステップS710の処理に移行する。
ステップS710では、強化学習装置100は、上記式(8)により、候補集合S’の中から最も経験度が大きい状態s’を取り出す(ステップS710)。次に、強化学習装置100は、上記式(9)により、価値関数の差δ’を算出する(ステップS711)。
そして、強化学習装置100は、上記式(10)により、各基底関数の重みwkを、wk←wk+αδ’φk(st,at)で更新する(ステップS712)。その後、強化学習装置100は、学習処理を終了する。これにより、強化学習装置100は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。
(強化学習装置100の第2動作例)
次に、価値関数Q(s,a)を上記式(1)により定義した場合の、強化学習装置100の第2動作例について説明する。ここで、価値関数を更新することは、価値関数の学習と同様の効果を与えることと扱うことができ、価値関数を更新することが、経験度を大きくすると扱うこともできる。このため、強化学習装置100が、価値関数を学習した際と、価値関数を更新した際との両方で、経験度関数を更新する。
強化学習装置100は、第1動作例と同様に、上記式(2)により、TD誤差δを算出し、算出したTD誤差に基づいて、上記式(3)により、各基底関数φk(s,a)にかかる重みwkを更新する。そして、強化学習装置100は、第1動作例と同様に、上記式(4)および上記式(5)により、経験度関数E(s,a)を更新する。
次に、強化学習装置100は、第1動作例と同様に、状態stとの間で価値関数の単調性を満たさず、かつ、状態stよりも経験度が大きい状態を探索する。そして、強化学習装置100は、1つの状態も探索されなかった場合、価値関数を更新しないと判断する。一方で、強化学習装置100は、1以上の状態が探索された場合、価値関数を更新すると判断する。強化学習装置100は、第1動作例と同様に、価値関数を更新すると判断した場合、上記式(8)により、探索された1以上の状態から、いずれかの状態s’を選択する。
次に、強化学習装置100は、第1動作例と同様に、選択した状態s’の価値に基づいて、上記式(9)により、状態stの価値と、選択した状態s’の価値との差δ’を算出する。そして、強化学習装置100は、第1動作例と同様に、算出した差δ’に基づいて、上記式(10)により、各基底関数φk(s,a)にかかる重みwkを更新する。ここで、強化学習装置100は、第1動作例とは異なり、下記式(12)により、経験度関数E(s,a)をさらに更新する。εは、所定の値である。
これにより、強化学習装置100は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。強化学習による学習効率が、どのように向上するかについては、具体的には、図17~図22を用いて後述する。また、強化学習装置100は、経験度関数の精度向上を図ることができる。
(第2動作例における学習処理手順)
次に、図8および図9を用いて、強化学習装置100が実行する、学習処理手順の一例について説明する。学習処理は、例えば、図2に示したCPU201と、メモリ202や記録媒体205などの記憶領域と、ネットワークI/F203とによって実現される。
図8および図9は、第2動作例における学習処理手順の一例を示すフローチャートである。図8において、強化学習装置100は、上記式(2)および上記式(3)により、報酬rtと、状態stと、状態st+1と、行動atとに基づいて、価値関数を更新する(ステップS801)。次に、強化学習装置100は、上記式(4)および上記式(5)により、経験度関数を更新する(ステップS802)。
次に、強化学習装置100は、n個の状態をサンプリングし、サンプル集合Sを生成する(ステップS803)。次に、強化学習装置100は、サンプル集合Sから1つの状態を取り出し、状態s’に設定する(ステップS804)。そして、強化学習装置100は、上記式(6)により、状態stと状態s’とにおいて、価値関数が単調性を満たすか否かを判定する(ステップS805)。
ここで、単調性を満たさない場合(ステップS805:No)、強化学習装置100は、ステップS808の処理に移行する。一方で、単調性を満たす場合(ステップS805:Yes)、強化学習装置100は、ステップS806の処理に移行する。
ステップS806では、強化学習装置100は、上記式(7)により、状態s’の経験度が、状態stの経験度よりも大きいか否かを判定する(ステップS806)。ここで、状態s’の経験度が状態stの経験度以下である場合(ステップS806:No)、強化学習装置100は、ステップS808の処理に移行する。一方で、状態s’の経験度が状態stの経験度より大きい場合(ステップS806:Yes)、ステップS807の処理に移行する。
ステップS807では、強化学習装置100は、状態s’を候補集合S’に追加する(ステップS807)。そして、強化学習装置100は、ステップS808の処理に移行する。
ステップS808では、強化学習装置100は、サンプル集合Sが空であるか否かを判定する(ステップS808)。ここで、サンプル集合Sが空ではない場合(ステップS808:No)、強化学習装置100は、ステップS804の処理に戻る。一方で、サンプル集合Sが空である場合(ステップS808:Yes)、強化学習装置100は、図9のステップS901の処理に移行する。次に、図9の説明に移行する。
図9において、強化学習装置100は、候補集合S’が空であるか否かを判定する(ステップS901)。ここで、候補集合S’が空である場合(ステップS901:Yes)、強化学習装置100は、学習処理を終了する。一方で、候補集合S’が空ではない場合(ステップS901:No)、強化学習装置100は、ステップS902の処理に移行する。
ステップS902では、強化学習装置100は、上記式(8)により、候補集合S’の中から最も経験度が大きい状態s’を取り出す(ステップS902)。次に、強化学習装置100は、上記式(9)により、価値関数の差δ’を算出する(ステップS903)。
そして、強化学習装置100は、上記式(10)により、各基底関数の重みwkを更新する(ステップS904)。次に、強化学習装置100は、上記式(12)により、経験度関数を更新する(ステップS905)。そして、強化学習装置100は、学習処理を終了する。これにより、強化学習装置100は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。
(強化学習装置100の第3動作例)
次に、価値関数Q(s,a)を上記式(1)により定義した場合の、強化学習装置100の第3動作例について説明する。ここで、例えば、1度価値関数を更新しないと判断した後、価値関数を数回学習しても、価値関数の更新が必要になる可能性は、比較的低いと判断される。また、経験度の最大値と最小値との差が、比較的小さい場合、価値関数を更新しなくても、学習効率に悪影響を与える可能性は、比較的低いと判断される。このため、強化学習装置100は、特定の状況において判断および更新の処理を省略する。
強化学習装置100は、第1動作例と同様に、上記式(2)により、TD誤差δを算出し、算出したTD誤差に基づいて、上記式(3)により、各基底関数φk(s,a)にかかる重みwkを更新する。そして、強化学習装置100は、第1動作例と同様に、上記式(4)および上記式(5)により、経験度関数E(s,a)を更新する。
そして、強化学習装置100は、第1動作例と同様に、状態stとの間で価値関数の単調性を満たさず、かつ、状態stよりも経験度が大きい状態を探索する。ここで、強化学習装置100は、第1動作例とは異なり、下記式(13)および下記式(14)により、価値関数を更新する必要があるか否かを判断する。
強化学習装置100は、上記式(13)および上記式(14)を満たす場合、価値関数を更新する必要がないと判断する。その後、強化学習装置100は、価値関数の学習を所定回数繰り返すまでは、判断および更新の処理を省略する。そして、強化学習装置100は、価値関数の学習を所定回数繰り返した後、改めて、上記式(13)および上記式(14)により、価値関数を更新する必要があるか否かを判断する。
一方で、強化学習装置100は、上記式(13)または上記式(14)を満たさない場合、価値関数を更新する必要があると判断する。そして、強化学習装置100は、第1動作例と同様に、価値関数を更新すると判断した場合、上記式(8)により、探索された1以上の状態から、いずれかの状態s’を選択する。
次に、強化学習装置100は、第1動作例と同様に、選択した状態s’の価値に基づいて、上記式(9)により、状態stの価値と、選択した状態s’の価値との差δ’を算出する。そして、強化学習装置100は、第1動作例と同様に、算出した差δ’に基づいて、上記式(10)により、各基底関数φk(s,a)にかかる重みwkを更新する。
これにより、強化学習装置100は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。強化学習による学習効率が、どのように向上するかについては、具体的には、図17~図22を用いて後述する。また、強化学習装置100は、処理量の低減化を図ることができる。
また、強化学習装置100は、上記「所定回数」の代わりに、「価値関数の学習量の累積と経験度関数の更新量の累積とが所定値を超えない期間」を利用してもよい。価値関数の学習量の累積と経験度関数の更新量の累積は、例えば、下記式(15)および下記式(16)により表される。
(第3動作例における学習処理手順)
次に、図10および図11を用いて、強化学習装置100が実行する、学習処理手順の一例について説明する。学習処理は、例えば、図2に示したCPU201と、メモリ202や記録媒体205などの記憶領域と、ネットワークI/F203とによって実現される。
図10および図11は、第3動作例における学習処理手順の一例を示すフローチャートである。図10において、強化学習装置100は、上記式(2)および上記式(3)により、報酬rtと、状態stと、状態st+1と、行動atとに基づいて、価値関数を更新する(ステップS1001)。次に、強化学習装置100は、上記式(4)および上記式(5)により、経験度関数を更新する(ステップS1002)。
そして、強化学習装置100は、価値関数を更新しないと判定した時点から、学習処理を所定回数実行済みであるか否かを判定する(ステップS1003)。ここで、学習処理を所定回数実行済みではない場合(ステップS1003:No)、強化学習装置100は、学習処理を終了する。一方で、学習処理を所定回数実行済みである場合(ステップS1003:Yes)、強化学習装置100は、ステップS1004の処理に移行する。
ステップS1004では、強化学習装置100は、n個の状態をサンプリングし、サンプル集合Sを生成する(ステップS1004)。次に、強化学習装置100は、上記式(15)および上記式(16)により、価値関数を更新するか否かを判定する(ステップS1005)。ここで、更新しない場合(ステップS1005:No)、強化学習装置100は、学習処理を終了する。一方で、更新する場合(ステップS1005:Yes)、強化学習装置100は、ステップS1006の処理に移行する。
ステップS1006では、強化学習装置100は、サンプル集合Sから1つの状態を取り出し、状態s’に設定する(ステップS1006)。そして、強化学習装置100は、上記式(6)により、状態stと状態s’とにおいて、価値関数が単調性を満たすか否かを判定する(ステップS1007)。ここで、単調性を満たさない場合(ステップS1007:No)、強化学習装置100は、ステップS1010の処理に移行する。一方で、単調性を満たす場合(ステップS1007:Yes)、強化学習装置100は、ステップS1008の処理に移行する。
ステップS1008では、強化学習装置100は、上記式(7)により、状態s’の経験度が、状態stの経験度よりも大きいか否かを判定する(ステップS1008)。ここで、状態s’の経験度が状態stの経験度以下である場合(ステップS1008:No)、強化学習装置100は、ステップS1010の処理に移行する。一方で、状態s’の経験度が状態stの経験度より大きい場合(ステップS1008:Yes)、ステップS1009の処理に移行する。
ステップS1009では、強化学習装置100は、状態s’を候補集合S’に追加する(ステップS1009)。そして、強化学習装置100は、ステップS1010の処理に移行する。
ステップS1010では、強化学習装置100は、サンプル集合Sが空であるか否かを判定する(ステップS1010)。ここで、サンプル集合Sが空ではない場合(ステップS1010:No)、強化学習装置100は、ステップS1006の処理に戻る。一方で、サンプル集合Sが空である場合(ステップS1010:Yes)、強化学習装置100は、図11のステップS1101の処理に移行する。次に、図11の説明に移行する。
図11において、強化学習装置100は、候補集合S’が空であるか否かを判定する(ステップS1101)。ここで、候補集合S’が空である場合(ステップS1101:Yes)、強化学習装置100は、学習処理を終了する。一方で、候補集合S’が空ではない場合(ステップS1101:No)、強化学習装置100は、ステップS1102の処理に移行する。
ステップS1102では、強化学習装置100は、上記式(8)により、候補集合S’の中から最も経験度が大きい状態s’を取り出す(ステップS1102)。次に、強化学習装置100は、上記式(9)により、価値関数の差δ’を算出する(ステップS1103)。
そして、強化学習装置100は、上記式(10)により、各基底関数の重みwkを更新する(ステップS1104)。その後、強化学習装置100は、学習処理を終了する。これにより、強化学習装置100は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。また、強化学習装置100は、処理量の低減化を図ることができる。
(強化学習装置100の第4動作例)
次に、価値関数Q(s,a)を上記式(1)により定義した場合の、強化学習装置100の第4動作例について説明する。ここで、強化学習装置100は、現在の状態stよりも経験度が小さい別の状態s’の価値が、現在の状態stの価値に近づくように、価値関数を更新しても、価値関数の精度向上を図ることが可能である。
強化学習装置100は、第1動作例と同様に、上記式(2)により、TD誤差δを算出し、算出したTD誤差に基づいて、上記式(3)により、各基底関数φk(s,a)にかかる重みwkを更新する。そして、強化学習装置100は、第1動作例と同様に、上記式(4)および上記式(5)により、経験度関数E(s,a)を更新する。ここで、強化学習装置100は、第1動作例とは異なり、状態stとの間で価値関数の単調性を満たさず、かつ、状態stとの経験度の差が大きいという下記式(17)を満たす状態を探索する。
そして、強化学習装置100は、1つの状態も探索されなかった場合、価値関数を更新しないと判断する。一方で、強化学習装置100は、1以上の状態が探索された場合、価値関数を更新すると判断する。強化学習装置100は、第1動作例とは異なり、価値関数を更新すると判断した場合、下記式(18)により、探索された1以上の状態から、いずれかの状態s’を選択する。
次に、強化学習装置100は、状態stと選択した状態s’とを、状態s1と状態s2とに設定する。強化学習装置100は、例えば、下記式(19)を満たす場合、下記式(20)により、状態stと選択した状態s’とを、状態s1と状態s2とに設定する。
また、強化学習装置100は、例えば、下記式(21)を満たす場合、下記式(22)により、状態stと選択した状態s’とを、状態s1と状態s2とに設定する。
そして、強化学習装置100は、状態s1と状態s2との価値に基づいて、下記式(23)により、状態s1と状態s2との価値の差δ’を算出する。
そして、強化学習装置100は、算出した差δ’に基づいて、下記式(24)により、各基底関数φk(s,a)にかかる重みwkを更新する。
これにより、強化学習装置100は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。また、強化学習装置100は、価値関数の2通りの更新により、強化学習による学習効率を、さらに向上することができる。強化学習による学習効率が、どのように向上するかについては、具体的には、図17~図22を用いて後述する。
(第4動作例における学習処理手順)
次に、図12および図13を用いて、強化学習装置100が実行する、学習処理手順の一例について説明する。学習処理は、例えば、図2に示したCPU201と、メモリ202や記録媒体205などの記憶領域と、ネットワークI/F203とによって実現される。
図12および図13は、第4動作例における学習処理手順の一例を示すフローチャートである。図12において、強化学習装置100は、上記式(2)および上記式(3)により、報酬rtと、状態stと、状態st+1と、行動atとに基づいて、価値関数を更新する(ステップS1201)。次に、強化学習装置100は、上記式(4)および上記式(5)により、経験度関数を更新する(ステップS1202)。
次に、強化学習装置100は、n個の状態をサンプリングし、サンプル集合Sを生成する(ステップS1203)。次に、強化学習装置100は、サンプル集合Sから1つの状態を取り出し、状態s’に設定する(ステップS1204)。そして、強化学習装置100は、上記式(6)により、状態stと状態s’とにおいて、価値関数が単調性を満たすか否かを判定する(ステップS1205)。
ここで、単調性を満たさない場合(ステップS1205:No)、強化学習装置100は、ステップS1208の処理に移行する。一方で、単調性を満たす場合(ステップS1205:Yes)、強化学習装置100は、ステップS1206の処理に移行する。
ステップS1206では、強化学習装置100は、上記式(17)により、経験度の差が、所定の値εより大きいか否かを判定する(ステップS1206)。ここで、ε未満である場合(ステップS1206:No)、強化学習装置100は、ステップS1208の処理に移行する。一方で、εより大きい場合(ステップS1206:Yes)、強化学習装置100は、ステップS1207の処理に移行する。
ステップS1207では、強化学習装置100は、状態s’を候補集合S’に追加する(ステップS1207)。そして、強化学習装置100は、ステップS1208の処理に移行する。
ステップS1208では、強化学習装置100は、サンプル集合Sが空であるか否かを判定する(ステップS1208)。ここで、サンプル集合Sが空ではない場合(ステップS1208:No)、強化学習装置100は、ステップS1204の処理に戻る。一方で、サンプル集合Sが空である場合(ステップS1208:Yes)、強化学習装置100は、図13のステップS1301の処理に移行する。次に、図13の説明に移行する。
図13において、強化学習装置100は、候補集合S’が空であるか否かを判定する(ステップS1301)。ここで、候補集合S’が空である場合(ステップS1301:Yes)、強化学習装置100は、学習処理を終了する。一方で、候補集合S’が空ではない場合(ステップS1301:No)、強化学習装置100は、ステップS1302の処理に移行する。
ステップS1302では、強化学習装置100は、上記式(18)により、候補集合S’の中から最も経験度の差が大きい状態s’を取り出し、状態stと状態s’とのうち経験度が大きい方をs1に設定し、経験度が小さい方をs2に設定する(ステップS1302)。
次に、強化学習装置100は、上記式(23)により、価値関数の差δ’を算出する(ステップS1303)。そして、強化学習装置100は、上記式(24)により、各基底関数の重みwkを更新する(ステップS1304)。その後、強化学習装置100は、学習処理を終了する。これにより、強化学習装置100は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。
(強化学習装置100の第5動作例)
次に、図14を用いて、価値関数Q(s,a)を上記式(1)により定義した場合の、強化学習装置100の第5動作例について説明する。
図14は、強化学習装置100の第5動作例を示す説明図である。ここで、単調性が、単峰性である場合がある。単峰性は、価値のピークが1箇所であり、ピークになる状態より小さい範囲で単調増加を表し、ピークになる状態より大きい範囲で単調減少を表す。単峰性は、例えば、制御対象が風力発電設備である場合に現れる。
図14において、強化学習装置100は、例えば、状態stの両側に、状態stよりも経験度が大きく、かつ、状態stよりも価値が大きい別の状態がある場合、価値関数のうち状態stに対応する価値を、両側の別の状態の価値に基づいて更新する。図14の例では、強化学習装置100は、状態stが価値1401であれば補正し、状態stが価値1402であれば補正しない。
具体的には、強化学習装置100は、第1動作例と同様に、上記式(2)により、TD誤差δを算出し、算出したTD誤差に基づいて、上記式(3)により、各基底関数φk(s,a)にかかる重みwkを更新する。そして、強化学習装置100は、第1動作例と同様に、上記式(4)および上記式(5)により、経験度関数E(s,a)を更新する。ここで、強化学習装置100は、第1動作例とは異なり、下記式(25)により、状態stの両側から、サンプル集合S1とサンプル集合S2とを抽出する。
次に、強化学習装置100は、下記式(26)および下記式(27)により、サンプル集合S1とサンプル集合S2とから、状態s’と状態s”とを抽出する。
次に、強化学習装置100は、下記式(28)により、状態stの価値と、状態s’と状態s”との価値のうち状態stの価値に近い方の価値との差δ’を算出する。
そして、強化学習装置100は、算出した差δ’に基づいて、下記式(29)により、各基底関数φk(s,a)にかかる重みwkを更新する。
これにより、強化学習装置100は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。強化学習による学習効率が、どのように向上するかについては、具体的には、図17~図22を用いて後述する。
(第5動作例における学習処理手順)
次に、図15および図16を用いて、強化学習装置100が実行する、学習処理手順の一例について説明する。学習処理は、例えば、図2に示したCPU201と、メモリ202や記録媒体205などの記憶領域と、ネットワークI/F203とによって実現される。
図15および図16は、第5動作例における学習処理手順の一例を示すフローチャートである。図15および図16において、強化学習装置100は、上記式(2)および上記式(3)により、報酬rtと、状態stと、状態st+1と、行動atとに基づいて、価値関数を更新する(ステップS1501)。次に、強化学習装置100は、上記式(4)および上記式(5)により、経験度関数を更新する(ステップS1502)。
次に、強化学習装置100は、n個の状態をサンプリングし、サンプル集合Sを生成する(ステップS1503)。次に、強化学習装置100は、サンプル集合Sから1つの状態を取り出し、状態s’に設定する(ステップS1504)。そして、強化学習装置100は、下記式(30)により、状態s’の価値が、状態stの価値より大きいか否かを判定する(ステップS1505)。
ここで、状態s’の価値が状態stの価値以下である場合(ステップS1505:No)、強化学習装置100は、ステップS1510の処理に移行する。一方で、状態s’の価値が状態stの価値より大きい場合(ステップS1505:Yes)、強化学習装置100は、ステップS1506の処理に移行する。
ステップS1506では、強化学習装置100は、上記式(7)により、状態s’の経験度が、状態stの経験度よりも大きいか否かを判定する(ステップS1506)。ここで、状態s’の経験度が状態stの経験度以下である場合(ステップS1506:No)、強化学習装置100は、ステップS1510の処理に移行する。一方で、状態s’の経験度が状態stの経験度より大きい場合(ステップS1506:Yes)、ステップS1507の処理に移行する。
ステップS1507では、強化学習装置100は、状態s’<状態stであるか否かを判定する(ステップS1507)。ここで、状態s’<状態stである場合(ステップS1507:Yes)、強化学習装置100は、ステップS1508の処理に移行する。一方で、状態s’<状態stではない場合(ステップS1507:No)、強化学習装置100は、ステップS1509の処理に移行する。
ステップS1508では、強化学習装置100は、状態s’を候補集合S1に追加する(ステップS1508)。そして、強化学習装置100は、ステップS1510の処理に移行する。
ステップS1509では、強化学習装置100は、状態s’を候補集合S2に追加する(ステップS1509)。そして、強化学習装置100は、ステップS1510の処理に移行する。
ステップS1510では、強化学習装置100は、サンプル集合Sが空であるか否かを判定する(ステップS1510)。ここで、サンプル集合Sが空ではない場合(ステップS1510:No)、強化学習装置100は、ステップS1504の処理に戻る。一方で、サンプル集合Sが空である場合(ステップS1510:Yes)、強化学習装置100は、図16のステップS1601の処理に移行する。次に、図16の説明に移行する。
図16において、強化学習装置100は、候補集合S1または候補集合S2が空であるか否かを判定する(ステップS1601)。ここで、候補集合S1または候補集合S2が空である場合(ステップS1601:Yes)、強化学習装置100は、学習処理を終了する。一方で、候補集合S1および候補集合S2のいずれもが空ではない場合(ステップS1601:No)、強化学習装置100は、ステップS1602の処理に移行する。
ステップS1602では、強化学習装置100は、上記式(26)および上記式(27)により、候補集合S1および候補集合S2のそれぞれの中から、最も経験度が大きい状態s’および状態s”を取り出す(ステップS1602)。次に、強化学習装置100は、上記式(28)により、価値関数の差δ’を算出する(ステップS1603)。
そして、強化学習装置100は、上記式(29)により、各基底関数の重みwkを更新する(ステップS1604)。その後、強化学習装置100は、学習処理を終了する。これにより、強化学習装置100は、単調性が単峰性である場合でも、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。
(強化学習による学習効率を比較する一例)
次に、図17~図19を用いて、強化学習による学習効率について説明する。具体的には、動作例3における強化学習による学習効率を、価値関数を学習した後に価値関数を更新しない場合と比較する一例について説明する。
図17~図19は、強化学習による学習効率を比較する一例を示す説明図である。図17~図19において、グラフ1701~1703,1801~1803,1901~1903は、価値関数を学習した後、価値関数を更新しない場合の価値関数の遷移例を示す。図17~図19において、グラフ1711~1713,1811~1813,1911~1913は、動作例3における価値関数の遷移例を示す。図17の説明に移行する。
図17において、グラフ1701~1703は、それぞれ、価値関数を更新しない場合の、時点t1~t3における価値関数を示す。図17において、グラフ1711~1713は、動作例3における時点t1~t3における価値関数を示す。例えば、グラフ1703とグラフ1713とを比較すると、強化学習装置100は、時点t3において、価値関数を更新することができ、価値関数の精度向上を図ることができることが示される。
図18において、グラフ1801~1803は、それぞれ、価値関数を更新しない場合の、時点tn~tn+2における価値関数を示す。図18において、グラフ1811~1813は、動作例3における時点tn~tn+2における価値関数を示す。例えば、グラフ1803とグラフ1813とを比較すると、強化学習装置100は、時点tn+2において、価値関数を更新することができ、価値関数の精度向上を図ることができることが示される。また、グラフ1803を参照すると、価値関数を更新しない場合は、一部の状態について価値が学習されず、価値関数の精度が悪いことが示される。
図19において、グラフ1901~1903は、それぞれ、価値関数を更新しない場合の、時点tm~tm+1および時点tzにおける価値関数を示す。時点tzは、価値関数が収束した後の時点である。図19において、グラフ1911~1913は、動作例3における時点tm~tm+1および時点tzにおける価値関数を示す。例えば、グラフ1902,1903とグラフ1912,1913とを比較すると、強化学習装置100は、時点tm+1において、時点tzにおける価値関数に比較的近い価値関数を得ることができ、価値関数の精度向上を図ることができることが示される。
(強化学習による学習効率を比較する別の例)
次に、図20~図22を用いて、動作例3における強化学習による学習効率を比較する別の例について説明する。
図20~図22は、強化学習による学習効率を比較する別の例を示す説明図である。図20~図22において、グラフ2001~2003,2101~2103,2201~2203は、価値関数を常に更新する場合の価値関数の遷移例を示す。図20~図22において、グラフ2011~2013,2111~2113,2211~2213は、動作例3における価値関数の遷移例を示す。
図20において、グラフ2001~2003は、それぞれ、価値関数を常に更新する場合の、時点t1~t3における価値関数を示す。図20において、グラフ2011~2013は、動作例3における時点t1~t3における価値関数を示す。例えば、グラフ2003とグラフ2013とを比較すると、強化学習装置100は、時点t3において、価値関数を更新することができ、価値関数の精度向上を図ることができることが示される。
図21において、グラフ2101~2103は、それぞれ、価値関数を常に更新する場合の、時点tn~tn+2における価値関数を示す。図21において、グラフ2111~2113は、動作例3における時点tn~tn+2における価値関数を示す。例えば、グラフ2103とグラフ2113とを比較すると、強化学習装置100は、時点tn+2において、価値関数を更新することができ、価値関数の精度向上を図ることができることが示される。また、グラフ2103とグラフ2113とを比較すると、価値関数を常に更新する場合は、価値関数の誤差を拡大する方向に、価値関数を更新してしまい、価値関数の精度が悪くなることが示される。
図22において、グラフ2201~2203は、それぞれ、価値関数を常に更新する場合の、時点tm~tm+1および時点tzにおける価値関数を示す。時点tzは、価値関数が収束した後の時点である。図22において、グラフ2211~2213は、動作例3における時点tm~tm+1および時点tzにおける価値関数を示す。例えば、グラフ2202,2203とグラフ2212,2213とを比較すると、強化学習装置100は、時点tm+1において、時点tzにおける価値関数に比較的近い価値関数を得ることができ、価値関数の精度向上を図ることができることが示される。また、価値関数を常に更新する場合は、価値関数の誤差を拡大する方向に、価値関数を更新してしまった結果、価値関数の精度が悪くなることが示される。
ここでは、単調性が、状態が取りうる全範囲について成立する場合について説明したが、これに限らない。例えば、単調性が、状態が取りうる一部範囲について成立する場合について、強化学習装置100が適用されてもよい。具体的には、制御対象の状態に制約がある場合、制約の範囲で単調性を有する場合について、強化学習装置100が適用されてもよい。
以上説明したように、強化学習装置100によれば、単位学習ステップごとに、基底関数を用いて、単位学習ステップに用いた制御対象の状態または行動の、強化学習に対する寄与度を算出することができる。強化学習装置100によれば、単位学習ステップ後の価値関数、および、算出した寄与度に基づいて、価値関数を更新するか否かを判断することができる。強化学習装置100によれば、価値関数を更新すると判断した場合、価値関数を更新することができる。これにより、強化学習装置100は、強化学習による学習効率の向上を図ることができる。
強化学習装置100によれば、単位学習ステップごとに、算出した寄与度に基づいて、制御対象の状態または行動ごとの強化学習における経験度を、基底関数により規定する経験度関数を更新することができる。強化学習装置100によれば、単位学習ステップ後の価値関数、および、更新した経験度関数に基づいて、価値関数を更新するか否かを判断することができる。これにより、強化学習装置100は、経験度を利用して、強化学習による学習効率の向上を図りやすくすることができる。
強化学習装置100によれば、価値関数を更新すると判断した場合、単位学習ステップに用いた制御対象の状態または行動の、強化学習における経験度が大きくなるように、さらに経験度関数を更新することができる。これにより、強化学習装置100は、経験度関数の精度向上を図ることができ、経験度関数を用いた価値関数の更新要否の判断精度の向上を図ることができ、精度のよい価値関数を得やすくすることができる。
強化学習装置100によれば、単位学習ステップに用いた制御対象の状態または行動の価値が、単位学習ステップに用いた制御対象の状態または行動よりも経験度が大きい制御対象の状態または行動の価値に近づくように、価値関数を更新することができる。これにより、強化学習装置100は、精度のよい価値関数を得やすくすることができる。
強化学習装置100によれば、単位学習ステップに用いた制御対象の状態または行動よりも経験度が小さい制御対象の状態または行動の価値が、単位学習ステップに用いた制御対象の状態または行動の価値に近づくように、価値関数を更新することができる。これにより、強化学習装置100は、精度のよい価値関数を得やすくすることができる。
強化学習装置100によれば、単位学習ステップに用いた制御対象の状態または行動が、単位学習ステップに用いた制御対象の状態または行動よりも経験度が大きい制御対象の状態または行動の2つに挟まれる場合、価値関数を更新すると判断することができる。これにより、強化学習装置100は、価値関数の特性が単峰性を有する場合に適用することができる。
強化学習装置100によれば、価値関数を更新しないと判断した後、所定回数分の単位学習ステップが実行されてから、価値関数を更新するか否かを判断することができる。これにより、強化学習装置100は、強化学習による学習効率の低下を抑制しつつ、処理量の低減化を図ることができる。
強化学習装置100によれば、今回の単位学習ステップの学習結果を価値関数に反映させる前に、前回の単位学習ステップ後の価値関数、および、算出した寄与度に基づいて、価値関数を更新するか否かを判断することができる。強化学習装置100によれば、価値関数を更新すると判断した場合、今回の単位学習ステップの学習結果を価値関数に反映させると共に価値関数を更新することができる。強化学習装置100によれば、価値関数を更新しないと判断した場合、今回の単位学習ステップの学習結果を価値関数に反映させることができる。これにより、強化学習装置100は、学習と更新とを纏めて実施することができる。
なお、本実施の形態で説明した強化学習方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明した強化学習プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明した強化学習プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)制御対象の状態または行動に対する価値の特性に単調性を有する価値関数を学習する単位学習ステップを繰り返す強化学習における前記単位学習ステップごとに、前記価値関数の表現に用いられる基底関数を用いて、前記単位学習ステップに用いた前記制御対象の状態または行動の、前記強化学習に対する寄与度を算出し、
前記単位学習ステップ後の前記価値関数、および、算出した前記寄与度に基づいて、前記価値関数を更新するか否かを判断し、
前記価値関数を更新すると判断した場合、前記価値関数を更新する、
処理をコンピュータが実行することを特徴とする強化学習方法。
(付記2)前記単位学習ステップごとに、算出した前記寄与度に基づいて、前記制御対象の状態または行動ごとの前記強化学習における経験度を、前記基底関数により規定する経験度関数を更新する、処理を前記コンピュータが実行し、
前記判断する処理は、
前記単位学習ステップ後の前記価値関数、および、更新した前記経験度関数に基づいて、前記価値関数を更新するか否かを判断する、ことを特徴とする付記1に記載の強化学習方法。
(付記3)前記経験度関数を更新する処理は、
前記価値関数を更新すると判断した場合、前記単位学習ステップに用いた前記制御対象の状態または行動の、前記強化学習における経験度が大きくなるように、さらに前記経験度関数を更新する、ことを特徴とする付記2に記載の強化学習方法。
(付記4)前記価値関数を更新する処理は、
前記単位学習ステップに用いた前記制御対象の状態または行動の価値が、前記単位学習ステップに用いた前記制御対象の状態または行動よりも経験度が大きい前記制御対象の状態または行動の価値に近づくように、前記価値関数を更新する、ことを特徴とする付記2または3に記載の強化学習方法。
(付記5)前記価値関数を更新する処理は、
前記単位学習ステップに用いた前記制御対象の状態または行動よりも経験度が小さい前記制御対象の状態または行動の価値が、前記単位学習ステップに用いた前記制御対象の状態または行動の価値に近づくように、前記価値関数を更新する、ことを特徴とする付記2または3に記載の強化学習方法。
(付記6)前記単調性は、単峰性であり、
前記判断する処理は、
前記単位学習ステップに用いた前記制御対象の状態または行動が、前記単位学習ステップに用いた前記制御対象の状態または行動よりも経験度が大きい前記制御対象の状態または行動の2つに挟まれる場合、前記価値関数を更新すると判断する、ことを特徴とする付記2~5のいずれか一つに記載の強化学習方法。
(付記7)前記判断する処理は、
前記価値関数を更新しないと判断した後、所定回数分の前記単位学習ステップが実行されてから、前記価値関数を更新するか否かを判断する、ことを特徴とする付記1~6のいずれか一つに記載の強化学習方法。
(付記8)前記判断する処理は、
今回の単位学習ステップの学習結果を前記価値関数に反映させる前に、前回の単位学習ステップ後の前記価値関数、および、算出した前記寄与度に基づいて、前記価値関数を更新するか否かを判断し、
前記価値関数を更新する処理は、
前記価値関数を更新すると判断した場合、今回の単位学習ステップの学習結果を前記価値関数に反映させると共に前記価値関数を更新し、前記価値関数を更新しないと判断した場合、今回の単位学習ステップの学習結果を前記価値関数に反映させる、ことを特徴とする付記1に記載の強化学習方法。
(付記9)制御対象の状態または行動に対する価値の特性に単調性を有する価値関数を学習する単位学習ステップを繰り返す強化学習における前記単位学習ステップごとに、前記価値関数の表現に用いられる基底関数を用いて、前記単位学習ステップに用いた前記制御対象の状態または行動の、前記強化学習に対する寄与度を算出し、
前記単位学習ステップ後の前記価値関数、および、算出した前記寄与度に基づいて、前記価値関数を更新するか否かを判断し、
前記価値関数を更新すると判断した場合、前記価値関数を更新する、
処理をコンピュータに実行させることを特徴とする強化学習プログラム。
(付記10)制御対象の状態または行動に対する価値の特性に単調性を有する価値関数を学習する単位学習ステップを繰り返す強化学習における前記単位学習ステップごとに、前記価値関数の表現に用いられる基底関数を用いて、前記単位学習ステップに用いた前記制御対象の状態または行動の、前記強化学習に対する寄与度を算出し、
前記単位学習ステップ後の前記価値関数、および、算出した前記寄与度に基づいて、前記価値関数を更新するか否かを判断し、
前記価値関数を更新すると判断した場合、前記価値関数を更新する、
制御部を有することを特徴とする強化学習装置。