(57)【要約】【課題】報酬設定の手間の軽減化を図ること。【解決手段】行動により状態を得る制御対象を制御する制御装置は、プログラムを実行するプロセッサと、プログラムを記憶する記憶デバイスと、制御対象と通信する通信インタフェースと、を有し、プロセッサは、制御対象から制御対象の状態および行動を取得する取得処理と、取得処理によって取得された制御対象の状態および行動に基づいて、制御対象の次の行動が制御対象の次の状態を最適化する報酬を生成する生成処理と、取得処理によって取得された制御対象の状態および行動と、生成処理によって生成された報酬とに基づいて、制御対象の次の行動を選択する選択処理と、選択処理によって選択された制御対象の次の行動に応じた制御指令値を制御対象に与える制御処理と、を実行する。【選択図】図１
2018024036.tif 000002
【特許請求の範囲】
【請求項１】
行動により状態を得る制御対象を制御する制御装置であって、
プログラムを実行するプロセッサと、前記プログラムを記憶する記憶デバイスと、前記制御対象と通信する通信インタフェースと、を有し、
前記プロセッサは、
前記制御対象から前記制御対象の前記状態および前記行動を取得する取得処理と、
前記取得処理によって取得された前記制御対象の前記状態および前記行動に基づいて、前記制御対象の次の行動が前記制御対象の次の状態を最適化する報酬を生成する生成処理と、
前記取得処理によって取得された前記制御対象の前記状態および前記行動と、前記生成処理によって生成された報酬とに基づいて、前記制御対象の次の行動を選択する選択処理と、
前記選択処理によって選択された前記制御対象の前記次の行動に応じた制御指令値を前記制御対象に与える制御処理と、
を実行することを特徴とする制御装置。
【請求項２】
請求項１に記載の制御装置であって、
前記制御対象が移動体である場合、前記行動は前記移動体を移動させるために前記移動体に与えられる入力データであり、前記状態は前記移動体が前記行動により前記移動体が移動した場合の前記移動体の動作に関する出力データであることを特徴とする制御装置。
【請求項３】
請求項１に記載の制御装置であって、
前記制御対象が物品をピッキングするアームを有する場合、前記行動は前記アームの肘角度に関する情報であり、前記状態は前記アームの先端が前記物品の位置となるように制御する前記アームの動作角度であることを特徴とする制御装置。
【請求項４】
請求項１に記載の制御装置であって、
前記生成処理では、前記プロセッサは、前記制御対象の前記状態と前記行動との相関に基づいて、前記報酬を生成することを特徴とする制御装置。
【請求項５】
請求項１に記載の制御装置であって、
前記プロセッサは、前記行動および前記状態による前記制御対象の動作が開始してから収束するまでの動作単位を繰り返し実行し、
前記プロセッサは、
前記制御対象の周囲の外乱を検出する検出処理と、
前記検出処理によって検出された外乱に基づいて、前記動作単位の実行回数を増減するように調整する調整処理と、
を実行することを特徴とする制御装置。
【請求項６】
行動により状態を得る制御対象を制御する制御装置による制御方法であって、
前記制御装置は、プログラムを実行するプロセッサと、前記プログラムを記憶する記憶デバイスと、前記制御対象と通信する通信インタフェースと、を有し、
前記プロセッサは、
前記制御対象から前記制御対象の前記状態および前記行動を取得する取得処理と、
前記取得処理によって取得された前記制御対象の前記状態および前記行動に基づいて、前記制御対象の次の行動が前記制御対象の次の状態を最適化する報酬を生成する生成処理と、
前記取得処理によって取得された前記制御対象の前記状態および前記行動と、前記生成処理によって生成された報酬とに基づいて、前記制御対象の次の行動を選択する選択処理と、
前記選択処理によって選択された前記制御対象の前記次の行動に応じた制御指令値を前記制御対象に与える制御処理と、
を実行することを特徴とする制御方法。
【請求項７】
行動により状態を得る制御対象を制御するプロセッサに、
前記制御対象から前記制御対象の前記状態および前記行動を取得する取得処理と、
前記取得処理によって取得された前記制御対象の前記状態および前記行動に基づいて、前記制御対象の次の行動が前記制御対象の次の状態を最適化する報酬を生成する生成処理と、
前記取得処理によって取得された前記制御対象の前記状態および前記行動と、前記生成処理によって生成された報酬とに基づいて、前記制御対象の次の行動を選択する選択処理と、
前記選択処理によって選択された前記制御対象の前記次の行動に応じた制御指令値を前記制御対象に与える制御処理と、
を実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象を制御する制御装置、制御方法、および制御プログラムに関する。
【背景技術】
【０００２】
特許文献１は、供給される入力情報に応じた行動を行うロボット装置を開示する。このロボット装置では、行動管理部が、行動価値を計算し、その値に基づいて、実行する行動を決定する。行動管理部が行動を実行すると、環境またはユーザから報酬が与えられる。行動管理部は、環境またはユーザから獲得した報酬と、予め設定されている学習率とに基づき、行動価値を更新する。また、行動管理部は、その学習率を入力情報に基づいて変化させる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−３４０７６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した特許文献１の技術では、報酬の与え方自体は、自動で設定されないことから、制御対象の目的となる制御方法を自動で獲得することができないという問題がある。
【０００５】
本発明は、制御対象に対する制御方法の獲得の自動化を目的とする。
【課題を解決するための手段】
【０００６】
本願において開示される発明の一側面となる制御装置、制御方法、および制御プログラムは、行動により状態を得る制御対象を制御する制御装置、制御方法、および制御プログラムであって、前記制御装置は、プログラムを実行するプロセッサと、前記プログラムを記憶する記憶デバイスと、前記制御対象と通信する通信インタフェースと、を有し、前記プロセッサは、前記制御対象から前記制御対象の前記状態および前記行動を取得する取得処理と、前記取得処理によって取得された前記制御対象の前記状態および前記行動に基づいて、前記制御対象の次の行動が前記制御対象の次の状態を最適化する報酬を生成する生成処理と、前記取得処理によって取得された前記制御対象の前記状態および前記行動と、前記生成処理によって生成された報酬とに基づいて、前記制御対象の次の行動を選択する選択処理と、前記選択処理によって選択された前記制御対象の前記次の行動に応じた制御指令値を前記制御対象に与える制御処理と、を実行することを特徴とする。
【発明の効果】
【０００７】
本発明の代表的な実施の形態によれば、報酬設定の手間の軽減化を図ることができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【０００８】
【図１】図１は、制御システムの構成例を示す説明図である。
【図２】図２は、制御システムのハードウェア構成例を示すブロック図である。
【図３】図３は、入出力データテーブルの記憶内容例を示す説明図である。
【図４】図４は、試行状態管理テーブルの記憶内容例を示す説明図である。
【図５】図５は、設定部および強化学習部による強化学習処理手順例を示すフローチャートである。
【図６】図６は、報酬生成部による報酬生成処理手順例を示すフローチャートである。
【図７】図７は、調整部によるデータ範囲調整処理手順例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
＜制御システムの構成例＞
図１は、制御システム１００の構成例を示す説明図である。制御システム１００は、行動ａにより状態ｓを得る制御対象１０１と、動作環境１０２と、制御装置１０３と、を有する。本実施例では、例として、動作環境１０２をブランコ、制御対象１０１をブランコを漕ぐロボットとする。制御システム１００は、動作環境１０２で行動する制御対象１０１を観測して報酬ｒを与えるという一連の動作を繰り返す強化学習を制御対象１０１に実行する。
【００１０】
制御対象１０１および動作環境１０２の組み合わせがロボットおよびブランコである場合、ロボットの行動ａは、ブランコの漕ぎ動作であり、ロボットの状態ｓはブランコ（＝ロボットが載る部分）の振り角比（ブランコが、支柱に対してなす角度を振り角とするとき、この振り角が前回の振り角に対してなす割合）であり、ロボットに与えられる報酬ｒは、ブランコの振り角をより大きくするための行動aの出やすさを決めるパラメータである。
【００１１】
また、本例では、行動ａである漕ぎ動作を、ブランコの振り角２θを５分割した位相（θ，θ／２，０，−θ／２，−θ）毎のロボットの状態とする。振り角２θを１周期とする。ロボットの状態とは、ロボットの漕ぎ動作の一形態であり、本例の場合、ブランコを漕いでいる状態（漕ぎ状態。図１中、「漕」）とブランコに立っている状態（立ち状態。図１中、「立」）をいう。
【００１２】
また、制御システム１００は、動作環境１０２およびその周辺における外乱を検出する第１センサデバイス１０４を有してもよい。ここで、外乱とは、動作環境１０２およびその周辺における乱れであり、たとえば、風速、温度や湿度、降雨量、降雪量、明るさ、粉塵の量など、ロボットとブランコ全体とが置かれた動作環境１０２の呼称である。第１センサデバイス１０４は、制御装置１０３に接続される。
【００１３】
制御装置１０３は、設定部１１０と、強化学習部１２０と、報酬生成部１３０と、調整部１４０と、を有する。
【００１４】
設定部１１０は、第１記憶デバイス２１２からの自動読込またはユーザの手入力により、初期設定を実行する。設定部１１０は、たとえば、１回の試行での学習係数α、割引率γ、最大エピソード数、エピソード終了条件、初期報酬、動作環境１０２に与えるパラメータ、制御対象１０１に与えるパラメータを設定する。
【００１５】
最大エピソード数とは、１回の試行で実行されるエピソードの最大数である。エピソードとは、行動ａおよび状態ｓによる制御対象の動作が開始してから収束するまでの動作単位である。エピソード終了条件とは、１回のエピソードを終了させてはいけない条件および終了させる条件である。たとえば、終了させてはいけない条件としては、たとえば、ブランコが振動開始から１０周期経過するまではエピソードを継続させるという条件がある。エピソードを終了させる条件としては、たとえば、下限しきい値以下振り角が複数周期連続して計測された場合にエピソードを終了させるという条件がある。また、上限しきい値以上振り角が複数周期連続して計測された場合にエピソードを終了させるという条件もある。また、エピソード開始から所定時間経過した場合にエピソードを終了させるという条件もある。
【００１６】
初期報酬とは、強化学習における行動価値関数の変数である報酬ｒの初期値である。動作環境１０２に与えるパラメータとは、たとえば、ブランコにあたえる初速である。制御対象１０１に与えるパラメータとは、たとえば、ロボットに与える初期膝角度、ロボットの振り角の下限しきい値、上限しきい値、目標振り角、位相の数（周期の分割数。本例では５個）である。なお、報酬ｒの初期値は、ランダムに与えてもよいし、人の知見をもとに一旦与えてもよい。また獲得済みの報酬をそのまま使ってもよいし、部分的あるいは全体的に改変して使ってもよい。
【００１７】
強化学習部１２０は、制御対象１０１の強化学習を実行する。強化学習部１２０は、取得部１２１と、評価値更新部１２２と、行動選択部１２３と、制御部１２４と、を有する。取得部１２１は、制御対象１０１からセンサデータとして１周期分の振り角と位相毎の膝角度測定値を取得する。なお、本実施例では、ロボットの膝角度測定値をセンサデータとしたが、大腿部の付け根の角度や足首の角度をセンサデータに含めてもよい。本実施例では、説明の便宜上、膝角度について説明し、大腿部の付け根の角度や足首の角度については省略する。
【００１８】
評価値更新部１２２は、評価値Ｑを更新する。具体的には、たとえば、評価値更新部１２２は、行動価値関数により、位相毎に評価値Ｑを更新する。更新後の評価値ＱをＱ（ｓｔ，ａｔ）とする。ｓは、制御対象１０１の状態（ここでは、振り角θ）、ａは制御対象１０１の行動（漕ぎ状態）である。ｓｔは、更新前の制御対象１０１の状態（ここでは、振り角θ）、ａｔは、更新前の制御対象１０１の行動（漕ぎ状態）である。
【００１９】
まず、評価値更新部１２２は、１つのエピソードについて、評価値Ｑから導かれる方策π（ｓ，ａ）に基づき、状態ｓを初期化して、位相毎に、以下の処理（１）〜（４）を繰り返し実行する。
【００２０】
（１）評価値更新部１２２は、評価値Ｑから導かれる方策π（ｓ，ａ）に基づき、状態ｓにおける行動ａを決定する。
【００２１】
（２）評価値更新部１２２は、制御対象１０１に行動ａを実行させ、報酬ｒと行動ａをとった後の状態ｓｔ＋１を観測する。
【００２２】
（３）評価値更新部１２２は、評価値Ｑを更新する。
【００２３】
Ｑ（ｓｔ，ａｔ）
←Ｑ（ｓｔ，ａｔ）＋α［ｒｔ＋１＋γｍａｘＱ（ｓｔ＋１，ａ）−Ｑ（ｓｔ，ａｔ）］
【００２４】
αは学習係数で、０＜α≦１の範囲をとるパラメータである。γは割引率であり、０＜γ≦１の範囲をとるパラメータである。ｒｔ＋１は、更新後の報酬ｒである。ｓｔ＋１は、更新後の制御対象１０１の状態（ここでは、振り角θ）である。ｍａｘＱ（ｓｔ＋１，ａ）は、状態ｓｔ＋１のの下で、最もＱ値の高い行動ａを選んだ場合のＱ値にγを乗じた値となる。
【００２５】
（４）評価値更新部１２２は、状態ｓｔ＋１がエピソード終了条件を満たせば、当該エピソードが終了する。
【００２６】
本実施例では、報酬ｒを自動計算して評価値Ｑに与えることにより、獲得してほしい動作を自動的にするように制御する。
【００２７】
行動選択部１２３は、位相単位で制御対象１０１の次の周期での行動ａを選択する。具体的には、たとえば、行動選択部１２３は、位相毎に今回の評価値Ｑと前回の評価値Ｑとを比較する。ある位相について今回の評価値Ｑが前回の評価値Ｑ以上である場合、行動選択部１２３は、当該位相について前回の行動ａと同一行動を次の周期の行動ａとして選択する。たとえば、当該位相での前回の行動ａが「漕ぎ」である場合、次の周期の当該位相での行動ａとして「漕ぎ」が選択される。
【００２８】
一方、ある位相について今回の評価値Ｑが前回の評価値Ｑ未満である場合、行動選択部１２３は、当該位相について前回の行動ａとは異なる行動ａを次の周期の行動ａとして選択する。たとえば、当該位相での前回の行動ａが「漕ぎ」である場合、次の周期の当該位相での行動ａとして「立ち」が選択される。
【００２９】
また、行動選択部１２３は、ランダム性を適用して、少なくとも１つの位相について次の周期の行動ａを選択してもよい。また、行動選択部１２３は、どの位相にランダム性を適用するかもランダムに選択してもよい。
【００３０】
制御部１２４は、各選択行動に応じた制御指令値を生成して制御対象１０１を制御する。具体的には、たとえば、制御部１２４は、制御指令値を生成して制御対象１０１に送信する。選択行動に応じた制御指令値とは、たとえば、ロボットの膝角度が漕ぎ状態または立ち状態となるようにアクチュエータ２２３に与えられる電流値である。
【００３１】
報酬生成部１３０は、テーブル１３１と、テーブル更新部１３２と、相関演算部１３３と、報酬演算部１３４と、を有する。テーブル１３１は、入出力データテーブル３００と試行状態管理テーブル４００とを有する。入出力データテーブル３００の詳細については図３で後述する。試行状態管理テーブル４００の詳細については図４で後述する。
【００３２】
相関演算部１３３は、テーブル更新部１３２は、入出力データテーブル３００と試行状態管理テーブル４００とを更新する。相関演算部１３３は、入出力データテーブル３００と試行状態管理テーブル４００とを参照して、位相毎の計測漕ぎ状態４０３と最大振り角比３０６との相関情報を演算する。報酬演算部１３４は、相関情報を用いて報酬（具体的には、更新後の報酬ｒｔ＋１）を算出し、評価値更新部１２２に与える。
【００３３】
調整部１４０は、第１センサデバイス１０４で動作環境１０２での外乱を検出し、制御対象１０１が実行する最大エピソード数を増減させる。外乱の発生頻度が高い場合、目的達成ができない状況が継続することとなる。この場合、最大エピソード数を減少させることで、報酬ｒの計算に用いるエピソードを直近のエピソードに制限することができる。逆に、外乱の発生頻度が低い場合、最大エピソード数を増加させることで、報酬ｒの計算に用いるデータ範囲の拡大を図る。センサデバイスがなく、動作環境１０２での外乱が直接検出できない場合においては、学習が進まない場合、例えば最大振り角などを目的変数とする場合に、その値の向上が見られないかゆるやかな場合は外乱があるとみなして、同様の処理を行うようにしてもよい。
【００３４】
＜制御システム１００のハードウェア構成例＞
図２は、制御システム１００のハードウェア構成例を示すブロック図である。制御装置１０３は、第１プロセッサ２１１と、第１記憶デバイス２１２と、入力デバイス２１３と、出力デバイス２１４と、第１通信インターフェース（ＩＦ）２１５と、を有する。第１プロセッサ２１１、第１記憶デバイス２１２、入力デバイス２１３、出力デバイス２１４、および第１通信ＩＦ２１５は、第１バス２１６に接続される。第１センサデバイス１０４は、第１通信ＩＦ２１５に接続される。第１プロセッサ２１１は、制御装置１０３を制御する。第１記憶デバイス２１２は、第１プロセッサ２１１の作業エリアとなる。また、第１記憶デバイス２１２は、各種プログラムやデータを記憶する非一時的なまたは一時的な記録媒体である。第１記憶デバイス２１２としては、たとえば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、フラッシュメモリがある。
【００３５】
入力デバイス２１３は、データを入力する。入力デバイス２１３としては、たとえば、キーボード、マウス、タッチパネル、テンキー、スキャナがある。出力デバイス２１４は、データを出力する。出力デバイス２１４としては、たとえば、ディスプレイ、プリンタがある。第１通信ＩＦ２１５は、ネットワークと接続し、制御対象１０１とデータを送受信する。
【００３６】
上述した設定部１１０、強化学習部１２０、報酬生成部１３０、および調整部１４０は、具体的には、たとえば、第１記憶デバイス２１２に記憶されたプログラムを第１プロセッサ２１１に実行させることで実現される。また、テーブル１３１（入出力データテーブル３００と試行状態管理テーブル４００）は、具体的には、たとえば、第１記憶デバイス２１２に記憶されたデータ構造として実現される。
【００３７】
制御対象１０１は、第２プロセッサ２２１と、第２記憶デバイス２２２と、アクチュエータ２２３と、第２センサデバイス２２４と、第２通信ＩＦ２２５と、を有する。第２プロセッサ２２１、第２記憶デバイス２２２、アクチュエータ２２３、第２センサデバイス２２４、および第２通信ＩＦ２２５は、第２バス２２６により接続される。第２プロセッサ２２１は、制御装置１０３を制御する。第２記憶デバイス２２２は、第２プロセッサ２２１の作業エリアとなる。また、第２記憶デバイス２２２は、各種プログラムやデータを記憶する非一時的なまたは一時的な記録媒体である。第２記憶デバイス２０２としては、たとえば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、フラッシュメモリがある。
【００３８】
アクチュエータ２２３は、入力エネルギーを並進または回転運動といった物理的運動に変換する駆動機構である。具体的には、例えば、アクチュエータ２２３は、ロボットの脚を構成する腿の付け根、膝、足首に設けられ、制御装置１０３から指示された電流値により、ロボットの脚を駆動制御する。第２センサデバイス２２４は、ブランコに対するロボットの振り角の算出元となる各速度を検出するジャイロセンサである。第２通信ＩＦ２２５は、ネットワークと接続し、制御装置１０３とデータを送受信する。
【００３９】
＜テーブル１３１の記憶内容例＞
つぎに、図３および図４を用いて、図１に示したテーブル１３１の記憶内容例を説明する。なお、ここでは、データ構造をテーブル形式で説明するが、テーブルによるデータ構造で表現されていなくてもよく、リスト、データベース、キュー等のデータ構造でもよい。また、テーブルの説明において、ＡＡフィールドｂｂｂ（ＡＡはフィールド名、ｂｂｂは符号）の値を、ＡＡｂｂｂと表記する場合がある。たとえば、試行ＩＤフィールド３０１の値を、試行ＩＤ３０１と表記する。
【００４０】
図３は、入出力データテーブル３００の記憶内容例を示す説明図である。図３において、入出力データテーブル３００は、制御対象１０１から入力されるデータと制御対象１０１に出力するデータとを管理するテーブルである。入出力データテーブル３００は、試行ＩＤフィールド３０１と、エピソードＩＤフィールド３０２と、振り角フィールド３０３と、膝角度計測値フィールド３０４と、膝角度指令値フィールド３０５と、最大振り角比フィールド３０６と、を有する。各フィールド３０１〜３０６の列には、当該フィールドの値が格納されている。
【００４１】
試行ＩＤフィールド３０１は、試行ＩＤを格納する記憶領域である。試行ＩＤ３０１とは、動作環境１０２における制御対象１０１の動作の試行を一意に特定する識別情報である。試行ＩＤ３０１単位で、設定部１１０により初期設定が実行される。
【００４２】
エピソードＩＤフィールド３０２は、エピソードＩＤを格納する記憶領域である。エピソードＩＤ３０２とは、エピソードを一意に特定する識別情報である。エピソードとは、動作環境１０２における制御対象１０１の動作が開始してから当該動作が収束するまでの動作単位である。たとえば、振り角が上限しきい値以上となった場合、または、振り角が下限しきい値以下となった場合に、エピソードは終了する。なお、１回の試行でのエピソード回数ｍ（ｍは１以上の整数）は、設定部１１０での初期設定により設定される。
【００４３】
振り角フィールド３０３は、エピソードでの振り角２×θを格納する記憶領域である。振り角３０３は、取得部１２１によって計測される。振り角３０３は、相関演算部１３３による相関演算での説明変数となりうる値である。
【００４４】
膝角度計測値フィールド３０４は、エピソードでの膝角度計測値を格納する記憶領域である。膝角度計測値３０４とは、ロボットの膝の角度の計測値である。膝角度計測値３０４は、相関演算部１３３による相関演算での説明変数となりうる値である。膝角度計測値３０４は、取得部１２１によって取得される計測値である。膝角度計測値３０４は、振り角３０３の位相毎に格納される。
【００４５】
膝角度指令値フィールド３０５は、エピソードでの膝角度指令値を格納する記憶領域である。膝角度指令値３０５とは、ロボットの膝角度を所望の角度に設定するための指令値である。より具体的には、たとえば、アクチュエータ２２３に与える電流量などの制御指令値である。膝角度指令値３０５は、相関演算部１３３による相関演算での説明変数となりうる値である。膝角度指令値３０５は、振り角３０３の位相毎に格納される。
【００４６】
最大振り角比フィールド３０６は、最大振り角比を格納する記憶領域である。最大振り角比３０６は、テーブル更新部１３２によって算出される。最大振り角比３０６は、相関演算部１３３による相関演算での目的変数となる値である。最大振り角比３０６とは、エピソードＩＤ３０２において前回の試行ＩＤ３０１での振り角３０３の最大値と、今回の振り角３０３との比である。たとえば、試行ＩＤ：Ｔｒ１での最大振り角をエピソードＩＤ：ｅｐ１１の振り角３０３（２×θ１１＿１）とする。今回の振り角３０３を、試行ＩＤ：Ｔｒ２のエピソード：ｅｐ２ｍの振り角３０３（２×θ２ｍ＿１）とすると、その最大振り角比３０６（ｒ２ｍ＿１）は、
ｒ２ｍ＿１＝θ２ｍ＿１／θ１１＿１
となる。
【００４７】
なお、初回の試行ＩＤ：Ｔｒ１については、前回の試行ＩＤ３０１の振り角３０３がないため、最大振り角比３０６は格納されない（ＮＡ（Ｎｏｔ  Ａｖａｉｌａｂｌｅ））。または、初期設定において前回の最大振り角を任意に設定しておくことにより、最大振り角比３０６を格納してもよい。 
【００４８】
また、入出力データテーブル３００には、振り角比が格納されてもよい。振り角比は、相関演算部１３３による相関演算での説明変数となりうる値である。振り角比は、前回の振り角と今回の振り角との比である。たとえば、エピソードＩＤ：ｅｐ１１において、前回の振り角３０３（２×θ１１＿１）と今回の振り角３０３（２×θ１１＿２）との振り角比３０６であるｒ１１＿２は、
ｒ１１＿２＝θ１１＿２／θ１１＿１
となる。
【００４９】
なお、エピソードＩＤ３０２において初回については、前回の振り角３０３がないため、振り角比は格納されない（ＮＡ（Ｎｏｔ  Ａｖａｉｌａｂｌｅ））。または、初期設定において前回の振り角３０３を任意に設定しておくことにより、初回の振り角比を格納してもよい。
【００５０】
図４は、試行状態管理テーブル４００の記憶内容例を示す説明図である。試行状態管理テーブル４００は、試行ＩＤフィールド３０１と、エピソードＩＤフィールド３０２と、計測漕ぎ状態フィールド４０３と、選択漕ぎ状態フィールド４０４と、を有する。各フィールド３０１，３０２，４０３，４０４の列には、当該フィールドの値が格納されている。
【００５１】
計測漕ぎ状態フィールド４０３は、計測漕ぎ状態を格納する記憶領域である。計測漕ぎ状態４０３とは、エピソードでの膝角度計測値３０４に対応する漕ぎ状態である。具体的には、たとえば、計測漕ぎ状態４０３は、膝角度計測値３０４をあるしきい値角度で２値化処理した値である。ここでは、例として、漕ぎ状態を「０」、立ち状態を「１」とする。計測漕ぎ状態４０３は、振り角の位相毎に格納される。計測漕ぎ状態４０３は、相関演算部１３３による相関演算での説明変数となりうる値である。
【００５２】
選択漕ぎ状態フィールド４０４は、選択漕ぎ状態を格納する記憶領域である。選択漕ぎ状態４０４とは、エピソードで行動選択部１２３によって選択された漕ぎ状態である。選択漕ぎ状態４０４は、振り角３０３の位相毎に格納される。同一エントリにおいて、選択漕ぎ状態４０４でロボットが制御された場合の膝角度の実測値を２値化した値が計測漕ぎ状態４０３である。
【００５３】
＜強化学習処理手順例＞
図５は、設定部１１０および強化学習部１２０による強化学習処理手順例を示すフローチャートである。図５は、１回の試行における強化学習処理手順例を示す。設定部１１０は、第１記憶デバイス２１２からの自動読込またはユーザの手入力により、初期設定を実行する（ステップＳ５０１）。初期設定では、たとえば、１回の試行での学習係数α、割引率γ、最大エピソード数、エピソード終了条件、初期報酬、動作環境１０２に与えるパラメータ、制御対象１０１に与えるパラメータが設定される。
【００５４】
強化学習部１２０は、初期設定が完了すると、エピソードを開始する（ステップＳ５０２）。そして、強化学習部１２０は、取得部１２１により、制御対象１０１からセンサデータを計測し、報酬生成部１３０に送信する（ステップＳ５０３）。センサデータとは、１周期の振り角およびロボットの位相毎の膝角度計測値を含む。
【００５５】
つぎに、強化学習部１２０は、評価値更新部１２２により、報酬生成部１３０から報酬ｒが受信されたか否かを判断する（ステップＳ５０４）。受信されていない場合（ステップＳ５０４：Ｎｏ）、ステップＳ５０６に移行する。一方、受信された場合（ステップＳ５０５：Ｙｅｓ）、強化学習部１２０は、評価値更新部１２２により、報酬ｒを、受信した報酬ｒに更新して（ステップＳ５０５）、ステップＳ５０６に移行する。
【００５６】
つぎに、強化学習部１２０は、評価値更新部１２２により、位相毎に行動価値関数を用いて評価値を算出し（ステップＳ５０６）、算出した今回の評価値を最新の評価値Ｑとして保持する（ステップＳ５０７）。
【００５７】
つぎに、強化学習部１２０は、行動選択部１２３により、位相単位で制御対象１０１の次の周期での行動ａを選択する（ステップＳ５０８）。行動選択部１２３は、選択行動の情報を報酬生成部１３０に送信する。
【００５８】
つぎに、強化学習部１２０は、制御部１２４により、各選択行動に応じた制御指令値を生成して制御対象１０１に送信する（ステップＳ５０９）。
【００５９】
そして、強化学習部１２０は、設定部１１０によって設定されたエピソードの終了条件に一致するか否かを判断する（ステップＳ５１０）。一致しない場合（ステップＳ５１０：Ｎｏ）、ステップＳ５０３に戻る。一致した場合（ステップＳ５１０：Ｙｅｓ）、強化学習部１２０は、当該エピソードの終了通知を報酬生成部１３０に送信する（ステップＳ５１１）。そして、強化学習部１２０は、設定部１１０によって設定された最大エピソード数に到達したか否かを判断する（ステップＳ５１２）。到達してない場合（ステップＳ５１２：Ｎｏ）、ステップＳ５０２に戻る。到達した場合（ステップＳ５１２：Ｙｅｓ）、強化学習部１２０は、当該試行を終了する。
【００６０】
＜報酬生成処理手順例＞
図６は、報酬生成部１３０による報酬生成処理手順例を示すフローチャートである。報酬生成部１３０は、テーブル更新部１３２により、ステップＳ５０３で送信された位相毎のセンサデータおよびステップＳ５０８で送信された位相毎の選択行動の情報を取得する（ステップＳ６０１）。ステップＳ５０３で送信されたセンサデータには１周期の振り角およびロボットの位相毎の膝角度計測値が含まれる。具体的には、たとえば、報酬生成部１３０は、テーブル更新部１３２により、入出力データテーブル３００の現在の試行ＩＤ３０１における現在のエピソードＩＤ３０２のエントリにおいて、取得した１周期の振り角を振り角フィールド３０３に格納し、位相毎の膝角度計測値を膝角度計測値フィールド３０４に格納する。また、報酬生成部１３０は、テーブル更新部１３２により、試行状態管理テーブル４００の現在の試行ＩＤ３０１における現在のエピソードＩＤ３０２のエントリにおいて、位相毎の選択行動の情報（「０」（漕）または「１」（立））を選択漕ぎ状態フィールド４０４に格納する。
【００６１】
つぎに、報酬生成部１３０は、テーブル更新部１３２により、特徴データを生成する（ステップＳ６０２）。具体的には、たとえば、報酬生成部１３０は、テーブル更新部１３２により、入出力データテーブル３００の現在の試行ＩＤ３０１における現在のエピソードＩＤ３０２のエントリに格納されたロボットの位相毎の膝角度計測値３０４を２値化処理する。これにより、報酬生成部１３０は、テーブル更新部１３２により、「０」（漕）または「１」（立）のいずれかを示す値を特徴データとして生成する。そして、報酬生成部１３０は、テーブル更新部１３２により、試行状態管理テーブル４００の現在の試行ＩＤ３０１における現在のエピソードＩＤ３０２のエントリにおいて、計測漕ぎ状態４０３に、生成した特徴データを格納する。
【００６２】
また、報酬生成部１３０は、テーブル更新部１３２により、現在のエピソードにおいて最大振り角比３０６を特徴データとして算出し、入出力データテーブル３００の現在の試行ＩＤ３０１における現在のエピソードＩＤ３０２のエントリに格納する。
【００６３】
つぎに、報酬生成部１３０は、強化学習部１２０から送信されたエピソード終了通知（ステップＳ５１１）を受信したか否かを判断する（ステップＳ６０３）。受信していない場合（ステップＳ６０３：Ｎｏ）、ステップＳ６０１に戻る。一方、受信した場合（ステップＳ６０３：Ｙｅｓ）、報酬生成部１３０は、終了エピソード数をインクリメントすることで更新する（ステップＳ６０４）。報酬生成部１３０は、終了エピソード数がしきい値以上であるか否かを判断する（ステップＳ６０５）。しきい値以上でない場合（ステップＳ６０５：Ｎｏ）、ステップＳ６０１に戻り、つぎのエピソードＩＤ３０２についてステップＳ６０１を実行する。
【００６４】
一方、終了エピソード数がしきい値以上である場合（ステップＳ６０５：Ｙｅｓ）、報酬生成部１３０は、相関演算部１３３により、相関情報を演算する（ステップＳ６０６）。終了エピソード数がしきい値以上である場合（ステップＳ６０５：Ｙｅｓ）、現在の試行ＩＤ３０１においてしきい値と同じ終了エピソード数分のエピソードＩＤ３０２のエントリが、入出力データテーブル３００および試行状態管理テーブル４００に存在する。
【００６５】
したがって、報酬生成部１３０は、相関演算部１３３により、位相毎の漕ぎ動作（計測漕ぎ状態４０３）と最大振り角比３０６との相関を示す相関情報を算出する。具体的には、たとえば、試行ＩＤ３０１が「Ｔｒ１」である試行について終了エピソード数がしきい値以上となった場合、エピソードｅｐ１１〜ｅｐ１ｍまでの位相毎の計測漕ぎ状態４０３および最大振り角比３０６（ｒ１１＿１１〜r１ｍ＿ｙ）が得られる。相関情報の一例として相関係数Ｒを求める場合、下記式により位相毎に相関係数Ｒが求められる。
【００６６】
【数１】
2018024036.tif 000003
【００６７】
ｘｉは、ある位相での計測漕ぎ状態４０３、ｘａｖは、ある試行ＩＤ３０１での計測漕ぎ状態４０３の平均、ｙｉは、ある位相での最大振り角比３０６、ｙａｖは、ある試行ＩＤ３０１での最大振り角比３０６の平均、ｎは、ある試行ＩＤ３０１での振り角３０３が得られた回数である。なお、ここでは、計測漕ぎ状態４０３と最大振り角比３０６との相関を求めたが、膝角度計測値３０４と最大振り角比３０６との相関でもよく、また、振り角と最大振り角比３０６との相関でもよい。
【００６８】
つぎに、報酬生成部１３０は、報酬演算部１３４により、位相毎に報酬ｒを演算する（ステップＳ６０７）。具体的には、たとえば、報酬生成部１３０は、報酬演算部１３４により、相関情報に応じた報酬ｒを算出する。相関情報が、たとえば、相関係数Ｒとすると、その範囲は、−１≦Ｒ≦１である。報酬生成部１３０は、報酬演算部１３４により、前回の試行ＩＤ３０１での相関係数Ｒと今回の試行ＩＤ３０１での相関係数Ｒとの差分に比例して、報酬ｒの増分Δｒを設定し、今回の報酬ｒを更新する。つぎに、報酬生成部１３０は、今回の報酬ｒを制御対象１０１に送信し（ステップＳ６０８）、終了エピソード数を「０」にリセットし（ステップＳ６０９）、ステップＳ６０１に戻る。
【００６９】
＜データ範囲調整処理手順例＞
図７は、調整部１４０によるデータ範囲調整処理手順例を示すフローチャートである。調整部１４０は、第１センサデバイス１０４での外乱の検出を待ち受ける（ステップＳ７０１：Ｎｏ）。外乱が検出された場合（ステップＳ７０１：Ｙｅｓ）、調整部１４０は、外乱検出回数をインクリメントすることで更新する（ステップＳ７０２）。つぎに、調整部１４０は、外乱検出回数が上限しきい値以上であるか否かを判断する（ステップＳ７０３）。上限しきい値以上でない場合（ステップＳ７０３：Ｎｏ）、ステップＳ７０５に移行する。一方、上限しきい値以上である場合（ステップＳ７０３：Ｙｅｓ）、調整部１４０は、最大エピソード数を所定数減少させる指示データを強化学習部１２０に送信して（ステップＳ７０４）、ステップＳ７０５に移行する。これにより、強化学習部１２０は、最大エピソード数を減少させて強化学習を実行することになる。すなわち、ステップＳ５１２では、減少後の最大エピソード数が採用される。
【００７０】
このあと、調整部１４０は、外乱検出回数が下限しきい値以下であるか否かを判断する（ステップＳ７０５）。下限しきい値以下でない場合（ステップＳ７０５：Ｎｏ）、ステップＳ７０１に戻る。一方、下限しきい値以下である場合（ステップＳ７０５：Ｙｅｓ）、最大エピソード数を所定数増加させる指示データを強化学習部１２０に送信して（ステップＳ７０６）、ステップＳ７０１に戻る。これにより、強化学習部１２０は、最大エピソード数を増加させて強化学習を実行することになる。すなわち、ステップＳ５１２では、増加後の最大エピソード数が採用される。
【００７１】
以上説明したように、本実施例によれば、報酬設定の手間の軽減化を図ることができる。これにより、制御対象１０１を、獲得してほしい動作を実行するように制御することができる。
【００７２】
また、上述した実施例では、制御対象１０１としてブランコを漕ぐロボットを例に挙げて説明したが、制御対象１０１は、たとえば、自動車、バイク、スクーター、電動アシスト自転車、電車、船舶、飛行機といった移動体でもよい。この場合、強化学習における行動ａは、移動体を移動させるために移動体に与えられる入力データである。自動車の場合、行動ａである入力データは、たとえば、ステアリングホイール（ハンドル）の角度やアクセルペダルの踏込角度、ブレーキペダルの踏込角度である。状態ｓは移動体が行動ａにより移動体が移動した場合の移動体の動作に関する出力データである。自動車の場合、状態ｓは、たとえば、先行車との車間距離である。
【００７３】
また、制御対象１０１が物品をピッキングするアームを有する産業用ロボットである場合、行動ａはアームの肘角度または肘角度を２値化したデータ（肘角度に関する情報）であり、状態ｓはアームの先端が物品の位置となるように制御するアームの可動範囲内における動作角度となる。
【００７４】
また、行動ａ（漕ぎ状態）と状態ｓ（振り角）の相関に基づいて報酬を生成することにより、目的達成に特に関わる制御指令値（たとえば、アクチュエータ２２３に与える電流値）が出やすいように報酬ｒが更新される。したがって、制御対象１０１の制御の高速化を図ることができる。
【００７５】
また、制御対象１０１の周囲で検出された外乱に基づいて、行動ａおよび状態ｓによる制御対象１０１の動作が開始してから収束するまでの動作単位（エピソード）の実行回数を増減するように調整する。これにより、外乱の影響を、最大エピソード数に反映して、強化学習の期間を設定することができる。たとえば、外乱の発生頻度が高い場合、目的達成ができない状況が継続することとなる。この場合、最大エピソード数を減少させることで、報酬ｒの計算に用いるエピソードを直近のエピソードに制限することができる。逆に、外乱の発生頻度が低い場合、最大エピソード数を増加させることで、報酬ｒの計算に用いるデータ範囲の拡大を図ることができる。
【００７６】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加、削除、または置換をしてもよい。
【００７７】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【００７８】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置、又は、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）カード、ＳＤカード、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）の記録媒体に格納することができる。
【００７９】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【符号の説明】
【００８０】
１００  制御システム
１０１  制御対象
１０２  動作環境
１０３  制御装置
１０４  センサデバイス
１１０  設定部
１２０  強化学習部
１２１  取得部
１２２  評価値更新部
１２３  行動選択部
１２４  制御部
１３０  報酬生成部
１３１  テーブル
１３２  テーブル更新部
１３３  相関演算部
１３４  報酬演算部
１４０  調整部
３００  入出力データテーブル
４００  試行状態管理テーブル
【図１】
2018024036.tif 000004
【図２】
2018024036.tif 000005
【図３】
2018024036.tif 000006
【図４】
2018024036.tif 000007
【図５】
2018024036.tif 000008
【図６】
2018024036.tif 000009
【図７】
2018024036.tif 000010