(57)【要約】  第１のモデルが出力した、シミュレーション環境における仮想ロボットによる動作の行動計画に基づいて、前記動作を実現可能な実環境における実環境のロボットの制御値を出力する第２のモデルを強化学習により訓練する手順、をコンピュータが実行することを特徴とする。
2020009139.tif 000002
【特許請求の範囲】
【請求項１】
第１のモデルが出力した、シミュレーション環境における仮想ロボットによる動作の行動計画に基づいて、前記動作を実現可能な実環境における実環境のロボットの制御値を出力する第２のモデルを強化学習により訓練する手順、
をコンピュータが実行することを特徴とする学習方法。
【請求項２】
前記シミュレーション環境でシミュレーションした仮想装置にて動作可能となる行動計画を出力する第１のモデルを訓練する第１の訓練手順と、
前記実環境において前記仮想装置と対応する前記実環境の装置が、前記動作を実現可能な制御値を出力する前記第２のモデルを訓練する第２の訓練手順と、
をコンピュータが実行することを特徴とする請求項１に記載の学習方法。
【請求項３】
前記学習方法は、深層強化学習により、実環境の装置に動作を学習させる学習方法であって、
前記第１の訓練手順は、所定のタスクを実現する動作を、前記シミュレーション環境でシミュレーションした仮想装置にて動作可能となる行動計画を出力する前記第１のモデルを訓練し、
前記第２の訓練手順は、前記仮想装置と対応する前記実環境の装置が有する駆動部が、前記動作を実現可能な制御値を出力する前記第２のモデルを訓練する、ことを特徴とする請求項２に記載の学習方法。
【請求項４】
前記学習方法は、
更に、前記タスクを複雑化させる複雑化手順を前記コンピュータが実行し、
前記複雑化手順により前記タスクを複雑化させながら、前記第１の訓練手順と、前記第２の訓練手順とを所定の順序で繰り返し前記コンピュータが実行する、ことを特徴とする請求項３に記載の学習方法。
【請求項５】
前記学習方法は、
更に、前記第１の訓練手順の訓練結果として出力された利得Rsが所定の第１の閾値を超えているか否かを判定する第１の判定手順を前記コンピュータが実行し、
前記第１の判定手順より前記利得Rsが前記第１の閾値を超えていないと判定された場合、前記複雑化手順により前記タスクを複雑化させて又は前記複雑化手順による前記タスクの複雑化を行わずに、前記第１の訓練手順を前記コンピュータが実行する、ことを特徴とする請求項４に記載の学習方法。
【請求項６】
前記学習方法は、
更に、前記第２の訓練手順の学習結果として出力された利得Rrが所定の第２の閾値を超えているか否かを判定する第２の判定手順を前記コンピュータが実行し、
前記第２の判定手順より前記利得Rrが前記第２の閾値を超えていないと判定された場合、前記複雑化手順により前記タスクを複雑化させて又は前記複雑化手順による前記タスクの複雑化を行わずに、前記第２の訓練手順を前記コンピュータが実行する、ことを特徴とする請求項４又は５に記載の学習方法。
【請求項７】
前記学習方法は、
更に、同一のタスクについて、前記第２の訓練手順の訓練結果として出力された方策πrealを用いて、前記第１の訓練手順の訓練結果として出力された方策πsimを更新する更新手順を前記コンピュータが実行する、ことを特徴とする請求項３乃至６の何れか一項に記載の学習方法。
【請求項８】
第１のモデルが出力した、シミュレーション環境における仮想ロボットによる動作の行動計画に基づいて、前記動作を実現可能な実環境における実環境のロボットの制御値を出力する第２のモデルを強化学習により訓練する訓練部、
を有することを特徴とする学習装置。
【請求項９】
第１のモデルが出力した、シミュレーション環境における仮想ロボットによる動作の行動計画に基づいて、前記動作を実現可能な実環境における実環境のロボットの制御値を出力する第２のモデルを強化学習により訓練する訓練部、
を有することを特徴とする学習システム。
【請求項１０】
第１のモデルが出力した、シミュレーション環境における仮想ロボットによる動作の行動計画に基づいて、前記動作を実現可能な実環境における実環境のロボットの制御値を出力する第２のモデルを強化学習により訓練する手順、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習方法、学習装置、学習システム及びプログラムに関する。
【背景技術】
【０００２】
近年、様々な機械学習の手法を用いて、アクチュエータ等の駆動部を有するロボットに対して所定のタスク（例えば、二足歩行や物体の把持等）を実現する動作を学習させることが行われている。【０００３】
しかしながら、深層強化学習では多くの試行回数が必要とされる。教師あり学習を事前に行うことで、深層強化学習の試行回数を削減することができるものの、実環境のみでは現実的な試行回数で学習させることは困難である。これに対して、シミュレーション環境での学習結果を実環境に適用可能とする手法として、Sim to realと呼ばれる手法が知られている。
【発明の概要】
【０００４】
しかしながら、例えば、シミュレーション環境と実環境との差異が大きい場合には、シミュレーション環境での学習結果を実環境に適用することが困難な場合があった。例えば、物体の把持動作や二足歩行動作等のタスクをロボットに学習させる場合、実環境では、アクチュエータ等の駆動部で摩擦が発生したり、駆動部の動作遅れが発生したりする。このため、シミュレーション環境での学習結果を実環境に適用することが困難な場合がある。
【０００５】
本発明の実施の形態は、上記の点に鑑みてなされたもので、シミュレーション環境での学習結果の実環境への適用を容易に行うことを目的とする。
【０００６】
上記目的を達成するため、本発明の実施の形態は、第１のモデルが出力した、シミュレーション環境における仮想ロボットによる動作の行動計画に基づいて、前記動作を実現可能な実環境における実環境のロボットの制御値を出力する第２のモデルを強化学習により訓練する手順、をコンピュータが実行することを特徴とする。
【発明の効果】
【０００７】
シミュレーション環境での学習結果を実環境に容易に適用することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態における学習システムの全体構成の一例を示す図である。
【図２Ａ】本発明の実施の形態におけるロボットの一例を模式的に示す図である。
【図２Ｂ】本発明の実施の形態におけるロボットの一例を模式的に示す図である。
【図３】本発明の実施の形態における学習装置のハードウェア構成の一例を示す図である。
【図４】本発明の実施の形態における学習装置の機能構成の一例を示す図である。
【図５】本発明の実施の形態における学習処理の一例を示すフローチャートである。
【図６】シミュレーション環境での学習処理の一例を示すフローチャートである。
【図７】実環境での学習処理の一例を示すフローチャートである。
【図８】実環境での学習結果をシミュレーション環境に反映する処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、本実施の形態について、図面を参照しながら詳細に説明する。以降では、シミュレーション環境での学習結果を実環境に適用することで、ロボットの効率的な学習を行うことが可能な学習システム１について説明する。
【００１０】
＜全体構成＞
まず、本実施の形態の一例における学習システム１の全体構成について、図１を参照しながら説明する。図１は、本実施の形態の一例における学習システム１の全体構成の一例を示す図である。
【００１１】
図１に示すように、本実施の形態の一例における学習システム１には、学習装置１０と、制御装置２０と、ロボット３０と、センサ４０とが含まれる。
【００１２】
学習装置１０は、深層強化学習により、所定のタスク（例えば、二足歩行や物体の把持等）を実現する動作をロボット３０に学習させるためのコンピュータ又はコンピュータシステムである。学習装置１０は、シミュレーション環境でのロボット３０（以下、仮想装置又は仮想ロボットともいう）の深層強化学習と、実環境でのロボット３０（実環境での装置）の深層強化学習とを行うことで、タスクを実現する動作をロボット３０に学習させる。
【００１３】
このとき、例えば、学習装置１０は、シミュレーション環境ではロボット３０がタスクを実現するための動作（いわゆるプランニング）を学習させて、実環境では当該動作を実現するために必要な駆動部（例えばアクチュエータ等）の制御値を学習させる。ここで、制御値は、例えば、当該動作を実現するために必要な駆動部の電流値等である。本実施形態では、一例として、制御値は、駆動部の電流値であるものとして説明するが、これに限られない。
【００１４】
本実施の形態における学習装置１０は、シミュレーション環境でのロボット３０の学習と、実環境でのロボット３０の学習とをCurriculum learningを用いて行うと共に、これらの学習を所定の順序で繰り返し行う。
【００１５】
ここで、所定の順序としては、以下の（１）及び（２）を満たす任意の順序を採用することができる。
【００１６】
（１）シミュレーション環境での学習の次に、同一複雑度のタスク又は複雑度を上げたタスクのシミュレーション環境での学習又は実環境での学習を行う。
【００１７】
（２）実環境での学習の次に、シミュレーション環境で学習済の複雑度のタスクについて実環境での学習を行うか、又は複雑度を上げたタスクのシミュレーション環境での学習を行う。
【００１８】
具体的には、例えば、ロボット３０に学習させたいタスクをV1，V2として、これらのタスクV1，V2の複雑度をV1＜V2とする。この場合、以下の（Ａ）、（Ｂ）、（Ｃ）に例示する順序は、全て上記の所定の順序を満たす。
【００１９】
（Ａ）タスクV1のシミュレーション環境での学習、タスクV1の実環境での学習、タスクV2のシミュレーション環境での学習、タスクV2の実環境での学習の順にロボット３０の学習を行う。
【００２０】
（Ｂ）タスクV1のシミュレーション環境での学習、タスクV2のシミュレーション環境、タスクV1の実環境での学習、タスクV2の実環境での学習の順にロボット３０の学習を行う。
【００２１】
（Ｃ）タスクV1のシミュレーション環境での学習、タスクV1のシミュレーション環境での学習、タスクV2のシミュレーション環境での学習、タスクV1の実環境での学習、タスクV1の実環境での学習、タスクV2の実環境での学習の順にロボット３０の学習を行う。
【００２２】
なお、タスクの複雑度は、ロボット３０が実現したい動作の複雑さを表す。例えば、ロボット３０が二足歩行ロボットである場合、タスク「ゆっくり歩く」と、タスク「早く歩く」と、タスク「走る」とでは、タスク「ゆっくり歩く」、タスク「早く歩く」、タスク「走る」の順にタスクの複雑度が高くなる場合がある。なお、タスクの複雑度は、種々の方法で定められることができる。例えば、第１のタスクと第２のタスクとでロボット３０の動作の成功率が異なる場合、成功率が低いタスクを複雑度が高いものとみなすことができる。また、例えば、ロボット３０の動作の実現にあたり考慮するべき事項の数が多いほど、ロボット３０の制御に必要な計算量が多いほど、タスクの複雑度が高いとみなすことができる。
【００２３】
制御装置２０は、ロボット３０の動作を制御するコンピュータ又はコンピュータシステムである。制御装置２０は、ロボット３０の動作を制御するための指示を、当該ロボット３０の駆動部（例えばアクチュエータ等）に送信する。これにより、ロボット３０の動作が制御される。
【００２４】
ロボット３０は、アクチュエータ等の駆動部を有する装置又は機器である。ロボット３０としては、例えば、図２Ａ）に示す二足歩行ロボット、図２Ｂに示すロボットアーム等が挙げられる。図２Ａに示す二足歩行ロボット及び図２Ｂに示すロボットアームには、アクチュエータ等の駆動部が含まれている。このような駆動部は、例えば、関節に相当する部分等に設けられている。
【００２５】
センサ４０は、例えば、カメラ装置や各種計測装置等である。センサ４０は、例えば、カメラ装置で撮影された画像や、計測装置で計測された駆動部の状態等を取得する。
【００２６】
なお、図１に示す学習システム１の構成は一例であって、他の構成であっても良い。例えば、本実施の形態における学習システム１では、学習装置１０と制御装置２０とが一体の装置で構成されていても良い。また、本実施の形態における学習システム１には、複数のロボット３０が含まれていても良い。また、学習装置１０と制御装置２０とは、それぞれ２つ以上用いられてもよい。
【００２７】
＜ハードウェア構成＞
次に、本実施の形態の一例における学習装置１０のハードウェア構成について、図３を参照しながら説明する。図３は、本実施の形態の一例における学習装置１０のハードウェア構成の一例を示す図である。
【００２８】
図３に示すように、本実施の形態の一例における学習装置１０は、入力装置１１と、表示装置１２と、外部Ｉ／Ｆ１３と、通信Ｉ／Ｆ１４と、ＲＡＭ（Random Access Memory）１５と、ＲＯＭ（Read Only Memory）１６と、プロセッサ１７と、補助記憶装置１８とを有する。これら各ハードウェアは、それぞれがバス１９により相互に接続されている。
【００２９】
入力装置１１は、例えばキーボードやマウス、タッチパネル等であり、ユーザが各種操作を入力するのに用いられる。表示装置１２は、例えばディスプレイ等であり、学習装置１０の各種の処理結果を表示する。なお、学習装置１０は、入力装置１１及び表示装置１２のうちの少なくとも一方を有していなくても良い。
【００３０】
外部Ｉ／Ｆ１３は、外部装置とのインタフェースである。外部装置には、記録媒体１３ａ等がある。学習装置１０は、外部Ｉ／Ｆ１３を介して、記録媒体１３ａ等の読み取りや書き込み等を行うことができる。記録媒体１３ａには、学習装置１０が有する各機能部を実現する１以上のプログラム等が記録されていても良い。
【００３１】
記録媒体１３ａには、例えば、フレキシブルディスク、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disk）、ＳＤメモリカード（Secure Digital memory card）、ＵＳＢ（Universal Serial Bus）メモリカード等がある。
【００３２】
通信Ｉ／Ｆ１４は、学習装置１０を通信ネットワークに接続するためのインタフェースである。学習装置１０が有する各機能部を実現する１以上のプログラムは、通信Ｉ／Ｆ１４を介して、所定のサーバ装置等から取得（ダウンロード）されても良い。
【００３３】
ＲＡＭ１５は、プログラムやデータを一時保持する揮発性の半導体メモリである。ＲＯＭ１６は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。ＲＯＭ１６には、例えば、ＯＳ（Operating System）に関する設定や通信ネットワークに関する設定等が格納されている。
【００３４】
プロセッサ１７は、例えばＣＰＵ（Central Processing Unit）やＧＰＵ（Graphics Processing Unit）等であり、ＲＯＭ１６や補助記憶装置１８等からプログラムやデータをＲＡＭ１５上に読み出して処理を実行する演算装置である。なお、学習装置１０は、プロセッサ１７として、ＣＰＵとＧＰＵとの両方を有していても良いし、ＣＰＵ又はＧＰＵのいずれか一方のみを有していても良い。
【００３５】
補助記憶装置１８は、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等であり、プログラムやデータを格納している不揮発性の記憶装置である。補助記憶装置１８には、例えば、ＯＳ、各種アプリケーションソフトウェア、学習装置１０が有する各機能部を実現する１以上のプログラム等がある。
【００３６】
本実施の形態における学習装置１０は、図３に示すハードウェア構成を有することにより、後述する各種処理を実現することができる。なお、図３に示す例では、本実施の形態における学習装置１０が１台の装置（コンピュータ）で実現されている場合について説明したが、これに限られない。本実施の形態における学習装置１０は、複数台の装置（コンピュータ）で実現されていても良い。
【００３７】
＜機能構成＞
次に、本実施の形態の一例における学習装置１０の機能構成について、図４を参照しながら説明する。図４は、本実施の形態の一例における学習装置１０の機能構成の一例を示す図である。
【００３８】
図４に示すように、本実施の形態の一例における学習装置１０は、シミュレーション学習部１０１と、実機学習部１０２と、複雑化部１０３と、利得判定部１０４とを有する。これら各機能部は、学習装置１０にインストールされた１以上のプログラムがプロセッサ１７に実行させる処理により実現される。
【００３９】
シミュレーション学習部１０１は、深層強化学習により、シミュレーション環境で所定のタスクを実現するためのロボット３０（正確には、ロボット３０のシミュレーションした仮想ロボット）の動作を学習する。ここで、本実施の形態におけるシミュレーション学習部１０１には、環境情報取得部１１１と、行動決定部１１２と、行動実行部１１３と、方策更新部１１４と、出力部１１５とが含まれる。
【００４０】
環境情報取得部１１１は、シミュレーション環境での環境情報st,sを取得する。ここで、環境情報st,sは、シミュレーション環境の時刻tにおける観測値である。この観測値は、シミュレーション環境におけるセンサ４０（正確には、仮想的なカメラ）により観測される情報（例えば、シミュレーション環境における把持対象物を撮影した画像や歩行経路を撮影した画像、ロボット３０の駆動部の計測値等）である。なお、これに限られず、環境情報取得部１１１は、例えば、過去数時刻分の環境情報（具体的には、例えば、予め設定された自然数Nに対して、時刻t-Nから時刻tまでの環境情報st-N,s,・・・,st,s）を取得してもよい。
【００４１】
行動決定部１１２は、シミュレーション環境における方策πsimを用いて、行動at,sを決定する。ここで、行動at,sは、シミュレーション環境の時刻tにおける駆動部の出力値である。駆動部の出力値とは、例えば、駆動部のトルク値である。本実施形態では、一例として、駆動部の出力値は、トルク値であるものとして説明するが、これに限られない。なお、行動at,sは、環境情報取得部１１１により取得された環境情報を方策πsimに入力することで決定される。
【００４２】
行動実行部１１３は、行動決定部１１２が決定した行動at,sを実行する。すなわち、行動実行部１１３は、シミュレーション環境におけるロボット３０の駆動部を、行動at,sが示すトルク値で駆動させる。これにより、シミュレーション環境でロボット３０が動作する。ロボット３０が行動at,sを実行することで、環境がst+1,sに遷移すると共に、報酬rt+1,sが得られる。ここで、報酬rt,sは、シミュレーション環境の時刻tにおける報酬であり、例えば、ユーザ等により予め定義される。
【００４３】
方策更新部１１４は、シミュレーション環境における方策πsimを更新する。すなわち、方策更新部１１４は、例えば、報酬rt,sの割引現在価値の総和として求まる利得Rsが最大となるように（より正確には、利得Rsの期待値が最大となるように）方策πsimを更新する。
【００４４】
出力部１１５は、方策更新部１１４により更新された方策πsimと、利得Rsとを出力する。
【００４５】
実機学習部１０２は、深層強化学習により、実環境で所定の動作（すなわち、シミュレーション環境で学習した所定のタスクを実現するためのロボット３０の動作）を実現するために制御値を学習する。本実施の形態においては、制御値として、必要な駆動部の電流値を学習する。ここで、本実施の形態における実機学習部１０２には、環境情報取得部１２１と、行動決定部１２２と、制御値計算部１２３と、ロボット制御部１２４と、方策更新部１２５と、出力部１２６とが含まれる。
【００４６】
環境情報取得部１２１は、実環境での環境情報st,rを取得する。ここで、環境情報st,rは、実環境の時刻tにおける観測値である。この観測値は、実環境におけるセンサ４０により観測される情報（例えば、実環境における把持対象物を撮影した画像や歩行経路を撮影した画像、ロボット３０の駆動部の計測値等）である。なお、これに限られず、環境情報取得部１２１は、例えば、過去数時刻分の環境情報（具体的には、例えば、予め設定された自然数Nに対して、時刻t-Nから時刻tまでの環境情報st-N,r,・・・,st,r）を取得してもよい。
【００４７】
行動決定部１２２は、シミュレーション環境における方策πsimを用いて、行動at,sを決定する。なお、行動at,sは、環境情報取得部１２１により取得された環境情報を方策πsimに入力することで決定される。
【００４８】
制御値計算部１２３は、行動決定部１２２により決定された行動at,sを実現するための制御値at,rを方策πrealとして計算する。例えば、制御値計算部１２３は、行動at,sが示すトルク値τtを実現する電流値at,rを方策πrealとして計算する。なお、方策πrealは、ニューラルネットワークで表される行動価値関数の期待値が環境情報st,rにおいて最大となる行動at,rである。
【００４９】
ロボット制御部１２４は、制御値計算部１２３により計算された制御値at,r（すなわち、方策πrealとして計算された制御値at,r）でロボット３０の動作を制御する。これにより、実環境でロボット３０が動作する。ロボット３０が行動at,sを実行することで（すなわち、電流値at,rによりロボット３０を制御して、当該ロボット３０が行動at,sを実行することで）、環境がst+1,rに遷移すると共に、報酬rt+1,rが得られる。ここで、報酬rt,rは、実環境の時刻tにおける報酬であり、例えば、ユーザ等により予め定義される。
【００５０】
方策更新部１２５は、実環境における方策πrealを更新する。すなわち、方策更新部１２５は、例えば、報酬rt,rの割引現在価値の総和として求まる利得Rrが最大となるように（より正確には、利得Rrの期待値が最大となるように）方策πrealを更新する。
【００５１】
出力部１２６は、方策更新部１２５により更新された方策πrealと、利得Rrとを出力する。
【００５２】
複雑化部１０３は、ロボット３０に動作を学習させるタスクを複雑化する（すなわち、タスクの複雑度を高くする。）。利得判定部１０４は、利得が所定の閾値を超えているか否かを判定する。
【００５３】
＜学習処理＞
以降では、本実施の形態における学習システム１による学習処理について、図５を参照しながら説明する。図５は、本実施の形態における学習処理の一例を示すフローチャートである。
【００５４】
シミュレーション学習部１０１は、深層強化学習により、シミュレーション環境と仮想ロボット３０とを用いて所定のタスクを実現するためのロボット３０の動作を学習する（ステップＳ１０１）。これにより、方策πsimと利得Rsとが出力される。このとき、例えば、タスクの複雑度が所定の複雑度以下である場合は、教師あり学習でロボット３０の動作を学習しても良い。
【００５５】
なお、上記の方策πsim及び利得Rsは、或るタスクVに関する方策πsim及び利得Rsであるため、より正確には、方策πsim,V及び利得Rs,Vと表される。ただし、以降では、特に断らない限り、単に、方策πsim及び利得Rsと表す。なお、シミュレーション環境での学習処理の詳細については後述する。
【００５６】
次に、利得判定部１０４は、利得Rsが所定の閾値Aを超えているか否かを判定する（ステップＳ１０２）。なお、これは、シミュレーション環境での学習が十分に行われたか否かを判定することを意味する。
【００５７】
ステップＳ１０２で利得Rsが所定の閾値Aを超えていないと判定された場合、複雑化部１０３は、タスクを複雑化する（ステップＳ１０３）。これにより、複雑化されたタスクに関して、上記のステップＳ１０１のシミュレーション環境での学習が行われる。
【００５８】
ただし、上記のステップＳ１０３で複雑化部１０３は、タスクを複雑化しなくても良い。この場合、同一の複雑度のタスクに関して、上記のステップＳ１０１のシミュレーション環境での学習が行われる。
【００５９】
一方で、ステップＳ１０２で利得Rsが所定の閾値Aを超えていると判定された場合、実機学習部１０２は、深層強化学習により、実環境で実環境のロボット３０が所定の動作（すなわち、シミュレーション環境で学習された所定のタスクを実現するためのロボット３０の動作）を実現するために必要な駆動部の電流値を学習する（ステップＳ１０４）。これにより、方策πrealと利得Rrとが出力される。
【００６０】
なお、上記の方策πreal及び利得Rrも、上記のステップＳ１０１と同様に、より正確には、方策πreal,V及び利得Rr,Vと表される。ただし、以降では、特に断らない限り、単に、方策πreal及び利得Rrと表す。なお、実環境での学習処理の詳細については後述する。
【００６１】
次に、利得判定部１０４は、利得Rrが所定の閾値Bを超えているか否かを判定する（ステップＳ１０５）。なお、これは、実環境での学習が十分に行われたか否かを判定することを意味する。
【００６２】
ステップＳ１０５で利得Rrが所定の閾値Bを超えていないと判定された場合、複雑化部１０３は、タスクを複雑化する（ステップＳ１０６）。これにより、複雑化されたタスクに関して、上記のステップＳ１０４の実環境での学習が行われる。
【００６３】
ただし、上記のステップＳ１０６において、複雑化部１０３は、タスクを複雑化しなくても良い。この場合、同一の複雑度のタスクに関して、上記のステップＳ１０４の実環境での学習が行われる。
【００６４】
一方で、ステップＳ１０５で利得Rrが所定の閾値Bを超えていると判定された場合、利得判定部１０４は、利得Rsが所定の閾値A´を超えていて、かつ、利得Rrが所定の閾値B´を超えているか否かを判定する（ステップＳ１０７）。なお、閾値A´としては、例えば、閾値A以上の値が設定される。同様に、閾値B´としては、例えば、閾値B以上の値が設定される。
【００６５】
ステップＳ１０７で利得Rsが所定の閾値A´を超えていて、かつ、利得Rrが所定の閾値B´を超えていると判定された場合、学習装置１０は、学習処理を終了する。これにより、実環境のロボット３０の各タスクの動作が学習される。
【００６６】
一方で、ステップＳ１０７で利得Rsが所定の閾値A´を超えていて、かつ、利得Rrが所定の閾値B´を超えていると判定されなかった場合、シミュレーション学習部１０１は、実環境での学習結果（すなわち、上記のステップＳ１０４で出力された方策πreal）をシミュレーション環境に反映する（ステップＳ１０８）。なお、実環境での学習結果をシミュレーション環境に反映する処理の詳細については後述する。
【００６７】
ただし、上記のステップＳ１０８は行われなくても良い。この場合、上記のステップＳ１０８が行われずに、後述するステップＳ１０９が行われる。
【００６８】
次に、複雑化部１０３は、タスクを複雑化する（ステップＳ１０９）。これにより、複雑化されたタスクに関して、上記のステップＳ１０１のシミュレーション環境での学習が行われる。
【００６９】
ここで、上記のステップＳ１０１の処理（シミュレーション環境での学習処理）の詳細について、図６を参照しながら説明する。図６は、シミュレーション環境での学習処理の一例を示すフローチャートである。なお、図６のステップＳ２０１〜ステップＳ２０２は、例えばシミュレーション環境の学習時間をｔ＝１，・・・，Ｔ１とした場合に、シミュレーション時刻ｔ毎に繰り返し実行される。また、上述したように、タスクの複雑度が所定の複雑度以下である場合、教師あり学習により学習処理を行っても良い。このときの教師データ（すなわち、正解となる行動at,s）は、ユーザにより与えられれば良い。
【００７０】
環境情報取得部１１１は、シミュレーション環境での環境情報st,sを取得する（ステップＳ２０１）。
【００７１】
次に、行動決定部１１２は、シミュレーション環境における方策πsimを用いて、タスクを実現するための行動at,sを決定する（ステップＳ２０２）。
【００７２】
次に、行動実行部１１３は、行動決定部１１２が決定した行動at,sを実行する（ステップＳ２０３）。すなわち、行動実行部１１３は、シミュレーション環境における仮想ロボット３０の駆動部を、行動at,sが示すトルク値で駆動させるシミュレーションを行う。仮想ロボット３０が行動at,sを実行することで、環境がst+1,sに遷移すると共に、報酬rt+1,sが得られる。
【００７３】
方策更新部１１４は、シミュレーション環境における方策πsimを更新する（ステップＳ２０４）。すなわち、方策更新部１１４は、例えば、報酬rt,sの割引現在価値の総和として求まる利得Rsが最大となるように方策πsimを更新する。
【００７４】
出力部１１５は、方策更新部１１４により更新された方策πsimと、利得Rsとを出力する（ステップＳ２０５）。これにより、或る所定のタスクにおける方策πsim及び利得Rsが出力される。
【００７５】
ここで、以降では、上記のステップＳ１０４の処理（実環境での学習処理）の詳細について、図７を参照しながら説明する。図７は、実環境での学習処理の一例を示すフローチャートである。なお、図７のステップＳ３０１〜ステップＳ３０４は、例えば実環境の学習時間をｔ＝１，・・・，Ｔ２とした場合に、実時刻ｔ毎に繰り返し実行される。
【００７６】
環境情報取得部１２１は、実環境での環境情報st,rを取得する（ステップＳ３０１）。
【００７７】
次に、行動決定部１２２は、シミュレーション環境における方策πsimを用いて、行動at,sを決定する（ステップＳ３０２）。
【００７８】
制御値計算部１２３は、行動決定部１２２により決定された行動at,sを実現するための制御値at,rを方策πrealとして計算する（ステップＳ３０３）。
【００７９】
ここで、行動at,sが示すトルク値をτt、電流値をC:=at,r、αを任意の係数として、制御値計算部１２３は、例えば、τt＝αC＋πrealとして方策πrealを計算する。又は、制御値計算部１２３は、例えば、τt＝πrealとして方策πrealを計算しても良い。
【００８０】
次に、ロボット制御部１２４は、制御値計算部１２３により計算された制御値at,r（すなわち、方策πrealとして計算された制御値at,r）でロボット３０の動作を制御する（ステップＳ３０４）。これにより、実環境でロボット３０が動作して、環境がst+1,rに遷移すると共に、報酬rt+1,rが得られる。
【００８１】
方策更新部１２５は、実環境における方策πrealを更新する（ステップＳ３０５）。すなわち、方策更新部１２５は、例えば、報酬rt,rの割引現在価値の総和として求まる利得Rrが最大となるように方策πrealを更新する。
【００８２】
出力部１２６は、方策更新部１２５により更新された方策πrealと、利得Rrとを出力する（ステップＳ３０６）。これにより、或る所定のタスクにおける方策πreal及び利得Rrが出力される。
【００８３】
ここで、以降では、上記のステップＳ１０８の処理（実環境での学習結果をシミュレーション環境に反映する処理）の詳細について、図８を参照しながら説明する。図８は、実環境での学習結果をシミュレーション環境に反映する処理の一例を示すフローチャートである。
【００８４】
まず、方策更新部１１４は、実環境での学習結果である方策πrealを取得する（ステップＳ４０１）。
【００８５】
次に、方策更新部１１４は、方策πrealを用いて、方策πsimを更新する（ステップＳ４０２）。なお、方策更新部１１４は、方策πrealだけでなく、例えば、方策πrealを学習する過程で取得されたデータ（例えば、各時刻ｔにおける実環境での環境情報st,r等）も用いて方策πsimを更新してもよい。
【００８６】
これにより、実環境での学習結果がシミュレーション環境に反映される。なお、方策πsimは、同一のタスクに関する方策πrealを用いる（すなわち、実環境と同様に、シミュレーション環境においても同一タスクに関する方策πsimを用いて制御値（つまり、行動at,s）を決定し、この制御値により仮想ロボット３０を駆動させる。）。
【００８７】
＜まとめ＞
以上のように、本実施の形態における学習システム１では、シミュレーション環境での学習と、実環境での学習とを、Curriculum learningによりタスクの複雑度を高くしながら、所定の順序で繰り返し行う。このとき、シミュレーション環境ではロボット３０がタスクを実現するための動作（いわゆるプランニング）を学習させて、実環境では当該動作を実現するために必要な駆動部（例えばアクチュエータ等）の制御値を学習させる。すなわち、本実施の形態における学習システム１では、シミュレーション環境での方策πsimに用いられる行動価値関数と、環境での方策πrealに用いられる行動価値関数とでそれぞれ異なるニューラルネットワークを用いる。また、本実施の形態における学習システム１では、実環境での学習結果をシミュレーション環境に反映する。
【００８８】
これにより、本実施の形態における学習システム１では、実環境とシミュレーション環境との差異が大きい場合（例えば、アクチュエータ等の駆動部で摩擦が発生したり、ロボット３０と実環境との接触が発生したりする場合等）や実環境で駆動部の動作遅れが発生するような場合であっても、シミュレーション環境での学習結果を実環境に適用しやすくできる。
【００８９】
したがって、本実施の形態における学習システム１では、ロボット３０が所定のタスクを実現するための動作を学習する時間を大幅に削減することができる。また、本実施の形態における学習システム１では、実環境での学習で、所定の動作を行うための駆動部の制御値を学習するため、例えばアクチュエータ等のモデリングが不要となる。
【００９０】
なお、本実施の形態では、ロボット３０として、二足歩行ロボットやロボットアームを例示したが、これに限られない。本実施の形態は、駆動部を有する種々のロボットが所定のタスクを実現するための動作学習に適用することができる。このようなロボットの具体例としては、パーソナルロボット、災害救助ロボット、工業用ロボット等が挙げられる。
【００９１】
本発明は、具体的に開示された上記の実施の形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【００９２】
本願は、日本国に２０１８年７月４日に出願された基礎出願２０１８−１２７８０３号に基づくものであり、その全内容はここに参照をもって援用される。
【符号の説明】
【００９３】
１        学習システム
１０      学習装置
２０      制御装置
３０      ロボット
４０      センサ
１０１    シミュレーション学習部
１０２    実機学習部
１０３    複雑化部
１０４    利得判定部
１１１    環境情報取得部
１１２    行動決定部
１１３    行動実行部
１１４    方策更新部
１１５    出力部
１２１    環境情報取得部
１２２    行動決定部
１２３    制御値計算部
１２４    ロボット制御部
１２５    方策更新部
１２６    出力部
【図１】
2020009139.tif 000003
【図２Ａ】
2020009139.tif 000004
【図２Ｂ】
2020009139.tif 000005
【図３】
2020009139.tif 000006
【図４】
2020009139.tif 000007
【図５】
2020009139.tif 000008
【図６】
2020009139.tif 000009
【図７】
2020009139.tif 000010
【図８】
2020009139.tif 000011
【手続補正書】
【提出日】令和2年12月23日(2020.12.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つのメモリと、
少なくとも１つのプロセッサと、を備え、
前記少なくとも１つのプロセッサは、
実環境における環境情報を取得することと、
前記環境情報及び第１の方策に基づいて、前記実環境のロボットの行動に関する情報を取得することと、
前記行動に関する情報及び第２の方策に基づいて、前記ロボットが前記行動を実現するための制御値に関する情報を取得することと、
前記制御値に関する情報に基づいて、前記ロボットを制御することと、
を実行可能に構成され、
前記第１の方策は、シミュレーション環境における仮想ロボットを用いて学習されたものである、
ロボット制御装置。
【請求項２】
前記第２の方策は、少なくとも前記実環境における複数のロボットのいずれか１つを用いて学習されたものである、
請求項１に記載のロボット制御装置。
【請求項３】
前記第１の方策及び前記第２の方策は、それぞれ異なるニューラルネットワークを含む、
請求項１又は請求項２に記載のロボット制御装置。
【請求項４】
前記制御値は、前記ロボットの駆動部の電流値に関する情報を含む、
請求項１乃至請求項３のいずれか１項に記載のロボット制御装置。
【請求項５】
前記行動は、前記ロボットの駆動部のトルク値に関する情報を含む、
請求項１乃至請求項４のいずれか１項に記載のロボット制御装置。
【請求項６】
前記環境情報は、少なくとも、前記実環境における画像及び前記ロボットの駆動部の計測値のいずれか１つに関する情報を含む、
請求項１乃至請求項５のいずれか１項に記載のロボット制御装置。
【請求項７】
前記行動は、少なくとも二足歩行及び物体の把持のいずれかを実現するためのものである、
請求項１乃至請求項６のいずれか１項に記載のロボット制御装置。
【請求項８】
請求項１乃至請求項７のいずれか１項に記載の制御装置と、
前記環境情報を取得するためのセンサと、
前記ロボットと、
を備えるシステム。
【請求項９】
少なくとも１つのプロセッサが、
実環境における環境情報を取得し、
前記環境情報及び第１の方策に基づいて、前記実環境のロボットの行動に関する情報を取得し、
前記行動に関する情報及び第２の方策に基づいて、前記ロボットが前記行動を実現するための制御値に関する情報を取得し、
前記制御値に関する情報に基づいて、前記ロボットを制御する、
ロボット制御方法であって、
前記第１の方策は、シミュレーション環境における仮想ロボットを用いて学習されたものである、
ロボット制御方法。
【請求項１０】
少なくとも１つのプロセッサが、
実環境における環境情報を取得し、
前記環境情報及び第１の方策に基づいて、前記実環境のロボットの行動に関する情報を取得し、
前記行動に関する情報及び第２の方策に基づいて、前記ロボットが前記行動を実現するための制御値に関する情報を取得し、
前記制御値に関する情報に基づいて、前記ロボットを制御し、
前記ロボットの制御結果に基づいて、前記第２の方策を更新する、
方策更新方法であって、
前記第１の方策は、シミュレーション環境における仮想ロボットを用いて更新されたものである、
方策更新方法。
【請求項１１】
前記少なくとも１つのプロセッサが、更に、
前記シミュレーション環境における環境情報を取得し、
前記シミュレーション環境における環境情報及び前記第１の方策に基づいて、前記仮想ロボットの行動に関する情報を取得し、
前記仮想ロボットの行動に関する情報に基づいて、前記仮想ロボットを制御し、
前記仮想ロボットの制御結果に基づいて、前記第１の方策を更新する、
請求項１０に記載の方策更新方法。
【請求項１２】
前記少なくとも１つのプロセッサが、
前記第１の方策を更新した後、前記第２の方策を更新し、
前記第２の方策を更新した後、前記第１の方策を更新する、
請求項１１に記載の方策更新方法。
【請求項１３】
前記少なくとも１つのプロセッサが、
第１のタスクを用いて前記第２の方策を更新した後、前記第１のタスクより複雑度が高い第２のタスクを用いて前記第２の方策を更新する、
請求項１０乃至請求項１２のいずれか１項に記載の方策更新方法。
【請求項１４】
前記少なくとも１つのプロセッサが、
第１のタスクを用いて前記第１の方策を更新した後、前記第１のタスクより複雑度が高い第２のタスクを用いて前記第１の方策を更新する、
請求項１１又は請求項１２に記載の方策更新方法。
【請求項１５】
前記第１のタスク及び前記第２のタスクは二足歩行であって、前記第２のタスクの歩行速度は前記第１のタスクの歩行速度より速い、
請求項１３又は請求項１４に記載の方策更新方法。
【請求項１６】
前記第１の方策及び前記第２の方策は、それぞれ異なるニューラルネットワークを含む、
請求項１０乃至請求項１５のいずれか１項に記載の方策更新方法。
【請求項１７】
前記制御値は、前記ロボットの駆動部の電流値に関する情報を含む、
請求項１０乃至請求項１６のいずれか１項に記載の方策更新方法。
【請求項１８】
前記実環境のロボットの行動は、前記ロボットの駆動部のトルク値に関する情報を含む、
請求項１０乃至請求項１７のいずれか１項に記載の方策更新方法。
【請求項１９】
前記第２の方策を用いて、前記第１の方策を更新する、
請求項１０乃至請求項１８のいずれか１項に記載の方策更新方法。
【請求項２０】
請求項１０乃至請求項１９のいずれか１項に記載の方策更新方法を用いて更新されたニューラルネットワーク。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、ロボット制御装置、システム、ロボット制御方法、方策更新方法、及びニューラルネットワークに関する。
【国際調査報告】
2020009139.tif 000012
2020009139.tif 000013
2020009139.tif 000014
2020009139.tif 000015