輸送サービスのための車両プラットフォームが提供され得る。そのような車両プラットフォームは、車両配車プラットフォームまたは車両派遣プラットフォームと呼ばれることもあり、プラットフォーム・アプリケーションがインストールされたモバイル・フォンなどのデバイスを通してアクセス可能であり得る。アプリケーションを介して、ユーザ(乗り物要求者)は、輸送要求(たとえば、目的地、識別されたピックアップ位置またはユーザの現在地などの出発地)を車両プラットフォームに送信することができる。車両プラットフォームは、最小距離、ユーザのための最小コスト、ドライバのための最小コスト、車両の利用可能性など、様々なファクタに基づいて、出発地から目的地への輸送のための1つまたは複数のルートを決定し得る。車両プラットフォームはまた、要求者の位置またはピックアップ位置などへの近接度など、様々なファクタに基づいて、アプリケーションを介して車両ドライバに要求を送信し得る。車両ドライバは要求から選定することができ、各々は受け付けるべき要求を選ぶことができる。輸送要求が車両と照合されると、ユーザは、車両プラットフォームのアプリケーションを介して、決定されたルート、および/または推定された到着時間を通知され得る。推定された到着時間は、車両プラットフォームが輸送サービスのための料金を決定し、およびユーザが輸送サービスを受け入れるかどうかを決定するために重要である。さらに、到着時間は、ユーザがスケジュールを調整するのを助けるために、ユーザが車両によって輸送される間、リアルタイムで更新され得る。
現在の技術では、到着時間推定方法は初歩的であり、その精度は低い。例示的な既存の方法は、物理モデルを含むにすぎず、そこでは、走行時間が合計距離と走行速度とに基づいて算出される。多くの異なるファクタを受ける走行速度は、同じルートにおいて道路セグメントごとに変動することがある。そのような変動の考慮の欠如が、既存の方法における不正確さを生じる少なくとも1つの理由である。
開示されるシステムおよび方法は、少なくとも、現在の技術における上記で説明された欠点を克服し、正確な到着時間推定値を提供することができる。車両派遣シナリオに関して説明されるが、開示されるシステムおよび方法は、車両の到着時間を推定するための様々な同様の状況において適用可能である。開示されるシステムおよび方法は、推定値を提供するためにリアルタイムでユーザのデバイスおよびドライバのデバイスと通信することができる、トレーニングされた機械学習モデルを得るために、履歴移動など、履歴データに基づいて、機械学習モデルをトレーニングすることができる。
開示されるシステムおよび方法によって使用される機械学習モデル(またはアルゴリズム)は、多層パーセプトロン(MLP:multilayer perceptron)ネットワークに結合された、ワイド・ネットワーク、ディープ・ニューラル・ネットワーク(DNN:deep neural network)、およびリカレント・ニューラル・ネットワーク(RNN:recurrent neural network)のすべてを含み得る。4つのネットワークの各々は、その(1つまたは複数の)入力、(1つまたは複数の)中間状態、および(1つまたは複数の)出力を関連付ける様々な重みを含み得る。例示的なトレーニング・プロセスでは、トレーニング・データは、様々な移動、および出発地、目的地、時間、位置、走行時間などの関連する情報を含み得る。様々な特徴が、トレーニング・データから得られ得、ワイド・ネットワーク、DNN、およびRNNに対応して入力され得る。ワイド・ネットワーク、DNN、およびRNNからの出力は、トレーニング・データにおける各移動についての推定された到着時間を得るために、組み合わせられるかまたはさもなければMLPに入力され得る。ワイド・ネットワーク、DNN、RNN、およびMLPに関連する重みは、推定された到着時間と(履歴)走行時間との間の差分を最小化することに少なくとも基づいて更新され得る。したがって、多くの履歴移動を用いて機械学習モデルをトレーニングすることによって、しきい値精度に達するトレーニングされた機械学習モデルが得られ得る。
本開示の様々な実施形態は、到着時間を推定するように構成されたシステム、方法、および非一時的コンピュータ可読媒体を含む。いくつかの実施形態では、乗車オーダーに関連する到着時間を推定するための方法は、サーバ上で実装可能であり得、デバイスから、出発地から目的地への輸送のための乗車オーダーを受信するステップと、出発地と目的地とを接続するルートを決定するステップと、ルートに関連する輸送情報を得るステップと、ルートを介して目的地に到着するための推定された時間を得るために、トレーニングされた機械学習モデルに得られた輸送情報を入力するステップと、推定された時間をデバイス上で再生させるステップとを含み得る。
いくつかの実施形態では、ルートは、各リンクが道路セグメントに対応する、接続されたリンクのシーケンスを含み得る。輸送情報は、ドライバ識別情報、乗客識別情報、曜日、時間、気象、ピーク時間決定、ルートを包含する形状、リンク識別情報、リンク速度制限、リンク通行料金決定、リンク道路幅、リンク道路分類、リアルタイム・リンク交通速度、リンク長さ、またはリンク交通信号持続時間のうちの少なくとも1つを含み得る。
いくつかの実施形態では、乗車オーダーに関連する到着時間を推定するための方法は、トレーニングされた機械学習モデルに輸送情報を入力するステップを含み得る。輸送情報は、乗車オーダーに関連する出発地と目的地とを含み、トレーニングされた機械学習モデルは、マルチプレーヤ・パーセプトロン・ネットワークに結合された、ワイド・ネットワーク、ディープ・ニューラル・ネットワーク、およびリカレント・ニューラル・ネットワークのすべてを含む。本方法は、トレーニングされた機械学習モデルに基づいて、出発地と目的地とを接続するルートを介して目的地に到着するための推定された時間を得るステップをさらに含み得る。本方法は、サーバ、モバイル・フォンなど、コンピューティング・デバイスによって実施され得る。
図1は、様々な実施形態による、到着時間を推定するための例示的な環境100を示す。図1に示されているように、例示的な環境100は、1つまたは複数のプロセッサ104とメモリ106とを含む少なくとも1つのコンピューティング・システム102を備えることができる。メモリ106は、非一時的およびコンピュータ可読であり得る。メモリ106は、1つまたは複数のプロセッサ104によって実行されたとき、本明細書で説明される様々な動作を1つまたは複数のプロセッサ104に実施させる命令を記憶し得る。システム102は、モバイル・フォン、タブレット、サーバ、コンピュータ、ウェアラブル・デバイス(スマート・ウォッチ)など、様々なデバイスの上にまたはそれらとして実装され得る。上記のシステム102は、環境100の他のデバイスにアクセスするために、適切なソフトウェア(たとえば、プラットフォーム・プログラムなど)および/またはハードウェア(たとえば、ワイヤ、ワイヤレス接続など)がインストールされ得る。
環境100は、システム102にとってアクセス可能である、1つまたは複数のデータ・ストア(たとえば、データ・ストア108)と、1つまたは複数のコンピューティング・デバイス(たとえば、コンピューティング・デバイス109)とを含み得る。いくつかの実施形態では、システム102は、データ・ストア108(たとえば、履歴輸送移動のデータベースまたはデータセット)および/またはコンピューティング・デバイス109(たとえば、輸送移動情報をキャプチャするドライバまたは乗客によって使用されるコンピュータ、サーバ、モバイル・フォン)から(たとえば、出発地、目的地、時間、位置、走行時間、および過去の車両輸送移動のための他のデータとしての)データを得るように構成され得る。システム102は、到着時間を推定するための機械学習モデルをトレーニングするために、得られたデータを使用し得る。出発地、目的地、および他の位置情報は、GPS(全地球測位システム)座標を含み得る。
環境100は、システム102に結合された1つまたは複数のコンピューティング・デバイス(たとえば、コンピューティング・デバイス110および111)をさらに含み得る。コンピューティング・デバイス110および111は、セルフォン、タブレット、コンピュータ、ウェアラブル・デバイス(スマート・ウォッチ)など、デバイスを含み得る。コンピューティング・デバイス110および111は、システム102との間でデータを送信または受信し得る。
いくつかの実施形態では、システム102は、オンライン情報またはサービス・プラットフォームを実装し得る。サービスは、車両(たとえば、車、自転車、ボート、飛行機など)に関連し得、プラットフォームは、車両(サービス配車または乗車オーダー派遣)プラットフォームと呼ばれることがある。プラットフォームは、輸送についての要求を受け付け、要求を満たす車両を照合し、ピックアップを手配し、取引を処理し得る。たとえば、ユーザは、輸送をプラットフォームに要求するために、コンピューティング・デバイス110(たとえば、プラットフォームに関連するソフトウェア・アプリケーションがインストールされたモバイル・フォン)を使用し得る。システム102は、要求を受信し、それを(たとえば、ドライバによって携帯されるモバイル・フォンにその要求を投稿することによって)様々な車両ドライバに送信し得る。車両ドライバは、投稿された輸送要求を受け付け、ピックアップ位置情報を得るために、コンピューティング・デバイス111(たとえば、プラットフォームに関連するアプリケーションがインストールされた別のモバイル・フォン)を使用し得る。料金(たとえば、輸送料金)が、システム102とコンピューティング・デバイス110および111との間で取引され得る。何らかのプラットフォーム・データが、メモリ106に記憶されるか、あるいはデータ・ストア108ならびに/またはコンピューティング・デバイス109、110、および111から取出し可能であり得る。たとえば、各移動について、(たとえば、コンピューティング・デバイス111によって送信された)出発地および目的地の位置、料金、および移動時間が、システム102によって得られ得る。そのような移動データは、トレーニング・データに組み込まれ得る。
いくつかの実施形態では、システム102とコンピューティング・デバイスのうちの1つまたは複数(たとえば、コンピューティング・デバイス109)とが、単一のデバイスまたはシステムに組み込まれ得る。代替的に、システム102と1つまたは複数のコンピューティング・デバイスとが、別個のデバイスとして動作し得る。(1つまたは複数の)データ・ストアは、システム102にとってどこでも、たとえば、メモリ106中で、コンピューティング・デバイス109中で、システム102に結合された別のデバイス(たとえば、ネットワーク・ストレージ・デバイス)中で、または別のストレージ・ロケーション(たとえば、クラウドベース・ストレージ・システム、ネットワーク・ファイル・システムなど)中でなど、アクセス可能であり得る。システム102およびコンピューティング・デバイス109は、この図では単一の構成要素として示されているが、システム102およびコンピューティング・デバイス109は、単一のデバイスまたは互いに結合された複数のデバイスとして実装され得ることが理解されたい。システム102は、単一のシステムまたは互いに結合された複数のシステムとして実装され得る。概して、システム102、コンピューティング・デバイス109、データ・ストア108、ならびにコンピューティング・デバイス110および111は、データがそれを通して通信され得る1つまたは複数のワイヤードまたはワイヤレス・ネットワーク(たとえば、インターネット)を通して互いと通信することが可能であり得る。環境100の様々な態様が、図2〜図5を参照しながら以下で説明される。
図2は、様々な実施形態による、乗車オーダーを派遣するための例示的なシステム200を示す。図2に示され、以下で提示される動作は、例示的であるものとする。
様々な実施形態では、システム102は、データ・ストア108および/またはコンピューティング・デバイス109、110、および111からデータ202および/またはデータ206を得ることがある。コンピューティング・デバイス111は、たとえば、タクシー、サービス配車車両などを含むサービス車両のドライバに関連し(たとえば、それによって使用され)得る。コンピューティング・デバイス110は、車両サービスを要求するユーザに関連し(たとえば、それによって使用され)得る。データ202およびデータ206は、機械学習モデルをトレーニングするためのトレーニング・データおよび/またはトレーニングされた機械学習モデルを適用するときに到着時間を推定するための算出データを含み得る。たとえば、トレーニング・データおよび算出データは、移動依存情報(たとえば、出発地、目的地)および/または移動非依存情報(たとえば、道路幅、道路分類)を含み得る。トレーニング・データは、機械モデルをトレーニングするために事前に収集され得、算出データは、リアルタイムでまたはクエリ204に応答して得られ得る。コンピューティング・デバイスのうちのいくつかは、トレーニングまたは算出のためのデータを記録するための様々なセンサーを含み得る。たとえば、GPS(全地球測位システム)は、車両のリアルタイム位置を記録することができる。GPSまたは速度計は、クロックとともに、位置および時間に関して車両速度を記録することができる。トレーニング・データのさらなる詳細が、図4Aを参照しながら以下で説明される。得られたデータ202および/または206は、メモリ106に記憶され得る。システム102は、到着時間を推定するために得られたデータ202および/またはデータ206(トレーニング・データ)を用いて機械学習モデルをトレーニングし得る。
いくつかの実施形態では、乗車オーダーを行うことを企図するユーザは、システム102にクエリ204を送信するためにコンピューティング・デバイス110を使用し得る。クエリ204は、コンピューティング・デバイス110から承知のうえでまたは知らないで送信され得る。クエリ204は、到着時間を推定することについての要求を含み得る。代替的に、コンピューティング・デバイス110は、車両サービスを要求しているかまたは要求したユーザに関連し得る。すなわち、ユーザは、車両サービスを受け入れていることも受け入れていないこともある。前者の状況では、クエリ204は、出発地(たとえば、ピックアップ位置)、目的地など、情報をさらに含み得る。したがって、システム102は、到着時間を推定するためにトレーニングされた機械学習モデルを適用し、コンピューティング・デバイス110、またはコンピューティング・デバイス111などの1つまたは複数の他のデバイスにデータ207を送り得る。データ207は、目的地に到着するための推定された時間を含み得る。ユーザが車両サービスを受け入れていない場合、ユーザは、推定された到着時間に基づいて、車両サービスを受けるかまたは取り消し得る。ユーザが車両サービスをすでに受け入れている場合(たとえば、車両に乗っているとき)、ユーザは、推定された到着時間に基づいてスケジュールを調整し得る。推定された到着時間は、計画されたルートに関連し得るので、車両ドライバは、推定された到着時間に基づいて、計画されたルートを調整し得る。たとえば、推定された到着時間が、リアルタイムで更新され、計画されたルート上の事故などの理由のために急増した場合、ドライバは、それに応じて代替ルートを切り替えることができる。現在の走行ルートが、(たとえば、車両のリアルタイム・ロケーション・トラッキングに基づいて)最初に計画されたルートからそれるとシステム102が決定した場合、システム102は、計画されたルートを更新し、それに応じて、推定された走行時間を更新し得る。
到着時間推定は、サーバ、モバイル・フォンなど、コンピューティング・デバイスによってトリガされ得る。様々な実施形態では、乗車オーダーに関連する到着時間を推定するための方法は、トレーニングされた機械学習モデルに輸送情報を入力するステップを含み得る。輸送情報は、乗車オーダーに関連する出発地(たとえば、ピックアップ位置)と目的地と(すなわち、出発地から目的地への輸送)を含み得る。本方法は、トレーニングされた機械学習モデルに基づいて、出発地と目的地とを接続するルートを介して目的地に到着するための推定された時間を得るステップをさらに含み得る。ルートは、各リンクが道路セグメントに対応する、接続されたリンクのシーケンスを含み得る。街路は、道路分類、速度制限、街灯など、様々なファクタに依存する多くのリンク(道路セグメント)を含み得る。いくつかの実施形態では、リンク末端が、これらの要因のうちの1つまたは複数が変化する位置において決定され得る。輸送情報は、ドライバ識別情報、乗客識別情報、曜日、時間、気象、ピーク時間決定、ルートを包含する形状、リンク識別情報、リンク速度制限、リンク通行料金決定、リンク道路幅、リンク道路分類、リアルタイム・リンク交通速度、リンク長さ、またはリンク交通信号持続時間のうちの少なくとも1つをさらに含み得る。トレーニングされた機械学習モデルは、図3A〜図3Cを参照しながら以下で説明されるように、マルチプレーヤ・パーセプトロン・ネットワークに結合された、ワイド・ネットワーク、ディープ・ニューラル・ネットワーク、およびリカレント・ニューラル・ネットワークのすべてを含み得る。
図3Aは、様々な実施形態による、到着時間を推定するための例示的な機械学習モデル305およびそれのトレーニング・プロセス310を示す。図3Aに示され、以下で提示される動作は、例示的であるものとする。機械学習モデル305は、多層パーセプトロン・ネットワーク308に結合された、ワイド・ネットワーク302、ディープ・ニューラル・ネットワーク304、およびリカレント・ニューラル・ネットワーク306のすべてを含み得る。
いくつかの実施形態では、トレーニングは、複数の履歴車両移動の各々に基づいて実施され得る。機械学習モデルをトレーニングするステップは、(ステップ301)履歴車両移動に関連する輸送トレーニング・データを得るステップであって、輸送トレーニング・データが、履歴出発地と履歴目的地とを接続する履歴ルートと、実履歴移動時間とを含む、得るステップと、(ステップ303aおよび303b)輸送トレーニング・データから1つまたは複数の大域特徴および局所特徴を得るステップと、それぞれ出力を得るために、ワイド・ネットワーク302に大域特徴を入力するステップ、ディープ・ニューラル・ネットワーク304に大域特徴を入力するステップ、およびリカレント・ニューラル・ネットワーク306に局所特徴を入力するステップと、(ステップ307において)推定された履歴移動時間を得るために、ワイド・ネットワーク、ディープ・ニューラル・ネットワーク、およびリカレント・ニューラル・ネットワークからの出力をマルチプレーヤ・パーセプトロン・ネットワーク308に入力するステップと、(ステップ309)推定された履歴移動時間と実履歴移動時間との間の差分を最小化することに少なくとも基づいて、ワイド・ネットワーク、ディープ・ニューラル・ネットワーク、リカレント・ニューラル・ネットワーク、およびマルチプレーヤ・パーセプトロン・ネットワークに関連する1つまたは複数の重みを更新するステップとを含み得る。
いくつかの実施形態では、輸送トレーニング・データは、様々なシステム、デバイス(たとえば、モバイル・フォン上のセンサー)、データ・ストア(たとえば、オンライン・マップ・データ・ストア)などから得られ得る。たとえば、輸送トレーニング・データは、マップ・データ、道路データ、乗車オーダー・データなどを含み得る。輸送データは前処理され得る。たとえば、生データから雑音を除去するために、様々なしきい値処理およびフィルタ処理技法が使用され得る。
いくつかの実施形態では、大域特徴および局所特徴が、輸送データから得られ得る。大域特徴は、疎な特徴と、第1の密な特徴とを含み得る。局所特徴(または代替的に連続特徴と呼ばれる)は、基準特徴と、第2の密な特徴とを含み得る。いくつかの場合には、データ表す表現としての疎な特徴は、密な特徴とは対照的に0の大部分を含んでいる。さらに、一例では、輸送トレーニング・データは、様々な履歴移動に対応し得る。各履歴移動は、履歴出発地から履歴目的地への過去の輸送がそれを介して実施された、履歴ルートに関連し得る。履歴ルートは、各リンクが道路セグメントに対応する、接続されたリンクのシーケンスに対応し得る。大域特徴は、履歴ルートにおけるリンクについて均一であり得、局所特徴は、個々にリンクに関連し得る(すなわち、リンクごとに異なり得る)。街路は、1つまたは複数のリンクに分割され得る。いくつかの場合には、街灯または断面は、2つまたはそれ以上の隣接リンクを分割する。
限定はしないが、大域特徴を参照すると、いくつかの実施形態では、疎な特徴は、ドライバ識別情報(たとえば、システム102中のデータベースに記憶されたドライバID、データベースは、ドライバIDに関連する他の情報をも記憶する)、乗客識別情報(たとえば、ドライバIDと同様に記憶された乗客ID)、曜日、時間(たとえば、タイムスタンプ、1日が5分などの等しいタイムスライスに分割されたときのタイムスライス)、気象(たとえば、移動中の気象)、またはピーク時間決定(たとえば、過去の移動が所定のピーク交通時間帯と重複するかどうか)のうちの少なくとも1つを含み得る。第1の密な特徴(または代替的に第1の実数特徴と呼ばれる)は、ルートを包含する形状(たとえば、最も小さい正方形)を含み得る。
限定はしないが、局所特徴を参照すると、いくつかの実施形態では、リンクに対応して関連する基準特徴は、リンク識別情報(たとえば、システム102中のデータベースに記憶されたリンクID、データベースは、リンクIDに関連する他の情報をも記憶する)、リンク速度制限(たとえば、各道路セグメント上の車両速度制限)、リンク通行料金決定(たとえば、各道路セグメントが通行料金を有するかどうか)、リンク道路幅、またはリンク道路分類(たとえば、ハイウェイ分類、地方道路分類)のうちの少なくとも1つを含み得る。リンクに対応して関連する第2の密な特徴(または代替的に第2の実数特徴と呼ばれる)は、リアルタイム・リンク交通速度(たとえば、リアルタイムの各道路セグメント上の交通流の速度)、リンク長さ、またはリンク交通信号持続時間(たとえば、どのくらいの時間の間、各道路セグメント中の街灯の赤信号または青信号が持続するか)のうちの少なくとも1つを含み得る。
大域特徴および局所特徴の各々は、到着時間に影響を及ぼし得る。たとえば、悪天候および料金所が、走行速度を遅くし、到着時間を遅延させ得る。別の例では、リンク速度制限が、そのリンクを介した走行速度の理論的上限を設定し得る。また別の例では、ルートを包含する最も小さい正方形が、それの2つの反対側のコーナーの座標位置(coordinate locations)に関連し得、これは、2つの正方形がすぐ近くにあるかどうかを決定するために使用され得る。2つの正方形が地理的にすぐ近くにある場合、対応するルートが、同じエリア中で、推定された到着時間におけるいくつかの類似度を共有するように決定され得る。
限定はしないが、ワイド・ネットワーク302を参照すると、いくつかの実施形態では、ワイド・ネットワークからの出力を得るために、ワイド・ネットワークに大域特徴(疎な特徴および第1の密な特徴)を入力するステップは、(ステップ312)各特徴積が大域特徴のうちのあらゆる2つの間の積(たとえば、クロス)に対応する複数の特徴積を得るステップと、(ステップ322)ワイド・ネットワークからの出力を得るために、大域特徴と得られた特徴積とに基づいてアフィン変換を実施するステップとを含み得る。アフィン変換は、大域特徴と得られた特徴積とを出力にマッピングし、大域特徴(入力)と出力とは、1つまたは複数の重みに関連する。たとえば、2つの大域特徴がxおよびyである場合、それらの積xyは、特徴積であり得、アフィン変換は、w1x+w1y+w3xy+bを得るために、(x、y、xy)に対して実施され得、ここで、w1、w2、およびw3は、x、y、およびxyに対する線形変換であり、bは、変換された空間中のベクトルである。重みは、w1、w2、w3、および/またはbを含み得る。
限定はしないが、ディープ・ニューラル・ネットワーク304を参照すると、いくつかの実施形態では、ディープ・ニューラル・ネットワークは、フィードフォワード・ニューラル・ネットワーク(FNN:feedforward neural network)を含み得る。図3Bを参照しながら以下で説明される多層パーセプトロン(MLP)ネットワークが、FNNの一例である。フィードフォワード・ニューラル・ネットワークは、シーケンスにおける複数の層を含み得る。複数の層は、入力層と、1つまたは複数の隠れ層と、出力層とを含む。隣り合う層のあらゆる2つが、1つまたは複数の重みに関連し得る。大域特徴は、疎な特徴と、第1の密な特徴とを含み得る。ディープ・ニューラル・ネットワークからの出力を得るために、ディープ・ニューラル・ネットワークに大域特徴を入力するステップは、(ステップ314)疎な特徴を埋め込むステップ(たとえば、シグモイド関数を適用するステップ、局所線形埋込みを適用するステップ)と、(ステップ324)第1の密な特徴と埋め込まれた疎な特徴とを連結するステップ(たとえば、特徴を組み合わせるステップ)と、(ステップ334)フィードフォワード・ニューラル・ネットワークの出力層からの出力を得るために、連結された第1の密な特徴および疎な特徴をフィードフォワード・ニューラル・ネットワークに供給するステップとを含み得る。
限定はしないが、リカレント・ニューラル・ネットワーク306を参照すると、いくつかの実施形態では、リカレント・ニューラル・ネットワークは、リンクのシーケンスに対応させるシーケンスにおける複数の層を含み得る。隣り合う層のあらゆる2つが、重みのうちの1つまたは複数に関連し得る。第1の層以外の層の各々は、前の層から入力と前の隠れ状態とを受信し、出力と現在の隠れ状態とを生成し得る。リカレント・ニューラル・ネットワークからの出力を得るために、リカレント・ニューラル・ネットワークに局所特徴(基準特徴および第2の密な特徴)を入力するステップは、履歴移動の各々について、層のシーケンスにおける最後の層の現在の隠れ状態を得るために、層への入力として、局所特徴を対応して供給するステップを含み得る。例示的なリカレント・ニューラル・ネットワークが、図3Cを参照しながら以下で説明される。
代替的に、リカレント・ニューラル・ネットワークは、長短期メモリ・ネットワーク(LSTM)に結合されたマルチプレーヤ・パーセプトロン(MLP)ネットワークを含み、別のマルチプレーヤ・パーセプトロン・ネットワークと長短期メモリ・ネットワークとは、各々、重みのうちの1つまたは複数に関連する。たとえば、MLPとLSTMとは、リカレント・ニューラル・ネットワーク306の入力と出力とを関連付ける1つまたは複数の重みを含み得る。いくつかの実施形態では、リカレント・ニューラル・ネットワークからの出力を得るために、リカレント・ニューラル・ネットワークに局所特徴を入力するステップは、(ステップ316)リンクに対応して関連する第1の結果を得るために、別のマルチプレーヤ・パーセプトロン・ネットワークに局所特徴を供給するステップと、(ステップ326)様々な層のうちの最後の層の現在の隠れ状態を得るために、長短期メモリ・ネットワークの様々な層への入力として第1の結果を対応して供給するステップとを含み得る。
限定はしないが、マルチプレーヤ・パーセプトロン・ネットワーク308を参照すると、いくつかの実施形態では、マルチプレーヤ・パーセプトロン・ネットワークは、シーケンスにおける複数の層を含み得る。複数の層は、入力層と、1つまたは複数の隠れ層と、出力層とを含む。隣り合う層のあらゆる2つが、1つまたは複数の重みに関連する。入力層は、ワイド・ネットワーク302からの出力と、ディープ・ニューラル・ネットワーク304からの出力と、リカレント・ニューラル・ネットワーク306からの出力(たとえば、隠れ状態)とを含み得る。例示的なマルチプレーヤ・パーセプトロン・ネットワークが、図3Bを参照しながら以下で説明される。
いくつかの実施形態では、ステップ307において、推定された履歴移動時間が、マルチプレーヤ・パーセプトロン・ネットワーク308から出力される。ステップ309において、上記で説明されたように、機械学習モデル305に関連する重み(すなわち、ワイド・ネットワーク302、ディープ・ニューラル・ネットワーク304、およびリカレント・ニューラル・ネットワーク306、およびマルチプレーヤ・パーセプトロン・ネットワーク308に関連する重み)が、ステップ307からの推定された履歴移動時間と履歴データからの実履歴移動時間との間の差分を最小化することに少なくとも基づいて更新される。履歴移動時間は、独立して検証されるか、手作業で得られるか、クロスチェックされるか、またはさもなければ正確に保たれ得る。一例では、推定された履歴移動時間と実履歴移動時間との間の誤差が、損失関数を使用することによって算出され得る。次いで、この誤差は、たとえば、バックプロパゲーション・アルゴリズムを使用して、一度に1層ずつ、確率的勾配降下に従って、各層についての重みを更新するために、機械学習モデル305を通して逆伝搬され得る。これは、バックワード・パスと呼ばれることがある。
いくつかの実施形態では、トレーニングの終結において、重みは、推定された到着時間の精度がしきい値を上回るようにトレーニングされていることがある。精度は、履歴移動データを使用して検証され得る。いくつかの実施形態では、オンデマンドで到着時間を推定するために、トレーニングされた機械学習モデルを適用するとき、上記で説明された輸送トレーニング・データと同様の輸送データがモデルに供給され得る。輸送データは、出発地および目的地など、情報を含み得る。上記で説明された様々な特徴など、他のデータが、輸送データ中に含まれるか、またはオンライン・データ・ストア、クラウド・デバイスなど、他のソースからフェッチされ(fetched)得る。
図3Bは、様々な実施形態による、到着時間を推定するための例示的な多層パーセプトロン・フレームワークを示す。図3Bに示され、以下で提示される動作は、例示的であるものとする。
多層パーセプトロン・ネットワークなど、ニューラル・ネットワークでは、ニューロンが、基本ビルディング・ブロックとして働き得る。ニューロンは、入力信号(たとえば、入力データ)を受信し、ロジスティック算出関数を使用して入力信号を処理し、算出結果に応じて出力信号(たとえば、出力データ)を送信し得る。これらのニューロンがニューロンのネットワークに構成されるとき、それらは、ニューラル・ネットワークと呼ばれる。ネットワーク中のニューロンの各列は層と呼ばれ、ネットワークは、各層において複数のニューロンをもつ複数の層を有することができる。単一のニューロンをもつネットワークはパーセプトロンと呼ばれ、ニューロンの複数の層をもつネットワークは多層パーセプトロン(MLP)と呼ばれる。たとえば、2つの隠れ層MLP(層A1および層A2)が図3Bに示され、ここで、入力層は、ネットワークへの入力(X1、X2、X3、X4)を含む。入力層は、これがネットワークの唯一の露出した部分であり得るので、可視層とも呼ばれる。隠れ層は、高レベル特徴を形成するために、異なるスケールまたは分解能において入力層から特徴を導出し、出力層において値または値のベクトルを出力する。各隠れ層において、ネットワークは、次のように特徴を算出し得る。
A1=f(W1*X)
A2=f(W2*A1)
図3Cは、様々な実施形態による、到着時間を推定するための例示的なリカレント・ニューラル・ネットワーク(RNN)フレームワークを示す。図3Cに示され、以下で提示される動作は、例示的であるものとする。
ルートがリンクに分割されるので、および車両がおそらくリンクを介して出発地から目的地に進むので、リンクは、互いに対して連続であり得る。リカレント・ニューラル・ネットワークは、到着時間を推定するために、連続情報を利用することができる。すなわち、入力(および出力)は、互いに依存し得る。RNNは、RNNがシーケンスのあらゆる要素について同じタスクを実施するので、リカレントと呼ばれ、出力は、前の算出に依存する。RNNは、任意に長いシーケンスにおける情報、たとえば、数ステップ前の情報を利用することができる。
図3Cは、RNNの一部分(層t−1、層t、層t+1)を示す。層t−1は、ルートのリンクt−1に対応し、層tは、ルートのリンクtに対応し、層t+1は、ルートのリンクt+1に対応する。(第1の層以外の)各層は、前の層から入力と隠れ状態とを受信し得る。たとえば、層tの場合、層tは、入力tと、隠れ状態t−1とを受信する。入力はベクトルで表され得る。隠れ状態は、ネットワークの「メモリ」と呼ばれることがある。隠れ状態tは、たとえば、各々、重みに関連する、入力tおよび隠れ状態t−1の非線形関数に基づいて得られ得る。出力tは、重みに関連する隠れ状態tの関数であり得る。
上記で示されたように、開示されるシステムおよび方法は、到着時間推定の精度を著しく改善することができる。ワイド・ネットワークおよびディープ・ニューラル・ネットワークは、ルートの全体的特徴をモデル化することができる。たとえば、クロス積によって、疎な特徴が、高い精度でモデル化され得る。さらに、RNNは、様々なリンクの特徴と、到着時間推定におけるそれらの差分とをモデル化することができる。したがって、開示されるシステムおよび方法は、既存の技術よりも著しく改善する。
図4Aは、本開示の様々な実施形態による、例示的な方法400のフローチャートを示す。方法400は、たとえば、図1の環境100を含む、様々な環境において実装され得る。例示的な方法400は、システム102(たとえば、プロセッサ104、メモリ106)、コンピューティング・デバイス110(たとえば、ユーザに関連するモバイル・フォン)、またはコンピューティング・デバイス111(たとえば、車両ドライバに関連するモバイル・フォン)のうちの1つまたは複数の構成要素によって実装され得る。例示的な方法400は、システム102と同様の複数のシステムによって実装され得る。以下で提示される方法400の動作は、例示的であるものとする。実装形態に応じて、例示的な方法400は、様々な順序でまたは並列に実施される、追加の、より少数の、または代替のステップを含み得る。
ブロック402において、輸送情報が、トレーニングされた機械学習モデルに入力され得る。輸送情報は、乗車オーダーに関連する出発地と目的地とを含み得、トレーニングされた機械学習モデルは、マルチプレーヤ・パーセプトロン・ネットワークに結合された、ワイド・アルゴリズム、ディープ・ニューラル・ネットワーク、およびリカレント・ニューラル・ネットワークのすべてを含む。ブロック404において、トレーニングされた機械学習モデルに基づいて、出発地と目的地とを接続するルートを介して目的地に到着するための推定された時間が得られ得る。
図4Bは、本開示の様々な実施形態による、例示的な方法450のフローチャートを示す。方法450は、たとえば、図1の環境100を含む、様々な環境において実装され得る。例示的な方法450は、システム102の1つまたは複数の構成要素(たとえば、プロセッサ104、メモリ106)によって実装され得る。例示的な方法450は、システム102と同様の複数のシステムによって実装され得る。以下で提示される方法450の動作は、例示的であるものとする。実装形態に応じて、例示的な方法450は、様々な順序でまたは並列に実施される、追加の、より少数の、または代替のステップを含み得る。以下で説明される様々なモジュールが、たとえば、上記で説明された方法によって、トレーニングされていることがある。
ブロック452において、履歴車両移動に関連する輸送トレーニング・データが得られ得、輸送トレーニング・データは、履歴出発地と履歴目的地とを接続する履歴ルートと、実履歴移動時間とを含む。ブロック454において、1つまたは複数の大域特徴および局所特徴が、輸送トレーニング・データから得られ得る。ブロック456において、それぞれ出力を得るために、大域特徴は、ワイド・アルゴリズムに入力され得、大域特徴は、ディープ・ニューラル・ネットワークに入力され得、局所特徴は、リカレント・ニューラル・ネットワークに入力され得る。ブロック458において、推定された履歴移動時間を得るために、ワイド・アルゴリズム、ディープ・ニューラル・ネットワーク、およびリカレント・ニューラル・ネットワークからの出力が、マルチプレーヤ・パーセプトロン・ネットワークに入力され得る。ブロック460において、ワイド・アルゴリズム、ディープ・ニューラル・ネットワーク、リカレント・ニューラル・ネットワーク、およびマルチプレーヤ・パーセプトロン・ネットワークに関連する1つまたは複数の重みが、推定された履歴移動時間と実履歴移動時間との間の差分を最小化することに少なくとも基づいて更新され得る。履歴ルートは、各リンクが道路セグメントに対応する、接続されたリンクのシーケンスに対応し得る。大域特徴は、履歴ルートにおけるリンクについて均一であり得、局所特徴は、個々にリンクに関連し得る(すなわち、リンクごとに異なり得る)。
図4Cは、本開示の様々な実施形態による、例示的な方法480のフローチャートを示す。方法480は、たとえば、図1の環境100を含む、様々な環境において実装され得る。例示的な方法480は、システム102の1つまたは複数の構成要素(たとえば、プロセッサ104、メモリ106)によって実装され得る。例示的な方法480は、システム102と同様の複数のシステムによって実装され得る。以下で提示される方法480の動作は、例示的であるものとする。実装形態に応じて、例示的な方法480は、様々な順序でまたは並列に実施される、追加の、より少数の、または代替のステップを含み得る。以下で説明される様々なモジュールが、たとえば、上記で説明された方法によって、トレーニングされていることがある。
ブロック482において、出発地から目的地への輸送のための乗車オーダーが、デバイス(たとえば、モバイル・フォンなど、コンピューティング・デバイス)から受信され得る。ブロック484において、出発地と目的地とを接続するルートが決定され得る。たとえば、出発地と距離とを接続する、最短距離のルートまたは最も走行されたルートが決定され得る。ブロック486において、ルートに関連する輸送情報が得られ得る。ブロック488において、ルートを介して目的地に到着するための推定された時間を得るために、トレーニングされた機械学習モデルに得られた輸送情報が入力され得る。ブロック490において、推定された時間が、デバイス上で再生させられ(たとえば、スクリーン上に表示され、音声として再生され)得る。
代替的に、出発地から目的地への輸送のための乗車オーダーが、デバイス(たとえば、モバイル・フォンなど、コンピューティング・デバイス)から受信され得る。出発地と目的地とを接続する1つまたは複数のルートが決定され得る。ルートを介して目的地に到着するための様々な移動時間(異なる推定された時間)を得るために、ルートに関連する輸送情報が得られ、トレーニングされた機械学習モデルに入力され得る。最速ルートなど、ルートのうちの1つまたは複数が決定され、対応する推定された到着時間とともにデバイス上で再生させられ(たとえば、スクリーン上に表示され、音声として再生され)得る。
本明細書で説明される技法は、1つまたは複数の専用コンピューティング・デバイスによって実装される。専用コンピューティング・デバイスは、技法を実施するためにハードワイヤードされ得るか、あるいは技法を実施するように永続的にプログラムされた1つまたは複数の特定用途向け集積回路(ASIC)またはフィールド・プログラマブル・ゲート・アレイ(FPGA)など、回路またはデジタル電子デバイスを含み得るか、あるいはファームウェア、メモリ、他のストレージ、または組合せ中のプログラム命令に従って技法を実施するようにプログラムされた1つまたは複数のハードウェア・プロセッサを含み得る。そのような専用コンピューティング・デバイスはまた、技法を達成するために、カスタム・ハードワイヤード論理、ASIC、またはFPGAをカスタム・プログラミングと組み合わせ得る。専用コンピューティング・デバイスは、デスクトップ・コンピュータ・システム、サーバ・コンピュータ・システム、ポータブル・コンピュータ・システム、ハンドヘルド・デバイス、ネットワーキング・デバイス、あるいは技法を実装するためにハードワイヤードおよび/またはプログラム論理を組み込む任意の他のデバイスまたはデバイスの組合せであり得る。(1つまたは複数の)コンピューティング・デバイスは、概して、オペレーティング・システム・ソフトウェアによって制御および協調される。従来のオペレーティング・システムは、実行のためのコンピュータ・プロセスを制御およびスケジュールし、メモリ管理を実施し、ファイル・システム、ネットワーキング、I/Oサービスを提供し、特にグラフィカル・ユーザ・インターフェース(「GUI」)など、ユーザ・インターフェース機能を提供する。
図5は、本明細書で説明される実施形態のいずれかが実装され得るコンピュータ・システム500を示すブロック図である。システム500は、上記で説明されたシステム102に対応し得る。コンピュータ・システム500は、情報を通信するためのバス502または他の通信機構と、情報を処理するための、バス502に結合された1つまたは複数のハードウェア・プロセッサ504とを含む。(1つまたは複数の)ハードウェア・プロセッサ504は、たとえば、1つまたは複数の汎用マイクロプロセッサであり得る。(1つまたは複数の)プロセッサ504は、上記で説明されたプロセッサ104に対応し得る。
コンピュータ・システム500は、プロセッサ504によって実行されるべき情報および命令を記憶するための、バス502に結合されたランダム・アクセス・メモリ(RAM)、キャッシュおよび/または他の動的ストレージ・デバイスなど、メイン・メモリ506をも含む。メイン・メモリ506は、プロセッサ504によって実行されるべき命令の実行中に、一時変数または他の中間情報を記憶するためにも使用され得る。そのような命令は、プロセッサ504にとってアクセス可能なストレージ媒体に記憶されるとき、コンピュータ・システム500を、命令において指定された動作を実施するためにカスタマイズされた専用マシンにする。コンピュータ・システム500は、プロセッサ504のための静的情報および命令を記憶するための、バス502に結合された読取り専用メモリ(ROM)508または他の静的ストレージ・デバイスをさらに含む。磁気ディスク、光ディスク、またはUSBサム・ドライブ(フラッシュ・ドライブ)など、ストレージ・デバイス510が、情報および命令を記憶するために、与えられ、バス502に結合される。メイン・メモリ506、ROM508、および/またはストレージ510は、上記で説明されたメモリ106に対応し得る。
コンピュータ・システム500は、コンピュータ・システムと組み合わせてコンピュータ・システム500を専用マシンにさせるかまたは専用マシンになるようにプログラムする、カスタマイズされたハードワイヤード論理、1つまたは複数のASICまたはFPGA、ファームウェアおよび/あるいはプログラム論理を使用して、本明細書で説明される技法を実装し得る。一実施形態によれば、本明細書の技法は、(1つまたは複数の)プロセッサ504が、メイン・メモリ506中に含まれている1つまたは複数の命令の1つまたは複数のシーケンスを実行することに応答して、コンピュータ・システム500によって実施される。そのような命令は、ストレージ・デバイス510など、別のストレージ媒体からメイン・メモリ506に読み取られ得る。メイン・メモリ506中に含まれている命令のシーケンスの実行は、本明細書で説明されるプロセス・ステップを(1つまたは複数の)プロセッサ504に実施させる。代替実施形態では、ハードワイヤード回路が、ソフトウェア命令の代わりにまたはそれらと組み合わせて使用され得る。
メイン・メモリ506、ROM508、および/またはストレージ510は、非一時的ストレージ媒体を含み得る。本明細書で使用される「非一時的媒体」という用語、および同様の用語は、マシンを特定の様式で動作させるデータおよび/または命令を記憶する任意の媒体を指す。そのような非一時的媒体は、不揮発性媒体および/または揮発性媒体を含み得る。不揮発性媒体は、たとえば、ストレージ・デバイス510などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、メイン・メモリ506などの動的メモリを含む。非一時的媒体の一般的な形態は、たとえば、フロッピー・ディスク、フレキシブル・ディスク、ハードディスク、ソリッド・ステート・ドライブ、磁気テープ、または任意の他の磁気データ・ストレージ媒体、CD−ROM、任意の他の光データ・ストレージ媒体、孔のパターンをもつ任意の物理媒体、RAM、PROM、およびEPROM、フラッシュEPROM、NVRAM、任意の他のメモリ・チップまたはカートリッジ、ならびにそれらのネットワーク化されたバージョンを含む。
コンピュータ・システム500は、バス502に結合された通信インターフェース518をも含む。通信インターフェース518は、1つまたは複数のローカル・ネットワークに接続された1つまたは複数のネットワーク・リンクに結合する二方向データ通信を提供する。たとえば、通信インターフェース518は、対応するタイプの電話回線へのデータ通信接続を提供するための、統合サービス・デジタル・ネットワーク(ISDN)カード、ケーブル・モデム、衛星モデム、またはモデムであり得る。別の例として、通信インターフェース518は、互換ローカル・エリア・ネットワーク(LAN)へのデータ通信接続を提供するためのLANカード(またはWANと通信するためのWAN構成要素)であり得る。ワイヤレス・リンクも実装され得る。いかなるそのような実装においても、通信インターフェース518は、様々なタイプの情報を表すデジタル・データ・ストリームを搬送する電気信号、電磁信号または光信号を送受信する。
コンピュータ・システム500は、(1つまたは複数の)ネットワーク、ネットワーク・リンクおよび通信インターフェース518を通して、メッセージを送り、プログラム・コードを含む、データを受信し得る。インターネットの例では、サーバが、インターネット、ISP、ローカル・ネットワークおよび通信インターフェース518を通して、アプリケーション・プログラムのための要求されたコードを送信し得る。
受信されたコードは、そのコードが受信されたとき、プロセッサ504によって実行され、および/あるいは後の実行のためにストレージ・デバイス510または他の不揮発性ストレージに記憶され得る。
先行するセクションで説明されたプロセス、方法、およびアルゴリズムの各々は、コンピュータ・ハードウェアを含む1つまたは複数のコンピュータ・システムまたはコンピュータ・プロセッサによって実行されるコード・モジュールにおいて実施され、および完全にまたは部分的に自動化され得る。プロセスおよびアルゴリズムは、特定用途向け回路において部分的にまたは完全に実装され得る。
上記で説明された様々な特徴およびプロセスは、互いとは無関係に使用され得るか、または様々なやり方で組み合わせられ得る。すべての可能な組合せおよび部分組合せが、本開示の範囲内に入るものとする。さらに、いくつかの実装形態では、いくつかの方法またはプロセス・ブロックが省略され得る。また、本明細書で説明される方法およびプロセスは、特定のシーケンスに限定されず、それらに関係するブロックまたは状態が、適切である他のシーケンスにおいて実施され得る。たとえば、説明されるブロックまたは状態が、具体的に開示される順序以外の順序で実施され得るか、あるいは複数のブロックまたは状態が、単一のブロックまたは状態において組み合わせられ得る。例示的なブロックまたは状態は、直列に、並列に、または何らかの他の様式で実施され得る。ブロックまたは状態が、開示される例示的な実施形態に追加されるかまたはそれらから除去され得る。本明細書で説明される例示的なシステムおよび構成要素が、説明されるものとは異なって構成され得る。たとえば、要素が、開示される例示的な実施形態と比較して、それらに追加されるか、それらから除去されるか、または並べ替えられ得る。
本明細書で説明される例示的な方法の様々な動作は、少なくとも部分的に、アルゴリズムによって実施され得る。アルゴリズムは、メモリ(たとえば、上記で説明された非一時的コンピュータ可読ストレージ媒体)に記憶されたプログラム・コードまたは命令中に含まれ得る。そのようなアルゴリズムは、機械学習アルゴリズムまたはモデルを含み得る。いくつかの実施形態では、機械学習アルゴリズムまたはモデルは、機能を実施するようにコンピュータを明示的にプログラムしないことがあるが、トレーニング・データから学習して、機能を実施する予測モデル(トレーニングされた機械学習モデル)を作ることができる。
本明細書で説明される例示的な方法の様々な動作は、少なくとも部分的に、関連する動作を実施するように(たとえば、ソフトウェアによって)一時的に構成されたかまたは永続的に構成された、1つまたは複数のプロセッサによって実施され得る。一時的に構成されたのか永続的に構成されたのかにかかわらず、そのようなプロセッサは、本明細書で説明される1つまたは複数の動作または機能を実施するように動作するプロセッサ実装エンジンを構成し得る。
同様に、本明細書で説明される方法は、少なくとも部分的にプロセッサ実装され得、1つまたは複数の特定のプロセッサが、ハードウェアの一例である。たとえば、方法の動作のうちの少なくともいくつかが、1つまたは複数のプロセッサまたはプロセッサ実装エンジンによって実施され得る。その上、1つまたは複数のプロセッサは、「クラウド・コンピューティング」環境においてまたは「サービスとしてのソフトウェア」(SaaS)として、関連する動作のパフォーマンスをサポートするようにも動作し得る。たとえば、動作のうちの少なくともいくつかが、(プロセッサを含むマシンの例としての)コンピュータのグループによって実施され得、これらの動作が、ネットワーク(たとえば、インターネット)を介しておよび1つまたは複数の適切なインターフェース(たとえば、アプリケーション・プログラム・インターフェース(API))を介してアクセス可能である。
動作のうちのいくつかのパフォーマンスが、プロセッサの間で分散され得、単一の機械内に存在するだけでなく、いくつかのマシンにわたって展開される。いくつかの例示的な実施形態では、プロセッサまたはプロセッサ実装エンジンは、単一の地理的位置に(たとえば、ホーム環境、オフィス環境、またはサーバ・ファーム内に)あり得る。他の例示的な実施形態では、プロセッサまたはプロセッサ実装エンジンは、いくつかの地理的位置にわたって分散され得る。
本明細書全体にわたって、複数のインスタンスが、単一のインスタンスとして説明される構成要素、動作、または構造を実装し得る。1つまたは複数の方法の個々の動作が、別個の動作として示され、説明されたが、個々の動作のうちの1つまたは複数が同時に実施され得、示された順序でそれらの動作が実施されることは必要とされない。例示的な構成において別個の構成要素として提示される構造および機能が、組み合わせられた構造または構成要素として実装され得る。同様に、単一の構成要素として提示される構造および機能は、別個の構成要素として実装され得る。これらおよび他の変形、修正、追加、および改善は、本明細書の主題の範囲内に入る。
主題の概観が、特定の例示的な実施形態に関して説明されたが、本開示の実施形態のより広い範囲から逸脱することなく、これらの実施形態に様々な修正および変更が行われ得る。主題のそのような実施形態は、単に便宜上、および2つ以上の開示または概念が事実上開示される場合に本出願の範囲を単一の開示または概念に随意に限定することを意図することなしに、「発明」という用語で、本明細書で個々にまたはまとめて呼ばれ得る。
本明細書で示される実施形態は、開示される教示を当業者が実施することを可能にするために十分詳細に説明された。本開示の範囲から逸脱することなく構造的および論理的な置換および変更が行われ得るように、そこから他の実施形態が使用され、導出され得る。したがって、詳細な説明は、限定的な意味にとられるべきではなく、様々な実施形態の範囲が、添付の特許請求の範囲が権利付与される等価物の全範囲とともに、そのような特許請求の範囲によってのみ定義される。
本明細書で説明されたおよび/または添付図に示された流れ図におけるいかなるプロセスの説明、要素、またはブロックも、プロセス中の特定の論理関数またはステップを実装するための1つまたは複数の実行可能な命令を含む、コードのモジュール、セグメント、または部分を潜在的に表すものとして理解されたい。代替実装形態が、本明細書で説明される実施形態の範囲内に含まれ、そこで、当業者によって理解されるように、要素または機能が、関与する機能に応じて、削除され得、実質的に同時にまたは逆順でを含めて、示されたまたは説明されたものとは順が狂って実行され得る。
本明細書で使用される「または」という用語は、包含的または排他的意味で解釈され得る。その上、単一の事例として本明細書で説明されるリソース、動作、または構造について、複数の事例が与えられ得る。さらに、様々なリソース、動作、エンジン、およびデータ・ストアとの間の境界はいくぶん恣意的であり、特定の動作が、特定の例示的な構成の文脈において示される。機能の他の割振りが想定され、本開示の様々な実施形態の範囲内に入り得る。概して、例示的な構成において別個のリソースとして提示される構造および機能は、組み合わせられた構造またはリソースとして実装され得る。同様に、単一のリソースとして提示される構造および機能は、別個のリソースとして実装され得る。これらおよび他の変形、修正、追加、および改善は、添付の特許請求の範囲によって表されるように本開示の実施形態の範囲内に入る。したがって、本明細書および図面は、限定的な意味ではなく例示的な意味で考慮されるべきである。
特に、「することができる(can)」、「することができる(could)」、「し得る、することがある(might)」、または「し得る、することがある(may)」など、条件付き文言は、別段に明記されていない限り、または使用される文脈内で別段に理解される限り、概して、いくつかの実施形態は、いくつかの特徴、要素および/またはステップを含み、他の実施形態はそれらを含まないことを伝えるものとする。したがって、そのような条件付き文言は、概して、特徴、要素および/またはステップが何らかのやり方で1つまたは複数の実施形態に必要とされることを暗示するものではなく、あるいは1つまたは複数の実施形態が、ユーザ入力または指示を用いてまたは用いずに、これらの特徴、要素および/またはステップが、含まれるのか、何らかの特定の実施形態において実施されることになるのかを決定するための論理を必然的に含むことを暗示するものではない。