(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-02
(54)【発明の名称】マルチエージェントシミュレーション
(51)【国際特許分類】
G06N 3/10 20060101AFI20221125BHJP
G06N 20/10 20190101ALI20221125BHJP
B60W 40/00 20060101ALI20221125BHJP
【FI】
G06N3/10
G06N20/10
B60W40/00
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022515805
(86)(22)【出願日】2020-10-05
(85)【翻訳文提出日】2022-05-02
(86)【国際出願番号】 US2020054227
(87)【国際公開番号】W WO2021071772
(87)【国際公開日】2021-04-15
(32)【優先日】2019-10-07
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-10-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】317015065
【氏名又は名称】ウェイモ エルエルシー
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100126480
【氏名又は名称】佐藤 睦
(72)【発明者】
【氏名】ホワイト,ブランディン アレン
【テーマコード(参考)】
3D241
【Fターム(参考)】
3D241BA49
3D241CE08
(57)【要約】
複数のタイムステップにわたる、複数のエージェントが相互作用する環境のシミュレーションを生成するための、コンピュータ記憶媒体上に符号化されたコンピュータプログラムを含む方法、システム、および装置であり、シミュレーションは、タイムステップにおける各エージェントのそれぞれの状態を指定する各タイムステップのそれぞれのシミュレーション状態を含む。一態様では、方法は、タイムステップごとに、現在のタイムステップの現在のシミュレーション状態を取得することと、次のタイムステップの複数の次のシミュレーション状態の候補を生成することと、次のシミュレーション状態の候補ごとに、次のシミュレーション状態の候補が現実的なシミュレーション状態である可能性を特徴付ける識別スコアを判定することと、次のシミュレーション状態の候補の識別スコアに基づいて、次のタイムステップの前記シミュレーション状態として、次のシミュレーション状態の候補を選択することと、を含む。
【選択図】
図3
【特許請求の範囲】
【請求項1】
複数のタイムステップにわたる、複数のエージェントが相互作用する環境のシミュレーションを生成するための1つ以上のデータ処理装置によって実行される方法であって、前記シミュレーションは、各タイムステップにおける各エージェントのそれぞれの状態を指定する前記タイムステップのそれぞれのシミュレーション状態を含み、前記方法は、タイムステップごとに、
現在のタイムステップの現在のシミュレーション状態を取得することと、
前記現在のシミュレーション状態に基づいて、次のタイムステップの複数の次のシミュレーション状態の候補を生成することであって、各次のシミュレーション状態の候補を生成することは、
エージェントごとに、前記エージェントによって実行され得る可能性のあるアクションのセットからそれぞれのアクションをサンプリングすることと、
エージェントごとに、前記エージェントが前記現在のタイムステップで前記対応するサンプリングされたアクションを実行した場合の、前記次のタイムステップにおける前記エージェントのそれぞれの次の状態を判定することと、を含むことと、
次のシミュレーション状態の候補ごとに、前記次のシミュレーション状態の候補が現実的なシミュレーション状態である可能性を特徴付ける識別スコアを判定することと、
前記次のシミュレーション状態の候補の前記識別スコアに基づいて、前記次のタイムステップの前記シミュレーション状態として、次のシミュレーション状態の候補を選択することと、を含む、方法。
【請求項2】
前記エージェントが、前記環境内の車両である、請求項1に記載の方法。
【請求項3】
エージェントによって実行され得る前記可能性のあるアクションのセットは、前記エージェントのステアリング角を調整するアクションを含む、請求項2に記載の方法。
【請求項4】
エージェントによって実行され得る前記可能性のあるアクションのセットは、前記エージェントの加速度を調整するアクションを含む、請求項2または3に記載の方法。
【請求項5】
タイムステップにおけるエージェントの前記状態は、(i)前記タイムステップにおける前記エージェントの位置、および(ii)前記タイムステップにおける前記エージェントの動きを含む、先行請求項のいずれか一項に記載の方法。
【請求項6】
前記エージェントの前記位置は、(i)前記環境内の前記エージェントの空間位置、および(ii)前記環境内の前記エージェントの進行方向を含む、請求項5に記載の方法。
【請求項7】
前記エージェントの前記動きは、(i)前記エージェントの速度、および(ii)前記エージェントの加速度を含む、請求項5または6に記載の方法。
【請求項8】
エージェントごとに、
前記環境内の前記エージェントの前記現在の状態の表現を取得することと、
ポリシーニューラルネットワークを使用して前記環境内の前記エージェントの前記現在の状態の前記表現を処理して、前記エージェントの前記可能性のあるアクションのセットにわたって対応する確率分布を生成することと、をさらに含み、
エージェントごとに、前記可能性のあるアクションのセットからそれぞれのアクションをサンプリングすることは、エージェントごとに、
前記エージェントの前記可能性のあるアクションのセットにわたる前記確率分布に従って、前記可能性のあるアクションのセットからアクションをサンプリングすることを含む、先行請求項のいずれか一項に記載の方法。
【請求項9】
エージェントごとに、前記エージェントが前記現在のタイムステップで前記対応するサンプリングされたアクションを実行した場合の、前記次のタイムステップにおける前記エージェントのそれぞれの次の状態を判定することは、エージェントごとに、
動きモデルを使用して(i)前記エージェントの現在の状態、および(ii)前記エージェントの前記サンプリングされたアクションを特徴付けるデータを処理して、前記次のタイムステップにおける前記エージェントの前記次の状態を生成することを含む、先行請求項のいずれか一項に記載の方法。
【請求項10】
次のシミュレーション状態の候補が現実的なシミュレーション状態である可能性を特徴付ける識別スコアを判定することは、
前記次のシミュレーション状態の候補の表現を取得することと、
識別器ニューラルネットワークを使用して前記次のシミュレーション状態の前記候補の表現を処理して、前記次のシミュレーション状態の候補が現実的なシミュレーション状態である前記可能性を特徴付ける前記識別スコアを生成することと、を含む、先行請求項のいずれか一項に記載の方法。
【請求項11】
前記次のシミュレーション状態の候補の表現を取得することは、
エージェントごとに、前記次のシミュレーション状態の候補に対応する前記次のタイムステップにおける前記エージェントの前記次の状態の表現を取得することを含み、
識別器ニューラルネットワークを使用して前記次のシミュレーション状態の前記候補の表現を処理して、前記次のシミュレーション状態の候補が現実的なシミュレーション状態である前記可能性を特徴付ける前記識別スコアを生成することは、
エージェントごとに、前記識別器ニューラルネットワークを使用して前記次のシミュレーション状態の候補に対応する前記次のタイムステップにおける前記エージェントの前記次の状態の前記表現を処理して、前記エージェントの前記次の状態が現実的なエージェント状態である可能性を特徴付けるエージェント固有の識別スコアを生成することと、
前記エージェント固有の識別スコアに基づいて、前記次のシミュレーション状態の候補が現実的なシミュレーション状態である前記可能性を特徴付ける前記識別スコアを生成することと、を含む、請求項10に記載の方法。
【請求項12】
前記エージェント固有の識別スコアに基づいて、前記次のシミュレーション状態の候補が現実的なシミュレーション状態である前記可能性を特徴付ける前記識別スコアを生成することは、
前記エージェント固有の識別スコアの最小値を計算することを含む、請求項11に記載の方法。
【請求項13】
環境状態が現実世界の環境状態である場合、前記環境状態を現実的であると特徴付ける識別スコアを生成するように、前記識別器ニューラルネットワークがトレーニングされる、請求項10~12のいずれか一項に記載の方法。
【請求項14】
次のシミュレーション状態の候補の識別スコアに基づいて、前記次のタイムステップの前記シミュレーション状態として、前記次のシミュレーション状態の候補を選択することは、
前記次のタイムステップの前記シミュレーション状態として、最も高い識別スコアを有する前記次のシミュレーション状態の候補を選択することを含む、先行請求項のいずれか一項に記載の方法。
【請求項15】
システムであって、
1つ以上のコンピュータと、
前記1つ以上のコンピュータに通信可能に結合された1つ以上の記憶デバイスと、を含み、前記1つ以上の記憶デバイスが、命令を記憶し、前記命令は、前記1つ以上のコンピュータによって実行されたときに、前記1つ以上のコンピュータに請求項1~14のいずれか一項に記載のそれぞれの方法の動作を実行させる、システム。
【請求項16】
命令を記憶し、前記命令は、1つ以上のコンピュータによって実行されたときに、前記1つ以上のコンピュータに請求項1~14のいずれか一項に記載のそれぞれの方法の動作を実行させる、1つ以上の非一時的なコンピュータ記憶媒体。
【発明の詳細な説明】
【背景技術】
【0001】
本明細書は、機械学習モデルを使用して環境をシミュレートすることに関する。
【0002】
機械学習モデルは入力を受信し、受信した入力に基づいて出力(例えば、予測した出力)を生成する。一部の機械学習モデルは、パラメトリックモデルであり、受信した入力およびモデルのパラメータの値に基づいて、出力を生成する。
【0003】
一部の機械学習モデルは、モデルの複数の層を用いて、受信した入力の出力を生成する深層モデルである。例えば、深層ニューラルネットワークは、出力層と1つ以上の隠れ層を含む深層機械学習モデルであり、各隠れ層は、受信した入力に非線形変換を適用して出力を生成する。
【発明の概要】
【0004】
本明細書は、シミュレートされた環境と相互作用するエージェントのセットを制御して、それらに現実世界のエージェントの挙動を現実的にシミュレートさせることを学習できる、1つ以上の場所にある1つ以上のコンピュータ上のコンピュータプログラムとして実装されるシミュレーションシステムについて記載する。
【0005】
第1の態様によれば、タイムステップのシーケンスにわたって、エージェントのセットが相互作用する環境のシミュレーションを生成するための1つ以上のデータ処理装置によって実行される方法が提供される。シミュレーションは、タイムステップにおける各エージェントのそれぞれの状態を指定する、各タイムステップのそれぞれのシミュレーション状態を含む。この方法は、タイムステップごとに、現在のタイムステップの現在のシミュレーション状態を取得することを含む。次のタイムステップの次のシミュレーション状態の候補のセットが、現在のシミュレーション状態に基づいて生成される。各次のシミュレーション状態の候補を生成することは、エージェントごとに、エージェントによって実行され得る可能性のあるアクションのセットからそれぞれのアクションをサンプリングすることを含む。エージェントごとに、エージェントが現在のタイムステップで対応するサンプリングされたアクションを実行した場合の、次のタイムステップにおけるエージェントのそれぞれの次の状態が判定される。次のシミュレーション状態の候補ごとに、次のシミュレーション状態の候補が現実的なシミュレーション状態である可能性を特徴付ける識別スコアが判定される。次のシミュレーション状態の候補の識別スコアに基づいて、次のタイムステップのシミュレーション状態として、次のシミュレーション状態の候補が選択される。
【0006】
一部の実装では、エージェントは環境内の車両である。
【0007】
一部の実装では、エージェントによって実行され得る可能性のあるアクションのセットは、エージェントのステアリング角を調整するアクションを含む。
【0008】
一部の実装では、エージェントによって実行され得る可能性のあるアクションのセットは、エージェントの加速度を調整するアクションを含む。
【0009】
一部の実装では、タイムステップにおけるエージェントの状態は、(i)タイムステップにおけるエージェントの位置、および(ii)タイムステップにおけるエージェントの動きを含む。
【0010】
一部の実装では、エージェントの位置は、(i)環境内のエージェントの空間位置、および(ii)環境内のエージェントの進行方向を含む。
【0011】
一部の実装では、エージェントの動きは、(i)エージェントの速度、および(ii)エージェントの加速度を含む。
【0012】
一部の実装では、方法は、エージェントごとに、環境内のエージェントの現在の状態の表現を取得することと、ポリシーニューラルネットワークを使用して環境内のエージェントの現在の状態の表現を処理して、エージェントに対する可能性のあるアクションのセットにわたって対応する確率分布を生成することと、をさらに含む。エージェントごとに、可能性のあるアクションのセットからそれぞれのアクションをサンプリングすることは、エージェントごとに、エージェントに対する可能性のあるアクションのセットにわたる確率分布に従って、可能性のあるアクションのセットからアクションをサンプリングすることを含んでもよい。
【0013】
一部の実装では、エージェントごとに、エージェントが現在のタイムステップで対応するサンプリングされたアクションを実行した場合の、次のタイムステップにおけるエージェントのそれぞれの次の状態を判定することは、エージェントごとに、動きモデルを使用して、(i)エージェントの現在の状態、および(ii)エージェントのサンプリングされたアクションを特徴付けるデータを処理して、次のタイムステップにおけるエージェントの次の状態を生成することを含む。
【0014】
一部の実装では、次のシミュレーション状態の候補が現実的なシミュレーション状態である可能性を特徴付ける識別スコアを判定することは、次のシミュレーション状態の候補の表現を取得することを含む。識別器ニューラルネットワークを使用して次のシミュレーション状態の候補の表現を処理して、次のシミュレーション状態の候補が現実的なシミュレーション状態である可能性を特徴付ける識別スコアを生成する。
【0015】
一部の実装では、次のシミュレーション状態の候補の表現を取得することは、エージェントごとに、次のシミュレーション状態の候補に対応する次のタイムステップにおけるエージェントの次の状態の表現を取得することを含む。識別器ニューラルネットワークを使用して次のシミュレーション状態の候補の表現を処理することは、エージェントごとに、識別器ニューラルネットワークを使用して次のシミュレーション状態の候補に対応する次のタイムステップにおけるエージェントの次の状態の表現を処理して、エージェントの次の状態が現実的なエージェント状態である可能性を特徴付けるエージェント固有の識別スコアを生成することを含んでもよい。エージェント固有の識別スコアに基づいて、次のシミュレーション状態の候補が現実的なシミュレーション状態である可能性を特徴付ける識別スコアが生成される。
【0016】
一部の実装では、エージェント固有の識別スコアに基づいて、次のシミュレーション状態の候補が現実的なシミュレーション状態である可能性を特徴付ける識別スコアを生成することは、エージェント固有の識別スコアの最小値を計算することを含む。
【0017】
一部の実装では、環境状態が現実世界の環境状態である場合、環境状態を現実的であると特徴付ける識別スコアを生成するように識別器ニューラルネットワークがトレーニングされる。
【0018】
一部の実装では、次のシミュレーション状態の候補の識別スコアに基づいて、次のタイムステップのシミュレーション状態として、次のシミュレーション状態の候補を選択することは、次のタイムステップのシミュレーション状態として、最も高い識別スコアを有する次のシミュレーション状態の候補を選択することを含む。
【0019】
第2の態様によれば、1つ以上のコンピュータと、1つ以上のコンピュータに通信可能に結合された1つ以上の記憶デバイスと、を含み、1つ以上の記憶デバイスが、命令を記憶し、命令は、1つ以上のコンピュータによって実行されたときに、1つ以上のコンピュータに第1の態様の方法の動作を実行させる、システムが提供される。
【0020】
第3の態様によれば、命令を記憶し、命令は、1つ以上のコンピュータによって実行されたときに、1つ以上のコンピュータに第1の態様の方法の動作を実行させる、1つ以上の非一時的なコンピュータ記憶媒体が提供される。
【0021】
本明細書に記載の主題の特定の実施形態は、以下の利点の1つ以上を実現するように実装することができる。
【0022】
本明細書は、環境と相互作用する複数のシミュレートされたエージェントのセット(例えば、車両)を制御して、それらの挙動を引き起こして、現実世界のエージェント(例えば、人間の運転手によって制御される車両)の挙動を現実的にシミュレートすることができるシミュレーションシステムを記載する。シミュレーションシステムは、部分または完全自律型車両によって実行されるアクションを選択する計画システムの動作を改善するために使用することができる。例えば、シミュレーションシステムを使用して、計画システムが1台の車両を制御し、残りの車両はシミュレーションシステムによって制御される、多数のシミュレーションを生成することができる。計画システムを使用して現実世界の環境で車両を制御する前に、これらのシミュレーションを使用して、計画システムの潜在的な「バグ」(例えば、計画システムが車両を安全ではなく動作させるアクションを選択する)を識別して解決することができる。別の例として、車両の計画システムは、シミュレーションシステムを使用して、環境内の他の車両の可能性のある未来の挙動を予測し、その後、これらの挙動予測を使用して、車両の動作をより安全かつ効果的に制御することができる。別の例として、シミュレーションシステムを使用して、他の車両が同時に占有する環境内で車両が安全、効率的、および快適に動作することを可能にするアクションを選択するために計画システムをトレーニングすることができる。
【0023】
以前は、計画システムのパフォーマンスをテストするために、計画システムが1台の車両を制御し、残りの車両が現実世界の車両のログに記録された挙動を単純に再生するシミュレーションを生成することができた。所定の軌道をたどる車両は、計画システムによって制御される車両の動作を考慮するためにその挙動を調整することができないため、このようなシミュレーションは非現実的であることがある。対照的に、本明細書に記載のシミュレーションシステムは、計画システムによって制御される車両を含む、他の車両の挙動を考慮しながら、各タイムステップでその制御下にある各車両によって実行されるアクションを動的に選択することができる。したがって、本明細書に記載のシミュレーションシステムは、計画システムの動作を改善するために使用できる、より現実的なシミュレーションを生成することができる。
【0024】
本明細書に記載のシミュレーションシステムは、環境の特定の初期条件から開始して、環境の多数の可能性のあるシミュレーションを「サンプリング」(つまり、確率論的に生成)することができる。異なる可能性のあるシミュレーションをサンプリングすることで、シミュレーションシステムは多くの異なるシナリオ、例えば、シミュレーションシステムによって制御される車両が計画システムによって制御される車両の後ろに合流する場合や、シミュレーションシステムによって制御される車両が計画システムによって制御される車両の前に合流する場合をシミュレートすることが可能となる。対照的に、車両が現実世界の車両のログに記録された動作を再生する代替的なシミュレーションシステムは、所与の初期条件から開始する複数のシナリオをシミュレートすることが不可能である。異なる可能性のあるシミュレーションシナリオをサンプリングする能力により、本明細書に記載のシミュレーションシステムが、例えば、一部の代替的なシミュレーションシステムを使用して可能であろうものよりも、包括的な現実的なシナリオのセット下で計画システムをテストするために使用されることを可能にする。
【0025】
本明細書の主題の1つ以上の実施形態の詳細を、添付の図面および以下の説明に記載する。主題の他の特徴、態様、および利点は、明細書、図面、および特許請求の範囲から、明らかになるであろう。
【図面の簡単な説明】
【0026】
【
図1】複数のエージェントが相互作用する例示的な環境を示す。
【
図2】4つのタイムステップでロールアウトされたシミュレーションの例を示す。
【
図3】例示的なシミュレーションシステムのブロック図である。
【
図5】例示的な観測埋め込みシステムのブロック図である。
【
図6】例示的な車両の搭載システムのブロック図である。
【
図7】複数のエージェントが相互作用する環境のシミュレーションを生成するための例示的なプロセスのフロー図である。
【0027】
様々な図面の中の同様の参照番号および名称は、同様の要素を示す。
【発明を実施するための形態】
【0028】
本明細書は、シミュレートされた環境と相互作用するエージェントのセット(例えば、車両)を制御して、それらの挙動(例えば、加速およびステアリング)を引き起こして、現実世界のエージェント(例えば、人間の運転手によって制御される車)の挙動をシミュレートすることを学習できるシミュレーションシステムについて説明する。シミュレーションシステムは、エージェントを共同で制御して、各エージェントが個別に、および環境内の他の各エージェントの各々に関して現実的に挙動するようにする。例として、
図1によって示されるシミュレートされたマルチエージェント環境100を取り上げ、ここで、5つのエージェント(102-A~E)が共同で道路を進行している。シミュレーションシステムは、エージェント102-Cを交差点で停止させ、エージェント102-E(これもシミュレーションシステムによって制御される)が交差点を通過するまで、エージェント102-Eによって占有されるレーンに入るのを控えさせることができる。エージェント102-Cが交差点に入るときに、シミュレーションシステムはそのステアリングと加速を制御して、現実的な軌道をたどるようにさせ、例えば道路に留まり、他のエージェントのいずれとも衝突しないようにする。
【0029】
本文書全体を通して、エージェントの挙動は、現実世界のエージェントの挙動をシミュレートする(つまり、同様のプロパティを有する)場合、「現実的」であると考えられる。例えば、エージェントは、環境内の他のオブジェクトと衝突するかどうか、交通管制灯および標識をどのように処理するか(例えば、全方向停止の優先順位)、および他のエージェントとの相互作用をどのように処理するか(例えば、車線変更および合流中)に基づいて、現実的に挙動すると見なされ得る。同様に、環境(またはエージェント)の状態は、現実世界の環境(またはエージェント)の状態をシミュレートする場合、現実的であると言われる。言い換えると、シミュレーションは、ログに記録されたデータから導出された現実世界の環境状態と同様の特性を有するシミュレーション状態を指定する場合、現実的であると言われ、観測者(例えば、識別器ニューラルネットワークまたは人)が、現実世界の環境状態からシミュレーション状態を区別が困難になるようにしてもよい。
【0030】
シミュレーションシステムは、複数のタイムステップの各々で各エージェントによって実行されるそれぞれのアクションを選択することによってエージェントを制御する。特に、エージェントごとに、システムは「ポリシー」ニューラルネットワークを使用して、可能性のあるアクションのセット全体に確率分布を生成し、次いで、確率分布を使用してエージェントによって実行されるアクションを選択することができる。エージェントによって実行され得るアクションは、エージェントの動きを制御するアクション(例えば、ステアリングおよび加速アクション)、およびそれ以外の方法でエージェントの状態に影響を与えるアクション(例えば、ターン信号をアクティブまたは非アクティブにする)を含んでもよい。特定のタイムステップでエージェントによって実行されるアクションは、次のタイムステップにおけるシミュレーションの状態(特に、各エージェントのそれぞれの状態)を判定する。本文書全体で使用されているように、タイムステップにおける「シミュレーション状態」とは、タイムステップにおける各エージェントの状態を特徴付けるデータを指す。
【0031】
シミュレーションシステムは、最初のタイムステップで所与の初期シミュレーション状態から開始して、次のタイムステップの複数の「候補」となる次のシミュレーション状態のセットを生成する。各次のシミュレーション状態の候補は、最初のタイムステップでポリシーニューラルネットワークによって生成されたエージェントごとのアクション確率分布からサンプリングされたそれぞれのアクションを実行するエージェントの結果である。シミュレーションシステムは、「識別器」ニューラルネットワークを使用して次のシミュレーション状態の候補のそれぞれの「識別スコア」を生成することによって、各次のシミュレーション状態の候補が現実的であるかどうかを評価する。シミュレーションシステムは、識別スコアを使用して、例えば、識別スコアが最も高い次のシミュレーション状態の候補、またはしきい値を満たす識別スコアを有する次のシミュレーション状態の候補のみを維持することによって、1つ以上の次のシミュレーション状態の候補をフィルタリング(つまり、さらなる検討から除外)することができる。
【0032】
シミュレーションシステムは、各タイムステップで、現在のタイムステップのシミュレーション状態に基づいて、次のタイムステップの次のシミュレーション状態の候補を生成し、識別スコアに基づいて、非現実的な次のシミュレーション状態の候補をフィルタリングすることにより、複数のタイムステップにわたるシミュレーションを「ロールアウト」する。複数の次のシミュレーション状態の候補(つまり、各々が現実的であると識別される)を維持することで、シミュレーションシステムは複数のシミュレーションを並行してロールアウトすることが可能となり得る。
【0033】
図2は、初期タイムステップ(T=0)から開始して4つのタイムステップ(T=1,2,3,4)にわたってロールアウトされたシミュレーション200の例を示す。円202-A~Iの各々は、シミュレーションシステムによって生成されたそれぞれのシミュレーション状態を表す。T=0で、シミュレーションシステムは、初期のシミュレーションシステム202-Aから2つの次のシミュレーション状態の候補202-Bおよび202-Cを生成する。シミュレーションシステムは、シミュレーション状態の候補202-Bおよび202-C識別スコアについて識別スコアを生成し、この例では、シミュレーション状態の候補202-Bをフィルタリングする。
図2において、塗りつぶされていない円(例えば、202-B)は、フィルタリングされたシミュレーション状態を表し、塗りつぶされた円(例えば、202-C)は、シミュレーションシステムによって維持されたシミュレーション状態を表す。シミュレーションシステムは進行して、シミュレーション状態の候補202-Cから、シミュレーション状態の候補202-Dおよび202-Eを生成し、シミュレーション状態の候補202-Dをフィルタリングし、シミュレーション状態の候補202-Fおよび202-Gを生成し、シミュレーション状態の候補202-Gをフィルタリングし、シミュレーション状態の候補202-Hおよび202-Iを生成する(どちらもフィルタリングしない)。この例では、シミュレーションシステムは、環境においてエージェントの2つの可能性のあるシミュレーションを生成し、これは、シミュレーション状態のシーケンス、[A,C,D,F,H]および[A,C,D,F,I]に対応する。
【0034】
本明細書に記載のシミュレーションシステムは、様々な目的のいずれに使用され得る。一例では、シミュレーションシステムを使用して、車両の計画システム(すなわち、車両の動作を制御する運転決定を行うように構成されている)が、例えば、車線変更および合流の相互作用中に、車両を安全かつ効果的に制御できるかどうかを評価することができる。別の例では、シミュレーションシステムは、例えば、車両の近くにいる他のエージェントの挙動を予測するために、車両の動作中に車両の計画システムによって使用され得る。
【0035】
これらの特徴および他の特徴については、以下でより詳細に説明する。
【0036】
図3は、例示的なシミュレーションシステム300のブロック図である。シミュレーションシステム300は、以下に記載のシステム、コンポーネント、および技法が実装される1つ以上の場所にある1つ以上のコンピュータ上にコンピュータプログラムとして実装されるシステムの例である。
【0037】
シミュレーションシステム300は、複数のタイムステップにわたる、1つ以上のエージェント(例えば、車両)が相互作用する環境(例えば、道路)の1つ以上のシミュレーションを生成するように構成されている。環境の各シミュレーションは、シミュレーション状態のシーケンスを指定し、各シミュレーション状態は、それぞれのタイムステップに対応し、タイムステップのシミュレーション状態は、タイムステップにおける各エージェントの状態を特徴付ける。タイムステップにおけるエージェントの状態は、例えば、タイムステップにおけるエージェントの位置および動きを指定してもよい。エージェントの位置は、環境内のエージェントの空間位置(例えば、x-y座標のセットで表される)およびエージェントの進行方向(走行方向)(例えば、範囲[0,2π]ラジアンの角度で表される)を指定してもよい。エージェントの動きは、エージェントの速度(例えば、マイル/時)およびエージェントの加速度(例えば、フィート/秒の2乗)を指定してもよい。タイムステップにおけるエージェントの状態は、エージェントの他の側面、例えば、タイムステップにおけるエージェントのターン信号ステータスを特徴付けてもよい。各シミュレーションは、エージェントが相互作用する環境を特徴付けるさらなる情報、例えば、環境の様々な静的特徴の位置を示す道路グラフデータ(例えば、車線)、および異なる時点での環境内のオブジェクト(例えば、信号)の状態を示すデータを指定してもよい。
【0038】
複数のタイムステップの各々で、シミュレーションシステム300は、現在のタイムステップについて1つ以上の現在のシミュレーション状態302を処理して、次のタイムステップについて1つ以上の次のシミュレーション状態304を生成し、各次のシミュレーション状態は、現在のシミュレーション状態を拡張する。次のシミュレーション状態は、各エージェントが現在のシミュレーション状態でそれぞれのアクションを実行した結果である場合、現在のシミュレーション状態を「拡張」すると言われる。
図2に示される例では、シミュレーション状態202-Bおよび202-Cは、シミュレーション状態202-Aを拡張する。最終タイムステップの後、シミュレーションシステム300は、生成されたシミュレーション状態から環境の1つ以上のシミュレーションを識別する。各シミュレーションは、シーケンス内の各シミュレーション状態がシーケンス内の先行するシミュレーション状態を拡張するというプロパティを持つ、生成されたシミュレーション状態のシーケンスを指定する。
【0039】
シミュレーションシステム300は、現在のタイムステップの現在のシミュレーション状態302を処理して、以下より詳細に記載される観測埋め込みシステム500、ポリシーニューラルネットワーク306、動きモデル308、識別器ニューラルネットワーク310、およびフィルタリングエンジン312を使用して、次のタイムステップの1つ以上の次のシミュレーション状態304を生成する。
【0040】
観測埋め込みシステム500は、各エージェントに対してそれぞれの現在の観測埋め込み314を生成する。エージェントに対する現在の観測埋め込み314は、エージェントの現在の状態および環境の現在の状態を特徴付ける数値の順序付けられたコレクション(例えば、数値のベクトルまたは行列)である。例えば、所与のエージェントに対する現在の観測埋め込みは、
図5を参照してより詳細に記載される所与のエージェントの観点から環境の現在の状態(他のエージェントの現在の状態を含む)を特徴付けてもよい。観測埋め込みシステム500は、固定された(所定の)次元を有するエージェントに対する観測埋め込み314を生成してもよく、例えば、各エージェントに対する観測埋め込み314は、256次元のベクトルであってもよい。
【0041】
観測埋め込みシステム500は、現在のシミュレーション状態302および環境の現在の状態を特徴付ける環境データ316のセットを処理することによって、エージェントに対する現在の観測埋め込み314を生成することができる。環境データ316は、例えば、エージェントによって走行されている道路の構造(例えば、車線の位置およびタイプ、道路標識、横断歩道など)を示す道路グラフ、環境内のオブジェクト(例えば、信号)の状態、現在の時点までのエージェントの軌跡、およびエージェントの予測される未来の軌跡(以下でより詳細に記載)を含んでもよい。例示的な観測埋め込みシステム500は、
図5を参照してより詳細に記載される。
【0042】
各エージェントについて、ポリシーニューラルネットワーク306は、エージェントに対する観測埋め込み314を処理して、エージェントによって実行され得る可能性のあるアクションのセットにわたって確率分布318を生成する。可能性のあるアクションのセットは、エージェントの動きを制御するアクションと、それ以外の方法でエージェントの状態に影響を与えるアクションとを含んでもよい。一例では、可能性のあるアクションのセットは、以下によって与えられてもよい。
【数1】
ここで、各A
iは、エージェントの加速度を調整するアクションを表し、各S
jは、エージェントのステアリング角を調整するアクションを表す。ポリシーニューラルネットワークは、その記載の機能を実行することを可能にする任意の適切なニューラルネットワークアーキテクチャを有することができる。一例では、ポリシーニューラルネットワークは、入力層、それに続く複数の全結合層のシーケンス、それに続くソフトマックス出力層を含んでもよく、ここで、ソフトマックス出力層の各ニューロンは、可能性のあるアクションのセットにおけるそれぞれのアクションに対応する。
【0043】
シミュレーションシステム300は、アクション確率分布318を使用して、現在のシミュレーション状態302を拡張する1つ以上の次のシミュレーション状態の候補320を生成する。次のシミュレーション状態の候補320を生成するために、シミュレーションシステム300は、エージェントに対する対応するアクション確率分布318から、各エージェントのそれぞれのアクションをサンプリングする。次いで、シミュレーションシステム300は、モーションモデル308を使用して、エージェントが現在のタイムステップで対応するサンプリングされたアクションを実行した場合の、次のタイムステップにおけるエージェントの状態を計算する。計算された次のエージェント状態は、次のシミュレーション状態の候補320を集合的に指定する。「ダイナミクスモデル」、「遷移モデル」、または「物理モデル」とも呼ばれることもある動きモデル308は、エージェントの現在の状態および適切な運動学的および幾何学的関係を使用してエージェントによって実行されるアクションに基づいて、エージェントの次の状態を計算してもよい。
【0044】
シミュレーションシステム300は、識別器ニューラルネットワーク310を使用して、各次のシミュレーション状態の候補320に対してそれぞれの識別スコア322を生成する。次のシミュレーション状態の候補320の識別スコア322は、次のシミュレーション状態の候補320が現実的である可能性を特徴付ける。次のシミュレーション状態の候補の識別スコア322は、数値、例えば、範囲[0,1]の数値として表すことができ、例えば、識別スコアのより高い値(すなわち、1に近い)は、次のシミュレーション状態の候補がより現実的である。
【0045】
一般に、シミュレーションシステム300は、識別器ニューラルネットワーク310を使用して次のシミュレーション状態の候補320の表現を処理することによって、次のシミュレーション状態の候補320の識別スコア322を生成してもよい。一例では、シミュレーションシステム300は、観測埋め込みシステム500を使用して次のシミュレーション状態の候補320に対応する各エージェントに対するそれぞれの観測埋め込みを生成することによって、次のシミュレーション状態の候補の表現を生成してもよい。この例では、次のシミュレーション状態の候補320に対応するエージェント観測埋め込みは、次のシミュレーション状態の候補の表現を集合的に指定する。シミュレーションシステム300は、識別器ニューラルネットワーク310を使用して、各エージェント観察埋め込みを処理して、エージェントの状態が現実的である可能性を特徴付ける各エージェント多にするそれぞれのエージェント固有の識別スコアを生成してもよい。次いで、シミュレーションシステム300は、エージェント固有の識別スコアを組み合わせて、次のシミュレーション状態の候補の全体的な識別スコアを生成してもよい。例えば、シミュレーションシステムは、次のシミュレーション状態の候補の識別スコアDを以下のように生成してもよい。
【数2】
ここで、Nは、エージェントの数であり、D
iは、エージェントiのエージェント固有の識別スコアであり、O
iは、次のシミュレーション状態の候補に対応するエージェントiに対する観測埋め込みであり、
【数3】
は、識別器ニューラルネットワークによって実行される動作を表す。シミュレーション状態の識別スコアをエージェント固有の識別スコアの最小値として判定する(つまり、式(2)のように)ことは、任意のエージェントの挙動の直感が非現実的であることが、シミュレーション状態全体が非現実的であることをもたらすことを反映する。
【0046】
任意選択で、識別器ニューラルネットワーク310は、次のシミュレーション状態の候補320の表現に加えて、他の入力を処理してもよい。例えば、識別器は、次のシミュレーション状態の候補320の表現に加えて、現在のシミュレーション状態302の表現(および場合によっては1つ以上の先行するシミュレーション状態の表現)を処理してもよい。これらの追加入力を処理することで、識別器ニューラルネットワークが次のシミュレーション状態の候補が現実的であるかどうかをより正確に特徴付けることを可能にしてもよい。
【0047】
一般に、識別器ニューラルネットワーク310は、その記載の機能を実行することを可能にする任意の適切なニューラルネットワークアーキテクチャを有することができる。例えば、識別器ニューラルネットワークアーキテクチャは、全結合層のシーケンスと、それに続く単一ニューロンを有する出力層を含んでもよく、ここで、出力層ニューロンのアクティブ化によって識別スコアを指定する。出力層は、例えば、シグモイド活性化関数を使用して、識別スコアを[0,1]の範囲に収めてもよい。
【0048】
シミュレーションシステム300は、フィルタリングエンジン312を使用して、次のシミュレーション状態の候補304の識別スコア322に基づいて、次のシミュレーション状態の候補304の中から1つ以上の次のシミュレーション状態304を選択する。一般に、フィルタリングエンジン312は、次のシミュレーション状態の候補の識別スコア322がそれが現実的な状態ではない、すなわち、現実世界の環境において発生する可能性が低い状態であることを示す場合、次のシミュレーション状態の候補320をフィルタリングする(すなわち、さらなる検討から除外する)可能性が高い。一例では、フィルタリングエンジン312は、所定のしきい値を満たさない識別スコア322を有する各次のシミュレーション状態の候補320をフィルタリングしてもよい。別の例では、フィルタリングエンジン312は、最も高い識別スコアを有する事前定義された数の次のシミュレーション状態の候補304を除いて、すべての次のシミュレーション状態の候補320をフィルタリングしてもよい。
【0049】
場合によっては、特にシミュレーションシステム300のトレーニング中(すなわち、シミュレーションシステム300がエージェントによって実行されるアクションを効果的に選択することをまだ学習していないとき)、次のシミュレーション状態の候補の多くは、フィルタリングエンジン312によってフィルタリングされるための基準を満たしてもよい。次のタイムステップでシミュレーションのロールアウトを継続するために、シミュレーションシステム300は、次のタイムステップのために少なくとも1つの次のシミュレーション状態を選択しなければならない。したがって、シミュレーションシステム300は、次のタイムステップのために許容可能な次のシミュレーション状態304として少なくとも事前定義された数がフィルタリングエンジン312によって選択されるまで、次のシミュレーション状態の候補304(すなわち、現在のシミュレーション状態302を拡張する)を継続的に生成してもよい。
【0050】
次のタイムステップのシミュレーション状態304を識別した後、シミュレーションシステム300は次のタイムステップに進行してもよい。現在のタイムステップが最終タイムステップである場合、シミュレーションシステム300は、各タイムステップに対して生成されたシミュレーション状態から環境の1つ以上のシミュレーションを識別してもよい。シミュレーションシステム300は、シミュレーションが事前定義された最大タイムステップ数でロールアウトされた場合、現在のタイムステップが最終タイムステップであると判定してもよい。
【0051】
一般に、エージェントを現実的に挙動させるアクションを選択するために、シミュレーションシステム300(特に、ポリシーニューラルネットワーク306)は、エージェントの予測される未来の挙動を説明してもよい。シミュレーションシステム300は、純粋に暗黙的である方法で、例えば、ポリシーニューラルネットワーク306のパラメータ値に暗黙的に学習および符号化される方法で、エージェントの予測される未来の挙動を説明してもよい。しかしながら、シミュレーションシステム300の性能を改善し、ポリシーニューラルネットワーク306のトレーニングを容易にするために、シミュレーションシステム300はまた、エージェントの未来の挙動の明示的な予測に基づいて、エージェントによって実行されるアクションを選択してもよい。エージェントの未来の挙動の明示的な予測は、以前に生成された1つ以上の環境のシミュレーションによって提供されることがある。例えば、シミュレーションシステム300は、環境のシミュレーションを反復生成してもよく、各反復で、シミュレーションシステム300は、以前の反復で生成されたシミュレーションを考慮に入れる環境の1つ以上のシミュレーションを生成する。つまり、所与の反復でシミュレーションを生成するために、シミュレーションシステムは、以前の反復で生成されたシミュレーションによって表される予測されたエージェントの挙動を観察することができる。
【0052】
シミュレーションシステム300は、様々な方法のいずれかで現在の反復のシミュレーションを生成する際に、以前の反復で生成されたシミュレーションを使用することができる。例えば、各時点について、シミュレーションシステム300は、環境内の各空間位置が、以前の反復のシミュレーションのいずれかの時点でエージェントによって占有されていたかどうかを示す、それぞれの「占有マップ」を生成することができる。より具体的には、ある時点の占有マップは、数値の2次元(2D)配列として表すことができ、ここで、配列の各コンポーネントは、環境内のそれぞれの空間位置に対応する。配列の各コンポーネントの値は、環境内の対応する空間位置が、以前の反復のシミュレーションのいずれかの時点でエージェントによって占有されていたかどうかを示す。各反復で、シミュレーションシステム300は、現在の観測埋め込み314を生成する一部として、観測埋め込みシステム500への追加の入力として、以前の反復に対応する占有マップを提供することができる。(以前の反復がない)最初の反復で、シミュレーションシステム300は、デフォルトの占有マップ、すなわち、事前定義されたデフォルト値を有するものを使用することができる。
図4は、時点T=1,2,3に対する占有マップ400のセットの図示を提供し、占有マップのコンポーネントは、環境内の対応する空間位置が、以前の反復のシミュレーションのうちの1つ以上のシミュレーションにおけるエージェントによって占有されていたことを示すために陰影が付けられている。
【0053】
シミュレーションシステム300は、現実世界の環境と相互作用する現実世界のエージェントの挙動を特徴付けるログに記録された環境データに基づいて、ポリシーニューラルネットワーク306および識別器ニューラルネットワーク310を共同でトレーニングすることができる。ログに記録された環境データの一部は、実世界の環境をナビゲートする車両のセンサ(例えば、カメラセンサ、LIDARセンサ、レーダセンサなど)によって生成されたセンサデータから導出されてもよい。場合によっては、ログに記録された環境データは、同じ環境を同時に進行している複数の車両のセンサデータから導出されてもよい。複数の車両のセンサから導出されたセンサデータを使用すると、例えば、環境の一部が、車両のうちの1つの視点からは遮られているが、別の車両の視点からは遮られていない状況において、ログに記録されたセンサデータが、環境をより包括的かつ正確に特徴付けることを可能にしてもよい。シミュレーションシステム300は、ログに記録された環境データを処理して、「現実世界」の環境状態の表現を生成する。
【0054】
ログに記録された環境データは、例えば、ジオロケーション固有のスナップショットデータベースまたはジオロケーション固有の軌道データベースに記憶されてもよい。ジオロケーション固有のスナップショットデータベースは、現実世界の特定のジオロケーションごとにログデータをグループ化でき、同じジオロケーションで異なる時間に異なる車両によって収集されたログデータが、同じジオロケーション固有のグループにある。ジオロケーション固有のスナップショットデータベースは、所与のジオロケーションについてクエリを実行し、所与のジオロケーションで生成されたすべてのログデータを提供することができる。ジオロケーション固有の軌道データベースは、同様に、ログに記録された軌道データ(つまり、エージェントの軌道を特徴付ける)をグループ化し、データベースは、特定のジオロケーションについてクエリを実行し、所与のジオロケーションを含むすべての軌道を提供できるようにする。ジオロケーション固有のスナップショットおよび軌道データベースは、参照により本明細書に組み込まれる米国特許出願第62/911,183号を参照すると、さらに詳しく記載されている。ログに記録されたデータをジオロケーション固有のスナップショットデータベースおよびジオロケーション固有の軌道データベースに記憶すると、ポリシーニューラルネットワークおよび識別器ニューラルネットワークのトレーニングに使用するログに記録された環境データの効率的な取得を容易にすることができる。例えば、ジオロケーション固有のデータベースを使用すると、同じ付近に同時に存在する複数の車両によって生成されたログデータの効率的な取得を可能にしてもよい。上記のように、このようなデータを組み合わせて、例えば、環境の一部が、車両のうちの1つの視点からは遮られているが、別の車両の視点からは遮られていない状況において、環境をより包括的かつ正確に特徴付けることができる。
【0055】
シミュレーションシステム300は、環境状態の表現が、(i)ポリシーネットワークパラメータの現在の値に従ってシミュレーションシステムによって生成されたシミュレーション状態であるか、または(ii)ログに記録された環境データから導出された現実世界の環境状態であるかを分類するように識別器ニューラルネットワークをトレーニングする。例えば、シミュレーションシステム300は、記録された環境データから導出された現実世界の環境状態に対して識別スコア値「1」を、シミュレーションシステムによって生成されたシミュレーション状態に対して識別スコア値「0」を生成するように識別器ニューラルネットワークをトレーニングしてもよい。
【0056】
シミュレーションシステム300は、識別器ニューラルネットワーク310によって現実的である、すなわち現実世界の状態であるとして分類されるシミュレーション状態をもたらすアクション確率分布318を生成するようにポリシーニューラルネットワーク306をトレーニングする。例えば、シミュレーションシステム300は、現在のシミュレーション状態を拡張する1つ以上の次のシミュレーション状態の候補を生成し、識別器ニューラルネットワークを使用して、生成された次のシミュレーション状態の候補の表現を処理して、対応する識別スコアを生成するようにポリシーニューラルネットワーク306をトレーニングしてもよい。次いで、シミュレーションシステム300は、識別スコアに依存する目的関数に基づいて、ポリシーニューラルネットワークパラメータの現在の値を調整することができる。
【0057】
シミュレーションシステム300は、(i)ポリシーネットワークパラメータの最新の値に基づいて生成されたシミュレーション状態を使用して識別器ニューラルネットワークをトレーニングすることと、(ii)識別器ネットワークパラメータの最新の値に基づいて生成された識別スコアを使用してポリシーニューラルネットワークをトレーニングすることとを交互に行うことができる。そうすることで、現実的なシミュレーション状態をもたらすアクションの選択においてポリシーニューラルネットワークが徐々に向上することが促進され、識別器ニューラルネットワークが、ポリシーニューラルネットワークを使用して生成されたシミュレーション状態の非現実的な側面を識別するために継続的に適応するのを促進する。ポリシーニューラルネットワークと識別器ニューラルネットワークを共同でトレーニングする方法の例は、J.Ho、S.Ermon:”Generative adversarial imitation learning”、30th Conference on Neural Information Processing Systems(NeurIPS)、2016を参照すると記載されている。ポリシーニューラルネットワークと識別器ニューラルネットワークを共同でトレーニングする別の例示的な方法は、J.Fu,K.Luo,S.Levine:“Learning robust rewards with adversarial inverse reinforcement learning”,International Conference on Learning Representations(ICLR)、2018を参照すると記載されている。
【0058】
場合によっては、現実世界のエージェントによって実行され得る可能性のあるアクションのセットは、シミュレートされたエージェントによって実行され得る(つまり、シミュレーションシステムによって制御される)可能性のあるアクションのセットとは異なる。例えば、現実世界のエージェントは連続的な範囲(例えば、範囲[0,2π]ラジアン)から引き出されるステアリング角の調整を行うことができるが、シミュレートされたエージェントは、有限のセット(例えば、範囲[0,2π]ラジアンの有限数のビンへの離散化)から引き出されるステアリング角の調整を行うことに制限されてもよい。現実世界のエージェントおよびシミュレートされたエージェントによって可能性のあるアクションのそれぞれのセットの違いは、識別器ニューラルネットワークのトレーニングを妥協させることがある。例えば、識別器ニューラルネットワークは、エージェントによって実行されるアクションが連続セットから引き出されたものか有限セットから引き出されたものかを暗黙的に識別することによって、シミュレートされた状態と現実世界の環境状態とを区別することを学習することがある。この結果を回避するために、シミュレーションでは、ログに記録された環境データを前処理して、現実世界のエージェントによって実行される各アクションを、シミュレートされたエージェントによって実行され得る可能性のあるアクションのセットから最も近いアクションにマッピングしてもよい。
【0059】
図5は、例示的な観測埋め込みシステム500のブロック図である。観測埋め込みシステム500は、以下に記載のシステム、コンポーネント、および技法が実装される1つ以上の場所にある1つ以上のコンピュータ上にコンピュータプログラムとして実装されるシステムの例である。
【0060】
観測埋め込みシステム500は、環境を特徴付ける環境データ502のセットと、環境と相互作用する複数のエージェントの各々の現在の状態を特徴付ける現在のシミュレーション状態504を処理して、各エージェントに対するそれぞれの観測埋め込み506を生成するように構成されている。
【0061】
観測埋め込みシステム500は、埋め込みニューラルネットワーク508を使用して環境データ502を処理して、環境埋め込み510、すなわち、環境データ502の代替的な表現を生成する。環境データ502は、エージェントによって走行されている道路の構造を示す道路グラフ、環境内のオブジェクトの状態(例えば、信号機の状態)、現在の時点までのエージェントの軌道、エージェントの現在の状態、およびエージェントの予測される未来の軌道を含んでもよい。環境埋め込み510は、点埋め込みの集合として表すことができ、各点埋め込みは、環境内のそれぞれの空間位置に対応する数値の順序付けられた集合である。例えば、環境埋め込み510は、埋め込みのアレイ(例えば、256次元埋め込み)として表わされてもよく、各埋め込みは、環境内のそれぞれの2Dまたは3D空間位置に対応する(例えば、(x,y)または(x,y,z)によって表される)。埋め込みニューラルネットワークは、その記載の機能を実行することを可能にする任意の適切なニューラルネットワークアーキテクチャ(例えば、畳み込みニューラルネットワークアーキテクチャ)を有することができる。
【0062】
埋め込みニューラルネットワーク508は、例えば、ポリシーおよび識別器ニューラルネットワークを介して埋め込みニューラルネットワーク508に勾配を逆伝播することによって、シミュレーションシステムのポリシーニューラルネットワークおよび識別器ニューラルネットワーク(
図3を参照して記載される)と共同でトレーニングされ得る。埋め込みニューラルネットワーク508はまた、環境埋め込み510に直接依存する、例えば、環境埋め込み510を処理することによって環境データ502がどれだけ正確に再構築され得るかを測定する目的関数を使用してトレーニングすることができる。
【0063】
エージェントごとに、観測埋め込みシステム500は、座標変換エンジン512を使用して、環境埋め込み510の各点埋め込みに関連付けられたそれぞれの空間位置の座標を、事前定義された「グローバル」座標系から「エージェント中心」座標系に変換する。エージェント中心座標系は、エージェントの状態に対して定義される。例えば、座標変換エンジン512は、変換動作を点埋め込みの空間座標に適用して、それらをエージェントの空間位置に中心に置くようにすることができる。別の例として、座標変換エンジン512は、回転動作を適用して、エージェントの進行方向をエージェント中心座標系における事前定義された方向にマッピングしてもよい。エージェント中心座標系における点埋め込みのセットおよびそれらに関連付けられた空間位置は、「エージェント中心埋め込み」514と呼ばれる。環境埋め込み510ではなく、エージェント中心埋め込み514に基づいてエージェントの観測埋め込み506を生成することは、シミュレーションシステムのポリシーニューラルネットワークおよび識別器ニューラルネットワークのトレーニングを容易にする。
【0064】
観測埋め込みシステム500は、エージェントに対応するエージェント中心埋め込み514に基づいて、各エージェントに対するそれぞれの観測埋め込み506を生成する。例えば、エージェントに対する観測埋め込み506を生成するために、観測埋め込みシステム500は、対応するエージェント中心埋め込み514に空間プーリング動作を適用し、次いで、1つ以上のニューラルネットワーク層を使用して、プーリングされたエージェント中心埋め込みを処理して、観測埋め込み506を生成する。
【0065】
場合によっては、環境の特定の領域がエージェントに可視ではないことがある。例えば、環境の領域は、別のエージェントまたは環境内の静的オブジェクト(例えば、安全バリアまたは木)によって領域が遮られた結果として、エージェントに可視ではないことがある。任意選択で、観測埋め込みシステム500は、例えば、ポイント埋め込みをデフォルトの(事前定義された)埋め込みで置き換えることによって、エージェントに可視ではない環境の領域に対応するエージェントに対するエージェント中心埋め込み514からポイント埋め込みをプルーニングしてもよい。観測埋め込みシステム500は、例えば、環境の領域に対するエージェントの視線が(例えば、別のエージェント、または環境内の静的オブジェクトによって)遮られる場合、環境の領域がエージェントに可視ではないと判定してもよい。エージェントに可視である環境の領域からのデータのみに基づいて観測埋め込み506を生成することにより、シミュレーションシステムのポリシーニューラルネットワークが現実世界のエージェントの挙動をより現実的にシミュレートすることを可能にすることができる。
【0066】
一部の実装では、埋め込みニューラルネットワーク508を使用して環境埋め込み510を生成するのではなく、観測埋め込みシステム500は、手動で定義されたルールのセットを使用して、環境データ502から環境埋め込みデータ510を生成してもよい。
【0067】
図6は、例示的な車両600の搭載システム602のブロック図である。搭載システム602は、ハードウェアコンポーネントおよびソフトウェアコンポーネントから構成され、これらのコンポーネントのうちの一部またはすべては、物理的に車両600に搭載されて位置する。搭載システム602は、計画システム604を使用して、車両の未来の軌道を計画し、車両によって実行されるアクションを選択する。本明細書に記載のシミュレーションシステムは、以下でより詳細に記載される計画システム604をトレーニングおよびテストするために使用することができる。
【0068】
搭載システム602は、搭載システム602が車両600の近くの環境を「見る」ことを可能にするセンサデータ608を生成するセンサシステム606を含む。より具体的には、センサシステム606は、1つ以上のセンサを含み、そのうちの一部は、車両600の近くの環境からの電磁放射の反射を受信するように構成されている。例えば、センサシステム606は、レーザ光の反射を検出するように構成されている1つ以上のレーザセンサ(例えば、LIDARレーザセンサ)を含むことができる。別の例として、センサシステム606は、電磁波の反射を検出するように構成されている1つ以上のレーダセンサを含むことができる。別の例として、センサシステム606は、可視光の反射を検出するように構成されている1つ以上のカメラセンサを含むことができる。
【0069】
センサシステム606は、継続的に(すなわち、複数の時点の各々で)、反射された放射によって走行された方向、強度、および距離を示すことができるセンサデータをキャプチャする。例えば、センサシステム606におけるセンサは、特定の方向に電磁放射の1つ以上のパルスを送信することができ、反射の強度と反射が受信された時間とを測定することができる。
【0070】
計画システム604は、センサデータ608(他のデータ、例えば、道路グラフデータに加えて)を使用して、車両の未来の軌道を計画する計画決定を生成し、特に、車両によって実行されるアクションを選択するように構成されている。計画システム604によって選択されたアクション610は、車両600の制御システム612に提供することができる。車両の制御システム612は、計画システムによって選択されたアクション610を実装することによって、車両の動作の一部またはすべてを制御することができる。例えば、計画システム604が車両の速度を低下させるべきであることを指定するアクションを選択することに応答して、制御システム612は、電子信号を車両のブレーキ制御ユニットに送信してもよい。電子信号の受信に応答して、ブレーキ制御ユニットは、車両のブレーキを機械的にかけることができる。
【0071】
トレーニングされた後、シミュレーションシステム300を使用して、計画システム604の有効性を安全かつ効率的にテストすることができる。例えば、計画システム604を使用して、シミュレートされた環境内のエージェントを制御することができ、一方、シミュレートされた環境内の1つ以上の他のエージェントは、シミュレーションシステム300によって制御される(前述のように、ポリシーおよび識別器ニューラルネットワークを使用して)。計画システムの潜在的なバグ(例えば、計画システムがシミュレートされたエージェントを安全ではなく動作させるアクションを選択する場合)は、多数のシミュレーションをロールアウトし、計画システムが失敗する場合を識別することで識別され得る。
【0072】
計画システム604は、機械学習技法を使用してシミュレーションシステム300と共同でトレーニングされてもよい。例えば、計画システム604およびシミュレーションシステム300は、計画システム604がシミュレートされた環境内の1つのエージェントを制御し、シミュレーションシステム300が残りのエージェントを制御する(前述のように)多数のシミュレーションをロールアウトすることによって共同でトレーニングすることができる。計画システム604は、計画システム604によって制御される車両が安全に動作している間にその目的(例えば、点Aから点Bへの進行)を効率的に達成するかどうかを特徴付ける目的関数を最適化するようにトレーニングされてもよい。シミュレーションシステム300(特に、ポリシーおよび識別器ニューラルネットワーク)は、前述のように、ログに記録された現実世界のデータのセットに基づいて他のエージェントの挙動を現実的にシミュレートするようにトレーニングされてもよい。計画システム604をシミュレーションシステム300と共に共同でトレーニングすることにより、計画システム604は、車両600をより安全かつ効率的に制御することを学習することが可能となり得る。
【0073】
シミュレーションシステム300はまた、車両の搭載システム602によって実装され、車両の計画システム604によって使用されて、車両の近くにいる他のエージェントの挙動予測を実行してもよい。例えば、ある時点で車両によって実行されるアクションを選択する前に、計画システム604は、シミュレーションシステム300を使用して、時間の持続時間(例えば、5秒)にわたって車両の近くにいる他のエージェントの未来の挙動を予測するシミュレーションをロールアウトしてもよい。計画システム604は、車両によって実行されるアクションを選択するときに、他のエージェントの予測される未来の挙動を考慮に入れてもよい。
【0074】
図7は、複数のエージェントが相互作用する環境のシミュレーションを生成するための例示的なプロセス700のフロー図である。便宜上、プロセス700は、1つ以上の場所に位置する1つ以上のコンピュータのシステムによって実行されるものとして記載される。例えば、シミュレーションシステム、例えば、本明細書に従って適切にプログラムされた
図3のシミュレーションシステム300は、プロセス700を実行することができる。
【0075】
システムは、現在のタイムステップ(702)に対して1つ以上の現在のシミュレーション状態を取得する。現在のタイムステップが最初のタイムステップである場合、システムは、現実世界の環境の状態を特徴付けるログに記録された環境データのセットから現在のシミュレーション状態を取得してもよい。現在のタイムステップが最初のタイムステップの後である場合、システムは、以前のタイムステップで現在のタイムステップに対して生成されたシミュレーション状態を取得してもよい。一般に、タイムステップのシミュレーション状態は、タイムステップにおける各エージェントのそれぞれの状態を指定する。一例では、エージェントは車両であり、タイムステップにおけるエージェントの状態は、タイムステップにおけるエージェントの位置(例えば、空間位置および進行方向)およびエージェントの動き(例えば、速度および加速度)を指定する。
【0076】
システムは、現在のシミュレーション状態(704)に基づいて、次のタイムステップの次のシミュレーション状態の候補のセットを生成する。現在のシミュレーション状態を拡張する次のシミュレーション状態の候補を生成するために、システムは、各エージェントに対する可能性のあるアクションのセットにわたってそれぞれの確率分布を生成する。システムは、ポリシーニューラルネットワークを使用して、環境内のエージェントの現在の状態の表現(「観測埋め込み」と呼ばれることもある)を処理することによって、エージェントに対するアクション確率分布を生成してもよい。次いで、システムは、エージェントに対応する確率分布を使用して各エージェントに対するそれぞれのアクションをサンプリングし、動きモデルを使用して、エージェントが現在のタイムステップでサンプリングされたアクションを実行した場合の、次のタイムステップにおけるエージェントの次の状態を判定する。可能性のあるアクションのセットは、例えば、エージェントのステアリング角を調整するアクションおよびエージェントの加速度を調整するアクションを含んでもよい。
【0077】
システムは、各次のシミュレーション状態の候補に対してそれぞれの識別スコアを生成する(706)。次のシミュレーション状態の候補の識別スコアは、次のシミュレーション状態の候補が現実的なシミュレーション状態である可能性を特徴付ける。システムは、識別器ニューラルネットワークを使用して次のシミュレーション状態の候補の表現を処理することによって、次のシミュレーション状態の候補の識別スコアを生成することができる。環境状態が現実世界の環境状態である場合、環境状態を現実的であると特徴付ける識別スコアを生成するように識別器ニューラルネットワークがトレーニングされる。システムは、エージェントごとに、次のシミュレーション状態の候補に対応する次のタイムステップにおけるエージェントの次の状態の表現を取得することによって、次のシミュレーション状態の候補の表現を生成してもよい。次のシミュレーション状態の候補の識別スコアを生成するために、システムは、識別器ニューラルネットワークを使用して次のシミュレーション状態の候補に対応するエージェントの次の状態の表現を処理することによって、各エージェントのエージェント固有の識別スコアを生成してもよい。エージェントのエージェント固有の識別スコアは、エージェントの次の段階が現実的なエージェントの状態である可能性を特徴付ける。次いで、システムは、例えば、エージェント固有の識別スコアの最小値に基づいて、次のシミュレーション状態の候補のエージェント固有の識別スコアに基づいて、次のシミュレーション状態の候補の全体的な識別スコアを生成してもよい。
【0078】
システムは、識別スコアに基づいて、次のタイムステップのシミュレーション状態として次のシミュレーション状態の候補のうちの1つ以上を選択する(708)。例えば、システムは、次のタイムステップのシミュレーション状態として、最も高い識別スコアを有する事前定義された数の次のシミュレーション状態の候補を選択することができる。現在のタイムステップが最終タイムステップでない場合、システムは、次のタイムステップに進み、ステップ702に戻ることができる。現在のタイムステップが最終タイムステップである場合、システムは、各タイムステップに対して生成されたシミュレーション状態に基づいて、環境の1つ以上のシミュレーションを出力することができる。
【0079】
本明細書では、システムおよびコンピュータプログラムコンポーネントに関連して「構成された」という用語を使用している。1つ以上のコンピュータのシステムが特定の操作または動作を実行するように構成されているとは、システムがそれにインストールされており、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせが動作中に、システムにその操作または動作を実行させることを意味する。1つ以上のコンピュータプログラムが特定の操作または動作を実行するように構成されているとは、1つ以上のプログラムが、データ処理装置によって実行されると、装置に操作または動作を実行させる命令を含むことを意味する。
【0080】
本明細書に記載の主題および機能的動作の実施形態は、デジタル電子回路内に、有形的に具現化されたコンピュータソフトウェアもしくはファームウェア内に、本明細書に開示された構造体およびそれらの構造上の等価物を含むコンピュータハードウェア内に、またはそれらのうちの1つ以上を組み合わせて、実装することができる。本明細書に記載の主題の実施形態は、1つ以上のコンピュータプログラムとして、すなわち、データ処理装置によって実行するために、またはデータ処理装置の操作を制御するために有形の非一時的記憶媒体に符号化されたコンピュータプログラム命令の1つ以上のモジュールとして実装することができる。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはこれらのうちの1つ以上の組み合わせであってもよい。代替的に、またはさらに、プログラム命令は、人工的に生成された伝播信号、例えば、データ処理装置によって実行するために好適な受信装置に送信される情報を符号化するために生成される機械生成の電気、光、または電磁信号に符号化され得る。
【0081】
「データ処理装置」という用語は、データ処理ハードウェアを指し、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含し、それらには、例として、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータが含まれる。装置はまた、例えば、FPGA(フィールドプログラマブルゲートアレイ)もしくはASIC(特定用途向け集積回路)などの専用論理回路であってもよく、またはそれをさらに含んでいてもよい。装置は、ハードウェアに加えて、コンピュータプログラムのための実行環境を作り出すコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つ以上の組み合わせを構成するコードを任意選択で含むことができる。
【0082】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードとも称され得るか、もしくは記載され得る、コンピュータプログラムは、コンパイラ型もしくはインタプリタ型言語、または宣言型言語もしくは手続き型言語を含む、任意の形式のプログラミング言語で記述され得、かつスタンドアロンプログラムもしくはモジュール、コンポーネント、サブルーチン、またはコンピューティング環境で使用するのに適した他のユニットを含む、任意の形式で展開され得る。プログラムは、ファイルシステム内のファイルに対応する場合もあるが、必ずしもそうである必要はない。プログラムは、他のプログラムもしくはデータを保持するファイルの一部、例えば、マークアップ言語ドキュメントに格納された1つ以上のスクリプト、プログラム専用の単一ファイル、または複数の調整ファイル、例えば、1つ以上のモジュール、サブプログラム、もしくはコードの一部を格納するファイルに格納することができる。コンピュータプログラムは、1つのコンピュータまたは1つの場所に配置された複数のコンピュータ上で実行されるように展開するか、複数の場所に分散してデータ通信ネットワークで相互接続することができる。
【0083】
本明細書において、「エンジン」という用語は、1つ以上の特定の関数を遂行するようにプログラムされている、ソフトウェアベースのシステム、サブシステム、またはプロセスを指すために広く使用される。概して、エンジンは、1つ以上のソフトウェアモジュールまたはコンポーネントとして実装され、1つ以上の場所にある1つ以上のコンピュータにインストールされる。場合によっては、1台以上のコンピュータが特定のエンジン専用になり、それ以外の場合は、複数のエンジンを同じ台または複数のコンピュータにインストールして実行することができる。
【0084】
本明細書に記載のプロセスおよび論理フローは、1つ以上のプログラマブルコンピュータが1つ以上のコンピュータプログラムを実行して、入力データ上で動作し、かつ出力を生成することで機能を果たすことによって実行することができる。プロセスおよび論理フローはまた、FPGAもしくはASICなどの専用論理回路によって、または特定用途の論理回路と1つ以上のプログラムされたコンピュータとの組み合わせによって実行することができる。
【0085】
コンピュータプログラムの実行に好適なコンピュータは、汎用もしくは専用のマイクロプロセッサあるいはその両方、または他の種類の中央処理装置に基づくことができる。概して、中央処理装置は、読み取り専用メモリもしくはランダムアクセスメモリ、またはその両方から命令およびデータを受信することになる。コンピュータの本質的な要素は、命令を遂行または実行するための中央処理装置ならびに命令およびデータを格納するための1つ以上のメモリデバイスである。中央処理装置およびメモリは、専用論理回路によって補完またはその回路に組み込むことができる。概して、コンピュータはまた、例えば、磁気、光磁気ディスク、もしくは、光ディスクなど、データを格納するための1つ以上の大容量記憶デバイスを含むか、または、それらからデータを転送するように動作可能に結合されることになる。しかしながら、コンピュータは必ずしもそのようなデバイスを有する必要はない。さらに、コンピュータは別のデバイス、例えば、ほんの数例を挙げると、携帯電話、電子手帳(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス、例えば、ユニバーサルシリアルバス(USB)フラッシュドライブなどに組み込むことができる。
【0086】
コンピュータプログラム命令およびデータを格納するのに好適なコンピュータ可読媒体は、不揮発性メモリ、媒体、およびメモリデバイスのあらゆる形態を含み、例として、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、内蔵ハードディスクまたは取り外し可能なディスクなどの磁気ディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含む。
【0087】
ユーザとの対話を提供するために、本明細書に記載の主題の実施形態は、コンピュータ上で実施することができ、コンピュータは、ユーザがコンピュータに入力を提供することができる、ユーザに情報を表示するための表示デバイス、例えば、CRT(陰極線管)もしくはLCD(液晶ディスプレイ)モニタ、ならびにキーボードおよびマウス、トラックボールなどのポインティングデバイスを有する。他の種類のデバイスを使用して、ユーザとの対話を提供することもできる。例えば、ユーザに提供されるフィードバックは、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックなどの任意の形の感覚的フィードバックであり得、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形式で受信することができる。さらに、コンピュータは、ユーザが使用するデバイスとの間でドキュメントを送受信することによって、例えば、ウェブブラウザから受信した要求に応答して、ユーザのデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。また、コンピュータは、テキストメッセージまたは他の形式のメッセージを、メッセージアプリケーションを実行するスマートフォンなどのパーソナルデバイスに送信し、代わりにユーザからの応答メッセージを受信することにより、ユーザと対話することができる。
【0088】
機械学習モデルを実装するためのデータ処理装置には、例えば、機械学習のトレーニングまたは本稼働の一般的で演算集約型の部分、すなわち、推論、ワークロードを処理するための専用ハードウェアアクセラレータユニットを含めることもできる。
【0089】
機械学習モデルは、TensorFlowフレームワーク、Microsoft Cognitive Toolkitフレームワーク、Apache Singaフレームワーク、またはApache MXNetフレームワークなどの機械学習フレームワークを使用して実装および展開することができる。
【0090】
本明細書に記載の主題の実施形態は、バックエンドコンポーネントを、例えば、データサーバとして含むか、またはミドルウェアコンポーネントを、例えば、アプリケーションサーバとして含むか、またはフロントエンドコンポーネント、例えば、経由してユーザが本明細書に記載の主題の実装例と対話することができる、グラフィカルユーザインターフェース、ウェブブラウザ、もしくはアプリを有する、クライアントコンピュータを含む、コンピューティングシステム、あるいは1つ以上のかかるバックエンド、ミドルウェア、もしくはフロントエンドのコンポーネントの任意の組み合わせに実装され得る。システムのコンポーネントは、デジタルデータ通信の任意の形式または媒体、例えば、通信ネットワークによって相互配線され得る。通信ネットワークの例には、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、例えばインターネットが含まれる。
【0091】
コンピューティングシステムには、クライアントとサーバとを含めることができる。クライアントおよびサーバは概して、互いにリモートであり、典型的には通信ネットワークを介して相互作用する。クライアントとサーバとの関係は、それぞれのコンピュータで実行され、かつ互いにクライアントとサーバとの関係を有している、コンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、データを、例えば、HTMLページを、ユーザデバイスに、例えば、クライアントとして動作するデバイスと対話するユーザにデータを表示し、ユーザからのユーザ入力を受信する目的で、送信する。ユーザデバイスで生成されたデータは、例えば、ユーザ対話の結果は、デバイスからサーバで受信することができる。
【0092】
本明細書は多くの特定の実装の詳細を含んでいるが、これらは、いずれかの発明の範囲、または請求され得る事項の範囲を限定するものとして解釈されるべきではなく、むしろ特定の発明の特定の実施形態に特有であり得る特徴に関する説明として解釈されるべきである。別々の実施形態の局面で本明細書に記載された特定の特徴を、単一の実施形態で組み合わせて実装することもできる。逆に、単一の実施形態の文脈で本明細書に記載されている種々の特徴は、複数の実施形態で、別個に、または任意の好適なサブコンビネーションで実施することもできる。さらに、特徴は、特定の組み合わせで作用するものとして上で説明され、当初はそのように特許請求されることさえあり得るが、場合によっては、特許請求された組み合わせからの1つ以上の特徴が、その組み合わせから削除される可能性もあり、特許請求された組み合わせが、サブコンビネーションまたはサブコンビネーションの変形に向けられる場合もある。
【0093】
同様に、動作が特定の順序で図面に図示され、請求の範囲に記載されているが、これは、所望の結果を達成するために、かかる動作がその示された特定の順序、もしくは一連の順序で実行されるべきであること、または例証したすべての動作が実行されるべきであることを要求するものとして理解されるべきではない。特定の状況では、マルチタスクおよび並列処理が有利な場合がある。さらに、上述した実施形態における様々なシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてかかる分離を必要とするものとして理解されるべきではなく、記載されたプログラムコンポーネントおよびシステムは、概して、単一のソフトウェア製品内に共に一体化されてもよく、または複数のソフトウェア製品にパッケージ化されてもよい。
【0094】
主題の特定の実施形態を説明してきた。他の実施形態は、以下の特許請求の範囲内に存在する。例えば、特許請求の範囲に記載された動作は、異なる順序で実行され得、望ましい結果を依然として達成することができる。一例として、添付の図に図示されたプロセスは、望ましい結果を達成するために、必ずしも示された特定の順序、または一連の順序を必要としない。場合によっては、マルチタスクおよび並列処理が有利な場合がある。
【国際調査報告】