(57)【要約】【課題】  本発明の目的は、応答時間の長い制御対象に対しても適用できる学習方法及びプログラムを提供することである。【解決手段】  実施形態による学習方法は、前の補助変数と現在の観測データを受け取るステップと、前記前の補助変数と、前記現在の観測データと、観測データからスコアを求めるためのパラメータの値に基づき、前記制御対象の現在の行動を選択するステップと、前記制御対象に前記現在の行動を実行させるステップと、次の観測データと報酬を受け取るステップと、前記現在の観測データと、前記現在の行動に関する現在の行動情報と、前記次の観測データと、前記報酬に基づき、前記パラメータの値を更新するステップを具備する。前記選択ステップは、前の行動を現在の行動として選択する度合いを大きくする。【選択図】図９
2020204803.tif 000002
【特許請求の範囲】
【請求項１】
前の補助変数、制御対象の前の行動に関する前の行動情報又は前のスコアの組を受け取る第１受け取りステップと、
現在の観測データを受け取る第２受け取りステップと、
前記前の補助変数、前記前の行動情報又は前記前のスコアの組と、前記現在の観測データと、観測データからスコアを求めるためのパラメータの値に基づき、前記制御対象の現在の行動を選択する選択ステップと、
前記制御対象に前記現在の行動を実行させる実行ステップと、
次の観測データと報酬を受け取る第３受け取りステップと、
前記現在の観測データと、前記現在の行動に関する現在の行動情報と、前記次の観測データと、前記報酬に基づき、前記パラメータの値を更新する更新ステップを具備し、
前記選択ステップは、前の行動を現在の行動として選択する度合いを大きくする学習方法。
【請求項２】
前記第１受け取りステップ、前記第２受け取りステップ、前記選択ステップ、前記実行ステップ、前記第３受け取りステップ及び前記更新ステップは前記制御対象の制御周期毎に実行される請求項１記載の学習方法。
【請求項３】
前記選択ステップは、
前記現在の観測データと更新前の前記パラメータの値に基づき、現在のスコアの組を算出する第１算出ステップと、
前記前の補助変数に基づき、現在の補助変数を算出する第２算出ステップと、
前記現在のスコアの組と前記現在の補助関数に基づき、前記現在の行動を選択する第３ステップを具備し、
前記第２算出ステップにおいて、前記前の補助変数は前記現在の補助変数とされる請求項１又は請求項２記載の学習方法。
【請求項４】
前記選択ステップは、
前記現在の観測データと更新前の前記パラメータの値に基づき、現在のスコアの組を算出する第１算出ステップと、
前記現在のスコアの組と前記前の行動情報に基づき、混合スコアの組を算出する第２算出ステップと、
前記前の補助変数に基づき、現在の補助変数を算出する第３算出ステップと、
前記混合スコアの組と前記現在の補助変数に基づき、現在の行動を選択する第４ステップを具備し、
前記第２算出ステップは、前記現在のスコアの組に、前記前の行動と同じ行動に対するスコアが前記前の行動以外の行動に対するスコアより大きくしたスコアの組を混合して前記混合スコアの組を算出する請求項１又は請求項２記載の学習方法。
【請求項５】
前記選択ステップは、
前記現在の観測データ及び前記パラメータの値に基づき、現在のスコアの組を算出する第１算出ステップと、
前記現在のスコアの組と前記前のスコアの組から混合スコアの組を算出する第２算出ステップと、
前記前の補助変数に基づき、現在の補助変数を算出する第３算出ステップと、
前記混合スコアの組と前記現在の補助変数に基づき、現在の行動を選択する第４ステップを具備し、
前記第２算出ステップは、前記現在のスコアの組に、前記前のスコアの組を混合して前記混合スコアの組を算出する請求項１又は請求項２記載の学習方法。
【請求項６】
前記選択ステップは、
前記制御対象が前記現在の行動の実行を開始してから前記現在の行動の実行を完了するまでに要する期間、前記前の行動を前記現在の行動として選択する度合いを大きくする請求項１乃至請求項５のいずれか一項記載の学習方法。
【請求項７】
前記制御対象は自動車を含み、
前記選択ステップは、前記自動車が車線変更を開始してから車線変更を完了するまでに要する期間、前記前の行動を前記現在の行動として選択する度合いを大きくする請求項１乃至請求項５のいずれか一項記載の学習方法。
【請求項８】
前記制御対象は自動車を含み、
前記選択ステップは、前記自動車が速度変更を開始してから速度変更を完了するまでに要する期間、前記前の行動を前記現在の行動として選択する度合いを大きくする請求項１乃至請求項５のいずれか一項記載の学習方法。
【請求項９】
コンピュータに、
前の補助変数、制御対象の前の行動に関する前の行動情報又は前のスコアの組を受け取る第１受け取りステップと、
現在の観測データを受け取る第２受け取りステップと、
前記前の補助変数、前記前の行動情報又は前記前のスコアの組と、前記現在の観測データと、観測データからスコアを求めるためのパラメータの値に基づき、前記制御対象の現在の行動を選択する選択ステップと、
前記制御対象に前記現在の行動を実行させる実行ステップと、
次の観測データと報酬を受け取る第３受け取りステップと、
前記現在の観測データと、前記現在の行動に関する現在の行動情報と、前記次の観測データと、前記報酬に基づき、前記パラメータの値を更新する更新ステップを実行させるためのプログラムであって、
前記選択ステップは、前の行動を現在の行動として選択する度合いを大きくするプログラム。
【請求項１０】
前記第１受け取りステップ、前記第２受け取りステップ、前記選択ステップ、前記実行ステップ、前記第３受け取りステップ及び前記更新ステップは前記制御対象の制御周期毎に実行される請求項９記載のプログラム。
【請求項１１】
前記選択ステップは、
前記現在の観測データと更新前の前記パラメータの値に基づき、現在のスコアの組を算出する第１算出ステップと、
前記前の補助変数に基づき、現在の補助変数を算出する第２算出ステップと、
前記現在のスコアの組と前記現在の補助関数に基づき、前記現在の行動を選択する第３ステップを具備し、
前記第２算出ステップにおいて、前記前の補助変数は前記現在の補助変数とされる請求項９又は請求項１０記載のプログラム。
【請求項１２】
前記選択ステップは、
前記現在の観測データと更新前の前記パラメータの値に基づき、現在のスコアの組を算出する第１算出ステップと、
前記現在のスコアの組と前記前の行動情報に基づき、混合スコアの組を算出する第２算出ステップと、
前記前の補助変数に基づき、現在の補助変数を算出する第３算出ステップと、
前記混合スコアの組と前記現在の補助変数に基づき、現在の行動を選択する第４ステップを具備し、
前記第２算出ステップは、前記現在のスコアの組に、前記前の行動と同じ行動に対するスコアが前記前の行動以外の行動に対するスコアより大きくしたスコアの組を混合して前記混合スコアの組を算出する請求項９又は請求項１０記載のプログラム。
【請求項１３】
前記選択ステップは、
前記現在の観測データ及び前記パラメータの値に基づき、現在のスコアの組を算出する第１算出ステップと、
前記現在のスコアの組と前記前のスコアの組から混合スコアの組を算出する第２算出ステップと、
前記前の補助変数に基づき、現在の補助変数を算出する第３算出ステップと、
前記混合スコアの組と前記現在の補助変数に基づき、現在の行動を選択する第４ステップを具備し、
前記第２算出ステップは、前記現在のスコアの組に、前記前のスコアの組を混合して前記混合スコアの組を算出する請求項９又は請求項１０記載のプログラム。
【請求項１４】
前記選択ステップは、
前記制御対象が前記現在の行動の実行を開始してから前記現在の行動の実行を完了するまでに要する期間、前記前の行動を前記現在の行動として選択する度合いを大きくする請求項９乃至請求項１３のいずれか一項記載のプログラム。
【請求項１５】
前記制御対象は自動車を含み、
前記選択ステップは、前記自動車が車線変更を開始してから車線変更を完了するまでに要する期間、前記前の行動を前記現在の行動として選択する度合いを大きくする請求項９乃至請求項１３のいずれか一項記載のプログラム。
【請求項１６】
前記制御対象は自動車を含み、
前記選択ステップは、前記自動車が速度変更を開始してから速度変更を完了するまでに要する期間、前記前の行動を前記現在の行動として選択する度合いを大きくする請求項９乃至請求項１３のいずれか一項記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は学習方法及びプログラムに関する。
【背景技術】
【０００２】
制御対象の行動を選択し、選択された行動を制御対象に実行させ、実行した行動に対応する制御対象の動作を評価することを繰り返す機械学習法（強化学習法とも称される）が知られている。例えば、自動車、ロボット及びドローン等の移動体又はロボットアーム等の可動体の行動制御に関して強化学習法が適用される。
【０００３】
行動制御において制御対象を取り巻く環境は時々刻々変化し得るので、この環境の変化に迅速に対応するためには、行動の選択および選択された行動の実行を行う周期はより短い程より好ましい。一方、移動体や可動体はある行動を一定時間持続して実行しないと、その行動に対応した動作が実現されないことがある。この場合、選択された行動を実行し始めてからその行動に対応した制御対象の動作が実現されるまでに要する応答時間に対して、行動の選択および選択された行動の実行の周期が短いと、選択された行動に対応した動作を実現させることが困難であり、学習ができない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１８−５３７７６７号公報
【非特許文献】
【０００５】
【非特許文献１】Volodymyr Mnih等、”Playing Atari with Deep Reinforcement Learning”、NIPS Deep Learning Workshop、2013年
【非特許文献２】Aravind S. Lakshminarayanan等、”Dynamic Action Repetition for Deep Reinforcement Learning”、 Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence (AAAI-17)
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、応答時間の長い制御対象に対しても適用できる学習方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００７】
実施形態による学習方法は、  
前の補助変数、制御対象の前の行動に関する前の行動情報又は前のスコアの組を受け取る第１受け取りステップと、  
現在の観測データを受け取る第２受け取りステップと、  
前記前の補助変数、前記前の行動情報又は前記前のスコアの組と、前記現在の観測データと、観測データからスコアを求めるためのパラメータの値に基づき、前記制御対象の現在の行動を選択する選択ステップと、  
前記制御対象に前記現在の行動を実行させる実行ステップと、  
次の観測データと報酬を受け取る第３受け取りステップと、  
前記現在の観測データと、前記現在の行動に関する現在の行動情報と、前記次の観測データと、前記報酬に基づき、前記パラメータの値を更新する更新ステップを具備する。  
前記選択ステップは、前の行動を現在の行動として選択する度合いを大きくする。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態による機械学習法を実施するための学習装置の一例を示すブロック図である。
【図２】第１実施形態による機械学習法の一例を示すフローチャートである。
【図３】図２に示すフローチャートの中のスコア算出ステップで使用される方策関数の一例を示す図である。
【図４】図２に示すフローチャートの中の補助変数決定ステップの一例を示すフローチャートである。
【図５】図２に示すフローチャートの中の現在の行動選択ステップの原理を説明するための図である。
【図６】図２に示すフローチャートの中の現在の行動選択ステップを複数回実行する場合の行動選択の原理を説明するための図である。
【図７】比較例１の学習結果を示す図である。
【図８】比較例２の学習結果を示す図である。
【図９】第１実施形態の学習結果の一例を示す図である。
【図１０】第１実施形態の学習結果の他の例を示す図である。
【図１１】第２実施形態による機械学習法の一例を示すフローチャートである。
【図１２】第２実施形態における行動選択に用いられる混合スコアの組を求める手法の一例を示す図である。
【図１３】第３実施形態による機械学習法の一例を示すフローチャートである。
【図１４】第３実施形態における行動選択に用いられる混合スコアの組を求める手法の一例を示す図である。
【図１５】第４実施形態における行動選択に用いられる行動価値関数の一例を示す図である。
【図１６】第５実施形態における行動選択に用いられるスコアの算出方法の一例を示す図である。
【図１７】第７実施形態における行動制御の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して、実施形態を説明する。以下の説明は、実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、以下に説明する構成要素の構造、形状、配置、材質等に限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各要素のサイズ、厚み、平面寸法又は形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、互いの寸法の関係や比率が異なる要素が含まれることもある。複数の図面において、対応する要素には同じ参照数字を付して重複する説明を省略する場合もある。いくつかの要素に複数の呼称を付す場合があるが、これら呼称の例はあくまで例示であり、これらの要素に他の呼称を付すことを否定するものではない。また、複数の呼称が付されていない要素についても、他の呼称を付すことを否定するものではない。なお、以下の説明において、「接続」は直接接続のみならず、他の要素を介して接続されることも意味する。
［第１実施形態］
本実施形態に係る機械学習方法は、前の補助変数及び現在の観測データを受け取る処理と、前の補助変数と現在の観測データとパラメータの値とに基づき現在の行動を選択する行動選択処理と、現在の行動を実行する処理と、次の観測データ及び報酬を受け取る処理と、現在の観測データと現在の行動と次の観測データと報酬に基づきパラメータの値を更新する処理とから構成される。
【００１０】
［装置構成］
図１は、第１実施形態による学習方法を実行するための学習装置３０の構成の一例を示すブロック図である。
【００１１】
学習装置３０は制御対象１０に電気的に接続される。学習装置３０と制御対象１０の電気的接続は、有線による接続でも良いし、無線による接続でも良い。制御対象１０が自動車、ロボット及びドローン等の移動体の場合は、学習装置３０と制御対象１０は無線により接続されることがある。
【００１２】
学習装置３０は、制御対象１０からの制御対象１０自体の状況及び制御対象１０の周囲環境の状況に関する種々の情報を受け取り、これらの情報を用いて制御対象の取るべき行動を選択し、制御対象１０に選択した行動を実行させる。学習装置３０は、制御対象１０が制御対象１０自体の状況及び制御対象１０の周囲環境の状況に応じた適切な行動を選択できるように学習を行う。適切な行動を選択したか否かを評価するために、学習装置３０は、行動を実行したことに対する報酬を受け取る。報酬は、行動が適切であったか否かを示す。学習装置３０は、行動を実行したことにより将来的に得られる報酬が高ければ、その状況においてその行動がより多く選択され、その報酬が低ければ、その状況においてその行動がより少なく選択されるように、制御対象１０の行動選択を学習する。例えば制御対象１０が自動車の場合、行動の選択肢の例は、「直進」、「右の車線へ車線変更」、「左の車線へ車線変更」等がある。自動車の前方に障害物等が存在する場合、「右／左の車線へ車線変更」という行動が選択され、制御対象がその行動を実行すると、自動車は「右／左の車線を走行」という動作を実現する。
【００１３】
学習装置３０は、ＣＰＵ等のプロセッサ３２、プロセッサ３２が実行するプログラムや種々のデータを記憶する不揮発性のストレージ装置３４、ストレージ装置３４から読み出したプログラムやデータ又は学習途中で生成された種々のデータを記憶するメインメモリ３６、制御対象１０へ駆動信号や制御信号を供給する送信部３８、制御対象１０からの観測データを受信する受信部４０、キーボード等の入力部４２及びＬＣＤ等の表示部４４を備える。学習装置３０はコンピュータとも称される。ストレージ装置３４が記憶するプログラムは強化学習のためのプログラムを含む。このプログラムはストレージ装置３４から読み出され、メインメモリ３６に展開される。
【００１４】
学習装置３０は、制御対象１０に直接接続され、１つの制御対象１０に関する学習を行う単独の装置として実現されても良いし、ネットワーク上に配置され、ネットワークを介して複数の制御対象１０に関する学習を行うように構成されても良い。
【００１５】
制御対象１０は、ＣＰＵ等のプロセッサ１２、プロセッサ１２が実行するプログラムや種々のデータを記憶する不揮発性のストレージ装置１４、ストレージ装置１４から読み出したプログラムやデータ又は学習途中で生成された種々のデータを記憶するメインメモリ１６、制御対象１０自体の状態と制御対象１０の周囲の環境の状態を検出するセンサ１８、制御対象１０の各可動部を駆動する駆動部２０、制御対象１０自体の状態と制御対象１０の周囲の環境の状態に関する観測データを学習装置３０に供給する送信部２２及び学習装置３０からの駆動信号や制御信号を受信する受信部２４を備える。センサ１８は、可動部に取り付けられ、可動部の状態を検出する回転センサや、加速度センサ、ジャイロセンサ、赤外線センサ、カメラ等の周囲の状況を検出するセンサ等を含む。
【００１６】
学習装置３０と制御対象１０は同期して動作するように構成しても良い。機械学習の行動選択周期は決まっており、行動選択周期毎に制御対象１０は学習装置３０へ観測データを送信しても良い。また、行動が実行され、次の行動を実行する前に、制御対象１０は学習装置３０へ観測データを送信しても良い。あるいは、送信部２２は常時あるいは非常に短い周期（行動選択周期より短い周期）で学習装置３０へ観測データを送信しても良い。
【００１７】
制御対象１０は自動車に限らず何でも良く、行動を実行すると動作を実現するどのような制御対象１０にも第１実施形態は適用可能である。また、制御対象１０は実機により構成されても良いし、実機ではなく実機と同じ動作をするシミュレータにより構成されても良い。
【００１８】
［強化学習］
図２は第１実施形態の学習方法の一例を示すフローチャートである。学習装置３０がオンされると、強化学習のためのプログラムがストレージ装置３４から読み出され、メインメモリ３６に展開される。このメインメモリ３６上の強化学習のためのプログラムが実行されると、図２に示す処理が実行される。強化学習法には、アクタークリティック法、ＳＡＲＳＡ法、Ｑ学習法等の種々の手法がある。実施形態はどの強化学習法にも適用可能であるが、一例としてアクタークリティック法における学習方法を説明する。
【００１９】
［前処理］
図２のフローチャートにおけるステップＳ１０２からステップＳ１２４に至る処理は行動選択のタイミング毎に周期的に実行される。行動選択タイミングになると、プロセッサ３２は、ステップＳ１０２で、制御対象１０から送信され受信部４０で受信した観測データを現在の観測データＯｔ０として取り込むとともに、メインメモリ３６に現在の観測データＯｔ０を書き込む。ｔ０は現在の行動選択タイミングを示す。観測データは、センサ１８により検出された値、例えば制御対象１０の位置と姿勢を示す値、制御対象１０の周辺に存在する物体の位置と大きさ等の属性情報を含む。さらに、観測データはセンサ１８が直接検出しない値、例えば制御対象１０周辺の様々な位置における物体の有無や存在確率等のプロセッサ１２が計算する値を含んでも良い。観測データは制御対象１０が過去に実行した行動の履歴を含んでいて良い。
【００２０】
制御対象１０として実機を用いても良いし、シミュレータを用いても良いと説明したが、周囲の環境も実際の環境に限らずシミュレータ上の環境でも良い。
【００２１】
プロセッサ３２は、ステップＳ１０４で、前の補助変数の値Ｘｔ０−１をメインメモリ３６から読み出す。ｔ０−１は現在の行動選択タイミングｔ０の１つ前の行動選択タイミングを示す。補助変数は行動選択処理において用いられる変数である。前の補助変数は１つ前の行動選択タイミングの行動選択において用いられた補助変数である。
【００２２】
［行動選択処理］
次に、行動選択処理が実行される。  
第１実施形態に係る行動選択処理は、  
(i)現在の観測データ及びパラメータの値に基づき、現在の行動の選択に係る現在のスコアの組を算出する処理と、  
(ii)現在の行動の選択に係る現在の補助変数を算出する処理と、  
(iii)現在のスコアの組と現在の補助変数に基づき現在の行動を選択する処理を含む。
【００２３】
現在の行動の選択に係る補助変数の値を算出する処理(ii)において、前の行動の選択に係る前の補助変数の値が現在の行動の選択に係る補助変数の値とされる。これにより、前の行動が現在の行動として選択される度合いが大きくされる。
【００２４】
具体的には、プロセッサ３２は、ステップＳ１０６で、現在の観測データＯｔ０と方策関数のパラメータΘの値に基づき、制御対象１０で実行され得る行動ａａ、ａｂ、ａｃ、…それぞれに対する現在のスコアの組｛π（ａａ）、π（ａｂ）、π（ａｃ）、…｝を算出する。スコアπ（ａａ）、π（ａｂ）、π（ａｃ）、…は行動ａａ、ａｂ、ａｃ、…が選択される度合いを示す。
【００２５】
方策関数は観測データを入力してスコアを出力する関数である。方策関数の一例は図３に示すニューラルネットワークである。説明の便宜上、図３は現在の観測データに含まれる値ｏ１、ｏ２、ｏ３、ｏ４及び３種類の行動ａａ、ａｂ、ａｃに関するスコアπ（ａａ）、π（ａｂ）、π（ａｃ）を示すが、観測データに含まれる値の数及び行動の種類数はこれらの数に限定されない。パラメータΘは、方策関数の入出力特性を変化させる変数Θ（２）、Θ（３）、Θ（４）の他、方策関数の入出力特性を変化させる図示されない変数を含む、方策関数の入出力特性を変化させる変数の組である。方策関数を実現する手法としてニューラルネットワークを用いる場合は、パラメータΘはニューラルネットワークの重み（Θ（２）、Θ（３）、Θ（４））等を含む。方策関数の実現手法として、畳み込みニューラルネットワーク、リカレントニューラルネットワーク及びソフトマックス関数等を組み合わせて用いても良い。さらに、入出力の正規化や入出力特性へのランダム性の付加等が組み合わされた方策関数を用いても良い。方策関数のパラメータΘの値はメインメモリ３６に記憶される。
【００２６】
プロセッサ３２は、ステップＳ１０８で、現在の行動選択に係る現在の補助変数の値Ｘｔ０を決定するとともに、決定した現在の補助変数の値Ｘｔ０をメインメモリ３６に書き込む。ステップＳ１０８の詳細は図４に示される。プロセッサ３２は、ステップＳ４０２で、時間変数の値ｔ´を１だけ増加する。プロセッサ３２は、ステップＳ４０４で、時間変数の値ｔ´が所定期間Ｔより短いか否かを判定する。所定期間Ｔは前の行動が現在の行動として選択される度合いを大きくする期間であり、ここでは、所定期間Ｔの値は行動選択の周期で正規化されているものとする。時間変数の値ｔ´が所定期間Ｔより短い場合、プロセッサ３２は、ステップＳ４０６で、前回の行動選択に係る前回の補助変数の値Ｘｔ０−１を現在の行動選択に係る現在の補助変数の値Ｘｔ０とする。
【００２７】
時間変数の値ｔ´が所定期間Ｔより短くない場合、プロセッサ３２は、ステップＳ４０８で、区間（０，１）の一様分布などから新たな補助変数の値Ｘｎをランダムに生成し、ステップＳ４１２で生成した値Ｘｎを現在の行動選択に係る現在の補助変数の値Ｘｔ０とする。プロセッサ３２は、ステップＳ４１４で、時間変数の値ｔ´をリセットする（ｔ´＝０）。
【００２８】
図４に示すような処理を行うことにより、補助変数の値Ｘｔ０は所定期間Ｔ、前回の行動選択に係る前回の補助変数の値Ｘｔ０−１に維持される。
【００２９】
図２の説明に戻り、プロセッサ３２は、ステップＳ１１２で、現在の行動に対するスコアの組｛π（ａａ）、π（ａｂ）、π（ａｃ）、…｝及び現在の補助変数の値Ｘｔ０に基づき、逆関数法により行動ａａ、ａｂ、ａｃ、…の中から現在の行動ａｔ０を選択するとともに、選択された行動を示す行動情報Ａｔ０をメインメモリ３６に書き込む。具体的には、プロセッサ３２は、ステップＳ１１２で、行動のインデックスｊが式１を満たす行動ａｊを現在の行動ａｔ０として選択する。なお、式１において行動のインデックスの順序はａ、ｂ、…であり、大小関係はａ＜ｂ＜…であり、行動の総数をＫとする。
【数１】
2020204803.tif 000003
つまり、プロセッサ３２は、ステップＳ１１２で、インデックスａの行動のスコアからインデックスｊ´の行動のスコアまでを順に足し合わせた和がＸｔ０以上であるインデックスｊ´のうちの最小のインデックスであるインデックスｊの行動ａｊを現在の行動ａｔ０として選択する。各行動に対するスコアは各行動に対するスコアの和が１となるように正規化されているとするが、正規化は必須ではない。
【００３０】
図５は行動の総数Ｋが３である場合のステップＳ１１２における現在の行動選択処理の一例を示す。図５はＸｔ０≦π（ａａ）の場合の例である。この場合、現在の行動ａｔ０として行動ａａが選択される。同様に、π（ａａ）＜Ｘｔ０≦π（ａａ）＋π（ａｂ）の場合、現在の行動ａｔ０として行動ａｂが選択され、π（ａａ）＋π（ａｂ）＜Ｘｔ０≦π（ａａ）＋π（ａｂ）＋π（ａｃ）（＝１）の場合、現在の行動ａｔ０として行動ａｃが選択される。
【００３１】
このような行動選択方法によれば、補助変数の値Ｘｔ０の生成確率に偏りが無い場合（Ｘｔ０の生成確率が区間（０，１）の一様分布に従う場合等）には、より大きいスコアの行動が現在の行動ａｔ０としてより選択されやすくなる。
【００３２】
第１実施形態に係る機械学習法では、現在の観測データＯｔ０及び方策関数のパラメータΘの値に基づき算出された現在の行動に対するスコアの組｛π（ａａ）、π（ａｂ）、π（ａｃ）、…｝に直接に従って現在の行動ａｔ０が選択される。後述する第２、第３実施形態では、現在の行動に対するスコアの組から演算された現在の行動に対する混合スコアの組に直接に従って、すなわち現在の行動に対するスコアの組｛π（ａａ）、π（ａｂ）、π（ａｃ）、…｝には間接的に従って現在の行動ａｔ０が選択される。
【００３３】
ステップＳ１１２における現在の行動選択処理が複数回実行された場合の一例を図６を参照して説明する。時刻ｔ＝ｔ０での行動選択処理において、Ｘｔ≦πｔ（ａａ）であるので、行動ａａが選択される。時刻ｔ＝ｔ０＋１での行動選択処理において、前の行動選択処理に係る前の補助変数の値Ｘｔ−１を現在の行動選択に係る補助変数の値Ｘｔとすると、Ｘｔ≦πｔ（ａａ）であるので、時刻ｔ＝ｔ０で選択された行動と同じ行動ａａが時刻ｔ＝ｔ０＋１でも選択される。すなわち、ｔ＝ｔ０で選択した行動ａａがｔ＝ｔ０＋１の行動としても選択される。以降同様に、前の行動選択処理に係る前の補助変数の値Ｘｔ−１を現在の行動選択に係る補助変数の値Ｘｔとすることにより、前の行動選択時に選択された行動ａｔ−１が現在の行動ａｔとして選択される度合いが大きくなる。
【００３４】
このように、第１実施形態の行動選択処理では、前の行動の選択に係る前の補助変数の値Ｘｔ−１を現在の補助変数の値Ｘｔとすることにより、前の行動選択時に選択された行動ａｔ−１が現在の行動ａｔとして選択される度合いが大きくなる。
【００３５】
また、第１実施形態の行動選択処理では補助変数の値Ｘｔは所定期間Ｔ、一定に維持されるので、この所定期間Ｔは前の行動ａｔ−１が現在の行動ａｔとして選択される度合いが大きくなる。前の行動ａｔ−１が現在の行動ａｔとして選択される度合いを大きくする期間は、図４に示すように、学習期間中一定（所定期間Ｔ）としても良いが、学習期間中にランダムに変化させても良いし、学習期間中に徐々に短くしても良い。また、所定期間Ｔを、選択された行動に対応する行動を制御対象１０が実行し始めてから制御対象１０が行動に対応する動作を実現するまでに要する時間、すなわち選択された行動に対する制御対象の応答時間と概ね一致させても良い。
【００３６】
［行動実行処理］
図２の説明に戻り、プロセッサ３２は、ステップＳ１１４で、選択された現在の行動ａｔ０を制御対象１０に実行させる。例えば、プロセッサ３２は、選択された行動ａｔ０に対応する行動を実行させるような駆動信号及び／又は制御信号を送信部３８から制御対象１０の受信部２４に送信する。制御対象１０の駆動部２０はこの駆動信号及び／又は制御信号に応じて制御対象１０の各可動部を駆動及び／又は制御する。これにより、制御対象１０の行動は駆動部２０により制御され、制御対象１０は、選択された行動ａｔ０を実行する。ステップＳ１１４は行動選択のタイミング毎に実行されるので、ステップＳ１０２からステップＳ１２４に至る処理は制御対象の制御周期毎に実行されることとなる。制御対象１０の行動実行は駆動部２０による場合に限らず、制御対象１０の可動部を学習装置３０のユーザが自ら操作することにより、制御対象１０に行動を実行させる場合もある。この場合、ユーザが学習装置３０からの駆動信号及び／又は制御信号の内容を示す指示情報に応じて制御対象１０を操作しても良い。
【００３７】
［学習処理］
プロセッサ３２は、ステップＳ１１６で、制御対象１０から送信され受信部４０で受信した観測データを次の観測データＯｔ０＋１として取り込むとともに、メインメモリ３６に次の観測データＯｔ０＋１を書き込む。次の観測データＯｔ０＋１は、制御対象１０がステップ１１２において選択された行動ａｔ０に対応する行動を実行した後の制御対象１０の状態及びそれを取り巻く環境の状態を表す。次の観測データＯｔ０＋１に対応する制御対象１０の状態及びそれを取り巻く環境の状態は、次の行動選択のタイミングｔ０＋１における現在の観測データに対応する制御対象１０の状態及びそれを取り巻く環境の状態であっても良い。すなわち、現在の観測データＯｔ０を時刻ｔ０の制御対象の状態とそれを取り巻く環境の状態を表す値の組とすると、次の観測データＯｔ０＋１は時刻ｔ＝ｔ０＋１の制御対象の状態及びそれを取り巻く環境との状態を表す値の組であってもよい。また、この場合、次の行動選択のタイミングｔ０＋１におけるステップＳ１０２は、現在の行動選択のタイミングにおけるステップＳ１１６に代えることができる。
【００３８】
プロセッサ３２は、ステップＳ１１８で、制御対象１０がステップＳ１１２で選択された行動に対応する行動を実行したことにより得られる報酬ｒｔ０を受け取る。報酬の値は、制御対象１０やそれを取り巻く環境から与えられる値でも良いし、行動やその結果の動作の善し悪しに従い、学習装置３０のユーザが入力する値でもよい。報酬は、現在の観測データに対応する時刻と次の観測データに対応する時刻との間の期間に得た報酬であることが望ましい。
【００３９】
プロセッサ３２は、ステップＳ１２２で、方策関数のパラメータΘを更新するとともに、更新したパラメータΘをメインメモリ３６に書き込む。プロセッサ３２は、次の観測データＯｔ０＋１と状態価値関数のパラメータΘＶの値から次の観測データに対応する時刻における「特定の行動に依らず現在（次の観測データに対応する時刻）から将来にわたって得られる報酬の推定値Ｖｔ０＋１」を算出し、報酬の推定値Ｖｔ０＋１と報酬ｒｔ０から「選択された現在の行動ａｔ０の実行に起因して現在から将来にわたって得られる報酬の推定値Ｒ」を算出し、現在の観測データＯｔ０と状態価値関数のパラメータΘＶの値から「特定の行動に依らず現在から将来にわたって得られる報酬の推定値Ｖｔ０」を算出し、報酬の推定値Ｒ、Ｖｔ０と行動ａｔ０から方策関数のパラメータΘの値を式２に示すように更新する。更新されたパラメータΘの値はメインメモリ３６内の更新前のパラメータΘの値に上書きされても良いし、更新前のパラメータΘの値とは別に更新の履歴としてメインメモリ３６に記憶されても良い。
【００４０】
Θ＝Θ＋η・∇Θｌｏｇπ（ａｔ０）・（Ｒ−Ｖｔ０）            式２  
ここで、∇Θｌｏｇπ（ａｔ０）は、時刻ｔ０での行動ａｔ０に対するスコアの対数値のパラメータΘによる勾配であり、ηは学習率である。推定値Ｒは特定の行動、例えば「左車線へ車線変更」によって現在から将来にわたって得られる報酬の推定値であり、推定値Ｖｔ０は特定の行動に依らず現在から将来にわたって得られる報酬の平均値を意味する。
【００４１】
勾配∇Θｌｏｇπ（ａｔ０）は、行動ａｔ０に対するスコアが大きくなるような、パラメータΘの更新方向に対応する。そのため、式２に示すように方策関数のパラメータΘの値を更新することにより、行動ａｔ０の実行に起因する報酬の推定値Ｒが報酬の推定値Ｖｔ０よりも大きい場合、行動ａｔ０に対するスコアが大きくなるようにパラメータΘが更新される。逆に、行動ａｔ０の実行に起因して現在から将来にわたって得られる報酬の推定値Ｒが現在から将来にわたって得られる報酬の推定値Ｖｔ０よりも小さい場合には、行動ａｔ０に対するスコアが小さくなるようにパラメータΘが更新される。
【００４２】
パラメータΘが更新され、例えば「左車線へ車線変更」の行動に起因する報酬が平均報酬より高くなると、「左車線へ車線変更」の行動に対するスコアが高くなる。スコアが高い行動は選択されやすい。
【００４３】
プロセッサ３２は、現在の観測データＯｔ０及び方策関数のパラメータΘの値に基づき行動に対するスコアを算出した処理と同様の処理により、現在の観測データＯｔ０及び状態価値関数のパラメータΘＶの値に基づき現在から将来にわたって得られる報酬の推定値Ｖｔ０を算出することができる。状態価値関数は、方策関数と同様に、例えばニューラルネットワークを用いることができる。
【００４４】
プロセッサ３２は、報酬ｒｔ０及び次の状態から将来にわたって得られる報酬の推定値Ｖｔ０＋１に基づき、選択された行動の実行に起因して現在から将来にわたって得られる報酬の推定値Ｒを式３に示すように算出することができる。式３の係数γは割引率ともと呼ばれる。
【００４５】
Ｒ＝ｒｔ０＋γ・Ｖｔ０＋１              式３  
プロセッサ３２は、現在から将来にわたって得られる報酬の推定値Ｖｔ０と同様に、次の観測データＯｔ０＋１及び状態価値関数のパラメータΘＶの値に基づき、次の状態から将来にわたって得られる報酬の推定値Ｖｔ０＋１を算出することができる。
【００４６】
なお、プロセッサ３２は、状態価値関数のパラメータΘＶの値も式４に示すように更新する。係数ηＶは学習率とも呼ばれる。
【００４７】
ΘＶ＝ΘＶ−ηＶ・∇ΘＶ（Ｒ−Ｖｔ０）２          式４  
プロセッサ３２は、ステップＳ１２４で、学習を終了するか否か判定する。この判定は、学習回数又は学習時間に基づいて行っても良いし、行動実施の結果の動作が所望の動作になっているかに応じてユーザが入力する学習終了指示又は学習継続指示に基づいて行っても良い。学習を終了しないと判定した場合、プロセッサ３２は、ステップＳ１０２の処理を再度実行する。学習を終了すると判定した場合、フローチャートは終了する。
【００４８】
［学習結果の適用］
学習結果は、方策関数のパラメータΘの値としてメインメモリ３６に記憶されている。学習後の方策関数のパラメータΘの値がメインメモリ３６から読み出され、読み出されたパラメータΘの値が学習装置３０から制御対象１０に送信される。制御対象１０はこの方策関数のパラメータΘの値を用いて行動を実行することにより、所望の動作を実現することができる。
【００４９】
学習結果が適用される制御対象１０は、学習装置３０の一部の処理だけを行えば良い。例えば、現在の観測データと前の補助変数の値を受け取り（ステップＳ１０２、Ｓ１０４相当）、これらに基づいて方策関数によりスコアを求め（ステップＳ１０６相当）、スコアに応じて現在の行動を選択し（ステップＳ１１２相当）、選択された現在の行動を実行すれば良い（ステップＳ１１４相当）。学習結果を利用する制御対象１０は、学習装置３０とは異なり、学習に関する報酬計算処理及びパラメータ更新処理（ステップＳ１１８、Ｓ１２２相当）は不要である。
【００５０】
さらに、学習結果を利用する制御対象１０は、行動選択処理において前の行動が現在の行動として選択される度合いを大きくしなくても良い。選択される度合いを大きくすることは、前の行動に対するスコアを大きくすることと、補助関数の値として前の補助関数の値と同じ値を使うことを含む。前の行動が現在の行動として選択される度合いを大きくしないこととは、例えば第１実施形態に係る行動選択処理で所定期間Ｔを１より小さい値とすることと等価である。
【００５１】
また、学習結果を利用する制御対象１０は、行動選択処理において各行動の中で行動に対するスコアが最も大きい行動を現在の行動として選択しても良い。
【００５２】
［第１実施形態の効果］
第１実施形態の効果を説明する。比較例１として、現在の観測データを受け取り、現在の観測データに基づき現在の行動を選択し、選択した行動を制御対象１０に実行させ、報酬及び次の観測データを受け取り、報酬及び次の観測データに基づきパラメータの値を更新する強化学習法を想定する。比較例１では、前の行動選択においてどの行動が選択されたかに関わらず、現在の観測データに基づき現在の行動が選択されるため、行動選択の周期に対して制御対象の応答時間が長い場合には、選択された行動に対応した動作を生じさせることが困難となり、学習が困難となる。
【００５３】
比較例１の学習の一例を図７に示す。制御対象は、複数の車線からなる道路を走行中の自動車とし、自動操縦のための学習が行われるとする。ここで、自動車の応答時間は、行動選択周期の複数周期分である。
【００５４】
図７の例では、ｔ＝ｔ０で「左車線へ車線変更」行動ａＬが選択・実行され、ｔ＝ｔ０＋１で「右車線へ車線変更」行動ａＲが選択・実行され、ｔ＝ｔ０＋２で「直進」行動ａＳが選択・実行され、ｔ＝ｔ０＋３で「左車線へ車線変更」行動ａＬが選択・実行される。このように各行動選択周期において選択される行動に一貫性が無いため、「左車線へ車線変更」、「右車線へ車線変更」といった行動の選択に対応した動作が実現されない。強化学習法では、各時点での制御対象とそれを取り巻く環境の状態において選択された行動とそれに起因して得られた報酬との因果関係に基づき、各時点での状態に対する適切な行動を学習するため、このように選択された行動に対応する動作が十分に実現されず、行動と報酬との因果関係が曖昧になる場合には、学習が適切になされない。特に、学習の初期段階などの行動の探索を積極的に行う際には、複数の行動に対するスコアが均等な状態に近いため、こういった問題が起きやすい。
【００５５】
他の比較例２として、現在の観測データを受け取り、現在の観測データに基づき現在の行動を選択し、選択した行動を複数回数繰り返し実行させ、報酬及び次の観測データを受け取り、報酬及び次の観測データに基づきパラメータの値を更新する強化学習法を想定する。比較例２では、行動選択の周期を制御対象の応答時間と同程度とし、応答時間に相当する期間に現在の行動を複数回数繰り返し実行させれば、選択された行動に対応した動作を生じさせることが可能である。しかし、この場合、一度行動の選択を行った後、制御対象の応答時間に相当する期間は行動の選択を行わないので、応答時間に相当する期間より短い期間に発生する環境の変化に対応することができない。
【００５６】
図８は比較例２の学習結果の一例を示す。ただし、比較例２では時間は行動実行の周期、つまり制御周期で正規化されているものとする。図８は、行動選択の周期を自動車の車線変更の行動を選択してから自動車の車線変更の動作が完了するまでの期間に相当する期間（＝４）とし、行動の繰り返し実行数をその期間に相当する回数（＝４）とした場合の例を示す。行動選択の時点（ｔ＝ｔ０）では道路上には障害物が無いので、ｔ＝ｔ０において「左車線へ車線変更」の行動ａＬを選択しても問題は無い。しかし、この行動選択をした後、次の行動選択の周期（ｔ＝ｔ０＋４）となるまでの間に、道路上に障害物が現れた場合には、その間は行動の選択を行わないので、その障害物の出現には対応することができない。
【００５７】
このように、比較例２では制御対象の応答時間より短い期間に発生する環境の変化などに迅速に対応することができない。すなわち、比較例２では制御対象の応答時間より短い期間に発生する環境の変化などに迅速に対応可能な行動選択の学習はできない。また、比較例２では、現在の行動を繰り返し実行している間は、行動の選択および次の観測データおよび報酬に基づくパラメータの値の更新を行わないので、パラメータの値の更新の効率が悪く、学習が遅い。
【００５８】
これらの比較例１、２に対して、第１実施形態の機械学習法によれば、応答時間の長い制御対象に対しても、環境の変化に迅速に対応可能な行動選択の学習が可能となる。第１実施形態の学習の一例を図９に示す。第１実施形態では、行動選択処理において前の行動を現在の行動として選択する度合いが大きいため、学習の初期段階など、行動の探索を積極的に行う際の、複数の行動に対するスコアが均等な状態に近い場合であっても、図９に示すように、各行動選択において選択される行動（「左車線へ車線変更」ａＬ）に一貫性が現れ易い。そのため、たとえ制御対象の応答時間に対して行動選択の周期が短い場合であっても、選択された行動に対応した動作を実現させることが容易となる。従って、制御対象の応答時間に対して行動選択の周期が短い場合であっても、選択された行動とそれに起因して得られた報酬との因果関係が明確となる。そのため、方策関数等のパラメータの値の更新が適切になされることとなり、各時点での制御対象とそれを取り巻く環境の状態に対する適切な行動および行動選択の学習が可能となる。例えば、ある行動の実行に起因して現在から将来にわたって得られる報酬が比較的大きい場合には、方策関数等のパラメータの値の更新の作用により、その行動に対するスコアが比較的大きくなるように学習がなされる。逆に、ある行動の実行に起因して現在から将来にわたって得られる報酬が比較的小さい場合には、方策関数等のパラメータの値の更新の作用により、その行動に対するスコアが比較的小さくなるように学習がなされる。このように学習により、行動に対するスコアが増減する。
【００５９】
第１実施形態の機械学習法によれば、制御対象の応答時間に対して行動選択の周期が短い場合であってもこのような学習が可能となる。したがって、図１０に示すように、ｔ＝ｔ０において「左車線へ車線変更」ａＬの行動を選択した後、ｔ＝ｔ０＋１において道路上に障害物が現れた場合であっても、ｔ＝ｔ０＋１において制御対象とそれを取り巻く環境の状態に対する適切な行動ａＳを選択することが可能となる。なぜならば、第１実施形態の機械学習法では、上述したように、制御対象の応答時間に対して行動選択の周期が短い場合であっても、前方にある障害物を回避するという適切な行動が学習可能であり、ゆえに、ｔ＝ｔ０＋１においてそのような行動を選択することが可能となるからである。このように、第１実施形態の機械学習法によれば、制御対象の応答時間に対して行動選択の周期が短い場合であっても適切な行動の学習が可能であるため、制御対象の応答時間より短い期間に発生する環境の変化などに対しても迅速に対応可能な行動選択の学習が可能となる。
【００６０】
比較例２の変形として比較例３を想定する。比較例３では、現在の観測データを受け取り、現在の観測データに基づき現在の行動とその繰り返し回数と選択し、選択した行動を選択した繰り返し回数繰り返し実行させ、報酬及び次の観測データを受け取り、報酬及び次の観測データに基づきパラメータの値を更新する。比較例３においても、比較例２と同様、現在の行動を繰り返し実行している間は、行動の選択および次の観測結果および報酬に基づくパラメータの値の更新を行わないので、パラメータの値の更新の効率が悪く、学習が遅くなる。
【００６１】
これに対して、第１実施形態の機械学習法では、行動選択の周期毎に行動の選択および次の観測結果および報酬に基づくパラメータの値の更新を行うので、比較例２、３と比較して、パラメータの値の更新の効率が良く、学習がより効率良く行える。
【００６２】
以上説明したように、第１実施形態による機械学習法は、
(i)現在の観測データＯｔ０及び前の補助変数の値Ｘｔ０−１を受け取る処理と、  
(ii)前の補助変数の値Ｘｔ０−１と現在の観測データＯｔ０とパラメータΘの値とに基づき現在の行動を選択する行動選択処理と、  
(iii)現在の行動を制御対象１０に実行させる処理と、  
(iv)次の観測データＯｔ０＋１及び報酬ｒｔ０を受け取る処理と、  
(v)現在の観測データＯｔ０と現在の行動に関する行動情報Ａｔ０と次の観測データＯｔ０＋１と報酬ｒｔ０に基づきパラメータΘの値を更新する処理を行動選択の周期毎に実施する。制御対象１０の例は、自動車、ロボット及びドローン等の移動体やロボットアーム等の可動体等がある。これにより、制御対象及びそれを取り巻く環境の状態に応じて適切な行動を実行させる、ないしは行動を選択させることに関する学習を行うことができる。そのため、応答時間の長い制御対象１０に対しても、環境の変化に迅速に対応可能な行動実行及び行動選択のための学習が可能となる。
［第２実施形態］
第１実施形態による学習方法は、現在の観測データＯｔ０及び前の補助変数の値Ｘｔ０−１を受け取り、前の補助変数の値Ｘｔ０−１と現在の観測データＯｔ０とパラメータΘの値とに基づき現在の行動を選択する。この行動選択の変形例に関する第２実施形態を説明する。第２実施形態による学習方法は、現在の観測データ及び前の行動を示す行動情報を受け取り、現在のスコアの組と前の行動を示す行動情報に基づき混合スコアの組を求め、混合スコアの組と現在の補助変数の値に基づき現在の行動を選択する。
【００６３】
第２実施形態の学習装置と制御対象の構成は図１に示した第１実施形態の構成と同じであるので、その説明は省略する。
【００６４】
本実施形態に係る機械学習方法は、
前の行動及び現在の観測データを受け取る処理と、
前の行動と現在の観測データとパラメータの値とに基づき現在の行動を選択する行動選択処理と、
現在の行動を実行する処理と、
次の観測データ及び報酬を受け取る処理と、
現在の観測データと現在の行動と次の観測データと報酬とに基づきパラメータの値を更新する処理とから構成される。
【００６５】
図１１は第２実施形態の学習方法の一例を示すフローチャートである。図２に示した第１実施形態のフローチャートと同じステップは同じ参照数字を付して詳細な説明は省略する。図１１のフローチャートも行動選択のタイミング毎に周期的に実行される。
【００６６】
［前処理］
第２実施形態の前処理は、第１実施形態の前処理と同じである。プロセッサ３２は、ステップＳ１０２で、現在の観測データＯｔ０を取り込み、メインメモリ３６に書き込んだ後、ステップＳ２０２で、前の行動選択処理において選択された前の行動ａｔ０−１を示す行動情報Ａｔ０−１をメインメモリ３６から読み出す。
【００６７】
［行動選択処理］
次に、行動選択処理が実行される。第２実施形態に係る行動選択処理は、前の行動と現在の観測データとパラメータの値とに基づき現在の行動を選択する。第２実施形態に係る行動選択処理は、
(i)現在の観測データとパラメータの値とに基づいて現在の行動の選択に係る現在のスコアの組を算出する処理と、  
(ii)現在のスコアの組と前の行動とから混合スコアの組を算出する処理と、  
(iii)現在の行動の選択に係る現在の補助変数を算出する処理と、  
(iv)混合スコアの組と現在の補助変数とに基づき現在の行動を選択する処理を含む。現在のスコアの組と前の行動とから混合スコアの組を算出する処理(ii)において、現在のスコアの組に、前の行動のスコアが他の行動のスコアより大きくされたスコアの組が混合され、混合スコアの組に基づいて行動が選択されることにより、前の行動が現在の行動として選択される度合いが大きくなる。
【００６８】
具体的には、プロセッサ３２は、ステップＳ１０６で、現在の観測データＯｔ０と方策関数のパラメータΘの値に基づき、制御対象１０で実行され得る行動ａａ、ａｂ、ａｃ、…それぞれに対する現在のスコアの組｛πｔ０（ａａ）、πｔ０（ａｂ）、πｔ０（ａｃ）、…｝を算出する。
【００６９】
プロセッサ３２は、ステップＳ２０４で、現在のスコアの組｛πｔ０（ａａ）、πｔ０（ａｂ）、πｔ０（ａｃ）、…｝と前の行動情報Ａｔ０−１に基づき、各行動ａａ、ａｂ、ａｃ、…に対する混合スコアの組｛πｔ０´（ａａ）、πｔ０´（ａｂ）、πｔ０´（ａｃ）、…｝を算出する。
【００７０】
図１２は混合スコアの算出の一例を示す。プロセッサ３２は、前の行動情報Ａｔ０−１に基づき、実行された前の行動に対するスコアを実行されなかった他の行動に対するスコアより大きくしたスコアの組｛πｔ０−１（ａａ）、πｔ０−１（ａｂ）、πｔ０−１（ａｃ）、…｝（図１２の例では、前の行動がａａであり、実行された行動に対するスコアをπｔ０−１（ａａ）＝１とし、実行されなかった他の行動ａｂ、ａｃ、…に対するスコアをπｔ０−１（ａｂ）＝πｔ０−１（ａｃ）＝…＝０とする）を作成する。図１２の例では、前の行動に対するスコアを１とし、他の行動に対するスコアを０としたが、前の行動に対するスコアが他の行動に対するスコアより大きければ良く、前の行動に対するスコアは１より小さい値や０より大きい値でも良い。
【００７１】
プロセッサ３２は、現在のスコアの組｛πｔ０（ａａ）、πｔ０（ａｂ）、πｔ０（ａｃ）、…｝と、前の行動に対するスコアを他の行動に対するスコアより大きくしたスコアの組｛πｔ０−１（ａａ）、πｔ０−１（ａｂ）、πｔ０−１（ａｃ）、…｝とを、混合率αを用いて混合し、混合スコアの組｛πｔ０´（ａａ）、πｔ０´（ａｂ）、πｔ０´（ａｃ）、…｝を算出する。
【００７２】
混合スコアの組は、混合スコアの組の中の各行動ａａ、ａｂ、ａｃ、…のスコアを式５、式６、式７、…のように算出することにより、算出される。
【００７３】
πｔ０´（ａａ）＝α・πｔ０−１（ａａ）＋（１−α）・πｔ０（ａａ）    式５  
πｔ０´（ａｂ）＝α・πｔ０−１（ａｂ）＋（１−α）・πｔ０（ａｂ）    式６  
πｔ０´（ａｃ）＝α・πｔ０−１（ａｃ）＋（１−α）・πｔ０（ａｃ）    式７  
…
ここで、πｔ０（ａａ）、πｔ０（ａｂ）、πｔ０（ａｃ）は行動ａａ、ａｂ、ａｃの現在のスコアを示し、πｔ０−１（ａａ）、πｔ０−１（ａｂ）、πｔ０−１（ａｃ）は前の行動に対するスコアを他の行動に対するスコアより大きくしたスコアの組の中の行動ａａ、ａｂ、ａｃの現在のスコアを示し、πｔ０´（ａａ）、πｔ０´（ａｂ）、πｔ０´（ａｃ）は算出される混合スコアの組の中の行動ａａ、ａｂ、ａｃのスコアを示す。
【００７４】
混合率αは、学習期間中一定としても良いし、学習期間中にランダム変化させる、学習期間中に徐々に小さくしていくなどしても良い。
【００７５】
プロセッサ３２は、ステップＳ１０８で、現在の行動選択に係る現在の補助変数の値Ｘｔ０を決定するとともに、メインメモリ３６に現在の補助変数の値Ｘｔ０を書き込む。
【００７６】
プロセッサ３２は、ステップＳ２０６で、混合スコアの組｛πｔ０´（ａａ）、πｔ０´（ａｂ）、πｔ０´（ａｃ）、…｝と現在の補助変数の値Ｘｔ０に基づき、現在の行動ａｔ０を選択するとともに、選択した行動ａｔ０を示す行動情報Ａｔ０をメインメモリ３６に書き込む。
【００７７】
このように第２実施形態に係る行動選択処理では、第１実施形態における現在のスコアの組と現在の補助変数に基づき現在の行動を選択する処理と同様の処理において、現在のスコアの組の代わりに混合スコアの組を用いて現在の行動が選択される。
【００７８】
［行動実行処理と学習処理］
第２実施形態の行動実行処理と学習処理は、第１実施形態の行動実行処理と学習処理と同じである。プロセッサ３２は、ステップＳ１１４で、制御対象１０に選択した行動を実行させる。プロセッサ３２は、ステップＳ１１６、Ｓ１１８、Ｓ１２２で学習処理を実行する。
【００７９】
［効果］
このように、第２実施形態の行動選択処理では、現在のスコアの組に、前の行動に対するスコアが他の行動に対するスコアより大きくされたスコアの組が混合され混合スコアが算出され、その混合スコアと現在の補助変数とに基づき現在の行動が選択されることにより、前の行動が現在の行動として選択される度合いが大きくなる。前の行動を現在の行動として選択する度合いを大きくしない場合は、混合スコアの組の値を現在のスコアの組の値と同じにすれば良い。
【００８０】
前の行動が現在の行動として選択される度合いが大きくなる期間は、学習期間中一定としても良いが、学習期間中にランダム変化させる、学習期間中に徐々に短くしていくなどしても良い。また、この期間を、選択された行動を実行し始めてから選択された行動に対応する制御対象の動作が実現されるまでに要する時間、すなわち、選択された行動に対する制御対象の応答時間と概ね一致させても良い。
［第３実施形態］
第２実施形態では、現在のスコアの組と、前の行動に対するスコアが他の行動に対するスコアより大きくされたスコアの組とが混合され、混合スコアの組が算出される例を述べた。第２実施形態の変形例としての第３実施形態を説明する。混合スコアを算出する際、前のスコアの組において、前の行動に対するスコアが十分に大きい場合には、前の行動に対するスコアが他の行動に対するスコアより大きくされたスコアの組に代えて前のスコアの組を用いても良い。すなわち、前のスコアの組において、前の行動に対するスコアが十分に大きい場合には、現在のスコアの組と前のスコアの組とを混合して混合スコアの組を算出しても良い。第３実施形態は第２実施形態の混合スコアの算出の変形例である。
【００８１】
第３実施形態の学習装置と制御対象の構成は図１に示した第１実施形態の構成と同じであるので、その説明は省略する。
【００８２】
図１３は第３実施形態の学習方法の一例を示すフローチャートである。図２に示した第１実施形態のフローチャートと同じステップは同じ参照数字を付して詳細な説明は省略する。図１３のフローチャートも行動選択のタイミング毎に周期的に実行される。
【００８３】
［前処理］
プロセッサ３２は、ステップＳ１０２で、現在の観測データＯｔ０を取り込み、メインメモリ３６に書き込んだ後、ステップＳ３０２で、前のスコアの組｛πｔ０−１（ａａ）、πｔ０−１（ａｂ）、πｔ０−１（ａｃ）、…｝をメインメモリ３６から読み出す。
【００８４】
［行動選択処理］
プロセッサ３２は、ステップＳ１０６で、現在の観測データＯｔ０と方策関数のパラメータΘの値に基づき、制御対象１０で実行され得る行動ａａ、ａｂ、ａｃ、…それぞれに対する現在のスコアの組｛πｔ０（ａａ）、πｔ０（ａｂ）、πｔ０（ａｃ）、…｝を算出する。
【００８５】
プロセッサ３２は、ステップＳ３０４で、現在のスコアの組｛πｔ０（ａａ）、πｔ０（ａｂ）、πｔ０（ａｃ）、…｝と前のスコアの組｛πｔ０−１（ａａ）、πｔ０−１（ａｂ）、πｔ０−１（ａｃ）、…｝に基づき、各行動ａａ、ａｂ、ａｃ、…に対する混合スコアの組｛πｔ０´（ａａ）、πｔ０´（ａｂ）、πｔ０´（ａｃ）、…｝を算出する。
【００８６】
図１４は混合スコアの算出の一例を示す。プロセッサ３２は、現在のスコアの組｛πｔ０（ａａ）、πｔ０（ａｂ）、πｔ０（ａｃ）、…｝と、前のスコアの組｛πｔ０−１（ａａ）、πｔ０−１（ａｂ）、πｔ０−１（ａｃ）、…｝とを、混合率αを用いて混合し、式５、式６、式７に示すような混合スコアの組｛πｔ０´（ａａ）、πｔ０´（ａｂ）、πｔ０´（ａｃ）、…｝を算出する。前のスコアの組｛πｔ０−１（ａａ）、πｔ０−１（ａｂ）、πｔ０−１（ａｃ）、…｝において、１つの行動、例えば行動ａａに対するスコアは他の行動に対するスコアよりも大きいとする。
【００８７】
プロセッサ３２は、ステップＳ１０８で、現在の行動選択に係る現在の補助変数の値Ｘｔ０を決定するとともに、メインメモリ３６に現在の補助変数の値Ｘｔ０を書き込む。
【００８８】
プロセッサ３２は、ステップＳ２０６で、混合スコアの組｛πｔ０´（ａａ）、πｔ０´（ａｂ）、πｔ０´（ａｃ）、…｝と現在の補助変数の値Ｘｔ０に基づき、現在の行動ａｔ０を選択するとともに、選択した行動ａｔ０を示す行動情報Ａｔ０をメインメモリ３６に書き込む。
【００８９】
このように第３実施形態に係る行動選択処理では、第１実施形態における現在のスコアの組と現在の補助変数に基づき現在の行動を選択する処理と同様の処理において、現在のスコアの組の代わりに混合スコアの組を用いて現在の行動が選択される。
【００９０】
［行動実行処理と学習処理］
第３実施形態の行動実行処理と学習処理は、第１実施形態、第２実施形態の行動実行処理と学習処理と同じである。プロセッサ３２は、ステップＳ１１４で、制御対象１０に選択した行動を実行させる。プロセッサ３２は、ステップＳ１１６、Ｓ１１８、Ｓ１２２で学習処理を実行する。
【００９１】
［効果］
このように、第３実施形態の行動選択処理では、現在のスコアの組に、前のスコアの組が混合され混合スコアが算出され、その混合スコアと現在の補助変数とに基づき現在の行動が選択されることにより、前の行動が現在の行動として選択される度合いが大きくなる。前の行動を現在の行動として選択する度合いを大きくしない場合は、混合スコアの組の値を現在のスコアの組の値と同じにすれば良い。
［第４実施形態］
第１実施形態〜第３実施形態はアクタークリティック法における機械学習法の実施の形態に関するが、第４実施形態として、ＳＡＲＳＡ手法やＱ学習手法などの価値ベースの強化学習手法に関する実施形態を説明する。
【００９２】
第４実施形態の前処理は第１実施形態〜第３実施形態の前処理と同じである。
【００９３】
行動選択処理では、プロセッサ３２は、現在の観測データＯｔ０及び行動価値関数のパラメータΘの値に基づき、各行動に対する行動価値Ｑ（ａａ）、Ｑ（ａｂ）、Ｑ（ａｃ）、…を算出する。行動価値Ｑ（ａｉ）は行動ａｉの実行に起因して現在から将来にわたって得られる報酬の推定値を示す。行動価値関数の一例は図１５に示すニューラルネットワークである。
【００９４】
プロセッサ３２は、各行動に対する行動価値Ｑ（ａａ）、Ｑ（ａｂ）、Ｑ（ａｃ）、…に基づき各行動に対するスコアπ（ａａ）、π（ａｂ）、π（ａｃ）、…を算出する。具体的には、プロセッサ３２は、行動ａｉに対するスコアπ（ａｉ）を式８に示すように行動価値のソフトマックス関数により算出する。
【数２】
2020204803.tif 000004
プロセッサ３２は、現在の行動選択に係る現在の補助変数の値Ｘｔ０を第１実施形態のステップＳ１０８と同様の処理により決定する。
【００９５】
プロセッサ３２は、第１実施形態乃至第３実施形態に係る行動選択処理と同様の処理により、各行動に対するスコアπ（ａａ）、π（ａｂ）、π（ａｃ）、…と現在の補助変数の値Ｘｔ０に基づき、現在の行動ａｔ０を選択するとともに、選択された行動を示す行動情報Ａｔ０をメインメモリ３６に書き込む。
【００９６】
プロセッサ３２は、第１実施形態のステップＳ１１４と同様の処理により現在の行動を制御対象１０に実行させる。
【００９７】
プロセッサ３２は、第１実施形態のステップＳ１１６、Ｓ１１８と同様の処理により次の観測データ及び報酬を受け取る。
【００９８】
本実施形態のパラメータ更新処理は第１実施形態乃至第３実施形態のパラメータ更新処理とは異なる。パラメータの値を更新する際は、プロセッサ３２は、次の観測データＯｔ０＋１及び行動価値関数のパラメータΘに基づき、次の行動ａｔ０＋１を選択する。ＳＡＲＳＡ手法の場合、プロセッサ３２は、第１実施形態乃至第３実施形態に係る行動選択処理と同様の処理により、次の観測データＯｔ０＋１及び行動価値関数のパラメータΘに基づき、次の行動ａｔ０＋１を選択する。Ｑ学習手法の場合、プロセッサ３２は、第１実施形態乃至第３実施形態に係る行動選択処理と同様の処理により、次の観測データＯｔ０＋１及び行動価値関数のパラメータΘに基づき、各行動に対する行動価値Ｑ（ａａ）、Ｑ（ａｂ）、Ｑ（ａｃ）、…を先ず算出し、各行動の中でこの行動に対する行動価値が最も大きい行動を次の行動ａｔ０＋１として選択する。
【００９９】
プロセッサ３２は、以上の処理で算出した現在の行動ａｔ０の行動価値Ｑ（ａｔ０）、報酬ｒｔ０、次の行動ａｔ０＋１の行動価値Ｑ（ａｔ０＋１）に基づき、行動価値関数のパラメータΘの値を次式のように更新する。
【０１００】
Θ＝Θ−η・∇Θ（ｒｔ０＋γ・Ｑ（ａｔ０＋１）−Ｑ（ａｔ０））２          式９  
上式において、γは割引率であり、ηは学習率である。
［第５実施形態］
第４実施形態は、価値ベースの強化学習手法において、各行動に対する行動価値のソフトマックス関数により各行動に対するスコアを算出する機械学習法を例示したが、第４実施形態のスコアの算出に関する変形例を第５実施形態として説明する。第５実施形態では、ε‐グリーディ方策と呼ばれる形式に準じたスコアを算出する機械学習法を説明する。
【０１０１】
第５実施形態の前処理は第１実施形態〜第４実施形態の前処理と同じである。
【０１０２】
行動選択処理では、プロセッサ３２は、第４実施形態に係る行動選択処理と同様の処理により、現在の観測データＯｔ０及び行動価値関数のパラメータΘの値に基づき、各行動に対する行動価値Ｑ（ａａ）、Ｑ（ａｂ）、Ｑ（ａｃ）、…を先ず算出する。次に、プロセッサ３２は、各行動に対する行動価値Ｑ（ａａ）、Ｑ（ａｂ）、Ｑ（ａｃ）、…に基づき各行動に対するスコアπ（ａａ）、π（ａｂ）、π（ａｃ）、…を図１６に示すように算出する。図１６は各行動の中で行動ａａに対する行動価値が最も大きい場合の例を示す。プロセッサ３２は、各行動の中で行動に対する行動価値が最も大きい行動に対するスコアを、（１−ε）＋ε／Ｋとし、その他の行動に対するスコアをε／Ｋとする。ここで、εは実数である。Ｋは選択可能な行動の総数であり、図１６の例ではＫ＝３である。
【０１０３】
プロセッサ３２は、現在の行動選択に係る現在の補助変数の値Ｘｔ０を第１実施形態のステップＳ１０８と同様の処理により決定する。
【０１０４】
プロセッサ３２は、第１実施形態乃至第３実施形態に係る行動選択処理と同様の処理により、各行動に対するスコアπ（ａａ）、π（ａｂ）、π（ａｃ）、…と現在の補助変数の値Ｘｔ０に基づき、現在の行動ａｔ０を選択するとともに、選択された行動を示す行動情報Ａｔ０をメインメモリ３６に書き込む。
【０１０５】
プロセッサ３２は、第１実施形態のステップＳ１１４と同様の処理により現在の行動を制御対象１０に実行させる。
【０１０６】
プロセッサ３２は、第１実施形態のステップＳ１１６、Ｓ１１８と同様の処理により次の観測データ及び報酬を受け取る。
【０１０７】
プロセッサ３２は、第４実施形態で述べた処理と同様の処理によりパラメータΘの値を更新する。
［第６実施形態］
第１実施形態〜第５実施形態では、制御対象１０は自動車とし、行動の選択肢は自動車の走行車線の変更（進行方向に直行する方向の行動制御）としたが、これらは変形可能である。制御対象１０が自動車の場合、進行方向に沿った行動制御も可能である。例えば、「加速する」／「減速する」、「等速にする」を行動の選択肢としても良い。この場合、各行動選択において選択される行動の一貫性とは、「〇〇キロ加速する」、「〇キロ加速する」、…あるいは「〇キロ減速する」、「〇〇キロ減速する」、…である。さらに、進行方向に直行する方向の行動と進行方向に沿った方向の行動の組み合わせに関する行動制御も可能である。組み合わせ行動は、「左車線へ車線変更し〇キロ加速する」、「車線を維持したまま等速にする」等を含む。制御対象１０も自動車に限らず、自走式ロボット、ドローン、鉄道等の移動体でも良い。
［第７実施形態］
上述の説明は制御対象１０は移動体としたが、ロボットアーム等の可動体でも良い。図１７（ａ）はロボットアーム５２を上から見た図、図１７（ｂ）はロボットアーム５２を横から見た図を示す。ロボットアームの行動制御の例は、図１７（ａ）に示すような「アームを右に回す」、「アームを左に回す」、「アームを固定する」と、図１７（ｂ）に示すような「アームを伸展する」、「アームを閉じる（縮める）」、「アームを上げる」、「アームを下げる」、「物品を掴む」、「物品を放す」、「アームを固定する」等を含む。さらに、これらの任意の複数の行動を組み合わせて一つの行動としても良い。可動体の例は、ロボットアームに限らず、その他の製造装置も含む。
【０１０８】
さらに、実施形態の強化学習は移動体や可動体の行動制御に限らず、プラントの稼働に関わる行動の制御や、コンピュータの行動の制御にも適用可能である。
【０１０９】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【０１１０】
１０…制御対象、３０…学習装置、３２…プロセッサ、３６…メインメモリ、３８…送信部、４０…受信部。
【図１】
2020204803.tif 000005
【図２】
2020204803.tif 000006
【図３】
2020204803.tif 000007
【図４】
2020204803.tif 000008
【図５】
2020204803.tif 000009
【図６】
2020204803.tif 000010
【図７】
2020204803.tif 000011
【図８】
2020204803.tif 000012
【図９】
2020204803.tif 000013
【図１０】
2020204803.tif 000014
【図１１】
2020204803.tif 000015
【図１２】
2020204803.tif 000016
【図１３】
2020204803.tif 000017
【図１４】
2020204803.tif 000018
【図１５】
2020204803.tif 000019
【図１６】
2020204803.tif 000020
【図１７】
2020204803.tif 000021