IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ネイバー コーポレーションの特許一覧 ▶ ネイバーラボス コーポレーションの特許一覧

特開2022-82464ロボットの変換器を基盤としたメタ模倣学習
<>
  • 特開-ロボットの変換器を基盤としたメタ模倣学習 図1
  • 特開-ロボットの変換器を基盤としたメタ模倣学習 図2
  • 特開-ロボットの変換器を基盤としたメタ模倣学習 図3
  • 特開-ロボットの変換器を基盤としたメタ模倣学習 図4
  • 特開-ロボットの変換器を基盤としたメタ模倣学習 図5
  • 特開-ロボットの変換器を基盤としたメタ模倣学習 図6
  • 特開-ロボットの変換器を基盤としたメタ模倣学習 図7
  • 特開-ロボットの変換器を基盤としたメタ模倣学習 図8
  • 特開-ロボットの変換器を基盤としたメタ模倣学習 図9
  • 特開-ロボットの変換器を基盤としたメタ模倣学習 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022082464
(43)【公開日】2022-06-01
(54)【発明の名称】ロボットの変換器を基盤としたメタ模倣学習
(51)【国際特許分類】
   G06N 20/00 20190101AFI20220525BHJP
   B25J 9/22 20060101ALI20220525BHJP
【FI】
G06N20/00
B25J9/22 Z
【審査請求】有
【請求項の数】27
【出願形態】OL
(21)【出願番号】P 2021188636
(22)【出願日】2021-11-19
(31)【優先権主張番号】63/116,386
(32)【優先日】2020-11-20
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/191,264
(32)【優先日】2021-03-03
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Blu-ray
2.SWIFT
3.SMALLTALK
4.MATLAB
5.SIMULINK
(71)【出願人】
【識別番号】505205812
【氏名又は名称】ネイバー コーポレーション
【氏名又は名称原語表記】NAVER Corporation
(71)【出願人】
【識別番号】319012978
【氏名又は名称】ネイバーラボス コーポレーション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジュリエン パレス
(72)【発明者】
【氏名】キム スンス
(72)【発明者】
【氏名】テオ カシェ
【テーマコード(参考)】
3C707
【Fターム(参考)】
3C707LV04
3C707LV05
3C707LW08
3C707LW12
3C707LW15
3C707MT11
(57)【要約】
【課題】 訓練タスク以外のタスクの実行に適応可能なようにロボットを訓練するためのシステムおよび方法を提供する。
【解決手段】 ロボットのための訓練システムは、変換器アーキテクチャを備え、ロボットのアームおよびエンドエフェクタのうちの少なくとも1つをどのように動作させるかを決定するように構成されたモデル、ロボットが訓練タスクをそれぞれ実行するための示範のセットを含む訓練データセット、および各訓練タスクの第1訓練タスクに対する示範のセットである第1示範を利用してモデルのポリシーをメタ訓練して、各訓練タスクの第2訓練タスクに対する示範のセットである第2示範を利用してモデルのポリシーを最適化するように構成された訓練モジュールを含み、訓練タスクに対する示範のセットはそれぞれ、1つ以上の示範および第1の予め決定された数未満の示範を含む。
【選択図】図3
【特許請求の範囲】
【請求項1】
ロボットのための訓練システムであって、
変換器アーキテクチャを備え、ロボットのアーム(arm)およびエンドエフェクタ(end effector)のうちの少なくとも1つをどのように動作させるかを決定するように構成されたモデル、
前記ロボットが訓練タスクをそれぞれ実行するための示範(demonstration)のセットを含む訓練データセット(training dataset)、および
それぞれの前記訓練タスクの第1訓練タスクに対する示範のセットである第1示範を利用して前記モデルのポリシーをメタ訓練(meta-train)し、
それぞれの前記訓練タスクの第2訓練タスクに対する示範のセットである第2示範を利用して前記モデルの前記ポリシーを最適化するように構成された訓練モジュールを含み、
前記訓練タスクに対する前記示範のセットはそれぞれ、1つ以上の示範および第1の予め決定された数未満の示範を含む、訓練システム。
【請求項2】
前記訓練モジュールは、強化学習を利用して前記ポリシーをメタ訓練するように構成される、請求項1に記載の訓練システム。
【請求項3】
前記訓練モジュールは、Reptileアルゴリズムおよびモデル非依存メタ学習(model-agnostic meta-learning:MAML)アルゴリズムのうちの1つを利用して前記ポリシーをメタ訓練するように構成される、請求項1に記載の訓練システム。
【請求項4】
前記訓練モジュールは、前記ポリシーを最適化する前に前記モデルの前記ポリシーをメタ訓練するように構成される、請求項1に記載の訓練システム。
【請求項5】
前記モデルは、タスクの完了に向かうかタスクの完了まで進展させるために、前記ロボットの前記アームおよび前記エンドエフェクタのうちの少なくとも1つをどのように動作させるかを決定するように構成される、請求項1に記載の訓練システム。
【請求項6】
前記タスクは、前記訓練タスクとは異なる、請求項5に記載の訓練システム。
【請求項7】
メタ訓練および前記最適化の後に、前記モデルは、前記タスクを実行するための第2の予め決定された数以下のユーザ入力示範を利用して前記タスクを実行するように構成され、
前記第2の予め決定された数は、0よりも大きい定数である、請求項5に記載の訓練システム。
【請求項8】
前記第2の予め決定された数は5である、請求項7に記載の訓練システム。
【請求項9】
前記ユーザ入力示範は、(a)前記ロボットの関節の位置、および(b)前記ロボットの前記エンドエフェクタの姿勢を含む、請求項7に記載の訓練システム。
【請求項10】
前記エンドエフェクタの前記姿勢は、前記エンドエフェクタの位置および前記エンドエフェクタの向きを含む、請求項9に記載の訓練システム。
【請求項11】
前記ユーザ入力示範は、前記タスクの実行中に前記ロボットによって相互作用されるべきオブジェクトの位置も含む、請求項9に記載の訓練システム。
【請求項12】
前記ユーザ入力示範は、前記ロボットの環境における第2オブジェクトの位置も含む、請求項11に記載の訓練システム。
【請求項13】
前記第1の予め決定された数は、10以下の定数である、請求項1に記載の訓練システム。
【請求項14】
訓練システムであって、
変換器アーキテクチャを備え、アクションを決定するように構成されたモデル、
各訓練タスクに対する示範のセットを含む訓練データセット、および
前記各訓練タスクの第1訓練タスクに対する示範のセットである第1示範を利用して前記モデルのポリシーをメタ訓練して、
前記各訓練タスクの第2訓練タスクに対する示範のセットである第2示範を利用して前記モデルの前記ポリシーを最適化するように構成された訓練モジュールを含み、
前記訓練タスクに対する前記示範のセットはそれぞれ、1つ以上の示範および第1の予め決定された数未満の示範を含む、訓練システム。
【請求項15】
ロボットのための訓練方法であって、
変換器アーキテクチャを備え、ロボットのアームおよびエンドエフェクタのうちの少なくとも1つをどのように動作させるかを決定するように構成されたモデルを記録する段階、
前記ロボットが訓練タスクをそれぞれ実行するための示範のセットを含む訓練データセットを記録する段階、
前記各訓練タスクの第1訓練タスクに対する示範のセットである第1示範を利用して前記モデルのポリシーをメタ訓練する段階、および
前記各訓練タスクの第2訓練タスクに対する示範のセットである第2示範を利用して前記モデルの前記ポリシーを最適化する段階を含み、
前記訓練タスクに対する前記示範のセットはそれぞれ、1つ以上の示範および第1の予め決定された数未満の示範を含む、訓練方法。
【請求項16】
前記メタ訓練は、強化学習を利用して前記ポリシーをメタ訓練することを含む、請求項15に記載の訓練方法。
【請求項17】
前記メタ訓練は、Reptileアルゴリズムおよびモデル非依存メタ学習(MAML)アルゴリズムのうちの1つを利用して前記ポリシーをメタ訓練することを含む、請求項15に記載の訓練方法。
【請求項18】
前記メタ訓練は、前記ポリシーを最適化する前に、前記モデルの前記ポリシーをメタ訓練することを含む、請求項15に記載の訓練方法。
【請求項19】
前記モデルは、タスクの完了に向かうかタスクの完了まで進展させるために、前記ロボットの前記アームおよび前記エンドエフェクタのうちの少なくとも1つをどのように動作させるかを決定するように構成される、請求項15に記載の訓練方法。
【請求項20】
前記タスクは、前記訓練タスクとは異なる、請求項19に記載の訓練方法。
【請求項21】
前記メタ訓練および前記最適化の後に、前記モデルは、前記タスクを実行するための第2の予め決定された数以下のユーザ入力示範を利用して前記タスクを実行するように構成され、
前記第2の予め決定された数は、0よりも大きい定数である、請求項19に記載の訓練方法。
【請求項22】
前記第2の予め決定された数は5である、請求項21に記載の訓練方法。
【請求項23】
前記ユーザ入力示範は、(a)前記ロボットの関節の位置、および(b)前記ロボットの前記エンドエフェクタの姿勢を含む、請求項21に記載の訓練方法。
【請求項24】
前記エンドエフェクタの前記姿勢は、前記エンドエフェクタの位置および前記エンドエフェクタの向きを含む、請求項23に記載の訓練方法。
【請求項25】
前記ユーザ入力示範は、前記タスクの実行中に前記ロボットによって相互作用されるべきオブジェクトの位置も含む、請求項23に記載の訓練方法。
【請求項26】
前記ユーザ入力示範は、前記ロボットの環境における第2オブジェクトの位置を含む、請求項25に記載の訓練方法。
【請求項27】
前記第1の予め決定された数は、10以下の定数である、請求項15に記載の訓練方法。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2020年11月20日に出願された米国仮出願第63/116,386号の利益を主張する。上述した出願の開示内容のすべては、本明細書の記載内容として参照されるものとする。
【0002】
本開示は、ロボット(robot)に関し、より詳細には、訓練タスク(training task)以外のタスクの実行に適応可能なようにロボットを訓練するためのシステムおよび方法に関する。
【背景技術】
【0003】
ここに記載する背景説明は、開示内容の脈絡(context:文脈)を一般的に提示することを目的とする。ここで説明する限度までの、現在列挙された発明者の作業(結果)だけでなく、本出願時に従来技術としての資格が付与されていない説明の様態は、本開示に対して従来技術として明示上にも暗示的にも認められない。
【0004】
模倣学習(imitation learning)は、ロボットが熟練度(competency)を習得することを可能にする。しかし、この概念(paradigm)では、相当な数のサンプルを効果的に実行しなければならない。ワンショット模倣学習(one-shot imitation learning)は、ロボットが、制限された示範(demonstration)のセットから操作タスク(manipulation task)を達成することを可能する。このような接近法では、タスクの特定の工学は要求せずに、与えられたタスクの初期条件の変動を実行するための鼓舞(奨励)的な結果を示した。しかし、ワンショット模倣学習は、相異する報酬または転換機能を伴うタスクの変動により、一般化には効率的でなかった。
【発明の概要】
【課題を解決するための手段】
【0005】
ロボットのための訓練システムは、変換器アーキテクチャ(transformer architecture)を備え、ロボットのアーム(arm)およびエンドエフェクタ(end effector)うちのの少なくとも1つをどのように動作させるかを決定するように構成されたモデル、ロボットが訓練タスクをそれぞれ実行するための示範(demonstration:デモンストレーション)のセットを含む訓練データセット(training dataset)、および各訓練タスクの第1訓練タスクに対する示範のセットである第1示範を利用してモデルのポリシー(policy)をメタ訓練(meta-train)して、各訓練タスクの第2訓練タスクに対する示範のセットである第2示範を利用してモデルのポリシーを最適化するように構成された訓練モジュールを含み、訓練タスクに対する示範のセットはそれぞれ、1つ以上の示範および第1の予め決定された数未満の示範を含むことを特徴とする。
【0006】
訓練モジュールは、強化学習(reinforcement learning)を利用してポリシーをメタ訓練するように構成されることを他の特徴とする。
【0007】
訓練モジュールは、Reptileアルゴリズムおよびモデル非依存メタ学習(model-agnostic meta-learning)アルゴリズムのうちの1つを利用してポリシーをメタ訓練するように構成されることを他の特徴とする。
【0008】
訓練モジュールは、ポリシーを最適化する前に、モデルのポリシーをメタ訓練するように構成されることを他の特徴とする。
【0009】
モデルは、タスクの完了に向かうかタスクの完了まで進展させるために、ロボットのアームおよびエンドエフェクタのうちの少なくとも1つをどのように動作させるかを決定するように構成されることを他の特徴とする。
【0010】
タスクは、訓練タスクとは異なることを他の特徴とする。
【0011】
メタ訓練および最適化の後に、モデルは、タスクを実行するための第2の予め決定された数以下のユーザ入力示範を利用してタスクを実行するように構成されるが、ここで、第2の予め決定された数は、0(zero)よりも大きい定数であることを他の特徴とする。
【0012】
第2の予め決定された数は、5であることを他の特徴とする。
【0013】
ユーザ入力示範は、(a)ロボットの関節の位置、および(b)ロボットのエンドエフェクタの姿勢(pose)を含むことを他の特徴とする。
【0014】
エンドエフェクタの姿勢は、エンドエフェクタの位置およびエンドエフェクタの向き(orientation)を含むことを他の特徴とする。
【0015】
ユーザ入力示範は、タスクの実行中に、ロボットによって相互作用されるべきオブジェクト(object:物体)の位置も含むことを他の特徴とする。
【0016】
ユーザ入力示範は、ロボットの環境における第2オブジェクトの位置も含むことを他の特徴とする。
【0017】
第1の予め決定された数は、10以下の定数であることを他の特徴とする。
【0018】
訓練システムは、変換器アーキテクチャ(transformer architecture)を備え、アクション(action)を決定するように構成されたモデル、各訓練タスクに対する示範のセットを含む訓練データセット、および各訓練タスクの第1訓練タスクに対する示範のセットである第1示範を利用してモデルのポリシーをメタ訓練して、各訓練タスクの第2訓練タスクに対する示範のセットである第2示範を利用してモデルのポリシーを最適化するように構成された訓練モジュールを含み、訓練タスクに対する示範のセットはそれぞれ、1つ以上の示範および第1の予め決定された数未満の示範を含むことを特徴とする。
【0019】
ロボットのための方法は、変換器アーキテクチャを備え、ロボットのアームおよびエンドエフェクタのうちの少なくとも1つをどのように動作させるかを決定するように構成されたモデルを記録する段階、ロボットが訓練タスクをそれぞれ実行するための示範のセットを含む訓練データセットを記録する段階、各訓練タスクの第1訓練タスクに対する示範のセットである第1示範を利用してモデルのポリシーをメタ訓練する段階、および各訓練タスクの第2訓練タスクに対する示範のセットである第2示範を利用してモデルのポリシーを最適化する段階を含み、訓練タスクに対する示範のセットはそれぞれ、1つ以上の示範および第1の予め決定された数未満の示範を含むことを特徴とする。
【0020】
メタ訓練は、強化学習を利用してポリシーをメタ訓練することを含むことを他の特徴とする。
【0021】
メタ訓練は、Reptileアルゴリズムおよびモデル非依存メタ学習アルゴリズムのうちの1つを利用してポリシーをメタ訓練することを含むことを他の特徴とする。
【0022】
メタ訓練は、ポリシーを最適化する前に、モデルのポリシーをメタ訓練することを含むことを他の特徴とする。
【0023】
モデルは、タスクの完了に向かうかタスクの完了まで進展させるために、ロボットのアームおよびエンドエフェクタのうちの少なくとも1つをどのように動作させるかを決定するように構成されることを他の特徴とする。
【0024】
タスクは、訓練タスクとは異なることを他の特徴とする。
【0025】
メタ訓練および最適化の後に、モデルは、タスクを実行するための第2の予め決定された数以下のユーザ入力示範を利用してタスクを実行するように構成されるが、ここで、第2の予め決定された数は、0よりも大きい定数であることを他の特徴とする。
【0026】
第2の予め決定された数は、5であることを他の特徴とする。
【0027】
ユーザ入力示範は、(a)ロボットの関節の位置、および(b)ロボットのエンドエフェクタの姿勢を含むことを他の特徴とする。
【0028】
エンドエフェクタの姿勢は、エンドエフェクタの位置およびエンドエフェクタの向きを含むことを他の特徴とする。
【0029】
ユーザ入力示範は、タスクの実行中に、ロボットによって相互作用されるべきオブジェクトの位置も含むことを他の特徴とする。
【0030】
ユーザ入力示範は、ロボットの環境における第2オブジェクトの位置も含むことを他の特徴とする。
【0031】
第1の予め決定された数は、10以下の定数であることを他の特徴とする。
【0032】
本開示に適用可能な追加の分野は、詳細な説明、特許請求の範囲、または図面によって明らかになるであろう。詳細な説明および特定の例示は、本開示をより詳しく説明することだけを目的としており、開示内容の範囲を制限しようとするものではない。
【図面の簡単な説明】
【0033】
本開示の内容は、詳細な説明と添付の図面を参照することでより完全に理解できるであろう。
図1】ロボットの一例を機能的に示したブロック図である。
図2】訓練システムの一例を機能的に示したブロック図である。
図3】制限された示範のセットだけを利用して訓練タスクとは異なるタスクを実行するためにロボットのモデルを訓練する方法の一例を示したフローチャートである、
図4】モデルの一実現例を機能的に示したブロック図である。
図5】モデルを訓練するためのアルゴリズムの一例を示した図である。
図6】テスト時間における、変換器基盤のポリシーのアテンション値(attention value)の一例を示した図である。
図7】テスト時間における、変換器基盤のポリシーのアテンション値(attention value)の一例を示した図である。
図8】モデルのエンコーダおよびデコーダの一実現例を機能的に示したブロック図である。
図9】モデルのマルチヘッドアテンションモジュール(multi-head attention module)の一実現例を機能的に示したブロック図である。
図10】マルチヘッドアテンションモジュールのスケーリングされたドット積アテンションモジュール(scaled dot-product attention module)の一実現例を機能的に示したブロック図である。 図面に示した参照番号は、類似および/または同一のエレメント(element)を識別するために複数にわたり利用する。
【発明を実施するための形態】
【0034】
ロボットは、タスクを実行するために、異なる多様な方式によって訓練されてよい。例えば、ロボットは、1つのタスクを実行するためにユーザ入力にしたがって動作することにより、専門家によって訓練されてよい。一度訓練がなされれば、ロボットは、環境またはタスクに変更が発生しない限り、その1つのタスクを繰り返し実行することができる。しかし、ロボットは、変更が発生したり異なるタスクを実行したりするために訓練が必要となる。
【0035】
本出願は、訓練タスクの示範を利用してロボットのモデルのポリシー(関数)をメタ訓練することに関する。タスクの制限された数(例えば、5以下)の示範だけを利用して訓練およびテストタスク以外のタスクの実行に適応可能にするポリシーを構成するために、ポリシーは、異なるタスクの示範を利用する最適化基盤のメタ学習を利用して最適化される。メタ学習は、学習のための学習(learning to learn)と呼ばれることもあり、制限された数の訓練例(示範)だけで新たなスキル(skill)を学習できるようにしたり、新たな環境に速やかに適応できるようにするための訓練モデルであってよい。例えば、各訓練タスクが表記された(labeled)データの小さなセットを含む訓練タスクの集合(collection)が与えられ、テストタスクからの表記されたデータの小さなセットが与えられれば、テストタスクからの新たなサンプルが表記されるようになる。この後からは、ロボットは、ユーザによる簡単な訓練だけでも、異なる多数のタスクを実行することが可能となる。
【0036】
図1は、ロボットの一例を機能的に示したブロック図である。ロボット100は、静止式または移動式であってよい。例えば、ロボットは、5自由度(degree of freedom)(DoF)ロボット、6DoFロボット、7DoFロボット、8DoFロボットであってもよいし、他の自由度を備えてもよい。
【0037】
ロボット100は、内部バッテリおよび/または交流(alternating current)(AC)電力のような外部電源によって給電される。AC電力は、コンセント(outlet)、直接接続などによって受け取ってよい。多様な実施例において、ロボット100は、誘導方式によるワイヤレス給電で電力を受け取ってもよい。
【0038】
ロボット100は、複数の関節104とアーム108を備える。各アームは、2つの関節によって連結されてよい。各関節は、ロボット100のエンドエフェクタ112の移動の自由度を取り入れてよい。例えば、エンドエフェクタ112は、グリッパー(gripper)、カッター(cutter)、ローラー(roller)、またはその他の適切な類型のエンドエフェクタであってよい。ロボット100は、アーム108およびエンドエフェクタ112を動作させるアクチュエータ116を含む。例えば、アクチュエータ116、電気モータおよび他の類型の動作デバイスを含んでよい。
【0039】
制御モジュール120は、1つ以上の異なるタスクを実行するために訓練されたモデル124を利用して、アクチュエータ116と、これにしたがってロボット100の動作を制御する。タスクの例として、オブジェクトを把持(grasp)して移動させることを含む。しかし、本出願は、他のタスクにも適用可能である。例えば、制御モジュール120は、動作を制御するためにアクチュエータ116への電力の印加を制御してよい。モデル124の訓練については、以下でさらに詳しく説明する。
【0040】
制御モジュール120は、フィードバック(feedback)および/またはフィードフォワード(feedforward)制御を利用するような1つ以上のセンサ128での測定に基づいて動作を制御してよい。センサの例としては、位置センサ(position sensor)、力覚センサ(force sensor)、トルクセンサ(torque sensor)などを含む。制御モジュール120は、1つ以上のタッチスクリーンディスプレイ、ジョイスティック(joystick)、トラックボール(trackball)、ポインタデバイス(例えば、マウス)、キーボード、および/または1つ以上の他の適切な類型の入力デバイスなどの1つ以上の入力デバイス132からの入力に基づいて、追加的または代案的に動作を制御してよい。
【0041】
本出願は、モデル124が訓練される訓練タスクとは相当に異なる、知られていなく、初めてみる、新たなタスクに対する学習に基づいて示範の一般化能力を改善させることに関する。接近法は、挑戦する設定におけるタスク転移(task transfer)を達成するために、最適化基盤のメタ学習とメトリック基盤のメタ学習との格差を繋ぐ(bridge the gap:ギャップを橋渡しする)ように説明される。制限された示範のセットによって訓練された変換器基盤のSep2Sepポリシーネットワーク(transformer-based sequence-to-sequence policy network)が利用されてよい。これは、メトリック基盤のメタ学習(metric-based meta-learning)の形態として考慮されてよい。モデル124は、最適化基盤のメタ学習を活用することにより、訓練示範のセットからメタ訓練されてよい。これは、新たなタスクに対するモデルの効率的かつ微細な調整を許容する。本明細書で説明したように訓練されたモデルは、多様な転移設定、および他の方式によって訓練されたモデルであるワンショット模倣接近法に比べて驚くほどの改善を示した。
【0042】
図2は、訓練システムの一例を機能的に示したブロック図である。訓練モジュール200は、以下で説明するように、訓練データセット204を利用してモデル124を訓練する。訓練データセット204は、異なる訓練タスクをそれぞれ実行するための示範を含む。また、訓練データセット204は、訓練タスクを実行することに関する他の情報を含んでよい。一度訓練がなされれば、モデル124は、5つ以下に制限された数の異なる示範を利用して、訓練タスクとは異なるタスクを実行するように適応してよい。
【0043】
ロボットは、その価格の合理化に伴い、居住/家庭タスクを実行するための居住設定などのような多くの最終ユーザ環境で利用されるようになった。通常、ロボット操作訓練(robotic manipulation training)は、完遂するために予め定義されて固定されたタスクを有する完全に特定された環境において、専門家ユーザによって実行される。しかし、本出願は、ロボット100が複雑かつ合成的である新たなタスクを実行できるようにするために、非専門家ユーザが制限された数の示範を提供することができる制御規範を提供する。
【0044】
これに関し、強化学習が利用されてよい。しかし、実際の環境において安全かつ効率的な探求には困難があり、報酬機能は、実際の物理的な環境でセットアップするために挑戦的(challenging)となる。代案として、モデル124が、制限された数の示範を利用して異なるタスクを効率的に実行できるようにモデル124を訓練するために、訓練示範の集合が訓練モジュール200によって利用される。
【0045】
示範は、タスクを特定するための長所を有してよい。例えば、示範は、包括的であってよく、多数の操作タスクのために利用されてよい。さらに、示範は、最終ユーザによって実行されてよく、これは、汎用システムを設計するための価値ある接近法を構成する。
【0046】
しかし、示範基盤のタスク学習は、与えられたタスクに対する成功的なポリシーとして収斂するために、大量のシステム相互作用を要求する。ワンショット模倣学習は、このような制限に円滑に対処し、制限された数の示範だけで定義された新たなタスクに直面するときに、学習されたポリシーの予想された性能を最大化することを目的とする。テスト時間に、恐らく初めて見るタスクの示範と現在の状態が与えられた時間ステップで最上のアクションを予測するために整合されるため、タスク学習のこのような接近法はメトリック基盤のメタ学習とは異なるが、メトリック基盤のメタ学習に関連するものと考慮されてよい。この接近法において、学習されたポリシーは、入力として、(1)現在の示範、および(2)ターゲットタスクを成功的に解決する1つまたは複数の示範を採択する。一度示範が提供されれば、ポリシーは、任意の追加のシステム相互作用がなくても良好な性能を達成するものと予想される。
【0047】
この接近法は、操作するためのオブジェクトの初期位置のように、同じタスクのパラメータの変動だけがある状況に制限されてよい。一例として、それぞれ個別の正六面体の初期および目標位置が、固有のタスクを定義するキューブ積層のタスクである。しかし、環境の定義がすべてのタスクに重なる限り、モデル124は、新たなタスクの示範に対して一般化されなければならない。
【0048】
本出願は、制限された示範のセットを利用してモデル124を訓練する訓練モジュール200が最適化基盤のメタ学習であることに関する。最適化基盤のメタ学習は、制限された量の示範からのテストタスクに対して効率的に微調整されるべきポリシーの初期化を生成する。この接近法において、訓練モジュール200は、(訓練データセット204における)訓練タスクのセットと関連する示範の利用可能な集合を利用してモデル124を訓練する。この場合、ポリシーは、現在の観察に対するアクションを決定する。テスト時間に、ポリシーは、ターゲットタスクの利用可能な示範を利用して微調整される。微調整されたモデルのパラメータセットは、タスクを完全に捉える(capture)必要がある。
【0049】
本出願は、制限された量の示範を利用することで、同じタスクの変動を超え、すべてのロボット操作タスクに転移(transfer)を実行するために、メトリック基盤のメタ学習と最適化基盤のメタ学習の格差を繋ぐようにモデル124を訓練する訓練モジュール200について説明する。先ず、訓練は、模倣学習の変換器基盤のモデルを利用する。次に、訓練は、Few-Shotおよびメタ模倣学習を利用してモデル124をメタ訓練するために最適化基盤のメタ学習を活用する。本明細書で説明する訓練は、モデル124をターゲットタスクとして微調節しながら、少数の示範の効率的な利用を許容する。本明細書で説明するように、訓練されたモデル124は、多様な設定においけるワンショット模倣フレームワークと比べて驚くべき改善を示した。一例として、本明細書で説明するように、訓練されたモデル124は、15未満の示範を有する完全に新しい操作タスクの100回の出現に対して100%の成功を得ることができた。
【0050】
モデル124は、最終ユーザによって提供された、予め決定された数未満の示範(例えば、5つ)に基づいて最終ユーザタスクを効率的に学習するための(変換器アーキテクチャに基づいた)変換器基盤のモデルである。モデル124は、制限されたユーザ示範のセットからの異なるタスクを実行するためのメトリック基盤のメタ模倣学習を実行するように構成される。本明細書は、Reptileアルゴリズムを実行することのできる、メトリック基盤のメタ学習および最適化基盤のメタ学習に基づく示範に基づいて複雑なロボットアーム操作を学習するための基本的なスキルを取得して転移するための方法について説明する。本明細書で説明する訓練は、示範に基づいて、ロボットアーム制御における最終ユーザタスクを取得するための効率的な接近法を構成する。接近法は、示範が、(1)エンドエフェクタ112のユークリッド空間(Euclidean space)における位置、(2)制御されたアーム(複数可)の観察角度と位置のセット、(3)制御されたアーム(複数可)の関節とトルクのセットを含むことを許容する。
【0051】
本明細書で説明する訓練は、少なくとも、RLがターゲット化された環境を探求するためにより大きい数の示範を要求することができ、当面した(at hand:手近な)タスクを定義するために報酬機能を特定することを要求することができるという点において、強化学習(reinforcement learning:RL)よりも優れる。結果とし、RLは、時間消耗的であり、演算的に非効率的であり、報酬機能の定義が示範を提供するよりも(特に、最終ユーザには)たびたび困難となる。さらに、ロボットアームのような物理的な環境において、各タスクのための報酬機能の定義は、挑戦的となることもある。マルコフ決定過程(Markovian Decision Processes:MDP)の形式主義(formalism)を利用するタスクの定義を超え、最終ユーザが制限された数の示範を利用して新たなタスクを容易に定義することを許容する規範が好ましい。
【0052】
示範からの学習は、報酬機能の探求または非条件的な利用可能性を要求しない。本明細書で説明する訓練は、現実的な環境におけるタスク転移の効率的な性能を許容する。報酬機能のユーザセットアップが要求されない。環境の探求が必要ない。制限された数の示範は、モデル124を訓練するために利用された訓練タスクのうちの1つとは異なるタスクを実行するようにモデル124を訓練するために利用されてよい。これは、Few-Shot模倣学習モデル(imitation learning model)が訓練タスクとは異なるタスクを成功的に実行することを可能にする。訓練モジュール200は、ロボット100の利用時に、ユーザからの制限された数の示範に基づいてモデル124の学習/訓練を実行するためにロボット100内で実現されてよい。
【0053】
本出願は、ワンショット模倣学習規範をタスクの予め定義されたセットに対してメタ学習すること、および示範に基づいて最終ユーザタスクを微調整することに拡張される。本明細書で説明する訓練は、示範のより優れた利用のために変換器基盤のモデルを学習することにより、ワンショット模倣モデルに比べて改善を示す。このような意味において、本明細書で説明する訓練およびモデル124は、メトリック基盤のメタ学習と最適化基盤のメタ学習の格差を繋ぐ。
【0054】
Few-Shot模倣学習は、ターゲット化されたタスクの示範を利用してタスクを実行するためのスキルを取得するという問題を考慮する。ロボット操作の脈絡では、最終ユーザが提供した、制限された示範のセットからのタスクを実行するためにポリシーを学習できるようにすることに価値がある。同じ環境の異なるタスクからの示範が共通して学習されてよい。マルチタスクおよび転移学習は、単一タスクを越えた適用可能性を備えるポリシーを学習するという問題を考慮する。コンピュータビジョンおよび制御におけるドメイン適応は、各スキルを独立的に得るためにかかった時間よりも速く多数のスキルを取得することを許容する。示範による順次的な学習は、制限された示範のセットだけを有する新たなタスクを成功させるために、以前のタスクから十分な知識を捉えてよい。
【0055】
(例えば、変換器アーキテクチャを備える)アテンション基盤のモデル(attention based model)は、考慮された示範に対して適用されてよい。本出願は、示範に対する、さらに現在の状態から利用可能な観察(observation)に対するアテンションモデルの適用に関する。
【0056】
最適化基盤のメタ学習は、少量のデータで学習するために利用されてよい。この接近法は、訓練タスクの集合を利用してモデル初期化を直接的に最適化することを目的とする。この接近法は、タスク上の分布に対する接近を仮定してよく、ここで、各タスクは、例えば、異なる類型のオブジェクトおよび目的を伴うロボット操作タスクである。この分布から、この接近法は、タスクの訓練セットおよびテストセットをサンプリングすることを含む。モデル124は、訓練データセットの供給を受け、制限された量の微調整(訓練)動作後にテストセットに対する優れた性能を備えるエージェント(agent)(ポリシー)を生成する。各タスクは学習問題に対応するため、タスクに対する優れた実行は、効率的な学習に対応する。
【0057】
1つのメタ学習接近法は、回帰型ネットワーク(recurrent network)の加重値(weight)でエンコードされる学習アルゴリズムを含む。最急降下法(gradient descent:勾配降下法)は、テスト時間に実行されなくてよい。この接近法は、次の段階を予測するための長・短期記憶(long short term memory:LSTM)で利用されてよく、Few-Shot分類で、そして部分的に観察可能なマルコフ決定過程(partially observable Markov decision process:POMDP)設定のために利用されてよい。メトリック基盤のメタ学習と呼ばれる第2方法は、ポイントをそのメトリックを利用するその例示と整合することにより、例示の小集合に対してポイントに対する予測を生成するためのメトリックを学習する。ワンショット模倣のような示範からの模倣学習は、この方法と関連してよい。
【0058】
他の接近法は、新たなタスクに対するテスト時間に微調整されるネットワークの初期化を学習するものである。この接近法の一例としては、大きなデータセットを利用して事前訓練し、より小さなデータセットに対して微調整するものである。しかし、このような事前訓練接近法は、微調整のために優れた初期化を学習することを保障せず、優れた性能のためにad-hoc調節が要求される。
【0059】
最適化基盤のメタ学習は、このような初期化に対して性能を直接的に最適化するために利用されてよい。2次微分項(second derivative term)を無視する、Reptileと呼ばれる変種も開発された。Reptileアルゴリズムは、一部の軽度情報を失うことを犠牲にしながら2次微分演算の問題を回避するが、改善された結果を提供する。Reptileアルゴリズムの利用によるメタ訓練/学習の例示を提供するが、本出願は、モデル非依存メタ学習(MAML)最適化アルゴリズムのような他の最適化アルゴリズムにも適用可能である。MAML最適化アルゴリズムに関しては、本明細書の全般にわたって参照される文献[Chelsea Finn,Pieter AbbeelおよびSergey Levine,“Model-agnostic meta-learning for fast adaptation of deep networks”,ICML,2017]で説明されている。
【0060】
本出願は、ロボットアーム制御の順次的な決定問題のFew-Shot模倣のための最適化基盤のメタ学習の利点について説明する。
【0061】
模倣学習の目標は、タスクを実行するために提供された制限された示範のセットで表現された挙動を模倣するモデル124のポリシー
【数1】
を訓練することであってよい。このようなデータの活用に対する2つの接近法は、逆強化学習(inverse reinforcement learning)と挙動複製(behavior cloning)を含む。
【0062】
ロボットプラットフォーム(robotic platform)のような連続的なアクション空間の場合に、訓練モジュール200は、そのパラメータ
【数2】
に対して示範された、そして学習された挙動の差を最小化するために、確率論的最急降下法(stochastic gradient descent)によってポリシーを訓練してよい。
【0063】
挙動複製に対する拡張として、ワンショット模倣学習は、制限された量の示範からの初めてみる新たなタスクに適応することが可能なメタポリシーを学習することに関する。本来、接近法は、ターゲットタスクの単一軌跡から学習するように提案されていた。しかし、この設定は、ターゲットタスクの多数の示範が訓練のために利用可能な場合に、Few-Shot学習に拡張される。
【0064】
本出願は、タスクの知られていない分布
【数3】
と、これからサプリングされたメタ訓練タスクのセット
【数4】
を仮定してよい。各メタ訓練タスク
【数5】
に対して、示範のセット
【数6】
が提供される。各示範dは、そのタスクに対する成功的な挙動の{観察:アクション}tupleの時間的シーケンス
【数7】
である。このメタ訓練示範は、一部の例においては、ロボットのユーザ入力/動作、または発見的ポリシー(heuristic policy)に応答して生成されてよい。シミュレートされた環境において、強化学習は、軌跡がサンプリングされるポリシーを生成するために利用されてよい。各タスクは異なるオブジェクトを含んでよく、ポリシーからの異なるスキルを要求してよい。タスクは、例えば、到達、プッシュ(push)、スライディング、把持、配置などであってよい。各タスクは、要求されたスキルの固有の組み合わせによって定義され、オブジェクトの本質および位置はタスクを定義する。
【0065】
ワンショット模倣学習技法は、現在の観察otと、実行すべきタスクに対応する示範dの両方を入力として採択してアクションを出力するメタポリシー
【数8】
を学習する。観察は、関節の現在の位置(例えば、座標)およびエンドエフェクタの現在の姿勢を含む。異なる示範を調節/訓練することは、異なるタスクが同じ観察に対して実行されることを招来する。
【0066】
訓練中に、タスク
【数9】
がサンプリングされ、このタスクに対応する2つの示範dおよびdは、タスクを達成するために訓練モジュール200によってサンプリング/決定される。2つの示範は、完了に向かうかタスクを完了するために最上の2つの示範に基づいて選択されてよい。メタポリシーは、この2つの示範dのうちの1つに対して訓練モジュール200によって訓練され、他の示範dからの専門家観察アクションとのペアに対する次の損失が最適化される。
【0067】
【数10】
【0068】
ここで、
【数11】
は、Lnorm、または他の適切な損失関数のようなアクション推定損失関数(action estimation loss function)である。
【0069】
ワンショット模倣学習損失は、すべてのタスクおよびすべての対応可能な示範のペアにわたる合算を含む。
【0070】
【数12】
【0071】
ここで、Mは、訓練タスクの総数である。
【0072】
本出願は、各ドメインに関連する2つの示範を組み合わせることに関する。先ず、本出願は、ポリシーとしての変換器アーキテクチャに基づいたFew-Shot模倣モデルを利用する。本明細書で利用されてモデル124の変換器アーキテクチャで利用される変換器アーキテクチャは、本明細書の全般にわたって参照される文献[Ashish Vaswani,Noam Shazeer,Niki Parmar,Jakob Uszkoreit,Llion Jones,Aidan N Gomez,tukasz KaiserおよびIllia Polosukhin,“Attention is all you need”,In I.Guyon,U.V.Luxburg,S.Bengio,H.Wallach,R.Fergus,S.VishwanathanおよびR.Garnett,編集者、Advances in Neural Information Processing Systems 30,pages5998-6008,Curran Associates,Inc.,2017]で説明される。次に、本出願は、最適化基盤のメタ訓練を利用してモデルを最適化することに関する。
【0073】
上述したように、モデル124のポリシーネットワークは、変換器基盤のニューラルネットワークアーキテクチャである。モデル124は、変換器アーキテクチャで取り入れたモデル124のマルチヘッド型アテンション層(multi-headed attention layer)を利用して入力示範を脈絡化する(contextualize:文脈によって解釈可能にする)。変換器ネットワークのアーキテクチャは、入力示範と現在のエピソード/観察との対応性のより良好なキャプチャを許容する。モデル124の変換器アーキテクチャは、操作タスクの示範の順次的な本質をプロセッシングするために適切である。
【0074】
本出願は、ロボット操作のために、示範基盤の学習のためのスケーリングされたドット積アテンションおよび変換器アーキテクチャを利用する。モデル124は、エンコーダモジュールおよびデコーダモジュールを含む。これらは、バッチノーマライゼーション(batch normalization)と関連するマルチヘッド型アテンション層と完全に接続された層の積層体(スタック)を含む。示範基盤の学習のためにモデル124を適応させるために、エンコーダは、完遂のためのタスクの示範を入力として採択し、デコーダは、現在のエピソードのすべての観察を入力として採択する。
【0075】
設計によっては、変換器アーキテクチャは、すべての演算子が交換性(commutative)を有するため、その入力をプロセッシングするときに順序の情報を有さず、順序の情報を利用しない。時間的エンコードが利用されてよいが、本出願は、入力シーケンスそれぞれの次元に対する異なる周期および位相を有する正弦波(sinusoid)の混合を利用する。アクションモジュールは、エンコーダおよびデコーダモジュールの出力に基づいて次の実行のためのアクションを決定する。制御モジュール120は、次のアクションにしたがってロボット100を動作させる。
【0076】
また、本出願は、(例えば、アクションモジュールで)モデル124のポリシーネットワークを事前訓練するための最適化基盤のメタ学習を利用する。最適化基盤のメタ学習は、制限された数のアップデートを備えたポリシーネットワークを効率的に微調整するために、タスク
【数13】
のセットに対してパラメータ
【数14】
のセットを事前訓練する。すなわち、
【数15】
であり、
【数16】

【数17】
からサンプリングされたデータを利用して
【数18】
回にわたりアップデートする演算子である。
【0077】
演算子Uは、
【数19】
からサンプリングされたデータの一括処理量(batch)に対して最急降下法またはAdam最適化を実行することに対応する。モデル非依存メタ学習は、
【数20】
のような問題を解決する。与えられたタスク
【数21】
に対して、内部ループ最適化は、タスクIから採択された訓練サンプルを利用して演算され、損失は、タスクJから採択されたサンプルを利用して演算される。Reptileは、タスクを繰り返しサンプリングし、タスクに対して訓練を行い、タスクに対する訓練された加重値に向かって初期化を移動させることにより、接近法を単純化する。Reptileは、明細書の全般にわたり参照される文献[Alex NicholおよびJohn Schulman,“Reptile:a scalable metalearning algorithm”,arXiv:1803.02999v1,2018]で詳しく説明される。
【0078】
最終ユーザタスクの示範から微調整されるポリシーを訓練することは、特に、ロボットアームの制御に適する。本出願は、示範のセットによって定義されたタスクにわたるReptile最適化基盤のメタ学習アルゴリズムを利用する。訓練データセットは、モデル124をメタ訓練するために利用される多様なタスクに対する示範を含む。制限された数の示範だけが(例えば、テスト中および/またはその最終環境で)異なるタスクを実行するようにロボット100を訓練するために利用されるため、モデル124は、最終ユーザからのような、制限された数の示範だけで効率的に微調整が可能なように訓練される。示範は、テスト時間にポリシーの入力である。
【0079】
上述したように、先ず、モデル124のポリシーは、各訓練タスクに対する訓練示範のセットを利用して最適化基盤のメタ訓練を行う。最適化基盤のメタ訓練後に、ポリシーの微調整は、2つの部分で実行される。訓練タスクの第1セットは、ポリシーをメタ訓練するために維持され、訓練タスクの第2セットは、早期打切り(early stopping)を利用して有効性検査(validation)のために利用される。
【0080】
評価の順序は、各有効性検査タスクに対してモデル124を微調整し、これに対して
【数22】
を演算することを含む。訓練タスクとは異なる新たなタスクを実行するために、制限された示範のセットが制御モジュール120に提供される。制限された示範のセットは、アーム108および/またはエンドエフェクタ112の動作を引き起こさせる入力デバイス132であるユーザ入力に応答して得られる。制限された示範のセットは、5つ以下であってよい。上述したように、各示範は、各関節の座標とエンドエフェクタ112の姿勢を含む。エンドエフェクタ112の姿勢は、エンドエフェクタの位置(例えば、座標)と向きを含む。また、各示範は、ロボット100によって操作されるべきオブジェクトの位置、1つ以上の他の関連するオブジェクト(例えば、回避すべきものや、オブジェクトの操作に関連するオブジェクトなど)の位置などのように実行すべき新たなタスクに関する他の情報を含んでよい。
【0081】
訓練の微調整の局面中に、制限された示範のセットからできるだけ多くの情報を抽出するために、訓練モジュール200は、示範のすべての利用可能なペアのうちからサンプリングすることにより、(以前にメタ訓練された)モデル124を最適化する。テスト時間に利用可能な1つの示範の極端において、調節示範およびターゲット示範は同一となる。
【0082】
実行中に複数の示範が利用可能な場合には、これらの示範は一括処理方式によってプロセッシングされ、アクションに対する予想が決定される。このような意味において、モデル124は、この後からは、Few-Shot方式を利用してよい。基準線として、訓練モジュール200は、同じポリシーアーキテクチャを維持するために、入力によるタスクの識別とともに、またはこのようなタスクの識別なく、マルチタスク学習アルゴリズムを利用してよい。この場合に、訓練中には、訓練モジュール200が訓練セットのタスクの全体的な分布を利用して、訓練および有効性検査セットに対する示範をサンプリングする。
【0083】
図3は、訓練タスクとは異なるタスク(および/または訓練タスク)を実行するようにモデル124を訓練する方法の一例を示したフローチャートである。制御は段階304から始まるが、ここで、訓練モジュール200は、メモリ内における訓練データセット204からの訓練タスクそれぞれを実行するための訓練示範を得る。訓練タスクは、メタ訓練タスク、有効性検査タスク、およびテストタスクを含む。
【0084】
段階308で、訓練モジュール200は、タスクに対する示範(例えば、ユーザ入力示範)をサンプリングするように構成されなければならないモデル124のポリシーをメタ訓練する。この後、モデル124は、タスクを実行するために、上述したように示範のペアを決定してよい。上述したように、モデル124は、変換器アーキテクチャを備える。訓練モジュール200は、例えば、強化学習を利用してポリシーを訓練してよい。段階312で、訓練モジュール200は、モデル124のポリシーを最適化するために最適化基盤のメタ訓練を適用する。図5は、メタ訓練のための疑似コード(pseudo code)の一部分の一例を示した図である。図5に示すように、メタ訓練は、訓練データセット(Tr)におけるそれぞれの訓練タスク(T)に対し、タスクに対する訓練示範のペア(例えば、すべてのペア)の一括処理量がポリシーをアップデートするために利用されるWiを演算するために選択されて利用されてよい。これは、すべての訓練タスクに対して実行される。
【0085】
訓練モジュール200は、テストタスクに対するテスト示範を利用して最適化を適用してよい。訓練モジュール200は、例えば、最適化のためのReptileアルゴリズムまたはMAMLアルゴリズムを適用してよい。
【0086】
段階316で、訓練モジュール200は、有効性検査のために、すべての訓練タスクに基づいてモデル124のポリシーをメタ訓練する。図5は、有効性検査のための疑似コードの一部分の一例を示した図である。図5に示すように、有効性検査は、有効性検査データセット(Te)におけるそれぞれの有効性検査タスク(T)に対し、そのタスクに対する有効性検査の示範のすべてのペア
【数23】
および損失Lbcを演算するために選択されて利用されてよい。タスクに対する損失Lbcは、有効性検査のための有効性検査の損失に加算される。これは、すべての訓練タスクに対して実行される。早期打切りは、有効性検査の損失が予め決定された量を超過するだけ変更するなどの過剰適合(overfitting)を防ぐために、有効性検査の損失に基づいて実行されてよい。
【0087】
メタ訓練および有効性検査は、モデル124がユーザ入力の示範のような制限された数(例えば、5以下)の示範を利用して(訓練タスクとは)異なるタスクに適応し、このようなタスクを実行することを可能にする。
【0088】
段階320で、訓練モジュール200は、テストタスクとも呼ばれる、訓練タスクのうちのテストタスクを利用してモデル124をテストしてよい。訓練モジュール200は、テストに基づいてモデル124を最適化してよい。図3の段階316および段階320については、図5を参照しながら説明する。
【0089】
図5は、テストのための疑似コードの一部分の一例を示した図である。例えば、図5に示すように、テストは、テストタスクを実行するために訓練され、有効性検査がなされたモデル124を実行してよい。テストデータセット(Ts)におけるテストタスク(T)に対し、このテストタスクに対するテスト示範のすべてのペアは、テストタスクを実行するためのモデル124の相対的な能力を反映する
【数24】
および損失Lbcを演算するために選択されて利用される。テストタスクはそれぞれ、予め決定された数未満の示範を含む。メタ訓練されて有効性検査がなされたモデル124の報酬および成功率は、訓練モデル200によって決定される。これは、すべてのテストタスクに対して実行される。
【0090】
メタ訓練、有効性検査、およびテストは、モデル124の報酬および/または成功率が予め決定された値よりも大きいか、メタ訓練、有効性検査、およびテストの予め決定された数の事例が実行されたときに完了されてよい。
【0091】
一度メタ訓練および最適化が完了すれば、モデル124は、ユーザ入力示範/監督された訓練のような、制限された示範のセットを有する訓練タスクとは異なるタスクを実行するために利用されてよい。
【0092】
タスクの例は、制御されたアームのエンドエフェクトのサポートによって、初期位置から目標位置にオブジェクトを変位させるようなプッシュを含む。プッシュとは、ボタンを押したりドアを閉めたりするなどの操作タスクを含む。また、到達は、これとは異なるタスクであって、エンドエフェクトの位置を目標位置に変位させることを含む。一部のタスクでは、環境に障害物が存在することがある。把持(Pick)および配置(Place)タスクは、オブジェクトを把持すること、オブジェクトを目標位置に配置することを意味する。
【0093】
図4は、モデル124の変換器アーキテクチャの一例を機能的に示したブロック図である。モデル124は、並列に演算されるh個の「ヘッド(head)」を含むマルチヘッド型アテンション層を含む。ヘッドそれぞれは、dt次元への(1)キー
【数25】
、(2)クエリ
【数26】
、および(3)値
【数27】
と呼ばれる3つの線形投影を実行する。
【0094】
【数28】
【0095】
i={1、・・・、h}に対し、[.]1:Tは行型の連結演算子(row-wise concatenation operator)であるが、ここで、投影は、
【数29】
となるように構成されたパラメータ行列である。
【0096】
入力特徴の個別のセットの3つの変換は、入力ベクトルそれぞれの脈絡化された表現を演算するために利用される。それぞれのヘッドに対して独立的に適用されたスケーリングされたドットアテンション(scaled-dot attention)は、次のように定義される。
【0097】
【数30】
【0098】
結果的なベクトルは、dt-次元の出力空間で定義される。各ヘッドは、入力ベクトル間の異なる類型の関係を学習し、これらを変換することを目的とする。その次に、それぞれの層の出力は、それぞれの入力の脈絡化された表現を得るためにhead{1,h}によって連結(concatenate)され、線形的に投影され、それぞれのヘッドから独立的に累積したすべての情報をMで併合する。
【0099】
【数31】
【0100】
ここで、
【数32】
である。
【0101】
変換器アーキテクチャのヘッドは、入力シーケンス間の多数の関係の探知を許容する。PPOパラメータの例は、以下に示すとおりである。しかし、本出願は、他のPPOパラメータおよび/または値にも適用可能である。
【0102】
【表1】
【0103】
異なる環境では性能に差が発生することがあるため、観察および報酬動作の平均および分散が、正規化のために利用されてよい。
【0104】
回帰型モデルパラメータの例は、以下に示すとおりである。しかし、本出願は、他の回帰型モデルパラメータにも適用可能である。
【0105】
【表2】
【0106】
変換器(変換器モデルパラメータ)アーキテクチャのパラメータの例は、以下に示すとおりである。しかし、本出願は、他の変換器モデルパラメータおよび/または値にも適用可能である。
【0107】
【表3】
【0108】
Reptileアルゴリズムのメタ訓練パラメータの例は、以下に示すとおりである。しかし、本出願は、他のパラメータおよび/または値にも適用可能である。
【0109】
【表4】
【0110】
多様な実施例において、早期打切りは、テスト/有効性検査タスクに対する平均二乗エラー損失に対するものであり、訓練中に利用されてよい。
【0111】
例示的なメタ訓練、マルチ-タスク(ハイパー)パラメータの例は、以下に示すとおりである。しかし、本出願は、他のパラメータおよび/または値にも適用可能である。
【0112】
【表5】
【0113】
訓練モジュール200は、時間の経った最適化モメンタム(momentum)を維持することを回避するように、各タスクのカスタム間で最適化器の状態を再設定してよい。
【0114】
図5は、本明細書で説明した、メタ学習および微調整アルゴリズムの3つの連続段階に対するアルゴリズムのコードの一例を示した図である。先ず、訓練タスク
【数33】
により、訓練モジュール200は、訓練タスクのセットに対してReptileアルゴリズムを利用するように、モデル124のポリシーをメタ訓練する。次に、評価タスク
【数34】
により、訓練モジュール200は、規則化である有効性検査タスクに対して早期打切りを利用する。この設定において、訓練モジュール200は、それぞれのタスクに対してメタ訓練されたモデルを個別に微調整すること、および有効性検査の挙動損失を演算することを含む有効性検査を実行する。最後に、テストタスク
【数35】
により、訓練モジュール200は、対応する示範に対してポリシーを微調整することにより、モデル124をテストする。訓練の一部分において、微調整されたポリシーは、メタワールド(Meta-World)環境のような環境においてシミュレーションされたエピソードによって累積された報酬および成功率の側面で評価される。
【0115】
図6および図7は、テスト時間の変換器基盤のポリシーのアテンション値の一例を示した図である。最初の図面は、入力示範を脈絡化するエンコーダの第1層のセルフアテンション値(self-attention value)を示している。中間の図は、現在のエピソードを脈絡化するデコーダの第1層のセルフアテンション値である。最後の図は、示範のエンコードされた表現と現在のエピソードの間で演算されたアテンションである。
【0116】
エンコーダおよびデコーダ表現は、異なる相互作用方式を表現する。示範に対するセルフアテンションは、当面したタスクの重要な段階を捉えてよい。高い対角線のセルフアテンション値は、現在のエピソードを脈絡化するときに存在する。これは、ポリシーが、より過去の観察よりも最近の観察に更なる注意を傾けるように訓練されることを意味する。ほとんどの時間では最後の4つのアテンション値が最も高く、これは、モデルがロボットアームシミュレーションで慣性(inertia)を掴むことを示す。
【0117】
最後の行から、示範と現在のエピソードの間で演算された高いアテンション値の垂直パターンが現れた。その値は、図6に示すバスケットボール-ボール-v1(basket-ball-v1)においてボールを取ったり、図7に示すペグ-アンプラグ-側部-v1(peg-unplug-side-v1)でペグを取ることのように、オブジェクトに接近し、目標位置でオブジェクトを把持し、オブジェクトを配置するような高いスキルおよび精密度が求められる示範の段階に対応してよい。高い値の帯域は垂直に薄くなることがある。これは、ペグ-アンプラグ-側部-v1の例において顕著である。これは、ロボットが一度オブジェクトを取れば、タスクの挑戦的な部分が行われることを意味する。
【0118】
再び図4を参照すると、入力埋め込みモジュール404は、埋め込みアルゴリズム(embedding algorithm)を利用して示範(d)を埋め込む。埋め込みは、エンコードと呼ばれてもよい。位置エンコードモジュール408は、位置エンコードを生成するためにエンコードアルゴリズムを利用し、ロボットの現在位置(例えば、関節やエンドエフェクタなど)をエンコードする。
【0119】
加算器モジュール412は、位置エンコードを入力埋め込みモジュール404の出力に加算する。例えば、加算器モジュール412は、位置エンコードを入力埋め込みモジュール404のベクトル出力に連結してよい。
【0120】
変換器エンコーダモジュール416は、畳み込みニューラルネットワーク(convolutional neural network)を含んでよく、変換器アーキテクチャを備え、変換器エンコードアルゴリズムを利用して加算器モジュール412の出力をエンコードする。
【0121】
同じように、入力埋め込みモジュール420は、入力埋め込みモジュール404が利用するものと同じ埋め込みアルゴリズムを利用して示範(d)を埋め込む。示範dおよびdは、上述したように、訓練モジュール200によって決定される。位置エンコードモジュール424は、位置エンコードモジュール408と同じエンコードアルゴリズムのような、位置エンコードを生成するためのエンコードアルゴリズムを利用してロボットの現在位置(例えば、関節やエンドエフェクタなど)をエンコードする。この例において、位置エンコードモジュール424は省略されてよく、位置エンコードモジュール408の出力が利用されてよい。
【0122】
加算器モジュール428は、位置エンコードを入力埋め込みモジュール420の出力に加算する。例えば、加算器モジュール428は、位置エンコードを入力埋め込みモジュール420のベクトル出力に連結してよい。
【0123】
変換器デコーダモジュール432は、畳み込みニューラルネットワーク(convolutional neural network:CNN)を含んでよく、変換器アーキテクチャを備え、変換器デコードアルゴリズムを利用して加算器モジュール428の出力および変換器エンコーダモジュール416の出力をデコードする。変換器デコーダモジュール432の出力は、双曲線正接(hyperbolic tangent:tanH)関数440が適用される前に、線形層436によってプロセッシングされる。多様な実施例において、双曲線正接関数440は、softmax層に代替されてよい。出力は、タスクの完了に向かうかタスクの完了まで進展するために採択されるべき次のアクションである。
【0124】
操作の例について上述したが、本出願は、他の類型の(操作以外の)ロボットタスクおよび非ロボットタスクにも適用可能である。
【0125】
図8は、変換器エンコーダモジュール416および変換器デコーダモジュール432の一例を示した機能的なブロック図である。加算器モジュール412の出力は、変換器エンコーダモジュール416に入力される。加算器モジュール428の出力は、変換器デコーダモジュール432に入力される。
【0126】
変換器エンコーダ416は、N=6の同じ層の積層体を含んでよい。各層は、2つのサブ層を有してよい。第1サブ層は、マルチヘッドセルフアテンションメカニズム(モジュール)804であってよく、第2サブ層は、位置別に完全接続されたフィードフォワードネットワーク(モジュール)808であってよい。加算および正規化は、加算モジュール812および正規化モジュール816により、マルチヘッドアテンションモジュール804およびフィードフォワードモジュール808の出力に対して実行されてよい。残りの接続は、層正規化に先行する2つのサブ層それぞれの周りで利用されてよい。すなわち、各サブ層の出力は、LayerNorm(x+Sublayer(x))であるが、ここで、Sublayer(x)は、サブ層自体によって実現された関数である。このような残りの接続を容易にするために、すべてのサブ層だけでなく、埋め込み層も次元d=512の出力を生成してよい。
【0127】
変換器デコーダモジュール432も、N=6の同じ層の積層体を含んでよい。変換器エンコーダモジュール416のように、変換器デコーダモジュール432は、マルチヘッドアテンションモジュール820を含む第1サブ層、およびフィードフォワードモジュール824を含む第2サブ層を含んでよい。加算および正規化は、加算モジュール828および正規化モジュール832により、マルチヘッドアテンションモジュール820およびフィードフォワードモジュール824の出力に対して実行されてよい。2つのサブ層に追加して、変換器デコーダモジュール432も、変換器エンコーダモジュール416の出力に対して(マルチヘッドアテンションモジュール836により)マルチ-ヘッドアテンションを実行する第3サブ層を含んでよい。変換器エンコーダモジュール416と同じように、残りの接続は、層正規化に先行するサブ層それぞれの周りで利用されてよい。言い換えれば、加算および正規化は、加算および正規化モジュール840により、マルチヘッドアテンションモジュール836の出力に対して実行されてよい。変換器デコーダモジュール432のセルフアテンションサブ層は、位置が後続位置に注目することを防ぐように構成されてよい。
【0128】
図9は、マルチヘッドアテンションモジュールの一実現例の機能的なブロック図であり、図10は、マルチヘッドアテンションモジュールのスケーリングされたドット積アテンションモジュールの一実現例の機能的なブロック図である。
【0129】
(マルチヘッドアテンションモジュールによって実行された)アテンションに関し、アテンション関数は、クエリ(query)とキー値のペアセットを出力としてマッピングするものであってよいが、ここで、クエリ、キー、値、および出力はすべて、ベクトルである。出力は、値の加重化された和として演算されてよいが、ここで、それぞれの値に割り当てられた加重値は、対応するキーとクエリの互換性関数(compatibility function)によって演算される。
【0130】
図10のスケーリングされたドット積アテンションモジュールにおいて、入力は、次元dのクエリとキー、および次元dの値を含む。スケーリングされたドット積アテンションモジュールは、すべてのキーとのクエリのドット積(dot product)を演算し、
【数36】
によってそれぞれを除算し、値に対する加重値を得るためにsoftmax関数を適用する。
【0131】
スケーリングされたドット積アテンションモジュールは、行列Qで同時に配列されたクエリのセットに対してアテンション関数を演算してよい。キーおよび値も、行列KおよびVで維持されてよい。スケーリングされたドット積アテンションモジュールは、出力の行列を次のように演算する。
【0132】
【数37】
【0133】
アテンション関数は、例えば、加法アテンション(additive attention)またはドット積(乗算)アテンションであってよい。ドット積アテンションは、
【数38】
のスケーリング因子(scaling factor)を利用するスケーリングに追加的に利用されてよい。加法アテンションは、単一の隠れ層を有するフィードフォワードネットワークを利用して互換性関数を演算する。ドット積アテンションは、加法アテンションよりも迅速であり、空間効率的である。
【0134】
d-次元キー、値、およびクエリを有する単一アテンション関数を実行する代りに、マルチヘッドアテンションモジュールは、d、d、およびd次元への異なる学習された線形投影により、クエリ、キー、および値をh回にわたり線形的に投影してよい。クエリ、キー、および値の投影されたバージョンそれぞれに対して、アテンション関数は、並列に実行されてよく、dv-次元の出力値を算出してよい。これは、再び連結されてもよいし投影されてもよく、図に示すように、最終的な値に帰着されてもよい。
【0135】
マルチヘッドアテンションは、モデルが異なる位置における異なる表現サブ空間からの情報に共通して注目することを許容する。平均値は、単一アテンションヘッドによってこの特徴を抑制してよい。
【0136】
【数39】
【0137】
ここで、
【数40】
であり、投影パラメータは、行列
【数41】
および
【数42】
である。hは、8つの並列アテンション層またはヘッドであってよい。それぞれに対し、dk=dv=d/h=64である。
【0138】
マルチヘッドアテンションは、異なる方式で利用されてよい。例えば、エンコーダデコーダアテンション層において、クエリは、以前にデコーダ層から出て、メモリキーおよび値は、エンコーダの出力から出る。これは、デコーダにおける各位置が、入力シーケンスにおけるすべての位置に対して注目することを許容する。
【0139】
エンコーダは、セルフアテンション層を含む。セルフアテンション層において、キー、値、およびクエリのすべては、同じ場所、この場合に、エンコーダにおける以前の層の出力から出る。エンコーダにおけるそれぞれの位置は、エンコーダの以前の層におけるすべての位置に対して注目してよい。
【0140】
デコーダにおけるセルフアテンション層は、デコーダにおけるそれぞれの位置がその位置まで、さらにその位置を含むデコーダにおけるすべての位置に注目することを許容するように構成されてよい。左方向への情報の流れ(leftward information flow)は、自動回帰性質(auto-regressive property)を記録するためにデコーダで防止されてよい。これは、不法接続に対応するsoftmaxの入力としてのすべての値をマスクアウト(mask out)(1に設定)することにより、スケーリングされたドット積アテンションで実行されてよい。
【0141】
位置別のフィードフォワードモジュールに関し、それぞれは、正規化線形ユニット(rectified linear unit:ReLU)活性化をその間に有する2つの線形変換を含んでよい。
【0142】
【数43】
【0143】
線形変換は、異なる位置にわたって同じであるが、これらは、層ごとに異なるパラメータを利用してよい。また、これは、カーネルサイズ(kernel size)1を有する2つの畳み込み(convolution)を実行すると説明されてよい。入力および出力の次元性(dimensionality)はd=512であってよく、内部層は次元性dff=2048であってよい。
【0144】
モデル124の埋め込みおよびsoftmax関数に関し、学習された埋め込みは、入力トークン(token)および出力トークンを次元dのベクトルに変換するために利用されてよい。学習された線形変換およびsoftmax関数は、デコーダ出力を予測された次のトークン確率に変換するために利用されてよい。2つの埋め込み層と事前softmax線形変換の間の同じ加重値行列が利用されてよい。埋め込み層において、加重値は、
【数44】
によって乗算されてよい。
【0145】
位置エンコードに関し、一部の情報は、シーケンスにおけるトークンの相対的または絶対的位置に関して投入されてよい。これにより、位置エンコードは、エンコーダおよびデコーダ積層体の下部において入力埋め込みに加算されてよい。位置エンコードは、埋め込みと同じ次元dを有してよく、2つが加算されてよい。位置エンコードは、例えば、学習された位置エンコードまたは固定された位置エンコードであってよい。異なる周波数のサインおよびコサイン関数は、次のとおりとなる。
【0146】
【数45】
【0147】
ここで、posは位置であり、iは次元である。位置エンコードのそれぞれの次元は、正弦波に対応してよい。波長は2πから10000×2πまでの幾何学的進行を形成する。変換器アーキテクチャに関する追加の情報は、本明細書の全般にわたって参照される、米国特許第10,452,978号から見出すことができる。
【0148】
Few-Shot模倣学習とは、タスクの成功的な完了ために若干の示範だけが与えられる場合にタスクを完了するための学習を意味してよい。メタ学習は、制限された数の示範だけを利用してタスクをどのように効率的に学習するかを学習することを意味してよい。訓練タスクの集合が与えられれば、各タスクは、表記されたデータの小さなセットを含む。テストタスクからの表記されたデータの小さなセットが与えられれば、テストタスク分布からの新たなサンプルが表記される。
【0149】
最適化基盤のメタ学習は、MAMLおよびReptileアルゴリズムのように、少量のデータを利用して微調整されるときに加重値が好ましく実行されるようにする加重値の最適な初期化を含んでよい。メトリック基盤のメタ学習は、メトリックを利用して新たな観察を訓練サンプルと整合することにより、少量の訓練サンプルが与えられる場合でもタスクが実行されるようにメトリックを学習することを含んでよい。
【0150】
メトリック基盤のメタ学習(このIDで利用された用語)は、このメトリックを利用して新たな観察をこのサンプルと整合することにより、少量の訓練サンプルが与えられる場合でもタスクが解決されるようにメトリックを学習することを意味する。
【0151】
ワンショット模倣学習は、ポリシーネットワークが現在の観察および示範を入力として採択し、観察および示範に対してアテンション加重値を演算することを利用する。次に、結果は、アクションを出力するために多層パーセプトロン(multi-layer perception)によってマッピングされる。訓練のためにタスクがサンプリングされ、タスクの2つの示範が損失を決定するために利用される。
【0152】
本開示の内容は、スケーリングされたドット積アテンションユニットを含む変換器アーキテクチャを利用する。アテンションは、単に現在のエピソードではなく、現在のエピソードの観察履歴に対して演算される。本出願は、最適化基盤のメタ学習、メトリック基盤のメタ学習、および模倣学習の組み合わせを利用して訓練してよい。本開示の内容は、先ず微調整を行い、その次に、各示範に対するアテンションによって与えられたアクションに対して平均化するように、テスト時間に多数の示範を組み合わせるための実用的な方法を提供する。本明細書で説明するように、訓練されたモデルは、異なって訓練されたモデルよりも、訓練タスクとは相当に異なるテストタスク(および、実世界タスク)においてより良好に実行される。異なるタスクの例は、異なるカテゴリのタスクである。観察履歴に対するアテンションは、部分的に観察された状況で役立つ。本明細書で説明するように、訓練されたモデルは、テスト時間に多数の示範から利益を得ることができる。また、本明細書で説明するように、訓練されたモデルは、異なるように訓練されたモデルよりも次善の示範に対してより強靭となる。
【0153】
本明細書で訓練されたモデルは、ロボットが非専門家によって利用されることを可能にし、ロボットが多くの異なるタスクを実行するように訓練可能にすることができる。
【0154】
上述した説明は、本質的あるいは例示的に、開示内容、その適用、または利用を制限するものでは決してない。開示内容の広範囲な教示事項は、多様な形態で実現されてよい。このため、本開示の内容は、特定の例示は含むが、図面、明細書、および特許請求の範囲を検討すれば他の修正が明らかになるはずであり、開示内容の真の範囲がこれに制限されてはならない。方法のうちの1つ以上の段階は、本開示の内容の原理を変更しない範囲内であれば、異なる順序で(または、同時に)実行されてもよいことが理解されなければならない。また、各実施例には一特徴が含まれるものと説明したが、開示内容の任意の実施例と関連して説明した特徴のうちの任意の1つ以上は、その組み合わせが明らかに説明されていなくても、他の実施例のうちの任意の特徴で実現されてもよいし、および/またはこのような特徴が組み合わされてもよい。言い換えれば、上述した実施例は、相互排他的なものではなく、1つ以上の実施例の互いとの置換物は、本開示の内容の範囲内に含まれる。
【0155】
エレメントの間(例えば、モジュール、回路エレメント、半導体層などの間)の空間的および機能的関係は、「接続された」、「係合された」、「結合された」、「隣接する、「すぐ横の」、「その上部の」、「上の」、「下の」、および「配置された」を含む多様な用語を利用して説明される。「直接的」であるという明らかな説明がない限り、第1および第2エレメントの関係を説明するときに、その関係は、介在する他のエレメントが第1および第2エレメントの間に存在しない直接的な関係である場合もあるが、介在する1つ以上のエレメントが第1および第2エレメントの間に(空間的あるいは機能的のうちのいずれか1つ)存在する間接的な関係を含んでよい。本明細書に記載されるような、語句A、B、およびCのうちの少なくとも1つは、非排他的論理的ORを利用して論理的(A OR B OR C)を意味するように解釈されなければならず、「Aのうちの少なくとも1つ、Bのうちのの少なくとも1つ、およびCのうちの少なくとも1つ」を意味するように解釈されてはならない。
【0156】
図面において、矢印の先端が示す方向は、一般的に、例示に対して関心がある(データまたは命令のような)情報の流れを示す。例えば、エレメントAおよびBが多様な情報を交換するが、エレメントAからエレメントBに送信された情報が例示と関連する場合、矢印は、エレメントAからエレメントBに向かってよい。この単方向性の矢印は、他の情報がエレメントBからエレメントAに送信されないことを暗示するものではない。また、エレメントAからエレメントBに送信された情報に対し、エレメントBは、情報に対する要請または情報の受信確認をエレメントAに送信してよい。
【0157】
以下の定義を含む本出願において、用語「モジュール」または用語「制御器」は、用語「回路」に代替されてよい。用語「モジュール」は、特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)、デジタル、アナログ、または混合されたアナログ/デジタル個別回路、デジタル、アナログ、または混合されたアナログ/デジタル集積回路、組み合わせロジック回路、FPGA(field programmable gate array)、コードを実行するプロセッサ回路(共有、専用、またはグループ)、プロセッサ回路によって実行されたコードを記録するメモリ回路(共有、専用、またはグループ)、説明した機能性を提供する他の適切なハードウェアコンポーネント、またはシステム・オン・チップ(system-on-chip)などの一部またはすべての組み合わせを含むか、これらの一部であるか、これらを含んでよい。
【0158】
モジュールは、1つ以上のインタフェース回路を含んでよい。一例において、インタフェース回路は、LAN(local area network)、インターネット、WAN(wide area network)、またはその組み合わせに接続される有線または無線インタフェースを含んでよい。本開示の内容の任意の与えられたモジュールの機能性は、インタフェース回路を介して接続する多数のモジュールに分散されてよい。例えば、多数のモジュールは、負荷均衡化を許容してよい。追加の例として、(遠隔またはクラウド、または公知の)サーバモジュールは、クライアントモジュールの代わりに一部の機能性を完遂してよい。
【0159】
上述したような用語は、ソフトウェア、ファームウエア、および/またはマイクロコードを含んでよく、プログラム、ルーチン、関数、クラス(class)、データ構造、および/またはオブジェクトを含んでよい。共有された用語であるプロセッサ回路は、多数のモジュールからの一部またはすべてのコードを実行する単一プロセッサ回路を網羅する。グループプロセッサ回路という用語は、追加的なプロセッサ回路と組み合わされ、1つ以上のモジュールからの一部またはすべてのコードを実行するプロセッサ回路を網羅する。多数のプロセッサ回路に対する参照は、個別のダイ上の多数のプロセッサ回路、単一ダイ上の多数のプロセッサ回路、単一プロセッサ回路の多数のコア、単一プロセッサ回路の多数のスレッド(thread)、またはこれらの組み合わせを網羅する。共有された用語であるメモリ回路は、多数のモジュールからの一部またはすべてのコードを記録する単一メモリ回路を網羅する。グループメモリ回路という用語は、追加的なメモリと組み合わされて、1つ以上のモジュールからの一部またはすべてのコードを記録するメモリ回路を網羅する。
【0160】
メモリ回路という用語は、コンピュータ読み取り可能な媒体のサブセットである。本明細書で利用する用語であるコンピュータ読み取り可能な媒体は、(搬送波(carrier wave)上でのように)媒体を介して伝播する一時的な電気的または電磁気的信号を網羅せず、これにより、コンピュータ読み取り可能な媒体という用語は、類型(tangible)であり、非一時的(non-transitory)であると考慮されてよい。非一時的な類型のコンピュータ読み取り可能な媒体の非制限的な例は、(フラッシュメモリ回路、消去可能なプログラミング可能な読み取り専用メモリ回路、またはマスク読み取り専用メモリ回路のような)不揮発性メモリ回路、(静的RAM回路または動的RAM回路のような)揮発性メモリ回路、(アナログまたはデジタル磁気テープまたはハードディスクドライブのような)磁気記録媒体、および(CD、DVD、またはブルーレイ(Blu-ray)ディスクのような)光学記録媒体である。
【0161】
本出願で説明する装置および方法は、コンピュータプログラムで具体化された1つ以上の特定の機能を実行するように汎用コンピュータを構成することによって生成された特殊目的コンピュータにより、部分的または完全に実現されてよい。上述した機能的ブロック、フローチャートコンポーネント、および他のエレメントは、通常の技術者またはプログラマの日常的な作業により、コンピュータプログラムに翻訳されるソフトウェア仕様としての役割を果たす。
【0162】
コンピュータプログラムは、少なくとも1つの非一時的な類型のコンピュータ読み取り可能な媒体上に記録されるプロセッサで実行可能な命令を含む。また、コンピュータプログラムは、記録されたデータを含んでよく、記録されたデータに依存してよい。コンピュータプログラムは、特殊目的コンピュータのハードウェアと相互作用するベーシックインプット/アウトプットシステム(basic input/output system:BIOS)、特殊目的コンピュータの特定のデバイスと相互作用するデバイスドライバ、1つ以上のオペレーティングシステム、ユーザアプリケーション、バックグラウンドサービス、バックグラウンドアプリケーションなどを網羅する。
【0163】
コンピュータプログラムは、(i)HTML(hypertext markup language)、XML(extensible markup language)、またはJSON(JavaScript Object Notation)のようなパーシングが必要な説明的テキスト、(ii)アセンブリコード(assembly code)、(iii)コンパイラによってソースコードから生成されたオブジェクトコード、(iv)インタプリタによる実行のためのソースコード、(v)ジャスト・イン・タイム(just-in-time)コンパイラによるコンパイリング、および実行のためのソースコードなどが含まれる。一例として、ソースコードは、C、C++、C#、オブジェクティブ(Objective)C、Swift、Haskell、Go、SQL、R、Lisp、Java(登録商標)、Fortran、Perl、Pascal、Curl、OCaml、Javascript(登録商標)、HTML5(Hypertext Markup Language 5th revision)、Ada、ASP(Active Server Pages)、PHP(Hypertext Preprocessor)、Scala、Eiffel、Smalltalk、Erlang、Ruby、Flash(商標)、Visual Basic(登録商標)、Lua、MATLAB、SIMULINK、およびPython(登録商標)を含む言語からのシンタックス(syntax)を利用して記録されてよい。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10