様々な図面における同様の参照番号および名称は、同様の要素を示す。
本明細書は、1つまたは複数のアテンションブロックを含むアテンションニューラルネットワークを含む、1つまたは複数のコンピュータ上の1つまたは複数のロケーションにあるコンピュータプログラムとして実装されるニューラルネットワークシステムについて記載する。ニューラルネットワークシステムは、入力シーケンスを受信するように、および入力シーケンスを処理して出力を生成するように構成される。
たとえば、ニューラルネットワークシステムは、環境と対話する強化学習エージェントによって実施されるべきアクションを選択する強化学習システムであってよい。エージェントが環境と対話するために、システムは、環境の異なる状態を特徴づける観察記録のシーケンスを含む入力シーケンスを受信し得る。システムは、受信された入力シーケンスに応答して、すなわち、シーケンス中の最後の観察記録に応答して、エージェントによって実施されるべき1つまたは複数のアクションを指定する出力を生成することができる。つまり、観察記録のシーケンスは、環境の現在の状態を特徴づける現在の観察記録と、環境の過去の状態を特徴づける1つまたは複数の観察記録履歴とを含む。
いくつかの実装形態では、環境は実世界環境であり、エージェントは実世界環境と対話する機械エージェントである。たとえば、エージェントは、特定のタスクを遂行するために、たとえば、環境中の対象オブジェクトを突き止めるために、または対象オブジェクトを、環境中の指定されたロケーションに動かすために、もしくは環境中の指定された宛先へ誘導するために、環境と対話するロボットであってよく、あるいはエージェントは、環境の中を航行する自律または半自律的陸上または空中または海洋車両であってよい。
これらの実装形態では、観察記録は、たとえば、エージェントが環境と対話すると観察記録を取り込むための、画像、オブジェクト位置データ、およびセンサーデータ、たとえば画像、距離、もしくは位置センサーから、またはアクチュエータからのセンサーデータのうちの1つまたは複数を含み得る。
たとえば、ロボットのケースでは、観察記録は、ロボットの現在の状態を特徴づけるデータ、たとえば、関節位置、関節速度、関節力、トルクまたは加速度、たとえば、重力補償トルクフィードバック、およびロボットによってとられる、部材の大域または相対姿勢のうちの1つまたは複数を含み得る。
ロボットまたは他の機械エージェントまたは車両のケースでは、観察記録は、同様に、位置、線形または角速度、力、トルクまたは加速度、およびエージェントの1つまたは複数の部分の大域または相対姿勢のうちの1つまたは複数を含み得る。観察記録は、1、2または3次元で定義されてよく、絶対および/または相対的観察記録であってよい。
観察記録は、たとえば、モータ電流もしくは温度信号など、検知された電子信号、および/または、たとえばカメラもしくはLIDARセンサーからの画像もしくはビデオデータ、たとえば、エージェントのセンサーからのデータもしくは環境中でエージェントとは別個に置かれたセンサーからのデータも含み得る。
電子エージェントのケースでは、観察記録は、電流、電圧、電力、温度および他のセンサーなど、施設もしくはサービス設備の部分を監視する1つもしくは複数のセンサーからのデータならびに/または機器の電子および/もしくは機械的部材が機能していることを表す電子信号を含み得る。
これらの実装形態では、アクションは、ロボットを、たとえば、ロボットの関節についてのトルクを制御するための制御入力もしくは高度制御コマンド、または自律もしくは半自律的陸上、もしくは空中、もしくは海洋車両、たとえば、車両の制御面もしくは他の制御要素へのトルクもしくは高度制御コマンドであってよい。
言い換えると、アクションは、たとえば、ロボットの1つもしくは複数の関節または別の機械エージェントの部品についての位置、速度、または力/トルク/加速度データを含み得る。アクションデータは、追加または代替として、モータ制御データなどの電子制御データ、またはより全般的には、環境の観察される状態に対してその制御が影響を有する環境内の1つもしくは複数の電子デバイスを制御するためのデータを含み得る。たとえば、自律または半自律的陸上または空中または海洋車両のケースでは、アクションは、ステアリングなどの航行、ならびに動き、たとえば、車両の制動および/または加速度を制御するためのアクションを含み得る。
いくつかの実装形態では、環境は、シミュレートされた環境であり、エージェントは、シミュレートされた環境と対話する1つまたは複数のコンピュータとして実装される。シミュレートされた環境の中でエージェントをトレーニングすると、エージェントは、大量のシミュレートされたトレーニングデータから学習することが可能になり得ると同時に、実世界環境の中でエージェントをトレーニングすることに関連した危険、たとえば、間違って選ばれたアクションを実施することによる、エージェントに対する損害が避けられる。シミュレートされた環境の中でトレーニングされたエージェントはその後、実世界環境の中で展開されてよい。
たとえば、シミュレートされた環境は、ロボットまたは車両のシミュレーションであってよく、強化学習システムはそのシミュレーションでトレーニングされてよい。たとえば、シミュレートされた環境は、運動シミュレーション環境、たとえば、運転シミュレーションまたはフライトシミュレーションであってよく、エージェントは、運動シミュレーションを通して航行する、シミュレートされた車両である。これらの実装形態では、アクションは、シミュレートされたユーザまたはシミュレートされた車両を制御するための制御入力であってよい。
別の例では、シミュレートされた環境はビデオゲームであってよく、エージェントは、そのビデオゲームをする、シミュレートされたユーザであってよい。
さらなる例では、環境は、化学合成またはタンパク質フォールディング環境であってよく、そうであることによって、各状態は、タンパク鎖の、または1つもしくは複数の中間体もしくは化学的前駆体のそれぞれの状態であり、エージェントは、どのようにタンパク鎖をフォールディングし、または化学物質を合成するかを判断するためのコンピュータシステムである。この例では、アクションは、タンパク鎖をフォールディングするための、可能なフォールディングアクションまたは化学的前駆体/中間体を集めるためのアクションであり、達成されるべき結果は、たとえば、タンパク質が安定するように、および特定の生物学的機能を遂行するようにタンパク質をフォールディングすること、または化学物質のための有効な合成ルートを提供することを含み得る。別の例として、エージェントは、人間対話なしで自動的にシステムによって選択されたタンパク質フォールディングアクションを実施または制御する機械エージェントであってよい。観察記録は、タンパク質の状態の直接もしくは間接的観察記録を含んでよく、かつ/またはシミュレーションから導出されてよい。
同様に、環境は、各状態が将来的製薬化学薬品のそれぞれの状態であり、エージェントが、製薬化学薬品の要素および/または製薬化学薬品のための合成経路を判断するためのコンピュータシステムであるような薬物設計環境であってよい。薬物/合成は、たとえばシミュレーションにおいて、薬物についての標的から導出される報酬に基づいて設計されてよい。別の例として、エージェントは、薬物の合成を実施または制御する機械エージェントであってよい。
いくつかのアプリケーションでは、エージェントは、静的またはモバイルソフトウェアエージェント、すなわち、自律的に、および/または他のソフトウェアエージェントもしくは人々とともに動作してタスクを実施するように構成されたコンピュータプログラムであってよい。たとえば、環境は集積回路ルーティング環境であってよく、システムは、ASICなどの集積回路の相互接続線をルーティングするためのルーティングタスクを実施することを学習するように構成されてよい。報酬(またはコスト)はその場合、相互接続抵抗、静電容量、インピーダンス、損失、スピードまたは伝搬遅延など、1つまたは複数のルーティングメトリック、幅、厚さまたはジオメトリなどの物理行パラメータ、および設計規則に依存してよい。観察記録は、構成要素位置および相互接続の観察記録であってよく、アクションは、たとえば、構成要素位置もしくは配向を定義するための構成要素配置アクションおよび/または相互接続ルーティングアクション、たとえば相互接続選択および/または配置アクションを含んでよい。ルーティングタスクはしたがって、構成要素を配置すること、すなわち、集積回路の構成要素の位置および/もしくは配向を判断すること、ならびに/または構成要素の間の相互接続のルーティングを判断することを含み得る。ルーティングタスクが完了されると、判断された配置および/またはルーティングに従って、集積回路、たとえばASICが製造され得る。または、環境はデータパケット通信ネットワーク環境であってよく、エージェントは、ネットワークの観察記録に基づいて、通信ネットワークにわたってデータのパケットをルーティングするためのルータであってよい。
概して、シミュレートされた環境のケースでは、観察記録は、前に記述された観察記録または観察記録タイプのうちの1つまたは複数の、シミュレートされたバージョンを含んでよく、アクションは、前に記述されたアクションまたはアクションタイプのうちの1つまたは複数の、シミュレートされたバージョンを含み得る。
いくつかの他のアプリケーションでは、エージェントは、機器の部材を含む実世界環境における、たとえば、データセンタ、またはグリッド引き込み電力もしくは水分配システムにおける、または製造施設もしくはサービス設備におけるアクションを制御することができる。その場合、観察記録は、施設または設備の動作に関し得る。たとえば観察記録は、機器による電力もしくは水使用の観察記録、または電力生成もしくは分配制御の観察記録、またはリソースの使用の、もしくは廃棄物産出の観察記録を含み得る。エージェントは、たとえば、リソース使用を削減することによって、効率を上げ、かつ/または、たとえば無駄を削減することによって環境中での動作の環境影響を削減するために、環境の中でのアクションを制御することができる。アクションは、施設/設備の機器の部材に対する動作条件を制御するか、もしくは条件を課すアクション、および/または、たとえば、施設/設備の構成要素を調節もしくはオン/オフにするための、施設/設備の動作の設定への変更をもたらすアクションを含み得る。
いくつかのさらなるアプリケーションでは、環境は実世界環境であり、エージェントは、たとえば、モバイルデバイス上および/またはデータセンタ中の計算リソースにわたるタスクの分散を管理する。これらの実装形態では、アクションは、特定の計算リソースにタスクを割り当てることを含み得る。
さらなる例として、アクションは、広告を提示することを含む場合があり、観察記録は、広告の印象またはクリックスルーカウントもしくはレートを含む場合があり、報酬は、1人または複数のユーザによって行われた、項目またはコンテンツの、以前の選択を特徴づけることができる。
概して、環境が実世界環境のシミュレートされたバージョンである上述したアプリケーションでは、システム/方法がシミュレーションにおいてトレーニングされると、シミュレーションはその後、実世界環境に適用されてよい。つまり、システム/方法によって生成された制御信号が、実世界環境からの観察記録に応答して、実世界環境でのタスクを実施するようにエージェントを制御するのに使われてよい。任意選択で、システム/方法は、実世界環境からの1つまたは複数の報酬に基づいて、実世界環境でのトレーニングを続けてよい。
任意選択で、上記実装形態のいずれかにおいて、任意の所与の時間ステップにおける観察記録は、環境を特徴づける際に有益であり得る、前の時間ステップからのデータ、たとえば、前の時間ステップにおいて実施されたアクション、前の時間ステップにおいて受けた報酬などを含み得る。
別の例では、ニューラルネットワークシステムはニューラル機械翻訳システムであってよい。つまり、入力シーケンスが、元言語での単語のシーケンス、たとえば、文またはフレーズである場合、出力は、入力シーケンスを目標言語に翻訳したもの、すなわち、元言語での単語のシーケンスを表す、目標言語での単語のシーケンスであってよい。
別の例として、ニューラルネットワークシステムは音声認識システムであってよい。つまり、入力シーケンスが、音声発話を表すオーディオデータのシーケンスである場合、出力は、発声を表す、すなわち、入力シーケンスの転記である、書記素、文字、または単語のシーケンスであってよい。
別の例として、システムは自然言語処理システムであってよい。たとえば、入力シーケンスが、元言語での単語のシーケンス、たとえば、文またはフレーズである場合、出力は、元言語での、入力シーケンスの要約、すなわち、入力シーケンスよりも少ない単語を有するが、入力シーケンスの本質的意味を保有するシーケンスであってよい。別の例として、入力シーケンスが、質問を形成する単語のシーケンスである場合、出力は、質問への答えを形成する単語のシーケンスであってよい。別の例として、タスクは、何らかの自然言語でのテキストのシーケンスに対して動作して、テキストの何らかのプロパティを予測する出力を生成する自然言語理解タスク、たとえば、含意タスク、パラフレーズタスク、テキスト類似タスク、感情タスク、文章完成タスク、文法性タスクなどであってよい。
別の例として、システムは、コンピュータ支援医療診断システムの一部であってよい。たとえば、入力シーケンスは、電子医療記録からのデータのシーケンスであってよく、出力は、予測される治療のシーケンスであってよい。
別の例として、システムは画像処理システムの一部であってよい。たとえば、入力シーケンスは画像、すなわち、画像からの色値のシーケンスであってよく、出力は、画像を記述するテキストのシーケンスであってよい。別の例として、入力シーケンスは、テキストのシーケンスまたは異なるコンテキストであってよく、出力は、コンテキストを記述する画像であってよい。
図1は、例示的ニューラルネットワークシステム100を示す。ニューラルネットワークシステム100は、以下で説明するシステム、構成要素、および技法が実装され得る、1つまたは複数のロケーションにある1つまたは複数のコンピュータ上でコンピュータプログラムとして実装されるシステムの例である。
ニューラルネットワークシステム100は、入力シーケンス102を受信し、入力シーケンス102を処理して出力122を生成する。ニューラルネットワークシステム100は、アテンションニューラルネットワーク110を含む。アテンションニューラルネットワーク110は、アテンションブロック124を含む。
図1は1つのアテンションブロック124を示すが、アテンションニューラルネットワーク110は、スタックに次々と並べられた複数のアテンションブロック、および任意選択で、他の構成要素を含んでよい。複数のアテンションブロックを含むとともに、本明細書に記載するタイプ(たとえば、アテンションブロック124のタイプ)のアテンションブロックを含むように修正されてよいアテンションニューラルネットワークのアーキテクチャの具体的な例が、Jacob Devlin、Ming-Wei Chang、Kenton Lee、およびKristina Toutanova. Bert: Pre-training of deep bidirectional transformers for language understanding. In Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers)、4171~4186頁、2019年; Zihang Dai、Zhilin Yang、Yiming Yang、Jaime Carbonell、Quoc Le、およびRuslan Salakhutdinov. Transformer-XL: Attentive language models beyond a fixed-length context. In Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics、2978~2988頁、イタリア、フィレンツェ、2019年7月、Association for Computational Linguistics. doi: 10.18653/v1/P19-1285. URL https://www.aclweb.org/anthology/P19-1285; ならびにAshish Vaswani、Noam Shazeer、Niki Parmar、Jakob Uszkoreit、Llion Jones、Aidan N. Gomez、Lukasz Kaiser、およびIllia Polosukhin. Attention is all you need. Advances in Neural Information Processing Systems、5998~6008頁、2017年、URL https://papers.nips.cc/paper/7181-attention-is-all-you-need.pdfに記載されている。
図2は、従来のアテンションブロックが、本明細書に記載するタイプのアテンションブロックを含むように、どのように修正され得るかを示す。
図2(a)に示すように、概して、従来のアテンションニューラルネットワーク(または「トランスフォーマニューラルネットワーク」)内の従来のアテンションブロック200(「トランスフォーマブロック」とも呼ばれる)は、2つのサブモジュール、すなわちアテンションニューラルネットワーク層(たとえば、マルチヘッドアテンションニューラルネットワーク層202)と、それに続くフィードフォワードニューラルネットワーク(たとえば、位置単位多層パーセプトロンネットワーク208)を含む。トランスフォーマブロック200への入力は、アテンションニューラルネットワークの前のブロックからの埋め込み
であり、ここでTは時間ステップの数であり、Dは隠れ次元であり、L∈[0,L]はブロックインデックスであって、Lはアテンションニューラルネットワークのトランスフォーマブロックの総数である。E(0)は、次元[T,D]の入力埋め込み、たとえば、言語モデリングの事例における単語埋め込み、または強化学習環境における時間ステップごとの観察記録の埋め込みであると仮定することができる。
図2の例示的トランスフォーマブロック200は、あらゆる時間ステップについて、入力E
(l-1)に対するh個のソフトアテンション演算を並行して計算するマルチヘッドアテンション(MHA)ニューラルネットワーク層202を含む。
特に、マルチヘッドアテンションを実装するために、層202は、h個の異なるアテンション機構を並行して適用する。言い換えると、MHAニューラルネットワーク層202は、h個の異なるアテンション副層を含み、各アテンション副層は、同じオリジナルクエリQ、オリジナルキーK、およびオリジナル値Vを受信する。これらのオリジナルクエリQ、オリジナルキーK、およびオリジナル値Vは、トランスフォーマブロックの入力から導出される。
各アテンション副層は、学習された線形変換を使って、オリジナルクエリ、およびキー、および値を変換し、次いで、変換されたクエリ、キー、および値にアテンション機構を適用するように構成される。各アテンション副層は概して、各他のアテンション副層から異なる変換を学習する。
特に、各アテンション副層は、学習されたクエリ線形変換を各オリジナルクエリに適用して、各オリジナルクエリについての層固有クエリを生成し、学習されたキー線形変換を各オリジナルキーに適用して、各オリジナルキーに対する層固有キーを生成し、学習された値線形変換を各オリジナル値に適用して、各オリジナル値に対する層固有値を生成するように構成される。アテンション副層は次いで、これらの層固有クエリ、キー、および値を使うアテンション機構を適用して、MHAニューラルネットワーク層202向けの初期出力を生成する。
MHAニューラルネットワーク層202は次いで、アテンション副層の初期出力を結合して、層202の最終出力を生成する。たとえば、層202は、アテンション副層の初期出力を連結し、学習された線形変換を連結出力に適用して、層202の出力を生成する。
マルチヘッドアテンションは、Ashish Vaswani、Noam Shazeer、Niki Parmar、Jakob Uszkoreit、Llion Jones、Aidan N. Gomez、Lukasz Kaiser、およびIllia Polosukhin. Attention is all you need. Advances in Neural Information Processing Systems、5998~6008頁、2017年に、より詳しく記載されている。
MHAニューラルネットワーク層202の出力が生成された後、残差接続204および層正規化206が次いで、マルチヘッドアテンションニューラルネットワーク層202の出力
に、次のように適用される。
トランスフォーマブロック200は、シーケンス中のあらゆるステップにわたって1×1時間畳み込みネットワークf
(l)(すなわち、カーネルサイズ1、ストライド1)を適用する位置単位多層パーセプトロン(MLP)ネットワーク208をさらに含み、新しい埋め込みテンソル
を生じる。
MLPネットワーク208の後、残差接続210による更新が起こり、続いて、層正規化層212による更新が起こる。
アテンションニューラルネットワークのトレーニングをはるかに安定させ、学習スピードを向上させるために、本明細書に記載する新たなタイプのアテンションブロックは、従来のトランスフォーマブロックにおける残差接続と置き換わるゲーティング機構(またはゲーティング関数)を有する。たとえば、図2(b)は、本明細書に記載する技法によるトランスフォーマブロック200に基づいて修正された新たなアテンションブロック250を示す。図2(b)において、ゲーティングニューラルネットワーク層218およびゲーティングニューラルネットワーク層224が、それぞれ、トランスフォーマブロック200における残差接続204および残差接続210と置き換わる。この技法により、アテンションニューラルネットワークは、従来のアテンションニューラルネットワークではできなかった領域、たとえば、強化学習において良好な結果を達成することができる。さらに、本明細書に記載するタイプのアテンションブロックでは、従来のトランスフォーマブロック中の層正規化層は、層正規化がサブモジュールの各々の入力ストリームのみに適用されるように並べ替えられる。たとえば、図2(b)に示すように、層正規化層214は、マルチヘッドアテンションニューラルネットワーク層216の入力ストリームに適用され、層正規化層220は、位置単位MLPネットワーク222の入力ストリームに適用される。これは、それぞれ、図2(a)におけるトランスフォーマブロック200の、マルチヘッドアテンションニューラルネットワーク層202の出力ストリームおよび位置単位MLPネットワーク208の出力ストリームに適用される層正規化層206および212とは異なる。この並べ替えの主要利益は、今度は、第1の層におけるトランスフォーマの入力から、最後の層の後のトランスフォーマの出力へのアイデンティティマップを可能にすることである。これは、状態符号化を非線形変換する一連の層正規化演算が行われる従来のトランスフォーマとは対照的である。この修正は、強化学習設定において特に有利であり得るが、その理由は、ロボットエージェントを、純粋に反応性のポリシーによって制御され始めさせ、学習が進むのに合わせてより長い水平情報を使うことを学習させ、学習スピードに対してさらなるスピードアップをもたらすからである。層正規化並べ替えは、
2つの線形層が順に適用される経路を引き起こすので、本明細書に記載する新たなタイプのアテンションブロックでは、正規化線形ユニット(ReLU)活性化が、残差接続前に各サブモジュール出力に適用される。
上記技法により、本明細書に記載する新たなタイプのアテンションブロックを有するアテンションニューラルネットワークが、正準トランスフォーマニューラルネットワークよりもはるかに速く、より確実に学習し、大幅に良好な最終的性能を呈することができるようになる。
新たなタイプのアテンションブロックは、上述した変換のうちの1つまたは複数の組合せから構築されてよく、上述した変換のすべては必要としなくてよいことが諒解されよう。新たなタイプのアテンションブロック(たとえば、アテンションブロック124)のネットワークアーキテクチャおよび動作については、図1を参照して以下で詳しく説明する。
図1に示すように、アテンションブロック124は、アテンションニューラルネットワーク層108およびゲーティングニューラルネットワーク層112を含む。アテンションブロック124は、アテンションブロック入力104を受信するように構成される。アテンションブロック入力104は、アテンションニューラルネットワーク110中の前のアテンションブロックの出力からの埋め込み、または入力シーケンス102から導出された埋め込みであってよい。たとえば、アテンションニューラルネットワーク110は、アテンションニューラルネットワーク110の第1のアテンションブロックによって入力として使われる埋め込み(たとえば、言語モデリングの事例では単語埋め込み、または強化学習環境では時間ステップごとの観察記録の埋め込み)を、入力シーケンス102から生成するエンコーダニューラルネットワーク(たとえば、MLPネットワークまたは畳み込みニューラルネットワーク)を含む。別の例として、アテンションニューラルネットワーク110は、異なるやり方で、たとえば、ルックアップテーブルを使うことによって、第1のアテンションブロックへの入力として、埋め込みを生成することができる。アテンションニューラルネットワーク層108は、アテンション層入力としてアテンションブロック入力104から導出されるクエリ、キーおよび値を受信するように構成される。
クエリ、キー、および値は、異なるタイプのアテンションに対して異なり得る。つまり、異なるタイプのアテンションニューラルネットワーク層は、アテンションニューラルネットワーク層108によって入力として受信されるオリジナルクエリ、キー、および値に対して、異なるソースを使う。
特に、アテンションニューラルネットワーク層108が、複数のサブネットワークを有するエンコーダ中のエンコーダ自己アテンション層であるとき、キー、値、およびクエリはすべて、同じ場所、この場合はエンコーダ中の前のサブネットワークの出力、または、第1のサブネットワーク中のエンコーダ自己アテンション層に対しては、入力の埋め込みから生じたものであり、エンコーダ中の各位置が、入力順序の中のすべての位置に注目し得る。したがって、入力順序の中の各位置向けに、それぞれのキー、値、およびクエリがある。
アテンションニューラルネットワーク層108が、複数のサブネットワークを有するデコーダ中のデコーダ自己アテンション層であるとき、デコーダ中の各位置は、その位置に先行するデコーダ中のすべての位置に注目する。したがって、キー、値、およびクエリはすべて、同じ場所、この場合はデコーダ中の前のサブネットワークの出力、または、第1のデコーダサブネットワーク中のデコーダ自己アテンション層に対しては、すでに生成された出力の埋め込みから生じたものである。したがって、現在の位置の前の、出力順序の中の各位置向けに、それぞれのキー、値、およびクエリがある。
アテンションニューラルネットワーク層108がエンコーダ-デコーダアテンション層であるとき、クエリは、デコーダ中の前の構成要素から生じたものであり、キーおよび値は、エンコーダの出力から、すなわち、エンコーダによって生成された符号化表現から生じたものである。これにより、デコーダ中のあらゆる位置が、入力シーケンス中のすべての位置に注目するようになる。したがって、現在の位置の前の、出力順序の中の各位置に対する、それぞれのクエリ、ならびに入力順序の中の各位置に対する、それぞれのキーおよびそれぞれの値がある。
いくつかの実装形態では、アテンションブロック124を一致演算に合わせて初期化するために、アテンションブロック124は、クエリ入力、キー入力、および値入力に層正規化演算を適用して、正規化されたクエリ入力、正規化されたキー入力、および正規化された値入力を生成するように構成された第1の層正規化層106を含み得る。これらの実装形態では、アテンションニューラルネットワーク層108は、正規化されたクエリ入力、正規化されたキー入力、および正規化された値入力を、アテンション層入力として受信する。
概して、層正規化は、様々なニューラルネットワークモデルのためにトレーニングスピードを向上するのに使われる。各トレーニング事例におけるニューロンへの積算入力を正規化するのに次いで使われる平均および分散を計算するためのトレーニング事例のミニバッチにわたる、そのニューロンへの積算入力の分散を使うバッチ正規化とは異なり、層正規化は、単一のトレーニング事例における層の中のニューロンへの積算入力すべてからの正規化に使われる平均および分散を計算する。層正規化は、Jimmy Lei Ba、Jamie Ryan Kiros、およびGeoffrey E Hinton. Layer normalization. arXiv preprint arXiv:1607.06450、2016年に詳しく記載されている。
アテンションニューラルネットワーク層108は次いで、アテンション層入力にアテンション機構を適用して、アテンションニューラルネットワーク層108についてのアテンション層出力を生成するように構成される。いくつかの実装形態では、アテンション機構は自己アテンション機構である。いくつかの他の実装形態では、アテンション機構はマスク付き自己アテンション機構である。マスク付き自己アテンション機構とは、アテンション層入力シーケンス中の現在の位置に先行する位置にないどのデータにも注目しないように、または別様に処理しないようにマスクされているアテンション機構である。
たとえば、
と記されるアテンション層出力は、E
(l-1)と記されるアテンションブロック入力104から、
のように計算することができ、上式で、
は、重み更新中に定数として扱われる追加メモリテンソルであり、StopGrad()は、逆伝搬中に勾配が逆流するのを防止する勾配停止関数であり、MultiHeadAttention()は、基本マルチヘッドアテンション機構、または相対的な位置符号化を使うマルチヘッドアテンションである。シーケンス順序を、順列不変であるので明示的に考慮に入れない基本MHA演算とは異なり、位置符号化は、シーケンス順序を考慮に入れ、シーケンス順序が重要な意味的手がかりであるドメイン類似言語において使われ得る。位置符号化の例が、Zihang Dai、Zhilin Yang、Yiming Yang、Jaime Carbonell、Quoc Le、およびRuslan Salakhutdinov. Transformer-XL: Attentive language models beyond a fixed-length context. In Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics、2978~2988頁、イタリア、フィレンツェ、2019年7月、Association for Computational Linguistics. doi: 10.18653/v1/P19-1285. URL https://www.aclweb.org/anthology/P19-1285に記載されている。
ゲーティングニューラルネットワーク層112は、アテンションニューラルネットワーク層108のアテンションブロック入力およびアテンション層出力にゲーティング機構を適用して、ゲート型アテンション出力を生成するように構成される。たとえば、ゲーティングニューラルネットワーク層112は、ゲーティング機構
を、アテンションニューラルネットワーク層108のアテンションブロック入力E
(l-1)およびアテンション層出力
に適用して、ゲート型アテンション出力Y
(l)を、
のように生成することができ、上式で、ReLU()は、アテンション層出力
に適用されるReLU活性化である。ゲーティング機構の例について、以下で詳しく説明する。
いくつかの実装形態では、アテンションブロック124は、ゲーティングニューラルネットワーク層112のゲート型アテンション出力に第2の層正規化演算を適用して、正規化されたゲート型アテンション出力を生成するように構成された第2の層正規化層114をさらに含む。これらの実装形態では、アテンションブロック124は、正規化されたゲート型アテンション出力に1つまたは複数の変換を適用して、一時的アテンションブロック出力を生成するように構成された1つまたは複数のフィードフォワードニューラルネットワーク層116(たとえば、位置単位多層ネットワーク)を含み得る。たとえば、一時的アテンションブロック出力は、
と記され、
のように計算することができ、上式で、LayerNorm()は、ゲート型アテンション出力Y
(l)に適用される第2の層正規化演算であり、f
(l)()は、正規化されたゲート型アテンション出力LayerNorm(Y
(l))に適用されて、一時的アテンションブロック出力
を生成する1つまたは複数の変換を示す。たとえば、1つまたは複数の変換は、1×1時間畳み込みネットワーク(すなわち、カーネルサイズ1、ストライド1)を、正規化されたゲート型アテンション出力に適用することを含み得る。
アテンションブロック124は、一時的アテンションブロック出力およびゲート型アテンション出力に第2のゲーティング機構を適用して、アテンションブロック124についての最終アテンションブロック出力120を生成するように構成された第2のゲーティングニューラルネットワーク層118を含み得る。たとえば、第2のゲーティングニューラルネットワーク層118は、第2のゲーティング機構
を、ゲーティングニューラルネットワーク層112の一時的アテンションブロック出力
およびゲート型アテンション出力Y
(l)に適用して、最終アテンションブロック出力E
(l)を、
のように生成することができ、上式で、ReLU()は、アテンションブロック出力
に適用されるReLU活性化である。
図2の従来のトランスフォーマブロックに関連付けられた式2および4における残差接続は、結果として得られるアテンションニューラルネットワークの性能および最適化安定性を向上するように、ゲーティングニューラルネットワーク層112および第2のゲーティングニューラルネットワーク層118で置き換えられることに留意されたい。
ゲーティングニューラルネットワーク層112および第2のゲーティングニューラルネットワーク層118によって適用することができる様々なゲーティング機構がある。概して、ゲーティング機構が、ゲーティングニューラルネットワーク層への入力の、学習された結合を計算して、ゲーティングニューラルネットワーク層についてのゲート型出力を生成する。
たとえば、いくつかの実装形態では、ゲーティングニューラルネットワーク層112および/または第2のゲーティングニューラルネットワーク層118は、それぞれの入力ストリームx(たとえば、アテンションブロック入力および/またはゲート型アテンション出力)にシグモイド変調σ()を適用して、第1のシグモイド変調出力を生成し、第1のシグモイド変調出力をそれぞれの出力ストリームy(たとえば、アテンション層出力および/または一時的アテンションブロック出力)と結合して、ゲート型出力g
(l)(x,y)(たとえば、ゲート型アテンション出力および/または最終アテンションブロック出力)を次のように生成することができる。
いくつかの他の実装形態では、ゲーティングニューラルネットワーク層112および/または第2のゲーティングニューラルネットワーク層118は、出力ストリームyにシグモイド変調σ()を適用して、第2のシグモイド変調出力を生成し、第2のシグモイド変調出力を入力ストリームxと結合して、ゲート型出力を次のように生成することができる。
いくつかの他の実装形態では、ゲーティングニューラルネットワーク層112および/または第2のゲーティングニューラルネットワーク層118は、入力および出力ストリームの両方をシグモイド変調で、すなわち、シグモイド荷重を使って入力および出力ストリームの凸結合を計算してゲート型出力
を生成することによって変調するハイウェイ接続を使うことができ、上式で、
および
は重みであり、
は要素単位乗算を示す。いくつかの実装形態では、最初に
を設定することで、学習スピードを大きく向上することができる。
いくつかの他の実装形態では、ゲーティングニューラルネットワーク層112および/または第2のゲーティングニューラルネットワーク層118は、出力ストリームyに対してシグモイドおよび双曲線正接活性化を適用して、シグモイド双曲線正接出力を生成し、シグモイド双曲線正接出力を入力ストリームと結合して、ゲート型出力
を生成することができ、上式で、
は重みである。
いくつかの実装形態では、ゲーティングニューラルネットワーク層112および/または第2のゲーティングニューラルネットワーク層118は、入力および出力ストリームに対してゲート型回帰ユニット(GRU)を適用することができる。GRUは、忘却ゲートをもつ長短期メモリ(LSTM)ネットワークと同様に実施するが、出力ゲートがないので、LSTMよりも少ないパラメータを有する回帰ネットワークである。いくつかの実装形態では、このゲーティング機構は、非結合活性化関数として深さが適合されてよい。これが意味するのは、GRUは回帰ニューラルネットワーク(RNN)であるが、ゲーティング機構は、GRUが、アテンションニューラルネットワーク110の各ゲーティングニューラルネットワーク層におけるスキップ接続を更新するのではなく、GRUの隠れ状態を時間とともに更新するのに使う同じ公式を使ってよいということである。したがって、本明細書に記載するゲーティング機構によって実施される更新は、時間とともに広げられるのではなく、ネットワーク110の深さにわたって広げられるGRU RNNの更新と見なされてよい。ただし、このGRU更新(単一のGRU RNNが使われるときの事例である)のために各ゲーティングニューラルネットワーク層向けに「結合」または「共有」パラメータの単一のセットを有するのではなく、各ゲーティングニューラルネットワーク層において、GRU更新用のパラメータの異なるセットがある。
完全ゲート型回帰ユニットにはいくつかの変形があり、ゲーティング演算は、回帰ネットワークの前の隠れ状態とバイアスとを様々な組合せで、および以下で説明する最小ゲート型ユニットと呼ばれる簡略化された形で使って実施される。
完全ゲート型回帰ユニット:
最初に、t=0に対して、出力ベクトルはh
0=0である。
上式で、x
tは入力ベクトルであり、h
tは出力ベクトルであり、
は候補活性化ベクトルであり、z
tは更新ゲートベクトルであり、r
tはリセットゲートベクトルであり、W、Uおよびbはパラメータ行列およびベクトルである。σ
gはシグモイド関数であり、φ
hは双曲線正接である。σ
g(x)∈[0,1]であるならば、代替活性化関数が可能である。z
tおよびr
tを変えることによって、式(*)の代替形が作成されてよい。
最小ゲート型回帰ユニット:
最小ゲート型ユニットは、更新およびリセットゲートベクトルが忘却ゲートにマージされることを除いて、完全ゲート型ユニットと同様である。このことはまた、出力ベクトルについての式が変更されなければならないことを含意する。
上式で、x
tは入力ベクトルであり、h
tは出力ベクトルであり、
は候補活性化ベクトルであり、f
tは忘却ベクトルであり、W、Uおよびbはパラメータ行列およびベクトルである。
最終アテンションブロック出力120は、入力として、アテンションニューラルネットワーク110の次のアテンションブロックもしくは他の構成要素にさらなる処理のために与えられてよく、またはニューラルネットワークシステム100の出力122を生成するのに使われてよい。
アテンションニューラルネットワーク110は、アテンションニューラルネットワーク110中の1つまたは複数のアテンションブロックの最終アテンションブロックの出力を受信するように構成される1つまたは複数の出力層を含み得る。1つまたは複数の出力層は、最終アテンションブロックの出力を処理して、ニューラルネットワークシステム100の出力122を生成するように構成される。
図3は、アテンションブロック入力から、アテンションニューラルネットワークのアテンションブロック用のアテンションブロック出力を生成するための例示的プロセスの流れ図である。便宜上、プロセス300は、1つまたは複数のロケーションにある1つまたは複数のコンピュータからなるシステムによって実施されるものとして記載される。たとえば、本明細書に従って適切にプログラムされたニューラルネットワークシステム、たとえば、図1のニューラルネットワークシステム100が、プロセス300を実施することができる。
システムは、アテンションブロック入力から導出されるクエリ入力、キー入力、および値入力を受信する(ステップ302)。いくつかの実装形態では、システムは、アテンションニューラルネットワークの前のアテンションブロックの出力から、アテンションブロック入力を導出することができる。いくつかの他の実装形態では、アテンションブロック入力は、アテンションニューラルネットワークを含むニューラルネットワークシステムの入力シーケンスから導出されてよい。アテンションブロック入力の導出は、上で引用した参考文献に記載される技法に従って実践されてよい。
システムは、アテンションブロックのアテンションニューラルネットワーク層によって、クエリ入力、キー入力、および値入力から導出されたアテンション層入力を受信する(ステップ304)。
いくつかの実装形態では、アテンションブロックを一致演算に初期化するために、システムは、アテンションブロックの第1の層正規化層を使って、クエリ入力、キー入力、および値入力を含むアテンションブロック入力に層正規化演算を適用して、正規化されたクエリ入力、正規化されたキー入力、および正規化された値入力を生成する。これらの実装形態では、アテンションニューラルネットワーク層は、正規化されたクエリ入力、正規化されたキー入力、および正規化された値入力を、アテンション層入力として受信する。
システムは、アテンションニューラルネットワーク層を使って、アテンション層入力にアテンション機構を適用して、アテンションニューラルネットワーク層についてのアテンション層出力を生成する(ステップ306)。いくつかの実装形態では、アテンション機構は自己アテンション機構である。いくつかの他の実装形態では、アテンション機構はマスク付き自己アテンション機構である。
システムは、アテンションブロックのゲーティングニューラルネットワーク層を使って、アテンションニューラルネットワーク層のアテンションブロック入力およびアテンション層出力にゲーティング機構を適用して、ゲート型アテンション出力を生成する(ステップ308)。
特に、いくつかの実装形態では、ゲーティング機構を適用することは、アテンション層入力にシグモイド変調を適用して、第1のシグモイド変調出力を生成することと、第1のシグモイド変調出力をアテンション層出力と結合して、ゲート型アテンション出力を生成することとを含む。
いくつかの他の実装形態では、ゲーティング機構を適用することは、アテンション層出力にシグモイド変調を適用して、第2のシグモイド変調出力を生成することと、第2のシグモイド変調出力をアテンション層入力と結合して、ゲート型アテンション出力を生成することとを含む。
いくつかの他の実装形態では、ゲーティング機構を適用することは、シグモイド荷重を使って、アテンション層入力とアテンション層出力の凸結合を計算して、ゲート型アテンション出力を生成することを含む。
いくつかの他の実装形態では、ゲーティング機構を適用することは、アテンション層出力に対してシグモイドおよび双曲線正接活性化を適用して、シグモイド双曲線正接出力を生成することと、シグモイド双曲線正接出力をアテンション層入力と結合して、ゲート型アテンション出力を生成することとを含む。
いくつかの他の実装形態では、ゲーティング機構を適用することは、アテンション層入力およびアテンション層出力にゲート型回帰ユニット(GRU)を適用することを含む。GRUは、長短期メモリ(LSTM)ネットワークと同様に実施するが、より少ないパラメータを有する回帰ネットワークである。このゲーティング機構は、非結合活性化関数として深さが適合されてよい。
いくつかの実装形態では、システムは、アテンションブロックの第2の層正規化層を使って、ゲート型アテンション出力に層正規化演算を適用して、正規化されたゲート型アテンション出力を生成する(ステップ310)。
いくつかの実装形態では、システムは、アテンションブロックのフィードフォワードニューラルネットワーク層を使って、正規化されたゲート型アテンション出力に1つまたは複数の変換を適用して、一時的アテンションブロック出力を生成する(ステップ312)。たとえば、1つまたは複数の変換は、1×1時間畳み込みネットワーク(すなわち、カーネルサイズ1、ストライド1)を、正規化されたゲート型アテンション出力に適用することを含み得る。
いくつかの実装形態では、システムは、アテンションブロックの第2のゲーティングニューラルネットワーク層を使って、一時的アテンションブロック出力およびゲート型アテンション出力に第2のゲーティング機構を適用して、アテンションブロックについてのアテンションブロック出力を生成する(ステップ314)。
システムは、アテンションブロック出力を、入力として、アテンションニューラルネットワークの次のアテンションブロックまたは他の構成要素に、さらなる処理のために与えてよい。アテンションブロックが、アテンションニューラルネットワーク中の最終アテンションブロックである場合、システムは、アテンションブロック出力をシステムの出力にマップするように構成される、アテンションニューラルネットワークの1つまたは複数の出力層に、アテンションブロック出力を与えてよい。
本明細書に記載するアテンションニューラルネットワークは、従来の機械学習技法(たとえば、逆伝搬)を使って、アテンションニューラルネットワークが実施するように構成されるタスクに適した目的関数を最適化するようにトレーニングデータでトレーニングされ得る。従来のアテンションブロックにおける残差接続をゲーティング関数で置き換えることによって、およびトレーニングの冒頭においてアテンションブロックが一致演算に初期化されるように、アテンションブロック内で層正規化演算がどのように適用されるかを修正することによって、本明細書に記載する技法は、アテンションニューラルネットワークのトレーニングをはるかに安定させ、学習スピードを向上させる(従来のアテンションブロックを有する従来のアテンションニューラルネットワークのトレーニングと比較して)。
本明細書は、「構成される」という用語を、システムおよびコンピュータプログラム構成要素との関連で使っている。1つまたは複数のコンピュータからなるシステムが特定の動作またはアクションを実施するように構成されることは、システムが、動作の際にシステムに動作またはアクションを実施させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをインストールしていることを意味する。1つまたは複数のコンピュータプログラムが、特定の動作またはアクションを実施するように構成されることは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に動作またはアクションを実施させる命令を含むことを意味する。
本明細書に記載する主題および機能的動作の実施形態は、デジタル電子回路機構で、有形に実施されるコンピュータソフトウェアもしくはファームウェアで、本明細書において開示した構造およびそれらの構造的等価物を含むコンピュータハードウェアで、またはそれらのうちの1つもしくは複数の組合せで実装することができる。本明細書において説明される主題の実施形態は、1つまたは複数のコンピュータプログラムとして、すなわち、データ処理装置によって実行するか、またはデータ処理装置の動作を制御するための、有形の非一時的記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして、実装することができる。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つもしくは複数の組合せであってよい。代替または追加として、プログラム命令は、データ処理装置による実行のために、適切な受信機装置への送信用の情報を符号化するように生成される、人工的に生成された伝搬信号、たとえば、機械生成された電気、光学、または電磁信号上で符号化されてよい。
「データ処理装置」という用語は、データ処理ハードウェアを指し、例として、プログラム可能プロセッサ、1つのコンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するための、あらゆる種類の装置、デバイス、および機械を包含する。装置は、専用論理回路機構、たとえば、FPGA(フィールドプログラム可能ゲートアレイ)またはASIC(特定用途向け集積回路)であるか、またはそれらをさらに含んでもよい。装置は、任意選択で、ハードウェアに加え、コンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つもしくは複数の組合せを構成するコードを含むことができる。
コンピュータプログラムは、プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードと呼ばれるか、またはそれらとして記載されている場合もあり、コンパイル型もしくはインタープリタ型言語、または宣言型もしくは手続き型言語を含む、どの形のプログラミング言語でも書かれてよく、スタンドアロンプログラムとして、またはモジュール、構成要素、サブルーチン、もしくはコンピューティング環境における使用に適した他のユニットとして、を含む、どの形でも展開することができる。プログラムが、ファイルシステム内のファイルに対応してよいが、そうである必要はない。プログラムは、他のプログラムもしくはデータ、たとえば、マークアップ言語ドキュメントに記憶された1つもしくは複数のスクリプトを保持するファイルの一部分に、対象になっているプログラムに専用の単一のファイルに、または複数の協調ファイル、たとえば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの部分を記憶するファイルに記憶することができる。コンピュータプログラムは、1つの場所に位置する1つのコンピュータ上または複数のコンピュータ上で実行されるように展開されても、複数の場所に分散され、データ通信ネットワークによって相互接続されてもよい。
本明細書では、「データベース」という用語は、データのどの集合体も指すように広く使われるが、データは、どの特定のやり方で構造化される必要も、またはまったく構造化される必要もなく、1つまたは複数のロケーションにある記憶デバイス上に記憶することができる。したがって、たとえば、インデックスデータベースは、異なるやり方で各々が編成されアクセスされ得る、データの複数の集合体を含み得る。
同様に、本明細書では、「エンジン」という用語は、1つまたは複数の特定の機能を実施するようにプログラムされる、ソフトウェアベースのシステム、サブシステム、またはプロセスを指すように広く使われる。概して、エンジンは、1つまたは複数のソフトウェアモジュールまたは構成要素として実装され、1つまたは複数のロケーションにある1つまたは複数のコンピュータ上にインストールされることになる。いくつかのケースでは、1つまたは複数のコンピュータは、特定のエンジンに専用となり、他のケースでは、複数のエンジンが、同じコンピュータまたは複数のコンピュータ上でインストールされ、稼動中であってよい。
本明細書に記載したプロセスおよび論理フローは、入力データに対して動作し、出力を生成することによって機能を実施するための1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能コンピュータによって実施され得る。プロセスおよび論理フローは、専用論理回路機構、たとえば、FPGA、もしくはASICによって、または専用論理回路機構と1つもしくは複数のプログラムされたコンピュータの組合せによって実施されてもよい。
コンピュータプログラムの実行に適したコンピュータは、汎用もしくは専用マイクロプロセッサもしくは両方、またはどの他の種類の中央処理ユニットに基づいてもよい。概して、中央処理ユニットは、読取り専用メモリもしくはランダムアクセスメモリまたは両方から、命令およびデータを受信することになる。コンピュータの本質的要素は、命令を実施または実行するための中央処理ユニットと、命令およびデータを記憶するための1つまたは複数のメモリデバイスとである。中央処理ユニットおよびメモリは、専用論理回路機構によって補完することも、その中に組み込むこともできる。概して、コンピュータは、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気、光磁気ディスク、または光ディスクも含み、あるいは大容量記憶デバイスからデータを受信し、もしくは大容量記憶デバイスにデータを転送し、または両方を行うように大容量記憶デバイスに動作可能に結合される。ただし、コンピュータは、そのようなデバイスを有する必要はない。その上、コンピュータは、別のデバイス、たとえば、ほんのいくつかの例を挙げれば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス、たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブに組み込むことができる。
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイスと、磁気ディスク、たとえば、内部ハードディスクまたは取外し可能ディスクと、光磁気ディスクと、CD ROMおよびDVD-ROMディスクとを含む、あらゆる形の不揮発性メモリ、媒体およびメモリデバイスを含む。
ユーザとの対話を可能にするために、本明細書に記載する主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえば、CRT(陰極線管)やLCD(液晶ディスプレイ)モニタと、ユーザがコンピュータに入力を与え得るためのキーボードおよびポインティングデバイス、たとえば、マウスやトラックボールとを有するコンピュータ上で実装することができる。他の種類のデバイスも、ユーザとの対話を可能にするのに使われることが可能であり、たとえば、ユーザに与えられるフィードバックは、どの形の感覚フィードバックでも、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであることができ、ユーザからの入力は、音響、音声、または触覚入力を含む、どの形でも受信されることが可能である。さらに、コンピュータは、ユーザによって使われるデバイスへドキュメントを送信し、デバイスからドキュメントを受信することによって、たとえば、ウェブブラウザから受信された要求に応答して、ユーザのデバイス上のウェブブラウザへウェブページを送信することによってユーザと対話することができる。また、コンピュータは、パーソナルデバイス、たとえば、メッセージングアプリケーションを稼動しているスマートフォンにテキストメッセージまたは他の形のメッセージを送り、ユーザから引き換えに応答メッセージを受信することによって、ユーザと対話することができる。
機械学習モデルを実装するためのデータ処理装置は、たとえば、機械学習トレーニングまたは生産、すなわち、推論、作業負荷の共通および数値計算部分を処理するための専用ハードウェアアクセラレータユニットも含むことができる。
機械学習モデルは、機械学習フレームワーク、たとえば、TensorFlowフレームワーク、Microsoft Cognitive Toolkitフレームワーク、Apache Singaフレームワーク、またはApache MXNetフレームワークを使って実装し、展開することができる。
本明細書に記載する主題の実施形態は、バックエンド構成要素を、たとえば、データサーバとして含む、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含む、またはフロントエンド構成要素、たとえば、本明細書に記載する主題の実装形態とユーザが対話し得るためのグラフィカルユーザインターフェース、ウェブブラウザ、もしくはアプリを有するクライアントコンピュータ、または1つもしくは複数のそのようなバックエンド、ミドルウェア、もしくはフロントエンド構成要素のどの組合せも含むコンピューティングシステムで実装することができる。システムの構成要素は、どの形または媒体のデジタルデータ通信、たとえば、通信ネットワークによっても相互接続されることが可能である。通信ネットワークの例には、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、たとえば、インターネットがある。
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントとサーバは概して、互いから離れており、通常、通信ネットワークを通して対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で稼動するとともに互いとのクライアント-サーバ関係を有するコンピュータプログラムにより発生する。いくつかの実施形態では、サーバが、データ、たとえば、HTMLページを、ユーザデバイスへ、たとえば、クライアントとして作用するデバイスと対話するユーザにデータを表示し、ユーザからユーザ入力を受信する目的のために送信する。ユーザデバイスにおいて生成されたデータ、たとえば、ユーザ対話の結果が、デバイスからサーバにおいて受信され得る。
本明細書は、多くの具体的な実装形態詳細を含むが、これらは、任意の発明の範囲において、または特許請求され得るものの範囲において、限定と解釈されるべきではなく、特定の発明の特定の実施形態に特有であり得る特徴の記述として解釈されるべきである。また、別個の実施形態の文脈において本明細書で説明したいくつかの特徴は、単一の実施形態において組み合わせて実装することができる。逆に、単一の実施形態の文脈において記載される様々な特徴はまた、複数の実施形態において別々に、またはどの適切な部分組合せでも実装することができる。さらに、特徴は、いくつかの組合せで働くものとして上記で説明され、初めにそのように特許請求される場合さえあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によってはその組合せから削除することができ、特許請求される組合せは、部分組合せ、または部分組合せの変形形態を対象とすることができる。
同様に、動作は、特定の順序において図面に示され、請求項に具陳されているが、これは、そのような動作が図示された特定の順序において、もしくは順次に実施されることを必要とするか、または、所望の結果を達成するためにすべての示された動作が実施されることを必要とするものと理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上述した実施形態における様々なシステムモジュールおよび構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、記載したプログラム構成要素およびシステムは概して、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージングされることが可能であることを理解されたい。
本主題の特定の実施形態について記載した。他の実施形態は、以下の特許請求の範囲内である。たとえば、請求項において具陳されるアクションは、異なる順序で実施され、望ましい結果を依然として達成することができる。一例として、添付の図面に示されるプロセスは、望ましい結果を達成するのに、図示される特定の順序、または順番を必ずしも要求しない。いくつかのケースでは、マルチタスキングおよび並列処理が有利であり得る。