(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-15
(54)【発明の名称】クロスバッチ正規化
(51)【国際特許分類】
G06N 3/08 20060101AFI20221208BHJP
【FI】
G06N3/08
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022521710
(86)(22)【出願日】2020-10-15
(85)【翻訳文提出日】2022-04-11
(86)【国際出願番号】 US2020055805
(87)【国際公開番号】W WO2021076772
(87)【国際公開日】2021-04-22
(32)【優先日】2019-10-15
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】518156417
【氏名又は名称】ズークス インコーポレイテッド
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】シミン グオ
(72)【発明者】
【氏名】イーサン ミラー プロノヴォスト
(72)【発明者】
【氏名】コナー ジョナサン スーフー
(72)【発明者】
【氏名】チージュン タン
(57)【要約】
機械学習モデルを訓練するための技法が本明細書に説明される。例えば、技法は、ニューラルネットワークの訓練の間、第1の層の出力に基づいてクロスバッチ正規化層の出力を生成するクロスバッチ正規化層を実装することを含むことがある。訓練は、訓練例のローカルバッチと少なくとも1つのリモートバッチとを含むグローバルバッチの訓練例のローカルバッチに基づいて行われることがある。クロスバッチ正規化層の出力は、グローバルバッチに対してグローバル正規化統計に基づいて決定された第1の層の出力の正規化されている成分を含むことがある。上記の技法は、分散マシン間にてバッチを同期させることによって、上記マシンを介してニューラルネットワークを訓練するのに用いられることがある。
【特許請求の範囲】
【請求項1】
ニューラルネットワークに第1の処理ユニットによって、ローカルバッチとして例のセットの第1の部分を入力することと、
前記第1の部分に少なくとも部分的に基づいて、前記ニューラルネットワークの第1のニューラルネットワーク層から第1の層の出力を受信することと、
前記第1の層の出力の成分に少なくとも部分的に基づいて、ローカルバッチの正規化統計量として、前記ローカルバッチに対してローカルバッチ平均に少なくとも部分的に基づく第1の値とローカルバッチ分散に少なくとも部分的に基づく第2の値とを決定することと、
リモートバッチを用いて前記ニューラルネットワークのコピーを訓練するリモートコンピューティングデバイスに前記ローカルバッチの正規化統計量を送信することと、
リモートコンピューティングシステムから、リモートバッチに含まれる例の前記セットの第2の部分に関連付けられたリモートバッチの正規化統計量を受信することと、
前記第1の値と前記リモートバッチの正規化統計量とに基づいてグローバルバッチ平均を決定することと、
前記第2の値と前記リモートバッチの正規化統計量とに少なくとも部分的に基づいてグローバルバッチ分散を決定することと、
前記グローバルバッチ平均および前記グローバルバッチ分散を用いて、前記第1の層の出力の前記成分に関連付けられた正規化されている出力の正規化されている成分を生成することと
を備えることを特徴とする方法。
【請求項2】
前記ローカルバッチ分散と前記ローカルバッチ平均の二乗との和と、前記グローバルバッチ平均の二乗との差のアグリゲーションに少なくとも部分的に基づいて前記グローバルバッチ分散を計算すること
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記ローカルバッチにおける前記ニューラルネットワークの訓練のバックプロパゲーションの間、損失の勾配に基づいてグローバルスケーリングパラメーターおよびグローバルシフトパラメーターを決定することと、
前記グローバルスケーリングパラメーターおよび前記グローバルシフティングパラメーターに基づいて、前記正規化されている出力の前記正規化されている成分をスケーリングしシフトすることによって、バッチ正規化層の出力の変換された成分を生成することと
をさらに含むことを特徴とする請求項1または2に記載の方法。
【請求項4】
前記バッチ正規化層の出力に関する損失の勾配を集めることによってローカル中間シフトパラメーターを決定することと、
前記リモートバッチに対してリモート中間シフトパラメーターを受信することと、
前記グローバルシフトパラメーターに関する損失の勾配として、前記ローカル中間シフトパラメーターおよび前記リモート中間シフトパラメーターを集めることと
をさらに含むことを特徴とする請求項3に記載の方法。
【請求項5】
前記バッチ正規化層の出力と前記正規化されている出力の前記正規化されている成分との関数として損失の前記勾配のドット積としてローカル中間スケーリングパラメーターを決定することと、
前記リモートバッチに対してリモート中間スケーリングパラメーターを受信することと、
前記グローバルスケーリングパラメーターに関する損失の勾配として、前記ローカル中間スケーリングパラメーターおよび前記リモート中間スケーリングパラメーターを集めることと
をさらに含むことを特徴とする請求項4に記載の方法。
【請求項6】
グローバルシフトパラメーターに関する損失の勾配とグローバルスケーリングパラメーターに関する損失の勾配とに基づいて、前記第1の層の出力に関する損失の勾配を決定すること
をさらに含むことを特徴とする請求項1または2に記載の方法。
【請求項7】
前記第1の部分は、第1の数の訓練例を含み、
前記第2の部分は、前記第1の数とは異なる第2の数の訓練例を含む
ことを特徴とする請求項1ないし6のいずれか一項に記載の方法。
【請求項8】
前記リモートバッチの正規化統計量は、前記リモートバッチに対して、リモートバッチ平均およびリモートバッチ分散を含むことを特徴とする請求項1ないし7のいずれか一項に記載の方法。
【請求項9】
前記第1の値は、前記ローカルバッチの重み付けされたローカルバッチ平均を含み、
前記第2の値は、前記ローカルバッチの前記ローカルバッチ平均および前記ローカルバッチ分散の二乗の重み付けされた和を含み、前記重み付けされたローカルバッチ平均の前記重み付けは、前記グローバルバッチにわたる訓練例の数に相対的な前記ローカルバッチにおける訓練例の数に基づく
ことを特徴とする請求項1ないし8のいずれか一項に記載の方法。
【請求項10】
1つまたは複数のプロセッサーによって実行されると、1つまたは複数のプロセッサーに、請求項1ないし9のいずれか一項に記載の方法を行わせる命令を格納することを特徴とする1つまたは複数の非一時的なコンピューター読取り可能媒体。
【請求項11】
1つまたは複数のプロセッサーと、
前記1つまたは複数のプロセッサーによって実行可能な命令を格納する1つまたは複数のコンピューター読取り可能媒体と
を備え、前記命令は、実行されると、前記1つまたは複数のプロセッサーに、
ニューラルネットワークに、ローカルバッチとして例のセットの第1の部分を入力することと、
前記第1の部分に少なくとも部分的に基づいて、前記ニューラルネットワークの第1のニューラルネットワーク層から第1の層の出力を受信することと、
前記第1の層の出力の成分に少なくとも部分的に基づいて、前記ローカルバッチに対してローカルバッチ平均およびローカルバッチ分散を決定することと、
リモートコンピューティングシステムから、リモートバッチに含まれる例の前記セットの第2の部分に関連付けられたリモートバッチの正規化統計量を受信することと、
前記ローカルバッチ平均と前記リモートバッチの正規化統計量とに基づいてグローバルバッチ平均を決定することと、
前記ローカルバッチ分散と前記リモートバッチの正規化統計量とに少なくとも部分的に基づいてグローバルバッチ分散を決定することと、
前記グローバルバッチ平均および前記グローバルバッチ分散を用いて、前記第1の層の出力の前記成分に関連付けられた正規化されている出力の正規化されている成分を生成することと
を含む作動を行わせることを特徴とするシステム。
【請求項12】
前記作動は、
前記ローカルバッチにおける前記ニューラルネットワークの訓練のバックプロパゲーションの間、損失の勾配に基づいてグローバルスケーリングパラメーターおよびグローバルシフトパラメーターを決定することと、
前記グローバルスケーリングパラメーターおよび前記グローバルシフティングパラメーターに基づいて、前記正規化されている出力の前記正規化されている成分をスケーリングしシフトすることによって、バッチ正規化層の出力の変換された成分を生成することと
をさらに含むことを特徴とする請求項11に記載のシステム。
【請求項13】
前記作動は、
前記バッチ正規化層の出力に関する損失の勾配を集めることによってローカル中間シフトパラメーターを決定することと、
前記バッチ正規化層の出力と前記正規化されている出力の前記正規化されている成分との関数として損失の前記勾配のドット積としてローカル中間スケーリングパラメーターを決定することと、
前記リモートバッチに対してリモート中間シフトパラメーターおよびリモート中間スケーリングパラメーターを受信することと、
前記グローバルシフトパラメーターに関する損失の勾配として、前記ローカル中間シフトパラメーターおよび前記リモート中間シフトパラメーターを集めることと、
前記グローバルスケーリングパラメーターに関する損失の勾配として、前記ローカル中間スケーリングパラメーターおよび前記リモート中間スケーリングパラメーターを集めることと
をさらに含むことを特徴とする請求項12に記載のシステム。
【請求項14】
前記作動は、グローバルシフトパラメーターの関数としての損失の勾配とグローバルスケーリングパラメーターの関数としての損失の勾配とに基づいて、前記第1の層の出力の関数として損失の勾配を決定することをさらに含む請求項11に記載のシステム。
【請求項15】
前記第1の部分は第1の数の訓練例を含み、前記第2の部分は前記第1の数とは異なる第2の数の訓練例を含むことを特徴とする請求項11ないし14のいずれか一項に記載のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
本PCT国際特許出願は、本明細書に参照により完全に組み入れられる開示、2019年10月15日出願の米国特許出願第16/653,656号の優先権の利益を主張する。
【0002】
たとえばニューラルネットワークなどの機械学習アルゴリズムは、多くの場合、訓練データ(training data)を考慮することによってタスクを行うように学習する。例えば、以前に分類と関連づけられた画像データを人工ニューラルネットワークに入れて、分類を認識するニューラルネットワークを訓練することがある。上記のニューラルネットワークは、多くの場合、1つまたは複数の層の非線形ユニットを用いて、受け取った入力に対する出力を予測する。いくつかのニューラルネットワークは、出力層に加えて、1つまたは複数の隠れ層を含む。各隠れ層の出力は、ネットワークの次の層、すなわち次の隠れ層または出力層への入力として使用される。ネットワークの各層は、受け取った入力から、それぞれのパラメーターのカレント値にしたがって出力を生成する。
【0003】
詳細な説明は、添付の図面を参照して説明される。図面において、参照符号の最も左の数字(複数可)は、参照符号が最初に現れる図面を特定する。別の図面における同一の参照符号の使用は、同様のまたはまったく同じのコンポーネントまたは特徴を示す。
【図面の簡単な説明】
【0004】
【
図1】本明細書に述べられる技法が実装され得る例示的な環境を示す図である。
【
図2】本明細書に説明される技法を実装するための例示的なシステムのブロック図を描く。
【
図3】ニューラルネットワークの訓練の間クロスバッチ正規化を利用する例示的なニューラルネットワークシステムを示す図である。
【
図4】
図4Aは、訓練例のグローバルバッチに関するニューラルネットワークの訓練の間、クロスバッチ正規化層の出力を生成するための例示的な処理を示す図であり、
図4Bは、訓練例のグローバルバッチに対するクロスバッチ正規化層を含むニューラルネットワークの訓練のための例示的な処理を示す図である。
【
図5】自律車両のユースケースという状況にてクロスバッチ正規化層を含むニューラルネットワークの訓練のための例示的な処理を示す図である。
【発明を実施するための形態】
【0005】
本開示は、機械学習アルゴリズムを訓練するための技法に向けられる。例えば、技法は、複数のコンピューティングデバイスにわたって並列にニューラルネットワークを訓練するのに使用されることがある。より詳細には、本明細書に開示されるシステムおよび技法は、複数のローカルバッチ(local batch)を含む入力のグローバルバッチ(global batch)に対して、クロスバッチ正規化層(cross batch normalization layer)における入力のローカルバッチ間の正規化統計(normalization statistics)の同期を考慮に入れることがある。
【0006】
ニューラルネットワークの各層は、受け取った入力(例えば、ニューラルネットワークへの初期入力か前の層からの入力かのいずれか)から出力を生成することがある。ニューラルネットワーク層のいくつかまたはすべては、ニューラルネットワーク層に対するパラメーターのセットのカレント値にしたがって、入力から出力を生成することがある。例えば、いくつかの層は、受け取った入力から出力を生成する一部として、受け取った入力にカレントのパラメーター値の行列を乗算することがある。
【0007】
次に、出力は、ニューラルネットワークの次の層に出力されるまたは渡される。こうして、ニューラルネットワーク層は、ニューラルネットワークシステムが受け取ったニューラルネットワークの入力を集合的に処理して、受け取ったニューラルネットワークの各入力に対してそれぞれのニューラルネットワークの出力を生成する。
【0008】
多くの例では、人工ニューラルネットワークは、1つまたは複数のタスクを行うように訓練されることがある。訓練されることがある機械学習モデルのいくつかの例は、画像データのオブジェクトを分類する、音声データの緊急車両を識別する、ライダー(lidar)データからバウンディングボックスを生成する、オブジェクトのロケーションを予測する、航空券をいつ購入するか決定する、組織サンプルのがんを識別することがあるなど、ニューラルネットワークを含むことがある。
【0009】
上記の訓練は、フォワードプロパゲーション(forward propagation)およびバックワードプロパゲーション(backwards propagation)を含む。人工ニューラルネットワークのフォワードプロパゲーションでは、データは、人工ニューラルネットワークに入力されて、人工ニューラルネットワーク内の各層の活性化(activation)を計算し、最後に出力であり得る。次に、バックプロパゲーション(back propagation)(バックワードパス(backwards pass)またはバックワードプロパゲーションともいわれる)の間、出力と望ましい出力(例えば、グランドトゥルース)との間の差を表す誤差は、人工ニューラルネットワークの層を通じてバックワードに伝播されて、ニューラルネットワーク層に対してパラメーターのセットのカレント値を(例えば、勾配降下を用いて)調整することがある。バックワードプロパゲーションは、フォワードプロパゲーションの1つまたは複数の演算に関連付けられた1つまたは複数の勾配演算を実行して、1つまたは複数の勾配を生成することを含むことがある。
【0010】
上述のように、本明細書に開示されるシステムおよび技法は、1つまたは複数のクロスバッチ正規化層を含むことがあるニューラルネットワークに関する。本明細書において、ニューラルネットワークによって処理される訓練サンプルのローカルバッチの集まりを、訓練サンプルのバッチまたはグローバルバッチと呼ぶことがある。新しい開示に従うバッチ正規化層は、そのクロスバッチ正規化層における入力のグローバルバッチから生成されたグローバル正規化統計(global normalization statistics)を用いて、入力のローカルバッチ(本明細書では、カレントバッチまたはミニ・バッチとも呼ばれる)を正規化するように動作することがある。より詳細には、本明細書は、入力のローカルバッチ間の、いくつかの例では分散学習パイプライン(distributed training pipeline)と並列に入力されるローカルバッチ間の、グローバル正規化統計の同期を説明する。例えば、上記の分散学習パイプラインは、訓練データセット(training data set)を用いてニューラルネットワークを訓練するために集合的に動作する複数のGPU(Graphics Processing Units)を含むことがある。いくつかの例では、GPUの各々は、訓練データセット全体から選択された訓練サンプルのローカルバッチを受信することがある。次に、各GPUは、訓練データのそれぞれのローカルバッチを、訓練データとしてニューラルネットワークのローカルコピーに入力することがある。
【0011】
入力のローカルバッチは、各ローカルバッチに含まれる訓練例の差のために変わることがある。例えば、訓練データは、データのセット、例えば、グランドトゥルースラベルを有する画像を含むことがある。ワーキングメモリー(例えば、GPUメモリーサイズ)における限定のために、バッチは、訓練データのセットからランダムにサンプリングされた要素を含むことがある。例えば、各ローカルバッチは、訓練セット全体からランダムに選択された10枚または20枚の画像を含むことがある。上記のように、一例にて、第1のローカルバッチの画像は、第2のローカルバッチの画像よりも多く車を含むことがある。バッチにおける変動のために、ローカルバッチ間の正規化なしに、訓練は、バックプロパゲーションされることがあるパラメーターにおける差に帰着することがある。正規化することは、バッチ間の変動を最小化するのに役立つ、扱いにくいたくさんの数を活性化が生じさせる機会を減す、および/または学習における一貫性を確実にする。
【0012】
具体的には、クロスバッチ正規化層は、訓練の間、2つの一般的な機能を行うことがある。第一に、フォワードプロパゲーションの間、クロスバッチ正規化層は、ローカルバッチの入力を訓練サンプルのグローバルバッチに正規化することがある。次に、入力の正規化されているローカルバッチは、クロスバッチ正規化層に続く層に入力されることがある。第二に、バックプロパゲーションの間、ニューラルネットワークの出力は、例えば、勾配降下およびバックプロパゲーションニューラルネットワーク訓練技法を通じて、シーケンスにおけるニューラルネットワーク層のパラメーターの値を調整するのに使用されることが可能である。より詳細には、フォワードプロパゲーションからの正規化統計は、ニューラルネットのパラメーターの値を調整することの一部、たとえばバックプロパゲーション訓練技法を行うことの一部などとして通じて、バックプロパゲーションされることがある。
【0013】
いくつかの例では、ローカルバッチの入力を正規化するために、クロスバッチ正規化層は、(1)ローカルバッチのローカルバッチ平均(local batch variance)を計算し、(2)ローカルバッチのローカルバッチ分散(local batch variance)を計算し、(3)ローカル統計(local statistics)(例えば、平均および分散)をまたはローカル統計に基づくローカル中間値(local intermediate value)を分配し、(4)クロスバッチ正規化層を実行する他のプロセッサーからリモート統計またはリモート中間値を受け取り、(5)ローカルおよびリモート統計または中間値に基づいてグローバルバッチ平均(global batch mean)およびグローバルバッチ分散(global batch variance)を計算し、(6)グローバルバッチ平均およびグローバルバッチ分散を用いてローカル入力を正規化し、(7)正規化されているローカル入力をグローバルスケールおよびシフトパラメーターによってスケーリングしシフトすることがある。
【0014】
いくつかの例では、グローバル分散は、ローカルバッチ分散とローカルバッチ平均の二乗との和と、グローバルバッチ平均の二乗との差のアグリゲーション(aggregation)に基づいて決定されることがある。ローカルバッチがサイズにて変わる例において、和は、重み付けされることがある。
【0015】
次の例は、共有値(shared value)またはクロスバッチデータがローカルバッチ平均およびローカルバッチ分散を含む場合に、グローバルバッチ分散の決定を考慮に入れる。カレントのローカルバッチ(i)のローカルバッチ平均を決定するために、ローカルバッチ平均μiは、次のとおりに計算されることがある。
【0016】
【0017】
ただし、niはi番目のローカルバッチの計数であり、
【0018】
【0019】
はi番目のローカルバッチに対して前の層からj番目の入力である。
【0020】
同様に、ローカルバッチ分散
【0021】
【0022】
は、次のとおりに計算されることがある。
【0023】
【0024】
クロスバッチ正規化層は、グローバルバッチ平均およびグローバルバッチ分散の決定に用いるためのクロスバッチデータを決定し共有することがある。
【0025】
ローカルバッチ平均およびローカルバッチ分散が分布している場合、グローバルバッチ平均μは、次のとおりに計算されることがある。
【0026】
【0027】
ただし、piは、カレントのローカルバッチ(i)の相対的なサイズ(例えば、グローバルバッチの総計数に対するカレントのローカルバッチ(i)の計数の比)である。
【0028】
次に、グローバルバッチ分散が決定されることがある。例えば、グローバルバッチ分散(例えば、σ2)は、次のように決定されることがある。
【0029】
【0030】
クロスバッチ正規化層の演算のフォワードプロパゲーションおよびバックプロパゲーションフェーズについての追加の詳細および異形は、次の図面を参照して、以下に与えられる。
【0031】
例において、本明細書に述べられるクロスバッチ正規化技法は、バッチ正規化スキームを用いない他の訓練技法と比較されるとき、訓練の速さを犠牲にすることなしに、より高い正確度を提供することがある。さらに、いくつかの例では、本明細書に述べられるクロスバッチ正規化技法は、並列に訓練することによって訓練時間を減らし、正規化データを交換することによって正確度を改善し、交換されるデータを単純化することによって、正規化の間、交換されることになるデータを減らし、および/またはバッチのサイズをパラメーターとして組み入れることによって異なるサイズのバッチ(および異なるタイプのGPU)にて訓練する能力を提供することがある。さらに、上記の技法は、例えば、メモリー、処理能力などの限定ために、別のやり方では可能ではないだろう、より大きなデータセットに基づいてネットワークを訓練することを考慮に入れる(それによって、より小さい時間量においてよりロバストに学習されたネットワークを作成する)。
【0032】
本明細書に説明される方法、装置、およびシステムは、多くのやり方において実装されることが可能である。例示的な実装は、次の図面を参照して以下に提供される。下のいくつかの例では自律車両という状況にて述べられるが、本明細書に説明される方法、装置、およびシステムは、いろいろのシステムに適用されることが可能である。一例にて、機械学習されているモデルは、上記のシステムが、様々の操縦を行うことが安全であるかどうかのインディケーションを提供することがある、操縦者制御の車両(driver-controlled vehicle)に利用されることがある。別の例では、方法、装置、およびシステムは、飛行または航海の状況にて利用されることが可能である。さらに加えて、または代わりに、本明細書に説明される技法は、(例えば、センサー(複数可)を用いてキャプチャされた)実データ、(例えば、シミュレーターによって生成された)シミュレーションデータ、またはいずれかの組み合わせを有して用いられることが可能である。
【0033】
図1は、本明細書に述べられる技法が実装され得る例示的な環境100を示す図である。特に、環境100は、第1の処理ユニット104、第2の処理ユニット106、および第2の処理ユニット106に関連付けられたメモリー108を含むコンピューティングデバイス(複数可)102を含む。第1の処理ユニット104(例えば、第1の処理ユニット104に関連付けられたプロセッサー(複数可)110)および第2の処理ユニット106は、各々、1つまたは複数のGPU、1つまたは複数のCPU、1つまたは複数のテンソル処理ユニット、1つまたは複数のニューラル処理ユニット、1つまたは複数のデジタル信号プロセッサーなどを含むことがある。多くの例では、第1の処理ユニット104はG、PUとして実装され、第2の処理ユニット106は、CPUとして実装されるが、他の構成が用いられることがある。図示されるように、第1の処理ユニット104は、プロセッサー(複数可)110およびメモリー112を含むことがある。メモリー112は、プロセッサー(複数可)110によって実行可能な訓練コンポーネント114および推論コンポーネント116を格納することがある。さらに、第1の処理ユニット104および第2の処理ユニット106は、同一のコンピューティングデバイス102に属しているとして
図1に描かれているが、上記の描写は、処理ユニットが、ローカルであり得るまたはローカルではないことがある、別々のユニットであり得るので、例示の目的のためである。
【0034】
一般に、コンピューティングデバイス102は、グローバルバッチの訓練例のローカルバッチに基づいてニューラルネットワークを並列に訓練する複数のコンピューティングデバイスの分散学習パイプラインの一部であり得る。並列訓練の間、クロスバッチデータは、コンピューティングデバイスの間にて共有され、バッチ正規化のために用いられることがある。しかしながら、他の例では、コンピューティングデバイス102は、ローカルバッチ間にてバッチ正規化を行いながら、ローカルバッチを順に処理することによって、単独において動作してニューラルネットワークを訓練することがある。以下の説明は、順次的なユースケースに対して必要に応じて追加の説明をつけて、並列のユースケースに焦点を合わせる。
【0035】
訓練コンポーネント114は、プロセッサー(複数可)110によって実行されて、訓練データ120に基づいてニューラルネットワーク118(「人工ニューラルネットワーク118」ともいわれる)を訓練することがある。訓練データ120は、さまざまなデータ、たとえば値(例えば、望ましい分類、推論、予測など)に関連付けられた画像データ、ビデオデータ、ライダーデータ、レーダーデータ、音声データ、他のセンサーデータなどを含むことがある。一般に、上記の値は、「グランドトゥルース(ground truth)」といわれることがある。例示のために、訓練データ120は、画像分類のために用いられることがあり、上記のように、自律車両によってキャプチャされ、1つまたは複数の分類に関連付けられる環境の画像を含むことがある。いくつかの例では、上記の分類は、ユーザー入力(例えば、画像が特定のタイプの物体を描くことを示すユーザー入力)に基づくことがある。いくつかの例では、上記のラベル付けされた分類(またはより一般的には、訓練データに関連付けられたラベル付けされた出力)は、グランドトゥルースといわれることがある。
【0036】
訓練の間、訓練コンポーネント114は、訓練コンポーネント114によって計算される(および少なくとも一時的にメモリー112に格納される)ローカルクロスバッチデータ126および130を、第2の処理ユニット106に関連付けられたメモリー108上に転送することがある。ローカルクロスバッチデータ126および130は、第2の処理ユニット106によって他のコンピューティングデバイス(複数可)102(リモートコンピューティングデバイスともいわれるコンピューティングデバイス134として示されているもののうちの1つ)に分配されることがあり、リモートクロスバッチデータ132は、他のコンピューティングデバイス(複数可)102から受信され、メモリー108に格納されることがある。さらに、訓練コンポーネント114は、訓練の間、クロスバッチデータ126、130、および132が必要とされるとき、第1の処理ユニット104に関連付けられたメモリー112における格納のために、リモートクロスバッチデータ132をメモリー108から検索することがある。クロスバッチデータが、値のローカルバッチ全体の代わりに少数のスカラー値であり得るので、コンピューティングデバイス102間にて転送されることになるデータ量は、非常に減らされることがある。
【0037】
推論コンポーネント116は、プロセッサー(複数可)110によって実行されてニューラルネットワーク118により新しいデータを処理し、新しいデータに関する推論をする(例えば、値を予測する、新しいデータを分類するなど)ことがある。例示のために、推論コンポーネント116は、ニューラルネットワーク118を実装して、自律車両によってキャプチャされる新しい画像におけるオブジェクトを分類することがある。ニューラルネットワーク118を実装している間、推論コンポーネント116は、バックワードプロパゲーションがニューラルネットワーク118を訓練するのに用いられるので、バックワードプロパゲーションを行わないことがある。いくつかの例では、推論コンポーネント116は、たとえば前述した自律車両など、別個のコンピューティングデバイスの一部であり得る。
【0038】
訓練コンポーネント114によって使用されるデータ(例えば、訓練データ120)および/または推論コンポーネント116によって使用されるデータ(例えば、推論のためにニューラルネットワーク118に入れるデータ)は、いろいろのデータを含むことがある。例えば、データは、1つまたは複数のセンサー、たとえばライダー(Light Detection and Ranging)データ、レーダーデータ、画像データ(マルチビュージオメトリから決定されている)、深度センサーデータ(タイムオブフライト(time of flight)、構造化光など)などからの深度データを含むことがある。いくつかの例では、コンピューティングデバイス(複数可)102は、データをデータストア例えばデータベースなどから受信する(例えば、取得する)ことがある。ここで、データストアは、データが環境内の1つまたは複数の車両または他のデバイスから受信されている長い時間をかけて、データを格納することが可能である。いくつかの例では、コンピューティングデバイス(複数可)102は、データが、バッチのやり方にて、車両から受信される1つまたは複数のログファイルにて、またはいずれかの他の時間にてキャプチャされている(例えば、リアルタイム)1つまたは複数の車両または他のデバイスからデータを受信することがある。
【0039】
いくつかの例では、コンピューティングデバイス(複数可)102は、自律車両のパーセプションシステム(perception system)に関連して動作する複数のライダーセンサーから複数のライダーデータセットを受信することがある。いくつかの例では、コンピューティングデバイス(複数可)102は、2つ以上のライダーセンサーからのデータを単一のライダーデータセット(「メタスピン」ともいわれる)に組み合わせるまたは融合することがある。いくつかの例では、コンピューティングデバイス(複数可)102は、たとえば一定の時間にわたってなど、ライダーデータの一部を処理するために抽出することがある。いくつかの例では、コンピューティングデバイス(複数可)102は、レーダーデータを受信し、レーダーデータをライダーデータと関連付けて、環境のより詳細な表現を生成することがある。一例として、データは、たとえば車、トラック、道路、建物、自転車、歩行者など都市環境における種々のオブジェクトに関連付けられたライダーデータ(例えば、ポイントクラウド)を含む。もちろん、上記のデータは、センサーデータである必要は全くない。種々の例において、訓練データは、特定の問題に対して定義された特徴量と、関連した期待される出力とを含むことがある。非限定の例として、上記のデータは、家の見込みある特価を予測するネットワークを訓練するために、関連した家の特価を有して、家の平方フィートのサイズ、ベッドルームの数、フロアの数などを含むことがある。
【0040】
図示されるように、ニューラルネットワーク118は、複数の層を含むことがある。各層は、1つまたは複数のノード(ニューロンまたはパーセプトロンともいわれる)を含むことがある。
図1の例では、ニューラルネットワーク118は、5つの層を含み、クロスバッチ正規化層122は、6つのノードを含む。しかしながら、層および/またはノードがいくらでも実装されることがあることが理解されることが可能である。例において、ニューラルネットワーク118は、
図1に例示されていないバイアスノード(複数可)を含むことがある。ノード、たとえば隠れ層に関連付けられたノードなどは、演算および重みが関連付けられることがある。1つの層における演算が実行されて、入力として次の層に(例えば、順方向グラフにおける次の層に関連付けられた演算に)与えられる活性化を生成することがある。上記の活性化は、例えば、シグモイド関数、逆正接、ReLU、双曲線逆正接、ヘビサイドなどであり得る。
【0041】
例において、ニューラルネットワーク118は、1つまたは複数のクロスバッチ正規化層(複数可)122を含むことがある。ニューラルネットワーク118における他の層がクロスバッチ正規化層122であり得るが、図示しやすいように、単一のクロスバッチ正規化層122が
図1において示される。上述したように、フォワードプロパゲーション124の間、クロスバッチ正規化層122は、ローカルバッチ入力(例えば、コンピューティングデバイス102のローカルニューラルネットワークに入力される訓練データ120に基づくクロスバッチ正規化層122への入力)を、訓練サンプルのグローバルバッチ(例えば、複数のコンピューティングデバイス102を含む分散学習パイプラインのニューラルネットによって処理される訓練サンプルのローカルバッチの集まり)へ正規化することがある。次に、入力の正規化されているローカルバッチは、クロスバッチ正規化層122に続く層に入力されることがある。バックプロパゲーション128の間、ニューラルネットワークの出力は、例えば、勾配降下およびバックプロパゲーションニューラルネットワーク訓練技法を通じて、シーケンスにおけるニューラルネットワーク層のパラメーターの値を調整するのに使用されることが可能である。さらに、フォワードプロパゲーションからの正規化統計は、ニューラルネットのパラメーターの値を調整することの一部、すなわち、バックプロパゲーション訓練技法を行うことの一部などとして通じて、バックプロパゲーションされることがある。
【0042】
クロスバッチ正規化層の動作に関する追加の詳細は、
図3-5に関して以下に提供される。
【0043】
訓練コンポーネント114および推論コンポーネント116は、メモリー112に格納され、第1の処理ユニット104によって実装されているとして
図1に例示されているが、訓練コンポーネント114および/または推論コンポーネント116は、メモリー108に格納される、および/または第2の処理ユニット106によって実装されることがある。
【0044】
コンピューティングデバイス(複数可)102は、1つまたは複数のラップトップコンピューター、デスクトップコンピューター、サーバーなどとして実装されることがある。例において、コンピューティングデバイス(複数可)102は、クラスタ、データセンター、クラウドコンピューティング環境、またはそれらの組み合わせにて構成される。一例にて、コンピューティングデバイス(複数可)102は、たとえばクライアントデバイスなどの別のコンピューティングデバイスと遠隔して動作する計算リソース、ネットワークリソース、ストレージリソースなどを含む、クラウドコンピューティングリソースを提供する。例示のために、コンピューティングデバイス(複数可)102は、アプリケーションおよび/またはサービスを構築する、展開する、および/または管理するために、クラウドコンピューティングプラットフォーム/インフラストラクチャを実装することがある。
【0045】
メモリー112および/またはメモリー108は、非一時的なコンピューター読取り可能媒体の例である。メモリー112および/または108は、本明細書に説明される方法と、種々のシステムに帰する機能とを実装するためのオペレーティングシステムおよび/または1つまたは複数のソフトウェアアプリケーション、命令、プログラム、および/またはデータを格納することがある。種々の実装において、非一時的なコンピューター読取り可能媒体は、あらゆる適切なメモリー技術を、たとえばSRAM(スタティックRAM)、SDRAM(シンクロナスDRAM)、不揮発性/フラッシュ型メモリー、またはメモリーのあらゆる他のタイプを用いて実装されることがある。本明細書に説明されるアーキテクチャ、システム、および個々の要素は、多くの他の論理的な、プログラム的な、および物理的なコンポーネントを含むことが可能であり、添付の図面に示されるそれらは、本明細書の説明に関係する単なる例である。
【0046】
いくつかの例では、メモリー112は、メモリー108とは異なる特性を有することがある。例えば、メモリー112およびメモリー108は、異なるメモリー容量、読みおよび/または書きの異なる能力(例えば、1つが読み書きを同時にする能力を有する一方、他方が読み、書きを異なる時にする能力を有する)、異なる読み/書き速度(read/write speed)、異なるサイズのメモリバス(例えば、64ビット、128ビットなど)などを有することがある。さらに、第1の処理ユニット104は、第2の処理ユニット106と異なる特性、たとえば異なる動作速度(operating speed)、異なるコア数などを有することがある。
【0047】
第2の処理ユニット106およびメモリー108は、コンピューティングデバイス(複数可)102の一部であるとして例示されているが、いくつかの例では、第2の処理ユニット106および/またはメモリー108は、他のところに位置されることがある。例えば、第2の処理ユニット106および/またはメモリー108は、コンピューティングデバイス(複数可)102と遠隔であるコンピューティングデバイスに実装されることがある。
【0048】
本明細書に述べられる技法は、種々の状況にて実装されることがある。いくつかの例では、技法は、機械学習アプリケーション、たとえばTensorFlow、PyTorch、Caffe、Caffe2などの状況にて実装される。
【0049】
図2は、本開示の態様にしたがって、本明細書に説明される技法を実装するための例示的なシステム200のブロック図である。いくつかの例では、システム200は、
図1を参照して本明細書に説明される態様の1つまたは複数の特徴、構成要素、および/または機能性を含むことがある。いくつかの態様では、システム200は、
図1の車両202およびコンピューティングデバイス(複数可)102を含むことが可能である。車両202は、車両コンピューティングデバイス204、1つまたは複数のセンサーシステム206、1つまたは複数の通信接続208、および1つまたは複数のドライブシステム210を含むことがある。
【0050】
車両コンピューティングデバイス204は、1つまたは複数のプロセッサー212と、1つまたは複数のプロセッサー212と通信接続されたコンピューター読取り可能媒体214とを含むことがある。例示された例にて、車両202は、自律車両であるが、しかしながら、車両202は、どんな他の種類の車両でも、またはどんな他のシステム(例えば、ロボティックシステム、カメラ可能スマートフォンなど)でもあることが可能だろう。例示される例にて、車両コンピューティングデバイス204のコンピューター読取り可能媒体214は、パーセプションシステム216、予測システム218、プランニングシステム220、1つまたは複数のシステムコントローラー222を、センサーデータ224および他のデータ226も同様に、格納する。例示の目的のためにコンピューター読取り可能媒体214に属しているとして
図2に描かれているが、パーセプションシステム216、予測システム218、プランニングシステム220、1つまたは複数のシステムコントローラー222は、センサーデータ224および他のデータ226も同様に、さらに加えて、または代わりに、車両202にアクセス可能である(例えば、車両202から離れたコンピューター読取り可能媒体によって、格納されるまたは他のやり方にてアクセス可能である)ことがあることは想定される。
【0051】
少なくとも1つの例にて、パーセプションシステム216は、センサーシステム206に関連付けられた1つまたは複数の時間間隔インターバルの間、キャプチャされるセンサーデータ224(例えば、レーダーデータ)を受信するように構成されることがある。パーセプションシステム216は、物体の検出、分割、および/または分類を行う機能性を含むことが可能である。いくつかの例において、パーセプションシステム216は、車両202に最も近い実体の存在(presence)、および/または実体の種類(例えば、車、歩行者、サイクリスト、動物、建物、木、路面、縁石、歩道、不明など)として実体の分類を示す処理されたセンサーデータを提供することが可能である。追加または代替の例において、パーセプションシステム216は、検出される実体(例えば、トラッキングされる物体)および/または実体が置かれる環境に関連付けられた1つまたは複数の特性を示す処理されたセンサーデータを提供することが可能である。いくつかの例において、実体に関連付けられた特性は、限定されないが、x位置(グローバルおよび/またはローカルポジション)、y位置(グローバルおよび/またはローカルポジション)、z位置(グローバルおよび/またはローカルポジション)、向き(例えば、ロール、ピッチ、ヨー)、実体の種類(例えば、分類)、実体の速度、実体の加速度、実体の範囲(大きさ)などを含むことが可能である。環境に関連付けられた特性は、限定されないが、環境における別の実体の存在、環境における別の実体の状態、時刻、曜日、季節、気象条件、闇/光のインディケーションなどを含むことが可能である。処理されたセンサーデータは、予測システム218および/またはプランニングシステム220に出力されることがある。
【0052】
プランニングシステム220は、物理環境を通過して横切るために従う車両に対してパスを決定することがある。例えば、プランニングシステム220は、種々のルートおよび軌道および種々の詳細レベルを決定することがある。例えば、プランニングシステム220は、現在のロケーションから目標のロケーションまで進むルートを決定することがある。本解説の目的のために、ルートは、2つのロケーション間を進むためのウェイポイントのシーケンスであり得る。
【0053】
少なくとも1つの例にて、車両コンピューティングデバイス204は、車両202の操舵、推進、制動、安全、エミッター、通信、および他のシステムを制御するように構成されることが可能である1つまたは複数のシステムコントローラー222を含むことが可能である。今述べたシステムコントローラー(複数可)222は、車両202のドライブシステム(複数可)210および/または他のコンポーネントの対応するシステムに対して通信するおよび/または制御することがある。
【0054】
いくつかの場合、本明細書に述べられる構成要素のいくつかまたはすべての様相は、どんなモデル、アルゴリズム、および/または機械学習アルゴリズムでも含むことが可能である。例えば、いくつかの場合、コンピューター読取り可能媒体214におけるコンポーネント、たとえばパーセプションシステム216、予測システム218、および/またはプランニングシステム220などは、1つまたは複数のニューラルネットワークとして実装されることがある。例として、パーセプションシステム216は、画像データに基づいて歩行者(または他の物体)の速さ、軌道、および/または他の特性を予測するように訓練された機械学習されているモデル(例えば、ニューラルネットワーク)を含むことがある。
【0055】
少なくとも1つの例にて、センサーシステム(複数可)206は、ライダーセンサー、レーダーセンサー、超音波トランスデューサー、ソナーセンサー、ロケーションセンサー(例えば、GPS、方位磁針など)、慣性センサー(例えば、慣性測定ユニット(IMU)、加速度計、磁力計、ジャイロスコープなど)、カメラ(例えば、RGB、IR、強度、深度、タイムオブフライトなど)、マイクロフォン、ホイールエンコーダー、環境センサー(例えば、温度センサー、湿度センサー、光センサー、圧力センサーなど)、1つまたは複数のタイムオブフライト(time of flight:ToF)センサーなどを含むことが可能である。センサーシステム(複数可)206は、今述べたまたは他の種類のセンサーの各々に関する複数のインスタンスを含むことが可能である。たとえば、ライダーセンサーは、車両202の角、前面、後面、側面、および/または上面に位置される個々のライダーセンサーを含むことがある。別の例として、カメラセンサーは、車両202の外部および/または内部のあちこちに、種々のロケーションに配置された複数のカメラを含むことが可能である。センサーシステム(複数可)206は、入力を、車両コンピューティングデバイス204に提供することがある。さらに加えて、または代わりに、センサーシステム(複数可)206は、1つまたは複数のネットワーク228を介して、センサーデータを、特定の周波数において、予め決められた一定の時間が経つと、ほぼリアルタイムにおいてなど、1つまたは複数のリモートコンピューティングデバイス(複数可)に送ることが可能である。
【0056】
さらに、車両202は、車両202と、他のローカルまたはリモートのコンピューティングデバイス(複数可)との間の通信を可能にする通信接続(複数可)208を含むことも可能である。例として、通信接続(複数可)208は、車両202の他のローカルコンピューティングデバイス(複数可)との、および/またはドライブシステム(複数可)210との通信を容易にすることがある。さらに、通信接続(複数可)208は、車両202に、他の近くのコンピュータデバイス(複数可)(例えば、他の近くの車両、交通信号機など)と通信することを可能にすることもある。さらに、通信接続(複数可)208は、車両202に、リモート遠隔操作コンピューティングデバイス、または他のリモートサービスと通信できるようにもする。
【0057】
通信接続(複数可)208は、車両コンピューティングデバイス204を、別のコンピューティングデバイス(例えば、コンピューティングデバイス(複数可)102)に、および/またはネットワークたとえばネットワーク(複数可)228などに接続するための物理および/または論理インターフェイスを含むことがある。例えば、通信接続(複数可)208は、たとえば、IEEE802.11規格によって定義された周波数、たとえばBLUETOOTH(商標登録)などのショートレンジのワイヤレス周波数、セルラー通信(例えば2G、3G、4G、4G LTE、5Gなど)、またはそれぞれのコンピューティングデバイスに他のコンピューティングデバイス(複数可)とインターフェイスできるようにするどんな適切なワイヤードもしくはワイヤレスの通信プロトコルでも介してなど、Wi-Fiベースの通信を可能にすることがある。
【0058】
少なくとも1つの例にて、車両202は、1つまたは複数のドライブシステム210を含むことが可能である。いくつかの例にて、車両202は、単一のドライブシステム210を有することがある。少なくとも1つの例にて、車両202が複数のドライブシステム210を有するならば、個々のドライブシステム210は、車両202の向き合う端部(例えば、前方および後方など)に置かれることが可能である。少なくとも1つの例にて、ドライブシステム(複数可)210は、上述したように、ドライブシステム(複数可)210の状態を、および/または車両202の周囲の状態を検出する1つまたは複数のセンサーシステム206を含むことが可能である。例および非限定として、センサーシステム(複数可)206は、ドライブシステムの車輪の回転を感知する1つまたは複数のホイールエンコーダー(たとえば、ロータリーエンコーダー)、ドライブシステムの向きおよび加速度を測定する慣性センサー(たとえば、慣性測定ユニット、加速度計、ジャイロスコープ、磁力計など)、カメラまたは他の画像センサー、ドライブシステムの周囲のオブジェクトを聴覚的に検出する超音波センサー、ライダーセンサー、レーダーセンサーなどを含むことが可能である。いくつかのセンサー、たとえばホイールエンコーダーなどは、ドライブシステム(複数可)210に一意的であり得る。場合によっては、ドライブシステム(複数可)210におけるセンサーシステム(複数可)206は、車両202の対応するシステムに重なるまたは対応するシステムを補うことが可能である。
【0059】
少なくとも1つの例にて、本明細書に述べられる構成要素は、上に説明されるようにセンサーデータ224を処理することができ、1つまたは複数のネットワーク(複数可)228を介して、それぞれの出力を1つまたは複数のコンピューティングデバイス(複数可)102に送ることがある。少なくとも1つの例にて、本明細書に述べられるコンポーネントは、それらのそれぞれの出力を、特定の周波数において、予め決められた一定の時間が経つと、ほぼリアルタイムにおいてなど、1つまたは複数のコンピューティングデバイス(複数可)102に送ることがある。
【0060】
いくつかの例では、車両202は、ネットワーク(複数可)228を介して1つまたは複数のコンピューティングデバイス(複数可)102にセンサーデータを送ることが可能である。いくつかの例にて、車両202は、生のセンサーデータ224を、コンピューティングデバイス(複数可)102に送ることが可能である。他の例では、車両202は、処理されたセンサーデータ224および/またはセンサーデータの表現(例として、物体パーセプショントラック(object perception track))をコンピューティングデバイス(複数可)102に送ることが可能である。いくつかの例にて、車両202は、センサーデータ224を、特定の周波数において、予め決められた一定の時間が経つと、ほぼリアルタイムにおいてなど、コンピューティングデバイス(複数可)102に送ることが可能である。場合によっては、車両202は、(生のまたは処理された)センサーデータをコンピューティングデバイス(複数可)102に1つまたは複数のログファイルとして送ることが可能である。
【0061】
本明細書に説明されるように、典型的なニューラルネットワークは、一連の接続された層を通じて入力データを通して出力を生成する生物学的にインスパイアされたアルゴリズムである。さらに、ニューラルネットワークにおける各層は、別のニューラルネットワークを含むことも可能である、またはあらゆる数の層を(畳み込みかどうかにかかわらず)含むことが可能である。本開示という状況にて理解されることが可能であるように、ニューラルネットワークは、出力が学習パラメーターに基づいて生成される上記のアルゴリズムの幅広いクラスを参照することが可能である機械学習を利用することが可能である。
【0062】
ニューラルネットワークという状況にて述べられるが、どんな種類の機械学習でも、本開示と矛盾することなく用いられることが可能である。例えば、機械学習アルゴリズムは、限定されないが、回帰アルゴリズム(例えば、通常の最小二乗回帰(OLSR)、線形回帰、ロジスティック回帰、ステップワイズ回帰、多変量適応型回帰スプライン(MARS)、局所推定スキャッタープロット平滑化法(LOESS))、インスタンスベースのアルゴリズム(例えば、リッジ回帰、最小絶対収縮および選択演算子(LASSO)、弾性ネット、最小角度回帰(LARS))、ディシジョンツリーアルゴリズム(例えば、分類および回帰ツリー(CART)、反復二分法3(ID3)、カイ二乗自動相互作用検出(CHAID)、決定断端、条件付きディシジョンツリー)、ベイジアンアルゴリズム(例えば、ナイーブベイズ、ガウスナイーブベイズ、多項式ナイーブベイズ、アベレージワンディペンデンスエスティメータズ(AODE)、ベイジアンビリーフネットワーク(BNN)、ベイジアンネットワーク)、クラスタリングアルゴリズム(例えば、k平均法、kメジアン、期待値最大化(EM)、階層クラスタリング)、相関ルール学習アルゴリズム(例えば、パーセプトロン、逆伝搬、ホップフィールドネットワーク、動径基底関数ネットワーク(RBFN))、深層学習アルゴリズム(例えば、ディープボルツマンマシン(DBM)、ディープビリーフネットワーク(DBN)、畳み込みニューラルネットワーク(CNN)、スタックドオートエンコーダ)、次元縮退アルゴリズム(例えば、主成分分析(PCA)、主成分回帰(PCR)、部分的最小二乗回帰(PLSR)、サモンマッピング、多次元尺度構成法(MDS)、投影追跡、線形判別分析(LDA)、混合判別分析(MDA)、二次判別分析(QDA)、柔軟判別分析(FDA))、アンサンブルアルゴリズム(例えば、ブースティング、ブートストラップアグリゲーション(バギング)、アダブースト、スタックドジェネラリゼーション(ブレンディング)、勾配ブースティングマシン(GBM)、勾配ブースト回帰ツリー(GBRT)、ランダムフォレスト)、SVM(サポートベクターマシン)、教師あり学習、教師なし学習、準教師あり学習など含むことが可能である。アーキテクチャの追加の例は、たとえばResNet50、ResNet101、VGG、DenseNet、PointNetなどのニューラルネットワークを含む。
【0063】
車両202のプロセッサー(複数可)212は、本明細書に説明されるように、データを処理し動作を行う命令を実行する性能があるどんな適切なプロセッサーでもあり得る。例および非限定として、プロセッサー(複数可)212は、1つまたは複数のCPU(中央処理装置)、GPU(Graphics Processing Unit)、または電子データを処理して、その電子データを、レジスターおよび/もしくはコンピューター読取り可能媒体に格納されることが可能である他の電子データに変換するどんな他のデバイスもしくはデバイスの部分でも含むことが可能である。いくつかの例において、さらに、集積回路(例えば、ASICなど)、ゲートアレイ(例えば、FPGAなど)、および他のハードウェアデバイスは、エンコードされた命令を実装するように構成される限り、考慮されるプロセッサーであることも可能である。
【0064】
コンピューター読取り可能媒体214は、非一時的なコンピューター読取り可能媒体の例である。コンピューター読取り可能媒体214は、本明細書に説明される方法と、種々のシステムに帰する機能とを実装するためのオペレーティングシステムおよび1つまたは複数のソフトウェアアプリケーション、命令、プログラム、および/またはデータを格納することが可能である。種々の実装において、コンピューター読取り可能媒体は、どんな適切なコンピューター読取り可能媒体技術でも、例えば、SRAM(スタティックRAM)、SDRAM(シンクロナスDRAM)、不揮発性/フラッシュ型メモリー、または情報を格納する性能があるどんな他のタイプのメモリーでも用いて実装されることが可能である。本明細書に説明されるアーキテクチャ、システム、および個々の要素は、多くの他の論理的な、プログラム的な、および物理的なコンポーネントを含むことが可能であり、添付の図面に示されるそれらは、本明細書の説明に関係する単なる例である。
【0065】
理解されることが可能であるように、本明細書に述べられる構成要素は、例示の目的のために区分されているとして説明される。しかしながら、種々の構成要素によって行われる動作は、どんな他の構成要素にでも組み合わされるまたは行われることが可能である。
【0066】
図2が分散システムとして例示される一方、代替えの例において、車両202のコンポーネントがコンピューティングデバイス(複数可)102に関連付けられることが可能であり、および/またはコンピューティングデバイス(複数可)102のコンポーネントが車両202に関連付けられることが可能であることは特筆されるべきである。すなわち、車両202は、コンピューティングデバイス(複数可)102に関連付けられた1つまたは複数の機能を行い、逆もまた同様であることが可能である。さらに、訓練コンポーネント114の様相は、本明細書に述べられるいずれかのデバイスにおいて行うことが可能である。
【0067】
図2が分散システムとして例示される一方、代替えの例において、車両202のコンポーネントがコンピューティングデバイス(複数可)102に関連付けられることが可能であり、および/またはコンピューティングデバイス(複数可)102のコンポーネントが車両202に関連付けられることが可能であることは特筆されるべきである。すなわち、車両202は、コンピューティングデバイス(複数可)102に関連付けられた1つまたは複数の機能を行い、逆もまた同様であることが可能である。
【0068】
コンピューティングデバイス(複数可)102は、同一のロケーションに実装される、および/または分散される1つまたは複数のコンピューティングデバイスを含むことがある。一例にて、第1の処理ユニット104は、第1のコンピューティングデバイスに実装され、第2の処理ユニット106およびメモリー108は、第2のコンピューティングデバイスに実装される。別の例では、第1の処理ユニット104、第2の処理ユニット106、およびメモリー108は、同一のコンピューティングデバイスに実装される。さらに他の例では、他の構成が用いられる。
【0069】
図3は、ニューラルネットワークの訓練および動作の間、クロスバッチ正規化を利用する例示的なシステム300を示す図である。例300は、本開示に従うクロスバッチ正規化のための多くの実装のうちの1つを表す。言い換えれば、より少ないまたはより多い動作(例えば、ブロック)および/または動作の異なる配列が実装されることがある。
【0070】
ニューラルネットワークシステム300は、複数のニューラルネットワーク118および302を含み、各々が、シーケンスの最上位層からシーケンスの最下位層までシーケンスに配列される複数のニューラルネットワーク層122および304-312を含むことがある。ニューラルネットワークシステム300は、ニューラルネットワークの入力をシーケンスの層の各々を通じて処理することによって、ニューラルネットワークの入力からニューラルネットワークの出力を生成することがある。
【0071】
ニューラルネットワークシステム300は、どんな種類のデジタルデータ入力でも受信し、入力に基づいてどんな種類のスコアまたは分類出力でも生成するように構成されることが可能である。
【0072】
特に、ニューラルネットワークの層の各々は、入力を受け取り、出力を生成するように構成されることによって、ニューラルネットワーク層は、ニューラルネットワークシステム300が受け取ったニューラルネットワークの入力を集合的に処理して、受け取ったニューラルネットワークの各入力に対してそれぞれのニューラルネットワークの出力を生成する。シーケンスにおけるニューラルネットワーク層のいくつかまたはすべては、ニューラルネットワーク層に対するパラメーターのセットのカレント値にしたがって、入力から出力を生成する。例えば、いくつかの層は、受け取った入力から出力を生成する一部として、受け取った入力にカレントのパラメーター値の行列を乗算することがある。
【0073】
さらに、ニューラルネットワークシステム300は、ニューラルネットワーク層のシーケンスにおいて、ニューラルネットワーク層A304および306とニューラルネットワーク層B310および310との間に、クロスバッチ正規化層122および308を含む。クロスバッチ正規化層122および308は、ニューラルネットワークシステム300の訓練の間、ニューラルネットワーク層A304および306から受け取った入力に演算の1つのセットを行い、ニューラルネットワークシステム300が訓練された後にニューラルネットワーク層A304および306から受け取った入力に対して演算の別のセットを行うよう構成される。
【0074】
特に、ニューラルネットワークシステム300は、ニューラルネットワーク層のパラメーターの訓練値を決定するために、訓練例の複数のグローバルバッチ(例えば、ニューラルネットワーク118および302の各々に対してローカルバッチを含むグローバルバッチ)において訓練されることが可能である。例えば、訓練の間、ニューラルネットワークシステム300は、ローカルバッチ314および316を含む訓練例のグローバルバッチを処理し、グローバルバッチにおける各ローカルバッチに対してそれぞれローカルニューラルネットワークの出力318および320を生成することが可能である。次に、ニューラルネットワークの出力318および320は、例えば、勾配降下およびバックプロパゲーションニューラルネットワーク訓練技法を通じて、シーケンスにおけるニューラルネットワーク層122および304-312のパラメーターの値を調整するのに使用されることが可能である。
【0075】
訓練例についての与えられているグローバルバッチにおけるニューラルネットワークシステム300の訓練の間、クロスバッチ正規化層122および308は、ローカルバッチ314および316に対してニューラルネットワーク層A304および306によって生成された層A出力322および324を受け取り、層A出力322および324を処理してローカルバッチに対してそれぞれのクロスバッチ正規化層の出力328および330を生成し、次にクロスバッチ正規化層の出力328および330をニューラルネットワーク層B310および312への入力として提供するよう構成される。層A出力322および324は、ローカルバッチにおける各訓練例に対して、ニューラルネットワーク層A304および306によって生成されたそれぞれの出力を含む。
【0076】
同様に、クロスバッチ正規化層の出力328および330は、ローカルバッチ314および316における各訓練例に対して、クロスバッチ正規化層122および308によって生成されたそれぞれの出力を含む。
【0077】
一般に、フォワードプロパゲーションの間、クロスバッチ正規化層122および308は、層A出力322および324からローカルバッチに対する正規化統計のセットを計算し、他のニューラルネットワークのクロスバッチ正規化層によるクロスバッチデータ326を分配し受け取ることによってグローバルバッチにわたって正規化統計を同期させ、グローバル正規化統計を計算し、層A出力322および324を正規化して、ローカルバッチに対してそれぞれの正規化されている出力328および330を生成し、オプションとして、出力をニューラルネットワーク層B310および312に入力として提供する前に正規化されている出力の各々を変換する。
【0078】
より詳細には、いくつかの例では、訓練の間、ローカルバッチにおける入力を正規化するために、クロスバッチ正規化層は、(1)ローカルバッチのローカルバッチ平均を計算し、(2)ローカルバッチのローカルバッチ分散を計算し、(3)ローカル統計(例えば平均および分散)をまたはローカル統計に基づくローカル中間値を分配し、(4)クロスバッチ正規化層を実行する他のプロセッサーからリモート統計またはリモート中間値を受け取り、(5)ローカルおよびリモート統計または中間値に基づいてグローバルバッチ平均およびグローバルバッチ分散を計算し、(6)グローバルバッチ平均およびグローバルバッチ分散を用いてローカル入力を正規化し、(7)正規化されているローカル出力をグローバルスケールおよびシフトパラメーターによってスケーリングしシフトすることがある。
【0079】
カレントのローカルバッチ(i)のローカルバッチ平均を決定するために、クロスバッチ正規化層は、ローカルバッチ平均μiを次のとおりに計算することがある。
【0080】
【0081】
ただし、niはi番目のローカルバッチの計数であり、
【0082】
【0083】
は、i番目のローカルバッチ(例えば、カレントのニューラルネットワーク118または302によって処理されているローカルバッチ)に対して前の層からのj番目の入力である。
【0084】
同様に、ローカルバッチ分散
【0085】
【0086】
は、次のとおりに計算されることがある。
【0087】
【0088】
クロスバッチ正規化層は、グローバルバッチ平均およびグローバルバッチ分散の決定に用いるためのクロスバッチデータ326を決定し共有することがある。実装しだいで、クロスバッチ正規化層は、ローカルバッチ平均およびローカルバッチ分散をクロスバッチデータ326として共有することがある、または中間値をクロスバッチデータ326として決定し共有することがある。例えば、クロスバッチ正規化層は、次の中間値を計算し分配することがある。
【0089】
【0090】
【0091】
ただし、piは、カレントのローカルバッチ(i)の相対的なサイズ(例えば、グローバルバッチの総計数に対するカレントのローカルバッチ(i)の計数の比)である。
【0092】
ローカルバッチ平均およびローカルバッチ分散または中間値が正規化統計(例えばクロスバッチデータ)として分配されるかどうかにかかわらず、クロスバッチ正規化層は、グローバル正規化統計を決定するときの使用のために、分配されている正規化統計を受け取ることがある。
【0093】
ローカルバッチ平均およびローカルバッチ分散が分布している場合、グローバルバッチ平均μは、次のとおりに計算されることがある。
【0094】
【0095】
次に、グローバルバッチ分散が決定されることがある。具体的には、本開示に従う実装では、グローバル分散は、ローカルバッチ分散とローカルバッチ平均の二乗との和と、グローバルバッチ平均の二乗との差のアグリゲーション(aggregation)に基づいて決定されることがある。ローカルバッチがサイズにて変わる例において、和は、バッチの相対的なサイズに基づいて重み付けされることがある。例えば、グローバルバッチ分散(例えば、σ2)は、次のように決定されることがある。
【0096】
【0097】
中間値が決定され共有される場合、クロスバッチ正規化層は、グローバル中間値(global intermediate value)に中間値を次のように集める(aggregate)ことがある。
【0098】
【0099】
【0100】
今述べたグローバル中間値から、グローバルバッチ平均およびグローバルバッチ分散は、次のとおりに計算されることがある。
【0101】
【0102】
【0103】
クロスバッチ正規化層122および308によって計算される正規化統計と、クロスバッチ正規化層122および308が、訓練の間、層A出力322および324を正規化するやり方とは、層A出力322および324を生成するニューラルネットワーク層A304および306の性質に依存する。
【0104】
グローバルバッチ正規化統計(例えば、グローバルバッチ分散(例えばσ2)およびグローバルバッチ平均μ)を用いて、前の層からクロスバッチ正規化層によって受け取られた入力(例えば
【0105】
【0106】
)は、次のとおりに、正規化されている出力(例えば
【0107】
【0108】
)に正規化され計算されることがある。
【0109】
【0110】
ただし、εは、数値的安定性のためにグローバルバッチ分散に加えられる定数値である。
【0111】
上述のように、いくつかの実装は、正規化されている出力をスケーリングしシフトして、変換された正規化されている出力(例えば、
【0112】
【0113】
)を計算することがある。具体的には、正規化されている出力は、学習値であり得るグローバルスケール変数γとグローバルシフト変数βを用いてスケーリングされるおよびシフトされることがある(これらの変数の学習については、バックプロパゲーションの解説において後述する)。より詳細には、クロスバッチ正規化層の変換された正規化されている出力(例えば、
【0114】
【0115】
)は、次のとおりに計算されることがある。
【0116】
【0117】
変換された正規化されている出力(例えば、
【0118】
【0119】
)は、クロスバッチ正規化層122および308に続く層(例えば、層B310および312)に提供されることがあり、ニューラルネットワーク118および302は、ローカルニューラルネットワークの出力318および320がニューラルネットワーク118および302の最終層によって出力されるまで連続した層を処理し続けることがある。次に、ニューラルネットワークは、バックプロパゲーションを始めることがある。
【0120】
バックワードプロパゲーションの間、クロスバッチ正規化層は、グローバルスケール変数γおよびグローバルシフト変数βに関して勾配を計算することも同様に、変換に対する損失の勾配を決定しバックプロパゲーションすることがある。特に、クロスバッチ正規化層は、層Bによって
【0121】
【0122】
(すなわち、クロスバッチ正規化層の出力332および334に対する損失の勾配)を提供されることがあり、
【0123】
【0124】
、
【0125】
【0126】
、および
【0127】
【0128】
(すなわち、クロスバッチ正規化層の入力336および338に対する損失の勾配)を計算するように動作することがある。
【0129】
演算のとき、クロスバッチ正規化層は、グローバルスケール変数γおよびグローバルシフト変数βに対して勾配を計算することがある。第一に、ローカル中間値θiおよびΦiは、ローカルに、次のとおりに計算されることがある。
【0130】
【0131】
【0132】
ただし、niは、ローカルバッチ(i)の計数である。
【0133】
フォワードプロパゲーションと同様に、ローカル中間値θiおよびΦiは、ニューラルネットワーク118および302の間にて分配されることがある。
【0134】
次に、各ニューラルネットワーク118、302は、ローカル中間値θiおよびΦiを用いて、
【0135】
【0136】
および
【0137】
【0138】
をローカルに決定することがある。具体的には、
【0139】
【0140】
および
【0141】
【0142】
は、
【0143】
【0144】
【0145】
のとおりに計算されることがある。
【0146】
グローバルスケール変数γおよびグローバルシフト変数βの勾配が、
【0147】
【0148】
を計算するために、利用されることがある。上記のように、
【0149】
【0150】
および
【0151】
【0152】
を格納することによって、クロスバッチ正規化層は、さらなるアグリゲーション(aggregation)なしに
【0153】
【0154】
を計算することがある。具体的には、
【0155】
【0156】
は、次のとおりに算出されることがある。
【0157】
【0158】
ニューラルネットワークシステム300が訓練されていれば、ニューラルネットワークシステム300は、処理するために、ニューラルネットワークの新しい入力を受け取り、ニューラルネットワーク層を通じてニューラルネットワークの入力を処理して、ニューラルネットワークシステム300についてのコンポーネントのパラメーターの訓練値にしたがって、入力に対して、ニューラルネットワークの新しい出力を生成することがある。さらに、ニューラルネットワークの新しい入力についての処理の間、クロスバッチ正規化層122および308によって行われる演算も、ニューラルネットワーク層A304および306の性質に依存する。
【0159】
場合によっては、訓練後に利用される平均および標準偏差は、ニューラルネットワークシステムの訓練の間、クロスバッチ正規化層の前の層によって生成されたすべての出力から計算される。しかしながら、いくつかの他の場合には、クロスバッチ正規化層にて用いられる平均および標準偏差は、訓練後にクロスバッチ正規化層の前の層によって生成された出力から、例えば、最も近い時間において、特定デュレーションのウィンドウの間、生成された前の層の出力から、またはクロスバッチ正規化層の前の層によって最も新しく生成された前の層の特定数の出力から、計算されることがある。
【0160】
特に、場合によっては、ネットワークの入力の分布、従って、前の層の出力についての分布は、例えば、ニューラルネットワークの新しい入力が訓練例とは異なる種類の入力であるならば、訓練の間、用いられる訓練例と、ニューラルネットワークシステムの訓練後、用いられるニューラルネットワークの新しい入力との間にて変化することがある。例えば、ニューラルネットワークシステムは、ユーザー画像において訓練されたことがあり、今、ビデオフレームを処理するのに用いられることがある。ユーザー画像およびビデオフレームは、ピクチャされたクラス、画像の特性、構図などに関して異なる分布を有することがある。それゆえ、訓練からの統計を用いて前の層の入力を正規化することは、新しい入力に対して生成されている前の層の出力についての統計を正確にキャプチャしないことがある。ゆえに、今述べた場合、クロスバッチ正規化層は、訓練後にクロスバッチ正規化層の前の層によって生成された前の層の出力から計算された正規化統計を用いることがある。
【0161】
クロスバッチ正規化層122および308は、ニューラルネットワーク層のシーケンスにおける種々のロケーションにおいて含まれることがあり、いくつかの実装では、複数のクロスバッチ正規化層がシーケンスに含まれることがある。
【0162】
図3に示される処理は、グローバルバッチのローカルバッチの並列処理に関するが、他の例は、グローバルバッチの分散について上に開示された定義を用いて各々順に処理されるローカルバッチにより成長するローリンググローバルバッチ(rolling global batch)のコンポーネントとしてローカルバッチを処理することがある。
【0163】
図4Aは、訓練例のグローバルバッチに関するニューラルネットワークの訓練の間、クロスバッチ正規化層の出力を生成するための例示的な処理400を示す図である。より詳細には、処理400は、ニューラルネットワークに対して分散学習パイプラインを集合的に形成する複数のコンピューティングデバイスのうちの特定のコンピューティングデバイスにおける処理に関することがある。今述べた処理400は、各動作が、ハードウェア、ソフトウェア、またはそれらの組合せにおいて実装されることが可能である動作のシーケンスを表す、ロジカルフローグラフとして例示される。ソフトウェアという状況にて、動作は、1つまたは複数のコンピューター読取り可能な記録媒体に格納されたコンピューター実行可能な命令を表し、1つまたは複数のプロセッサーによって実行されると、引用される動作を実行する。一般に、コンピューター実行可能な命令は、特定の機能を行うまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は、限定として解釈されることを意図せず、処理を実装するために、説明される動作をいくらでも、どんな順序でもおよび/または並列に組み合わされることが可能である。処理400は、たとえば
図1の第1の処理ユニット104、
図1の第2の処理ユニット106、
図2の車両コンピューティングデバイス204、別の処理ユニットまたはコンピューティングデバイスなど、いずれかのコンポーネントによって行うことが可能である。解説を容易にするために、処理400は、
図1(および場合によっては
図3)という状況にて述べられるだろう。例において、処理400は、人工ニューラルネットワークに対する訓練段階のフォワードプロパゲーション部分に関連付けられる。
【0164】
図4Aにおいて、402にて、第1の処理ユニット104は、ローカルバッチの訓練サンプルに関連付けられた入力に対して、ローカルバッチ平均を計算することがある。404にて、第1の処理ユニット104は、ローカルバッチの訓練サンプルに関連付けられた入力のローカルバッチ分散を計算することがある。406にて、第1の処理ユニット104は、ローカルバッチの訓練サンプルに関連付けられた入力のローカル中間値を計算することがある。
【0165】
408にて、第1の処理ユニット104、および他のコンピューティングデバイスの第1の処理ユニット104は、ローカル中間値を互いに分配することがある。410にて、第1の処理ユニット104は、他のコンピューティングデバイスからリモート中間値を受信することがある。
【0166】
412にて、第1の処理ユニット104は、中間値を用いてローカル平均およびリモート平均を集めて、グローバルバッチ平均を計算することがある。次に、414にて、第1の処理ユニット104は、中間値を用いてローカル分散およびリモート分散を集めて、グローバルバッチ分散を計算することがある。
【0167】
416にて、第1の処理ユニット104は、グローバルバッチ平均およびグローバルバッチ分散を用いて、ローカルバッチに関連付けられた入力を正規化することがある。次に、418にて、第1の処理ユニット104は、グローバルスケールパラメーターおよびグローバルシフトパラメーターを用いて、正規化されている入力をスケーリングし、シフトすることがある。次に、第1の処理ユニット104は、ニューラルネットワークにおいて、変換された正規化されているローカル出力を次の層へ出力することがある。次に、処理は、クロスバッチ正規化層におけるバックプロパゲーションのために、
図4Bの452に続く。
【0168】
図4Bは、訓練例のグローバルバッチに対するクロスバッチ正規化層を含むニューラルネットワークの訓練のための例示的な処理450を示す図である。より詳細には、処理450は、ニューラルネットワークに対して分散学習パイプラインを集合的に形成する複数のコンピューティングデバイスのうちの特定のコンピューティングデバイスにおける処理に関することがある。例において、処理450は、人工ニューラルネットワークに対する訓練段階のバックプロパゲーション部分に関連付けられる。
【0169】
図4Bにおいて、452にて、第1の処理ユニット104は、変換された正規化されている出力に関して損失の勾配を決定することがある。いくつかの例では、変換された正規化されている出力に関する損失の勾配は、訓練のバックプロパゲーション部分の開始時に入力されることがある。他の例では、第1の処理ユニット104は、変換された正規化されている出力に関して損失の勾配を計算することがある。454にて、第1の処理ユニット104は、学習可能なスケールパラメーターに関して損失のローカル勾配を計算することがある。456にて、第1の処理ユニット104は、学習可能なシフトパラメーターに関して損失のローカル勾配を計算することがある。
【0170】
458にて、第1の処理ユニット104、および他のコンピューティングデバイスの第1の処理ユニット104は、ローカル勾配を互いに分配することがある。460にて、第1の処理ユニット104は、他のコンピューティングデバイスからリモート勾配を受信することがある。
【0171】
462にて、第1の処理ユニット104は、学習可能なスケールパラメーターに関して損失のローカル勾配およびリモート勾配を集めて、学習可能なスケールパラメーターに関して損失のグローバル勾配を計算することがある。次に、464にて、第1の処理ユニット104は、学習可能なシフトパラメーターに関して損失のローカル勾配およびリモート勾配を集めて、学習可能なシフトパラメーターに関して損失のグローバル勾配を計算することがある。
【0172】
466にて、第1の処理ユニット104は、入力に関して損失のグローバル勾配を計算することがある。次に、468にて、第1の処理ユニット104は、決定された損失の勾配に少なくとも部分的に基づいて、ニューラルネットワークのパラメーターのカレント値を調整することがある。
【0173】
次に、第1の処理ユニット104は、470にて、入力に関する損失がしきい値未満であるかどうかを決定することがある。もしそうならば、処理は、訓練が停止される472に続くことがある。一方、損失がしきい値未満でないならば、474にて、処理は、402に戻ることがあり、ニューラルネットワークの訓練は、訓練例の複数の新しいローカルバッチを含む新しいグローバルバッチに基づいて続くことがある。上述のように、訓練は、ローカルバッチにて順に動作する単一のコンピューティングデバイスによって行われることがある、またはローカルバッチを並列に訓練する複数のコンピューティングデバイスの分散学習パイプラインによって行われることがある。
【0174】
図5は、自律車両のユースケースという状況にてクロスバッチ正規化層を含むニューラルネットワークの訓練のための例示的な処理500を示す図である。
【0175】
特に、502にて、コンピューティングデバイス(例えば、コンピューティングデバイス102)は、自律車両(例えば、車両202)に関連付けられたデータを受信することがある。次に、コンピューティングデバイスは、504にて、データに基づいて機械学習モデルを訓練することがあり、訓練が、機械学習モデルのクロスバッチ正規化層におけるマルチプロセッサークロスバッチ正規化に少なくとも部分的に基づいて行われる。いくつかの例において、訓練は、
図1-4Bに関して上述したように遂行されることがある。次に、506にて、コンピューティングデバイスは、機械学習されているモデルを同一のまたは異なる自律車両(例えば、車両202)に送ることがある。
例示的な箇条
上に説明される例示的な箇条が、ある特定の実装に関して説明されるが、本文書の関連において、さらに、例示的な箇条の内容は、方法、デバイス、システム、コンピューター読取り可能媒体、および/または別の実装を介して実装されることが可能であることが理解されるべきである。さらに加えて、例A-Tのいずれかは、単独にて、または例A-Tのうちのいずれか他の1つまたは複数との組み合わせにおいて、実装されることがある。
【0176】
A.第1のコンピューティングデバイスに関連付けられたニューラルネットワークのバッチ正規化層において、ニューラルネットワークの第1のニューラルネットワーク層から第1の層の出力を受信し、第1の層の出力は、グローバルバッチの訓練例のローカルバッチに基づき、グローバルバッチが、訓練例のローカルバッチおよびリモートバッチを含むことと、第1の層の出力の成分に少なくとも部分的に基づいて、ローカルバッチの正規化統計量(normalization statistic)として、ローカルバッチに対してローカルバッチ平均に少なくとも部分的に基づく第1の値とローカルバッチ分散に少なくとも部分的に基づく第2の値とを決定することと、第1の値および第2の値の決定に続いて、リモートバッチを用いてニューラルネットワークのコピーを訓練する第2のコンピューティングデバイスにローカルバッチの正規化統計量を送信することと、第2のコンピューティングデバイスから、リモートバッチに関連付けられたリモートバッチの正規化統計量を受信することと、ローカルバッチの正規化統計量およびリモートバッチの正規化統計量に少なくとも部分的に基づいて、グローバルバッチ平均およびグローバルバッチ分散を決定することと、グローバルバッチ平均およびグローバルバッチ分散に少なくとも部分的に基づいて、第1の層の出力の成分に関連付けられた正規化されている出力の正規化されている成分を生成することと、を含む方法。
【0177】
B.ローカルバッチ分散とローカルバッチ平均の二乗との和と、グローバルバッチ平均の二乗との差のアグリゲーション(aggregation)として少なくとも部分的に基づいてグローバルバッチ分散を計算すること、をさらに含む例Aの方法。
【0178】
C.グローバルスケーリングパラメーターおよびグローバルシフトパラメーターに基づいて正規化されている出力の正規化されている成分をスケーリングしシフトすることによって、バッチ正規化層の出力の変換された成分を生成することと、ローカルバッチにおけるニューラルネットワークの訓練のバックプロパゲーションの間、損失の勾配に基づいてグローバルスケーリングパラメーターおよびグローバルシフトパラメーターを決定することと、をさらに含む例Aの方法。
【0179】
D.グローバルシフトパラメーターに関する損失の勾配を決定することは、ローカル中間シフトパラメーターとして、バッチ正規化層の出力に関する損失の勾配の和を決定することと、訓練例のリモートバッチに対してリモート中間シフトパラメーターを受信することと、ローカル中間シフトパラメーターとリモート中間シフトパラメーターとを組み合わせてグローバルシフトパラメーターに関する損失の勾配を生成することと、を含むこと、および、グローバルスケーリングパラメーターに関する損失の勾配を決定することは、ローカル中間スケーリングパラメーターとして、変換された成分のバッチ正規化層の出力と正規化されている出力の正規化されている成分とに関する損失の勾配のドット積を決定することと、訓練例のリモートバッチに対してリモート中間スケーリングパラメーターを受信することと、ローカル中間スケーリングパラメーターとリモート中間スケーリングパラメーターとを集め(aggregate)て、グローバルスケーリングパラメーターに関する損失の勾配を生成することと、を含むこと、をさらに含む例Cの方法。
【0180】
E.グローバルシフトパラメーターに関する損失の勾配とグローバルスケーリングパラメーターに関する損失の勾配とに基づいて、第1の層の出力に関する損失の勾配を決定することをさらに含む例Aの方法。
【0181】
F.第1の値は、ローカルバッチの重み付けされたローカルバッチ平均を含み、第2の値は、ローカルバッチのローカルバッチ平均およびローカルバッチ分散の二乗の重み付けされた和を含み、重み付けされたローカルバッチ平均の重み付けは、グローバルバッチにわたる訓練例の数に相対的なローカルバッチにおける訓練例の数に基づく、例Aの方法。
【0182】
G.実行されると、ニューラルネットワークに、ローカルバッチとして例のセットの第1の部分を入力することと、第1の部分に少なくとも部分的に基づいて、ニューラルネットワークの第1のニューラルネットワーク層から第1の層の出力を受信することと、第1の層の出力の成分に少なくとも部分的に基づいて、ローカルバッチの正規化統計量として、ローカルバッチに対してローカルバッチ平均に少なくとも部分的に基づく第1の値とローカルバッチ分散に少なくとも部分的に基づく第2の値とを決定することと、リモートバッチを用いてニューラルネットワークのコピーを訓練する第2のコンピューティングデバイスにローカルバッチの正規化統計量を送信することと、リモートコンピューティングシステムから、リモートバッチに含まれる例のセットの第2の部分に関連付けられたリモートバッチの正規化統計量を受信することと、第1の値およびリモートバッチの正規化統計量に基づいてグローバルバッチ平均を決定することと、第2の値およびリモートバッチの正規化統計量に少なくとも部分的に基づいてグローバルバッチ分散を決定することと、グローバルバッチ平均およびグローバルバッチ分散を用いて第1の層の出力の成分に関連付けられた正規化されている出力の正規化されている成分を生成することと、を含む作動を行うことを第1の処理ユニットの1つまたは複数のプロセッサーにさせる命令を格納する1つまたは複数の非一時的なコンピューター読取り可能媒体。
【0183】
H.作動は、ローカルバッチ分散とローカルバッチ平均の二乗との和と、グローバルバッチ平均の二乗との差のアグリゲーション(aggregation)として少なくとも部分的に基づいてグローバルバッチ分散を計算することをさらに含む例Gの1つまたは複数の非一時的なコンピューター読取り可能媒体。
【0184】
I.作動は、ローカルバッチにおけるニューラルネットワークの訓練のバックプロパゲーション間、損失の勾配に基づいてグローバルスケーリングパラメーターおよびグローバルシフトパラメーターを決定することと、グローバルスケーリングパラメーターおよびグローバルシフティングパラメーターに基づいて、正規化されている出力の正規化されている成分をスケーリングしシフトすることによって、バッチ正規化層の出力の変換された成分を生成することと、をさらに含む例Gの1つまたは複数の非一時的なコンピューター読取り可能媒体。
【0185】
J.作動は、バッチ正規化層の出力に関する損失の勾配を集める(aggregate)ことによってローカル中間シフトパラメーターを決定することと、リモートバッチのリモート中間シフトパラメーターを受信することと、グローバルシフトパラメーターに関する損失の勾配として、ローカル中間シフトパラメーターおよびリモート中間シフトパラメーターを集めることと、をさらに含む例Iの1つまたは複数の非一時的なコンピューター読取り可能媒体。
【0186】
K.作動は、バッチ正規化層の出力と正規化されている出力の正規化されている成分との関数として損失の勾配のドット積としてローカル中間スケーリングパラメーターを決定することと、リモートバッチのリモート中間スケーリングパラメーターを受信することと、グローバルスケーリングパラメーターに関する損失の勾配として、ローカル中間スケーリングパラメーターおよびリモート中間スケーリングパラメーターを集めることと、をさらに含む例Jの1つまたは複数の非一時的なコンピューター読取り可能媒体。
【0187】
L.作動は、グローバルシフトパラメーターに関する損失の勾配とグローバルスケーリングパラメーターに関する損失の勾配とに基づいて、第1の層の出力に関する損失の勾配を決定することをさらに含む例Gの1つまたは複数の非一時的なコンピューター読取り可能媒体。
【0188】
M.第1の部分は、第1の数の訓練例を含み、第2の部分は、第1の数とは異なる第2の数の訓練例を含む例Gの1つまたは複数の非一時的なコンピューター読取り可能媒体。
【0189】
N.リモートバッチの正規化統計量は、リモートバッチに対して、リモートバッチ平均およびリモートバッチ分散を含む例Gの1つまたは複数の非一時的なコンピューター読取り可能媒体。
【0190】
O.第1の値は、ローカルバッチの重み付けされたローカルバッチ平均を含み、第2の値は、ローカルバッチのローカルバッチ平均およびローカルバッチ分散の二乗の重み付けされた和を含み、重み付けされたローカルバッチ平均の重み付けは、グローバルバッチにわたる訓練例の数に相対的なローカルバッチにおける訓練例の数に基づく、例Gの1つまたは複数の非一時的なコンピューター読取り可能媒体。
【0191】
P.1つまたは複数のプロセッサーと、1つまたは複数のプロセッサーによって実行可能な命令を格納する1つまたは複数のコンピューター読取り可能媒体とを含み、命令は、実行されると、ニューラルネットワークに、ローカルバッチとして例のセットの第1の部分を入力することと、第1の部分に少なくとも部分的に基づいて、ニューラルネットワークの第1のニューラルネットワーク層から第1の層の出力を受信することと、第1の層の出力の成分に少なくとも部分的に基づいて、ローカルバッチに対してローカルバッチ平均およびローカルバッチ分散を決定することと、リモートコンピューティングシステムから、リモートバッチに含まれる例のセットの第2の部分に関連付けられたリモートバッチの正規化統計量を受信することと、ローカルバッチ平均およびリモートバッチの正規化統計量に基づいてグローバルバッチ平均を決定することと、ローカルバッチ分散およびリモートバッチの正規化統計量に少なくとも部分的に基づいてグローバルバッチ分散を決定することと、グローバルバッチ平均およびグローバルバッチ分散を用いて第1の層の出力の成分に関連付けられた正規化されている出力の正規化されている成分を生成することと、を含む作動を行うことを1つまたは複数のプロセッサーにさせるシステム。
【0192】
Q.作動は、ローカルバッチにおけるニューラルネットワークの訓練のバックプロパゲーション間、損失の勾配に基づいてグローバルスケーリングパラメーターおよびグローバルシフトパラメーターを決定することと、グローバルスケーリングパラメーターおよびグローバルシフティングパラメーターに基づいて、正規化されている出力の正規化されている成分をスケーリングしシフトすることによって、バッチ正規化層の出力の変換された成分を生成することと、をさらに含む例Pのシステム。
【0193】
R.作動は、バッチ正規化層の出力に関する損失の勾配を集めることによってローカル中間シフトパラメーターを決定することと、バッチ正規化層の出力と正規化されている出力の正規化されている成分との関数として損失の勾配のドット積としてローカル中間スケーリングパラメーターを決定することと、リモートバッチに対してリモート中間シフトパラメーターおよびリモート中間スケーリングパラメーターを受信することと、グローバルシフトパラメーターに関する損失の勾配として、ローカル中間シフトパラメーターおよびリモート中間シフトパラメーターを集めることと、グローバルスケーリングパラメーターに関する損失の勾配として、ローカル中間スケーリングパラメーターおよびリモート中間スケーリングパラメーターを集めることと、をさらに含む例Qのシステム。
【0194】
S.作動は、グローバルシフトパラメーターの関数としての損失の勾配とグローバルスケーリングパラメーターの関数としての損失の勾配とに基づいて、第1の層の出力の関数として損失の勾配を決定することをさらに含む例Pのシステム。
【0195】
T.第1の部分は、第1の数の訓練例を含み、第2の部分は、第1の数とは異なる第2の数の訓練例を含む例Pのシステム。
終結
本明細書に説明される技法に関する1つまたは複数の例が説明されたが、種々の代替、追加、置換および均等は、本明細書に説明される技法の範囲内に含まれる。
【0196】
例の説明において、参照は、主張される主題の例示的な特定の例示として示す、一部を形成する添付の図面に対してされる。他の例を使用することが可能であり、変更または代替を、たとえば構造的な変更をすることが可能であることは、理解されることである。上記の例、変更、または代替は、意図され主張される主題に関して、必ずしも範囲からの逸脱でない。本明細書におけるステップを、ある順において提示することが可能であるが、いくつかの場合において、順は、ある入力が、説明されるシステムおよび方法の機能を変更することなしに異なる時間に、または別個の順に提供されるように、変更されることが可能である。さらに、開示されるプロシージャは、異なる順において実行されることも可能であろう。さらに加えて、本明細書にある種々の計算は、開示された順において行われる必要がなく、計算の代替えの順にすることを用いる他の例は、難なく実装されることが可能であろう。並べ替えられることに加えて、さらに、計算は、同一の結果を有する部分計算に分解されることも可能であろう。
【国際調査報告】