(57)【特許請求の範囲】
【請求項１】
マルチタスクニューラルネットワークシステムを訓練する方法であって、前記ニューラルネットワークシステムが、共有ポリシーネットワークと組み合わせた訓練可能なワーカのセットを含み、前記方法が、
複数の異なるタスクでの、前記訓練可能なワーカおよび前記共有ポリシーネットワークの協調訓練を含み、各ワーカがそれぞれのタスクポリシーに従って前記タスクの対応する1つを行うことを学習し、前記共有ポリシーネットワークが前記タスクに対する共通の行動を表すマルチタスクポリシーを学習するようにし、
前記協調訓練が、前記共有ポリシーネットワークと前記訓練可能なワーカの両方を介して前記協調訓練からの誤差を伝播することを含む、方法。
【請求項２】
前記協調訓練が、目的関数を最適化することによって行われ、前記目的関数が、タスクごとに、
前記タスクポリシーに従って前記タスクを行う際にワーカによって得られる期待報酬を示す報酬項と、
前記タスクポリシーの分布と前記マルチタスクポリシーの分布との差を測定して、前記タスクポリシーの前記分布を前記マルチタスクポリシーの前記分布に向かって正則化する、少なくとも第1のエントロピー項と
を含む、請求項1に記載の方法。
【請求項３】
前記目的関数が、タスクごとに、探索を促進するために前記タスクポリシーの前記分布によって決まる第2の、探索エントロピー項をさらに含む、請求項2に記載の方法。
【請求項４】
前記ニューラルネットワークシステムが、環境と対話するとき、前記ワーカの1つまたは複数によって行われるべきアクションを選択するために強化学習システムを含み、前記タスクが、状態に応じて各々行われるべき一連のアクションを含み、前記タスクポリシーの各々のそれぞれの分布および前記マルチタスクポリシーの分布が各々、状態-アクション分布を含む、請求項1、2、または3に記載の方法。
【請求項５】
報酬項が、ある状態であるアクションをとることからの期待報酬によって決まる割り引かれた報酬項である、請求項2に従属する請求項4に記載の方法。
【請求項６】
前記訓練可能なワーカを訓練するとき、前記訓練可能なワーカに対する前記タスクポリシーを決定する際に、前記共有ポリシーネットワークからの前記マルチタスクポリシーを使用するステップを含む、請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記協調訓練が、前記訓練可能なワーカの1つまたは複数を訓練することと、前記共有ポリシーネットワークを訓練することとを交互に行うことを含む、請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記協調訓練が、前記共有ポリシーネットワークの前記マルチタスクポリシーと、前記タスクポリシーの1つまたは複数とを一緒に最適化することを含む、請求項1から7のいずれか一項に記載の方法。
【請求項９】
前記マルチタスクポリシーを使用して、前記タスクポリシーをパラメータ化するステップをさらに含む、請求項1から8のいずれか一項に記載の方法。
【請求項１０】
前記訓練可能なワーカが、1つまたは複数のニューラルネットワークを含み、前記協調訓練が、逆伝播により、前記1つまたは複数のニューラルネットワークおよび前記共有ポリシーネットワークを一緒に訓練することを含む、請求項1から9のいずれか一項に記載の方法。
【請求項１１】
前記逆伝播が、前記タスクポリシーからの前記マルチタスクポリシーを蒸留するために、前記タスクポリシーからの確率を、前記マルチタスクポリシーからの確率に一致させるための項を含む目的関数を使用する、請求項10に記載の方法。
【請求項１２】
適応マルチタスクコンピュータシステムを訓練する方法であって、前記コンピュータシステムが、訓練可能なワーカおよび共有モジュールのセットを含み、前記方法が、
複数の異なるタスクでの、前記訓練可能なワーカおよび前記共有モジュールの協調訓練を含み、各ワーカがそれぞれのタスクポリシーに従って前記タスクの対応する1つを行うことを学習し、共有ポリシーネットワークが前記タスクに対する共通の行動を表すマルチタスクポリシーを学習するようにし、
前記協調訓練が、目的関数を最適化することによって行われ、前記目的関数が、タスクごとに、
前記タスクを行う際にワーカによって得られる期待報酬を示す報酬項と、
前記タスクポリシーの分布と前記マルチタスクポリシーの分布との差を測定して、前記タスクポリシーの前記分布を前記マルチタスクポリシーの前記分布に向かって正則化する、少なくとも第1のエントロピー項と
を含む、方法。
【請求項１３】
前記目的関数が、タスクごとに、探索を促進するために前記タスクポリシーの前記分布によって決まる第2の、探索エントロピー項をさらに含む、請求項12に記載の方法。
【請求項１４】
前記コンピュータシステムが、環境と対話するとき、前記ワーカの1つまたは複数によって行われるべきアクションを選択するために強化学習システムを含み、前記タスクが、状態に応じて各々行われるべき一連のアクションを含み、前記タスクポリシーの各々のそれぞれの分布および前記マルチタスクポリシーの分布が各々、状態-アクション分布を含む、請求項12または13に記載の方法。
【請求項１５】
前記報酬項が、ある状態であるアクションをとることからの期待報酬によって決まる割り引かれた報酬項である、請求項14に記載の方法。
【請求項１６】
前記訓練可能なワーカを訓練するとき、前記訓練可能なワーカに対する前記タスクポリシーを決定する際に、前記マルチタスクポリシーを使用するステップを含む、請求項12から15のいずれか一項に記載の方法。
【請求項１７】
前記協調訓練が、前記訓練可能なワーカの1つまたは複数を訓練することと、前記共有モジュールを訓練することとを交互に行うことを含む、請求項12から16のいずれか一項に記載の方法。
【請求項１８】
前記協調訓練が、前記共有モジュールの前記マルチタスクポリシーと、前記タスクポリシーの1つまたは複数とを一緒に最適化することを含む、請求項12から17のいずれか一項に記載の方法。
【請求項１９】
前記マルチタスクポリシーを使用して、前記タスクポリシーをパラメータ化するステップをさらに含む、請求項12から18のいずれか一項に記載の方法。
【請求項２０】
前記訓練可能なワーカおよび前記共有モジュールが各々、1つまたは複数のニューラルネットワークを含み、前記協調訓練が、逆伝播により、前記1つまたは複数のニューラルネットワークを一緒に訓練することを含む、請求項12から19のいずれか一項に記載の方法。
【請求項２１】
行われるべき複数の学習されたタスクに関係する入力データを処理し、前記タスクの実行を制御するために出力データを提供するマルチタスクニューラルネットワークシステムであって、
前記入力データを受け取るための入力と、
前記入力に結合されたワーカのセットであって、各々が、それぞれの学習されたタスクポリシーに従ってアクションデータを出力することによって、前記複数の学習されたタスクのうちの関連する1つを実行するように構成され、各タスクが制御モジュールと関連付けられる、ワーカのセットと、
前記入力、および前記ワーカのセットの一方または両方に結合された、共有ポリシーネットワークであって、前記タスクに対する共通の行動を表す学習されたマルチタスクポリシーを定義する、共有ポリシーネットワークと
を含み、
マルチタスクニューラルネットワークシステムが、タスクごとに、それぞれのタスクポリシーを定義するために、前記関連する制御モジュールの出力を、前記学習されたマルチタスクポリシーと結合するように構成される、マルチタスクニューラルネットワークシステム。
【請求項２２】
前記制御モジュールの各々がニューラルネットワークモジュールである、請求項21に記載のマルチタスクニューラルネットワークシステム。
【請求項２３】
前記ニューラルネットワークモジュールが、ニューラルネットワーク層の少なくとも1つの列を定義し、前記共有ポリシーネットワークが、ニューラルネットワーク層の第2の列を定義する、複数列アーキテクチャを有する、請求項22に記載のマルチタスクニューラルネットワークシステム。
【請求項２４】
前記アクションデータが、行われるべきアクションの期待価値を定義するアクション価値データを含む、請求項21、22、または23に記載のマルチタスクニューラルネットワークシステム。
【請求項２５】
前記アクションデータが、前記ワーカによって行われ得る複数の考えられるアクションの各々に対する尤度を定義するデータを含む、請求項21から24のいずれか一項に記載のマルチタスクニューラルネットワークシステム。
【請求項２６】
前記制御モジュールが、互いとは実質的に無関係に動作する、請求項21から25のいずれか一項に記載のマルチタスクニューラルネットワークシステム。
【請求項２７】
前記ワーカが、共有される重みを含むニューラルネットワークを含む、請求項21から26のいずれか一項に記載のマルチタスクニューラルネットワークシステム。
【請求項２８】
1つまたは複数のコンピュータと、前記1つまたは複数のコンピュータによって実行されると、請求項1から20のいずれか一項に記載のそれぞれの方法の動作を、前記1つまたは複数のコンピュータに行わせる命令を記憶する1つまたは複数のストレージデバイスとを備える、システム。
【請求項２９】
前記1つまたは複数のコンピュータによって実行されると、請求項1から20のいずれか一項に記載のそれぞれの方法の動作を、前記1つまたは複数のコンピュータに行わせる命令を記憶する1つまたは複数のコンピュータ記憶媒体。
【請求項３０】
1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに請求項21から27のいずれか一項に記載のシステムを実行させる命令を記憶する1つまたは複数のコンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、2017年5月19日に出願された米国仮特許出願第62/508,991号の非仮出願であり、これに基づく優先権を主張し、その内容全体が参照により本明細書に組み込まれる。
【０００２】
本明細書は、複数のタスクを行うようにニューラルネットワークを訓練する方法、および複数のタスクを行うための、ニューラルネットワークシステムなどの適応コンピュータシステムに関する。
【背景技術】
【０００３】
ニューラルネットワークは、受け取った入力に対する出力を予測するために非線形ユニットの1つまたは複数の層を用いる機械学習モデルである。いくつかのニューラルネットワークは、出力層に加えて1つまたは複数の隠れ層を含む深層ニューラルネットワークである。各隠れ層の出力は、ネットワークの次の層、すなわち次の隠れ層または出力層への入力として使用される。ネットワークの各層が、パラメータのそれぞれのセットの現在の値に従って、受け取った入力から出力を生成する。
【０００４】
本明細書で説明する技法のいくつかは、強化学習の分野における適用例を有する。強化学習システムでは、エージェントが、環境の現在の状態を特徴づける観測値(observation)を受け取ることに応答して強化学習システムによって選択されるアクションを行うことによって環境と対話する。いくつかの強化学習システムが、ニューラルネットワークの出力に従って所与の観測値を受け取ることに応答してエージェントによって行われるべきアクションを選択する。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】J. Schulman、P. Abbeel、およびX. Chen. Equivalence between policy gradients and soft Q-Learning、arXiv:1704.06440、2017
【発明の概要】
【課題を解決するための手段】
【０００６】
本明細書は、複数の異なるタスクを行うために、1つまたは複数の場所で1つまたは複数のコンピュータにコンピュータプログラムとして実装される、ニューラルネットワークシステムなどの適応システム、およびそのようなタスクを行うためにシステムを訓練するための方法について説明する。好ましくは、タスクは関連しており、システムのそれぞれの部分が、したがって、共有行動(behavior)と、タスク固有行動とを学習してもよい。知識は、システムのこれらの部分の間で共有されてもよい。
【０００７】
ワーカ(worker)は、対応するタスクまたはタスク群に関連付けられてもよい。各タスクまたはタスク群に関連付けられたワーカは、そのタスクまたはタスク群を行うように配置される。システムは、各タスクに対して、そのタスクに関連付けられたワーカがどのようにタスクを行うべきかを示す、少なくとも1つのそれぞれの「タスクポリシー」を採用および/または生成してもよい。ポリシーにつき1つのワーカがある場合、これは「ワーカポリシー」と同等に見なされてもよい。タスクの所与の1つに関連付けられた複数のワーカがある場合、ワーカは、そのタスクに対するタスクポリシーを共有してもよく(すなわち、タスクポリシーは、それらの複数のワーカの各々に対するワーカポリシーとして使用される)、または代替的に、複数のワーカの各々が、そのタスクに対するタスクポリシーであるそれぞれのワーカポリシーを有してもよい。
【０００８】
システムの共有または共通部分が、マルチタスクポリシーを学習してもよい。共有部分は、ニューラルネットワークであってもよいが、ニューラルネットワークである必要はない。
【０００９】
タスクポリシーは、ポリシー間の距離の測度に従って、共通の、マルチタスクポリシー近くにとどまってもよく、たとえば、マルチタスクポリシーは、タスクポリシーの重心を定義してもよい。タスクポリシーは、それぞれのニューラルネットワークを使用して実装されてもよいが、そうである必要はない。タスクポリシーは、互いとは実質的に無関係に動作してもよいが、そうである必要はない。
【００１０】
一例では、システムは、強化学習システムの一部であってもよい。タスクは、1つまたは複数の環境(たとえば、同じ環境またはそれぞれの環境)上または内で作動するそれぞれのエージェント(「ワーカ」)の制御装置を含んでもよい。システムは、エージェントが行うアクションを選択するためのデータ(「アクションデータ」)を出力してもよい。たとえば、システムは、環境の状態に関係するデータを観測する、または場合によっては受け取るために、データを入力してもよく、観測される状態に基づいて、行うアクションを決定してもよい。各環境は、実際のもの、またはシミュレートされたものであってもよい。行うアクションを選択するためのデータは、1つまたは複数のタスクポリシーを使用して生成されてもよい。各タスクポリシーは、観測された状態に対して行われるべきアクションを指定してもよく、または、観測された状態に対して行われるべきアクションがサンプルとして取得され得る分布を指定してもよい。
【００１１】
システムは、強化学習システムの一部であってもよいが、そうである必要はない。たとえば、説明する技法は、たとえば、畳み込みを用いるフィードフォワードネットワークを使用して、画像またはビデオ認識または分類などのタスクに適用することができる。一般に、システムは、任意の種類のデジタルデータ入力を受け取ることと、入力に基づいて任意の種類のスコア、分類、または回帰出力を生成することとを行うように構成することができる。
【００１２】
たとえば、ニューラルネットワークへの入力が、画像または画像から抽出された特徴である場合、所与の画像に対してニューラルネットワークによって生成される出力は、物体カテゴリのセットの各々に対するスコアであってもよく、各スコアは、画像がカテゴリに属する物体の画像を含んでいる推定尤度(estimated likelihood)を表す。
【００１３】
別の例として、ニューラルネットワークへの入力がインターネットリソース(たとえば、ウェブページ)、文書、または文書の一部、またはインターネットリソース、文書、もしくは文書の一部から抽出された特徴である場合、所与のインターネットリソース、文書、または文書の一部に対してニューラルネットワークによって生成される出力は、トピックのセットの各々に対するスコアであってもよく、各スコアは、インターネットリソース、文書、または文書部分がトピックに関するものである推定尤度を表す。
【００１４】
別の例として、ニューラルネットワークへの入力が、特定の広告に対するインプレッションコンテキスト(impression context)の特徴である場合、ニューラルネットワークによって生成される出力は、特定の広告がクリックされる推定尤度を表すスコアであってもよい。
【００１５】
別の例として、ニューラルネットワークへの入力が、ユーザに対する個人化された推薦の特徴、たとえば、推薦のためのコンテキストを描写する特徴、たとえば、ユーザがとった前のアクションを描写する特徴である場合、ニューラルネットワークによって生成される出力は、コンテンツ項目のセットの各々に対するスコアであってもよく、各スコアは、ユーザがコンテンツ項目の推薦に好意的に反応する推定尤度を表す。
【００１６】
別の例として、ニューラルネットワークへの入力が1つの言語のテキストのシーケンスである場合、ニューラルネットワークによって生成される出力は、別の言語のいくつかのテキストのセットの各々に対するスコアであってもよく、各スコアは、その別の言語のテキストが、入力されたテキストを別の言語に適切に翻訳したものである推定尤度を表す。
【００１７】
別の例として、ニューラルネットワークへの入力が、口頭発話を表すシーケンスである場合、ニューラルネットワークによって生成される出力は、いくつかのテキストのセットの各々に対するスコアであってもよく、各スコアは、テキストが発話に対する正しい文字起こしである推定尤度を表す。
【００１８】
強化学習システムの一部として使用されるとき、環境は、ビデオゲームなどのシミュレートされた環境であってもよく、ワーカは、ビデオゲームをプレイするシミュレートされたユーザであってもよい。別の例として、シミュレートされた環境は、モーションシミュレーション環境、たとえば、ドライビングシミュレーションまたはフライトシミュレーションであってもよく、ワーカは、モーションシミュレーションにより走行するシミュレートされた車両である。これらの実装形態では、アクションは、シミュレートされたユーザまたはシミュレートされた車両を制御するための制御入力であってもよい。
【００１９】
いくつかの他の実装形態では、環境は、実世界の環境であり、ワーカは、実世界の環境と対話する機械的ワーカ(mechanical worker)である。たとえば、ワーカは、特定のタスクを達成するために環境と対話するロボットであってもよい。別の例として、ワーカは、環境により走行する自律または半自律車両であってもよい。これらの実装形態では、アクションは、ロボットまたは自律車両を制御するための制御入力であってもよい。
【００２０】
一般に、本明細書で説明する主題の1つの革新的な態様は、マルチタスクニューラルネットワークシステムなどのマルチタスクコンピュータシステムを訓練する方法において具体化することができ、このシステムは、共有ポリシーネットワークなどの共有モジュールと組み合わせて、訓練可能なワーカのセットを含む。上記訓練可能なワーカおよび共有モジュールは、各ワーカがそれぞれのタスクポリシーに従って対応する関連タスクを行うことを学習し、共有モジュールが、タスクに対する共通の行動を表すマルチタスクポリシーを学習するように、複数の異なるタスクで協調的に訓練されてもよい。たとえば、訓練中に、協調訓練からの誤差/重み調整が、共有ポリシーネットワークと訓練可能ワーカの両方を介して伝播されてもよい。システムは、たとえば強化学習とともに、教師ありまたは教師なし損失(loss)により学習してもよい。システムの共有部分(すなわち、共有モジュール、たとえば、共有ポリシーネットワーク)は、ワーカの行動で訓練されてもよく、その逆も同様である。
【００２１】
伝播誤差は、目的関数を最適化することによって決定されてもよい。目的関数は、タスクポリシーの分布とマルチタスクポリシーの分布との差を測定する第1のエントロピー項を含んでもよい。この項は、カルバック-ライブラーダイバージェンス(Kullback-Leibler divergence)を含んでもよく、割引率(discount factor)で割り引かれてもよい。目的関数はまた、探索を促進するために、タスクポリシーの分布によって決まる第2のエントロピー項を含んでもよい。第2のエントロピー項もまた、同じまたは異なる割引率で割り引かれてもよい。
【００２２】
強化学習システムでは、タスクポリシー分布およびマルチタスクポリシー分布は、状態-アクション分布を含んでもよい。目的関数は、ある状態であるアクションをとることからの期待報酬によって決まる割り引かれた報酬項を含んでもよい。そのような強化学習システムは、たとえば、Deep Q-Network (DQN)、Double-DQN、Advantage Actor Critic (A3C)ネットワーク、または他のアーキテクチャに基づいてもよい。学習は、同期または非同期であってもよく、たとえば、Hogwild!アルゴリズムが、並列確率的勾配降下(または上昇)学習に採用されてもよい。
【００２３】
協調訓練は、訓練可能なワーカの1つまたは複数(すなわち、関連タスクのそれぞれのタスクポリシー)を訓練することと、共有ポリシーネットワークを訓練することとを交互に行うことを含んでもよい。したがって、システムは、たとえば、反復して学習して、タスク(ワーカ)ポリシーを学習することと、マルチタスクポリシーを蒸留することとを交互に行ってもよい。代替的に、ワーカニューラルネットワークおよび共有ポリシーネットワークのセットが、一緒に訓練される、すなわち、たとえば、上述の組み合わせられた損失関数を使用することによって、ワーカ(タスク)とマルチタスクポリシーの両方に対して一緒に最適化される場合がある。別個のネットワークが各ワーカ(タスク)ポリシーに対して使用され、共有ポリシーネットワークは、単にマルチタスクポリシーに対して使用されてもよく、または、ワーカネットワークが、マルチタスクポリシーについてソフトアドバンテージを定義してもよく、ソフトアドバンテージは、制御可能な温度値によってパラメータ化されてもよい。
【００２４】
一般に、協調訓練は、タスクポリシーからマルチタスクポリシーを蒸留するために、タスクポリシーからの確率を、マルチタスクポリシーからの確率に一致させることを目標とする勾配項を含む逆伝播を含んでもよい。
【００２５】
別の態様では、マルチタスクニューラルネットワークシステムが、行われるべき複数の学習されたタスクのうちの1つに関係する入力データを処理し、タスクの実行を制御するために出力データを提供する。そのようなシステムは、入力データを受け取るための入力と、入力に結合されたワーカのセットであって、各々が、それぞれのタスクポリシーに従ってアクションデータを出力することによってそれぞれのタスクを行うように構成された、ワーカのセットとを含んでもよい。共有ポリシーネットワークが、入力、およびワーカのセットの一方または両方に結合されてもよく、タスクに対する共通の行動を表す学習されたマルチタスクポリシーを定義してもよい。マルチタスクニューラルネットワークシステムは、少なくとも1つのワーカが対応する学習されたタスクを行うことができるように、タスクに対するタスクポリシーを定義するために、各タスクに対する適応システムの出力を、学習されたマルチタスクポリシーと結合するように構成されてもよい。
【００２６】
ワーカ(エージェント)は、ニューラルネットワークを含んでもよく、ニューラルネットワークは、共有ポリシーネットワークと重みを一部、または全部共有してもよく、または共有しなくてもよい。システムは、ワーカニューラルネットワークモジュールが、ニューラルネットワーク層の少なくとも1つの列を定義し、共有ポリシーネットワークが、ニューラルネットワーク層の第2の列を定義する、複数列(multicolumn)アーキテクチャを有してもよい。ワーカおよび共有ポリシーネットワークは、たとえば、強化学習システムまたはフィードフォワードニューラルネットワークを、たとえば畳み込みを用いて、一緒に定義してもよい。
【００２７】
本明細書で説明する主題は、以下の利点のうちの1つまたは複数を実現するために、特定の実施形態で実装することができる。方法は、ニューラルネットワークをより効率的に訓練するために使用することができる。たとえば、ネットワークは、1つのタスクでの訓練が、別の関係するタスクでの訓練をブートストラップするために使用され得る転移学習から、より効率的に恩恵を受けることができる。これは、タスク当たりに必要とされる訓練データの総量を削減し得る。方法は、複数の異なるタスクで動作しているワーカからの共通の行動を蒸留するために使用することができる。さらに、そのようなシステムは、より高速に学習し、訓練後にタスクでの改善された最終的実行をもたらすことができる。そのようなシステムは、ハイパーパラメータ設定に対してよりロバストであり得る。そのようなシステムはまた、各タスクでの所与の実行に対して全体的にパラメータが少なくてもよい。この技法は、一般的に、教師ありおよび教師なし学習のためのアーキテクチャ、強化学習のためのアーキテクチャ、およびデータ分類のためのアーキテクチャを含む、多くの異なるニューラルネットワークアーキテクチャに適用できる。
【図面の簡単な説明】
【００２８】
【図１】マルチタスクニューラルネットワークシステムなどのマルチタスク適応コンピュータシステムを概略的に示す図である。
【図２】強化学習を行うために使用される、図1のマルチタスク適応コンピュータシステムを示す図である。
【図３】マルチタスク適応コンピュータシステムによって行われる方法を示す図である。
【図４】マルチタスク適応コンピュータシステムを訓練するための方法を示す図である。
【図５】第1のマルチタスクニューラルネットワークシステムの一部分を示す図である。
【図６】第2のマルチタスクニューラルネットワークシステムの一部分を示す図である。
【発明を実施するための形態】
【００２９】
様々な図面における同じ参照番号および名称は、同じ要素を示す。
【００３０】
本明細書は、マルチタスクニューラルネットワークシステムなどのマルチタスク適応コンピュータシステムを開示する。このシステムは、特定の動作またはアクションを行うように構成された1つまたは複数のコンピュータによって実装されるものである。各コンピュータは、動作時にコンピュータに動作またはアクションを行わせるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをコンピュータ上にインストールしている。1つまたは複数のコンピュータプログラムが特定の動作またはアクションを行うように構成されるとは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に動作またはアクションを行わせる命令を含むことを意味する。
【００３１】
図1は、マルチタスク適応コンピュータシステムのハイレベル図を提供する。単に例のために、4つのタスクを行うためのものとして示されているが、システムは、任意の複数のタスクに容易に一般化される。4つのタスクの場合、ニューラルネットワークシステムは、各々がタスクのそれぞれの1つを行うためのものである4つのワーカ11、12、13、14を含んでもよい。システムの変形形態では、ワーカの数は、タスク数よりも大きくてもよく、タスクの1つまたは複数が、複数のワーカを含む、ワーカのそれぞれのサブセットに関連付けられる場合があり、それらのタスクが、ワーカの関連付けられたセットによって行われるようにする。ワーカのサブセットは、重複しないものであってもよい。
【００３２】
各ワーカは、それの入力のそれぞれの関数である出力を生成する。関数は、ワーカが行うタスクによって決まり、それぞれのタスクポリシーと呼ばれる(代替的に、ワーカポリシーと呼ばれることがある)。4つのワーカのそれぞれのタスクポリシーは、π1、π2、π3、およびπ4で示される。各ポリシーは、確定的でなくてもよい。言い換えれば、各ポリシーは、ワーカのすべての考えられる出力に対するそれぞれの確率を指定する、それぞれのポリシーによって定義される確率分布からのサンプルであってもよい。
【００３３】
さらに、マルチタスク適応コンピュータシステムは、共有モジュール15を含み、共有モジュール15は、同じくそれの入力から少なくとも1つの出力を生成する関数である、π0と示される「マルチタスクポリシー」を記憶する。やはり、関数は、場合によっては確率であってもよく、すなわち、関数は、マルチタスクポリシーによって定義される確率分布からのサンプルであってもよい。共有モジュール15は、ここでは「共有ポリシーネットワーク」と呼ばれるニューラルネットワークとして実装されてもよい。
【００３４】
タスクポリシーπ1、π2、π3、およびπ4、およびマルチタスクポリシーπ0は、以下で説明する協調訓練手順で一緒に生成される。この訓練中に、各ワーカは、それぞれのタスクポリシーに従ってタスクのそれぞれの1つを行うことを学習し、共有ポリシーネットワークは、マルチタスクポリシーπ0を学習する。詳細には、協調訓練手順中に、マルチタスクポリシーπ0は、タスク固有のタスクポリシーπ1、π2、π3、およびπ4から共通の行動または表現を「蒸留する」ように適合される。同時に、タスクポリシーがマルチタスクポリシーから過度に分岐しないように、マルチタスクポリシーπ0は、タスクポリシーπ1、π2、π3、およびπ4を「正則化する(regularize)」ために使用される。以下でより詳細に説明するように、正則化は、カルバック-ライブラー(KL)ダイバージェンスに基づくものであってもよい。このようにして、1つのタスクで得られた知識は、共有ポリシーに蒸留され、次いで他のタスクに転移される。
【００３５】
一例では、それぞれのワーカによって行われるタスクは、1つまたは複数の環境上または内で作動するそれぞれのエージェントによって行われるべきアクションを生成することである。たとえば、各エージェントは、同じ環境上または内で作動する場合があり、以下でこれを仮定する。変形形態では、複数の環境がある場合があり、エージェントの対応する1つまたは複数が、各環境上または内で作動する場合があり、環境は、一般的に何らかの基準により互いに似ている。
【００３６】
環境と対話するために、コンピュータシステムは、環境の現在の状態を特徴づけるデータ(「状態データ」)を受け取り、受け取ったデータに応答して、各エージェントに、Aで示されるアクション空間、すなわち、離散アクション空間または連続アクション空間の要素の、それぞれのアクションaを行わせる。環境の状態を特徴づけるデータは、本明細書では観測値と呼ぶ。いくつかの時間の各々をtで示すと、状態データは、stと示されてもよく、時間tにおける(対応する)環境の状態を示す。状態データのすべての考えられる実現値のセットは、Sで示される。したがって、st∈Sである。
【００３７】
状況の一例を図2に示し、ここでは簡単にするために、単一のコンピュータ2を示す。コンピュータ2は、図1に示すマルチタスク適応コンピュータシステムを実装する。4つのタスクは、環境20上または内で作動する4つのそれぞれのエージェント21、22、23、24を制御することである。
【００３８】
図3は、図1のマルチタスクコンピュータシステムによって行われる方法300を示す。時間tにおいて、コンピュータ1は、環境20から状態データstを受け取る(ステップ1)。整数インデックスiは、タスクにラベルを付けるために使用される(したがって、iが値1、2、3、または4のうちの1つをとる)。この例では、タスク数はワーカ数に等しいので、インデックスiは、ワーカにラベルを付けるとみなすこともできる。
【００３９】
ステップ302において、図1のマルチタスクコンピュータシステムの4つのワーカは、それぞれのアクションデータを生成する。アクションデータは、エージェント21、22、23、24の各々に対して、Aのそれぞれの要素であるそれぞれのアクションatを指定する。
【００４０】
ステップ303において、コンピュータ2は、それぞれのエージェント21、22、23、24にアクションデータを送信する。
【００４１】
ステップ304において、エージェント21、22、23、24が環境20上でそれぞれのアクションatを行うと、マルチタスクコンピュータシステムは、タスクの各々に対して報酬を指定する報酬データ{Ri (at,st)}を受け取る。これらは、環境20からコンピュータ2に送信される、または別個のモジュール(図示せず)によって計算される場合がある。
【００４２】
ステップ305において、エージェントの各々のポリシーおよびマルチタスクポリシーは更新される。
【００４３】
ステップ306において、終了基準が満たされるかどうかが決定される。満たされる場合、方法は終了する(ステップ307)。満たされない場合、方法はステップ301に戻って、次の状態データを待つ。インデックスtが、t+1に更新される。
【００４４】
図2の状況は、いくつかの点で変わることがある。第1に、コンピュータ2は、マルチタスク適応コンピュータシステムを実装するために連携して作動する複数のコンピュータに置き換えられる場合がある。
【００４５】
いくつかの実装形態では、複数の環境があり、環境の各々でエージェントの1つまたは複数が作動する。
【００４６】
いくつかの実装形態では、環境は、シミュレートされた環境(たとえば、コンピュータ2によってシミュレートされる)であり、各エージェントが、シミュレートされた環境と対話する1つまたは複数のコンピュータとして実装される。たとえば、シミュレートされた環境は、ビデオゲームであってもよく、エージェントは、ビデオゲームをプレイするシミュレートされたユーザであってもよい。
【００４７】
他の実装形態では、環境は、実世界の環境であり、エージェントは、実世界の環境と対話する機械エージェントである。たとえば、エージェントは、特定のタスクを達成するために環境と対話するロボット、または環境により走行する自律もしくは半自律車両であってもよい。これらの場合、観測値は、エージェントが環境と対話するとき、エージェントの1つまたは複数のセンサー、たとえば、カメラ、LIDARセンサー、温度センサーなどによって取り込まれるデータであることがある。
【００４８】
システムは、ロボット、または自律もしくは半自律車両などの各エージェントが、シミュレートされたまたは実世界の環境とのそれの対話を改善することができるという利点を有する。
【００４９】
次に訓練手順について、数学レベルで説明する。タスク数は、nとして示され、すなわち、インデックスi=1,....nである。簡単にするために、各タスクは、無限範囲(infinite horizon)を有し、各々が同じ割引率γを有すると仮定する。方法は、割り引かれていない有限範囲のような他のシナリオに、容易に一般化することができる。簡単にするために、アクション空間Aおよび状態空間Sはすべてのタスクに対して同じであるとも仮定する。所与のアクションが、aで示され、ここでa∈Aである。転移ダイナミクスpi (s'│s,a)および報酬関数Ri (a,s)は、タスクiごとに異なる。
【００５０】
さらに、単一のそれぞれのワーカが、各タスクと関連付けられると仮定し、πiを、それぞれの第iのタスクに対するタスク固有の確率的タスクポリシーとする。(タスクにつき1つのワーカがあるので、タスクポリシーは、ワーカポリシーと同等に考えられ得る。)ダイナミクスおよびポリシーは、ある初期状態から始まる状態およびアクション軌道にわたって同時分布を生じ、これらの分布もπiで示す。ニューラルネットワークシステムは、「マルチタスクポリシー」π0もまた記憶する。マルチタスクポリシーπ0は、タスクにわたって共通のエージェント行動を取り込む。
【００５１】
タスクポリシーおよびマルチタスクポリシーは、期待リターンを示す項と、ポリシー正則化を行う1つまたは複数の正則化項とを含む目的関数を最適化することによって、協調訓練プロセスにおいて一緒に生成される。第1の正則化項は、各タスクポリシーがマルチタスクポリシーに向かって正則化されることを保証し、割り引かれたKLダイバージェンス
【００５２】
【数１】
0006854921.tif 000002
【００５３】
を使用して定義され得る。さらなる正則化項は、探索をさらに促進するために、割り引かれたエントロピーに基づく。
【００５４】
詳細には、最大化されるべき目的関数は、以下の通りである。
【００５５】
【数２】
0006854921.tif 000003
【００５６】
ここで、cKLおよびcEntは、KLおよびエントロピー正則化の強度、α≡cKL/(cKL+cEnt)およびβ≡1/(cKL+cEnt)を決定する、0より大きいスカラー因子である。logπ0 (at│st)項は、マルチタスクポリシーの下で高い確率を有するアクションを促進する報酬成形(reward shaping)項と考えることができ、エントロピー項-logπi (at│st)は、探索を促進する。上記では、すべてのタスクに対して同じ正則化コストcKLおよびcEntを使用した。しかしながら、これをタスク固有のコストに一般化することは簡単であり、これは、さらなるハイパーパラメータを導入するが、タスクがそれらの報酬規模および必要とされる探索の量において実質的に異なる場合、重要であることがある。
【００５７】
文献にある様々な最適化技法が、上記の目的関数(1)を最大化するために適用され得る。次に、そのような2つの手法を提示する。第1の手法は、ソフトQ学習(soft Q Learning)および蒸留として知られる公開された技法に基づく。表形式表現の単純な場合、すなわち、表または他の適切なデータ構造が、aおよびsの値のいくつかの組合せに対するπ0およびπ1に対して明示的な値、ならびにπ0を与えられたπiについて、πiを与えられたπ0について最適化する、交互最大化手順を含む場合から始める。
【００５８】
この訓練プロセス400を、図4に示している。ステップ401において、マルチタスクポリシーπ0の初期推定が設定される(たとえば、すべてのアクションの可能性が等しい)。
【００５９】
ステップ401において、π0を固定してπiが変更される。π0を固定すると、(1)は分解して、タスクごとの別個の最大化問題になり、再定義された(正則化された)報酬
【００６０】
【数３】
0006854921.tif 000004
【００６１】
付きのエントロピー正則化期待リターンとなる。これは、状態およびアクション価値に対する以下の「軟化された(softened)」Bellman更新を導出することに基づくソフトQ学習(G学習としても知られる)を使用して最適化することができる(たとえば、J. Schulman、P. Abbeel、およびX. Chen. Equivalence between policy gradients and soft Q-Learning、arXiv:1704.06440、2017参照)。
【００６２】
【数４】
0006854921.tif 000005
【００６３】
Bellman更新は、状態価値Viに対するアクションについての通常のmaxオペレータが、硬化して、β→∞としてmaxオペレータになる、逆温度でsoft-maxに取って代わるという意味で軟化される。最適なポリシーπiは、逆温度βではボルツマン(Boltzmann)ポリシーである。
【００６４】
【数５】
0006854921.tif 000006
【００６５】
ここで、Ai (a,s) = Qi (a,s)-Vi (st)は、軟化されたアドバンテージ関数である。軟化された状態価値Vi(s)が上記では対数正規化群(log normalizer)として働く。マルチタスクポリシーπ0は、従来のポリシー、確率的推論としてRLで文字通り知られている観点と解釈することができる。しかしながら、過去の研究とは異なりそれは、α≦1の累乗まで高められている。これは、従来のπ0のπiへの影響を軟化させ、KLダイバージェンスを超えたさらなるエントロピー正則化の結果である。
【００６６】
ステップ403において、変更されたタスクポリシーπiの各々を与えられたマルチタスクポリシーπ0に変更が行われる。したがって、ニューラルネットワークシステムは、いくつかの以前のマルチタスク学習技法の場合のように(一般的にはアクションにわたる一様分布として)事前設定されるのではなく、π0を学習することになる。π0によって決まる(1)の唯一の項は、
【００６７】
【数６】
0006854921.tif 000007
【００６８】
これは単に、モデルπ0を、ポリシーπiの下でタスクiごとに1つの、γで割り引かれた状態アクション分布の混合に合わせるための対数尤度である。各タスクにおけるロールアウトの下での状態-アクションの訪問回数(visitation frequency)から、最尤(ML)推定量を導出することができ、最適ML解は、状態-条件付きアクション分布の混合によって与えられる。代替的に、表形式でない場合は、確率的勾配上昇法が採用されることがあり、これは、タスクポリシーπiをπ0に蒸留する更新に正確につながる。しかしながら、蒸留ステップは、ポリシーについてのKL正則化目的から自然に導かれることに留意する。深層学習における蒸留の使用に関する従来の研究との別の違いは、マルチタスクポリシーが、次に最適化されるとき、タスクポリシーを改善するために「フィードバックイン(feed back in)」され、共通の、転移できる知識がタスクポリシーにわたって共有される、コンジット(conduit)として働くことである。
【００６９】
ステップ404において、終了基準が満たされたかどうかが決定される。満たされない場合、方法400はステップ402に戻る。満たされる場合、方法はステップ405において終了する。
【００７０】
余分のエントロピー正則化の影響を考える。まず、余分のエントロピー正則化がない、すなわち、α=1と仮定し、単にn = 1タスクの単純なシナリオを考える。すると(5)は、マルチタスクポリシーπ0およびタスクポリシーπiが等しいとき最大化され、KL正則化項は0である。したがって、目的関数は、正則化されていない期待リターンとなり、つまりタスクポリシーπiは、期待リターンを局所的に最大化する貪欲ポリシー(greedy policy)に収束する。別の観点から、交互最大化方式は、以前のポリシーを中心とするKLボールを使用し、貪欲ポリシーに収束すると理解される、自然勾配またはTRPOのような信頼領域法に等しい。
【００７１】
α<1の場合、(1)にはさらなるエントロピー項がある。つまりπ0 = π1かつKL(π1 ||π0)の場合でも、目的(1)は、もはや貪欲ポリシーによって最大化されない。代わりに(1)は、エントロピー正則化因子(entropy regularization factor)β'=β/(1-α)=1/cEntを有するエントロピー正則化期待リターンとなり、最適ポリシーは、逆温度β'を有するボルツマン形式のものである。結論として、余分なエントロピー項は、タスクポリシーが貪欲にならないことを保証し、cEntを適切に調整することによって探索の量を制御することができる。
【００７２】
探索の量についてのこのさらなる制御は、2つ以上のタスクがあるとき、有益である。タスクの1つがより容易であり、最初に解決され、他のタスクはより難しく、報酬がはるかに少ないシナリオを考える。エントロピー項がなく、他のタスクの報酬に遭遇する前は、マルチタスクポリシーとすべてのタスクポリシーの両方が、容易なタスクを解決するものに収束することができる。さらに、このポリシーは貪欲であるので、さらに報酬に遭遇するために他のタスクを十分に探索せず、準最適な行動に至ることがある。
【００７３】
目的関数の最小化への第2の手法は、ポリシー勾配およびより良いパラメタリゼーション(parameterization)の使用に基づく。第1の手法のアルゴリズムは、マルチタスクポリシーπ0とタスクポリシーπiの最大化を交互に行い、潜在変数モデルを学習するためのEMアルゴリズムを思い出させ、π0がパラメータの役割を果たし、πiが潜在変数の事後分布の役割を果たす。しかしながら、表形式の場合にとどまらず、π0とπiの両方が、たとえば、深層ニューラルネットワークを使用して実装される場合、そのような交互最大化手順は、確率的勾配上昇法によって一緒に、タスクポリシーおよびマルチタスクポリシーに対して最適化する(1)よりも遅いことがある。この場合、πiの勾配更新は、ポリシー勾配は、単に、エントロピー正則化でポリシー勾配によって与えられ、アドバンテージactor-criticなどの枠組み内で実行され得る。
【００７４】
ニューラルネットワークによって実行される関数と、ポリシーπ0およびπiとの関係を「パラメタリゼーション」と呼ぶ。
【００７５】
ポリシーの1つの簡単なパラメタリゼーションは、ネットワークによって実行される関数hθi (a|s)がπiと同等と見なされるように、各タスクポリシーπiを実装するために、パラメータθiを有するそれぞれのニューラルネットワーク(「タスクネットワーク」、すなわち、タスクにつき1つのワーカがある場合「ワーカネットワーク」)を使用することである。別のニューラルネットワーク(「共有ポリシーネットワーク」)は、マルチタスクポリシーπ0を実装するために使用され、ポリシーネットワークによって実行される関数h0は、π0と同等と見なされる。このパラメタリゼーションが、図5に概略的に示され、共有ポリシーネットワークは50で示され、タスクネットワークの1つが5iで示される。ポリシーネットワーク50は、ポリシーπ0を実装する。各タスクネットワーク5iは、それぞれのポリシーπiを実装するように動作する。ネットワーク50および5i間の唯一の対話は、訓練プロセス中にあり、マルチタスクニューラルネットワークシステムが、タスクを実施して使用中であるときではない。ネットワーク50および5iは、KL正則化により対話する。しかしながら、目的関数の報酬項は、タスクネットワーク5iが期待報酬を増やすためにポリシーネットワーク50から分岐することを引き起こす。目的関数のエントロピー項は、ネットワーク50および5iが分岐するさらなる傾向を生み出す。
【００７６】
より高速な転移をもたらす場合がある、代替的パラメタリゼーションは、最適ボルツマンポリシー(4)の形態を考えることによって取得できる。具体的には、ニューラルネットワークシステムは、パラメータを持つポリシーネットワークを使用して、マルチタスクポリシーをパラメータ化し、
【００７７】
【数７】
0006854921.tif 000008
【００７８】
関数
【００７９】
【数８】
0006854921.tif 000009
【００８０】
を実行する、パラメータθiを持つ別のそれぞれのネットワーク(「タスクネットワーク」、すなわちタスクにつき1つのワーカがある「ワーカネットワーク」)を使用して、タスクiごとにソフトアドバンテージを推定することができる。
【００８１】
【数９】
0006854921.tif 000010
【００８２】
式(6)および式(7)は、対応する量のパラメータ化された近似器(approximator)を示すために、「ハット」表記を使用する。タスクiのポリシーは、したがって以下のようにパラメータ化されるようになる。
【００８３】
【数１０】
0006854921.tif 000011
【００８４】
アドバンテージ推定を取得するために式(7)を使用するのではなく、ニューラルネットワークシステムは、ポリシー勾配によって最適化されるポリシーをパラメータ化するために(8)を使用する場合があることに留意する。
【００８５】
状況は、図6に概略的に示され、ポリシーネットワークは、60で示され、第iのタスクネットワークは6iで示される。共有ポリシーネットワーク60は、ポリシーπ0を実装する。図5とは対照的に、図6では、ポリシーネットワーク60および各タスクネットワーク6iは、それぞれのポリシーπiを生成するために一緒に動作する。これは、ポリシーの2列アーキテクチャとして見ることができ、一方の列がマルチタスクポリシーであり、他方の列が、タスクiに特定化するために必要とされる調整である。訓練中と動作中の両方に、ネットワーク60および6i間に対話がある。訓練中、これは、KL正則化によるものである。目的関数の報酬項は、タスクネットワーク6iが期待報酬を増やすためにポリシーネットワーク60から分岐することを引き起こす。目的関数のエントロピー項は、ネットワーク60および6iが分岐するさらなる傾向を生み出す。
【００８６】
上記のパラメタリゼーションの場合、ここで、ポリシー勾配を導出することができる。タスク固有のパラメータθiに関する勾配は、標準的なポリシー勾配定理によって与えられる。
【００８７】
【数１１】
0006854921.tif 000012
【００８８】
ここで、
【００８９】
【数１２】
0006854921.tif 000013
【００９０】
は、正則化された報酬である。被積分関数におけるエントロピーの偏微分は、対数微分トリック(log-derivative trick)のために期待値
【００９１】
【数１３】
0006854921.tif 000014
【００９２】
を有することに留意する。価値ベースラインが推定される場合、それは、制御変量として正則化されたリターンから引かれ得る。θ0に対する勾配は、
【００９３】
【数１４】
0006854921.tif 000015
【００９４】
第1の項が、θiのポリシー勾配の場合と同じであることに留意する。第2の項は、タスクポリシー
【００９５】
【数１５】
0006854921.tif 000016
【００９６】
に従った確率、およびマルチタスクポリシー
【００９７】
【数１６】
0006854921.tif 000017
【００９８】
に従った確率を一致させようと試みる。システムが同じアーキテクチャ
【００９９】
【数１７】
0006854921.tif 000018
【０１００】
を使用してπiをパラメータ化したが、ポリシーにKL正則化を使用しなかった場合、第2の項は、存在しない。KL正則化があると、
【０１０１】
【数１８】
0006854921.tif 000019
【０１０２】
の場合、第2の項が0であるという意味において、マルチタスクポリシーにすべてのタスクポリシーの重心であるように学習させ、タスクにわたって、および新しいタスクに情報を直ちに転移させる助けとなる。実験において、KL正則化がないと、アルゴリズムの安定性に著しく影響を与えることがわかった。KL正則化に加えて、エントロピー正則化があると、転移および探索の量を別々に制御することが可能になる。
【０１０３】
説明した枠組みは、目的、アルゴリズム、およびアーキテクチャの組合せとして生じる、いくつかの考えられるアルゴリズムのインスタンス化(algorithmic instantiation)を可能にし、これについて以下で説明し、概要を示す。
【０１０４】
第1に、KLダイバージェンス対エントロピー正則化のトレードオフを考える。α=0の場合、マルチタスクニューラルネットワークシステムは、タスクにわたって結合および転移しない、完全エントロピー正則化(purely entropy-regularized)目的関数を有する。α=1の場合、マルチタスクニューラルネットワークシステムは、タスクにわたって結合および転移しないが、マルチタスクおよびタスクポリシーが類似し、貪欲になる場合、早期に探索を停止する、完全KL正則化目的関数を有する。0>α>1の場合、マルチタスクニューラルネットワークシステムは、両方の項を含む目的関数を有する。
【０１０５】
第2に、(図4の場合のような)代替的最適化を同時最適化(joint optimization)と比較する。交互最適化が、ポリシー蒸留/アクター模倣(actor-mimic)に似ているが、マルチタスクポリシーがタスクポリシー最適化にフィードバックする、本質的に反復であるアルゴリズムにつながる。また、ポリシー勾配の代わりに、ソフトQ学習を各タスクに適用することができる。交互最適化はより遅い場合があるが、詳細には著しく異なるタスクの場合に、より安定して学習することを、ポリシー蒸留/アクター模倣システムの経験による証拠が示す。
【０１０６】
第3に、(図5の場合のような)別個のパラメタリゼーションを、(図6の場合のような)2つの2列パラメタリゼーションと比較する。2列の場合、各タスクポリシーがマルチタスクポリシーを使用するためにパラメータ化され、マルチタスクポリシーに蒸留された行動が、タスクポリシーに「直ちに利用可能」であり、転移がより早くなり得る。しかしながら、転移のプロセスの発生が早すぎる場合、個々のタスクの効果的な探索を妨げる可能性がある。
【０１０７】
本明細書は、システムおよびコンピュータプログラムコンポーネントに関連して「構成される」という用語を使用する。1つまたは複数のコンピュータのシステムが特定の動作またはアクションを行う「ように構成される」とは、動作時にシステムに動作またはアクションを行わせるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをシステムがインストールしていることを意味する。1つまたは複数のコンピュータが特定の動作またはアクションを行うように構成されるとは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に動作またはアクションを行わせる命令を含むことを意味する。
【０１０８】
本明細書で説明する主題および機能的動作の実施形態は、デジタル電子回路において、有形に具現化されたコンピュータソフトウェアもしくはファームウェアにおいて、本明細書で開示する構造およびそれらの構造的に同等のものを含む、コンピュータハードウェアにおいて、またはそれらの1つもしくは複数の組合せにおいて、実装されることがある。本明細書で説明する主題の実施形態は、1つまたは複数のコンピュータプログラムとして実装されることがあり、すなわち、データ処理装置によって実行されるように、またはデータ処理装置の動作を制御するために、有形の非一時的プログラムキャリア上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装されることがある。代替的にまたは追加として、プログラム命令は、人為的に生成された伝搬信号、たとえば、データ処理装置による実行のために好適な受信装置に送信するための情報を符号化するために生成される機械生成の電気、光、または電磁信号上で符号化されることがある。コンピュータ記憶媒体は、機械可読ストレージデバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つもしくは複数の組合せであることがある。しかしながら、コンピュータ記憶媒体は伝搬信号ではない。
【０１０９】
「データ処理装置」という用語は、例としてプログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用の論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置はまた、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つもしくは複数の組合せを構成するコードを含むことができる。
【０１１０】
(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードと呼ばれる、または説明される場合もある)コンピュータプログラムは、コンパイラ型もしくはインタープリタ型言語、または宣言型もしくは手続き型言語を含む、プログラム言語の任意の形態で書くことができ、またコンピュータプログラムは、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境で使用するのに適した他のユニットとしてなど、任意の形態で配置されることがある。コンピュータプログラムは、ファイルシステムのファイルに対応する場合があるが、対応する必要はない。プログラムは、他のプログラムまたはデータ、たとえば、マークアップ言語ドキュメントに記憶された1つまたは複数のスクリプトを入れたファイルの一部分に、当該プログラムに専用の単一ファイルに、または複数の協調ファイル、たとえば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの一部を記憶するファイルに、記憶することができる。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに位置するもしくは複数のサイトにわたって分散し、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように配置することができる。
【０１１１】
本明細書において使用される、「エンジン」または「ソフトウェアエンジン」は、入力とは異なる出力を提供するソフトウェア実装入出力システムを指す。エンジンは、ライブラリ、プラットフォーム、ソフトウェア開発キット(「SDK」)、またはオブジェクトなど、機能の符号化されたブロックであることがある。各エンジンは、1つまたは複数のプロセッサと、コンピュータ可読媒体とを含む任意の適切なタイプのコンピューティングデバイス、たとえば、サーバ、携帯電話、タブレットコンピュータ、ノートブックコンピュータ、音楽プレーヤ、電子ブックリーダー、ラップトップもしくはデスクトップコンピュータ、PDA、スマートフォン、または他の据置型もしくは携帯型デバイス上に実装することができる。加えて、エンジンの2つ以上が、同じコンピューティングデバイス上に、または異なるコンピューティングデバイス上に実装される場合がある。
【０１１２】
本明細書で説明するプロセスおよび論理フローは、入力データで動作し、出力を生成することによって機能を行うために1つまたは複数のコンピュータプログラムを1つまたは複数のプログラマブルコンピュータが実行することによって実行可能である。プロセスおよび論理フローはまた、専用の論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行可能であり、装置もまたこれらとして実装可能である。たとえば、プロセスおよび論理フローは、グラフィックス処理ユニット(GPU)によって実行されることがあり、また装置は、GPUとして実装されることがある。
【０１１３】
コンピュータプログラムの実行に好適なコンピュータは、一例として、汎用または専用マイクロプロセッサ、または両方、または他の種類の中央処理ユニットを含み、これらに基づくことがある。一般的に中央処理ユニットは、読取り専用メモリ、またはランダムアクセスメモリ、または両方から命令およびデータを受け取ることになる。コンピュータの必須要素は、命令を行うまたは実行するための中央処理ユニット、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般的にコンピュータはまた、データを記憶するための1つもしくは複数の大容量ストレージデバイス、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むことになり、またはこれらからデータを受け取ること、もしくはこれらにデータを転送すること、もしくはその両方を行うために動作可能に結合されることになる。しかしながら、コンピュータがそのようなデバイスを有する必要はない。さらに、コンピュータが別のデバイス、たとえば、ほんのいくつかの例を挙げれば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)レシーバ、またはポータブルストレージデバイス、たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブに埋め込まれることがある。
【０１１４】
コンピュータプログラム命令およびデータを記憶するのに好適なコンピュータ可読媒体は、あらゆる形態の不揮発性メモリ、媒体、およびメモリデバイスを含み、例として、半導体メモリデバイス、たとえばEPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD ROMおよびDVD-ROMディスクを含む。プロセッサおよびメモリは、専用論理回路によって補われる、または専用論理回路に組み込まれることがある。
【０１１５】
ユーザとの対話を可能にするために、本明細書で説明する主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ、ならびにユーザがそれによってコンピュータへの入力を行うことができるキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールを有するコンピュータに実装されることがある。ユーザとの対話を可能にするために他の種類のデバイスが使用されることもあり、たとえばユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば視覚フィードバック、聴覚フィードバック、もしくは触覚フィードバックであることが可能であり、ユーザからの入力は、音響入力、音声入力、もしくは触覚入力など、任意の形態で受け取ることができる。加えて、コンピュータが、ユーザによって使用されるデバイスに文書を送り、そのデバイスから文書を受け取ることによって、たとえば、ウェブブラウザから受け取られる要求に応じてユーザのクライアントデバイス上のウェブブラウザにウェブページを送ることによって、ユーザと対話することができる。
【０１１６】
本明細書で説明する主題の実施形態は、たとえばデータサーバとして、バックエンド構成要素を含むコンピューティングシステム、またはミドルウェア構成要素、たとえばアプリケーションサーバを含むコンピューティングシステム、またはフロントエンド構成要素、たとえば、それによりユーザが本明細書で説明する主題の実装形態と対話することができるグラフィカルユーザインタフェース、もしくはウェブブラウザを有するクライアントコンピュータを含む、コンピューティングシステム、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムにおいて実装可能である。システムの構成要素は、デジタルデータ通信の任意の形態または媒体、たとえば通信ネットワークによって、相互接続可能である。通信ネットワークの例には、ローカルエリアネットワーク(「LAN」)、およびワイドエリアネットワーク(「WAN」)、たとえばインターネットが含まれる。
【０１１７】
コンピューティングシステムは、クライアントと、サーバとを含むことができる。クライアントおよびサーバは、一般的に互いから遠くにあり、典型的には通信ネットワークを介して対話する。クライアントとサーバの関係は、それぞれのコンピュータで実行している、互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
【０１１８】
本明細書は、多くの特定の実装形態の詳細を含むが、これらは任意の発明の範囲への、または特許請求される可能性のあるものの範囲への制限として解釈されるべきではなく、むしろ特定の発明の特定の実施形態に固有である場合がある特徴の説明として解釈されるべきである。本明細書で別個の実施形態の文脈で説明されるいくつかの特徴は、単一の実施形態において組み合わせて実装されることもある。逆に、単一の実施形態の文脈で説明される様々な特徴は、複数の実施形態において別々に、または任意の適切な部分的組合せで実装されることもある。さらに、特徴は、ある組合せで機能するものとして上記で説明され、さらに当初はそのように特許請求される場合があるが、特許請求される組合せからの1つまたは複数の特徴は、場合によってはその組合せから削除されることがあり、特許請求される組合せは、部分的組合せ、または部分的組合せの変形形態を対象とすることがある。
【０１１９】
同様に、動作は、特定の順序で図面に示されるが、これは、望ましい結果を達成するために、このような動作が図示された特定の順序でもしくは順次に行われること、または例示したすべての動作が行われることを必要とするものと理解されるべきではない。いくつかの環境では、マルチタスクおよび並列処理が有利である場合がある。さらに、上記で説明した実施形態における様々なシステムモジュールおよび構成要素の分離は、すべての実施形態においてそのような分離を必要とすると理解されるべきではなく、記載するプログラム構成要素およびシステムは、一般的に単一のソフトウェア製品に統合される、または複数のソフトウェア製品にパッケージ化されることがあると理解されるべきである。
【０１２０】
主題の特定の実施形態について説明した。他の実施形態も、特許請求の範囲内である。たとえば、特許請求の範囲に記載するアクションは、異なる順序で行われ、やはり望ましい結果を実現することがある。一例として、添付図に示すプロセスは、望ましい結果を達成するために、示した特定の順序、または逐次的な順序を必ずしも必要としない。いくつかの実装形態では、マルチタスクおよび並列処理が有利である場合がある。
【符号の説明】
【０１２１】
2  コンピュータ
11  ワーカ
12  ワーカ
13  ワーカ
14  ワーカ
15  共有モジュール
20  環境
21  エージェント
22  エージェント
23  エージェント
24  エージェント
【図１】
0006854921.tif 000020
【図２】
0006854921.tif 000021
【図３】
0006854921.tif 000022
【図４】
0006854921.tif 000023
【図５】
0006854921.tif 000024
【図６】
0006854921.tif 000025