(57)【要約】【課題】強化学習による学習効率の向上を図ること。【解決手段】価値関数学習部４０３は、単位学習ステップを実施し、受け付けた風力発電設備４００の状態や風力発電設備４００の報酬、および、風力発電設備４００に対する行動に基づいて、価値関数を学習する。経験度算出部４０４は、受け付けた風力発電設備４００の状態や風力発電設備４００の報酬、および、風力発電設備４００に対する行動に基づいて、経験度関数を更新する。経験度算出部４０４は、経験度関数に基づいて、風力発電設備４００の今回の状態または行動の経験度、および、他の状態または行動の経験度を算出する。価値関数補正部４０５は、価値関数および経験度に基づいて、価値関数をさらに更新するか否かを判断する。価値関数補正部４０５は、価値関数を更新すると判断した場合、単調性を利用して、価値関数および経験度に基づいて、価値関数を更新する。【選択図】図４
2020119139.tif 000002
【特許請求の範囲】
【請求項１】
制御対象の状態または行動に対する価値の特性に単調性を有する価値関数を学習する単位学習ステップを繰り返す強化学習における前記単位学習ステップごとに、前記価値関数の表現に用いられる基底関数を用いて、前記単位学習ステップに用いた前記制御対象の状態または行動の、前記強化学習に対する寄与度を算出し、
前記単位学習ステップ後の前記価値関数、および、算出した前記寄与度に基づいて、前記価値関数を更新するか否かを判断し、
前記価値関数を更新すると判断した場合、前記価値関数を更新する、
処理をコンピュータが実行することを特徴とする強化学習方法。
【請求項２】
前記単位学習ステップごとに、算出した前記寄与度に基づいて、前記制御対象の状態または行動ごとの前記強化学習における経験度を、前記基底関数により規定する経験度関数を更新する、処理を前記コンピュータが実行し、
前記判断する処理は、
前記単位学習ステップ後の前記価値関数、および、更新した前記経験度関数に基づいて、前記価値関数を更新するか否かを判断する、ことを特徴とする請求項１に記載の強化学習方法。
【請求項３】
前記経験度関数を更新する処理は、
前記価値関数を更新すると判断した場合、前記単位学習ステップに用いた前記制御対象の状態または行動の、前記強化学習における経験度が大きくなるように、さらに前記経験度関数を更新する、ことを特徴とする請求項２に記載の強化学習方法。
【請求項４】
前記価値関数を更新する処理は、
前記単位学習ステップに用いた前記制御対象の状態または行動の価値が、前記単位学習ステップに用いた前記制御対象の状態または行動よりも経験度が大きい前記制御対象の状態または行動の価値に近づくように、前記価値関数を更新する、ことを特徴とする請求項２または３に記載の強化学習方法。
【請求項５】
前記価値関数を更新する処理は、
前記単位学習ステップに用いた前記制御対象の状態または行動よりも経験度が小さい前記制御対象の状態または行動の価値が、前記単位学習ステップに用いた前記制御対象の状態または行動の価値に近づくように、前記価値関数を更新する、ことを特徴とする請求項２または３に記載の強化学習方法。
【請求項６】
前記単調性は、単峰性であり、
前記判断する処理は、
前記単位学習ステップに用いた前記制御対象の状態または行動が、前記単位学習ステップに用いた前記制御対象の状態または行動よりも経験度が大きい前記制御対象の状態または行動の２つに挟まれる場合、前記価値関数を更新すると判断する、ことを特徴とする請求項２〜５のいずれか一つに記載の強化学習方法。
【請求項７】
前記判断する処理は、
前記価値関数を更新しないと判断した後、所定回数分の前記単位学習ステップが実行されてから、前記価値関数を更新するか否かを判断する、ことを特徴とする請求項１〜６のいずれか一つに記載の強化学習方法。
【請求項８】
制御対象の状態または行動に対する価値の特性に単調性を有する価値関数を学習する単位学習ステップを繰り返す強化学習における前記単位学習ステップごとに、前記価値関数の表現に用いられる基底関数を用いて、前記単位学習ステップに用いた前記制御対象の状態または行動の、前記強化学習に対する寄与度を算出し、
前記単位学習ステップ後の前記価値関数、および、算出した前記寄与度に基づいて、前記価値関数を更新するか否かを判断し、
前記価値関数を更新すると判断した場合、前記価値関数を更新する、
処理をコンピュータに実行させることを特徴とする強化学習プログラム。
【請求項９】
制御対象の状態または行動に対する価値の特性に単調性を有する価値関数を学習する単位学習ステップを繰り返す強化学習における前記単位学習ステップごとに、前記価値関数の表現に用いられる基底関数を用いて、前記単位学習ステップに用いた前記制御対象の状態または行動の、前記強化学習に対する寄与度を算出し、
前記単位学習ステップ後の前記価値関数、および、算出した前記寄与度に基づいて、前記価値関数を更新するか否かを判断し、
前記価値関数を更新すると判断した場合、前記価値関数を更新する、
制御部を有することを特徴とする強化学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、強化学習方法、強化学習プログラム、および強化学習装置に関する。
【背景技術】
【０００２】
従来、制御対象に対する探索行動を決定し、制御対象の状態と、決定した探索行動と、決定した探索行動に応じて観測した制御対象の報酬とに基づき、行動の価値を規定する価値関数を学習する一連の処理を繰り返して、制御対象を制御する強化学習の技術がある。価値関数は、例えば、状態行動価値関数または状態価値関数などである。
【０００３】
先行技術としては、例えば、状態変数に応じた各最適化処理の行動価値を定める共通の価値関数に従い、無線通信網内の異なる複数の範囲の各々について、範囲内の状態変数に応じて複数の最適化処理のうちいずれかを選択して実行するものがある。また、例えば、価値関数を用いて、予測時点での状態から、予測時点での調査対象の行動を、予測時点での調査対象の位置情報として決定する技術がある。また、例えば、ロボットのワーク取り出し成否の判定結果に基づいて計算した報酬に応じて、ワーク取り出し動作の価値を定める価値関数を更新する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１０６２０２号公報
【特許文献２】特開２０１７−１６８０２９号公報
【特許文献３】特開２０１７−０６４９１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、強化学習による学習効率の向上を図ることが難しい。例えば、様々な状態に対して様々な行動を試行しなければ、精度のよい価値関数を得ることは難しく、強化学習にかかる処理時間の増大化を招くことになる。
【０００６】
１つの側面では、本発明は、強化学習による学習効率の向上を図ることを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様によれば、制御対象の状態または行動に対する価値の特性に単調性を有する価値関数を学習する単位学習ステップを繰り返す強化学習における前記単位学習ステップごとに、前記価値関数の表現に用いられる基底関数を用いて、前記単位学習ステップに用いた前記制御対象の状態または行動の、前記強化学習に対する寄与度を算出し、前記単位学習ステップ後の前記価値関数、および、算出した前記寄与度に基づいて、前記価値関数を更新するか否かを判断し、前記価値関数を更新すると判断した場合、前記価値関数を更新する、強化学習方法、強化学習プログラム、および強化学習装置が提案される。
【発明の効果】
【０００８】
一態様によれば、強化学習による学習効率の向上を図ることが可能になる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかる強化学習方法の一実施例を示す説明図である。
【図２】図２は、強化学習装置１００のハードウェア構成例を示すブロック図である。
【図３】図３は、強化学習装置１００の機能的構成例を示すブロック図である。
【図４】図４は、強化学習装置１００の機能的構成の具体例を示すブロック図である。
【図５】図５は、価値関数の定義例を示す説明図である。
【図６】図６は、強化学習装置１００の第１動作例を示す説明図である。
【図７】図７は、第１動作例における学習処理手順の一例を示すフローチャートである。
【図８】図８は、第２動作例における学習処理手順の一例を示すフローチャート（その１）である。
【図９】図９は、第２動作例における学習処理手順の一例を示すフローチャート（その２）である。
【図１０】図１０は、第３動作例における学習処理手順の一例を示すフローチャート（その１）である。
【図１１】図１１は、第３動作例における学習処理手順の一例を示すフローチャート（その２）である。
【図１２】図１２は、第４動作例における学習処理手順の一例を示すフローチャート（その１）である。
【図１３】図１３は、第４動作例における学習処理手順の一例を示すフローチャート（その２）である。
【図１４】図１４は、強化学習装置１００の第５動作例を示す説明図である。
【図１５】図１５は、第５動作例における学習処理手順の一例を示すフローチャート（その１）である。
【図１６】図１６は、第５動作例における学習処理手順の一例を示すフローチャート（その２）である。
【図１７】図１７は、強化学習による学習効率を比較する一例を示す説明図（その１）である。
【図１８】図１８は、強化学習による学習効率を比較する一例を示す説明図（その２）である。
【図１９】図１９は、強化学習による学習効率を比較する一例を示す説明図（その３）である。
【図２０】図２０は、強化学習による学習効率を比較する別の例を示す説明図（その１）である。
【図２１】図２１は、強化学習による学習効率を比較する別の例を示す説明図（その２）である。
【図２２】図２２は、強化学習による学習効率を比較する別の例を示す説明図（その３）である。
【発明を実施するための形態】
【００１０】
以下に、図面を参照して、本発明にかかる強化学習方法、強化学習プログラム、および強化学習装置の実施の形態を詳細に説明する。
【００１１】
（実施の形態にかかる強化学習方法の一実施例）
図１は、実施の形態にかかる強化学習方法の一実施例を示す説明図である。強化学習装置１００は、強化学習により制御対象を制御するためのコンピュータである。強化学習装置１００は、例えば、サーバやＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、または、マイクロコントローラなどである。
【００１２】
制御対象は、何らかの事象であり、例えば、現実に存在する物理系である。制御対象は、環境（ｅｎｖｉｒｏｎｍｅｎｔ）とも呼ばれる。制御対象は、具体的には、自動車、ロボット、ドローン、ヘリコプター、サーバルーム、発電機、化学プラント、または、ゲームなどである。
【００１３】
強化学習は、例えば、制御対象に対する探索行動を決定し、制御対象の状態と、決定した探索行動と、決定した探索行動に応じて観測した制御対象の報酬とに基づき、価値関数を学習する一連の処理を繰り返すことにより、制御対象を制御する。強化学習は、例えば、Ｑ学習、ＳＡＲＳＡ、または、ａｃｔｏｒ−ｃｒｉｔｉｃなどを利用する。
【００１４】
価値関数は、制御対象に対する行動の価値を規定する関数である。価値関数は、例えば、状態行動価値関数または状態価値関数などである。行動は、入力（ｉｎｐｕｔ）とも呼ばれる。行動は、例えば、連続量である。制御対象に対する行動に応じて制御対象の状態（ｓｔａｔｅ）が変化する。制御対象の状態は、観測可能である。
【００１５】
ここで、強化学習による学習効率の向上が望まれる場合がある。例えば、強化学習を、シミュレータ上ではなく、実在する制御対象を制御するために利用しようとする場合、特に、強化学習の初期段階でも精度のよい価値関数を学習することが求められ、強化学習による学習効率の向上が望まれる傾向がある。
【００１６】
しかしながら、従来では、強化学習による学習効率の向上を図ることは難しい。例えば、様々な状態に対して様々な行動を試行しなければ、精度のよい価値関数を得ることは難しく、強化学習にかかる処理時間の増大化を招くことになる。特に、強化学習を、実在する制御対象を制御するために利用しようとする場合、制御対象の状態を任意に変更することが難しく、種々の状態に対して種々の行動を試行することが難しくなる。
【００１７】
これに対し、制御対象の性質に起因する価値関数の特性を利用して、強化学習による学習効率の向上を図る手法が考えられる。例えば、価値関数の特性が、制御対象の状態または行動に対する価値に単調性を有する場合が考えられる。この場合、強化学習の過程で価値関数を学習する都度、単調性を利用して価値関数をさらに更新することにより、強化学習による学習効率の向上を図る手法が考えられる。
【００１８】
かかる手法でも、価値関数を効率よく学習することは難しい。例えば、強化学習の過程で価値関数を学習する都度、単調性を利用して価値関数を更新した結果、価値関数の誤差を拡大し、強化学習による学習効率を却って低下させることになる可能性が生じる。
【００１９】
従来では、比較的少ない状態に対してしか行動を試行しておらず、様々な状態に対して様々な行動を試行していない強化学習の初期段階には、精度のよい価値関数を得ることが難しい。強化学習の初期段階には、試行回数が少なく、学習した状態と行動との組み合わせの数が少なく、行動を試行していない状態に関しては学習が進みづらく、誤差が大きくなる。また、行動を試行済みの状態の偏りにより、単調性を満たさない状態を経由した学習が行われ、強化学習の進度が遅くなり、学習効率が悪くなる。
【００２０】
また、強化学習を、実社会の制御対象を制御するために利用しようとする場合、学習結果の精度だけではなく、学習時間や学習に要するリソースの制約下での効率性が求められる。また、実社会の制御対象を制御するため、強化学習の初期段階でも、適切な制御を行うことが求められる。これに対し、従来では、強化学習を研究目的に開発する場合があり、学習する状態と行動との組み合わせの数が比較的多い状況で、最適解への収束速度の向上、または、最適解への収束の理論的な保証などを目標として、強化学習の技術が開発される傾向がある。研究目的に開発された強化学習の技術では、強化学習の初期段階における学習効率の向上を目標としていないため、実社会の制御対象を制御するために利用することが好ましいとは限らない。研究目的に開発された強化学習の技術では、強化学習の初期段階に、制御対象を適切に制御することが難しく、精度のよい価値関数を得ることが難しい傾向がある。
【００２１】
そこで、本実施の形態では、価値関数が有する特性を利用して、強化学習の過程で価値関数を学習する都度、価値関数を更新するか否かを判断してから更新することにより、強化学習による学習効率の向上を図ることができる強化学習方法について説明する。
【００２２】
図１において、強化学習装置１００は、強化学習を実現する。強化学習は、価値関数を学習する一連の処理を繰り返して、制御対象を制御する。以下の説明では、価値関数を学習する一連の処理を「単位学習ステップ」と表記する場合がある。価値関数は、例えば、基底関数を用いて表現される。
【００２３】
価値関数は、例えば、制御対象の状態または行動に対する価値の特性に単調性を有する。単調性は、例えば、単調増加である。単調増加は、具体的には、例えば、制御対象の状態または行動を表す変数の値が大きくなるほど、価値を表す変数の値が大きくなる性質である。単調性は、例えば、単調減少であってもよい。単調性は、例えば、単峰性であってもよい。
【００２４】
価値関数は、具体的には、真の状態で、特性に単調性を有する。真の状態は、強化学習により無限回学習した状態に対応する理想的な状態である。一方で、価値関数は、具体的には、推定の状態では、制御対象の状態または行動の一部の範囲において、特性に単調性を有さない場合がある。推定の状態は、強化学習による学習回数が比較的少ない状態である。価値関数は、真の状態に近いほど、精度が高いと扱われる。
【００２５】
図１の例では、（１−１）強化学習装置１００は、単位学習ステップごとに、基底関数を用いて、単位学習ステップに用いた制御対象の状態または行動の、強化学習に対する寄与度を算出する。強化学習装置１００は、例えば、単位学習ステップに用いた制御対象の状態および行動を基底関数に代入した結果を、単位学習ステップに用いた制御対象の状態または行動の寄与度として算出する。寄与度を算出する一例は、具体的には、図６〜図１６を用いて第１動作例〜第５動作例に後述する。
【００２６】
（１−２）強化学習装置１００は、単位学習ステップ後の価値関数、および、算出した寄与度に基づいて、価値関数を更新するか否かを判断する。強化学習装置１００は、例えば、単位学習ステップごとに、今回の単位学習ステップで学習した価値関数、および、算出した寄与度に基づいて、価値関数を更新するか否かを判断する。図１の例では、例えば、今回の単位学習ステップで学習した価値関数が、グラフ１１０に示す価値関数１０１である場合を一例として説明する。グラフ１１０の「×」は、今回の単位学習ステップに用いた状態である。この場合、強化学習装置１００は、例えば、単調性を考慮して、価値関数のうち「×」に対応する部分を補正して、価値関数を更新するか否かを判断する。価値関数を更新するか否かを判断する一例は、具体的には、図６〜図１６を用いて第１動作例〜第５動作例に後述する。
【００２７】
（１−３）強化学習装置１００は、価値関数を更新すると判断した場合、単調性に基づいて、価値関数を更新する。強化学習装置１００は、例えば、単位学習ステップごとに、価値関数を更新すると判断した場合、今回の単位学習ステップで学習した価値関数に基づいて、価値関数を更新する。図１の例では、強化学習装置１００は、例えば、価値関数１０１を更新すると判断した場合、単調性を考慮して、価値関数１０１のうち「×」に対応する価値が低下するように補正して、価値関数１０１を価値関数１０１’に更新する。強化学習装置１００は、例えば、価値関数１０１を更新しないと判断した場合、価値関数１０１を更新しない。価値関数を更新する一例は、具体的には、図６〜図１６を用いて第１動作例〜第５動作例に後述する。
【００２８】
これにより、強化学習装置１００は、強化学習による学習効率の向上を図ることができる。強化学習装置１００は、例えば、比較的少ない状態に対してしか行動を試行しておらず、様々な状態に対して様々な行動を試行していない強化学習の初期段階でも、精度のよい価値関数を得やすくすることができる。このため、強化学習装置１００は、強化学習にかかる処理時間の低減化を図ることができる。また、強化学習装置１００は、価値関数の更新要否を判断するため、価値関数の誤差を拡大するような更新を防止することができる。学習効率の一例は、具体的には、図１７〜図２２を用いて後述する。
【００２９】
従来では、強化学習の初期段階には、試行回数が少なく、学習した状態と行動との組み合わせの数が少なく、行動を試行していない状態に関しては学習が進みづらく、誤差が大きくなる。また、行動を試行済みの状態の偏りにより、単調性を満たさない状態を経由した学習が行われ、強化学習の進度が遅くなり、学習効率が悪くなる。これに対し、強化学習装置１００は、比較的少ない状態に対してしか行動を試行しておらず、様々な状態に対して様々な行動を試行していない強化学習の初期段階でも、精度のよい価値関数を得やすくすることができる。また、強化学習装置１００は、行動を試行済みの状態の偏りがあっても、価値関数の更新により、単調性を満たさない状態を経由した学習が行われることを抑制することができる。さらに、強化学習装置１００は、寄与度に基づいて、試行回数の多寡を考慮して価値関数の更新要否を判断することができ、価値関数の誤差を拡大するような更新を防止することができる。
【００３０】
また、従来では、強化学習を研究目的に開発する場合があり、学習する状態と行動との組み合わせの数が比較的多い状況で、最適解への収束速度の向上、または、最適解への収束の理論的な保証などを目標として、強化学習の技術が開発される傾向がある。研究目的に開発された強化学習の技術では、強化学習の初期段階に、制御対象を適切に制御することが難しく、精度のよい価値関数を得ることが難しい傾向がある。これに対し、強化学習装置１００は、比較的少ない状態に対してしか行動を試行しておらず、様々な状態に対して様々な行動を試行していない強化学習の初期段階でも、精度のよい価値関数を得やすくすることができる。そして、強化学習装置１００は、価値関数を利用して、制御対象を適切に制御しやすくすることができる。
【００３１】
また、上述した、強化学習の過程で価値関数を学習する都度、必ず、単調性を利用して価値関数を更新する手法では、例えば、価値関数１０１を、必ず、価値関数１０１’に更新することになる。これによれば、価値関数のうち「×」に対応する部分が、過去に何度も行動を試行して精度よく学習した部分であっても補正してしまうことになり、価値関数の精度低下を招くことになる。
【００３２】
特に、学習した状態と行動との組み合わせの数が少ないと、価値関数の精度低下を招きやすくなる。具体的には、学習した状態と行動との組み合わせの数が少なく、価値関数のうち「×」より右側の凹部が、まだ学習が少ない部分である場合に、学習が少ない凹部に合わせて、学習が多い「×」に対応する部分を補正する結果となり、価値関数の精度低下を招くことになる。これに対し、強化学習装置１００は、価値関数の更新要否を判断するため、価値関数の誤差を拡大するような更新を防止することができ、価値関数の精度低下を抑制することができる。
【００３３】
（強化学習装置１００のハードウェア構成例）
次に、図２を用いて、強化学習装置１００のハードウェア構成例について説明する。
【００３４】
図２は、強化学習装置１００のハードウェア構成例を示すブロック図である。図２において、強化学習装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、メモリ２０２と、ネットワークＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２０３と、記録媒体Ｉ／Ｆ２０４と、記録媒体２０５とを有する。また、各構成部は、バス２００によってそれぞれ接続される。
【００３５】
ここで、ＣＰＵ２０１は、強化学習装置１００の全体の制御を司る。メモリ２０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ２０１のワークエリアとして使用される。メモリ２０２に記憶されるプログラムは、ＣＰＵ２０１にロードされることで、コーディングされている処理をＣＰＵ２０１に実行させる。
【００３６】
ネットワークＩ／Ｆ２０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータに接続される。そして、ネットワークＩ／Ｆ２０３は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ２０３は、例えば、モデムやＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）アダプタなどである。
【００３７】
記録媒体Ｉ／Ｆ２０４は、ＣＰＵ２０１の制御に従って記録媒体２０５に対するデータのリード／ライトを制御する。記録媒体Ｉ／Ｆ２０４は、例えば、ディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートなどである。記録媒体２０５は、記録媒体Ｉ／Ｆ２０４の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体２０５は、例えば、ディスク、半導体メモリ、ＵＳＢメモリなどである。記録媒体２０５は、強化学習装置１００から着脱可能であってもよい。
【００３８】
強化学習装置１００は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、強化学習装置１００は、記録媒体Ｉ／Ｆ２０４や記録媒体２０５を複数有していてもよい。また、強化学習装置１００は、記録媒体Ｉ／Ｆ２０４や記録媒体２０５を有していなくてもよい。
【００３９】
（強化学習装置１００の機能的構成例）
次に、図３を用いて、強化学習装置１００の機能的構成例について説明する。
【００４０】
図３は、強化学習装置１００の機能的構成例を示すブロック図である。強化学習装置１００は、記憶部３００と、取得部３０１と、学習部３０２と、算出部３０３と、更新部３０４と、出力部３０５とを含む。
【００４１】
記憶部３００は、例えば、図２に示したメモリ２０２や記録媒体２０５などの記憶領域によって実現される。以下では、記憶部３００が、強化学習装置１００に含まれる場合について説明するが、これに限らない。例えば、記憶部３００が、強化学習装置１００とは異なる装置に含まれ、記憶部３００の記憶内容が強化学習装置１００から参照可能である場合があってもよい。
【００４２】
取得部３０１〜出力部３０５は、制御部の一例として機能する。取得部３０１〜出力部３０５は、具体的には、例えば、図２に示したメモリ２０２や記録媒体２０５などの記憶領域に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、ネットワークＩ／Ｆ２０３により、その機能を実現する。各機能部の処理結果は、例えば、図２に示したメモリ２０２や記録媒体２０５などの記憶領域に記憶される。
【００４３】
記憶部３００は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部３００は、制御対象の状態と、制御対象に対する行動と、制御対象の報酬とを蓄積する。記憶部３００は、報酬の代わりに、制御対象のコストを蓄積する場合があってもよい。以下の説明では、記憶部３００が報酬を蓄積する場合を一例として説明する。これにより、記憶部３００は、各機能部が状態と行動と報酬とを参照可能にすることができる。
【００４４】
制御対象は、例えば、発電設備である場合がある。発電設備は、例えば、風力発電設備である。この場合、行動は、例えば、発電設備の発電機トルクである。状態は、例えば、発電設備の発電量と、発電設備のタービンの回転量と、発電設備のタービンの回転速度と、発電設備に対する風向と、発電設備に対する風速となどの少なくともいずれかである。報酬は、例えば、発電設備の発電量である。
【００４５】
制御対象は、例えば、産業用ロボットである場合がある。この場合、行動は、例えば、産業用ロボットのモータートルクである。状態は、例えば、産業用ロボットの撮影した画像と、産業用ロボットの関節位置と、産業用ロボットの関節角度と、産業用ロボットの関節角速度となどの少なくともいずれかである。報酬は、例えば、産業用ロボットによる製品の生産量である。生産量は、例えば、組み立て数である。組み立て数は、例えば、産業用ロボットが組み立てた製品の数である。
【００４６】
制御対象は、例えば、空調設備である場合がある。この場合、行動は、例えば、空調設備の設定温度と、空調設備の設定風量との少なくともいずれかである。状態は、例えば、空調設備がある部屋の内部の温度と、空調設備がある部屋の外部の温度と、気候との少なくともいずれかである。コストは、例えば、空調設備の消費電力量である。
【００４７】
記憶部３００は、価値関数を記憶する。価値関数は、行動の価値を示す値を算出するための関数である。価値関数は、例えば、状態行動価値関数または状態価値関数などである。価値関数は、例えば、基底関数を用いて表現される。価値関数は、例えば、制御対象の状態または行動に対する価値の特性に単調性を有する。単調性は、例えば、単調増加である。単調性は、例えば、単調減少または単峰性であってもよい。記憶部３００は、例えば、価値関数を表現する基底関数と、基底関数にかかる重みとを記憶する。重みは、後述するｗkである。これにより、記憶部３００は、各機能部が価値関数を参照可能にすることができる。
【００４８】
記憶部３００は、制御対象を制御する制御則を記憶する。制御則は、例えば、行動を決定するための規則である。制御則は、具体的には、現状で最適と判断される最適行動を決定する。記憶部３００は、例えば、制御則のパラメータを記憶する。制御則は、方策とも呼ばれる。これにより、記憶部３００は、行動を決定可能にすることができる。
【００４９】
取得部３０１は、各機能部の処理に用いられる各種情報を取得する。取得部３０１は、取得した各種情報を、記憶部３００に記憶し、または、各機能部に出力する。また、取得部３０１は、記憶部３００に記憶しておいた各種情報を、各機能部に出力してもよい。取得部３０１は、例えば、利用者の操作入力に基づき、各種情報を取得する。取得部３０１は、例えば、強化学習装置１００とは異なる装置から、各種情報を受信してもよい。
【００５０】
取得部３０１は、制御対象の状態と、行動に応じた制御対象の報酬とを取得する。取得部３０１は、例えば、制御対象の状態と、行動に応じた制御対象の報酬とを取得し、記憶部３００に出力する。これにより、取得部３０１は、制御対象の状態と、行動に応じた制御対象の報酬とを記憶部３００に蓄積させることができる。
【００５１】
学習部３０２は、価値関数を学習する。強化学習では、例えば、価値関数を学習する単位学習ステップが繰り返される。学習部３０２は、例えば、単位学習ステップにより、価値関数を学習する。学習部３０２は、具体的には、単位学習ステップとして、現在の状態に応じた探索行動を決定し、探索行動に応じた報酬に基づいて、価値関数を表現する基底関数にかかる重みを更新する。探索行動の決定は、例えば、ε貪欲法またはボルツマン選択などを用いる。学習部３０２は、より具体的には、図６〜図１６を用いて後述する第１動作例〜第５動作例に示すように、価値関数を表現する基底関数にかかる重みを更新する。これにより、学習部３０２は、価値関数の精度向上を図ることができる。
【００５２】
算出部３０３は、単位学習ステップごとに、価値関数の表現に用いられる基底関数を用いて、単位学習ステップに用いた制御対象の状態または行動の、強化学習に対する寄与度を算出する。算出部３０３は、例えば、単位学習ステップに用いた状態および行動を基底関数に代入した結果を、単位学習ステップに用いた状態または行動の寄与度として算出する。
【００５３】
算出部３０３は、単位学習ステップごとに、算出した寄与度に基づいて、単位学習ステップに用いた状態または行動の、強化学習における経験度を算出する。経験度は、強化学習において、いずれかの状態または行動について、どの程度試行したかを示す。このため、経験度は、価値関数のうち、いずれかの状態または行動に関する部分が、どの程度信頼性が高いかを示す。また、算出部３０３は、単位学習ステップに用いた状態または行動とは異なる別の状態または行動の経験度を算出する。
【００５４】
算出部３０３は、例えば、制御対象の状態または行動ごとの強化学習における経験度を、基底関数により規定する経験度関数を更新する。算出部３０３は、具体的には、単位学習ステップに用いた状態および行動を経験度関数に代入した結果を、単位学習ステップに用いた状態または行動の経験度として算出する。また、算出部３０３は、具体的には、同様に、別の状態または行動の経験度を算出する。算出部３０３は、より具体的には、図６〜図１６を用いて後述する第１動作例〜第５動作例に示すように、経験度関数を更新し、経験度を算出する。これにより、算出部３０３は、価値関数を更新するか否かを判断する指標となる情報を、更新部３０４が参照可能にすることができる。
【００５５】
算出部３０３は、例えば、更新部３０４が価値関数を更新すると判断した場合、単位学習ステップに用いた状態または行動の経験度が大きくなるように、さらに経験度関数を更新する場合があってもよい。算出部３０３は、具体的には、図８および図９を用いて後述する第２動作例に示すように、経験度関数を更新する。これにより、算出部３０３は、経験度関数の精度向上を図ることができる。
【００５６】
更新部３０４は、価値関数を更新するか否かを判断する。更新部３０４は、例えば、単位学習ステップ後の価値関数、および、算出した寄与度に基づいて、価値関数を更新するか否かを判断する。更新部３０４は、具体的には、単位学習ステップ後の価値関数、および、算出した寄与度に基づき更新した経験度関数に基づいて、価値関数を更新するか否かを判断する。更新部３０４は、より具体的には、単位学習ステップに用いた状態または行動の経験度と、別の状態または行動の経験度とに基づいて、価値関数を更新するか否かを判断する。
【００５７】
一例として、更新部３０４は、単位学習ステップに用いた状態または行動の経験度が、別の状態または行動の経験度よりも小さいか否かを判断する。また、更新部３０４は、単位学習ステップに用いた状態または行動と、別の状態または行動との間で、単調性を満たすか否かを判断する。そして、更新部３０４は、単位学習ステップに用いた状態または行動の経験度が、別の状態または行動の経験度よりも小さく、かつ、単調性を満たさない場合、価値関数のうち単位学習ステップに用いた状態または行動に対応する部分について更新すると判断する。具体例としては、更新部３０４は、図６〜図１１を用いて後述する第１動作例〜第３動作例に示すように、価値関数を更新するか否かを判断する。
【００５８】
また、一例として、更新部３０４は、単位学習ステップに用いた状態または行動の経験度が、別の状態または行動の経験度以上、かつ、単調性を満たさない場合、価値関数のうち、別の状態または行動に対応する部分について更新すると判断してもよい。具体例としては、更新部３０４は、図１２および図１３を用いて後述する第４動作例に示すように、価値関数を更新するか否かを判断する。
【００５９】
また、一例として、単調性が単峰性である場合がある。この場合、更新部３０４は、単位学習ステップに用いた状態または行動が、単位学習ステップに用いた状態または行動よりも経験度が大きい制御対象の状態または行動の２つに挟まれる場合、価値関数を更新すると判断する。具体例としては、更新部３０４は、図１４〜図１６を用いて後述する第５動作例に示すように、価値関数を更新するか否かを判断する。
【００６０】
更新部３０４は、価値関数を更新しないと判断した後、所定回数分の単位学習ステップが実行されるまで、価値関数を更新するか否かを判断しなくてもよい。そして、更新部３０４は、所定回数分の単位学習ステップが実行されてから、価値関数を更新するか否かを判断する。更新部３０４は、例えば、図１０および図１１を用いて後述する第３動作例に示すように、価値関数を更新するか否かを判断する。これにより、更新部３０４は、１度更新しないと判断した後、数回の単位学習ステップにより、更新要になる可能性が比較的低いと判断し、判断および更新の処理を省略することができ、処理量の低減化を図ることができる。
【００６１】
更新部３０４は、価値関数を更新すると判断した場合、価値関数を更新する。更新部３０４は、例えば、単調性に基づいて、価値関数を更新する。更新部３０４は、具体的には、単位学習ステップに用いた状態または行動の価値が、単位学習ステップに用いた状態または行動よりも経験度が大きい制御対象の状態または行動の価値に近づくように、価値関数を更新する。更新部３０４は、より具体的には、図６〜図１１を用いて後述する第１動作例〜第３動作例に示すように、価値関数を更新する。
【００６２】
更新部３０４は、具体的には、単位学習ステップに用いた状態または行動よりも経験度が小さい制御対象の状態または行動の価値が、単位学習ステップに用いた状態または行動の価値に近づくように、価値関数を更新してもよい。更新部３０４は、より具体的には、図１２および図１３を用いて後述する第４動作例に示すように、価値関数を更新する。
【００６３】
更新部３０４は、具体的には、単調性が単峰性である場合、単位学習ステップに用いた状態または行動の価値が、単位学習ステップに用いた状態または行動よりも経験度が大きい制御対象の状態または行動のいずれかの価値に近づくように、価値関数を更新する。更新部３０４は、より具体的には、図１４〜図１６を用いて後述する第５動作例に示すように、価値関数を更新する。
【００６４】
更新部３０４は、更新した価値関数に基づいて、さらに制御則を更新してもよい。更新部３０４は、例えば、Ｑ学習、ＳＡＲＳＡ、または、ａｃｔｏｒ−ｃｒｉｔｉｃなどに従って、更新した価値関数に基づいて、制御則を更新する。これにより、更新部３０４は、制御対象をさらに効率よく制御可能に、制御則を更新することができる。
【００６５】
ここでは、学習部３０２が、単位学習ステップの学習結果を価値関数に反映させてから、更新部３０４が、価値関数をさらに更新するか否かを判断し、価値関数を更新する場合について説明したが、これに限らない。例えば、学習部３０２が、単位学習ステップの学習結果を価値関数に反映させず、更新部３０４に渡して、更新部３０４が、単位学習ステップの学習結果を価値関数に反映させつつ、価値関数をさらに更新する場合があってもよい。
【００６６】
この場合、更新部３０４は、学習部３０２が今回の単位学習ステップの学習結果を価値関数に反映させる前に、前回の単位学習ステップ後の価値関数、および、算出した寄与度に基づいて、価値関数を更新するか否かを判断する。
【００６７】
そして、更新部３０４は、価値関数を更新すると判断した場合、今回の単位学習ステップの学習結果を価値関数に反映させると共に価値関数を更新する。また、更新部３０４は、価値関数を更新しないと判断した場合、今回の単位学習ステップの学習結果を価値関数に反映させる。これにより、更新部３０４は、精度のよい価値関数を得やすくすることができる。
【００６８】
出力部３０５は、制御則により制御対象に対する行動を決定し、行動を実施する。行動は、例えば、制御対象に対する指令値である。出力部３０５は、例えば、制御対象に対する指令値を、制御対象に出力する。これにより、出力部３０５は、制御対象を制御することができる。
【００６９】
出力部３０５は、いずれかの機能部の処理結果を出力してもよい。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークＩ／Ｆ２０３による外部装置への送信、または、メモリ２０２や記録媒体２０５などの記憶領域への記憶である。これにより、出力部３０５は、強化学習装置１００の利便性の向上を図ることができる。
【００７０】
（強化学習装置１００の機能的構成の具体例）
次に、図４を用いて、強化学習による制御対象を風力発電設備とした場合における、強化学習装置１００の機能的構成の具体例について説明する。
【００７１】
図４は、強化学習装置１００の機能的構成の具体例を示すブロック図である。風力発電設備４００は、風車４１０と、発電機４２０とを含む。風車４１０に風が当たると、風車４１０は、強化学習装置１００の制御指令値に基づいて動作し、風を動力に変換して発電機４２０に送る。発電機４２０は、強化学習装置１００の制御指令値に基づいて動作し、風車４１０の動力を用いて発電を実施する。
【００７２】
強化学習装置１００は、状態取得部４０１と、報酬計算部４０２と、価値関数学習部４０３と、経験度算出部４０４と、価値関数補正部４０５と、制御指令値出力部４０６とを含む。状態取得部４０１は、風力発電設備４００の状態として、発電機４２０の回転数や出力電力、および、風速などを取得する。状態取得部４０１は、風力発電設備４００の状態を、報酬計算部４０２と、価値関数学習部４０３に出力する。
【００７３】
報酬計算部４０２は、風力発電設備４００の状態、および、風力発電設備４００に対する行動に基づいて、風力発電設備４００の報酬を算出する。報酬は、例えば、単位時間の発電量などである。風力発電設備４００に対する行動は、制御指令値であり、制御指令値出力部４０６から受け付け可能である。報酬計算部４０２は、風力発電設備４００の報酬を、価値関数学習部４０３に出力する。
【００７４】
価値関数学習部４０３は、単位学習ステップを実施し、受け付けた風力発電設備４００の状態や風力発電設備４００の報酬、および、風力発電設備４００に対する行動に基づいて、価値関数を学習する。価値関数学習部４０３は、学習した価値関数を、価値関数補正部４０５に出力する。また、価値関数学習部４０３は、受け付けた風力発電設備４００の状態や風力発電設備４００の報酬を、経験度算出部４０４に転送する。
【００７５】
経験度算出部４０４は、受け付けた風力発電設備４００の状態や風力発電設備４００の報酬、および、風力発電設備４００に対する行動に基づいて、経験度関数を更新する。経験度算出部４０４は、経験度関数に基づいて、風力発電設備４００の今回の状態または行動の経験度、および、他の状態または行動の経験度を算出する。経験度算出部４０４は、算出した経験度を、価値関数補正部４０５に出力する。
【００７６】
価値関数補正部４０５は、価値関数および経験度に基づいて、価値関数をさらに更新するか否かを判断する。価値関数補正部４０５は、価値関数を更新すると判断した場合、単調性を利用して、価値関数および経験度に基づいて、価値関数を更新する。価値関数補正部４０５は、価値関数を更新すると判断した場合、更新後の価値関数を、制御指令値出力部４０６に出力する。価値関数補正部４０５は、価値関数を更新しないと判断した場合、価値関数を更新せず、制御指令値出力部４０６に転送する。
【００７７】
制御指令値出力部４０６は、価値関数に基づいて制御則を更新し、制御則により風力発電設備４００に出力する制御指令値を決定し、決定した制御指令値を出力する。制御指令値は、例えば、風車４１０のピッチ角などの指令値である。制御指令値は、例えば、発電機４２０のトルクや回転数などの指令値である。このように、強化学習装置１００は、風力発電設備４００を制御可能である。
【００７８】
（価値関数の定義例）
次に、強化学習装置１００の第１動作例〜第５動作例について説明する。まず、図５を用いて、強化学習装置１００の第１動作例〜第５動作例で共通する、価値関数の定義例について説明する。
【００７９】
図５は、価値関数の定義例を示す説明図である。図５のグラフ５００は、価値関数Ｑ（ｓ，ａ）を実線で示す。また、図５のグラフ５００は、価値関数Ｑ（ｓ，ａ）を表現する基底関数φk（ｓ，ａ）を、破線で示す。価値関数Ｑ（ｓ，ａ）は、例えば、基底関数φk（ｓ，ａ）を用いて、下記式（１）により定義される。ｗkは、基底関数φk（ｓ，ａ）の重みである。ｓは、任意の状態である。ａは、任意の行動である。ｂは、定数である。
【００８０】
【数１】
2020119139.tif 000003
【００８１】
（強化学習装置１００の第１動作例）
次に、図６を用いて、価値関数Ｑ（ｓ，ａ）を上記式（１）により定義した場合の、強化学習装置１００の第１動作例について説明する。
【００８２】
図６は、強化学習装置１００の第１動作例を示す説明図である。図６の例では、強化学習装置１００は、いずれかの時点において、価値関数を学習し、制御対象の状態の強化学習に対する寄与度に基づいて経験度関数を更新した場合を一例として説明する。グラフ６１０は、いずれかの時点において学習された価値関数を示す。グラフ６２０は、いずれかの時点において更新された経験度関数を示す。グラフ６１０，６２０の「×」は、いずれかの時点における状態を示す。
【００８３】
ここで、強化学習装置１００は、いずれかの時点における状態との間で価値関数の単調性を満たさず、かつ、いずれかの時点における状態よりも経験度が大きい、別の状態を探索する。ここでは、単調性は、単調増加の性質である。強化学習装置１００は、例えば、いずれかの時点における状態よりも大きい状態の中から、価値が小さく、かつ、経験度が大きい状態と、いずれかの時点における状態よりも小さい状態の中から、価値が大きく、かつ、経験度が大きい状態とを探索する。
【００８４】
図６の例では、いずれかの時点における状態との間で価値関数の単調性を満たさない状態は、範囲６１１，６１２に含まれる。また、いずれかの時点における状態よりも経験度が大きい状態は、範囲６２１，６２２に含まれる。このため、強化学習装置１００は、範囲６３１，６３２の中から、別の状態を探索する。
【００８５】
そして、強化学習装置１００は、探索した１以上の状態の価値に基づいて、価値関数のうち「×」に対応する価値を補正することにより、価値関数を更新する。強化学習装置１００は、例えば、探索した１以上の状態のうち、経験度が最も大きい状態の価値に基づいて、価値関数のうち「×」に対応する価値を補正することにより、価値関数を更新する。
【００８６】
ここで、強化学習装置１００が、価値関数を学習し、状態の寄与度に基づいて経験度関数を更新し、価値関数を更新するか否かを判断し、価値関数を更新すると判断した場合に更新する一連の動作について、より具体的に説明する。
【００８７】
具体的には、まず、強化学習装置１００は、下記式（２）により、ＴＤ誤差δを算出する。ｔは、単位時間の倍数で示される時刻である。ｔ＋１は、時刻ｔから単位時間経過した次の時刻である。ｓtは、時刻ｔにおける状態である。ｓt+1は、次の時刻ｔ＋１における状態である。ａtは、時刻ｔにおける行動である。Ｑ（ｓ，ａ）は、価値関数である。γは、割引率（ｄｉｓｃｏｕｎｔ  ｒａｔｅ）である。γは、０〜１の値である。
【００８８】
【数２】
2020119139.tif 000004
【００８９】
次に、強化学習装置１００は、算出したＴＤ誤差に基づいて、下記式（３）により、各基底関数φk（ｓ，ａ）にかかる重みｗkを更新する。αは、定数である。
【００９０】
【数３】
2020119139.tif 000005
【００９１】
そして、強化学習装置１００は、寄与度｜φk（ｓt，ａt）｜に基づいて、下記式（４）および下記式（５）により、経験度関数Ｅ（ｓ，ａ）を更新する。ｅkは、経験度関数Ｅ（ｓ，ａ）にかかる重みである。
【００９２】
【数４】
2020119139.tif 000006
【００９３】
【数５】
2020119139.tif 000007
【００９４】
次に、強化学習装置１００は、状態ｓtとの間で価値関数の単調性を満たさず、かつ、状態ｓtよりも経験度が大きい状態を探索する。強化学習装置１００は、例えば、状態ｓtの近傍から複数の状態をサンプリングし、サンプル集合Ｓを生成する。そして、強化学習装置１００は、サンプル集合Ｓから、下記式（６）および下記式（７）を満たす状態ｓ’を探索する。
【００９５】
【数６】
2020119139.tif 000008
【００９６】
【数７】
2020119139.tif 000009
【００９７】
次に、強化学習装置１００は、１つの状態も探索されなかった場合、価値関数を更新しないと判断する。一方で、強化学習装置１００は、１以上の状態が探索された場合、価値関数を更新すると判断する。強化学習装置１００は、価値関数を更新すると判断した場合、下記式（８）により、探索された１以上の状態から、いずれかの状態ｓ’を選択する。
【００９８】
【数８】
2020119139.tif 000010
【００９９】
次に、強化学習装置１００は、選択した状態ｓ’の価値に基づいて、下記式（９）により、状態ｓtの価値と、選択した状態ｓ’の価値との差δ’を算出する。
【０１００】
【数９】
2020119139.tif 000011
【０１０１】
次に、強化学習装置１００は、算出した差δ’に基づいて、下記式（１０）により、各基底関数φk（ｓ，ａ）にかかる重みｗkを更新する。
【０１０２】
【数１０】
2020119139.tif 000012
【０１０３】
これにより、強化学習装置１００は、現在の状態ｓtの価値が、現在の状態ｓtよりも経験度が大きい別の状態ｓ’の価値に近づくように、価値関数を更新することができる。また、強化学習装置１００は、現在の状態ｓtよりも経験度が大きい別の状態ｓ’の価値を用いるため、価値関数の誤差の低減化を図ることができ、価値関数の精度向上を図ることができる。また、強化学習装置１００は、価値関数を更新する際の補正幅を、現在の状態ｓtの価値と別の状態ｓ’の価値との差δ’以下に抑制することができ、価値関数の精度に悪影響を与える可能性の低減化を図ることができる。
【０１０４】
また、強化学習装置１００は、価値関数の学習と同様の手法で、価値関数を更新することができる。強化学習装置１００は、例えば、価値関数の学習にかかる上記式（２）および上記式（３）と同様の、上記式（９）および上記式（１０）により価値関数を更新することができる。換言すれば、強化学習装置１００は、価値関数の学習と更新を、下記式（１１）に纏めることができる。このため、強化学習装置１００は、価値関数を基底関数で表現する強化学習の枠組みに悪影響を与える可能性を低減することができる。
【０１０５】
【数１１】
2020119139.tif 000013
【０１０６】
このように、強化学習装置１００は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。強化学習による学習効率が、どのように向上するかについては、具体的には、図１７〜図２２を用いて後述する。
【０１０７】
ここでは、強化学習装置１００が、価値関数を学習した際に経験度関数を更新する場合について説明したが、これに限らない。例えば、強化学習装置１００が、価値関数を学習した際と、価値関数を更新した際との両方で、経験度関数を更新する場合があってもよい。この場合に対応する動作例が、後述する第２動作例である。
【０１０８】
ここでは、強化学習装置１００が、価値関数を学習する都度、価値関数を更新するか否かを判断する場合について説明したが、これに限らない。例えば、１度価値関数を更新しないと判断した後、価値関数を数回学習しても、価値関数の更新が必要になる可能性は、比較的低いと判断される。このため、強化学習装置１００が、１度価値関数を更新しないと判断した後、判断および更新の処理を省略する場合があってもよい。この場合、強化学習装置１００が、経験度の最大値と最小値との差に基づいて、価値関数を更新しないと判断してもよい。この場合に対応する動作例が、後述する第３動作例である。
【０１０９】
ここでは、強化学習装置１００が、現在の状態ｓtの価値が、現在の状態ｓtよりも経験度が大きい別の状態ｓ’の価値に近づくように、価値関数を更新する場合について説明したが、これに限らない。例えば、強化学習装置１００が、現在の状態ｓtよりも経験度が小さい別の状態ｓ’の価値が、現在の状態ｓtの価値に近づくように、価値関数を更新する場合があってもよい。この場合に対応する動作例が、後述する第４動作例である。
【０１１０】
ここでは、単調性が、単調増加である場合について説明したが、これに限らない。例えば、単調性が、単調減少である場合があってもよい。また、例えば、単調性が、単峰性である場合があってもよい。この場合の動作例が、後述する第５動作例である。
【０１１１】
（第１動作例における学習処理手順）
次に、図７を用いて、強化学習装置１００が実行する、学習処理手順の一例について説明する。学習処理は、例えば、図２に示したＣＰＵ２０１と、メモリ２０２や記録媒体２０５などの記憶領域と、ネットワークＩ／Ｆ２０３とによって実現される。
【０１１２】
図７は、第１動作例における学習処理手順の一例を示すフローチャートである。図７において、強化学習装置１００は、上記式（２）および上記式（３）により、報酬ｒtと、状態ｓtと、状態ｓt+1と、行動ａtとに基づいて、価値関数を更新する（ステップＳ７０１）。次に、強化学習装置１００は、上記式（４）および上記式（５）により、経験度関数を更新する（ステップＳ７０２）。
【０１１３】
次に、強化学習装置１００は、ｎ個の状態をサンプリングし、サンプル集合Ｓを生成する（ステップＳ７０３）。次に、強化学習装置１００は、サンプル集合Ｓから１つの状態を取り出し、状態ｓ’に設定する（ステップＳ７０４）。そして、強化学習装置１００は、上記式（６）により、状態ｓtと状態ｓ’とにおいて、価値関数が単調性を満たすか否かを判定する（ステップＳ７０５）。
【０１１４】
ここで、単調性を満たさない場合（ステップＳ７０５：Ｎｏ）、強化学習装置１００は、ステップＳ７０８の処理に移行する。一方で、単調性を満たす場合（ステップＳ７０５：Ｙｅｓ）、強化学習装置１００は、ステップＳ７０６の処理に移行する。
【０１１５】
ステップＳ７０６では、強化学習装置１００は、上記式（７）により、状態ｓ’の経験度が、状態ｓtの経験度よりも大きいか否かを判定する（ステップＳ７０６）。ここで、状態ｓ’の経験度が状態ｓtの経験度以下である場合（ステップＳ７０６：Ｎｏ）、強化学習装置１００は、ステップＳ７０８の処理に移行する。一方で、状態ｓ’の経験度が状態ｓtの経験度より大きい場合（ステップＳ７０６：Ｙｅｓ）、ステップＳ７０７の処理に移行する。
【０１１６】
ステップＳ７０７では、強化学習装置１００は、状態ｓ’を候補集合Ｓ’に追加する（ステップＳ７０７）。そして、強化学習装置１００は、ステップＳ７０８の処理に移行する。
【０１１７】
ステップＳ７０８では、強化学習装置１００は、サンプル集合Ｓが空であるか否かを判定する（ステップＳ７０８）。ここで、サンプル集合Ｓが空ではない場合（ステップＳ７０８：Ｎｏ）、強化学習装置１００は、ステップＳ７０４の処理に戻る。一方で、サンプル集合Ｓが空である場合（ステップＳ７０８：Ｙｅｓ）、強化学習装置１００は、ステップＳ７０９の処理に移行する。
【０１１８】
ステップＳ７０９では、強化学習装置１００は、候補集合Ｓ’が空であるか否かを判定する（ステップＳ７０９）。ここで、候補集合Ｓ’が空である場合（ステップＳ７０９：Ｙｅｓ）、強化学習装置１００は、学習処理を終了する。一方で、候補集合Ｓ’が空ではない場合（ステップＳ７０９：Ｎｏ）、強化学習装置１００は、ステップＳ７１０の処理に移行する。
【０１１９】
ステップＳ７１０では、強化学習装置１００は、上記式（８）により、候補集合Ｓ’の中から最も経験度が大きい状態ｓ’を取り出す（ステップＳ７１０）。次に、強化学習装置１００は、上記式（９）により、価値関数の差δ’を算出する（ステップＳ７１１）。
【０１２０】
そして、強化学習装置１００は、上記式（１０）により、各基底関数の重みｗkを、ｗk←ｗk＋αδ’φk（ｓt，ａt）で更新する（ステップＳ７１２）。その後、強化学習装置１００は、学習処理を終了する。これにより、強化学習装置１００は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。
【０１２１】
（強化学習装置１００の第２動作例）
次に、価値関数Ｑ（ｓ，ａ）を上記式（１）により定義した場合の、強化学習装置１００の第２動作例について説明する。ここで、価値関数を更新することは、価値関数の学習と同様の効果を与えることと扱うことができ、価値関数を更新することが、経験度を大きくすると扱うこともできる。このため、強化学習装置１００が、価値関数を学習した際と、価値関数を更新した際との両方で、経験度関数を更新する。
【０１２２】
強化学習装置１００は、第１動作例と同様に、上記式（２）により、ＴＤ誤差δを算出し、算出したＴＤ誤差に基づいて、上記式（３）により、各基底関数φk（ｓ，ａ）にかかる重みｗkを更新する。そして、強化学習装置１００は、第１動作例と同様に、上記式（４）および上記式（５）により、経験度関数Ｅ（ｓ，ａ）を更新する。
【０１２３】
次に、強化学習装置１００は、第１動作例と同様に、状態ｓtとの間で価値関数の単調性を満たさず、かつ、状態ｓtよりも経験度が大きい状態を探索する。そして、強化学習装置１００は、１つの状態も探索されなかった場合、価値関数を更新しないと判断する。一方で、強化学習装置１００は、１以上の状態が探索された場合、価値関数を更新すると判断する。強化学習装置１００は、第１動作例と同様に、価値関数を更新すると判断した場合、上記式（８）により、探索された１以上の状態から、いずれかの状態ｓ’を選択する。
【０１２４】
次に、強化学習装置１００は、第１動作例と同様に、選択した状態ｓ’の価値に基づいて、上記式（９）により、状態ｓtの価値と、選択した状態ｓ’の価値との差δ’を算出する。そして、強化学習装置１００は、第１動作例と同様に、算出した差δ’に基づいて、上記式（１０）により、各基底関数φk（ｓ，ａ）にかかる重みｗkを更新する。ここで、強化学習装置１００は、第１動作例とは異なり、下記式（１２）により、経験度関数Ｅ（ｓ，ａ）をさらに更新する。εは、所定の値である。
【０１２５】
【数１２】
2020119139.tif 000014
【０１２６】
これにより、強化学習装置１００は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。強化学習による学習効率が、どのように向上するかについては、具体的には、図１７〜図２２を用いて後述する。また、強化学習装置１００は、経験度関数の精度向上を図ることができる。
【０１２７】
（第２動作例における学習処理手順）
次に、図８および図９を用いて、強化学習装置１００が実行する、学習処理手順の一例について説明する。学習処理は、例えば、図２に示したＣＰＵ２０１と、メモリ２０２や記録媒体２０５などの記憶領域と、ネットワークＩ／Ｆ２０３とによって実現される。
【０１２８】
図８および図９は、第２動作例における学習処理手順の一例を示すフローチャートである。図８において、強化学習装置１００は、上記式（２）および上記式（３）により、報酬ｒtと、状態ｓtと、状態ｓt+1と、行動ａtとに基づいて、価値関数を更新する（ステップＳ８０１）。次に、強化学習装置１００は、上記式（４）および上記式（５）により、経験度関数を更新する（ステップＳ８０２）。
【０１２９】
次に、強化学習装置１００は、ｎ個の状態をサンプリングし、サンプル集合Ｓを生成する（ステップＳ８０３）。次に、強化学習装置１００は、サンプル集合Ｓから１つの状態を取り出し、状態ｓ’に設定する（ステップＳ８０４）。そして、強化学習装置１００は、上記式（６）により、状態ｓtと状態ｓ’とにおいて、価値関数が単調性を満たすか否かを判定する（ステップＳ８０５）。
【０１３０】
ここで、単調性を満たさない場合（ステップＳ８０５：Ｎｏ）、強化学習装置１００は、ステップＳ８０８の処理に移行する。一方で、単調性を満たす場合（ステップＳ８０５：Ｙｅｓ）、強化学習装置１００は、ステップＳ８０６の処理に移行する。
【０１３１】
ステップＳ８０６では、強化学習装置１００は、上記式（７）により、状態ｓ’の経験度が、状態ｓtの経験度よりも大きいか否かを判定する（ステップＳ８０６）。ここで、状態ｓ’の経験度が状態ｓtの経験度以下である場合（ステップＳ８０６：Ｎｏ）、強化学習装置１００は、ステップＳ８０８の処理に移行する。一方で、状態ｓ’の経験度が状態ｓtの経験度より大きい場合（ステップＳ８０６：Ｙｅｓ）、ステップＳ８０７の処理に移行する。
【０１３２】
ステップＳ８０７では、強化学習装置１００は、状態ｓ’を候補集合Ｓ’に追加する（ステップＳ８０７）。そして、強化学習装置１００は、ステップＳ８０８の処理に移行する。
【０１３３】
ステップＳ８０８では、強化学習装置１００は、サンプル集合Ｓが空であるか否かを判定する（ステップＳ８０８）。ここで、サンプル集合Ｓが空ではない場合（ステップＳ８０８：Ｎｏ）、強化学習装置１００は、ステップＳ８０４の処理に戻る。一方で、サンプル集合Ｓが空である場合（ステップＳ８０８：Ｙｅｓ）、強化学習装置１００は、図９のステップＳ９０１の処理に移行する。次に、図９の説明に移行する。
【０１３４】
図９において、強化学習装置１００は、候補集合Ｓ’が空であるか否かを判定する（ステップＳ９０１）。ここで、候補集合Ｓ’が空である場合（ステップＳ９０１：Ｙｅｓ）、強化学習装置１００は、学習処理を終了する。一方で、候補集合Ｓ’が空ではない場合（ステップＳ９０１：Ｎｏ）、強化学習装置１００は、ステップＳ９０２の処理に移行する。
【０１３５】
ステップＳ９０２では、強化学習装置１００は、上記式（８）により、候補集合Ｓ’の中から最も経験度が大きい状態ｓ’を取り出す（ステップＳ９０２）。次に、強化学習装置１００は、上記式（９）により、価値関数の差δ’を算出する（ステップＳ９０３）。
【０１３６】
そして、強化学習装置１００は、上記式（１０）により、各基底関数の重みｗkを更新する（ステップＳ９０４）。次に、強化学習装置１００は、上記式（１２）により、経験度関数を更新する（ステップＳ９０５）。そして、強化学習装置１００は、学習処理を終了する。これにより、強化学習装置１００は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。
【０１３７】
（強化学習装置１００の第３動作例）
次に、価値関数Ｑ（ｓ，ａ）を上記式（１）により定義した場合の、強化学習装置１００の第３動作例について説明する。ここで、例えば、１度価値関数を更新しないと判断した後、価値関数を数回学習しても、価値関数の更新が必要になる可能性は、比較的低いと判断される。また、経験度の最大値と最小値との差が、比較的小さい場合、価値関数を更新しなくても、学習効率に悪影響を与える可能性は、比較的低いと判断される。このため、強化学習装置１００は、特定の状況において判断および更新の処理を省略する。
【０１３８】
強化学習装置１００は、第１動作例と同様に、上記式（２）により、ＴＤ誤差δを算出し、算出したＴＤ誤差に基づいて、上記式（３）により、各基底関数φk（ｓ，ａ）にかかる重みｗkを更新する。そして、強化学習装置１００は、第１動作例と同様に、上記式（４）および上記式（５）により、経験度関数Ｅ（ｓ，ａ）を更新する。
【０１３９】
そして、強化学習装置１００は、第１動作例と同様に、状態ｓtとの間で価値関数の単調性を満たさず、かつ、状態ｓtよりも経験度が大きい状態を探索する。ここで、強化学習装置１００は、第１動作例とは異なり、下記式（１３）および下記式（１４）により、価値関数を更新する必要があるか否かを判断する。
【０１４０】
【数１３】
2020119139.tif 000015
【０１４１】
【数１４】
2020119139.tif 000016
【０１４２】
強化学習装置１００は、上記式（１３）および上記式（１４）を満たす場合、価値関数を更新する必要がないと判断する。その後、強化学習装置１００は、価値関数の学習を所定回数繰り返すまでは、判断および更新の処理を省略する。そして、強化学習装置１００は、価値関数の学習を所定回数繰り返した後、改めて、上記式（１３）および上記式（１４）により、価値関数を更新する必要があるか否かを判断する。
【０１４３】
一方で、強化学習装置１００は、上記式（１３）または上記式（１４）を満たさない場合、価値関数を更新する必要があると判断する。そして、強化学習装置１００は、第１動作例と同様に、価値関数を更新すると判断した場合、上記式（８）により、探索された１以上の状態から、いずれかの状態ｓ’を選択する。
【０１４４】
次に、強化学習装置１００は、第１動作例と同様に、選択した状態ｓ’の価値に基づいて、上記式（９）により、状態ｓtの価値と、選択した状態ｓ’の価値との差δ’を算出する。そして、強化学習装置１００は、第１動作例と同様に、算出した差δ’に基づいて、上記式（１０）により、各基底関数φk（ｓ，ａ）にかかる重みｗkを更新する。
【０１４５】
これにより、強化学習装置１００は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。強化学習による学習効率が、どのように向上するかについては、具体的には、図１７〜図２２を用いて後述する。また、強化学習装置１００は、処理量の低減化を図ることができる。
【０１４６】
また、強化学習装置１００は、上記「所定回数」の代わりに、「価値関数の学習量の累積と経験度関数の更新量の累積とが所定値を超えない期間」を利用してもよい。価値関数の学習量の累積と経験度関数の更新量の累積は、例えば、下記式（１５）および下記式（１６）により表される。
【０１４７】
【数１５】
2020119139.tif 000017
【０１４８】
【数１６】
2020119139.tif 000018
【０１４９】
（第３動作例における学習処理手順）
次に、図１０および図１１を用いて、強化学習装置１００が実行する、学習処理手順の一例について説明する。学習処理は、例えば、図２に示したＣＰＵ２０１と、メモリ２０２や記録媒体２０５などの記憶領域と、ネットワークＩ／Ｆ２０３とによって実現される。
【０１５０】
図１０および図１１は、第３動作例における学習処理手順の一例を示すフローチャートである。図１０において、強化学習装置１００は、上記式（２）および上記式（３）により、報酬ｒtと、状態ｓtと、状態ｓt+1と、行動ａtとに基づいて、価値関数を更新する（ステップＳ１００１）。次に、強化学習装置１００は、上記式（４）および上記式（５）により、経験度関数を更新する（ステップＳ１００２）。
【０１５１】
そして、強化学習装置１００は、価値関数を更新しないと判定した時点から、学習処理を所定回数実行済みであるか否かを判定する（ステップＳ１００３）。ここで、学習処理を所定回数実行済みではない場合（ステップＳ１００３：Ｎｏ）、強化学習装置１００は、学習処理を終了する。一方で、学習処理を所定回数実行済みである場合（ステップＳ１００３：Ｙｅｓ）、強化学習装置１００は、ステップＳ１００４の処理に移行する。
【０１５２】
ステップＳ１００４では、強化学習装置１００は、ｎ個の状態をサンプリングし、サンプル集合Ｓを生成する（ステップＳ１００４）。次に、強化学習装置１００は、上記式（１５）および上記式（１６）により、価値関数を更新するか否かを判定する（ステップＳ１００５）。ここで、更新しない場合（ステップＳ１００５：Ｎｏ）、強化学習装置１００は、学習処理を終了する。一方で、更新する場合（ステップＳ１００５：Ｙｅｓ）、強化学習装置１００は、ステップＳ１００６の処理に移行する。
【０１５３】
ステップＳ１００６では、強化学習装置１００は、サンプル集合Ｓから１つの状態を取り出し、状態ｓ’に設定する（ステップＳ１００６）。そして、強化学習装置１００は、上記式（６）により、状態ｓtと状態ｓ’とにおいて、価値関数が単調性を満たすか否かを判定する（ステップＳ１００７）。ここで、単調性を満たさない場合（ステップＳ１００７：Ｎｏ）、強化学習装置１００は、ステップＳ１０１０の処理に移行する。一方で、単調性を満たす場合（ステップＳ１００７：Ｙｅｓ）、強化学習装置１００は、ステップＳ１００８の処理に移行する。
【０１５４】
ステップＳ１００８では、強化学習装置１００は、上記式（７）により、状態ｓ’の経験度が、状態ｓtの経験度よりも大きいか否かを判定する（ステップＳ１００８）。ここで、状態ｓ’の経験度が状態ｓtの経験度以下である場合（ステップＳ１００８：Ｎｏ）、強化学習装置１００は、ステップＳ１０１０の処理に移行する。一方で、状態ｓ’の経験度が状態ｓtの経験度より大きい場合（ステップＳ１００８：Ｙｅｓ）、ステップＳ１００９の処理に移行する。
【０１５５】
ステップＳ１００９では、強化学習装置１００は、状態ｓ’を候補集合Ｓ’に追加する（ステップＳ１００９）。そして、強化学習装置１００は、ステップＳ１０１０の処理に移行する。
【０１５６】
ステップＳ１０１０では、強化学習装置１００は、サンプル集合Ｓが空であるか否かを判定する（ステップＳ１０１０）。ここで、サンプル集合Ｓが空ではない場合（ステップＳ１０１０：Ｎｏ）、強化学習装置１００は、ステップＳ１００６の処理に戻る。一方で、サンプル集合Ｓが空である場合（ステップＳ１０１０：Ｙｅｓ）、強化学習装置１００は、図１１のステップＳ１１０１の処理に移行する。次に、図１１の説明に移行する。
【０１５７】
図１１において、強化学習装置１００は、候補集合Ｓ’が空であるか否かを判定する（ステップＳ１１０１）。ここで、候補集合Ｓ’が空である場合（ステップＳ１１０１：Ｙｅｓ）、強化学習装置１００は、学習処理を終了する。一方で、候補集合Ｓ’が空ではない場合（ステップＳ１１０１：Ｎｏ）、強化学習装置１００は、ステップＳ１１０２の処理に移行する。
【０１５８】
ステップＳ１１０２では、強化学習装置１００は、上記式（８）により、候補集合Ｓ’の中から最も経験度が大きい状態ｓ’を取り出す（ステップＳ１１０２）。次に、強化学習装置１００は、上記式（９）により、価値関数の差δ’を算出する（ステップＳ１１０３）。
【０１５９】
そして、強化学習装置１００は、上記式（１０）により、各基底関数の重みｗkを更新する（ステップＳ１１０４）。その後、強化学習装置１００は、学習処理を終了する。これにより、強化学習装置１００は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。また、強化学習装置１００は、処理量の低減化を図ることができる。
【０１６０】
（強化学習装置１００の第４動作例）
次に、価値関数Ｑ（ｓ，ａ）を上記式（１）により定義した場合の、強化学習装置１００の第４動作例について説明する。ここで、強化学習装置１００は、現在の状態ｓtよりも経験度が小さい別の状態ｓ’の価値が、現在の状態ｓtの価値に近づくように、価値関数を更新しても、価値関数の精度向上を図ることが可能である。
【０１６１】
強化学習装置１００は、第１動作例と同様に、上記式（２）により、ＴＤ誤差δを算出し、算出したＴＤ誤差に基づいて、上記式（３）により、各基底関数φk（ｓ，ａ）にかかる重みｗkを更新する。そして、強化学習装置１００は、第１動作例と同様に、上記式（４）および上記式（５）により、経験度関数Ｅ（ｓ，ａ）を更新する。ここで、強化学習装置１００は、第１動作例とは異なり、状態ｓtとの間で価値関数の単調性を満たさず、かつ、状態ｓtとの経験度の差が大きいという下記式（１７）を満たす状態を探索する。
【０１６２】
【数１７】
2020119139.tif 000019
【０１６３】
そして、強化学習装置１００は、１つの状態も探索されなかった場合、価値関数を更新しないと判断する。一方で、強化学習装置１００は、１以上の状態が探索された場合、価値関数を更新すると判断する。強化学習装置１００は、第１動作例とは異なり、価値関数を更新すると判断した場合、下記式（１８）により、探索された１以上の状態から、いずれかの状態ｓ’を選択する。
【０１６４】
【数１８】
2020119139.tif 000020
【０１６５】
次に、強化学習装置１００は、状態ｓtと選択した状態ｓ’とを、状態ｓ1と状態ｓ2とに設定する。強化学習装置１００は、例えば、下記式（１９）を満たす場合、下記式（２０）により、状態ｓtと選択した状態ｓ’とを、状態ｓ1と状態ｓ2とに設定する。
【０１６６】
【数１９】
2020119139.tif 000021
【０１６７】
【数２０】
2020119139.tif 000022
【０１６８】
また、強化学習装置１００は、例えば、下記式（２１）を満たす場合、下記式（２２）により、状態ｓtと選択した状態ｓ’とを、状態ｓ1と状態ｓ2とに設定する。
【０１６９】
【数２１】
2020119139.tif 000023
【０１７０】
【数２２】
2020119139.tif 000024
【０１７１】
そして、強化学習装置１００は、状態ｓ1と状態ｓ2との価値に基づいて、下記式（２３）により、状態ｓ1と状態ｓ2との価値の差δ’を算出する。
【０１７２】
【数２３】
2020119139.tif 000025
【０１７３】
そして、強化学習装置１００は、算出した差δ’に基づいて、下記式（２４）により、各基底関数φk（ｓ，ａ）にかかる重みｗkを更新する。
【０１７４】
【数２４】
2020119139.tif 000026
【０１７５】
これにより、強化学習装置１００は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。また、強化学習装置１００は、価値関数の２通りの更新により、強化学習による学習効率を、さらに向上することができる。強化学習による学習効率が、どのように向上するかについては、具体的には、図１７〜図２２を用いて後述する。
【０１７６】
（第４動作例における学習処理手順）
次に、図１２および図１３を用いて、強化学習装置１００が実行する、学習処理手順の一例について説明する。学習処理は、例えば、図２に示したＣＰＵ２０１と、メモリ２０２や記録媒体２０５などの記憶領域と、ネットワークＩ／Ｆ２０３とによって実現される。
【０１７７】
図１２および図１３は、第４動作例における学習処理手順の一例を示すフローチャートである。図１２において、強化学習装置１００は、上記式（２）および上記式（３）により、報酬ｒtと、状態ｓtと、状態ｓt+1と、行動ａtとに基づいて、価値関数を更新する（ステップＳ１２０１）。次に、強化学習装置１００は、上記式（４）および上記式（５）により、経験度関数を更新する（ステップＳ１２０２）。
【０１７８】
次に、強化学習装置１００は、ｎ個の状態をサンプリングし、サンプル集合Ｓを生成する（ステップＳ１２０３）。次に、強化学習装置１００は、サンプル集合Ｓから１つの状態を取り出し、状態ｓ’に設定する（ステップＳ１２０４）。そして、強化学習装置１００は、上記式（６）により、状態ｓtと状態ｓ’とにおいて、価値関数が単調性を満たすか否かを判定する（ステップＳ１２０５）。
【０１７９】
ここで、単調性を満たさない場合（ステップＳ１２０５：Ｎｏ）、強化学習装置１００は、ステップＳ１２０８の処理に移行する。一方で、単調性を満たす場合（ステップＳ１２０５：Ｙｅｓ）、強化学習装置１００は、ステップＳ１２０６の処理に移行する。
【０１８０】
ステップＳ１２０６では、強化学習装置１００は、上記式（１７）により、経験度の差が、所定の値εより大きいか否かを判定する（ステップＳ１２０６）。ここで、ε未満である場合（ステップＳ１２０６：Ｎｏ）、強化学習装置１００は、ステップＳ１２０８の処理に移行する。一方で、εより大きい場合（ステップＳ１２０６：Ｙｅｓ）、強化学習装置１００は、ステップＳ１２０７の処理に移行する。
【０１８１】
ステップＳ１２０７では、強化学習装置１００は、状態ｓ’を候補集合Ｓ’に追加する（ステップＳ１２０７）。そして、強化学習装置１００は、ステップＳ１２０８の処理に移行する。
【０１８２】
ステップＳ１２０８では、強化学習装置１００は、サンプル集合Ｓが空であるか否かを判定する（ステップＳ１２０８）。ここで、サンプル集合Ｓが空ではない場合（ステップＳ１２０８：Ｎｏ）、強化学習装置１００は、ステップＳ１２０４の処理に戻る。一方で、サンプル集合Ｓが空である場合（ステップＳ１２０８：Ｙｅｓ）、強化学習装置１００は、図１３のステップＳ１３０１の処理に移行する。次に、図１３の説明に移行する。
【０１８３】
図１３において、強化学習装置１００は、候補集合Ｓ’が空であるか否かを判定する（ステップＳ１３０１）。ここで、候補集合Ｓ’が空である場合（ステップＳ１３０１：Ｙｅｓ）、強化学習装置１００は、学習処理を終了する。一方で、候補集合Ｓ’が空ではない場合（ステップＳ１３０１：Ｎｏ）、強化学習装置１００は、ステップＳ１３０２の処理に移行する。
【０１８４】
ステップＳ１３０２では、強化学習装置１００は、上記式（１８）により、候補集合Ｓ’の中から最も経験度の差が大きい状態ｓ’を取り出し、状態ｓtと状態ｓ’とのうち経験度が大きい方をｓ1に設定し、経験度が小さい方をｓ2に設定する（ステップＳ１３０２）。
【０１８５】
次に、強化学習装置１００は、上記式（２３）により、価値関数の差δ’を算出する（ステップＳ１３０３）。そして、強化学習装置１００は、上記式（２４）により、各基底関数の重みｗkを更新する（ステップＳ１３０４）。その後、強化学習装置１００は、学習処理を終了する。これにより、強化学習装置１００は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。
【０１８６】
（強化学習装置１００の第５動作例）
次に、図１４を用いて、価値関数Ｑ（ｓ，ａ）を上記式（１）により定義した場合の、強化学習装置１００の第５動作例について説明する。
【０１８７】
図１４は、強化学習装置１００の第５動作例を示す説明図である。ここで、単調性が、単峰性である場合がある。単峰性は、価値のピークが１箇所であり、ピークになる状態より小さい範囲で単調増加を表し、ピークになる状態より大きい範囲で単調減少を表す。単峰性は、例えば、制御対象が風力発電設備である場合に現れる。
【０１８８】
図１４において、強化学習装置１００は、例えば、状態ｓtの両側に、状態ｓtよりも経験度が大きく、かつ、状態ｓtよりも価値が大きい別の状態がある場合、価値関数のうち状態ｓtに対応する価値を、両側の別の状態の価値に基づいて更新する。図１４の例では、強化学習装置１００は、状態ｓtが価値１４０１であれば補正し、状態ｓtが価値１４０２であれば補正しない。
【０１８９】
具体的には、強化学習装置１００は、第１動作例と同様に、上記式（２）により、ＴＤ誤差δを算出し、算出したＴＤ誤差に基づいて、上記式（３）により、各基底関数φk（ｓ，ａ）にかかる重みｗkを更新する。そして、強化学習装置１００は、第１動作例と同様に、上記式（４）および上記式（５）により、経験度関数Ｅ（ｓ，ａ）を更新する。ここで、強化学習装置１００は、第１動作例とは異なり、下記式（２５）により、状態ｓtの両側から、サンプル集合Ｓ1とサンプル集合Ｓ2とを抽出する。
【０１９０】
【数２５】
2020119139.tif 000027
【０１９１】
次に、強化学習装置１００は、下記式（２６）および下記式（２７）により、サンプル集合Ｓ1とサンプル集合Ｓ2とから、状態ｓ’と状態ｓ”とを抽出する。
【０１９２】
【数２６】
2020119139.tif 000028
【０１９３】
【数２７】
2020119139.tif 000029
【０１９４】
次に、強化学習装置１００は、下記式（２８）により、状態ｓtの価値と、状態ｓ’と状態ｓ”との価値のうち状態ｓtの価値に近い方の価値との差δ’を算出する。
【０１９５】
【数２８】
2020119139.tif 000030
【０１９６】
そして、強化学習装置１００は、算出した差δ’に基づいて、下記式（２９）により、各基底関数φk（ｓ，ａ）にかかる重みｗkを更新する。
【０１９７】
【数２９】
2020119139.tif 000031
【０１９８】
これにより、強化学習装置１００は、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。強化学習による学習効率が、どのように向上するかについては、具体的には、図１７〜図２２を用いて後述する。
【０１９９】
（第５動作例における学習処理手順）
次に、図１５および図１６を用いて、強化学習装置１００が実行する、学習処理手順の一例について説明する。学習処理は、例えば、図２に示したＣＰＵ２０１と、メモリ２０２や記録媒体２０５などの記憶領域と、ネットワークＩ／Ｆ２０３とによって実現される。
【０２００】
図１５および図１６は、第５動作例における学習処理手順の一例を示すフローチャートである。図１５および図１６において、強化学習装置１００は、上記式（２）および上記式（３）により、報酬ｒtと、状態ｓtと、状態ｓt+1と、行動ａtとに基づいて、価値関数を更新する（ステップＳ１５０１）。次に、強化学習装置１００は、上記式（４）および上記式（５）により、経験度関数を更新する（ステップＳ１５０２）。
【０２０１】
次に、強化学習装置１００は、ｎ個の状態をサンプリングし、サンプル集合Ｓを生成する（ステップＳ１５０３）。次に、強化学習装置１００は、サンプル集合Ｓから１つの状態を取り出し、状態ｓ’に設定する（ステップＳ１５０４）。そして、強化学習装置１００は、下記式（３０）により、状態ｓ’の価値が、状態ｓtの価値より大きいか否かを判定する（ステップＳ１５０５）。
【０２０２】
【数３０】
2020119139.tif 000032
【０２０３】
ここで、状態ｓ’の価値が状態ｓtの価値以下である場合（ステップＳ１５０５：Ｎｏ）、強化学習装置１００は、ステップＳ１５１０の処理に移行する。一方で、状態ｓ’の価値が状態ｓtの価値より大きい場合（ステップＳ１５０５：Ｙｅｓ）、強化学習装置１００は、ステップＳ１５０６の処理に移行する。
【０２０４】
ステップＳ１５０６では、強化学習装置１００は、上記式（７）により、状態ｓ’の経験度が、状態ｓtの経験度よりも大きいか否かを判定する（ステップＳ１５０６）。ここで、状態ｓ’の経験度が状態ｓtの経験度以下である場合（ステップＳ１５０６：Ｎｏ）、強化学習装置１００は、ステップＳ１５１０の処理に移行する。一方で、状態ｓ’の経験度が状態ｓtの経験度より大きい場合（ステップＳ１５０６：Ｙｅｓ）、ステップＳ１５０７の処理に移行する。
【０２０５】
ステップＳ１５０７では、強化学習装置１００は、状態ｓ’＜状態ｓtであるか否かを判定する（ステップＳ１５０７）。ここで、状態ｓ’＜状態ｓtである場合（ステップＳ１５０７：Ｙｅｓ）、強化学習装置１００は、ステップＳ１５０８の処理に移行する。一方で、状態ｓ’＜状態ｓtではない場合（ステップＳ１５０７：Ｎｏ）、強化学習装置１００は、ステップＳ１５０９の処理に移行する。
【０２０６】
ステップＳ１５０８では、強化学習装置１００は、状態ｓ’を候補集合Ｓ1に追加する（ステップＳ１５０８）。そして、強化学習装置１００は、ステップＳ１５１０の処理に移行する。
【０２０７】
ステップＳ１５０９では、強化学習装置１００は、状態ｓ’を候補集合Ｓ2に追加する（ステップＳ１５０９）。そして、強化学習装置１００は、ステップＳ１５１０の処理に移行する。
【０２０８】
ステップＳ１５１０では、強化学習装置１００は、サンプル集合Ｓが空であるか否かを判定する（ステップＳ１５１０）。ここで、サンプル集合Ｓが空ではない場合（ステップＳ１５１０：Ｎｏ）、強化学習装置１００は、ステップＳ１５０４の処理に戻る。一方で、サンプル集合Ｓが空である場合（ステップＳ１５１０：Ｙｅｓ）、強化学習装置１００は、図１６のステップＳ１６０１の処理に移行する。次に、図１６の説明に移行する。
【０２０９】
図１６において、強化学習装置１００は、候補集合Ｓ1または候補集合Ｓ2が空であるか否かを判定する（ステップＳ１６０１）。ここで、候補集合Ｓ1または候補集合Ｓ2が空である場合（ステップＳ１６０１：Ｙｅｓ）、強化学習装置１００は、学習処理を終了する。一方で、候補集合Ｓ1および候補集合Ｓ2のいずれもが空ではない場合（ステップＳ１６０１：Ｎｏ）、強化学習装置１００は、ステップＳ１６０２の処理に移行する。
【０２１０】
ステップＳ１６０２では、強化学習装置１００は、上記式（２６）および上記式（２７）により、候補集合Ｓ1および候補集合Ｓ2のそれぞれの中から、最も経験度が大きい状態ｓ’および状態ｓ”を取り出す（ステップＳ１６０２）。次に、強化学習装置１００は、上記式（２８）により、価値関数の差δ’を算出する（ステップＳ１６０３）。
【０２１１】
そして、強化学習装置１００は、上記式（２９）により、各基底関数の重みｗkを更新する（ステップＳ１６０４）。その後、強化学習装置１００は、学習処理を終了する。これにより、強化学習装置１００は、単調性が単峰性である場合でも、強化学習にかかる処理時間の低減化を図り、強化学習による学習効率の向上を図ることができる。
【０２１２】
（強化学習による学習効率を比較する一例）
次に、図１７〜図１９を用いて、強化学習による学習効率について説明する。具体的には、動作例３における強化学習による学習効率を、価値関数を学習した後に価値関数を更新しない場合と比較する一例について説明する。
【０２１３】
図１７〜図１９は、強化学習による学習効率を比較する一例を示す説明図である。図１７〜図１９において、グラフ１７０１〜１７０３，１８０１〜１８０３，１９０１〜１９０３は、価値関数を学習した後、価値関数を更新しない場合の価値関数の遷移例を示す。図１７〜図１９において、グラフ１７１１〜１７１３，１８１１〜１８１３，１９１１〜１９１３は、動作例３における価値関数の遷移例を示す。図１７の説明に移行する。
【０２１４】
図１７において、グラフ１７０１〜１７０３は、それぞれ、価値関数を更新しない場合の、時点ｔ1〜ｔ3における価値関数を示す。図１７において、グラフ１７１１〜１７１３は、動作例３における時点ｔ1〜ｔ3における価値関数を示す。例えば、グラフ１７０３とグラフ１７１３とを比較すると、強化学習装置１００は、時点ｔ3において、価値関数を更新することができ、価値関数の精度向上を図ることができることが示される。
【０２１５】
図１８において、グラフ１８０１〜１８０３は、それぞれ、価値関数を更新しない場合の、時点ｔn〜ｔn+2における価値関数を示す。図１８において、グラフ１８１１〜１８１３は、動作例３における時点ｔn〜ｔn+2における価値関数を示す。例えば、グラフ１８０３とグラフ１８１３とを比較すると、強化学習装置１００は、時点ｔn+2において、価値関数を更新することができ、価値関数の精度向上を図ることができることが示される。また、グラフ１８０３を参照すると、価値関数を更新しない場合は、一部の状態について価値が学習されず、価値関数の精度が悪いことが示される。
【０２１６】
図１９において、グラフ１９０１〜１９０３は、それぞれ、価値関数を更新しない場合の、時点ｔm〜ｔm+1および時点ｔzにおける価値関数を示す。時点ｔzは、価値関数が収束した後の時点である。図１９において、グラフ１９１１〜１９１３は、動作例３における時点ｔm〜ｔm+1および時点ｔzにおける価値関数を示す。例えば、グラフ１９０２，１９０３とグラフ１９１２，１９１３とを比較すると、強化学習装置１００は、時点ｔm+1において、時点ｔzにおける価値関数に比較的近い価値関数を得ることができ、価値関数の精度向上を図ることができることが示される。
【０２１７】
（強化学習による学習効率を比較する別の例）
次に、図２０〜図２２を用いて、動作例３における強化学習による学習効率を比較する別の例について説明する。
【０２１８】
図２０〜図２２は、強化学習による学習効率を比較する別の例を示す説明図である。図２０〜図２２において、グラフ２００１〜２００３，２１０１〜２１０３，２２０１〜２２０３は、価値関数を常に更新する場合の価値関数の遷移例を示す。図２０〜図２２において、グラフ２０１１〜２０１３，２１１１〜２１１３，２２１１〜２２１３は、動作例３における価値関数の遷移例を示す。
【０２１９】
図２０において、グラフ２００１〜２００３は、それぞれ、価値関数を常に更新する場合の、時点ｔ1〜ｔ3における価値関数を示す。図２０において、グラフ２０１１〜２０１３は、動作例３における時点ｔ1〜ｔ3における価値関数を示す。例えば、グラフ２００３とグラフ２０１３とを比較すると、強化学習装置１００は、時点ｔ3において、価値関数を更新することができ、価値関数の精度向上を図ることができることが示される。
【０２２０】
図２１において、グラフ２１０１〜２１０３は、それぞれ、価値関数を常に更新する場合の、時点ｔn〜ｔn+2における価値関数を示す。図２１において、グラフ２１１１〜２１１３は、動作例３における時点ｔn〜ｔn+2における価値関数を示す。例えば、グラフ２１０３とグラフ２１１３とを比較すると、強化学習装置１００は、時点ｔn+2において、価値関数を更新することができ、価値関数の精度向上を図ることができることが示される。また、グラフ２１０３とグラフ２１１３とを比較すると、価値関数を常に更新する場合は、価値関数の誤差を拡大する方向に、価値関数を更新してしまい、価値関数の精度が悪くなることが示される。
【０２２１】
図２２において、グラフ２２０１〜２２０３は、それぞれ、価値関数を常に更新する場合の、時点ｔm〜ｔm+1および時点ｔzにおける価値関数を示す。時点ｔzは、価値関数が収束した後の時点である。図２２において、グラフ２２１１〜２２１３は、動作例３における時点ｔm〜ｔm+1および時点ｔzにおける価値関数を示す。例えば、グラフ２２０２，２２０３とグラフ２２１２，２２１３とを比較すると、強化学習装置１００は、時点ｔm+1において、時点ｔzにおける価値関数に比較的近い価値関数を得ることができ、価値関数の精度向上を図ることができることが示される。また、価値関数を常に更新する場合は、価値関数の誤差を拡大する方向に、価値関数を更新してしまった結果、価値関数の精度が悪くなることが示される。
【０２２２】
ここでは、単調性が、状態が取りうる全範囲について成立する場合について説明したが、これに限らない。例えば、単調性が、状態が取りうる一部範囲について成立する場合について、強化学習装置１００が適用されてもよい。具体的には、制御対象の状態に制約がある場合、制約の範囲で単調性を有する場合について、強化学習装置１００が適用されてもよい。
【０２２３】
以上説明したように、強化学習装置１００によれば、単位学習ステップごとに、基底関数を用いて、単位学習ステップに用いた制御対象の状態または行動の、強化学習に対する寄与度を算出することができる。強化学習装置１００によれば、単位学習ステップ後の価値関数、および、算出した寄与度に基づいて、価値関数を更新するか否かを判断することができる。強化学習装置１００によれば、価値関数を更新すると判断した場合、価値関数を更新することができる。これにより、強化学習装置１００は、強化学習による学習効率の向上を図ることができる。
【０２２４】
強化学習装置１００によれば、単位学習ステップごとに、算出した寄与度に基づいて、制御対象の状態または行動ごとの強化学習における経験度を、基底関数により規定する経験度関数を更新することができる。強化学習装置１００によれば、単位学習ステップ後の価値関数、および、更新した経験度関数に基づいて、価値関数を更新するか否かを判断することができる。これにより、強化学習装置１００は、経験度を利用して、強化学習による学習効率の向上を図りやすくすることができる。
【０２２５】
強化学習装置１００によれば、価値関数を更新すると判断した場合、単位学習ステップに用いた制御対象の状態または行動の、強化学習における経験度が大きくなるように、さらに経験度関数を更新することができる。これにより、強化学習装置１００は、経験度関数の精度向上を図ることができ、経験度関数を用いた価値関数の更新要否の判断精度の向上を図ることができ、精度のよい価値関数を得やすくすることができる。
【０２２６】
強化学習装置１００によれば、単位学習ステップに用いた制御対象の状態または行動の価値が、単位学習ステップに用いた制御対象の状態または行動よりも経験度が大きい制御対象の状態または行動の価値に近づくように、価値関数を更新することができる。これにより、強化学習装置１００は、精度のよい価値関数を得やすくすることができる。
【０２２７】
強化学習装置１００によれば、単位学習ステップに用いた制御対象の状態または行動よりも経験度が小さい制御対象の状態または行動の価値が、単位学習ステップに用いた制御対象の状態または行動の価値に近づくように、価値関数を更新することができる。これにより、強化学習装置１００は、精度のよい価値関数を得やすくすることができる。
【０２２８】
強化学習装置１００によれば、単位学習ステップに用いた制御対象の状態または行動が、単位学習ステップに用いた制御対象の状態または行動よりも経験度が大きい制御対象の状態または行動の２つに挟まれる場合、価値関数を更新すると判断することができる。これにより、強化学習装置１００は、価値関数の特性が単峰性を有する場合に適用することができる。
【０２２９】
強化学習装置１００によれば、価値関数を更新しないと判断した後、所定回数分の単位学習ステップが実行されてから、価値関数を更新するか否かを判断することができる。これにより、強化学習装置１００は、強化学習による学習効率の低下を抑制しつつ、処理量の低減化を図ることができる。
【０２３０】
強化学習装置１００によれば、今回の単位学習ステップの学習結果を価値関数に反映させる前に、前回の単位学習ステップ後の価値関数、および、算出した寄与度に基づいて、価値関数を更新するか否かを判断することができる。強化学習装置１００によれば、価値関数を更新すると判断した場合、今回の単位学習ステップの学習結果を価値関数に反映させると共に価値関数を更新することができる。強化学習装置１００によれば、価値関数を更新しないと判断した場合、今回の単位学習ステップの学習結果を価値関数に反映させることができる。これにより、強化学習装置１００は、学習と更新とを纏めて実施することができる。
【０２３１】
なお、本実施の形態で説明した強化学習方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明した強化学習プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明した強化学習プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２３２】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２３３】
（付記１）制御対象の状態または行動に対する価値の特性に単調性を有する価値関数を学習する単位学習ステップを繰り返す強化学習における前記単位学習ステップごとに、前記価値関数の表現に用いられる基底関数を用いて、前記単位学習ステップに用いた前記制御対象の状態または行動の、前記強化学習に対する寄与度を算出し、
前記単位学習ステップ後の前記価値関数、および、算出した前記寄与度に基づいて、前記価値関数を更新するか否かを判断し、
前記価値関数を更新すると判断した場合、前記価値関数を更新する、
処理をコンピュータが実行することを特徴とする強化学習方法。
【０２３４】
（付記２）前記単位学習ステップごとに、算出した前記寄与度に基づいて、前記制御対象の状態または行動ごとの前記強化学習における経験度を、前記基底関数により規定する経験度関数を更新する、処理を前記コンピュータが実行し、
前記判断する処理は、
前記単位学習ステップ後の前記価値関数、および、更新した前記経験度関数に基づいて、前記価値関数を更新するか否かを判断する、ことを特徴とする付記１に記載の強化学習方法。
【０２３５】
（付記３）前記経験度関数を更新する処理は、
前記価値関数を更新すると判断した場合、前記単位学習ステップに用いた前記制御対象の状態または行動の、前記強化学習における経験度が大きくなるように、さらに前記経験度関数を更新する、ことを特徴とする付記２に記載の強化学習方法。
【０２３６】
（付記４）前記価値関数を更新する処理は、
前記単位学習ステップに用いた前記制御対象の状態または行動の価値が、前記単位学習ステップに用いた前記制御対象の状態または行動よりも経験度が大きい前記制御対象の状態または行動の価値に近づくように、前記価値関数を更新する、ことを特徴とする付記２または３に記載の強化学習方法。
【０２３７】
（付記５）前記価値関数を更新する処理は、
前記単位学習ステップに用いた前記制御対象の状態または行動よりも経験度が小さい前記制御対象の状態または行動の価値が、前記単位学習ステップに用いた前記制御対象の状態または行動の価値に近づくように、前記価値関数を更新する、ことを特徴とする付記２または３に記載の強化学習方法。
【０２３８】
（付記６）前記単調性は、単峰性であり、
前記判断する処理は、
前記単位学習ステップに用いた前記制御対象の状態または行動が、前記単位学習ステップに用いた前記制御対象の状態または行動よりも経験度が大きい前記制御対象の状態または行動の２つに挟まれる場合、前記価値関数を更新すると判断する、ことを特徴とする付記２〜５のいずれか一つに記載の強化学習方法。
【０２３９】
（付記７）前記判断する処理は、
前記価値関数を更新しないと判断した後、所定回数分の前記単位学習ステップが実行されてから、前記価値関数を更新するか否かを判断する、ことを特徴とする付記１〜６のいずれか一つに記載の強化学習方法。
【０２４０】
（付記８）前記判断する処理は、
今回の単位学習ステップの学習結果を前記価値関数に反映させる前に、前回の単位学習ステップ後の前記価値関数、および、算出した前記寄与度に基づいて、前記価値関数を更新するか否かを判断し、
前記価値関数を更新する処理は、
前記価値関数を更新すると判断した場合、今回の単位学習ステップの学習結果を前記価値関数に反映させると共に前記価値関数を更新し、前記価値関数を更新しないと判断した場合、今回の単位学習ステップの学習結果を前記価値関数に反映させる、ことを特徴とする付記１に記載の強化学習方法。
【０２４１】
（付記９）制御対象の状態または行動に対する価値の特性に単調性を有する価値関数を学習する単位学習ステップを繰り返す強化学習における前記単位学習ステップごとに、前記価値関数の表現に用いられる基底関数を用いて、前記単位学習ステップに用いた前記制御対象の状態または行動の、前記強化学習に対する寄与度を算出し、
前記単位学習ステップ後の前記価値関数、および、算出した前記寄与度に基づいて、前記価値関数を更新するか否かを判断し、
前記価値関数を更新すると判断した場合、前記価値関数を更新する、
処理をコンピュータに実行させることを特徴とする強化学習プログラム。
【０２４２】
（付記１０）制御対象の状態または行動に対する価値の特性に単調性を有する価値関数を学習する単位学習ステップを繰り返す強化学習における前記単位学習ステップごとに、前記価値関数の表現に用いられる基底関数を用いて、前記単位学習ステップに用いた前記制御対象の状態または行動の、前記強化学習に対する寄与度を算出し、
前記単位学習ステップ後の前記価値関数、および、算出した前記寄与度に基づいて、前記価値関数を更新するか否かを判断し、
前記価値関数を更新すると判断した場合、前記価値関数を更新する、
制御部を有することを特徴とする強化学習装置。
【符号の説明】
【０２４３】
１００  強化学習装置
１０１  価値関数
１１０，５００，６１０，６２０，１７０１〜１７０３，１７１１〜１７１３，１８０１〜１８０３，１８１１〜１８１３，１９０１〜１９０３，１９１１〜１９１３，２００１〜２００３，２０１１〜２０１３，２１０１〜２１０３，２１１１〜２１１３，２２０１〜２２０３，２２１１〜２２１３  グラフ
２００  バス
２０１  ＣＰＵ
２０２  メモリ
２０３  ネットワークＩ／Ｆ
２０４  記録媒体Ｉ／Ｆ
２０５  記録媒体
２１０  ネットワーク
３００  記憶部
３０１  取得部
３０２  学習部
３０３  算出部
３０４  更新部
３０５  出力部
４００  風力発電設備
４０１  状態取得部
４０２  報酬計算部
４０３  価値関数学習部
４０４  経験度算出部
４０５  価値関数補正部
４０６  制御指令値出力部
４１０  風車
４２０  発電機
６１１，６１２，６２１，６２２，６３１，６３２  範囲
【図１】
2020119139.tif 000033
【図２】
2020119139.tif 000034
【図３】
2020119139.tif 000035
【図４】
2020119139.tif 000036
【図５】
2020119139.tif 000037
【図６】
2020119139.tif 000038
【図７】
2020119139.tif 000039
【図８】
2020119139.tif 000040
【図９】
2020119139.tif 000041
【図１０】
2020119139.tif 000042
【図１１】
2020119139.tif 000043
【図１２】
2020119139.tif 000044
【図１３】
2020119139.tif 000045
【図１４】
2020119139.tif 000046
【図１５】
2020119139.tif 000047
【図１６】
2020119139.tif 000048
【図１７】
2020119139.tif 000049
【図１８】
2020119139.tif 000050
【図１９】
2020119139.tif 000051
【図２０】
2020119139.tif 000052
【図２１】
2020119139.tif 000053
【図２２】
2020119139.tif 000054