(57)【特許請求の範囲】
【請求項１】
1つまたは複数のコンピュータと、1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータにニューラルネットワークを実装させる命令を記憶する1つまたは複数のストレージデバイスとを備えるシステムであって、前記ニューラルネットワークが、
第1のニューラルネットワーク層と第2のニューラルネットワーク層との間のバッチ再正規化層であって、前記第1のニューラルネットワーク層が、複数の成分を有する第1の層出力を生成し、前記バッチ再正規化層が、トレーニング例の現在のバッチでの前記ニューラルネットワークのトレーニング中に、
トレーニング例の前のバッチでの前記ニューラルネットワークのトレーニング中に前記第1のニューラルネットワーク層によって生成された前の第1の層出力に基づく前記複数の成分の各々についてそれぞれの現在の移動正規化統計値を取得することと、
前記現在のバッチ中のトレーニング例ごとにそれぞれの第1の層出力を受け取ることと、
前記現在のバッチ中の前記トレーニング例について前記第1の層出力から前記複数の成分の各々についてそれぞれの現在のバッチ正規化統計値を計算することと、
前記現在の移動正規化統計値および前記現在のバッチ正規化統計値から前記複数の成分の各々についてアフィン変換のためのそれぞれのアフィン変換パラメータを決定することと
を行い、
前記現在のバッチ中の前記トレーニング例の各々に対する前記第1の層出力の各々について、
前記トレーニング例について正規化された層出力を生成するために、前記成分の前記現在のバッチ正規化統計値を使用して前記第1の層出力の各成分を正規化することと、
前記トレーニング例について再正規化された層出力を生成するために、前記成分の前記アフィン変換パラメータに従って前記正規化された層出力の各成分に前記アフィン変換を適用することと、
前記再正規化された層出力から前記トレーニング例についてバッチ再正規化層出力を生成することと、
前記第2のニューラルネットワーク層への入力として前記バッチ再正規化層出力を提供することと
を行うように構成される、バッチ再正規化層
を備える、システム。
【請求項２】
前記バッチ再正規化層が、
前記成分の更新された移動正規化統計値を生成するために、前記成分の前記現在のバッチ正規化統計値を使用して成分ごとの前記現在の移動正規化統計値を更新する
ようにさらに構成される、請求項1に記載のシステム。
【請求項３】
前記ニューラルネットワークの前記トレーニング中に、前記システムが、前記移動正規化統計値および前記アフィン変換パラメータを定数として扱いながら、前記ニューラルネットワークのパラメータの調整値の一部として前記現在のバッチ正規化統計値により逆伝播するように構成される、請求項1または2に記載のシステム。
【請求項４】
前記複数の成分が、前記第1の層出力のそれぞれの次元である、請求項1から3のいずれか一項に記載のシステム。
【請求項５】
前記第1のニューラルネットワーク層が畳み込み層であり、前記第1の層出力が複数の特徴マップを含み、各成分がそれぞれの特徴マップである、請求項1から3のいずれか一項に記載のシステム。
【請求項６】
前記現在の移動正規化統計値が、前記成分の各々について、
前記前の第1の層出力に対する前記成分の移動平均と、
前記第1の層出力の前記成分に対する移動近似標準偏差と
を含み、
前記第1の層出力に対する複数の現在のバッチ正規化統計値を計算することが、前記成分の各々について、
前記現在のバッチ中の前記第1の層出力について前記成分の平均を計算することと、
前記現在のバッチ中の前記第1の層出力の前記成分について近似標準偏差を計算することと
を含む、請求項1から5のいずれか一項に記載のシステム。
【請求項７】
各第1の層出力の各成分を正規化することが、
前記成分について前記計算された平均および計算された近似標準偏差を使用して前記第1の層出力の前記成分を正規化すること
を含む、請求項6に記載のシステム。
【請求項８】
前記成分の各々についてアフィン変換のためのそれぞれのパラメータを決定することが、成分ごとに、
(i)前記成分についての前記平均と前記成分についての前記移動平均との差と、(ii)前記成分についての前記移動近似標準偏差との比率から、前記成分についての第1のパラメータを決定することと、
前記成分についての前記近似標準偏差と、前記成分についての前記移動近似標準偏差との比率から、前記成分についての第2のパラメータを決定することと
を含む、請求項6または7に記載のシステム。
【請求項９】
前記パラメータに従って前記正規化された層出力の各成分に前記アフィン変換を適用することが、
積を生成するために、前記正規化された層出力の前記成分に、前記成分についての前記第2のパラメータを乗算することと、
前記再正規化された層出力の前記成分を生成するために、前記成分についての前記第1のパラメータを前記積に加算することと
を含む、請求項8に記載のシステム。
【請求項１０】
成分についての近似標準偏差が、前記成分についての分散と所定の定数値の和の平方根である、請求項6から9のいずれか一項に記載のシステム。
【請求項１１】
前記再正規化された層出力から前記トレーニング例について前記それぞれのバッチ再正規化層出力を生成することが、
成分ごとに、前記成分の学習可能なパラメータのセットの現在値に従って、前記トレーニング例について前記再正規化された層出力の前記成分を変換すること
を含む、請求項1から10のいずれか一項に記載のシステム。
【請求項１２】
前記バッチ再正規化層が、前記ニューラルネットワークが前記成分の各々について前記学習可能なパラメータのトレーニング値を決定するためにトレーニングされた後に、
新しいニューラルネットワーク入力に対して前記第1のニューラルネットワーク層によって生成された新しい第1の層出力を受け取ることと、
新しい再正規化された層出力を生成するために、前記成分のそれぞれのあらかじめ計算された正規化統計値を使用して前記新しい第1の層出力の各成分を正規化することと、
成分ごとに、前記成分の学習可能なパラメータの前記セットの前記トレーニング値に従って前記新しい再正規化された層出力の前記成分を変換することによって、新しいバッチ再正規化層出力を生成することと、
前記バッチ再正規化層出力を新しい層入力として前記第2のニューラルネットワーク層に提供することと
を行うように構成される、請求項11に記載のシステム。
【請求項１３】
前記成分の前記あらかじめ計算された正規化統計値が、前記ニューラルネットワークのトレーニング後の最終的な移動正規化統計値である、請求項12に記載のシステム。
【請求項１４】
前記成分の前記あらかじめ計算された正規化統計値が、前記ニューラルネットワークがトレーニングされた後に前記第1のニューラルネットワーク層によって生成された新しい第1の層出力から計算される、請求項12に記載のシステム。
【請求項１５】
前記アフィン変換パラメータが、スケールパラメータおよびバイアスパラメータを含み、それぞれのアフィン変換パラメータを決定することが、
完了したトレーニング反復の数がトレーニング反復の所定のしきい値数未満である場合、前記スケールパラメータ値が1であり、前記バイアスパラメータ値がゼロであると決定すること
を含む、請求項1から14のいずれか一項に記載のシステム。
【請求項１６】
前記トレーニング例について再正規化された層出力を生成することが、
前記成分を所定の範囲にあるようにするために、前記再正規化された層出力の各成分をクリッピングすること
をさらに含む、請求項1から15のいずれか一項に記載のシステム。
【請求項１７】
前記ニューラルネットワークがトレーニングされた後に前記ニューラルネットワークによって処理される新しいニューラルネットワーク入力が、前記ニューラルネットワークをトレーニングするために使用された前記トレーニング例とは異なるタイプの入力である、請求項14に記載のシステム。
【請求項１８】
前記第1のニューラルネットワーク層が、前記第1のニューラルネットワーク層についてのパラメータのセットの現在値に従って第1の層入力を修正することによって前記第1の層出力を生成する、請求項1から17のいずれか一項に記載のシステム。
【請求項１９】
前記第2のニューラルネットワーク層が、前記バッチ再正規化層出力に非線形活性化関数を適用することによって第2の層出力を生成する、請求項18に記載のシステム。
【請求項２０】
前記第1のニューラルネットワーク層が、修正された第1の層入力を生成するためにパラメータのセットの現在値に従って第1の層入力を修正し、次いで前記修正された第1の層入力に非線形活性化関数を適用することによって、前記第1の層出力を生成する、請求項1から17のいずれか一項に記載のシステム。
【請求項２１】
前記ニューラルネットワークが、フィードフォワードニューラルネットワークである、請求項1から20のいずれか一項に記載のシステム。
【請求項２２】
前記ニューラルネットワークが、リカレントニューラルネットワークである、請求項1から21のいずれか一項に記載のシステム。
【請求項２３】
1つまたは複数のコンピュータと、1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、ニューラルネットワークであって、
前記ニューラルネットワークが、ニューラルネットワーク入力を受け取り、前記ニューラルネットワーク入力の各々についてそれぞれのニューラルネットワーク出力を生成するために前記ニューラルネットワークを処理するように構成され、
前記ニューラルネットワークが、請求項1から22のいずれか一項に記載のバッチ再正規化層を含む、
ニューラルネットワークを実装させる命令を記憶する1つまたは複数のストレージデバイスと
を備える、システム。
【請求項２４】
請求項1から22のいずれか一項に記載のバッチ再正規化層によって行われる動作を含む、方法。
【請求項２５】
前記1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに請求項1から23のいずれか一項に記載のニューラルネットワークを実装させる命令を記憶する、1つまたは複数のコンピュータ記憶媒体。
【請求項２６】
前記1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに請求項1から22のいずれか一項に記載のバッチ再正規化層によって行われる動作を行わせる命令を記憶する、1つまたは複数のコンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、出力を生成するためにニューラルネットワークの層を介して入力を処理することに関する。
【背景技術】
【０００２】
ニューラルネットワークは、受信した入力に対する出力を予測するために非線形ユニットの1つまたは複数の層を用いる機械学習モデルである。いくつかのニューラルネットワークは、出力層に加えて1つまたは複数の隠れ層を含む。各隠れ層の出力は、ネットワークの次の層、すなわち次の隠れ層または出力層への入力として使用される。ネットワークの各層が、パラメータのそれぞれのセットの現在値に従って、受信した入力から出力を生成する。
【発明の概要】
【課題を解決するための手段】
【０００３】
本明細書は、1つまたは複数のバッチ再正規化層を含む、1つまたは複数の位置で1つまたは複数のコンピュータにコンピュータプログラムとして実装されるニューラルネットワークシステムについて説明する。
【０００４】
第1の態様によれば、1つまたは複数のコンピュータと、1つまたは複数のコンピュータによって実行されると、1つまたは複数のコンピュータにニューラルネットワークを実装させる命令を記憶する1つまたは複数のストレージデバイスとを備えるシステムが提供され、ニューラルネットワークは、第1のニューラルネットワーク層と、第2のニューラルネットワーク層との間にバッチ再正規化層を備え、第1のニューラルネットワーク層は、複数の成分を有する第1の層出力を生成し、バッチ再正規化層は、トレーニング例の現在のバッチでのニューラルネットワークのトレーニング中に、トレーニング例の前のバッチでのニューラルネットワークのトレーニング中に第1のニューラルネットワーク層によって生成された前の第1の層出力に基づく複数の成分の各々についてそれぞれの現在の移動正規化統計値を取得することと、現在のバッチ中のトレーニング例ごとにそれぞれの第1の層出力を受け取ることと、現在のバッチ中のトレーニング例について第1の層出力から複数の成分の各々についてそれぞれの現在のバッチ正規化統計値を計算することと、現在の移動正規化統計値および現在のバッチ正規化統計値から、複数の成分の各々についてアフィン変換のためのそれぞれのアフィン変換パラメータを決定することと、現在のバッチ中のトレーニング例の各々の第1の層出力の各々に対して、トレーニング例の正規化された層出力を生成するために成分の現在のバッチ正規化統計値を使用して第1の層出力の各成分を正規化し、トレーニング例の再正規化された層出力を生成するために成分のアフィン変換パラメータに従って正規化された層出力の各成分にアフィン変換を適用し、再正規化された層出力からトレーニング例のバッチ再正規化層出力を生成し、第2のニューラルネットワーク層への入力としてバッチ再正規化層出力を提供することとを行うように構成される。
【０００５】
いくつかの実装形態では、バッチ再正規化層は、成分の更新された移動正規化統計値を生成するために、成分の現在のバッチ正規化統計値を使用して、成分ごとの現在の移動正規化統計値を更新するようにさらに構成される。
【０００６】
いくつかの実装形態では、ニューラルネットワークのトレーニング中に、システムは、移動正規化統計値およびアフィン変換のパラメータを定数として扱いながら、ニューラルネットワークのパラメータの調整値の一部として、現在のバッチ正規化統計値により逆伝播するように構成される。
【０００７】
いくつかの実装形態では、複数の成分は、第1の層出力のそれぞれの次元である。
【０００８】
いくつかの実装形態では、第1のニューラルネットワーク層は畳み込み層であり、第1の層出力は複数の特徴マップを含み、各成分がそれぞれの特徴マップである。
【０００９】
いくつかの実装形態では、現在の移動正規化統計値は、成分の各々について、前の第1の層出力についての成分の移動平均と、第1の層出力の成分についての移動近似標準偏差とを含み、第1の層出力について複数の現在のバッチ正規化統計値を計算することが、成分の各々について、現在のバッチ中の第1の層出力について成分の平均を計算することと、現在のバッチ中の第1の層出力の成分について近似標準偏差を計算することとを含む。
【００１０】
いくつかの実装形態では、各第1の層出力の各成分を正規化することは、成分についての計算された平均および計算された近似標準偏差を使用して、第1の層出力の成分を正規化することを含む。
【００１１】
いくつかの実装形態では、成分の各々についてアフィン変換のためのそれぞれのパラメータを決定することは、成分ごとに、(i)成分についての平均と成分についての移動平均との差と、(ii)成分についての移動近似標準偏差との比率から、成分についての第1のパラメータを決定することと、成分についての近似標準偏差と成分についての移動近似標準偏差との比率から、成分についての第2のパラメータを決定することとを含む。
【００１２】
いくつかの実装形態では、パラメータに従って正規化された層出力の各成分にアフィン変換を適用することは、積を生成するために、正規化された層出力の成分に、成分についての第2のパラメータを乗算することと、再正規化された層出力の成分を生成するために、成分についての第1の変換を積に加算することとを含む。
【００１３】
いくつかの実装形態では、第1のパラメータおよび第2のパラメータの値が、所定の範囲に入るよう制約を受ける。
【００１４】
いくつかの実装形態では、成分の近似標準偏差が、成分の分散(variance)と所定の定数値の和の平方根である。
【００１５】
いくつかの実装形態では、再正規化された層出力からトレーニング例についてそれぞれのバッチ再正規化層出力を生成することは、成分ごとに、成分の学習可能なパラメータのセットの現在値に従って、トレーニング例について再正規化された層出力の成分を変換することを含む。
【００１６】
いくつかの実装形態では、バッチ再正規化層は、ニューラルネットワークが成分の各々について学習可能なパラメータのトレーニング値(trained value)を決定するためにトレーニングされた後、新しいニューラルネットワーク入力に対して第1のニューラルネットワーク層によって生成された新しい第1の層出力を受け取ることと、新しい再正規化された層出力を生成するために、成分のそれぞれのあらかじめ計算された正規化統計値を使用して新しい第1の層出力の各成分を正規化することと、成分ごとに、成分の学習可能なパラメータのセットのトレーニング値に従って新しい再正規化された層出力の成分を変換することによって新しいバッチ再正規化層出力を生成することと、バッチ再正規化層出力を新しい層入力として第2のニューラルネットワーク層に提供することとを行うように構成される。
【００１７】
いくつかの実装形態では、成分のあらかじめ計算された正規化統計値は、ニューラルネットワークのトレーニング後の最終的な移動正規化統計値である。
【００１８】
いくつかの実装形態では、成分のあらかじめ計算された正規化統計値は、ニューラルネットワークがトレーニングされた後に第1のニューラルネットワーク層によって生成された新しい第1の層出力から計算される。
【００１９】
いくつかの実装形態では、アフィン変換パラメータは、スケールパラメータおよびバイアスパラメータを含み、それぞれのアフィン変換パラメータを決定することが、完了したトレーニング反復の数がトレーニング反復の所定のしきい値数未満である場合、スケールパラメータ値が1であり、バイアスパラメータ値が0であると決定することを含む。
【００２０】
いくつかの実装形態では、トレーニング例について再正規化された層出力を生成することが、成分が所定の範囲にあるようにするために再正規化された層出力の各成分をクリッピングすることをさらに含む。
【００２１】
いくつかの実装形態では、ニューラルネットワークがトレーニングされた後にニューラルネットワークによって処理される新しいニューラルネットワーク入力は、ニューラルネットワークをトレーニングするために使用されるトレーニング例とは異なるタイプの入力である。
【００２２】
いくつかの実装形態では、第1のニューラルネットワーク層は、第1のニューラルネットワーク層についてのパラメータのセットの現在値に従って第1の層入力を修正することによって第1の層出力を生成する。
【００２３】
いくつかの実装形態では、第2のニューラルネットワーク層は、バッチ再正規化層出力に非線形活性化関数を適用することによって第2の層出力を生成する。
【００２４】
いくつかの実装形態では、第1のニューラルネットワーク層は、修正された第1の層入力を生成するためにパラメータのセットの現在値に従って第1の層入力を修正し、次いで修正された第1の層入力に非線形活性化関数を適用することによって第1の層出力を生成する。
【００２５】
いくつかの実装形態では、ニューラルネットワークは、フィードフォワードニューラルネットワークである。
【００２６】
いくつかの実装形態では、ニューラルネットワークは、リカレントニューラルネットワークである。
【００２７】
第2の態様によれば、1つまたは複数のコンピュータと、1つまたは複数のコンピュータによって実行されると、1つまたは複数のコンピュータにニューラルネットワークを実装させる命令を記憶する1つまたは複数のストレージデバイスとを備えるシステムが提供され、ニューラルネットワークは、ニューラルネットワーク入力を受け取ることと、ニューラルネットワーク入力の各々にそれぞれのニューラルネットワーク出力を生成するためにニューラルネットワークを処理することとを行うように構成され、ニューラルネットワークは、前述のバッチ再正規化層を含む。
【００２８】
第3の態様によれば、前述のバッチ再正規化層によって実施される動作を含む方法が提供される。
【００２９】
第4の態様によれば、1つまたは複数のコンピュータによって実行されると、1つまたは複数のコンピュータに前述のニューラルネットワークを実装させる命令を記憶する1つまたは複数のコンピュータ記憶媒体が提供される。
【００３０】
第5の態様によれば、1つまたは複数のコンピュータによって実行されると、1つまたは複数のコンピュータに前述のバッチ再正規化層によって実施される動作を実施させる命令を記憶する1つまたは複数のコンピュータ記憶媒体が提供される。
【００３１】
本明細書で説明する主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するために実装することができる。
【００３２】
本明細書で説明するニューラルネットワークシステムは、バッチ再正規化層を含み、バッチ再正規化層は、トレーニング中に現在処理されているトレーニング例のバッチの正規化統計値と、トレーニングデータのセット全体としての正規化統計値との差に合わせて調整するための補正ファクタを含むバッチ再正規化層出力を生成する。したがって、本明細書で説明するバッチ再正規化層は、バッチ再正規化層出力が、現在処理されているバッチの特性に左右されるのを解消し、トレーニング中に生成されるバッチ再正規化層出力を、ニューラルネットワークがトレーニングされると生成されるバッチ再正規化層出力によく一致させる。
【００３３】
対照的に、いくつかの従来のニューラルネットワークシステムは、従来のバッチ正規化層を含む。トレーニング中に、従来のバッチ正規化層は、現在処理されているトレーニング例のバッチの正規化統計値に直接左右されるバッチ正規化層出力を生成し、それによって、トレーニング中に生成されるバッチ正規化層出力と、ニューラルネットワークがトレーニングされると生成されるバッチ正規化層出力との間でミスマッチを引き起こす。他の従来のニューラルネットワークシステムは、ネットワーク層間で正規化を行わず、それによって前の層のパラメータが変化するにつれてトレーニング中に各層の入力の分布を変化させ(すなわち、内部共変量シフトと呼ばれることがある現象)、結果としてトレーニングの有効性を低減させる。
【００３４】
したがって、バッチ再正規化層を含むことによって、本明細書で説明するニューラルネットワークシステムは、トレーニング後に優れた性能(たとえば、予測精度)を有し、トレーニング初期化(たとえば、ニューラルネットワークのパラメータがトレーニング前にどのように初期化されるか)にあまり影響を受けず、従来のニューラルネットワークシステムよりも迅速に(すなわち、より少ないトレーニング反復で)トレーニングすることができる。
【００３５】
たとえば、トレーニング中に生成されるバッチ再正規化層出力を、ニューラルネットワークがトレーニングされると生成されるバッチ再正規化層出力によく一致させることによって、バッチ再正規化層は、トレーニング中およびトレーニング後に同様の出力を生成する。したがって、ニューラルネットワークシステムの性能を向上させるためにトレーニング中にニューラルネットワークシステムのパラメータに行われる調整が、トレーニング後のニューラルネットワークシステムの性能の向上も同様にもたらすが、バッチ再正規化層が(たとえば従来のバッチ正規化層のように)トレーニング後にトレーニング中とは異なる出力を生成した場合は必ずしもそうではない。
【００３６】
さらに、本明細書で説明するニューラルネットワークシステムは、従来のニューラルネットワークシステムよりも迅速にトレーニングできるので、トレーニング中に消費する計算リソース(たとえば、メモリおよび計算能力)がより少ない。
【００３７】
本明細書の主題の1つまたは複数の実施形態の詳細について、添付の図面および以下の説明に示す。説明、図面、および特許請求の範囲から、主題の他の特徴、態様、および利点が明らかとなるであろう。
【図面の簡単な説明】
【００３８】
【図１】例示的なニューラルネットワークシステムを示す図である。
【図２】ニューラルネットワークのトレーニング中にバッチ再正規化層を使用して前の層出力を処理するための例示的なプロセスのフロー図である。
【図３】ニューラルネットワークがトレーニングされた後、バッチ再正規化層を使用して前の層出力を処理するための例示的なプロセスのフロー図である。
【発明を実施するための形態】
【００３９】
様々な図面における同じ参照番号および名称は、同じ要素を示す。
【００４０】
図1は、例示的なニューラルネットワークシステム100を示す。ニューラルネットワークシステム100は、以下で説明するシステム、構成要素、および技法を実装することができる、1つまたは複数の場所の1つまたは複数のコンピュータ上にコンピュータプログラムとして実装されるシステムの一例である。
【００４１】
ニューラルネットワークシステム100は、ニューラルネットワーク120を含み、ニューラルネットワーク120は、複数のニューラルネットワーク層を含む。ニューラルネットワーク120は、層の各々を介してニューラルネットワーク入力を処理することによってニューラルネットワーク入力からニューラルネットワーク出力を生成する。ニューラルネットワーク120は、フィードフォワードニューラルネットワーク(たとえば、多層パーセプトロンもしくは畳み込みニューラルネットワーク)、リカレントニューラルネットワーク(たとえば、長短期記憶(long short-term memory)ネットワーク)、またはいずれか他の種類のニューラルネットワークであることがある。
【００４２】
ニューラルネットワーク120は、任意の種類のデジタルデータ入力を受け取ることと、入力に基づいて任意の種類のスコアまたは分類出力を生成することとを行うように構成することができる。
【００４３】
たとえば、ニューラルネットワーク120への入力が、画像または画像から抽出された特徴である場合、所与の画像に対してニューラルネットワーク120によって生成される出力は、物体カテゴリのセットの各々に対するスコアであってもよく、各スコアは、画像がカテゴリに属する物体の画像を含んでいる推定尤度(estimated likelihood)を表す。
【００４４】
別の例として、ニューラルネットワーク120への入力がインターネットリソース(たとえば、ウェブページ)、文書、または文書の一部、またはインターネットリソース、文書、もしくは文書の一部から抽出された特徴である場合、所与のインターネットリソース、文書、または文書の一部に対してニューラルネットワーク120によって生成される出力は、トピックのセットの各々に対するスコアであってもよく、各スコアは、インターネットリソース、文書、または文書部分がトピックに関するものである推定尤度を表す。
【００４５】
別の例として、ニューラルネットワーク120への入力が、特定の広告に対するインプレッションコンテキスト(impression context)の特徴である場合、ニューラルネットワーク120によって生成される出力は、特定の広告がクリックされる推定尤度を表すスコアであってもよい。
【００４６】
別の例として、ニューラルネットワーク120への入力が、ユーザに対する個人化された推薦の特徴、たとえば推薦のためのコンテキストを描写する特徴、たとえばユーザがとった前のアクションを描写する特徴である場合、ニューラルネットワーク120によって生成される出力は、コンテンツアイテムのセットの各々に対するスコアであってもよく、各スコアは、ユーザがコンテンツアイテムの推薦に好意的に反応する推定尤度を表す。
【００４７】
別の例として、ニューラルネットワーク120への入力が1つの言語のテキストである場合、ニューラルネットワーク120によって生成される出力は、別の言語のいくつかのテキストのセットの各々に対するスコアであってもよく、各スコアは、その別の言語のテキストが、入力されたテキストを別の言語に適切に翻訳したものである推定尤度を表す。
【００４８】
別の例として、ニューラルネットワーク120への入力が、口頭発話、一連の口頭発話、またはこの2つのうちの一方から導出される特徴である場合、ニューラルネットワーク120によって生成される出力は、いくつかのテキストのセットの各々に対するスコアであってもよく、各スコアは、テキストが発話または一連の発話に対する正しい文字起こしである推定尤度を表す。
【００４９】
別の例では、ニューラルネットワーク120は、オートコンプリーションシステムの一部またはテキスト処理システムの一部であることがある。
【００５０】
別の例として、ニューラルネットワーク120は、強化学習システムの一部であることがあり、環境と相互に作用するエージェントによって行われるアクションを選択するために使用される出力を生成することができる。
【００５１】
詳細には、ニューラルネットワーク120の層の各々が、入力を受け取り、入力から出力を生成するように構成される。ニューラルネットワーク層は、ニューラルネットワーク120によって受け取られたニューラルネットワーク入力を、受け取られた各ニューラルネットワーク入力に対してそれぞれのニューラルネットワーク出力を生成するために、一括して処理する。ニューラルネットワーク層の一部または全部は、ニューラルネットワーク層についてのパラメータのセットの現在値に従って入力から出力を生成する。たとえば、いくつかの層は、受け取った入力から出力を生成することの一部として、受け取った入力に現在のパラメータ値の行列を乗算してもよい。
【００５２】
ニューラルネットワーク120はまた、ニューラルネットワーク層A 104とニューラルネットワーク層B 112との間にバッチ再正規化層108を含む。バッチ再正規化層108は、ニューラルネットワーク120のトレーニング中には、ニューラルネットワーク層A 104から入力を受け取った後に動作の1つのセットを、ニューラルネットワーク120がトレーニングされた後には、ニューラルネットワーク層A 104から入力を受け取った後に動作の別のセットを行うように構成される。
【００５３】
詳細には、ニューラルネットワーク120は、ニューラルネットワーク層のパラメータのトレーニング値を決定するために、トレーニング例の複数のバッチでトレーニングすることができる。トレーニング例のバッチは、複数のトレーニング例のセットである。たとえば、トレーニング中にニューラルネットワーク120は、トレーニング例102のバッチを処理し、バッチ102のトレーニング例ごとにそれぞれのニューラルネットワーク出力を生成することができる。ニューラルネットワーク出力は、次いで、たとえば従来の勾配降下法および逆伝播ニューラルネットワークトレーニング技法により、ニューラルネットワーク層のパラメータの値を調整するために使用することができる。
【００５４】
トレーニング例の所与のバッチ上でのニューラルネットワーク120のトレーニング中に、バッチ再正規化層108は、バッチ中のトレーニング例についてニューラルネットワーク層A 104によって生成された層A出力106を受け取り、バッチ中のトレーニング例ごとにそれぞれのバッチ再正規化層出力110を生成するために層A出力106を処理し、次いでニューラルネットワーク層B 112への入力としてバッチ再正規化層出力110を提供するように構成される。層A出力106は、バッチ中のトレーニング例ごとにニューラルネットワーク層A 104によって生成されたそれぞれの出力を含む。同様に、バッチ再正規化層出力110は、バッチ中のトレーニング例ごとにバッチ再正規化層108によって生成されたそれぞれの出力を含む。
【００５５】
一般に、トレーニング中にバッチ再正規化層108は、(i)現在のバッチ中のトレーニング例ごとにそれぞれの正規化された出力を生成するために、現在のバッチの正規化統計値を使用して層A出力106を正規化し、(ii)現在のバッチ中のトレーニング例ごとにそれぞれの再正規化された出力を生成するためにアフィン変換(すなわち、スケールパラメータおよびバイアスパラメータによってパラメータ化される変換)を使用して、正規化された出力を再正規化し、場合によっては(iii)ニューラルネットワーク層B 112への入力として出力を提供する前に、再正規化された出力の各々を変換する。
【００５６】
再正規化された出力を生成するために、バッチ再正規化層108によって、正規化された出力に適用されるアフィン変換は、現在のバッチの正規化統計値と、トレーニングデータのセット全体としての正規化統計値との差を補正する。したがって、アフィン変換は、バッチ再正規化層出力が現在のバッチの特性に左右されるのを解消する。
【００５７】
以下でより詳細に説明するように、ニューラルネットワーク120がトレーニングされると、バッチ再正規化層108は、トレーニングデータの特定のバッチの正規化統計値に同じく左右されない、あらかじめ計算された正規化統計値に基づいて層A出力106を正規化することによってバッチ再正規化層出力110を生成する。したがって、再正規化された出力を生成するためにアフィン変換を適用することによって、ニューラルネットワーク120は、トレーニング中にバッチ再正規化層108によって生成されるバッチ再正規化層出力110を、ニューラルネットワーク120がトレーニングされると生成されるバッチ再正規化層出力110によく一致させ、それによってたとえばトレーニング後のニューラルネットワーク120の性能を向上させる。詳細には、トレーニング中にバッチ再正規化層108によって生成されるバッチ再正規化層出力110は、ニューラルネットワーク120がトレーニングされると生成されるバッチ再正規化層出力110によく一致しているので、ニューラルネットワーク120は、トレーニング中およびトレーニング後に同様の出力を生成する。これにより、ニューラルネットワーク120の性能を上げるためにトレーニング中のニューラルネットワーク120のパラメータに調整が行われると、結果としてトレーニング後のニューラルネットワーク120の性能も同様に向上するが、バッチ再正規化層108が(たとえば、従来のバッチ再正規化層と同様に)トレーニング中ではなくトレーニング後に異なる出力を生成した場合は必ずしもそうではない。
【００５８】
システム100は、ニューラルネットワーク120の選択されたパラメータに関する損失関数の勾配を計算すること、および選択されたパラメータの値を調整するためにニューラルネットワーク120を介して勾配を逆伝播することによってニューラルネットワーク120をトレーニングする。詳細には、システム100は、現在のバッチの正規化統計値を介して逆伝播すると同時に、バッチ再正規化層108のアフィン変換のパラメータを定数として扱うことによって、ニューラルネットワーク120をトレーニングするように構成される。バッチの正規化統計値を介する逆伝播とは、正規化統計値を含むニューラルネットワーク120のパラメータに関する損失関数の勾配を計算することによって勾配降下法を行うことを指す。アフィン変換のパラメータを定数として扱うこととは、勾配計算からそれらを除くことを指す。
【００５９】
正規化統計値、およびバッチ再正規化層108によって計算されるアフィン変換のパラメータ、および、バッチ再正規化層108がトレーニング中に層A出力106を正規化し、再正規化する方法は、層A出力106を生成するニューラルネットワーク層A 104の性質に左右される。
【００６０】
いくつかの場合には、ニューラルネットワーク層A 104は、単一次元によってインデックスされた複数の成分を含む出力を生成する層である。たとえば、ニューラルネットワークA 104は、全結合ニューラルネットワーク層であってよい。
【００６１】
いくつかの他の場合には、しかしながら、ニューラルネットワーク層A 104は、特徴インデックスおよび空間的位置インデックスの両方によって各々がインデックスされた複数の成分を含む出力を生成する、畳み込み層または他の種類のニューラルネットワーク層である。これらの2つの場合の各々にニューラルネットワーク120のトレーニング中にバッチ再正規化層出力を生成することについて、図2を参照しながらさらに詳細に説明する。
【００６２】
ニューラルネットワーク120が(すなわち、システム100によって)トレーニングされると、ニューラルネットワーク120は、処理するための新しいニューラルネットワーク入力を受け取り、ニューラルネットワーク120のパラメータのトレーニング値に従って入力に対する新しいニューラルネットワーク出力を生成するために、ニューラルネットワーク層を介してニューラルネットワーク入力を処理してもよい。新しいニューラルネットワーク入力の処理中にバッチ再正規化層108によって行われる動作もまた、ニューラルネットワーク層A 104に左右される。ニューラルネットワーク100がトレーニングされた後に新しいニューラルネットワーク入力を処理することについて、図3を参照しながらさらに詳細に説明する。
【００６３】
バッチ再正規化層108は、ニューラルネットワークの様々な場所に(すなわち、任意の適切なニューラルネットワーク層間に)含まれてもよく、いくつかの実装形態では、複数のバッチ再正規化層がニューラルネットワークに含まれてもよい。
【００６４】
図1の例では、いくつかの実装形態において、ニューラルネットワーク層A 104は、第1のニューラルネットワーク層に対するパラメータのセットの現在値に従って層への入力を修正することによって、たとえば層への入力に現在のパラメータ値の行列を乗算することによって出力を生成する。これらの実装形態では、ニューラルネットワーク層B 112は、バッチ再正規化層108からの出力を受け取り、非線形演算、すなわち非線形活性化関数をバッチ再正規化層出力110に適用することによって出力を生成してもよい。したがって、これらの実装形態では、バッチ再正規化層108は、従来のニューラルネットワーク層内に挿入され、従来のニューラルネットワーク層の動作は、ニューラルネットワーク層A 104とニューラルネットワーク層B 112との間で分割される。
【００６５】
いくつかの他の実装形態では、ニューラルネットワーク層A 104は、修正された第1の層入力を生成するためにパラメータのセットの現在値に従って層入力を修正すること、次いで修正された第1の層入力に非線形演算を適用することによって出力を生成した後、バッチ再正規化層108へ出力を提供する。したがって、これらの実装形態では、バッチ再正規化層108は、従来のニューラルネットワーク層の後に挿入される(すなわち、従来のニューラルネットワーク層からの入力を受け取る)。
【００６６】
図2は、ニューラルネットワークのトレーニング中にバッチ再正規化層を使用して前の層出力を処理するための例示的なプロセスのフロー図である。便宜上、プロセス200は、1つまたは複数の場所にある1つまたは複数のコンピュータのシステムによって行われるものとして説明する。たとえば、ニューラルネットワークシステムに含まれるバッチ再正規化層、たとえば図1のニューラルネットワークシステム100に含まれるバッチ再正規化層108は、適切にプログラムされて、プロセス200を行うことができる。
【００６７】
バッチ再正規化層は、トレーニング例のバッチに対する前の層出力を受け取る(ステップ202)。前の層出力は、ニューラルネットワークのバッチ再正規化層の前の層(すなわち、それの出力をバッチ再正規化層への入力として提供するように構成された層)によってバッチ中のトレーニング例ごとに生成されたそれぞれの出力を含む。
【００６８】
バッチ再正規化層は、バッチ中のトレーニング例ごとにそれぞれの正規化された出力を生成する(ステップ204)。すなわち、バッチ再正規化層は、各々受信した前の層出力からそれぞれの正規化された出力を生成する。具体的には、システムは、前の層出力の各成分に対応する正規化統計値を決定し、対応する正規化統計値を使用して、各々受信した前の層出力の各成分を正規化することによって、受信した前の層出力からそれぞれの正規化された出力を生成する。
【００６９】
いくつかの場合には、バッチ再正規化層の前の層は、単一次元によってインデックスされた複数の成分を含む出力を生成する層(たとえば、全結合層)である。これらの場合、バッチ再正規化層は、各次元について、その次元に対応する前の層出力の成分の平均および標準偏差を含む正規化統計値を計算する。成分に対応する正規化統計値は、成分に対応する次元の正規化統計値によって求められる。
【００７０】
これらの場合のいくつかでは、バッチ再正規化層は、各次元について、その次元に対応する下位層出力の成分の平均および標準偏差を含む正規化統計値を計算する。バッチ再正規化層は次いで、バッチ中のトレーニング例の各々に対してそれぞれの正規化された出力を生成するために、正規化統計値を使用して下位レベル出力の各々の各成分を正規化する。詳細には、所与の前の層出力の成分について、バッチ再正規化層は、成分に対応する次元に対して計算された平均および標準偏差を使用して成分を正規化する。たとえば、いくつかの実装形態では、バッチBからのi番目の下位層出力のk次元に対応する成分xk, iに対して、正規化された出力
【数１】
0006876814.tif 000002
は、
【数２】
0006876814.tif 000003
を満たし、ここでμBは、バッチBの前の層出力のk次元に対応する成分の平均であり、σBは、バッチBの下位層出力のk次元に対応する成分の標準偏差である。いくつかの実装形態では、標準偏差は、
【数３】
0006876814.tif 000004
に等しい数値的に安定した標準偏差であり、ここでεは定数値(たとえば、小さい正の定数)であり、
【数４】
0006876814.tif 000005
は、バッチBの下位層出力のk次元に対応する成分の分散である。
【００７１】
いくつかの他の場合には、バッチ再正規化層の前のニューラルネットワーク層は、特徴インデックスおよび空間的位置インデックスの両方によって各々インデックスされた複数の成分を含む出力を生成するニューラルネットワーク層(たとえば、畳み込み層)である。これらの場合、バッチ再正規化層は、特徴インデックスごとに、その特徴インデックスに対応する下位層出力の成分の平均および標準偏差を含む正規化統計値を計算する。成分に対応する正規化統計値は、成分に対応する特徴インデックスの正規化統計値によって求められる。
【００７２】
これらの場合のうちのいくつかでは、バッチ再正規化層は、各々の考えられる特徴インデックスおよび空間的位置インデックスの組合せに対して、その特徴インデックスおよび空間的位置インデックスを有する前の層出力の成分の平均および分散を計算する。バッチ再正規化層は次いで、特徴インデックスおよび特徴インデックスを含む空間的位置インデックスの組合せに対する平均の算術平均(average)と、特徴インデックスおよび特徴インデックスを含む空間的位置の組合せに対する分散の算術平均とを計算することによって、特徴インデックスごとの正規化統計値を計算する。
【００７３】
バッチ再正規化層は次いで、バッチ中のトレーニング例の各々に対してそれぞれの正規化された出力を生成するために、正規化統計値を使用して下位レベル出力の各々の各成分を正規化する。詳細には、所与の出力の所与の成分について、バッチ再正規化層は、たとえばバッチ再正規化層の前の層が単一次元によってインデックスされた出力を生成するとき、上記で説明したのと同じ方法で、成分に対応する特徴インデックスの算術平均の平均(average mean)および算術平均の分散(average variance)を使用して成分を正規化する
【００７４】
これら場合のうちの他では、バッチ再正規化層は、特徴インデックスごとに、特徴インデックスに対応する、すなわち特徴インデックスを有する前の層出力の成分の平均および分散を計算することによって、正規化統計値を計算する。バッチ再正規化層は次いで、バッチ中のトレーニング例の各々に対してそれぞれの正規化された出力を生成するために、特徴インデックスの正規化統計値を使用して前の層出力の各々の各成分を正規化する。詳細には、所与の出力の所与の成分について、バッチ再正規化層は、たとえばバッチ再正規化層の前の層が単一次元によってインデックスされた出力を生成するとき、上記で説明したのと同じ方法で、成分に対応する特徴インデックスの平均および分散を使用して成分を正規化する。
【００７５】
バッチ再正規化層は、バッチ中のトレーニング例ごとにそれぞれの再正規化された出力を生成する(ステップ206)。具体的には、バッチ再正規化層は、前の層出力の成分ごとのアフィン変換を決定する。バッチ再正規化層は、前の層出力に対応する正規化された出力の各成分を、成分に対応するアフィン変換によって変換することによって、前の層出力ごとにそれぞれの再正規化された出力を生成する。
【００７６】
バッチ再正規化層は、成分の正規化統計値(すなわち、204に関して説明したように)および成分の移動正規化統計値に基づいて成分についてのアフィン変換のパラメータを決定する。
【００７７】
詳細には、バッチ再正規化層は、成分ごとの移動正規化統計値を維持する。成分の移動正規化統計値は、成分の正規化統計値の移動平均(具体的には、平均および標準偏差正規化統計値)である。移動平均は、前のトレーニング反復中に処理されたトレーニング例のバッチの成分について決定された正規化統計値に関して計算される。バッチ再正規化層は、210に関してさらに説明するように、各トレーニング反復で成分ごとの移動正規化統計値を更新する。
【００７８】
バッチ再正規化層は、成分についてのアフィン変換のスケールパラメータおよびバイアスパラメータを
【数５】
0006876814.tif 000006
として決定する。ここでrはスケールパラメータであり、dはバイアスパラメータであり、σBは現在のバッチについての成分の標準偏差正規化統計値であり、σは成分の標準偏差移動正規化統計値であり、μBは現在のバッチについての成分の平均正規化統計値であり、μは成分の平均移動正規化統計値である。
【００７９】
いくつかの実装形態では、所定数の初期トレーニング反復について、成分ごとのアフィン変換のスケールパラメータおよびバイアスパラメータの値は、それぞれ値1および0に固定される。アフィン変換のパラメータの値がこれらの値に固定されるとき、バッチ再正規化層の動作は、従来のバッチ正規化層の動作と同じである。
【００８０】
いくつかの実装形態では、成分ごとのアフィン変換のスケールパラメータおよびバイアスパラメータの値は、所定の範囲にあるように制限される。たとえば、成分ごとのスケールパラメータの値は、
【数６】
0006876814.tif 000007
の形式の範囲にあるように制限されてもよく、ここでrmaxは正の値(たとえば、任意または交差検証ハイパーパラメータ選択プロセスによって選択される)であり、成分ごとのバイアスパラメータの値は、
[-dmax, dmax]
の形式の範囲にあるように制限されてもよく、ここでdmaxは正の値である。アフィン変換のパラメータの値が、所定の範囲外にあると決定される場合、バッチ再正規化層は、パラメータ値が所定の範囲にあるようにするためにパラメータ値をクリッピングする。アフィン変換パラメータの許容値の所定の範囲は、トレーニング反復間で異なる場合がある。たとえば、アフィン変換パラメータの許容値の所定の範囲のサイズは、サイズが所定の最大値に達するまで、反復数につれて徐々に拡大してもよい。
【００８１】
バッチ再正規化層は、バッチ中のトレーニング例の各々に対してそれぞれの再正規化された出力を生成するために、アフィン変換を使用して正規化された出力の各々の各成分を正規化する。詳細には、所与の正規化された出力の所与の成分について、バッチ再正規化層は、たとえば
【数７】
0006876814.tif 000008
のように、成分に対してパラメータを決定したアフィン変換を使用して、再正規化された出力の対応する成分を生成し、ここで
【数８】
0006876814.tif 000009
は、再正規化された出力の成分であり、
【数９】
0006876814.tif 000010
は、正規化された出力の成分であり、rは、成分に対するアフィン変換のスケールパラメータであり、dは、成分に対するアフィン変換のバイアスパラメータである。
【００８２】
場合によっては、バッチ再正規化層は、再正規化された各出力の各成分を、固定範囲、たとえば範囲[-c, +c]にあるようにクリッピングし、ここでcは正の数である。このクリッピング動作は、再正規化された出力の成分中の外れ値(すなわち、バッチの他のトレーニング例からの対応する成分よりもはるかに大きいまたははるかに小さい成分)を除去する効果を有する。次にこれは、大きい勾配がシステムを介して逆伝播され、トレーニングを不安定にする可能性を低減する。
【００８３】
バッチ再正規化層は、バッチ中のトレーニング例ごとにそれぞれのバッチ再正規化層出力を生成する(208)。
【００８４】
いくつかの実装形態では、バッチ再正規化層は、バッチ再正規化層の学習可能なパラメータのセットの現在値に従って、トレーニング例についての再正規化された出力を変換することによって(すなわち、206で決定されるように)、トレーニング例についてのバッチ再正規化層出力を決定する。
【００８５】
バッチ再正規化層の前の層が、単一次元によってインデックスされた複数の成分を含む出力を生成する層であるとき、バッチ再正規化層は、次元ごとに、その次元の再正規化された各出力の成分を、その次元のパラメータのセットの現在値に従って変換する。すなわち、バッチ再正規化層は、次元ごとにパラメータのそれぞれのセットを維持し、その次元の再正規化された出力の成分に変換を適用するためにそれらのパラメータを使用する。パラメータのセットの値は、ニューラルネットワークシステムのトレーニングの一部として調整される。たとえば、いくつかの場合には、i番目の再正規化された出力のk次元に対応する成分
【数１０】
0006876814.tif 000011
について、i番目のバッチ再正規化層のk次元の出力yk,iは、
【数１１】
0006876814.tif 000012
を満たし、ここでγkおよびβkは、k次元の学習可能パラメータである。
【００８６】
バッチ再正規化層の前の層が、特徴インデックスおよび空間的位置インデックスの両方によって各々インデックスされた複数の成分を含む出力を生成するニューラルネットワーク層であるとき、バッチ再正規化層は、再正規化された出力の各々の成分ごとに、成分に対応する特徴インデックスについてのパラメータのセットの現在値に従って成分を変換する。すなわち、バッチ再正規化層は、特徴インデックスごとにパラメータのそれぞれのセットを維持し、たとえばバッチ再正規化層の下の層が単一次元によってインデックスされた出力を生成するとき、上記で説明したのと同じ方法で、特徴インデックスを有する再正規化された出力の成分に変換を適用するためにそれらのパラメータを使用する。パラメータのセットの値は、ニューラルネットワークシステムのトレーニングの一部として調整される。
【００８７】
いくつかの他の実装形態では、バッチ再正規化層は、トレーニング例に対する再正規化された出力となるように(すなわち、206で決定されるように)、トレーニング例に対するバッチ再正規化層出力を決定する。
【００８８】
バッチ再正規化層は、移動正規化統計値の値を更新する(210)。バッチ再正規化層は、前の層出力の成分ごとの移動正規化統計値を維持し、移動正規化統計値は、前のトレーニング反復にわたって処理されたトレーニング例のバッチについての成分の正規化統計値の移動平均(具体的には、204で説明した平均および標準偏差正規化統計値)である。バッチ再正規化層は、たとえば
μ←μ+α(μB-μ)
σ←σ+α(σB-σ)
の関係に従って、各トレーニング反復で成分ごとの移動正規化統計値を更新し、ここで←は代入演算を示し、σBはバッチの成分の標準偏差正規化統計値であり、σは成分の標準偏差移動正規化統計値であり、μBは成分のバッチの成分の平均正規化統計値であり、μは成分の平均移動正規化統計値である。
【００８９】
バッチ再正規化層は、バッチ再正規化層の後の層への(すなわち、バッチ再正規化層出力を受け取るように構成された層への)入力として、バッチ再正規化層出力を提供する(ステップ212)。
【００９０】
図3は、ニューラルネットワークがトレーニングされた後、バッチ再正規化層を使用して前の層出力を処理するための例示的なプロセスのフロー図である。便宜上、プロセス300は、1つまたは複数の場所にある1つまたは複数のコンピュータのシステムによって行われるものとして説明する。たとえば、ニューラルネットワークシステムに含まれるバッチ再正規化層、たとえば図1のニューラルネットワークシステム100に含まれるバッチ再正規化層108は、適切にプログラムされて、プロセス300を行うことができる。
【００９１】
バッチ再正規化層は、現在処理されているニューラルネットワーク入力に対する前の層出力を受け取る(ステップ302)。
【００９２】
バッチ再正規化層は、ニューラルネットワーク入力に対して正規化された出力を生成する(ステップ304)。具体的には、バッチ再正規化層は、前の層出力の各成分を、成分のあらかじめ計算された正規化統計値に従って調整する。いくつかの場合には、成分のあらかじめ計算された正規化統計値は、あらかじめ計算された平均正規化統計値μおよびあらかじめ計算された標準偏差正規化統計値σによって求められ、バッチ再正規化層は、前の層出力の対応する成分xから正規化された出力の成分
【数１２】
0006876814.tif 000013
を
【数１３】
0006876814.tif 000014
のように生成する。
【００９３】
いくつかの実装形態では、成分のあらかじめ計算された正規化統計値は、ニューラルネットワークトレーニングの最後の反復後の成分の移動正規化統計値の値(すなわち、210に関して説明した)によって求められる。
【００９４】
いくつかの他の実装形態では、成分のあらかじめ計算された正規化統計値は、ニューラルネットワークが前の層によって生成された出力に基づいてトレーニングされると同時に、ニューラルネットワークをトレーニングするために使用されるトレーニングデータに含まれないニューラルネットワーク入力を処理した後に生成される。
【００９５】
詳細には、いくつかの場合には、ネットワーク入力の分布、したがって、前の層出力の分布は、たとえば新しいニューラルネットワーク入力がトレーニング例とは異なる種類の入力である場合、トレーニング中に使用されるトレーニング例と、ニューラルネットワークシステムがトレーニングされた後に使用される新しいニューラルネットワーク入力との間で変わる場合がある。たとえば、ニューラルネットワークは、ユーザ画像上でトレーニングされた場合があり、現在ビデオフレームを処理するために使用される場合がある。ユーザ画像およびビデオフレームは、描かれるクラス、画像プロパティ、構図などの観点で異なる分布を有すると思われる。したがって、トレーニングデータに基づく正規化統計値は、新しい入力に対して生成されている前の層出力の統計値を正確に取り込まない場合がある。したがって、これらの場合には、バッチ再正規化層は、トレーニング後にバッチ再正規化層の下の層によって生成された下位層出力から計算された正規化統計値を使用することができる。
【００９６】
204に関して説明したように、正規化統計値の計算は、前の層出力の成分が、単一次元によってインデックスされるか(たとえば、前の層が全結合層である場合)、それとも特徴インデックスおよび空間的インデックスによって一緒にインデックスされるか(たとえば、前の層が畳み込み層である場合)に左右される。
【００９７】
バッチ再正規化層は、ニューラルネットワーク入力に対してバッチ再正規化層出力を生成する(306)。
【００９８】
いくつかの実装形態では、バッチ再正規化層は、(208に関して説明する)成分に関連する学習可能なパラメータのセットのトレーニング値に従って、ニューラルネットワーク入力に対する正規化された出力の各成分を変換することによって、ニューラルネットワーク入力に対するバッチ再正規化層出力を決定する。場合によっては、成分に関連する学習可能なパラメータのセットのトレーニング値に従って、正規化された出力の各成分を変換するより前に、バッチ再正規化層は、(206に関して説明したように)正規化された出力を、固定範囲にあるようにクリッピングしてもよい。
【００９９】
いくつかの他の実装形態では、バッチ再正規化層は、ニューラルネットワーク入力に対する正規化された出力となるように、ニューラルネットワーク入力に対するバッチ再正規化層出力を決定する。
【０１００】
バッチ再正規化層は、バッチ再正規化層の後の層への入力としてバッチ再正規化層出力を提供する(308)。
【０１０１】
本明細書は、システムおよびコンピュータプログラムコンポーネントに関連して「構成される」という用語を使用する。1つまたは複数のコンピュータのシステムが特定の動作またはアクションを行う「ように構成される」とは、動作時にシステムに動作またはアクションを行わせるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをシステムがインストールしていることを意味する。1つまたは複数のコンピュータが特定の動作またはアクションを行うように構成されるとは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に動作またはアクションを行わせる命令を含むことを意味する。
【０１０２】
本明細書で説明する主題および機能的動作の実施形態は、デジタル電子回路において、有形に具現化されたコンピュータソフトウェアもしくはファームウェアにおいて、本明細書で開示する構造およびそれらの構造的に同等のものを含む、コンピュータハードウェアにおいて、またはそれらの1つもしくは複数の組合せにおいて実装されることがある。本明細書で説明する主題の実装形態は、1つまたは複数のコンピュータプログラムとして実装されることがあり、すなわちデータ処理装置によって実行されるように、またはデータ処理装置の動作を制御するために、有形の非一時的記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装されることがある。コンピュータ記憶媒体は、機械可読ストレージデバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つもしくは複数の組合せであることがある。代替的にまたは追加として、プログラム命令は、人為的に生成された伝搬信号、たとえばデータ処理装置による実行のために好適な受信装置に送信するための情報を符号化するために生成される機械生成の電気、光、または電磁信号上で符号化されることがある。
【０１０３】
「データ処理装置」という用語は、データ処理ハードウェアを指し、例としてプログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置は、専用の論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)であることもあり、またはこれらをさらに含むことがある。装置は、場合によってはハードウェアに加えて、コンピュータプログラムのための実行環境を作成するコード、たとえばプロセッサファームウェアを構成するコード、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つもしくは複数の組合せを含むことができる。
【０１０４】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードと呼ばれる、または説明される場合もあるコンピュータプログラムは、コンパイラ型もしくはインタープリタ型言語、または宣言型もしくは手続き型言語を含む、プログラム言語の任意の形態で書くことができ、またデジタルコンピュータプログラムは、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境で使用するのに適した他のユニットとしてなど、任意の形態で展開されることがある。プログラムは、ファイルシステムのファイルに対応してもよいが、対応する必要はない。プログラムは、他のプログラムまたはデータ、たとえばマークアップ言語ドキュメントに記憶された1つまたは複数のスクリプトを入れたファイルの一部分に、当該プログラムに専用の単一ファイルに、または複数の協調ファイル(coordinated file)、たとえば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(液晶ディスプレイ)モニタ、ならびにユーザがそれによってコンピュータへの入力を行うことができるキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールを有するコンピュータに実装されることがある。ユーザとの対話を可能にするために他の種類のデバイスが使用されることもあり、たとえばユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば視覚フィードバック、聴覚フィードバック、もしくは触覚フィードバックであることが可能であり、ユーザからの入力は、音響入力、音声入力、もしくは触覚入力など、任意の形態で受け取ることができる。加えて、コンピュータが、ユーザによって使用されるデバイスに文書を送信し、そのデバイスから文書を受け取ることによって、たとえばウェブブラウザから受け取られる要求に応答してユーザのデバイス上のウェブブラウザにウェブページを送信することによってユーザと対話することができる。また、コンピュータが、パーソナルデバイス、たとえばメッセージングアプリケーションを実行しているスマートフォンに、テキストメッセージまたは他の形態のメッセージを送信し、返信としてユーザから応答メッセージを受け取ることによってユーザと対話することができる。
【０１１０】
機械学習モデルを実装するためのデータ処理装置は、たとえば機械学習トレーニングまたは製作の共通のおよび計算負荷の高い(compute-intensive)部分すなわち、推論、作業負荷を処理するための専用ハードウェアアクセラレータユニットを含むこともできる。
【０１１１】
機械学習モデルは、機械学習フレームワーク、たとえばTensorFlowフレームワーク、Microsoft Cognitive Toolkitフレームワーク、Apache Singaフレームワーク、またはApache MXNetフレームワークを使用して実装し、展開することができる。
【０１１２】
本明細書で説明する主題の実施形態は、たとえばデータサーバとして、バックエンド構成要素を含むコンピューティングシステム、またはミドルウェア構成要素、たとえばアプリケーションサーバを含むコンピューティングシステム、またはフロントエンド構成要素、たとえばグラフィカルユーザインタフェース、ウェブブラウザ、もしくはそれによりユーザが本明細書で説明する主題の実装形態と対話することができるアプリを有するクライアントコンピュータを含むコンピューティングシステム、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムにおいて実装可能である。システムの構成要素は、デジタルデータ通信の任意の形態または媒体、たとえば通信ネットワークによって相互接続可能である。通信ネットワークの例には、ローカルエリアネットワーク(LAN)、およびワイドエリアネットワーク(WAN)、たとえばインターネットが含まれる。
【０１１３】
コンピューティングシステムは、クライアントと、サーバとを含むことができる。クライアントおよびサーバは、一般的に互いから遠くにあり、典型的には通信ネットワークを介して対話する。クライアントとサーバの関係は、それぞれのコンピュータで実行している、互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバがユーザデバイスに、たとえばクライアントの役割を果たすデバイスと対話するユーザにデータを表示し、ユーザからユーザ入力を受け取るために、データ、たとえばHTMLページを伝送する。ユーザデバイスで生成されたデータ、たとえばユーザ対話の結果が、デバイスからサーバで受け取られることがある。
【０１１４】
本明細書は、多くの特定の実装形態の詳細を含むが、これらは任意の発明の範囲への、または特許請求される可能性のあるものの範囲への制限として解釈されるべきではなく、むしろ特定の発明の特定の実施形態に固有である場合がある特徴の説明として解釈されるべきである。本明細書で別個の実施形態の文脈で説明されるいくつかの特徴は、単一の実施形態において組み合わせて実装されることもある。逆に、単一の実施形態の文脈で説明される様々な特徴は、複数の実施形態において別々に、または任意の適切な部分的組合せで実装されることもある。さらに、特徴は、ある組合せで機能するものとして上記で説明され、さらに当初はそのように特許請求される場合があるが、特許請求される組合せからの1つまたは複数の特徴は、場合によってはその組合せから削除されることがあり、特許請求される組合せは、部分的組合せ、または部分的組合せの変形を対象とすることがある。
【０１１５】
同様に、動作は特定の順序で図面に示され、特許請求の範囲に記載されるが、これは、望ましい結果を得るために、このような動作が図示された特定の順序でもしくは順次に行われること、または例示したすべての動作が行われることを必要とするものと理解されるべきではない。いくつかの環境では、マルチタスクおよび並列処理が有利である場合がある。さらに、上記で説明した実施形態における様々なシステムモジュールおよび構成要素の分離は、すべての実施形態においてそのような分離を必要とすると理解されるべきではなく、記載するプログラム構成要素およびシステムは、一般的に単一のソフトウェア製品に統合される、または複数のソフトウェア製品にパッケージ化されることがあると理解されるべきである。
【０１１６】
主題の特定の実施形態について説明した。他の実施形態も、特許請求の範囲内である。たとえば、特許請求の範囲に記載するアクションは、異なる順序で行われ、やはり望ましい結果を実現することがある。一例として、添付図に示すプロセスは、望ましい結果を達成するために、図示した特定の順序、または一連の順序を必ずしも必要としない。場合によっては、マルチタスクおよび並列処理が有利である可能性がある。
【符号の説明】
【０１１７】
100  ニューラルネットワークシステム
102  トレーニング例
104  ニューラルネットワーク層A
106  層A出力
108  バッチ再正規化層
110  バッチ再正規化層出力
112  ニューラルネットワーク層B
120  ニューラルネットワーク
【図１】
0006876814.tif 000015
【図２】
0006876814.tif 000016
【図３】
0006876814.tif 000017