本明細書は、1つまたは複数のロケーションにおける1つまたは複数のコンピュータ上にコンピュータプログラムとして実装されたシステムがどのように、ニューラルネットワークを訓練する(すなわち、ニューラルネットワークのパラメータを調整する)方法を実行することができるかについて全般的に説明する。
一態様において、ニューラルネットワークのパラメータに関連付けられた勾配を決定することを含む、ニューラルネットワークを訓練するためのコンピュータ実施方法が、提供される。パラメータノルムに対する勾配ノルムの比が、決定され、しきい値と比較される。その比がしきい値を超えると判定することに応答して、勾配の値は、その比がしきい値以下となるように低減される。次に、パラメータの値が、低減された勾配の値に基づいて更新される。
方法は、安定したパラメータ更新を確実にする適応勾配クリッピング技術を提供する。一部のニューラルネットワークにおいて、例えば、数百または数千の層を備えた非常に深度の大きいニューラルネットワークにおいて、バッチ正規化が、効果的な訓練のために要求されてきた。本方法は、本明細書において「ノーマライザフリーの」ニューラルネットワークと呼ばれる、そのようなニューラルネットワークが、バッチ正規化層を必要とすることなしに効果的に訓練されることを可能にする。バッチ正規化は、バッチ内の訓練データアイテムの間に依存関係を導入し、そのことが、並列処理システム上、または分散処理システム上の実装をより困難にする。また、バッチ正規化は、計算費用が高くつく動作である。
本明細書において説明される適応勾配クリッピング技術を使用して、パラメータノルムに対する勾配ノルムの比が、訓練中、許容可能な範囲内に留まることを確実にすることによって、ノーマライザフリーのネットワークにおいてバッチ正規化の有利な効果をレプリケートすべく、ノーマライザフリーのネットワークが、バッチ正規化されたネットワークと同一の特性を備えるようにされることが可能である。このことは、ノーマライザフリーのネットワークにおいてより安定したパラメータ更新をもたらし、この安定性は、タスクパフォーマンスを維持しながら、全体的な訓練時間を短縮する大きいバッチサイズにおける訓練を可能にする。また、バッチ正規化、およびバッチ内の訓練アイテムの依存関係を取り除くことは、訓練が、並列処理システム上、または分散処理システム上により容易に実装されることを可能にしもする。また、訓練データアイテムの独立は、シーケンスモデリングタスクのためにも重要である。
従来の勾配クリッピング方法は、勾配のサイズだけを考慮して、パラメータ自体のサイズ、およびパラメータノルムに対する勾配ノルムの比を勘案しない。ノーマライザフリーのネットワークにおいて従来の勾配クリッピング方法を使用することは、本適応勾配クリッピング方法を使用することによってもたらされる十全な利益をもたらさない。詳細には、従来の勾配クリッピングを使用する訓練においては、クリッピングしきい値は、深度、バッチサイズ、および学習率に左右され、これらの因子のいずれかを変える場合、きめ細かい調整を要求する。また、従来の勾配クリッピングを使用している場合、より大きいネットワークに関して収穫逓減も観察される。勾配クリッピングに関して比を使用することは、従来の勾配クリッピングには、そうすることが欠けているバッチ正規化の特性および利点をレプリケートするパラメータ更新の向上した安定性をもたらす。
一部の従来技術の方法において、学習率を適応させるために比が使用され、そのことは、パラメータ更新ステップを実行するとき、勾配をスケーリングする効果も有する。しかし、本適応勾配クリッピング方法において、勾配の値は、その比が許容可能な範囲を外れている場合にだけ、低減される。このことは、タスクパフォーマンスを一般化して、維持するネットワークの能力に大きな影響を及ぼす。このことは、計算リソースが限られ、より小さいバッチサイズが使用されなければならない場合に特に当てはまる。
パラメータノルムに対する勾配ノルムの比は、勾配ノルムをパラメータノルムで割ったものとして定義されてよい。
方法は、その比がしきい値を下回ると判定することに応答して、勾配の値を維持し、維持された勾配の値に基づいてパラメータの値を更新することをさらに含んでよい。すなわち、勾配は、その比がしきい値を下回る場合、変更されなくてよい。
勾配の値を低減することは、勾配の値を低減すべく勾配の値にスケール係数を掛けることを含んでよい。スケール係数は、その比に基づいてよく、勾配の値を低減することは、勾配の値を低減すべくその比に基づいて勾配の値にスケール係数を掛けることを含んでよい。例えば、スケール係数は、その比の逆数に基づいてよい。代替として、またはさらに、スケール係数は、しきい値に基づいてよい。例えば、しきい値は、0.01以上、0.16以下の範囲内の値であってよい。スケール係数は、その比としきい値の組合せに基づいてよい。例えば、スケール係数は、しきい値にその比の逆数を掛けたものに基づいてよい。
代替として、しきい値の値は、学習率に基づいてよい。例えば、しきい値は、学習率の逆数に正比例してよい。また、しきい値の値は、バッチサイズに基づいてもよい。例えば、より大きいバッチサイズの場合、しきい値に関して小さい値が選択されてよい(そのことは、より強力なクリッピングをもたらす)。
勾配ノルムおよびパラメータノルムは、ニューラルネットワークの1つのニューロンに関連付けられたパラメータに基づいて決定されてよい。すなわち、その1つのニューロンは、単一のニューロンのみであってよく、勾配ノルムおよびパラメータノルムは、単位に関するノルムであってよい。
ニューラルネットワークのパラメータは、ニューラルネットワークのニューロンに結び付けられた重みであってよく、勾配ノルムは、ニューロンに結び付けられたそれぞれの重みに関連付けられた勾配に基づいて決定されてよく、パラメータノルムは、ニューロンに結び付けられたそれぞれの重みの重み値に基づいて決定されてよい。
勾配ノルムおよびパラメータノルムは、フロベニウスノルムに基づいて決定されてよい。すなわち、ニューラルネットワーク層に関連付けられた勾配行列またはパラメータ行列のフロベニウスノルムが、その行列の個別の各要素の2乗の総和の平方根として定義されてよい。
勾配ノルムは、ニューロンに結び付けられたそれぞれの重みに関連付けられた勾配にわたって計算されたフロベニウスノルムとして計算されてよく、パラメータノルムは、ニューロンに結び付けられたそれぞれの重みにわたって計算されたフロベニウスノルムとして計算されてよい。
勾配の値を低減することは、以下の式に基づいてよい。すなわち、
ここで、Wlは、第l番目の層に関する重み行列であり、iは、第l番目の層におけるニューロンのインデックスであり(したがって、Wlの行ベクトルであってよく)、
は、パラメータ
に対応する勾配であり、λは、スカラしきい値であり、||.||Fは、フロベニウスノルムである。また、
は、
として計算されてもよく、そうすることは、0に初期設定されたパラメータが、勾配がクリッピングされて0になることを防止することができる。εは、10-3であってよく、または、適宜、他の小さい値であってよい。
ニューラルネットワークは、深層残差ニューラルネットワークであってよい。ニューラルネットワークは、残差ブロックを備えてよく、残差ブロックは、正規化層なしである。すなわち、残差ブロックは、バッチ正規化も、他の種類の正規化層も含まなくてよい。残差ブロックは、畳み込み動作、プーリング動作、および/または非線形動作を含んでよいが、バッチ正規化などの活性化正規化動作を含まなくてよい。非線形性は、ガウス誤差線形ユニット(GELU)または正規化線形ユニット(ReLU)であってよい。畳み込み動作は、グループ化された畳み込みであってよい。例えば、3×3畳み込みのグループ幅は、128であってよい。
パラメータは、畳み込み層に関連付けられたパラメータであってよい。パラメータが畳み込みフィルタの重みである場合、勾配ノルムおよびパラメータノルムは、チャネル次元と、空間的次元とを含むファンイン範囲にわたって計算されてよい。適応勾配クリッピング方法は、ネットワークのすべての層に適用されてよい。しかし、最終的な出力層は、除外されてよい。また、最初の畳み込み層も、除外されてよい。
ニューラルネットワークは、4段のバックボーンを備える深層残差ニューラルネットワークであってよい。段は、一定の幅および解像度の活性化を有する残差ブロックのシーケンスを備えてよい。バックボーンは、第1番目の段から始めて、第4番目の段まで1:2:6:3の比で残差ブロックを備えてよい。すなわち、第1番目の段は、1つの残差ブロックを備えてよく、第2番目の段は、2つの残差ブロックを備えてよく、第3番目の段は、6つの残差ブロックを備えてよく、第4番目の段は、3つの残差ブロックを備えてよい。より大きい深度のネットワークは、指定された比を保ちながら増加する数の残差ブロックを有してよい。例えば、ネットワークは、第1番目の段において5つの残差ブロックを有してよく、第2番目の段において10の残差ブロックを有してよく、第3番目の段において30の残差ブロックを有してよく、第4番目の段において15の残差ブロックを有してよい。入力層、全結合層、および出力層は、通常、バックボーンの一部を形成しない。
各段の幅は、前の段の幅の2倍であってよい。例えば、幅は、第1番目の段において256であってよく、第2番目の段において512であってよく、第3番目の段において1024であってよく、第4番目の段において2048であってよい。代替の構成において、第3番目の段および第4番目の段の幅は、1536であってよい。例えば、幅は、第1番目の段において256であってよく、第2番目の段において512であってよく、第3番目の段と第4番目の段の両方において1536であってよい。別の実施例において、幅は、第1番目の段において256であってよく、第2番目の段において1024であってよく、第3番目の段と第4番目の段の両方において1536であってよい。
残差ブロックは、ボトルネック残差ブロックであってよい。ボトルネック残差ブロックは、ボトルネック内に第1のグループ化された畳み込み層と、第2のグループ化された畳み込み層とを備えてよい。通常のボトルネックは、ボトルネック内の1つの畳み込み層だけから成る。ボトルネックに第2の畳み込み層を含めることが、訓練時間にほとんど影響を及ぼすことなく、タスクパフォーマンスを大幅に向上させ得ることが判明している。例えば、ボトルネック残差ブロックは、ボトルネックを形成すべくチャネルの数を低減する1×1畳み込み層を備えてよく、ボトルネックは、第1の3×3グループ化された畳み込み層と、第2の3×3グループ化された畳み込み層と、チャネルの数を復元する1×1畳み込み層とを備える。
残差ブロックの畳み込み層の重みは、スケーリングされた重み標準化を受けてよい。すなわち、その重みは、その層における重みの平均および標準偏差に基づいて再パラメータ化されてよい。スケーリングされた重み標準化に関係するさらなる詳細は、参照によりその全体が本明細書に組み込まれている、Brock他、「Characterizing signal propagation to close the performance gap in unnormalized resnets」、9th International Conference on Learning Representations、ICLR、2021年において見ることができる。
残差ブロックの入力は、入力の分散に基づいてダウンスケーリングされてよい。分散は、解析的に決定されてよい。残差ブロックの残差ブランチの最終的な活性化は、スカラパラメータによってスケーリングされてよい。スカラパラメータの値は、0.2であってよい。例えば、残差ブロックは、hi+1=hi+αfi(hi/βi)の形態であってよく、ここで、hiは、第i番目の残差ブロックに対する入力を表し、fi()は、第i番目の残差ブランチによって計算される関数を表す。関数は、すべてのiに関してVar(fi(z))=Var(z)であるように、初期設定を保存する分散となるようにパラメータ化されてよい。スカラαは、前述したとおり0.2であってよい。スカラβiは、第i番目の残差ブロックに対する入力の標準偏差を予測することによって決定されてよく、
であり、ここで、遷移ブロックの場合を除いて、Var(hi+1)=Var(hi)+α2であり、遷移ブロックに関しては、スキップパスが、ダウンスケーリングされた入力(hi/βi)に対して作用し、予期される分散は、遷移ブロックの後、hi+1=1+α2にリセットされる。また、さらなる詳細は、前段で参照したBrock他において見られてもよい。
残差ブロックは、スクイーズアンドエクサイト層をさらに備えてよい。スクイーズアンドエクサイト層は、以下のシーケンスの関数、すなわち、グローバル平均プーリング、全結合線形関数、スケーリングされた非線形関数、第2の全結合線形関数、シグモイド関数、および線形スケーリングに応じて入力活性化を処理してよい。例えば、その層の出力は、2σ(FC(GELU(FC(pool(h)))))×hであってよく、ここで、σは、シグモイド関数であり、FCは、全結合線形関数であり、poolは、グローバル平均プーリングであり、hは、入力活性化である。スカラ倍数2が、信号分散を維持すべく使用されてよい。
残差ブロックは、残差ブロックの残差ブランチの終わりに学習可能なスカラ利得をさらに備えてよい。学習可能なスカラは、0の値で初期設定されてよい。学習可能なスカラは、前述したスカラαに加えてであってよい。
前述したとおり、本適応勾配クリッピング方法は、バッチ内の訓練データアイテムが独立であることを可能にし、したがって、バッチ正規化が使用され得ない場合にシーケンスモデリングタスクにおいて使用されてよい。従来の勾配クリッピングは、言語モデリングにおいて、しばしば、使用され、本適応勾配クリッピング方法は、そのような用途において有利な代替をもたらすことが可能である。適切なシーケンスモデリングタスクのさらなる実施例が、後段で与えられる。ニューラルネットワークは、トランスフォーマ型のニューラルネットワーク、すなわち、1つまたは複数のトランスフォーマ層を含むニューラルネットワークであってよい。トランスフォーマ層は、通常、注意ニューラルネットワーク層、詳細には、自己注意ニューラルネットワーク層を含んでよく、オプションとして、その後に、フィードフォワードニューラルネットワークが続く。トランスフォーマ型のニューラルネットワークは、シーケンスモデリングにおいて使用されてよく、後段でさらに詳細に説明される。ニューラルネットワークは、敵対的生成ネットワーク(GAN)型のニューラルネットワークであってよい。GANについては、後段でさらに詳細に説明される。
パラメータの値を更新することは、少なくとも1024の訓練データアイテムのバッチサイズに基づいてよい。ノーマライザフリーのニューラルネットワークが関与する以前の作業において、ImageNet上で1024などの大きいバッチサイズに対して訓練することは、不安定であった。適応勾配クリッピング方法を使用して、向上した安定性がもたらされ、少なくとも1024のバッチサイズで訓練することが、可能にされる。例えば、4096のバッチサイズが、使用されてよい。
ニューラルネットワークは、事前訓練されてよい。例えば、ニューラルネットワークは、関心対象の特定のタスクに対するさらなる訓練、および/または関心対象の特定のデータセットを用いたさらなる訓練に先立って、異なるデータセットに対する訓練、および/または異なる訓練目的での訓練を受けていてよい。このため、ネットワークは、事前訓練されてよく、次に、微調整されてよい。方法は、訓練のためにニューラルネットワークを入力として受け取ってよく、更新されたニューラルネットワークを出力としてもたらしてよい。
方法は、画像データを含む訓練データセットを受け取ることをさらに含んでよい。勾配を決定することは、画像処理タスクに対するニューラルネットワークのパフォーマンスを測定するための損失関数に基づいてよい。
勾配の計算、およびパラメータを更新することは、確率論的な勾配降下最適化アルゴリズム、または他の任意の適切な最適化アルゴリズムに基づいて実行されてよい。方法は、ドロップアウト深度および確率論的深度などの正則化方法と組み合わされて使用されてよい。ドロップアウト率は、深度とともに増加することが可能である。ドロップアウト率は、0.2以上、0.5以下の範囲内であってよい。また、方法は、ネステロフのモーメンタムなどのモーメンタムベースの更新規則と組み合わされて使用されてもよい。また、方法は、訓練方法の向上した安定性に起因して、訓練をスピードアップする、大きい学習率の使用を可能にもする。
勾配の決定は、鋭さを意識した最小化技術に基づいてよい。鋭さを意識した最小化技術において、損失関数は、訓練タスクに基づく従来の損失と、ミニマの形状に基づくさらなる損失とを含んでよい。このさらなる損失は、一様に低い損失値を有する近傍にあるパラメータを求める。言い換えると、鋭い形状のミニマと比べて、より良好な一般化をもたらすものと考えられる、より平坦なミニマが、求められる。勾配の決定は、パラメータの変更されたバージョンを決定すべく勾配上昇ステップを実行すること、およびパラメータに関連付けられた勾配を決定すべく、パラメータの変更されたバージョンに基づいて勾配下降ステップを実行することを含んでよい。勾配上昇ステップは、訓練データアイテムの現在のバッチのサブセットに基づいて実行されてよい。例えば、現在のバッチにおける訓練データアイテムの1/5が、使用されてよい。前述した適応勾配クリッピング方法と併せて使用される場合、バッチのサブセットを使用することが、上昇ステップに関してバッチにおける訓練データアイテムのすべてを使用することと均等のパフォーマンスをもたらすことが判明している。このため、はるかに低い計算費用で同じ利益が実現されることが可能である。分散型訓練システムにおいて使用される場合、勾配上昇ステップにおける勾配は、異なる処理ユニット上のレプリカの間で同期を要求しない。勾配上昇ステップ、および生成された、変更されたパラメータは、処理ユニットにローカルに保たれることが可能であり、勾配降下ステップは、ローカルの変更されたパラメータに対して実行されることが可能である。より少ない処理ユニットを備えた分散型システム、または単一処理ユニットシステムに関して勾配累積を介して同じ効果が実現されることが可能である。鋭さを意識した最小化に関するさらなる詳細は、参照によりその全体が本明細書に組み込まれている、https://openreview.net/forum?id=6Tm1mposlrMにおいて入手可能な、Foret他、「Sharpness-aware minimization for efficiently improving generalization」、9th International Conference on Learning Representations、ICLR、2021年において見ることができる。
訓練データセットは、RandAugmentなどのデータ増強技術を使用して増強されてよい。適応勾配クリッピング方法によってもたらされる強化された安定性が、タスクパフォーマンスを低下させることなしに強力な増強が使用されることを可能にする。画像データに対して、RandAugmentは、アイデンティティ、自動コントラスト、均等化、回転、ソラリゼーション、彩色、ポスタリゼーション、コントラスト、明度、シャープネス、せん断、および平行移動を含む画像変換のセレクションを提供する。訓練データアイテムの変更されたバージョンは、1つまたは複数の変換をランダムに選択することによって生成されてよい。RandAugmentに関するさらなる詳細は、参照によりその全体が本明細書に組み込まれている、Cubuk他、「Randaugment: Practical automated data augmentation with a reduced search space」、Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops、702-703頁、2020年において見ることができる。訓練データアイテムのモダリティに依存して、適宜、他のセットの変換が、使用されてよいことが認識されよう。
さらに、または代替として、他のデータ増強技術が、使用されてよい。例えば、変更された訓練データアイテムが、第1の訓練データアイテムの一部分を選択すること、および変更された訓練データアイテムを生成すべく第2の訓練データアイテムにおける対応する部分を、第1の訓練データアイテムからの選択された部分で置き換えることによって生成されてよい。選択された部分のロケーションおよびサイズは、ランダムに選択されてよい。複数の部分が、変更された訓練データアイテムを生成すべく選択されて、置換えのために使用されてよい。画像データの場合、その部分は、画像パッチであってよい。変更された訓練データアイテムには、変更された訓練データアイテムに存在する第1の訓練データアイテムと第2の訓練データアイテムの比率に基づいてラベルが割り当てられてよい。例えば、第1の訓練データアイテムの選択された部分が、変更された訓練データアイテムの40%を構成し、第2の訓練データアイテムが、残りの60%を構成する場合、変更された訓練データアイテムに関するラベルは、第1の訓練データアイテムに関連付けられたクラスに関して0.4であってよく、第2の訓練データアイテムに関連付けられたクラスに関して0.6であってよい。類似したデータ増強技術において、第1の訓練データアイテムの選択された部分は、空白にされてよく、すなわち、ピクセル値は、0値に、もしくは黒を表す値に設定されてよく、またはランダムノイズで置き換えられてよい。
別の例示的なデータ増強技術は、第1の訓練データアイテムおよび第2の訓練データアイテムを補間することによって変更された訓練データアイテムを生成することを含む。補間は、線形補間であってよい。変更された訓練データアイテムには、第1の訓練データアイテムおよび第2の訓練データアイテムの補間重み付けに基づいてラベルが割り当てられてよい。
一実装形態において、訓練データアイテムのバッチに関して、RandAugmentが、バッチにおける訓練データアイテムのすべてに適用されてよく、部分選択/置換え技術が、バッチにおける訓練データアイテムの半分に適用されてよく、補間技術が、そのバッチに関する増強された訓練データアイテムを生成すべく訓練データアイテムの残りの半分に適用されてよい。前述したとおり、適応勾配クリッピング方法によってもたらされる強化された安定性は、タスクパフォーマンスを低下させることなしに強力な増強が使用されることを可能にする。このため、異なるデータ増強技術の組合せが、タスクパフォーマンスを向上させるために有益である可能性があり、タスクパフォーマンスは、より強力なデータ増強とともに漸進的に向上する。通常のバッチ正規化されたニューラルネットワークは、より強力なデータ増強を使用することから利益を得ることがなく、一部の事例において、パフォーマンスを損なう可能性がある。
方法は、複数の処理ユニットを備える並列処理システムまたは分散処理システムによって実行されてよい。方法は、複数の訓練データアイテムを含む訓練データセットを受け取ること、各バッチが訓練データセットの訓練データアイテムのサブセットを含む、訓練データアイテムの複数のバッチを生成すること、訓練データアイテムの複数のバッチを複数の処理ユニットに分配すること、および訓練データアイテムの分配された複数のバッチに基づいて、複数の処理ユニットを並列に使用してニューラルネットワークを訓練することをさらに含んでよい。複数の処理ユニットは、異なる物理的計算装置の一部であってよく、および/または異なる物理ロケーションに配置されてよい。
方法は、1つまたは複数のテンソル処理ユニット、もしくは1つまたは複数のグラフィクス処理ユニット、または他のタイプのアクセラレータハードウェアによって実行されてよい。並列処理システムまたは分散処理システムは、1つまたは複数のグラフィクス処理ユニットもしくはテンソル処理ユニットを備えてよい。
別の態様によれば、1つまたは複数のコンピュータと、その1つまたは複数のコンピュータによって実行されるとその1つまたは複数のコンピュータに前述したそれぞれの方法の動作を実行させる命令を記憶する1つまたは複数のストレージデバイスとを備えるシステムが、提供される。
システムは、並列処理システムまたは分散処理システムであってよい。システムは、1つまたは複数のテンソル処理ユニット、もしくは1つまたは複数のグラフィクス処理ユニットを備えてよい。
さらなる態様によれば、1つまたは複数のコンピュータによって実行されるとその1つまたは複数のコンピュータに前述したそれぞれの方法の動作を実行させる命令を記憶する1つまたは複数のコンピュータ記憶媒体が、提供される。
本明細書において説明される主題は、以下の利点のうちの1つまたは複数を実現するように特定の実施形態において実装され得る。
バッチ正規化は、非常に深度の大きいニューラルネットワークの、例えば、数百または数千さえもの層を備えたニューラルネットワークの訓練を可能にするための重要な技術として存在してきた。バッチ正規化は、訓練の安定性を向上させ、訓練中に大きいバッチサイズが使用されることを可能にし、そのことが、全体的な訓練時間を大幅に短縮することが可能である。しかし、バッチ正規化は、計算とメモリの両方の点で、計算費用が高くつく動作であり、そのことが、より大きいバッチサイズを使用することの利益のいくらかを無効にする。例えば、バッチ正規化は、Titan X Pascal GPUを使用するImageNet上のResNet-50アーキテクチャの訓練時間の約1/4の割合を占めるものと推定されてきた。
さらに、バッチ正規化は、バッチ内の訓練データアイテムの間に依存関係を導入する。このことは、並列処理システム上、または分散処理システム上で訓練を実施すること、および非常に深度の大きいニューラルネットワークを効率的に訓練するのに必要とされる可能性がある、テンソル処理ユニットおよびグラフィクス処理ユニットなどのアクセラレータハードウェアを使用することの困難を増大させる。また、バッチ正規化は、訓練を実行するために使用される基礎を成すハードウェアに特に左右され、結果は、他のハードウェアシステム上でレプリケートすることが困難であり得る。
バッチ正規化をレプリケートする以前の作業は、ImageNetなどのベンチマークデータセット上で同等の精度を可能にするネットワークをもたらしている。しかし、大きいバッチサイズ、例えば、ImageNet上で1024より大きいバッチサイズにおいて、タスクパフォーマンスは、これらの「ノーマライザフリーの」ネットワークにおいて低下しはじめる。
前述したとおり、本発明者らは、訓練中、バッチ正規化されたネットワークとノーマライザフリーのネットワークの間でパラメータノルムに対する勾配ノルムの比に大きな差を確認している。このため、バッチ正規化の有利な効果が、パラメータノルムに対する勾配ノルムの比が、訓練中、許容可能な範囲内に留まることを確実にすべく、本明細書において説明される適応勾配クリッピング技術を使用してノーマライザフリーのネットワークにおいてレプリケートされることが可能であり、その結果、より安定したパラメータ更新がもたらされる。この安定性は、大きいバッチサイズにおける訓練が、高いタスクパフォーマンスを維持しながら、ノーマライザフリーのネットワークに関する訓練効率を向上させることを可能にする。例えば、ImageNet上で最新技術のEfficientNet-B7ネットワークの試験精度と対等である、適応勾配クリッピング技術を使用して訓練されたニューラルネットワークは、最高で8.7×、より高速に訓練される。
さらに、勾配クリッピングの計算費用およびメモリ費用は、バッチ正規化と比べて、はるかに低い。さらに、バッチ内の訓練データアイテム上に依存関係は存在しないので、訓練は、並列処理システム上、および分散処理システム上でより容易に実行されることが可能である。バッチ統計のバッチ計算または並列計算に訓練データアイテムがどのように割り振られるかについての特別な考慮の必要性もまったくない。このため、訓練方法は、並列処理システムおよび分散処理システム、ならびにアクセラレータハードウェアに特に適応している。
正反対の極において、適応勾配クリッピング方法は、小さいバッチサイズにおいても、大きいバッチサイズにおけるのと同様に有効であるのに対して、バッチ正規化オプティマイザおよび他の正規化されたオプティマイザのタスクパフォーマンスは、劣悪である傾向にある。このため、適応勾配クリッピング方法は、計算リソースが限られる場合にも有効である。
また、適応勾配クリッピング方法によってもたらされる強化された安定性は、RandAugmentなどの強力なデータ増強を用いた訓練を可能にすることもして、そのことが、ネットワークの一般化能力およびタスクパフォーマンスをさらに向上させる。
様々な図面における同様の参照符号および名称は、同様の要素を示す。
図1は、ニューラルネットワークを訓練するための例示的なニューラルネットワーク訓練システム100を示す。ニューラルネットワークのニューラルネットワークパラメータ105のセット、および訓練データセット110が、ニューラルネットワーク訓練システム100に入力として与えられてよい。ニューラルネットワーク訓練システム100は、更新されたニューラルネットワークパラメータ115をもたらすべくニューラルネットワークパラメータ105および訓練データセット110を処理するように構成される。すなわち、入力ニューラルネットワークパラメータ105の値は、特定の事前定義されたタスクに対するニューラルネットワークのパフォーマンスを向上させようとする試みにおいて変更されてよい。詳細には、ニューラルネットワーク訓練システム100は、ニューラルネットワークパラメータ105を更新するために適応勾配クリッピング技術を使用するように構成される。適応勾配クリッピング技術において、ニューラルネットワークのパラメータ105に関連付けられた勾配が、決定される。パラメータノルムに対する勾配ノルムの比が、決定されて、しきい値と比較される。その比がしきい値を超えると判定することに応答して、勾配の値は、その比がしきい値以下となるように低減され、パラメータの値が、その低減された勾配の値に基づいて更新される。適応勾配クリッピング技術に関係するさらなる詳細は、図3を参照して後段で提供される。ニューラルネットワーク訓練システム100は、更新されたニューラルネットワークパラメータ115を出力としてもたらすように構成されてよい。
ニューラルネットワーク訓練システム100は、代替として、入力ニューラルネットワークパラメータ105および/または訓練データセット110を、システム100にローカルのデータストア120またはメモリ125から取り出してよい。また、ニューラルネットワーク訓練システム100は、ニューラルネットワークのパラメータに関する初期のセットの値を生成するように構成されてもよい。また、ニューラルネットワーク訓練システム100は、事前定義された停止基準が達せられるまでニューラルネットワークパラメータ105を繰り返し更新するように構成されてもよく、更新されたニューラルネットワークパラメータ140の最終的なセットが、出力としてもたらされてよい。
訓練データセット110は、タスクに適切な複数の訓練データアイテムを含んでよく、オプションとして、訓練データアイテムを処理する際にニューラルネットワークがもたらすべき目標出力に対応するラベルのセットを含んでよい。例えば、訓練データセット110は、画像データ、ビデオデータ、オーディオデータ、音声データ、センサデータ、環境の状態を特徴づけるデータ、ならびに後段でより詳細に説明される他の種類のデータを含んでよい。タスクは、ロボット/機械的/電気的エージェント、および後段でより詳細に説明される他のタスクを制御するためのアクションを生成する、画像認識、物体検出、画像セグメント化、音声認識、機械翻訳を含んでよい。
一般に、ニューラルネットワーク訓練システム100は、各処理ユニットがローカルメモリ135A…Nを備える複数の処理ユニット130A…Nを備えてよい。このため、図1におけるニューラルネットワーク訓練システム100は、並列処理システムまたは分散処理システムであると考えられてよい。処理ユニット130A…Nは、当業者によって適切であると考えられる様々な異なるアーキテクチャおよび構成で配置されてよいことが認識されよう。例えば、ニューラルネットワーク訓練システム100は、グラフィクス処理ユニット(GPU)もしくはテンソルプロセッサユニット(TPU)、または他のタイプのニューラルネットワークアクセラレータハードウェアを使用して実装されてよい。処理ユニット130A…Nは、適切なコンピュータネットワークを介して通信する異なる物理ロケーションにおける複数の別々のハードウェアデバイスにわたって分散されてよく、単一のハードウェアデバイス上に配置されなくてよいことが認識されよう。
ニューラルネットワーク訓練システム100は、各バッチが訓練データセット110の訓練データアイテムのサブセットを含む、訓練データアイテムの複数のバッチを生成するように構成されてよい。代替として、受け取られる訓練データセット110は、バッチに事前分割されてよい。ニューラルネットワーク訓練システム100は、訓練データアイテムの複数のバッチを複数の処理ユニット130A…Nに分配するように構成されてよい。ニューラルネットワークシステム100は、各処理ユニット130A…Nに分配された訓練データアイテムの複数のバッチに基づいて、複数の処理ユニット130A…Nの並列処理能力を使用してニューラルネットワークを訓練するように構成されてよい。この脈絡における「バッチ」という術語の使用は、処理ユニット130A…Nに分配するための訓練データアイテムの任意のグループ化を範囲に含むことを意図している。例えば、ニューラルネットワークを訓練するために確率論的な勾配降下を使用する際、勾配は、訓練データアイテムの「ミニバッチ」を基礎として計算されてよい。訓練データアイテムのこの「ミニバッチ」は、処理ユニット130A…Nのうちの複数に分配するためにさらに細分されてよい。例えば、各処理ユニット130A…Nが、各々、32の訓練データアイテムを処理するように構成されてよい。「バッチ」という術語は、訓練データアイテムを処理ユニット130A…Nに分配する脈絡におけるそのようなさらなる細分を含むことを意図している。本開示において「バッチサイズ」について述べられる場合、これは、勾配を決定すること、および値を更新することに使用される訓練データアイテムの数であってよい。このため、これは、ミニバッチの細分、および処理ユニット130A…Nへの分配に先立つ確率論的な勾配降下における「ミニバッチ」のサイズを指すことが可能である。
複数の処理ユニット130A…Nはそれぞれ、その処理ユニットに割り振られた訓練データアイテムに関する対応するネットワーク出力を、ニューラルネットワークパラメータ105の現在の値に応じて並列に計算するように構成されてよい。後段でより詳細に説明されるとおり、適応勾配クリッピング技術は、ネットワーク出力を計算する際、訓練データアイテムの間に依存関係をまったく有さず、このため、ネットワーク出力を計算することは、各処理ユニット130A…Nによって並列に、独立に実行されてよい。このことは、訓練データアイテムの間に依存関係を導入し、このため、さらなるオーバーヘッドを被る、バッチ正規化動作を実行するように、または代替としてデータシャッフル動作を導入するように処理ユニット130A…Nの間の通信を要求する可能性がある、バッチ正規化層を含むニューラルネットワークとは対照的である。適応勾配クリッピング技術は、バッチ正規化層なしのニューラルネットワークが、バッチ正規化層を含むニューラルネットワークと比べて、並列システム上、および分散システム上で実装するのがより容易で、実行するのがより効率的でもありながら、同等の、または場合によっては、それ以上のタスクパフォーマンスを実現することを可能にする。
各処理ユニット130A…Nは、決定されたネットワーク出力、およびニューラルネットワークを訓練するために使用されている特定の損失関数に基づいて、誤差値、または他の学習信号を計算するように構成されてよい。誤差値は、処理ユニット130A…Nに並列に割り振られた特定のバッチ上で勾配の値を計算すべくネットワークを逆伝播されてよい。処理ユニット130A…Nのそれぞれによって決定された計算された勾配の値は、適応勾配クリッピング技術により、パラメータノルムに対する勾配ノルムの比、およびパラメータの値の更新を決定すべく組み合わされてよい。パラメータ値の更新は、パラメータのローカルコピーに更新を適用するために処理ユニット130A…Nのそれぞれに送られてよく、または更新された値自体が、さらなる訓練が要求される場合に処理ユニット130A…Nのそれぞれに送られてよい。他の並列実装形態が、適応勾配クリッピング技術を実装するのに適している可能性があることが認識されよう。例えば、処理ユニット130A…Nによって使用されるニューラルネットワークのパラメータのローカルコピーが異なることが許される、非同期の並列実装形態が、使用されてよい。パラメータノルムに対する勾配ノルムの比を決定すること、その比をしきい値と比較すること、およびパラメータ値を更新することは、処理ユニットに分配される訓練データアイテムのバッチに基づいて、並列に、独立に実行されてよい。パラメータ値を更新すること、および処理ユニット130A…Nに更新されたパラメータ値を分配することは、例えば、適切な非同期の確率論的な勾配降下法により実行されてよい。
図1は、並列/分散処理システムを示すが、ニューラルネットワーク訓練システム100は、並列システムとしても、分散システムとしても実装される必要はなく、単一の処理ユニットを使用して実装されてよいことを認識されたい。
図2は、複数の隠れ層205A…Nを備える例示的なニューラルネットワーク200を示す。ニューラルネットワーク200は、出力215をもたらすべく複数の隠れ層205A…Nを通して入力210を処理する。通常、ニューラルネットワーク200は、特定のタスクを実行するように訓練される。例えば、ニューラルネットワーク200は、画像認識タスクを実行するように訓練されてよい。入力210は、ピクセル値(または他の画像データ)を含む画像であってよく、出力215は、特定の物体がその画像に存在する尤度を表す得点のセットであってよい。
ニューラルネットワーク200は、確率論的な勾配降下法、または他の勾配ベースの方法などの従来の技術を使用して、ただし、後段で説明されるとおり適応勾配クリッピング技術を使用するように変更されて、訓練されてよい。一般に、勾配ベースの訓練方法の場合、1つまたは複数の訓練データアイテムが、対応する出力を生成すべく入力としてニューラルネットワーク200に与えられる。生成された出力を対応する目標出力と比較する、交差エントロピー損失などの損失関数が、構築されてよい。その損失関数から計算された誤差値または他の学習信号が、出力から始めて、複数の隠れ層205A…Nを逆の順序で通って入力に戻るように、ネットワークを「逆伝播」されてよい。このようにして、ニューラルネットワークの各パラメータに関する損失関数の勾配が、計算されて、パラメータ値を更新するのに使用されてよい。
適応勾配クリッピング技術において、ニューラルネットワークのパラメータに関連付けられた勾配は、正規であるものとして計算される。しかし、その勾配は、パラメータを更新するのにその勾配を使用するのに先立って変更されてよい。詳細には、図3の処理において示されるとおり、ステップ301において、ニューラルネットワークのパラメータに関連付けられた勾配が決定された後、ステップ305において、パラメータノルムに対する勾配ノルムの比が、決定される。その比は、勾配ノルムをパラメータノルムで割ったものとして定義されてよい。ステップ310において、決定された比が、しきい値と比較される。ステップ315において、その比がしきい値を超えると判定することに応答して、勾配の値は、その比がしきい値以下となるように低減されて、その結果、勾配が「クリッピング」される。ステップ320において、パラメータの値が、その低減された勾配の値に基づいて更新される。ステップ325において、その比がしきい値を超えない場合、勾配の値は、維持されてよく、パラメータの値が、ステップ330において、その維持された勾配の値に基づいて更新されてよい。いずれの場合もパラメータ値の更新は、使用される特定の勾配ベースの訓練方法の特定のパラメータ更新規則により実行されてよい。
適応勾配クリッピング技術は、パラメータの更新が、パラメータのスケールを考慮に入れて特定のサイズに制限されるという点で、安定したパラメータ更新を確実にする。一部のニューラルネットワークにおいて、例えば、数十、数百、または数千もの層を備えた非常に深度の大きいニューラルネットワークにおいて、効果的な訓練のためにバッチ正規化が要求されてきた。本適応勾配クリッピング技術は、そのようなニューラルネットワークが、バッチ正規化層を必要とすることなしに、効果的に訓練されることを可能にする。バッチ正規化層なしのニューラルネットワークは、本明細書において「ノーマライザフリーの」ニューラルネットワークと呼ばれる。
バッチ正規化層は、入力として、ニューラルネットワークにおける隠れ層の出力を取り込み、入力を再中心化し、再スケーリングする。最初、入力は、データが約0の平均と、約1の分散を有するように変更される。初期の正規化が最適に達していないことが判明した場合、学習可能なパラメータに基づくさらなるスケーリングおよびシフティングが適用されてよい。
バッチ正規化に関する平均および分散は、特定のパラメータ更新ステップのために使用される訓練データアイテムのバッチを基礎として計算される。このため、バッチ正規化は、バッチ内の訓練データアイテムの間に依存関係を導入し、そのことが、ニューラルネットワークの出力を計算する際にデータのバッチが処理ユニット間で分割される場合にデータのバッチの平均および分散を計算するのに処理ユニット間の通信が要求される可能性があるので、並列処理システム上、または分散処理システム上の実装をより困難にする。バッチ正規化がない場合、処理ユニットは、各入力データアイテムに関するネットワーク出力を独立に計算することができ、処理ユニット間の通信は、必要ない。このため、バッチ正規化を適応勾配クリッピング技術で置き換えることは、バッチ内の訓練データアイテムの依存関係を取り除き、ネットワーク出力を独立に計算する処理ユニットの能力を復元する。このことは、訓練が並列処理システム上、または分散処理システム上でより容易に実施されることを可能にし、並列システムまたは分散システムにおける処理ユニットの間で要求される通信の量が低減され、その結果、並列実装形態の効率を向上させる。一部の従来技術の実装形態において、処理ユニットの間でバッチ正規化統計を通信することの代替として、各実行で処理ユニットにバッチの異なるサブセットが割り振られる尤度が高まるように、バッチ正規化が実行されるたびに、バッチ内の訓練データアイテムがシャッフルされることが可能である。しかし、このシャッフル動作は、並列/分散実装形態の効率を低減するさらなるオーバーヘッドを被ることにもなる。適応勾配クリッピング技術を使用することは、シャッフル動作の必要性を回避し、並列/分散実装形態におけるオーバーヘッドを低減する。
適応勾配クリッピング技術を用いて訓練されたノーマライザフリーのニューラルネットワークは、バッチ正規化を用いるニューラルネットワークと比べて、同等の、または場合によっては、それ以上のタスクパフォーマンスをもたらす。適応勾配クリッピング技術を介して実現されるより高い安定性は、タスクパフォーマンスを維持しながら、全体的な訓練時間を短縮する大きいバッチサイズにおける訓練を可能にする。バッチ正規化は、計算費用が高くつく動作でもあり、バッチ正規化を置き換えることは、大規模なニューラルネットワークを訓練することの計算要件を低減することにも寄与する。
従来の勾配クリッピング方法は、勾配のサイズだけを考慮し、パラメータ自体のサイズ、およびパラメータノルムに対する勾配ノルムの比を勘案しない。ノーマライザフリーのネットワークにおいて従来の勾配クリッピング方法を使用することは、適応勾配クリッピング技術を使用することによってもたらされる十全な利益をもたらさない。詳細には、従来の勾配クリッピングを使用して訓練すると、クリッピングしきい値は、深度、バッチサイズ、および学習率に左右され、これらの因子のいずれかを変える場合、きめ細かい調整を要求する。また、従来の勾配クリッピングを使用している場合、より大きいネットワークに関して収穫逓減も観察される。勾配クリッピングに関して比を使用することは、従来の勾配クリッピングには、そうすることが欠けているバッチ正規化の特性および利点をレプリケートするパラメータ更新の向上した安定性をもたらす。
次に、適応勾配技術のさらなる詳細について説明する。勾配の値は、勾配の値にスケール係数を掛けることによって低減されてよい。一実施例において、スケール係数は、しきい値に基づく。別の実施例において、スケール係数は、その比に基づき、その比の逆数に基づいてよい。スケール係数は、しきい値と比の組合せに基づいてよく、例えば、スケール係数は、しきい値にその比の逆数を掛けたものに基づいてよい。
勾配ノルムおよびパラメータノルムは、フロベニウスノルムに基づいてよい。行列Aのフロベニウスノルムは、その行列の個別の各要素の2乗の総和の平方根として定義される。すなわち、
ノルムは、単位に関するノルムであってよく、すなわち、ノルムは、1つの特定の層におけるニューラルネットワークの1つの特定のニューロンに関連付けられた勾配/パラメータ値に基づいて計算されてよい。例えば、ノルムは、ニューロンに対する入って来る接続、およびそれらの接続に対応する勾配に関連付けられたパラメータに基づいて計算されてよい。代替として、適切な場合、出て行く接続が、使用されてよい。
一実装形態において、勾配の値は、以下の式に基づいて低減されて、更新されてよい。すなわち、
ここで、Wlは、第l番目の層に関する重み行列であり、iは、第l番目の層におけるニューロンのインデックスであり(したがって、ノルムが単位に関して計算される場合、Wlの行ベクトルであってよく)、
は、パラメータ
に対応する勾配であり、λは、スカラしきい値であり、||.||Fは、フロベニウスノルムである。また、
は、
として計算されてもよく、そうすることは、0に初期設定されたパラメータが、勾配がクリッピングされて0になることを防止することができる。εは、10-3であってよく、または、適宜、他の小さい値であってよい。
一実施例において、しきい値は、0.01以上、0.16以下の範囲内の値であってよい。ネットワークの種類、および1つの特定のパラメータ更新ステップにおいて処理されている訓練データアイテムのバッチサイズに依存して、適宜、他のしきい値が選択されてよいことが認識されよう。しきい値の値は、バッチサイズに基づいてよい。例えば、より大きいバッチサイズの場合、しきい値に関して小さい値が選択されてよい(そのことは、より強力な勾配クリッピングをもたらす)。
パラメータの値を更新することは、少なくとも1024の訓練データアイテムのバッチサイズに基づいてよい。ノーマライザフリーのニューラルネットワークが関与する以前の作業において、ImageNet上の1024などの大きいバッチサイズ上の訓練は、不安定であった。前述したとおり、適応勾配クリッピング技術を使用すると、向上した安定性がもたらされ、少なくとも1024のバッチサイズを用いた訓練が、可能にされる。例えば、4096のバッチサイズが、使用されてよい。
適応勾配クリッピング技術は、小さいバッチサイズにおいても、大きいバッチサイズにおけるのと同様に有効である。バッチ正規化オプティマイザおよび他の正規化されたオプティマイザのタスクパフォーマンスは、小さいバッチサイズにおいて劣悪である傾向にある。このため、適応勾配クリッピング方法は、計算リソースが限られて、小さいバッチサイズが使用されなければならない場合にも有効である。
適応勾配クリッピング技術は、ドロップアウト深度および確率論的深度などの正則化方法と組み合わされて使用されてよい。ドロップアウト率は、深度とともに増加することが可能である。すなわち、ドロップアウト率は、より多くの数の層を備えたネットワークの場合、より大きいことが可能である。ドロップアウト率は、0.2以上、0.5以下の範囲内であってよい。また、適応勾配クリッピング技術は、ネステロフのモーメンタムなどのモーメンタムベースの更新規則と組み合わされて使用されてもよい。また、適応勾配クリッピング技術は、訓練方法の向上した安定性に起因して、訓練をスピードアップする、大きい学習率の使用を可能にもする。
勾配の決定は、鋭さを意識した最小化技術に基づいてよい。鋭さを意識した最小化技術において、損失関数は、訓練タスクに基づく従来の損失と、ミニマの形状に基づくさらなる損失とを含んでよい。このさらなる損失は、一様に低い損失値を有する近傍にあるパラメータを求める。言い換えると、鋭い形状のミニマと比べて、より良好な一般化をもたらすものと考えられる、より平坦なミニマが、求められる。勾配の決定は、パラメータの変更されたバージョンを決定すべく勾配上昇ステップを実行すること、およびパラメータに関連付けられた勾配を決定すべく、パラメータの変更されたバージョンに基づいて勾配下降ステップを実行することを含んでよい。勾配上昇ステップは、訓練データアイテムの現在のバッチのサブセットに基づいて実行されてよい。例えば、現在のバッチにおける訓練データアイテムの1/5が、使用されてよい。適応勾配クリッピング技術と併せて使用される場合、バッチのサブセットを使用することが、上昇ステップに関してバッチにおける訓練データアイテムのすべてを使用することと均等のパフォーマンスをもたらすことが判明している。このため、はるかに低い計算費用で同じ利益が実現されることが可能である。分散型訓練システムにおいて使用される場合、勾配上昇ステップにおける勾配は、異なる処理ユニット上のレプリカの間で同期を要求しない。勾配上昇ステップ、および生成された、変更されたパラメータは、処理ユニットにローカルに保たれることが可能であり、勾配降下ステップは、ローカルの変更されたパラメータに対して実行されることが可能である。より少ない処理ユニットを備えた分散型システム、または単一処理ユニットシステムに関して勾配累積を介して同じ効果が実現されることが可能である。鋭さを意識した最小化に関するさらなる詳細は、参照によりその全体が本明細書に組み込まれている、https://openreview.net/forum?id=6Tm1mposlrMにおいて入手可能な、Foret他、「Sharpness-aware minimization for efficiently improving generalization」、9th International Conference on Learning Representations、ICLR、2021年において見ることができる。
図1を再び参照すると、ニューラルネットワーク訓練システム100が、さらなる訓練データアイテムを生成すべく訓練データセット110を増強するように構成されてよい。さらに、または代替として、受け取られる訓練データセット110は、変更されていない訓練データアイテムのセットを、変更された訓練データアイテムと一緒に含む増強された訓練データセットであってよい。
適応勾配クリッピング技術によってもたらされる強化された安定性は、タスクパフォーマンスを低下させることなしに、強力な増強が使用されることを可能にする。使用されてよい1つの例示的なデータ増強技術は、「RandAugment」と呼ばれる。RandAugmentに関する詳細は、参照によりその全体が本明細書に組み込まれている、Cubuk他、「Randaugment: Practical automated data augmentation with a reduced search space」、Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops、702-703頁、2020年において見ることができる。しかし、簡単に述べると、画像データに対して、RandAugmentは、アイデンティティ、自動コントラスト、均等化、回転、ソラリゼーション、彩色、ポスタリゼーション、コントラスト、明度、シャープネス、せん断、および平行移動を含む画像変換のセレクションを提供する。訓練データアイテムのモダリティに依存して、適宜、他のセットの変換が、使用されてよいことが認識されよう。訓練データアイテムの変更されたバージョンは、1つまたは複数の変換をランダムに選択することによって生成されてよい。一実施例において、4つの変換が、適応勾配クリッピング技術を用いてニューラルネットワークを訓練する際に使用されるように、変更された訓練データアイテムを生成すべく、訓練データアイテムに対して順次に適用されるようにランダムに選択される。
さらに、または代替として、他のデータ増強技術が、使用されてよい。例えば、変更された訓練データアイテムは、第1の訓練データアイテムの一部分を選択すること、および変更された訓練データアイテムを生成すべく、第2の訓練データアイテムにおける対応する部分を、第1の訓練データアイテムからの選択された部分で置き換えることによって生成されてよい。選択された部分のロケーションおよびサイズは、ランダムに選択されてよい。単一の部分の代わりに、複数の部分が選択されて、変更された訓練データアイテムを生成すべく置き換えるために使用されてよい。画像データの事例において、その部分は、画像パッチであってよい。
このようにして変更された訓練データアイテムには、変更された訓練データアイテムに存在する第1の訓練データアイテムと第2の訓練データアイテムの比率に基づいてラベルが割り当てられてよい。例えば、第1の訓練データアイテムの選択された部分が、変更された訓練データアイテムの40%を構成し、第2の訓練データアイテムが、残りの60%を構成する場合、変更された訓練データアイテムに関するラベルは、第1の訓練データアイテムに関連付けられたクラスに関して0.4であってよく、第2の訓練データアイテムに関連付けられたクラスに関して0.6であってよい。類似したデータ増強技術において、第1の訓練データアイテムの選択された部分は、空白にされてよく、すなわち、ピクセル値は、0値に、もしくは黒を表す値に設定されてよく、またはランダムノイズで置き換えられてよい。
適応勾配クリッピング技術とともに使用するのに適した別の例示的なデータ増強技術は、第1の訓練データアイテムおよび第2の訓練データアイテムを補間することによって変更された訓練データアイテムを生成することを含む。補間は、線形補間であってよい。変更された訓練データアイテムには、第1の訓練データアイテムおよび第2の訓練データアイテムの補間重み付けに基づいてラベルが割り当てられてよい。
一実装形態において、訓練データアイテムのバッチに関して、RandAugmentが、バッチにおける訓練データアイテムのすべてに適用されてよく、部分選択/置換え技術が、バッチにおける訓練データアイテムの半分に適用されてよく、補間技術が、そのバッチに関するさらなる訓練データアイテムを生成すべく訓練データアイテムの残りの半分に適用されてよい。前述したとおり、適応勾配クリッピング方法によってもたらされる強化された安定性は、タスクパフォーマンスを低下させることなしに強力な増強が使用されることを可能にする。このため、異なるデータ増強技術の組合せが、タスクパフォーマンスを向上させるために有益である可能性がある。タスクパフォーマンスは、より強力なデータ増強とともに漸進的に向上可能であることが観察されている。通常のバッチ正規化されたニューラルネットワークは、より強力なデータ増強を使用することから利益を得ることがなく、一部の事例において、パフォーマンスを損なう可能性がある。
受け取られるニューラルネットワークパラメータ105は、事前訓練されたニューラルネットワークのパラメータであってよく、ニューラルネットワーク訓練システム100は、ニューラルネットワークをさらに訓練するのに使用されてよい。例えば、ニューラルネットワークは、関心対象の特定のタスクに対するさらなる訓練、および/または関心対象の特定のデータセットを用いたさらなる訓練に先立って、異なるデータセットに対する訓練、および/または異なる訓練目的での訓練を受けていてよい。このため、ニューラルネットワーク訓練システム100は、転移学習の脈絡において使用されてよい。一実施例において、ニューラルネットワークは、18,000のクラスからの約3億のラベル付きの画像を含むデータセットに対して事前訓練される。次に、ニューラルネットワークは、ImageNetデータセット上の画像認識のために微調整される。事前訓練段と微調整段はともに、ニューラルネットワーク訓練システム100および適応勾配クリッピング技術を使用して実行されてよい。
適応勾配クリッピング技術は、深層残差ニューラルネットワークアーキテクチャを有するニューラルネットワークに適用されてよい。残差ニューラルネットワークアーキテクチャは、残差ブロックを備え、前述したとおり、適応勾配クリッピング技術を使用して、残差ブロックは、正規化層なしであってよい。残差ブロックは、畳み込み動作、プーリング動作、ならびに/あるいは他の線形動作および非線形動作などの動作を、ただし、バッチ正規化動作を含むことなく、含んでよい。
畳み込み層において、勾配ノルムおよびパラメータノルムが、チャネル次元と、空間的次元とを含むファンイン範囲にわたって計算されてよい。適応勾配クリッピング技術は、ネットワークのすべての層に適用されてよい。しかし、最終的な出力層は、除外されてよく、最初の畳み込み層もまた、除外されてよい。
図4は、ノーマライザフリーのニューラルネットワークであってよい残差ニューラルネットワークアーキテクチャ400の概略図を提示する。残差ニューラルネットワーク400は、「ステム」405と呼ばれる1つまたは複数の隠れ層の初期のセットを備える。ステムの後に続いて、残差ニューラルネットワーク400は、「バックボーン」410と呼ばれる隠れ層の別のセットを備える。最後に、残差ニューラルネットワーク400は、分類層などの、実行されているタスクに特有であってよい1つまたは複数の層415のさらなるセットを備える。
残差ニューラルネットワーク400のバックボーン410は、繰り返す複数の残差ブロックを備えてよい。各残差ブロックは、同一のシーケンスの動作(ニューラルネットワーク層のシーケンス)を含んでよく、複数の種類の残差ブロックが存在してよい。残差ブロックは、各段が一定の幅および解像度を有する残差ブロックのシーケンスを備える段になるように並べられてよい。図4において、バックボーン410は、1つの残差ブロックを有する第1番目の段410Aと、2つの残差ブロックを有する第2番目の段410Bと、6つの残差ブロックを有する第3番目の段410Cと、3つの残差ブロックを有する第4番目の段410Dとを備える。バックボーン410は、第1番目の段から始めて第4番目の段まで1:2:6:3の比で或る数の残差ブロックを備えてよい。より深度の大きいニューラルネットワークが、指定された比を保ちながら、各段における残差ブロックの数を増加させることによって構築されてよい。例えば、ニューラルネットワークは、第1番目の段に5つの残差ブロックを有してよく、第2番目の段に10の残差ブロックを有してよく、第3番目の段に30の残差ブロックを有してよく、第4番目の段に15の残差ブロックを有してよい。
各段の幅は、前の段の幅の2倍であってよい。例えば、幅は、第1番目の段において256であってよく、第2番目の段において512であってよく、第3番目の段において1024であってよく、第4番目の段において2048であってよい。代替の構成において、第3番目の段および第4番目の段の幅は、1536であってよい。例えば、幅は、第1番目の段において256であってよく、第2番目の段において512であってよく、第3番目の段と第4番目の段の両方において1536であってよい。別の実施例において、幅は、第1番目の段において256であってよく、第2番目の段において1024であってよく、第3番目の段と第4番目の段の両方において1536であってよい。遷移ブロック(図4に示されない)が、幅の変化に対処するために段の間で使用されてよい。
前述したとおり、残差ブロックは、非線形性を備えてよい。非線形性は、ガウス誤差線形ユニット(GELU)または正規化線形ユニット(ReLU)、または他の適切な非線形動作であってよい。畳み込み動作は、グループ化された畳み込みであってよい。例えば、3×3畳み込みのグループ幅は、128であってよい。
残差ブロックは、ボトルネック残差ブロックであってよい。例示的なボトルネック残差ブロック500が、図5に示される。ボトルネック残差ブロック500は、ボトルネックを形成するようにチャネルの数を低減する1×1畳み込み層505を備える。例えば、チャネルの数は、半分にされてよい。第1のグループ化された畳み込み層510、および第2のグループ化された畳み込み層515が、ボトルネック内に存在する。通常のボトルネックは、ボトルネック内の1つの畳み込み層だけから成る。第2の畳み込み層をボトルネックに含めることが、訓練時間にほとんど影響を及ぼすことなく、タスクパフォーマンスを向上させ得ることが判明している。図5において、ボトルネックは、2つの3×3グループ化された畳み込み層510、515を備える。チャネルの数を復元するさらなる1×1畳み込み層520が、備えられる。非線形性(図5に示されない)が、畳み込み動作のうちの1つまたは複数の後に続いてよい。
また、残差ブロック500は、2つのスケーリングパラメータ、β525およびα530も含む。βパラメータ525は、残差ブロック500の入力をダウンスケーリングし、入力の分散に基づいてよい。分散は、解析的に決定されてよい。残差ブロック500の残差ブランチの最終的な活性化(ボトルネックを含むパス)は、αスカラパラメータ530によってスケーリングされてよい。
スケーリングパラメータ525および530を用いて、残差ブロック500は、hi+1=hi+αfi(hi/βi)の形態の関数を実装してよく、ここで、hiは、第i番目の残差ブロック500に対する入力を表し、fi()は、第i番目の残差ブランチによって計算される関数を表す。関数は、すべてのiに関してVar(fi(z))=Var(z)であるように、初期設定を保存する分散となるようにパラメータ化されてよい。スカラα530は、0.2であってよい。スカラβi525は、第i番目の残差ブロックに対する入力の標準偏差を予測することによって決定されてよく、
であり、ここで、遷移ブロックの場合を除いて、Var(hi+1)=Var(hi)+α2であり、遷移ブロックに関しては、スキップパスが、ダウンスケーリングされた入力(hi/βi)に対して作用し、予期される分散は、遷移ブロックの後、hi+1=1+α2にリセットされる。さらなる詳細は、参照によりその全体が本明細書に組み込まれている、Brock他、「Characterizing signal propagation to close the performance gap in unnormalized resnets」、9th International Conference on Learning Representations、ICLR、2021年において見ることができる。
残差ブロック500の畳み込み層の重みは、スケーリングされた重み標準化を受けてよい。すなわち、その重みは、その層における重みの平均および標準偏差に基づいて再パラメータ化されてよい。スケーリングされた重み標準化に関係するさらなる詳細は、参照によりその全体が本明細書に組み込まれている、Brock他、「Characterizing signal propagation to close the performance gap in unnormalized resnets」、9th International Conference on Learning Representations、ICLR、2021年において見ることができる。
残差ブロックは、スクイーズアンドエクサイト層をさらに備えてよい。スクイーズアンドエクサイト層は、以下のシーケンスの関数、すなわち、グローバル平均プーリング、全結合線形関数、スケーリングされた非線形関数、第2の全結合線形関数、シグモイド関数、および線形スケーリングに応じて入力活性化を処理してよい。例えば、その層の出力は、2σ(FC(GELU(FC(pool(h)))))×hであってよく、ここで、σは、シグモイド関数であり、FCは、全結合線形関数であり、poolは、グローバル平均プーリングであり、hは、入力活性化である。スカラ倍数2が、信号分散を維持すべく使用されてよい。一実施例において、スクイーズアンドエクサイト層は、最終の1×1畳み込み層520の後に、α530でスケーリングすることに先立って備えられる。
残差ブロックは、残差ブロックの残差ブランチの終わりに学習可能なスカラ利得をさらに備えてよい。学習可能なスカラは、0の値で初期設定されてよい。学習可能なスカラは、前述したスカラα530に加えてであってよい。
前述したとおり、残差ニューラルネットワークは、バックボーンの段の間に遷移ブロックを備えてよい。遷移ブロックは、図5に示されるボトルネック残差ブロック500に類似した形態を有してよい。しかし、第1の3×3グループ化された畳み込み層510が、ストライド値を増加させるように変更されてよく、例えば、畳み込み動作は、出力活性化の幅を変えるために2というストライドを使用してよい。さらに、スキップパス(ボトルネック層をバイパスするパス)は、プーリング層と、幅を変える1×1畳み込み層とを備えてよい。また、スキップパスは、残差ブロック500におけるようにβスケーリング525の前にではなく、βスケーリング525の後に分岐するように変更されてもよい。
次に、図6を参照すると、残差ニューラルネットワーク(破線)に基づくパフォーマンスの最も優れた画像認識ニューラルネットワークモデルの代表的なサンプルと比較して、前述した技術を使用して訓練された例示的なノーマライザフリーのニューラルネットワーク(実線)を比較する画像認識精度に対する訓練潜時のプロットが示される。より詳細には、NFNet-F0からNFNet-F5までのラベルが付けられた前述の技術を使用して訓練された例示的なノーマライザフリーのニューラルネットワークが、図5に示されるとおりボトルネック残差ブロックを備える。例示的な各ニューラルネットワークが、前述したとおり1:2:6:3の比で4段のバックボーンを有する。F0ニューラルネットワークは、最も少ない数の残差ブロック、すなわち、それぞれの段において1、2、6、および3の残差ブロックを有するベースネットワークである。その後に続く各ネットワークは、その比における次の整数値を有し、すなわち、F1ニューラルネットワークは、それぞれの段において2、4、12、および6の残差ブロックを有し、F2ニューラルネットワークは、それぞれの段において3、6、18、および9の残差ブロックを有するといった具合である。各段の幅は、第1番目の段から始めて第4番目の段まで[256、512、1536、1536]である。
図6におけるプロットは、32のデバイスと、各デバイス上に32の訓練データアイテムのバッチサイズとを有するTPUv3を使用して単一の訓練ステップを実行するのに要求される観察された実時間の5000の訓練ステップにわたる中央値として測定された訓練潜時を示す。ニューラルネットワークは、ImageNetトップ1精度ベンチマークを使用して評価される。
図6から見て取ることができるとおり、例示的なノーマライザフリーのニューラルネットワークは、訓練するのがより効率的でもありながら、より高い画像認識精度をもたらす。
前述したとおり、適応勾配クリッピング技術は、特定のタスクを実行するようにニューラルネットワークを訓練するために使用されてよく、その実施例が、後段で説明される。
ニューラルネットワークは、任意の種類のデジタルデータ入力を受け取り、その入力に基づいて任意の種類の得点出力、分類出力、または回帰出力を生成するように構成され得る。
例えば、ニューラルネットワークに対する入力が、画像、または画像から抽出された特徴である場合、所与の画像に関してニューラルネットワークによって生成される出力は、各得点が、その画像がそのカテゴリに属する物体の画像を包含することの推定される尤度を表す、物体カテゴリのセットの各カテゴリに関する得点であってよい。すなわち、ニューラルネットワークは、画像/物体認識タスクを実行してよい。また、ニューラルネットワークは、検出された物体の画像におけるロケーションの指標を出力としてもたらしてもよく、そのため、画像セグメント化を実行してよい。
別の実施例として、ニューラルネットワークに対する入力が、1つの言語におけるテキストのシーケンスである場合、ニューラルネットワークによって生成される出力は、各得点が、その別の言語におけるそのテキストが入力テキストのその別の言語への適切な翻訳であることの推定される尤度を表す、別の言語におけるテキストのセットの各セットに関する得点であってよい。
別の実施例として、ニューラルネットワークに対する入力が、口頭の発話を表すシーケンスである場合、ニューラルネットワークによって生成される出力は、各得点が、そのテキストがその発話に関する正しい転記であることの推定される尤度を表す、テキストのセットの各テキストに関する得点であってよい。
より一般的には、ニューラルネットワークは、言語モデリングシステム、画像処理システム、またはアクション選択システムにおいて使用されてよい。ニューラルネットワークは、教師あり学習タスクおよび教師なし学習タスクのために使用されてよい。例えば、教師あり学習タスクは、画像処理タスク、音声認識タスク、自然言語処理タスク、語認識タスク、または光学文字認識タスクなどの分類タスクを含んでよい。教師なし学習タスクは、エージェントが、1つまたは複数の目標を実現すべく1つまたは複数の現実の環境またはシミュレートされた環境と対話する、強化学習タスクを含んでよい。
ニューラルネットワークへの入力データは、例えば、画像データ、動画/ビデオデータ、動きデータ、音声データ、オーディオデータ、電子文書、環境の状態を表すデータ、および/またはアクションを表すデータのうちの1つまたは複数を含んでよい。例えば、画像データは、カラーピクセル値データまたはモノクロピクセル値データを含んでよい。そのような画像データは、カメラまたはLIDARセンサなどの画像センサからキャプチャされてよい。オーディオデータは、波形を定義する時間領域および/または周波数領域における一連の値などのオーディオ波形を定義するデータを含んでよく、波形は、自然言語における音声を表してよい。電子文書データは、自然言語における語を表すテキストデータを含んでよい。環境の状態を表すデータは、例えば、姿勢データおよび/または位置/速度/加速度データなどの、ロボットもしくは乗り物の状態を特徴づけるデータ、または感知される電流信号および/または温度信号などの感知される電子信号などの、産業プラントもしくはデータセンタの状態を特徴づけるデータを含め、任意の種類のセンサデータを含んでよい。アクションを表すデータは、例えば、位置制御データ、速度制御データ、加速度制御データ、および/またはトルク制御データ、あるいは産業プラントもしくはデータセンタにおける装置の1つまたは複数のアイテムの動作を制御するためのデータを含んでよい。これらのデータは、一般に、現実の環境、または仮想の、例えば、シミュレートされた環境と関係してよい。
ニューラルネットワークの出力データも同様に、任意の種類のデータを含んでよい。例えば、分類システムにおいて、出力データは、入力データアイテムに関するクラスラベルを含んでよい。回帰タスクにおいて、出力データは、連続的な変数の、例えば、ロボット、乗り物、データセンタもしくはプラントなどの電子システムまたは電気機械システムを制御するための制御変数の値を予測してよい。画像またはオーディオデータに対して動作する回帰タスクの別の実施例において、出力データは、データにおける1つまたは複数のロケーション、例えば、物体のロケーション、もしくは物体のバウンディングボックスの1つまたは複数のコーナのロケーション、あるいはオーディオ波形における音特徴の時間ロケーションを定義してよい。強化学習システムにおいて、出力データは、例えば、アクションを表すデータを含んでよく、前述したとおり、そのアクションは、環境において動作するエージェント、例えば、ロボットまたは乗り物などの機械エージェントによって実行されることになる。
アクションを表すデータは、例えば、アクションに関するアクション値(Q値)を定義するデータ、または確率分布がアクションを決定すべくサンプリングされる場合に確率分布をパラメータ化するデータ、または例えば、連続的なアクション空間において、アクションを直接に定義するデータを含んでよい。このため、強化学習システムにおいて、ニューラルネットワークは、アクション選択ポリシーに関する確率分布を直接にパラメータ化してよく、またはニューラルネットワークは、アクション値関数(Q値)の値を推定するように学習してよい。ニューラルネットワークがアクション値関数(Q値)の値を推定するように学習する事例において、多数のメモリ、およびそれぞれの出力ネットワークが、利用可能な各アクションに関してQ値をもたらすべく共通の埋め込みネットワークを共有してよい。
トランスフォーマニューラルネットワークは、或る種の自己注意型のフィードフォワードシーケンスモデルである。トランスフォーマニューラルネットワークは、エンコーダと、デコーダとを備える。エンコーダは、入力シーケンスを符号化にマップする。デコーダは、出力シーケンスをもたらすべくその符号化を処理する。入力シーケンスおよび出力シーケンスの例が、後段で与えられる。エンコーダとデコーダはともに、現在の時間ステップに関してシーケンスの最も関係のある部分に焦点を合わせるべくエンコーダ/デコーダを誘導する自己注意を使用し、リカレント接続の必要に取って代わる。トランスフォーマモデルのさらなる詳細は、参照によりその全体が本明細書に組み込まれている、https://papers.nips.cc/paper/7181-attention-is-all-you-need.pdfにおいて入手可能なVaswani他、「Attention Is All You Need」、31st Conference on Neural Information Processing Systems(NIPS 2017年)、Long Beach、CA、USAにおいて見ることができる。
トランスフォーマニューラルネットワークは、入力シーケンス(すなわち、複数の入力位置の各位置においてそれぞれの入力を各々が有する入力のシーケンス)を受け取り、出力または出力シーケンスを生成すべくその入力シーケンスを処理するように構成されてよい。
例えば、トランスフォーマニューラルネットワークは、環境と対話する強化学習エージェントによって実行されるべきアクションを選択する強化学習システムの一部分であってよい。他の種類のニューラルネットワークが、強化学習システムと併せて使用されてよいことが認識されよう。エージェントが環境と対話すべく、強化学習システムは、環境の様々な状態を特徴づける観察のシーケンスを含む入力シーケンスを受け取ってよい。システムは、受け取られた入力シーケンスに応答して、すなわち、シーケンスにおける最後の観察に応答して、エージェントによって実行されるべき1つまたは複数のアクションを指定する出力を生成してよい。すなわち、観察のシーケンスは、環境の現在の状態を特徴づける現在の観察と、環境の過去の状態を特徴づける1つまたは複数の履歴上の観察とを含む。
一部の実装形態において、環境は、現実世界の環境であり、エージェントは、現実世界の環境と対話する機械エージェントである。例えば、エージェントは、特定のタスクを達成すべく、例えば、環境において関心対象の物体を位置特定すべく、または環境における指定されたロケーションに関心対象の物体を移動すべく、または環境における指定された行き先までナビゲートすべく、環境と対話するロボットであってよく、あるいはエージェントは、環境の中の移動する自律的な、または半自律的な陸上の、空の、または海の乗り物であってよい。
これらの実装形態において、観察は、例えば、画像、物体位置データ、および環境と対話するときのエージェントとして観察をキャプチャするためのセンサデータ、例えば、画像センサ、距離センサ、または位置センサからの、あるいはアクチュエータからのセンサデータ、のうちの1つまたは複数を含んでよい。
例えば、ロボットの事例において、観察は、ロボットの現在の状態を特徴づけるデータ、例えば、関節位置、関節速度、関節力、トルクもしくは加速度、例えば、重力補償されたトルクフィードバック、およびロボットによって保持されるアイテムの大域的姿勢もしくは相対的姿勢のうちの1つまたは複数を含んでよい。
ロボットまたは他の機械エージェントまたは乗り物の事例において、観察は、エージェントの1つまたは複数の部分の位置、線速度もしくは角速度、力、トルクもしくは加速度、および大域的姿勢もしくは相対的姿勢のうちの1つまたは複数を同様に含んでよい。観察は、1次元、2次元、または3次元において定義されてよく、絶対的観察および/または相対的観察であってよい。
また、観察は、例えば、モータ電流もしくは温度信号などの感知された電子信号、および/または、例えば、カメラもしくはLIDARセンサからの、画像データもしくはビデオデータ、例えば、エージェントのセンサからのデータ、または環境においてエージェントから分離して配置されたセンサからのデータを含んでもよい。
電子エージェントの事例において、観察は、電流センサ、電圧センサ、パワーセンサ、温度センサ、および他のセンサなどの、プラントもしくはサービス施設の部分を監視する1つまたは複数のセンサからのデータ、ならびに/あるいは設備の電子アイテムおよび/または機械アイテムの機能を表す電子信号を含んでよい。
これらの実装形態において、アクションは、ロボットを、例えば、ロボットの関節に関するトルクを制御する制御入力、またはより高レベルの制御コマンド、あるいは自律的な、もしくは半自律的な陸上の、空の、または海の乗り物を、例えば、乗り物の制御表面もしくは他の制御要素に対するトルクを制御する制御入力、または高レベルの制御コマンドであってよい。
言い換えると、アクションは、例えば、ロボットの1つまたは複数の関節、または別の機械エージェントの部分に関する位置データ、速度データ、または力/トルク/加速度データを含むことが可能である。アクションデータは、さらに、または代替として、モータ制御データなどの電子制御データを含んでよく、または、より一般的には、それらの制御が環境の観察される状態に影響を及ぼす、環境内の1つまたは複数の電子デバイスを制御するためのデータを含んでよい。例えば、自律的な、もしくは半自律的な陸上の、空の、または海の乗り物の事例において、アクションは、乗り物のステアリングなどのナビゲーション、および運動、例えば、制動および/または加速を制御するアクションを含んでよい。
一部の実装形態において、環境は、シミュレートされた環境であり、エージェントは、シミュレートされた環境と対話する1つまたは複数のコンピュータとして実装される。シミュレートされた環境においてエージェントを訓練することは、現実世界の環境においてエージェントを訓練することに関連するリスク、例えば、悪い具合に選択されたアクションを実行することに起因するエージェントに対する損害を回避しながら、エージェントが大量のシミュレートされた訓練データから学習することを可能にしてよい。シミュレートされた環境において訓練されたエージェントは、その後、現実世界の環境において展開されてよい。
例えば、シミュレートされた環境は、ロボットまたは乗り物のシミュレーションであってよく、強化学習システムは、そのシミュレーションに対して訓練されてよい。例えば、シミュレートされた環境は、動きシミュレーション環境、例えば、運転シミュレーションまたは飛行シミュレーションであってよく、エージェントは、動きシミュレーションの中を移動するシミュレートされた乗り物である。これらの実装形態において、アクションは、シミュレートされたユーザまたはシミュレートされた乗り物を制御する制御入力であってよい。
別の実施例において、シミュレートされた環境は、ビデオゲームであってよく、エージェントは、ビデオゲームをするシミュレートされたユーザであってよい。
さらなる実施例において、環境は、各状態がタンパク質鎖の、あるいは1つまたは複数の中間体もしくは前駆体化学物質のそれぞれの状態であるように、化学合成環境、またはタンパク質フォールディング環境であってよく、エージェントは、タンパク質鎖のフォールディングをどのように行うか、または化学物質をどのように合成するかを決定するためのコンピュータシステムである。この実施例において、アクションは、タンパク質鎖のフォールディングを行うための可能なフォールディングアクション、または前駆体化学物質/中間体を組み立てるためのアクションであり、実現されるべき結果は、例えば、タンパク質が安定しているように、かつタンパク質が特定の生物学的機能を実現するようにタンパク質のフォールディングを行うこと、または化学物質に関する妥当な合成経路をもたらすことを含んでよい。別の実施例として、エージェントは、人間対話なしに自動的にシステムによって選択されたタンパク質フォールディングアクションを実行する、または制御する機械エージェントであってよい。観察は、タンパク質の状態の直接または間接の観察を含んでよく、かつ/またはシミュレーションから導出されてよい。
同様に、環境は、各状態が潜在的な化学工業薬品のそれぞれの状態であるように、薬品設計環境であってよく、エージェントは、化学工業薬品の要素および/または化学工業薬品のための合成経路を決定するためのコンピュータシステムである。薬品/合成は、例えば、シミュレーションにおいて、その薬品に関する目標から導出された報酬に基づいて設計されてよい。別の実施例として、エージェントは、その薬品の合成を実行する、または制御する機械エージェントであってよい。
一部のアプリケーションにおいて、エージェントは、タスクを実行すべく自律的に動作するように、かつ/または他のソフトウェアエージェントもしくは人々とともに動作するように構成された固定の、またはモバイルのソフトウェアエージェント、すなわち、コンピュータプログラムであってよい。例えば、環境は、集積回路ルーティング環境であってよく、システムは、ASICなどの集積回路の相互接続線をルーティングするためのルーティングタスクを実行すべく学習するように構成されてよい。その場合、報酬(または費用)は、相互接続抵抗、キャパシタンス、インピーダンス、損失、速度、もしくは伝播遅延などの1つまたは複数のルーティングメトリック、幅、厚さ、もしくは形状などの物理的な線パラメータ、および設計規則に依存してよい。観察は、構成要素位置および構成要素相互接続の観察であってよく、アクションは、例えば、構成要素位置もしくは構成要素配向を定義する構成要素配置アクション、および/または相互接続ルーティングアクション、例えば、相互接続選択アクションおよび/または相互接続配置アクションを含んでよい。このため、ルーティングタスクは、構成要素を配置すること、すなわち、集積回路の構成要素の位置および/または配向を決定すること、および/または構成要素間の相互接続のルーティングを決定することを含んでよい。ルーティングタスクが完了すると、集積回路、例えば、ASICが、決定された配置および/またはルーティングにより製造されてよい。あるいは、環境は、データパケット通信ネットワーク環境であってよく、エージェントは、ネットワークの観察に基づいて通信ネットワークにわたってデータのパケットをルーティングするルータであってよい。
一般に、シミュレートされた環境の事例において、観察は、前述した観察、または前述した種類の観察のうちの1つまたは複数の観察のシミュレートされたバージョンを含んでよく、アクションは、前述したアクション、または前述した種類のアクションのうちの1つまたは複数のアクションのシミュレートされたバージョンを含んでよい。
他の一部のアプリケーションにおいて、エージェントは、例えば、データセンタにおける、または送電網システムもしくは配水網システムにおける、あるいは製造プラントもしくはサービス施設における、設備のアイテムを含む現実世界の環境におけるアクションを制御してよい。その場合、観察は、プラントまたは施設の動作と関係してよい。例えば、観察は、設備による電力使用量または水使用量の観察を含んでよく、あるいは発電制御もしくは配電制御の観察を含んでよく、あるいはリソースの使用量または廃棄物産出の観察を含んでよい。エージェントは、例えば、リソース使用量を低減することによって、効率を高めるべく、および/または例えば、廃棄物を減らすことによって、環境における動作の環境的影響を低減すべく環境におけるアクションを制御してよい。アクションは、プラント/施設の設備のアイテムを制御する、またはプラント/施設の設備のアイテムに動作条件を課すアクション、および/または、例えば、プラント/施設の構成要素を調整するように、もしくはオンにする/オフにするように、プラント/施設の動作における設定の変更をもたらすアクションを含んでよい。
さらなる一部のアプリケーションにおいて、環境は、現実世界の環境であり、エージェントは、例えば、モバイルデバイス上の、および/またはデータセンタにおける計算リソースにわたるタスクの分配を管理する。これらの実装形態において、アクションは、特定の計算リソースにタスクを割り当てることを含んでよい。
一般に、環境が現実世界の環境のシミュレートされたバージョンである前述したアプリケーションにおいて、システム/方法がシミュレーションにおいて訓練されると、システム/方法は、その後、現実世界の環境に適用されてよい。すなわち、システム/方法によって生成される制御信号は、現実世界の環境からの観察に応答して、現実世界の環境においてタスクを実行すべくエージェントを制御するのに使用されてよい。オプションとして、システム/方法は、現実世界の環境からの1つまたは複数の報酬に基づいて、現実世界の環境において訓練を継続してよい。
オプションとして、前述の実装形態のいずれにおいても、任意の所与の時間ステップにおける観察は、環境を特徴づけるのに有益である可能性がある前の時間ステップからのデータ、例えば、前の時間ステップにおいて実行されたアクション、前の時間ステップにおいて受け取られた報酬などを含んでよい。
別の実施例において、トランスフォーマニューラルネットワークは、ニューラル機械翻訳システムの一部であってよい。すなわち、入力シーケンスが、元言語における語のシーケンス、例えば、文または句である場合、出力は、その入力シーケンスの目標言語への翻訳、すなわち、元言語の語のシーケンスを表す、目標言語における語のシーケンスであってよい。
別の実施例として、トランスフォーマニューラルネットワークは、音声認識システムの一部であってよい。すなわち、入力シーケンスが、口頭の発話を表すオーディオデータのシーケンスである場合、出力は、発話を表す書記素、文字、または語のシーケンスであってよく、すなわち、入力シーケンスの転記である。別の実施例として、ニューラルネットワークに対する入力が、口頭の発話を表すシーケンスである場合、ニューラルネットワークによって生成される出力は、特定の語または句(「ホットワード」)が発話において話されたかどうかを示すことが可能である。別の実施例として、ニューラルネットワークに対する入力が、口頭の発話を表すシーケンスである場合、ニューラルネットワークによって生成される出力は、発話が話された自然言語を識別することが可能である。このため、一般に、ネットワーク入力は、オーディオ処理タスクを実行するためのオーディオデータを含んでよく、ネットワーク出力は、例えば、語もしくは句を識別する、またはオーディオをテキストに変換する、オーディオ処理タスクの結果をもたらしてよい。
別の実施例として、トランスフォーマニューラルネットワークは、自然言語処理システムの一部であってよい。例えば、入力シーケンスが、元言語における語のシーケンス、例えば、文または句である場合、出力は、元言語における入力シーケンスの要約、すなわち、入力シーケンスと比べて、より少ない語を有するが、入力シーケンスの基本的な意味を保持するシーケンスであってよい。別の実施例として、入力シーケンスが、質問を形成する語のシーケンスである場合、出力は、その質問に対する答えを形成する語のシーケンスであること/そのようなシーケンスを定義することが可能である。別の実施例として、タスクは、テキストの何らかの特性を予測する出力を生成すべく何らかの自然言語におけるテキストのシーケンスに対して動作する自然言語理解タスク、例えば、含意関係タスク、言い換えタスク、テキスト類似性タスク、感情分析タスク、文完成タスク、文法性タスクなどであることが可能である。あるいは、自然言語からの自動コード生成(自然言語からのTensorFlowコードスニペットの自動生成)。別の実施例として、タスクは、入力が、自然言語におけるテキスト、または自然言語におけるテキストの特徴であり、ネットワーク出力が、スペクトログラムを定義する、または自然言語において話されているテキストのオーディオを定義する他のデータを含む、テキスト-音声変換タスクであることが可能である。
別の実施例として、タスクは、入力が、テキストのシーケンスであり、出力が、テキストの別のシーケンス、例えば、テキストの入力シーケンスの完成、入力シーケンスにおいて問われた質問に対する応答、またはテキストの第1のシーケンスによって指定されたトピックについてのテキストのシーケンスである、テキスト生成タスクであることが可能である。別の実施例として、テキスト生成タスクに対する入力は、テキスト以外の入力、例えば、画像であることが可能であり、出力シーケンスは、入力について記述するテキストであることが可能である。
別の実施例として、トランスフォーマニューラルネットワークは、コンピュータ支援された医療診断システムの一部であってよい。例えば、入力シーケンスは、電子医療記録からのデータのシーケンスであることが可能であり、出力は、予測される治療のシーケンスであることが可能である。
別の実施例として、トランスフォーマニューラルネットワークは、画像処理システムの一部であってよい。例えば、入力シーケンスは、画像、すなわち、画像からの色値のシーケンスであることが可能であり、出力は、画像またはビデオについて記述するテキストのシーケンスであることが可能である。別の実施例として、入力シーケンスは、テキストのシーケンス、または異なるコンテキストであることが可能であり、出力は、そのコンテキストについて描写する画像であることが可能である。
敵対的生成ネットワーク(GAN)は、ジェネレータネットワークとディスクリミネータネットワークが同時に訓練される敵対的プロセスを使用して訓練される生成モデルである。訓練中、ジェネレータネットワークは、ディスクリミネータネットワークが、現実の訓練データアイテムであることと対比される、ジェネレータネットワークによって生成されたものであることを認識しようと試みるサンプルを生成する。ディスクリミネータネットワークによる判定の結果は、ジェネレータネットワークが、その生成能力を、生成されたサンプルが現実の訓練データアイテムと区別され得ないことを目的として向上させるように学習信号として使用される。同時に、ディスクリミネータネットワークもまた、その検出能力を向上させるように訓練され、このため、2つのネットワークは、ジェネレータネットワークの能力を向上させるべく連携して働く。さらなる詳細が、参照によりその全体が本明細書に組み込まれている、https://arxiv.org/pdf/1406.2661.pdfにおいて入手可能な、Goodfellow他、「Generative Adversarial Networks」、arXiv preprint arXiv: 1406.2661、2014年において見ることができる。
ジェネレータは、静止画像または動画を表すデータであってよいデータアイテムを生成してよく、その場合、データアイテムに包含される個々の数値は、ピクセル値、例えば、ピクセルの1つまたは複数の色チャネルの値を表してよい。ディスクリミネータネットワークを訓練する(その結果、ディスクリミネータネットワークと合同でジェネレータネットワークを訓練する)ために使用される訓練画像は、カメラによってキャプチャされた現実世界の画像であってよい。
例えば、一実装形態において、ユーザが、画像配信(例えば、ジェネレータネットワークが生成されるのに用いられた訓練画像のデータベースを反映する、例えば、現実世界の画像を反映する配信)から画像(静止画像または動画)を生成すべく、訓練されたジェネレータネットワークを使用してよい。
代替として、データアイテムは、音響信号を表すデータ、例えば、オーディオ波形の振幅値であってよい(例えば、自然言語であってよく、この場合における訓練例は、例えば、人間の話者の音声からマイクロフォンによって記録された、自然言語のサンプルであってよい)。別の可能性において、データアイテムは、テキストデータ、例えば、機械翻訳タスクにおけるテキストストリング、あるいは語および/またはサブワード単位(言葉)の他の表現であってよい。このため、データアイテムは、1次元、2次元、またはより高い次元であってよい。
ジェネレータネットワークは、データアイテムを生成するための目標を表す、ジェネレータネットワークに入力された条件ベクトル(目標データ)を条件とするデータアイテムを生成してよい。目標データは、生成されたデータアイテムに対して同一の種類もしくはモダリティのデータを表しても、異なる種類もしくはモダリティのデータを表してもよい。例えば、画像データを生成するように訓練される場合、目標データは、画像のうちの1つの画像のラベルまたはクラスを定義してよく、その場合、生成されたデータアイテムは、その種類(例えば、アフリカ象)の例示的な画像を含んでよい。あるいは、目標データは、画像、または画像の符号化を含んでよく、生成されたデータアイテムは、類似した別の画像を定義してよく、例えば、顔の画像に対して訓練される場合、目標データは、個人の顔の符号化を含んでよく、その場合、ジェネレータネットワークは、異なる姿勢/照明条件で類似した顔を表すデータアイテムを生成してよい。別の実施例において、目標データは、被写体の画像を示して、視点の動き/変化を定義するデータを含んでよく、ジェネレータネットワークは、その新たな視点からの被写体の画像を生成することが可能である。
代替として、目標データは、テキストストリングもしくは口頭の文、またはこれらの符号化を含んでよく、ジェネレータネットワークは、そのテキストもしくは音声に対応する画像を生成してよく(テキスト-画像合成)、あるいは、その逆であってもよい。代替として、目標データは、テキストストリングもしくは口頭の文、またはこれらの符号化を含んでよく、その場合、ジェネレータネットワークは、異なる言語において対応するテキストストリングもしくは口頭の文を生成してよい。また、システムは、特に所与の1つまたは複数の前のビデオフレームにおいて、ビデオを自己回帰的に生成してもよい。
別の実装形態において、ジェネレータネットワークは、音響データ、例えば、音声を類似した様態で生成してよい。このことは、オーディオデータ、および/またはテキストデータなどの他のデータを条件としてよい。一般に、目標データは、生成されたデータアイテムの局所的特徴および/または大域的特徴を定義してよい。例えば、オーディオデータの場合、ジェネレータネットワークは、一連の目標データ値に基づいて出力のシーケンスを生成してよい。例えば、目標データは、特定の個人の音声の音響、または音声スタイル、または話者の身元、または言語特定を定義する情報を含んでよい、大域的特徴(ジェネレータネットワークが、データアイテムのシーケンスを生成すべき場合、同一である)を含んでよい。目標データは、さらに、または代替として、オプションとして、イントネーションデータを伴う、入力テキストから導出された言語学的特徴を含んでよい、局所的特徴(すなわち、データアイテムのシーケンスに関して同一でない)を含んでよい。
別の実施例において、目標データは、物理的物体の動きまたは状態、例えば、ロボットアームのアクションおよび/または状態を定義してよい。その場合、ジェネレータネットワークは、物理的物体に関連付けられた現実の、または仮想のカメラによって見られる未来の画像シーケンスもしくはビデオシーケンスを予測するデータアイテムを生成するのに使用されてよい。そのような実施例において、目標データは、カメラによって見られる1つまたは複数の前の画像フレームもしくはビデオフレームを含んでよい。このデータは、強化学習のために、例えば、視覚環境における計画を容易化するために有用であり得る。より一般的には、システムは、確率的計画/探索のために直接に使用されてよい確率密度(すなわち、分布)を符号化することを学習する。
さらなる実施例において、ジェネレータネットワークは、ノイズの多い画像もしくは不完全な画像を定義する目標データを用いることによってノイズ除去、ブレ除去、画像完成、その他などの画像処理タスクのため、変更された画像を定義する目標データを用いることによる画像変更タスクのため、および例えば、ジェネレータネットワークが自動エンコーダにおいて使用される場合に、画像圧縮のために用いられてよい。システムは、画像以外を表す信号を処理するのに同様に使用されてよい。
入力目標データおよび出力データアイテムは、一般に、任意の種類のデジタルデータであってよい。このため、別の実施例において、入力目標データおよび出力データアイテムはそれぞれ、自然言語における文を定義するトークンを含んでよい。その場合、ジェネレータネットワークは、例えば、機械翻訳のために、または潜在的値および/またはさらなるデータにおいて表現される概念を表す文を生成すべくシステムにおいて使用されてよい。潜在的値は、さらに、または代替として、生成されたテキストのスタイルまたは感情を制御するのに使用されてよい。さらなる実施例において、入力および出力データアイテムは、音声データ、ビデオデータ、または時系列データを一般に含んでよい。
別の実施例において、ジェネレータネットワークは、別の機械学習システムを訓練するためのデータアイテムのさらなる例を生成するのに使用されてよい。例えば、ジェネレータネットワークとディスクリミネータネットワークが、データアイテムのセットに対して合同で訓練されてよく、次に、ジェネレータネットワークが、訓練データセットにおけるデータアイテムと類似した新たなデータアイテムを生成するのに使用される。潜在的値のセットは、潜在的値の潜在的分布からサンプリングすることによって決定されてよい。ジェネレータネットワークが、さらなるデータ、例えば、ラベルを条件として訓練されている場合、新たなデータアイテムは、さらなるデータ、例えば、ジェネレータネットワークに与えられたラベルを条件として生成されてよい。このようにして、さらなるラベル付きのデータアイテムが、例えば、乏しいラベルの付いていない訓練データアイテムを補足すべく生成されてよい。
1つまたは複数のコンピュータのシステムが、特定の動作またはアクションを実行するように構成されることは、作動時に、システムに、その動作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せが、システムにインストールされていることを意味する。1つまたは複数のコンピュータプログラムが、特定の動作またはアクションを実行するように構成されることは、その1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に、その動作またはアクションを実行させる命令を含むことを意味する。
本明細書において説明される主題および機能上の動作の実施形態は、本明細書において開示される構造、およびそれらの構造上の均等物、またはこれらのうちの1つまたは複数のものの組合せを含む、デジタル電子回路において、有形で実現されたコンピュータソフトウェアもしくはコンピュータファームウェアにおいて、コンピュータハードウェアにおいて実装されることが可能である。本明細書において説明される主題の実施形態は、1つまたは複数のコンピュータプログラムとして、すなわち、データ処理装置によって実行されるように、またはデータ処理装置の動作を制御するように有形の非一過性のプログラム媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装されることが可能である。代替として、またはさらに、プログラム命令は、データ処理装置によって実行されるように適切な受信装置に送信するために情報を符号化するように生成された、人工的に生成された伝播される信号、例えば、機械によって生成された電気信号、光信号、または電磁信号の上に符号化されることが可能である。コンピュータ記憶媒体は、機械可読のストレージデバイス、機械可読の記憶基板、ランダムアクセスメモリデバイスもしくはシリアルアクセスメモリデバイス、またはこれらのうちの1つまたは複数の記憶媒体の組合せであることが可能である。しかし、コンピュータ記憶媒体は、伝播される信号ではない。
「データ処理装置」という術語は、例として、プログラマブルプロセッサ、コンピュータ、または多数のプロセッサもしくは多数のコンピュータを含む、データを処理するためのすべての種類の装置、デバイス、機械を包含する。その装置は、専用のロジック回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことが可能である。また、その装置は、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらのうちの1つまたは複数のものの組合せを構成するコードを含むことも可能である。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードと呼ばれてもよい、またはそのようなものとして説明されてもよい)は、コンパイルされる言語もしくは解釈される言語、または宣言型言語もしくは手続き型言語を含め、任意の形態のプログラミング言語で書かれることが可能であり、スタンドアローンのプログラムとして、あるいはモジュール、構成要素、サブルーチン、またはコンピューティング環境において使用するのに適切な他のユニットとして展開されることを含め、任意の形態で展開されることが可能である。コンピュータプログラムは、ファイルシステムにおけるファイルに対応してよいが、対応しなくてもよい。プログラムは、他のプログラムまたは他のデータを保持するファイルの一部分に、例えば、マークアップ言語文書に記憶された1つまたは複数のスクリプトに、当該のプログラムに専用の単一のファイルに、あるいは多数の協調型のファイル、例えば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイルに記憶されることが可能である。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置された、もしくは多数のサイトに分散されて、通信ネットワークによって互いに接続された多数のコンピュータの上で実行されるべく展開されることが可能である。
本明細書において使用される「エンジン」または「ソフトウェアエンジン」とは、入力とは異なる出力をもたらすソフトウェアによって実装された入力/出力システムを指す。エンジンは、ライブラリ、プラットフォーム、ソフトウェア開発キット(「SDK」)、またはオブジェクトなどの機能の符号化されたブロックであることが可能である。各エンジンは、1つまたは複数のプロセッサと、コンピュータ可読媒体とを含む任意の適切な種類の計算デバイス上に、例えば、サーバ、携帯電話、タブレットコンピュータ、ノートブックコンピュータ、音楽プレーヤ、電子書籍リーダ、ラップトップコンピュータもしくはデスクトップコンピュータ、PDA、スマートフォン、あるいは他の固定デバイスもしくはポータブルデバイスの上に実装されることが可能である。さらに、それらのエンジンのうちの2つ以上が、同一の計算デバイス上に実装されても、異なる計算デバイス上に実装されてもよい。
本明細書において説明されるプロセスおよび論理フローは、入力データを操作すること、および出力を生成することによって機能を実行すべく1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルコンピュータによって実行されることが可能である。また、プロセスおよび論理フローは、専用のロジック回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)もしくはASIC(特定用途向け集積回路)によって実行されることも可能であり、装置が、専用のロジック回路、例えば、FPGAもしくはASICとして実装されることも可能である。例えば、プロセスおよび論理フローは、グラフィクス処理ユニット(GPU)によって実行されることが可能であり、装置が、GPUとして実装されることも可能である。
コンピュータプログラムを実行するのに適したコンピュータは、例えば、汎用のマイクロプロセッサもしくは専用のマイクロプロセッサ、またはその両方、あるいは他の任意の種類の中央処理装置に基づくことが可能であるものを含む。一般に、中央処理装置は、読取り専用メモリまたはランダムアクセスメモリから、あるいはその両方から命令およびデータを受け取る。コンピュータの不可欠な要素は、命令を実行するため、または執行するための中央処理装置と、命令およびデータを記憶するための1つまたは複数のメモリデバイスとである。一般に、コンピュータは、データを記憶するための1つまたは複数の大容量ストレージデバイス、例えば、磁気ディスク、光磁気ディスク、または光ディスクも含む、あるいはそのような大容量ストレージデバイスからデータを受け取るように、または大容量ストレージデバイスにデータを転送するように、あるいはその両方を行うように動作上、結合される。しかし、コンピュータは、そのようなデバイスを有さなくてもよい。さらに、コンピュータは、別のデバイス、例えば、いくつかだけを挙げると、携帯電話、携帯情報端末(PDA)、モバイルオーディオプレーヤもしくはモバイルビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブルストレージデバイス、例えば、ユニバーサルシリアルバス(USB)フラッシュドライブに埋め込まれることが可能である。
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、例として、半導体メモリデバイス、例えば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、例えば、内部ハードディスクもしくはリムーバブルディスク、光磁気ディスク、ならびにCD ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、不揮発性媒体、および不揮発性メモリデバイスを含む。プロセッサおよびメモリは、専用のロジック回路によって補足されること、または専用のロジック回路に組み込まれることが可能である。
ユーザとの対話を可能にすべく、本明細書において説明される主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、例えば、CRT(陰極線管)モニタもしくはLCD(液晶ディスプレイ)モニタ、ならびにユーザがコンピュータに入力を与えることができる、キーボードおよびポインティングデバイス、例えば、マウスもしくはトラックボールを有するコンピュータ上に実装されることが可能である。他の種類のデバイスが、ユーザとの対話を可能にするのに使用されることも可能であり、例えば、ユーザに与えられるフィードバックは、任意の形態の知覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであることが可能であり、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む、任意の形態で受け取られることが可能である。さらに、コンピュータは、ユーザによって使用されるデバイスに文書を送ること、およびそのようなデバイスから文書を受け取ることによって、例えば、ユーザのクライアントデバイス上のウェブブラウザに、そのウェブブラウザから受け取られた要求に応答して、ウェブページを送ることによって、ユーザと対話することが可能である。
本明細書において説明される主題の実施形態は、バックエンド構成要素を含むコンピューティングシステムにおいて、例えば、データサーバとして、またはミドルウェア構成要素を含むコンピューティングシステムにおいて、例えば、アプリケーションサーバとして、またはフロントエンド構成要素を含むコンピューティングシステムにおいて、例えば、ユーザが本明細書において説明される主題の実装形態と対話することができるグラフィカルユーザインターフェースまたはウェブブラウザを有するクライアントコンピュータとして、あるいは1つまたは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、またはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムにおいて実装されることが可能である。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、例えば、通信ネットワークによって互いに接続されることが可能である。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、例えば、インターネットを含む。
コンピューティングシステムは、クライアントと、サーバとを含むことが可能である。クライアントとサーバは、一般に、互いに遠隔であり、通常、通信ネットワークを介して対話する。クライアントとサーバの間の関係は、それぞれのコンピュータ上で実行され、互いにクライアント-サーバ関係を有するコンピュータプログラムのお陰で生じる。
本明細書は、多くの特定の実装の詳細を包含するが、これらは、発明の範囲に対する限定としても、請求の対象とされる可能性がある範囲に対する限定としても解釈されるべきではなく、むしろ、特定の発明の特定の実施形態に特有である可能性がある特徴の説明として解釈されるべきである。また、別々の実施形態の脈絡において本明細書において説明されるいくつかの特徴は、単一の実施形態において組合せで実装されることも可能である。逆に、単一の実施形態の脈絡において説明される様々な特徴が、多数の実施形態において別々に、または任意の適切な部分的組合せで実装されることも可能である。さらに、特徴は、或る組合せで作用するものとして前段で説明される可能性があり、当初、そのようなものとして請求される可能性さえあるものの、請求される組合せからの1つまたは複数の特徴は、一部の事例において、その組合せから取り除かれることが可能であり、請求される組合せは、部分的組合せ、または部分的組合せの変形を対象とすることが可能である。
同様に、動作は、特定の順序で図面に描かれるが、このことは、望ましい結果を実現するのに、そのような動作が、図示される特定の順序で実行されるべきことも、順次の順序で実行されるべきことも、例示されるすべての動作が実行されるべきことも要求するものと理解されるべきではない。いくつかの状況において、マルチタスキングおよび並列処理が、有利である可能性がある。さらに、前段で説明される実施形態における様々なシステムモジュールおよびシステム構成要素の分離は、すべての実施形態においてそのような分離が要求されるものと理解されるべきではなく、説明されるプログラム構成要素とシステムは、一般に、単一のソフトウェア製品として一緒に統合されること、または多数のソフトウェア製品としてパッケージ化されることが可能であるものと理解されるべきである。
主題の特定の実施形態について説明されてきた。他の実施形態が、添付の特許請求の範囲に含まれる。例えば、特許請求の範囲に記載されるアクションは、異なる順序で実行されることが可能であり、それでも、望ましい結果を実現することが可能である。一例として、添付の図面に描かれるプロセスは、望ましい結果を実現するのに、図示される特定の順序も、順次の順序も必ずしも要求しない。一部の実装形態において、マルチタスキングおよび並列処理が、有利である可能性がある。