(57)【要約】【課題】深層学習ニューラル・ネットワーク（ＤＮＮ）の訓練に適応性のある残差勾配圧縮のためのコンピュータ実装方法を提供する。【解決手段】方法は、第１の学習器によって、ＤＮＮのニューラル・ネットワーク層のための現在の勾配ベクトルを取得することを含み、現在の勾配ベクトルは、訓練データのミニ・バッチから計算されるニューラル・ネットワーク層のパラメータの勾配重みを含む。ミニ・バッチのための残差勾配重みを含む現在の残差ベクトルが生成される。圧縮された現在の残差ベクトルは、現在の残差ベクトルの残差勾配重みを一様な大きさの複数のビンに分割すること、および複数のビンのうちの１つまたは複数のビンの残差勾配重みのサブセットを量子化することに基づいて生成される。圧縮された現在の残差ベクトルは、次に、複数の学習器のうちの第２の学習器に、またはパラメータ・サーバに伝送される。【選択図】図１
2021505993.tif 000002
【特許請求の範囲】
【請求項１】
深層学習ニューラル・ネットワーク（ＤＮＮ）の訓練に適応性のある残差勾配圧縮のためのコンピュータ実装方法であって、
複数の学習器のうちの第１の学習器のプロセッサによって、前記ＤＮＮのニューラル・ネットワーク層のための現在の勾配ベクトルを取得することであって、前記現在の勾配ベクトルが、訓練データのミニ・バッチから計算される前記ニューラル・ネットワーク層のパラメータの勾配重みを含む、前記現在の勾配ベクトルを取得することと、
前記プロセッサによって、前記ミニ・バッチのための残差勾配重みを含む現在の残差ベクトルを生成することであって、以前の残差ベクトルと前記現在の勾配ベクトルを合計することを含む、前記現在の残差ベクトルを生成することと、
前記プロセッサによって、前記現在の残差ベクトルの前記残差勾配重みを一様な大きさの複数のビンに分割すること、および前記複数のビンのうちの１つまたは複数のビンの前記残差勾配重みのサブセットを量子化することに少なくとも部分的に基づいて、圧縮された現在の残差ベクトルを生成することであって、前記残差勾配重みの前記サブセットを量子化することが、前記ミニ・バッチのためのスケーリング・パラメータを計算すること、および各ビンの極大値を計算することに少なくとも部分的に基づき、前記ビンの前記一様な大きさが、前記ＤＮＮのハイパー・パラメータである、前記圧縮された現在の残差ベクトルを生成することと、
前記プロセッサによって、前記圧縮された現在の残差ベクトルを前記複数の学習器のうちの第２の学習器に伝送することと
を含む、コンピュータ実装方法。
【請求項２】
前記圧縮された現在の残差ベクトルを生成することが、
前記プロセッサによって、前記ミニ・バッチのためのスケーリングされた残差勾配重みを含むスケーリングされた現在の残差ベクトルを生成することであって、前記現在の勾配ベクトルに前記スケーリング・パラメータを乗じること、および前記乗じた勾配ベクトルと前記以前の残差ベクトルを合計することを含む、前記スケーリングされた現在の残差ベクトルを生成することと、
前記現在の残差ベクトルの前記残差勾配重みを前記一様な大きさの前記複数のビンに分割することと、
前記複数のビンの各ビンについて、前記ビンの前記残差勾配重みの絶対値の極大値を識別することと、
各ビンの各残差勾配重みについて、前記スケーリングされた残差ベクトルの対応するスケーリングされた残差勾配重みが前記ビンの前記極大値を超過することを判定することと、
各ビンの各残差勾配重みについて、前記スケーリングされた残差ベクトルの前記対応するスケーリングされた残差勾配重みが前記ビンの前記極大値を超過することを識別すると、所与の残差勾配重みに対する量子化値を生成し、前記現在の残差ベクトルの前記残差勾配重みを前記量子化値で置換することによって前記現在の残差ベクトルを更新することと
を含む、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記スケーリング・パラメータが、Ｌ２正規化に従って量子化誤差を最小化することによって計算される、請求項２に記載のコンピュータ実装方法。
【請求項４】
前記ＤＮＮが、１つまたは複数の畳み込みネットワーク層を含み、
前記複数のビンの前記大きさが、前記１つまたは複数の畳み込み層に対して５０にセットされる、
請求項２に記載のコンピュータ実装方法。
【請求項５】
前記ＤＮＮが、少なくとも１つまたは複数の完全に接続された層を含み、
前記ビンの前記大きさが、前記１つまたは複数の完全に接続された層に対して５００にセットされる、
請求項２に記載のコンピュータ実装方法。
【請求項６】
深層学習ニューラル・ネットワーク（ＤＮＮ）の訓練に適応性のある残差勾配圧縮のためのシステムであって、複数の学習器を備え、前記複数の学習器のうちの少なくとも１つの学習器が、
前記ＤＮＮのニューラル・ネットワーク層のための現在の勾配ベクトルを取得することであって、前記現在の勾配ベクトルが、訓練データのミニ・バッチから計算される前記ニューラル・ネットワーク層のパラメータの勾配重みを含む、前記現在の勾配ベクトルを取得することと、
前記ミニ・バッチのための残差勾配重みを含む現在の残差ベクトルを生成することであって、以前の残差ベクトルと前記現在の勾配ベクトルを合計することを含む、前記現在の残差ベクトルを生成することと、
前記現在の残差ベクトルの前記残差勾配重みを一様な大きさの複数のビンに分割すること、および前記複数のビンのうちの１つまたは複数のビンの前記残差勾配重みのサブセットを量子化することに少なくとも部分的に基づいて、圧縮された現在の残差ベクトルを生成することであって、前記残差勾配重みの前記サブセットを量子化することが、前記ミニ・バッチのためのスケーリング・パラメータを計算すること、および各ビンの極大値を計算することに少なくとも部分的に基づき、前記ビンの前記一様な大きさが、前記ＤＮＮのハイパー・パラメータである、前記圧縮された現在の残差ベクトルを生成することと、
前記圧縮された現在の残差ベクトルを前記複数の学習器のうちの第２の学習器に伝送することと
を含む方法を行うように構成される、システム。
【請求項７】
前記圧縮された現在の残差ベクトルを生成することが、
プロセッサによって、前記ミニ・バッチのためのスケーリングされた残差勾配重みを含むスケーリングされた現在の残差ベクトルを生成することであって、前記現在の勾配ベクトルに前記スケーリング・パラメータを乗じること、および前記乗じた勾配ベクトルと前記以前の残差ベクトルを合計することを含む、前記スケーリングされた現在の残差ベクトルを生成することと、
前記現在の残差ベクトルの前記残差勾配重みを前記一様な大きさの前記複数のビンに分割することと、
前記複数のビンの各ビンについて、前記ビンの前記残差勾配重みの絶対値の極大値を識別することと、
各ビンの各残差勾配重みについて、前記スケーリングされた残差ベクトルの対応するスケーリングされた残差勾配重みが前記ビンの前記極大値を超過することを判定することと、
各ビンの各残差勾配重みについて、前記スケーリングされた残差ベクトルの前記対応するスケーリングされた残差勾配重みが前記ビンの前記極大値を超過することを識別すると、所与の残差勾配重みに対する量子化値を生成し、前記現在の残差ベクトルの前記残差勾配重みを前記量子化値で置換することによって前記現在の残差ベクトルを更新することと
を含む、請求項６に記載のシステム。
【請求項８】
前記スケーリング・パラメータが、Ｌ２正規化に従って量子化誤差を最小化することによって計算される、請求項７に記載のシステム。
【請求項９】
前記ＤＮＮが、１つまたは複数の畳み込みネットワーク層を含み、
前記複数のビンの前記大きさが、前記１つまたは複数の畳み込み層に対して５０にセットされる、
請求項７に記載のシステム。
【請求項１０】
前記ＤＮＮが、少なくとも１つまたは複数の完全に接続された層を含み、
前記ビンの前記大きさが、前記１つまたは複数の完全に接続された層に対して５００にセットされる、
請求項７に記載のシステム。
【請求項１１】
深層学習ニューラル・ネットワーク（ＤＮＮ）の訓練に適応性のある残差勾配圧縮のためのコンピュータ・プログラム製品であって、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を備え、前記プログラム命令が、複数の学習器のうちの少なくとも第１の学習器のプロセッサによって、
前記ＤＮＮのニューラル・ネットワーク層のための現在の勾配ベクトルを取得することであって、前記現在の勾配ベクトルが、訓練データのミニ・バッチから計算される前記ニューラル・ネットワーク層のパラメータの勾配重みを含む、前記現在の勾配ベクトルを取得することと、
前記ミニ・バッチのための残差勾配重みを含む現在の残差ベクトルを生成することであって、以前の残差ベクトルと前記現在の勾配ベクトルを合計することを含む、前記現在の残差ベクトルを生成することと、
前記現在の残差ベクトルの前記残差勾配重みを一様な大きさの複数のビンに分割すること、および前記複数のビンのうちの１つまたは複数のビンの前記残差勾配重みのサブセットを量子化することに少なくとも部分的に基づいて、圧縮された現在の残差ベクトルを生成することであって、前記残差勾配重みの前記サブセットを量子化することが、前記ミニ・バッチのためのスケーリング・パラメータを計算すること、および各ビンの極大値を計算することに少なくとも部分的に基づき、前記ビンの前記一様な大きさが、前記ＤＮＮのハイパー・パラメータである、前記圧縮された現在の残差ベクトルを生成することと、
前記圧縮された現在の残差ベクトルを前記複数の学習器のうちの第２の学習器に伝送することと
を含む方法を前記第１の学習器が行うように実行可能な、コンピュータ・プログラム製品。
【請求項１２】
前記圧縮された現在の残差ベクトルを生成することが、
前記プロセッサによって、前記ミニ・バッチのためのスケーリングされた残差勾配重みを含むスケーリングされた現在の残差ベクトルを生成することであって、前記現在の勾配ベクトルに前記スケーリング・パラメータを乗じること、および前記乗じた勾配ベクトルと前記以前の残差ベクトルを合計することを含む、前記スケーリングされた現在の残差ベクトルを生成することと、
前記現在の残差ベクトルの前記残差勾配重みを前記一様な大きさの前記複数のビンに分割することと、
前記複数のビンの各ビンについて、前記ビンの前記残差勾配重みの絶対値の極大値を識別することと、
各ビンの各残差勾配重みについて、前記スケーリングされた残差ベクトルの対応するスケーリングされた残差勾配重みが前記ビンの前記極大値を超過することを判定することと、
各ビンの各残差勾配重みについて、前記スケーリングされた残差ベクトルの前記対応するスケーリングされた残差勾配重みが前記ビンの前記極大値を超過することを判定すると、前記残差勾配重みに対する量子化値を生成し、前記現在の残差ベクトルの前記残差勾配重みを前記量子化値で置換することによって前記現在の残差ベクトルを更新することと
を含む、請求項１１に記載のコンピュータ・プログラム製品。
【請求項１３】
前記スケーリング・パラメータが、Ｌ２正規化に従って量子化誤差を最小化することによって計算される、請求項１２に記載のコンピュータ・プログラム製品。
【請求項１４】
前記ＤＮＮが、１つまたは複数の畳み込みネットワーク層を含み、
前記複数のビンの前記大きさが、前記１つまたは複数の畳み込み層に対して５０にセットされる、
請求項１２に記載のコンピュータ・プログラム製品。
【請求項１５】
前記ＤＮＮが、少なくとも１つまたは複数の完全に接続された層を含み、
前記ビンの前記大きさが、前記１つまたは複数の完全に接続された層に対して５００にセットされる、
請求項１２に記載のコンピュータ・プログラム製品。
【請求項１６】
適応性のある残差勾配圧縮を介して深層学習ニューラル・ネットワーク（ＤＮＮ）を訓練するためのコンピュータ実装方法であって、
複数の学習器を備えるシステムによって、１つまたは複数のニューラル・ネットワーク層を使用して前記ＤＮＮの訓練のための訓練データを受信することと、
前記複数の学習器のうちの各学習器において、前記訓練データのミニ・バッチからニューラル・ネットワーク層のための現在の勾配ベクトルを生成することであって、前記現在の勾配ベクトルが、前記ニューラル・ネットワーク層のパラメータの勾配重みを含む、前記現在の勾配ベクトルを生成することと、
前記複数の学習器のうちの各学習器において、前記ミニ・バッチのための残差勾配重みを含む現在の残差ベクトルを生成することであって、以前の残差ベクトルと前記現在の勾配ベクトルを合計することを含む、前記現在の残差ベクトルを生成することと、
前記現在の残差ベクトルの前記残差勾配重みを一様な大きさの複数のビンに分割すること、および前記複数のビンのうちの１つまたは複数のビンの前記残差勾配重みのサブセットを量子化することに少なくとも部分的に基づいて、前記複数の学習器のうちの各学習器において、圧縮された現在の残差ベクトルを生成することであって、前記残差勾配重みの前記サブセットを量子化することが、前記ミニ・バッチのためのスケーリング・パラメータを計算すること、および各ビンの極大値を計算することに少なくとも部分的に基づき、前記ビンの前記一様な大きさが、前記ＤＮＮのハイパー・パラメータである、前記圧縮された現在の残差ベクトルを生成することと
前記複数の学習器の間で、前記圧縮された現在の残差ベクトルを交換することと、
前記複数の学習器のそれぞれにおいて、前記圧縮された現在の残差ベクトルを解凍することと、
前記複数の学習器のそれぞれにおいて、前記ニューラル・ネットワーク層の前記パラメータの前記勾配重みを更新することと
を含む、コンピュータ実装方法。
【請求項１７】
前記圧縮された現在の残差ベクトルを生成することが、
前記ミニ・バッチのためのスケーリングされた残差勾配重みを含むスケーリングされた現在の残差ベクトルを生成することであって、前記現在の勾配ベクトルに前記スケーリング・パラメータを乗じること、および前記乗じた勾配ベクトルと前記以前の残差ベクトルを合計することを含む、前記スケーリングされた現在の残差ベクトルを生成することと、
前記現在の残差ベクトルの前記残差勾配重みを前記一様な大きさの前記複数のビンに分割することと、
前記複数のビンの各ビンについて、前記ビンの前記残差勾配重みの絶対値の極大値を識別することと、
各ビンの各残差勾配重みについて、前記スケーリングされた残差ベクトルの対応するスケーリングされた残差勾配重みが前記ビンの前記極大値を超過することを判定することと、
各ビンの各残差勾配重みについて、前記スケーリングされた残差ベクトルの前記対応するスケーリングされた残差勾配重みが前記ビンの前記極大値を超過することを判定すると、前記残差勾配重みに対する量子化値を生成し、前記現在の残差ベクトルの前記残差勾配重みを前記量子化値で置換することによって前記現在の残差ベクトルを更新することと
を含む、請求項１６に記載のコンピュータ実装方法。
【請求項１８】
前記スケーリング・パラメータが、Ｌ２正規化に従って量子化誤差を最小化することによって計算される、請求項１７に記載のコンピュータ実装方法。
【請求項１９】
前記ＤＮＮが、１つまたは複数の畳み込みネットワーク層を含み、
前記複数のビンの前記大きさが、前記１つまたは複数の畳み込み層に対して５０にセットされる、
請求項１７に記載のコンピュータ実装方法。
【請求項２０】
前記ＤＮＮが、少なくとも１つまたは複数の完全に接続された層を含み、
前記ビンの前記大きさが、前記１つまたは複数の完全に接続された層に対して５００にセットされる、
請求項１７に記載のコンピュータ実装方法。
【請求項２１】
適応性のある残差勾配圧縮を介して深層学習ニューラル・ネットワーク（ＤＮＮ）を訓練するためのシステムであって、複数の学習器を備え、
１つまたは複数のニューラル・ネットワーク層を使用して前記ＤＮＮの訓練のための訓練データを受信することと、
前記複数の学習器のうちの各学習器において、前記訓練データのミニ・バッチからニューラル・ネットワーク層のための現在の勾配ベクトルを生成することであって、前記現在の勾配ベクトルが、前記ニューラル・ネットワーク層のパラメータの勾配重みを含む、前記現在の勾配ベクトルを生成することと、
前記複数の学習器のうちの各学習器において、前記ミニ・バッチのための残差勾配重みを含む現在の残差ベクトルを生成することであって、以前の残差ベクトルと前記現在の勾配ベクトルを合計することを含む、前記現在の残差ベクトルを生成することと、
前記現在の残差ベクトルの前記残差勾配重みを一様な大きさの複数のビンに分割すること、および前記複数のビンのうちの１つまたは複数のビンの前記残差勾配重みのサブセットを量子化することに少なくとも部分的に基づいて、前記複数の学習器のうちの各学習器において、圧縮された現在の残差ベクトルを生成することであって、前記残差勾配重みの前記サブセットを量子化することが、前記ミニ・バッチのためのスケーリング・パラメータを計算すること、および各ビンの極大値を計算することに少なくとも部分的に基づき、前記ビンの前記一様な大きさが、前記ＤＮＮのハイパー・パラメータである、前記圧縮された現在の残差ベクトルを生成することと、
前記複数の学習器の間で、前記圧縮された現在の残差ベクトルを交換することと、
前記複数の学習器のそれぞれにおいて、前記圧縮された現在の残差ベクトルを解凍することと、
前記複数の学習器のそれぞれにおいて、前記ニューラル・ネットワーク層の前記パラメータの前記勾配重みを更新することと
を含む方法を行うように構成される、システム。
【請求項２２】
前記圧縮された現在の残差ベクトルを生成することが、
前記ミニ・バッチのためのスケーリングされた残差勾配重みを含むスケーリングされた現在の残差ベクトルを生成することであって、前記現在の勾配ベクトルに前記スケーリング・パラメータを乗じること、および前記乗じた勾配ベクトルと前記以前の残差ベクトルを合計することを含む、前記スケーリングされた現在の残差ベクトルを生成することと、
前記現在の残差ベクトルの前記残差勾配重みを前記一様な大きさの前記複数のビンに分割することと、
前記複数のビンの各ビンについて、前記ビンの前記残差勾配重みの絶対値の極大値を識別することと、
各ビンの各残差勾配重みについて、前記スケーリングされた残差ベクトルの対応するスケーリングされた残差勾配重みが前記ビンの前記極大値を超過することを判定することと、
各ビンの各残差勾配重みについて、前記スケーリングされた残差ベクトルの前記対応するスケーリングされた残差勾配重みが前記ビンの前記極大値を超過することを判定すると、前記残差勾配重みに対する量子化値を生成し、前記現在の残差ベクトルの前記残差勾配重みを前記量子化値で置換することによって前記現在の残差ベクトルを更新することと
を含む、請求項２１に記載のシステム。
【請求項２３】
前記スケーリング・パラメータが、Ｌ２正規化に従って量子化誤差を最小化することによって計算される、請求項２２に記載のシステム。
【請求項２４】
前記ＤＮＮが、１つまたは複数の畳み込みネットワーク層を含み、
前記複数のビンの前記大きさが、前記１つまたは複数の畳み込み層に対して５０にセットされる、
請求項２２に記載のシステム。
【請求項２５】
前記ＤＮＮが、少なくとも１つまたは複数の完全に接続された層を含み、
前記ビンの前記大きさが、前記１つまたは複数の完全に接続された層に対して５００にセットされる、
請求項２２に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、深層学習ネットワークの訓練に関し、より詳細には、深層機械学習アプリケーションのための堅牢な残差勾配（residual gradient）圧縮方式に関する。
【背景技術】
【０００２】
「機械学習」というフレーズは、概して、データから学習することができる電子システムの機能を説明する。機械学習システム、エンジン、またはモジュールは、現在未知の、入力と出力の間の機能的関係を学習するために、外部クラウド環境などにおいて、訓練されることが可能な機械学習アルゴリズムを含むことができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明は、深層学習ニューラル・ネットワーク（ＤＮＮ：deep learning neural network）の訓練に適応性のある残差勾配圧縮のためのコンピュータ実装方法等を提供することを目的とする。
【課題を解決するための手段】
【０００４】
本発明の実施形態は、深層学習ニューラル・ネットワーク（ＤＮＮ：deep learning neural network）の訓練に適応性のある残差勾配圧縮のためのコンピュータ実装方法を提供する。方法の非限定的な例は、複数の学習器のうちの第１の学習器のプロセッサによって、ＤＮＮのニューラル・ネットワーク層のための現在の勾配ベクトルを取得することであって、現在の勾配ベクトルが、訓練データのミニ・バッチから計算されるニューラル・ネットワーク層のパラメータの勾配重み（gradient weight）を含む、現在の勾配ベクトルを取得することを含む。ミニ・バッチのための残差勾配重みを含む現在の残差ベクトル（residue vector）が生成され、現在の残差ベクトルを生成することは、以前の残差ベクトルと現在の勾配ベクトルを合計することを含む。圧縮された現在の残差ベクトルが生成され、圧縮された現在の残差ベクトルは、現在の残差ベクトルの残差勾配重みを一様な大きさの複数のビンに分割すること、および複数のビンのうちの１つまたは複数のビンの残差勾配重みのサブセットを量子化することに少なくとも部分的に基づいて生成される。残差勾配重みのサブセットを量子化することは、ミニ・バッチのためのスケーリング・パラメータを計算すること、および各ビンの極大値を計算することに少なくとも部分的に基づき、ビンの一様な大きさは、ＤＮＮのハイパー・パラメータである。圧縮された現在の残差ベクトルは、次に、複数の学習器のうちの第２の学習器に伝送される。
【０００５】
本発明の実施形態は、ＤＮＮの訓練に適応性のある残差勾配圧縮のためのシステムを提供する。本発明のいくつかの実施形態において、システムは、複数の学習器を含み、複数の学習器のうちの少なくとも第１の学習器は、方法を行うように構成される。方法の非限定的な例は、ＤＮＮのニューラル・ネットワーク層のための現在の勾配ベクトルを取得することであって、現在の勾配ベクトルが、訓練データのミニ・バッチから計算されるニューラル・ネットワーク層のパラメータの勾配重みを含む、現在の勾配ベクトルを取得することを含む。ミニ・バッチのための残差勾配重みを含む現在の残差ベクトルが生成され、現在の残差ベクトルを生成することは、以前の残差ベクトルと現在の勾配ベクトルを合計することを含む。圧縮された現在の残差ベクトルが生成され、圧縮された現在の残差ベクトルは、現在の残差ベクトルの残差勾配重みを一様な大きさの複数のビンに分割すること、および複数のビンのうちの１つまたは複数のビンの残差勾配重みのサブセットを量子化することに少なくとも部分的に基づいて生成される。残差勾配重みのサブセットを量子化することは、ミニ・バッチのためのスケーリング・パラメータを計算すること、および各ビンの極大値を計算することに少なくとも部分的に基づき、ビンの一様な大きさは、ＤＮＮのハイパー・パラメータである。圧縮された現在の残差ベクトルは、次に、プロセッサによって、複数の学習器のうちの第２の学習器に伝送される。
【０００６】
本発明の実施形態は、ＤＮＮの訓練に適応性のある残差勾配圧縮のためのコンピュータ・プログラム製品を提供し、コンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読ストレージ媒体を含む。プログラム命令は、第１の学習器が方法を行うように、複数の学習器のうちの少なくとも第１の学習器のプロセッサによって実行可能である。方法の非限定的な例は、ＤＮＮのニューラル・ネットワーク層のための現在の勾配ベクトルを取得することであって、現在の勾配ベクトルが、訓練データのミニ・バッチから計算されるニューラル・ネットワーク層のパラメータの勾配重みを含む、現在の勾配ベクトルを取得することを含む。ミニ・バッチのための残差勾配重みを含む現在の残差ベクトルが生成され、現在の残差ベクトルを生成することは、以前の残差ベクトルと現在の勾配ベクトルを合計することを含む。圧縮された現在の残差ベクトルが生成され、圧縮された現在の残差ベクトルは、現在の残差ベクトルの残差勾配重みを一様な大きさの複数のビンに分割すること、および複数のビンのうちの１つまたは複数のビンの残差勾配重みのサブセットを量子化することに少なくとも部分的に基づいて生成される。残差勾配重みのサブセットを量子化することは、ミニ・バッチのためのスケーリング・パラメータを計算すること、および各ビンの極大値を計算することに少なくとも部分的に基づき、ビンの一様な大きさは、ＤＮＮのハイパー・パラメータである。圧縮された現在の残差ベクトルは、次に、複数の学習器のうちの第２の学習器に伝送される。
【０００７】
本発明の実施形態は、適応性のある残差勾配圧縮を介してＤＮＮを訓練するためのコンピュータ実装方法を提供する。方法の非限定的な例は、複数の学習器を備えるシステムによって、１つまたは複数のニューラル・ネットワーク層を使用してＤＮＮの訓練のための訓練データを受信することを含む。ニューラル・ネットワーク層のための現在の勾配ベクトルは、訓練データのミニ・バッチから、複数の学習器のうちの各学習器において生成され、現在の勾配ベクトルは、訓練データのミニ・バッチから計算されるニューラル・ネットワーク層のパラメータの勾配重みを含む。現在の残差ベクトルは、ミニ・バッチから、複数の学習器のうちの各学習器において生成され、現在の残差ベクトルを生成することは、以前の残差ベクトルと現在の勾配ベクトルを合計することを含む。圧縮された現在の残差ベクトルは、複数の学習器のうちの各学習器において生成され、圧縮された現在の残差ベクトルは、現在の残差ベクトルの残差勾配重みを一様な大きさの複数のビンに分割すること、および複数のビンのうちの１つまたは複数のビンの残差勾配重みのサブセットを量子化することに少なくとも部分的に基づいて生成される。残差勾配重みのサブセットを量子化することは、ミニ・バッチのためのスケーリング・パラメータを計算すること、および各ビンの極大値を計算することに少なくとも部分的に基づき、ビンの一様な大きさは、ＤＮＮのハイパー・パラメータである。圧縮された現在の残差ベクトルは、次に、複数の学習器の間で交換される。圧縮された現在の残差ベクトルは、複数の学習器のそれぞれにおいて解凍される。ニューラル・ネットワーク層のパラメータの勾配重みは、次に、複数の学習器のそれぞれにおいて更新される。
【０００８】
本発明の実施形態は、適応性のある残差勾配圧縮を介して深層学習ニューラル・ネットワーク（ＤＮＮ）を訓練するためのシステムを提供する。本発明のいくつかの実施形態において、システムは、複数の学習器を含み、システムは、方法を行うように構成される。方法の非限定的な例は、システムによって、１つまたは複数のニューラル・ネットワーク層を使用してＤＮＮの訓練のための訓練データを受信することを含む。ニューラル・ネットワーク層のための現在の勾配ベクトルは、訓練データのミニ・バッチから、複数の学習器のうちの各学習器において生成され、現在の勾配ベクトルは、訓練データのミニ・バッチから計算されるニューラル・ネットワーク層のパラメータの勾配重みを含む。現在の残差ベクトルは、ミニ・バッチから、複数の学習器のうちの各学習器において生成され、現在の残差ベクトルを生成することは、以前の残差ベクトルと現在の勾配ベクトルを合計することを含む。圧縮された現在の残差ベクトルは、複数の学習器のうちの各学習器において生成され、圧縮された現在の残差ベクトルは、現在の残差ベクトルの残差勾配重みを一様な大きさの複数のビンに分割すること、および複数のビンのうちの１つまたは複数のビンの残差勾配重みのサブセットを量子化することに少なくとも部分的に基づいて生成される。残差勾配重みのサブセットを量子化することは、ミニ・バッチのためのスケーリング・パラメータを計算すること、および各ビンの極大値を計算することに少なくとも部分的に基づき、ビンの一様な大きさは、ＤＮＮのハイパー・パラメータである。圧縮された現在の残差ベクトルは、次に、複数の学習器の間で交換される。圧縮された現在の残差ベクトルは、複数の学習器のそれぞれにおいて解凍される。ニューラル・ネットワーク層のパラメータの勾配重みは、次に、複数の学習器のそれぞれにおいて更新される。
【０００９】
追加の技術的特徴および利益は、本発明の技術を通じて実現される。本発明の実施形態および態様は、本明細書において詳細に説明され、特許請求の範囲の主題の一部と見なされる。さらなる理解のために、詳細な説明および図面を参照する。
【００１０】
本圧縮方式は、種々の訓練方式（時間ドメイン）と統合することが可能であり、種々の層（空間ドメイン）において適用されることが可能である。例えば、圧縮方式は、最初のいくつかのエポック、またはニューラル・ネットワークの最後および最初の層には適用されない。
【００１１】
本明細書において説明される排他的な権利の細目は、本明細書の結論における特許請求の範囲において具体的に指摘され、明確に請求される。本発明の実施形態の前述および他の特徴および利点は、添付の図面に関して行われる以下の詳細な説明から明らかである。
【図面の簡単な説明】
【００１２】
【図１】本発明の１つまたは複数の実施形態によるクラウド・コンピューティング環境を示す図である。
【図２】本発明の１つまたは複数の実施形態による抽象化モデルの階層を示す図である。
【図３】本発明の１つまたは複数の実施形態を実行することができる例示的なコンピュータ・システムを示す図である。
【図４】本発明の１つまたは複数の実施形態による畳み込みニューラル・ネットワークの簡略化されたブロック図である。
【図５】本発明の１つまたは複数の実施形態による訓練データを使用して訓練されているニューラル・ネットワークの実施例の畳み込み層を示す図である。
【図６】本発明の１つまたは複数の実施形態による深層学習ニューラル・ネットワークの訓練に適応性のある残差勾配圧縮を行うための環境のブロック図である。
【図７】本発明の１つまたは複数の実施形態によるニューラル・ネットワークを訓練するための実施例の流れ図である。
【図８】本発明の１つまたは複数の実施形態による圧縮された現在の残差ベクトルを生成するための実施例の方法を示す流れ図である。
【発明を実施するための形態】
【００１３】
本明細書において示される図は例証的なものである。本発明の範囲を逸脱することなく、説明される図または動作に対する多くの変形形態があることが可能である。例えば、アクションは、異なる順序で行われることが可能であり、またはアクションは、追加、削除、もしくは変更が行われることが可能である。また、用語「連結された」およびその変形物は、２つの要素間に通信経路があることを表現するが、要素間に要素／接続が介在しない要素間の直接接続を意味しない。これらの変形形態の全てが、本明細書の一部と見なされる。
【００１４】
本開示の実施形態の添付の図および以下の詳細な説明において、図の中で示された様々な要素は、２桁または３桁の参照番号で示される。わずかな例外として、各参照番号の一番左の桁は、図の要素が最初に示される図に対応する。
【００１５】
関連図面を参照しながら、本発明の様々な実施形態が本明細書において説明される。本発明の代替実施形態は、本発明の範囲から逸脱することなく考え出されることが可能である。様々な接続および位置関係（例えば、上（over）、下（below）、隣（adjacent）、等）は、以下の説明、および図面において、要素間に示される。これらの接続または位置関係あるいはその両方は、別途指定されない限り、直接的または間接的であることが可能であり、本発明は、この点に限定することを意図するものではない。したがって、エンティティの連結は、直接的または間接的連結を指すことが可能であり、エンティティ間の位置関係は、直接的または間接的位置関係であることが可能である。その上、本明細書において説明される様々なタスクおよび処理ステップは、本明細書において詳細に説明されない追加のステップまたは機能を有する、より包括的な手順または処理に組み込まれることが可能である。
【００１６】
特許請求の範囲および本明細書の解釈のために、以下の定義および省略形が使用されることになる。本明細書において使用されるように、用語「備える（comprises）」、「備えている（comprising）」、「含む（includes）」、「含んでいる（including）」、「有する（has）」、「有している（having）」、「収める（contains）」、もしくは「収めている（containing）」、または他の任意のこれらの変形物は，排他的でない包含を含むことを意図するものである。要素の一覧を含む、例えば、構成、混合、処理、方法、項目、または装置は、これらの要素だけに必ずしも限定されず、明確に挙げられていない他の要素、または、このような構成、混合、処理、方法、項目、または装置に固有の他の要素を含むことができる。
【００１７】
追加として、用語「例示的な」は、「実施例、事例、または例証として機能すること」を意味するように、本明細書において使用される。「例示的な」ものとして本明細書において説明されるいずれかの実施形態または設計は、他の実施形態または設計より好ましいもの、または有利なものとして、必ずしも解釈されることにはならない。用語「少なくとも１つ」および「１つまたは複数」は、１以上、すなわち１、２、３、４等の任意の整数を含むものと理解されてよい。用語「複数の」は、２以上、すなわち２、３、４、５等の任意の整数を含むものと理解されてよい。用語「接続」は、間接的「接続」と直接的「接続」の両方を含むことができる。
【００１８】
用語「約（about）」、「かなり（substantially）」、「およそ（approximately）」、およびこれらの変形物は、本出願の提出時に利用可能な機器に基づく特定の量の測定値と関連付けられたある程度の誤差を含むことを意図するものである。例えば、「約」は、所与の値の±８％もしくは５％、または２％の範囲を含む可能性がある。
【００１９】
簡潔さのために、本発明の態様を行うことおよび使用することに関する従来の技術は、本明細書において詳細に説明されることもあれば、されないこともある。特に、本明細書において説明される様々な技術的特徴を実行するためのコンピューティング・システムおよび特定のコンピュータ・プログラムの様々な態様は、よく知られている。したがって、簡潔さのために、多くの従来の実装形態の詳細は、本明細書において簡単に言及されるにすぎないか、よく知られたシステムまたは処理あるいはその両方の詳細を示さずに、全面的に省略される。
【００２０】
本開示は、クラウド・コンピューティングについての詳細な説明を含んでいるが、本明細書において列挙される教示の実装形態は、クラウド・コンピューティング環境に限定されるものではないということが理解されよう。むしろ、本発明の実施形態は、今知られているか、後で開発されるコンピューティング環境の他の任意のタイプと共に実行されることが可能である。
【００２１】
クラウド・コンピューティングは、サービスの提供者との最低限の管理活動または対話によって、急速に提供されること、および解放されることが可能な、設定変更可能コンピューティング・リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス）の共用プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも５つの特性、少なくとも３つのサービス・モデル、および少なくとも４つの配置モデルを含むことができる。
【００２２】
特性は、以下のようなものである。
オンデマンド・セルフ・サービス：クラウド利用者は、サービスの提供者との人的対話を必要とせず自動的に必要に応じて、サーバ時刻およびネットワーク・ストレージなどのコンピューティング能力を一方的に提供することができる。
ブロード・ネットワーク・アクセス：能力は、ネットワーク上で利用可能であり、ヘテロジニアスなシンまたはシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ、およびＰＤＡ）による使用を推進する標準機構を通じてアクセスされる。
リソース・プーリング：提供者のコンピューティング・リソースは、マルチ・テナント・モデルを使用して複数の利用者に供給するためにプールされ、種々の物理リソースおよび仮想リソースは、需要に応じて動的に割当ておよび再割当てが行われる。利用者は一般に、提供されたリソースの正確な位置に対する制御権または知識がないが、抽象化のより高いレベル（例えば、国、州、またはデータセンタ）において位置を特定できる可能性があるということに位置独立の意味がある。
迅速な伸縮性（Rapid elasticity）：能力は、素早くスケール・アウトするように迅速かつ伸縮自在に、場合によっては自動的に提供され、素早くスケール・インするように迅速に解放される。利用者に対して、提供するのに利用可能な能力は、無制限のように見えることが多く、いつでも任意の量で購入されることが可能である。
サービス測定（Measured service）：クラウド・システムは、サービスのタイプ（例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント）にふさわしい抽象化のいくつかのレベルでメータリング能力を活用することによって、リソース使用を自動的に制御および最適化する。リソース利用率は、監視、制御、およびレポートされることが可能であり、利用されるサービスの提供者と利用者の両者に透明性をもたらす。
【００２３】
サービス・モデルは、以下のようなものである。
サービスとしてのソフトウェア（ＳａａＳ）：利用者に提供される能力は、クラウド・インフラストラクチャ上で動く提供者のアプリケーションを使用するためのものである。アプリケーションは、ウェブ・ブラウザ（例えば、ウェブベースの電子メール）などのシン・クライアント・インターフェースを通じて様々なクライアント・デバイスからアクセス可能である。利用者は、限定されたユーザ固有アプリケーションの構成設定を例外とする可能性はあるが、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個人のアプリケーション能力さえも含む、基礎となるクラウド・インフラストラクチャを管理することも制御することもない。
サービスとしてのプラットフォーム（ＰａａＳ）：利用者に提供される能力は、提供者によってサポートされるプログラミング言語およびツールを使用して作り出された、利用者が作り出したか獲得したアプリケーションを、クラウド・インフラストラクチャ上に配置するためのものである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基礎となるクラウド・インフラストラクチャを管理することも制御することもないが、配置されたアプリケーション、および場合によっては、環境構成をホストするアプリケーションに対する制御権がある。
サービスとしてのインフラストラクチャ（ＩａａＳ）：利用者に提供される能力は、処理、ストレージ、ネットワーク、ならびに、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアを利用者が配置すること、および動かすことができる他の基本的なコンピューティング・リソース、を提供するためのものである。利用者は、基礎となるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、配置されたアプリケーションに対する制御権、および場合によっては、ネットワーク構成要素（例えば、ホスト・ファイアウォール）を選択する限定的な制御権がある。
【００２４】
配置モデルは、以下のようなものである。
プライベート・クラウド：クラウド・インフラストラクチャは、組織のために単に運用される。クラウド・インフラストラクチャは、組織またはサード・パーティによって管理されることが可能であり、敷地内または敷地外にあることが可能である。
コミュニティ・クラウド：クラウド・インフラストラクチャは、いくつかの組織によって共有され、共有された懸念（例えば、ミッション、セキュリティ要件、ポリシ、およびコンプライアンスの考慮）を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、組織またはサード・パーティによって管理されることが可能であり、敷地内または敷地にあることが可能である。
パブリック・クラウド：クラウド・インフラストラクチャは、一般大衆または大きい業界団体に対して利用可能にされ、クラウド・サービスを売る組織によって所有される。
ハイブリッド・クラウド：クラウド・インフラストラクチャは、一意のエンティティのままであるが、データおよびアプリケーションに可搬性（例えば、クラウド間の負荷分散のためのクラウド・バースティング）を与える標準化技術または独自の技術によって互いに結び付けられる２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）の構成である。
【００２５】
クラウド・コンピューティング環境は、無国籍、疎結合、モジュラリティ、および意味論的相互運用性に重点を置くサービス指向のものである。相互接続ノードのネットワークを含むインフラストラクチャが、クラウド・コンピューティングの中心にある。
【００２６】
これから図１を参照すると、例証的なクラウド・コンピューティング環境５０が示されている。示されているように、クラウド・コンピューティング環境５０は、例えば、パーソナル・デジタル・アシスタント（ＰＤＡ）もしくはセルラー電話５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃ、または自動車コンピュータ・システム５４Ｎ、あるいはその組合せなどの、クラウド利用者によって使用されるローカル・コンピューティング・デバイスが通信できる１つまたは複数のクラウド・コンピューティング・ノード１０を含む。ノード１０は、互いに通信することができる。これらは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組合せなどの、１つまたは複数のネットワークにおいて、物理的または仮想的にグループ化されることが可能である（図示せず）。これは、クラウド利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないサービスとして、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを、クラウド・コンピューティング環境５０が提供できるようにする。図１において示されたコンピューティング・デバイス５４Ａ〜５４Ｎのタイプは、例証的なものにすぎないことを意図するものであるということ、ならびに、コンピューティング・ノード１０およびクラウド・コンピューティング環境５０は、（例えば、ウェブ・ブラウザを使用して）任意のタイプのネットワーク、またはネットワーク・アドレス可能接続、あるいはその両方で、任意のタイプのコンピュータ化されたデバイスと通信することができるということ、が理解される。
【００２７】
ここから図２を参照すると、クラウド・コンピューティング環境５０（図１）によって提供される機能的抽象化層のセットが示される。図２において示された構成要素、層、および機能は、例証的なものにすぎないことを意図するものであり、本発明の実施形態は、これらに限定されないということが予め理解されよう。図示されるように、以下の層および対応する機能が提供される。
【００２８】
ハードウェアおよびソフトウェア層６０は、ハードウェアおよびソフトウェア構成要素を含む。ハードウェア構成要素の例は、メインフレーム６１、ＲＩＳＣ（縮小命令セット・コンピュータ）アーキテクチャ・ベース・サーバ６２、サーバ６３、ブレード・サーバ６４、ストレージ・デバイス６５、ならびにネットワークおよびネットワーク構成要素６６を含む。いくつかの実施形態において、ソフトウェア構成要素は、ネットワーク・アプリケーション・サーバ・ソフトウェア６７およびデータベース・ソフトウェア６８を含む。
【００２９】
仮想化層７０は、仮想サーバ７１、仮想ストレージ７２、仮想プライベート・ネットワークを含む仮想ネットワーク７３、仮想アプリケーションおよびオペレーティング・システム７４、ならびに仮想クライアント７５という仮想エンティティの例が提供されることが可能な抽象化層を提供する。
【００３０】
１つの例において、管理層８０は、下記に説明される機能を提供することができる。リソース提供８１は、クラウド・コンピューティング環境内でタスクを行うために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を行う。メータリングおよびプライシング８２は、クラウド・コンピューティング環境内でリソースが利用されるときのコスト追跡、および、これらのリソースの利用量に対する請求またはインボイスを行う。１つの例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド利用者およびタスクに対する本人確認、ならびにデータおよび他のリソースの保護を行う。ユーザ・ポータル８３は、クラウド・コンピューティング環境へのアクセス権を、利用者およびシステム・アドミニストレータに与える。サービス・レベル管理８４は、必要なサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割当ておよび管理を行う。サービス・レベル契約（ＳＬＡ）の計画立案およびフルフィルメント８５は、ＳＬＡに従って将来要求されることが予想されるクラウド・コンピューティング・リソースの事前配列および調達を行う
【００３１】
ワークロード層９０は、クラウド・コンピューティング環境が利用されることが可能な機能の例を提供する。この層から提供されることが可能なワークロードおよび機能の例は、マッピングおよびナビゲーション９１、ソフトウェア開発およびライフサイクル管理９２、仮想クラスルーム教育配信９３、データ分析処理９４、トランザクション処理９５、ならびに勾配圧縮処理９６を含む。
【００３２】
本発明の態様に、より具体的に関係のある技術の全体像にこれから移ると、ＤＮＮの高度に分散した訓練は、通信が制限されることが多い。この限界を克服するために、コンピュータ的に使いやすく、ＤＮＮにおいて見られる多種多様な層に適用でき、ネットワーク・アーキテクチャおよびこれらのハイパー・パラメータにおける変化に適応できる、新しい勾配圧縮技術が必要である。
【００３３】
本明細書において前述されたように、「機械学習」というフレーズは、概して、データから学習する電子システムの機能を表現する。機械学習システム、エンジン、またはモジュールは、現在未知の、入力と出力の間の機能的関係を学習するために、外部クラウド環境などにおいて訓練されることが可能な訓練可能機械学習アルゴリズムを含むことができる。機械学習機能は、現在未知の機能を行うように訓練される能力がある人工ニューラル・ネットワーク（ＡＮＮ：artificial neural network）を使用して実行されることが可能である。機械学習および認知科学において、ＡＮＮは、特に脳といった、動物の生物学的ニューラル・ネットワークから着想を受けた統計学的学習モデルの一群である。ＡＮＮは、大量の入力によって決まるシステムおよび機能を推定または概算するために使用されることが可能である。ＡＮＮは、模擬「ニューロン」として作用し、電子信号の形で互いの間で「メッセージ」を交換する、相互接続プロセッサ要素のいわゆる「神経形態学的」システムとして具現化されることが可能である。生物学的ニューロンの間でメッセージを運ぶシナプス神経伝達物質の接続のいわゆる「可塑性」と同様に、模擬ニューロンの間で電子メッセージを運ぶＡＮＮにおける接続は、所与の接続の強さまたは弱さに対応する数字の重みを与えられる。重みは、経験に少なくとも部分的に基づいて調節され、調和されることが可能であり、ＡＮＮを入力に適応性のあるものにし、学習できるものにする。例えば、手書き認識のためのＡＮＮは、入力画像のピクセルによって活性化されることが可能な入力ニューロンのセットによって定義される。ネットワークの設計者によって決定された機能によって重み付けされ、変換された後、これらの入力ニューロンの活性化は、次に、しばしば「隠れた」ニューロンと呼ばれる下流の他のニューロンに進む。この処理は、出力ニューロンが活性化されるまで繰り返される。活性化された出力ニューロンは、どのキャラクタが読み込まれたかを決定する。
【００３４】
機械学習は、デジタル・データ間の推論または関係あるいはその両方を判定するために、非常に多くの技術によって用いられることが多い。例えば、機械学習技術、信号処理技術、画像処理技術、データ分析技術、または他の技術、あるいはその組合せは、機械学習モデルを用いて、デジタル・データの分析、デジタル・データの処理、デジタル・データからの推論の判定、またはデジタル・データ間の関係の判定、あるいはその組合せを行う。
【００３５】
ディープ・ニューラル・ネットワーク（ＤＮＮ）は、入力層と出力層との間に複数の隠れた層がある一種のＡＮＮである。ＤＮＮは、複雑な非線形関係をモデル化することができる。ＤＮＮアーキテクチャは、基本要素の層構成としてオブジェクトが表現される構成モデルを生成する。追加の層は、より低い層からの特徴を構成することができ、同様に行うシャロー・ネットワークよりも少ないユニットで複雑なデータをモデル化できる可能性がある。いくつかのＤＮＮは、ループ・バックせずに入力層から出力層にデータが流れるフィードフォワード・ネットワークである。回帰型ニューラル・ネットワーク（ＲＮＮ：recurrent neural network）は、データが任意の方向に流れる、さらなるタイプのＤＮＮである。ＲＮＮは、言語モデリングなどの用途のために使用されることがある。長短期記憶（ＬＳＴＭ）ネットワークは、別のタイプのＤＮＮである。
【００３６】
特に畳み込み層を伴うニューラル・ネットワークの使用は、深層学習の進歩を推進してきた。このようなニューラル・ネットワークは、畳み込みニューラル・ネットワーク（ＣＮＮ）と呼ばれる。ＣＮＮにおいて、カーネルは、視野内の重複領域を畳み込み、したがって、特徴を検出する際の空間的位置の重要性を強調する。ＣＮＮの畳み込み層の計算では、典型的には、９０％を超える計算時間が、ニューラル・ネットワークの訓練および推論に占められる。訓練時間は、例えば、使用されている訓練データセットの大きさによって決まり、１週間以上になることがある。単一ノード・システムに対する訓練時間を改善するために、分散システムは、複数の中央処理装置（ＣＰＵ：central processing unit）または画像処理装置（ＧＰＵ：graphics processing unit）に訓練データを分散させるように開発されてきた。リング・ネットワーク内のシステムにおけるアクセラレータまたは学習器あるいはその両方を接続することによって、アクセラレータ間の帯域幅の最大化を試みるために、リング・ベースのシステム・トポロジが提案されてきた。アクセラレータは、次に、ローカル・ミニ・バッチから隣のアクセラレータに直接、または集中型パラメータ・サーバによって、アクセラレータが計算した重み勾配を輸送する。しかし、利用される学習器の数が増加するにつれて、大きなスケーリング条件の下でミニ・バッチ・データを分散させると、各学習器に必要なフロップが比例して減少することで、重い計算による通信の不安定を引き起こすと同時に、学習器間の通信帯域幅の需要を著しく増加させるという逆効果をもたらす。このようにして、圧縮によってＣＮＮの訓練を加速させることが、本明細書における技術的解決策の例によって説明されるように、望ましい改善である。
【００３７】
本発明の態様の全体像にこれから移ると、本発明の１つまたは複数の実施形態は、アクセラレータ間で交換されるデータ量を最小化するのを支援する新しい圧縮技術を提供することによって従来技術の上述の欠点に対処する。特に、勾配残差の局所的な選択を利用する適応性のある残差勾配圧縮方式が提供され、残差勾配圧縮方式は、局所活動に基づいて圧縮率を自動的に調整することができる。例えば、特徴を入力する活動と、いずれかの層における残差勾配との間に相関性がない可能性があるので、本発明のいくつかの実施形態において、圧縮方式は、各層に対して残差ベクトル全体をいくつかのビンに一様に分割することによって層全体にわたる残差を捉えるように構成され、このようにして、固定長ビン・サイズＬＴを有する新しいハイパー・パラメータを作り出す。各ビンにおいて、圧縮アルゴリズムは、残差の絶対値の最大値を最初に見つける。この値に加えて、圧縮アルゴリズムは、規模が比較的似ている他の残差をこの最大値に送る。残差は、以前の残差と、逆伝搬から取得された最新の勾配値との合計として、各ミニ・バッチに対して計算される。この最新の勾配を加えたこの以前の残差とスケール・ファクタとの合計が、ビンにおける最大値を超過する場合、これらの追加の残差は、送ること、または中心的に更新すること、あるいはその両方が行われるように値のセットに含まれる。本発明の１つまたは複数の実施形態による様々な適切なスケール・ファクタが使用されることが可能である。例えば、本発明のいくつかの実施形態において、スケール・ファクタは、約１．５から約３に及ぶ。本発明のいくつかの実施形態において、スケール・ファクタは２である。
【００３８】
残差は、経験的に勾配より大きい可能性があるので、本発明の上述の態様の１つまたは複数は、極大値に近い重要な残差の送信を可能にする圧縮方式を提供することによって従来技術の欠点に対処する。本発明の１つまたは複数の実施形態による、圧縮された残差ベクトルの量子化によって、全体的な圧縮率が向上する可能性がある。圧縮方式は、各学習器におけるあらゆる層に別々に適用されることが可能である。本発明のいくつかの実施形態において、各学習器は、圧縮された疎ベクトルに加えてスケール・ファクタを送信する。本発明のいくつかの実施形態において、疎と量子化の両方を活用することによって、完全接続層および回帰層に対する約２００倍、ならびに畳み込み層に対する４０倍の終端間の圧縮率は、モデルの正確さを著しく低下させずに（例えば、＜１％の低下）達成されることが可能である。以前の方法は、大規模ネットワークに対する約１．６％など、著しく低下させていた。本発明の１つまたは複数の実施形態において、圧縮方式は、ソート、またはソートに似ているものである必要がないので、圧縮方式は、高性能システムにとって計算的に効率的（Ｏ）（Ｎ））である可能性がある。
【００３９】
本発明の態様のより詳細な説明にこれから移ると、図３は、本発明の１つまたは複数の実施形態を実行するのに有用なコンピュータ・ベース・システム３００の例を示す高レベルのブロック図を示す。１つの例示的なコンピュータ・システム３００が示されるが、コンピュータ・システム３００は、コンピュータ・システム３００をさらなるシステムに接続し、インターネット、イントラネット、またはワイヤレス通信ネットワーク、あるいはその組合せなどの１つまたは複数の広域ネットワーク（ＷＡＮ）またはローカル・エリア・ネットワーク（ＬＡＮ）あるいはその両方を含むことができる通信経路３２６を含む。コンピュータ・システム３００およびさらなるシステムは、（例えば、これらの間でデータを通信するために）通信経路３２６を介して通信状態にある。
【００４０】
コンピュータ・システム３００は、プロセッサ３０２などの１つまたは複数のプロセッサを含む。プロセッサ３０２は、通信インフラストラクチャ３０４（例えば、通信バス、クロス・オーバー・バー、またはネットワーク）に接続される。コンピュータ・システム３００は、ディスプレイ・ユニット３０８に表示するために通信インフラストラクチャ３０４から（または図示されていないフレーム・バッファから）、グラフィックス、テキスト、および他のデータを転送するディスプレイ・インターフェース３０６を含むことができる。コンピュータ・システム３００は、好ましくはランダム・アクセス・メモリ（ＲＡＭ）といったメイン・メモリ３１０も含み、２次メモリ３１２を含むこともできる。２次メモリ３１２は、例えば、ハードディスク・ドライブ３１４、または、例えば、フロッピー（Ｒ）・ディスク・ドライブ、磁気テープ・ドライブ、もしくは光ディスク・ドライブを示す取外し可能ストレージ・ドライブ３１６、あるいはその両方を含むことができる。取外し可能ストレージ・ドライブ３１６は、当業者によく知られた方法で、取外し可能ストレージ・ユニット３１８との間で、読み取ること、または書き込むこと、あるいはその両方を行う。取外し可能ストレージ・ユニット３１８は、取外し可能ストレージ・ドライブ３１６によって読み込まれ、書き込まれる、例えば、フロッピー（Ｒ）・ディスク、コンパクト・ディスク、磁気テープ、または光ディスク、等を示す。正しく認識されるように、取外し可能ストレージ・ユニット３１８は、コンピュータ・ソフトウェアまたはデータあるいはその両方が格納されたコンピュータ可読媒体を含む。
【００４１】
本発明のいくつかの代替実施形態において、２次メモリ３１２は、コンピュータ・プログラムまたは他の命令がコンピュータ・システムにロードされるのを可能にするための他の類似の手段を含むことができる。このような手段は、例えば、取外し可能ストレージ・ユニット３２０およびインターフェース３２２を含むことができる。このような手段の例は、（ビデオ・ゲーム・デバイスにおいて見つかるものなどの）プログラム・パッケージおよびパッケージ・インターフェース、（ＥＰＲＯＭまたはＰＲＯＭなどの）取外し可能メモリ・チップおよび関連付けられたソケット、ならびに、他の取外し可能ストレージ・ユニット３２０、および取外し可能ストレージ・ユニット３２０からコンピュータ・システム３００にソフトウェアおよびデータが移送されるのを可能にするインターフェース３２２を含むことができる。
【００４２】
コンピュータ・システム３００は、通信インターフェース３２４も含むことができる。通信インターフェース３２４は、コンピュータ・システムと外部デバイスとの間でソフトウェアおよびデータが移送されるのを可能にする。通信インターフェース３２４の例は、モデム、（イーサネット（Ｒ）・カードなどの）ネットワーク・インターフェース、通信ポート、またはＰＣＭ−ＣＩＡスロットおよびカード、等を含むことができる。通信インターフェース３２４を介して移送されるソフトウェアおよびデータは、通信インターフェース３２４によって受信されることが可能な、例えば、電子信号、電磁気信号、光信号、または他の信号であることが可能な信号の形式である。これらの信号は、通信経路（すなわち、チャネル）３２６を介して通信インターフェース３２４に送られる。通信経路３２６は信号を搬送し、ワイヤもしくはケーブル、光ファイバ、電話線、セルラー・フォン・リンク、ＲＦリンク、または他の通信チャネル、あるいはその組合せを使用して実行されることが可能である。
【００４３】
本開示において、用語「コンピュータ・プログラム媒体」、「コンピュータ使用可能媒体」、および「コンピュータ可読媒体」は、一般に、メイン・メモリ３１０および２次メモリ３１２、取外し可能ストレージ・ドライブ３１６、ならびにハードディスク・ドライブ３１４に取り付けられたハードディスクなどの媒体を指すために使用される。（コンピュータ制御ロジックとも呼ばれる）コンピュータ・プログラムは、メイン・メモリ３１０または２次メモリ３１２あるいはその両方に格納される。コンピュータ・プログラムは、通信インターフェース３２４を介して受信されることが可能である。このようなコンピュータ・プログラムは、実行されると、本明細書において論じられるような本開示の特徴をコンピュータ・システムが行えるようにする。特に、コンピュータ・プログラムは、実行されると、コンピュータ・システムの特徴をプロセッサ３０２が行えるようにする。したがって、このようなコンピュータ・プログラムは、コンピュータ・システムのコントローラに相当する。
【００４４】
図４は、本開示の１つまたは複数の実施形態による実施例のニューラル・ネットワークのブロック図を示し、サンプル入力マップ４００を解釈している。この特定の例は、手書き文字「ｗ」を入力マップとして使用するが、入力マップの他のタイプが可能であるということがわかる。示された例において、入力マップ４００は、入力層４１０または「層−１」のための値のセットを作り出すために使用される。本発明のいくつかの実施形態において、層−１は、ピクセルが特定の属性を示すかどうかに応じてニューロンが１または０を示すべく、サンプル入力マップ４００のピクセルを、層−１における特定のニューロンに直接マッピングすることによって生成される。値をニューロンに割り当てる別の実施例の方法は、畳み込みニューラル・ネットワークを参照しながら下記において論じられる。ニューラル・ネットワークの予期せぬ変化、および解決のために作り出される問題に応じて、ネットワークの各層は、異なる数のニューロンを有することができ、これらは、入力データの特定の品質に関するものであることもあれば、そうでないこともある。
【００４５】
図４を参照すると、層−１  ４１０におけるニューロンは、次の層である層−２  ４２０におけるニューロンに接続される。ニューラル・ネットワークにおいて、ニューロンのそれぞれは、特定の層において、次の層におけるニューロンに接続される。この例において、層−２におけるニューロンは、層−１におけるニューロンのそれぞれから入力値を受け取る。入力値は次に合計され、この合計は、バイアスと比較される。特定のニューロンに対するバイアスを値が超過する場合、このニューロンは、次に、ニューロンの次の層におけるニューロンへの入力として使用されることが可能な値を保持する。この計算は、図４において「出力」と呼ばれる最終層４６０に計算が達するまで、ニューラル・ネットワークの様々な層４３０〜４５０を通じて継続する。キャラクタ認識のために使用されるニューラル・ネットワークの例において、層における各値は、特定のキャラクタに割り当てられる。本発明のいくつかの実施形態において、ネットワークは、１つのニューロンにおいてただ１つの大きな正の値を有する出力層で終わるように構成され、次に、どのキャラクタを最も可能性のある手書き入力キャラクタであると、ネットワークが計算したかを示す。
【００４６】
本発明のいくつかの実施形態において、ニューラル・ネットワークにおける各層に対するデータ値は、ベクトルまたは行列（またはいくつかの例において、テンソル）として表現され、計算は、ベクトル計算または行列計算として行われる。行列のインデックス（または大きさあるいはその両方）は、図４において示されるように、層およびネットワークによって変化する。異なる実装形態は、コンピュータ・メモリにそれぞれ、行列を置き、または行列をマッピングする。図４において示された実施例のニューラル・ネットワークにおいて、各レベルは、ニューラル・ネットワークの各層に対する行列次元によるニューロン値の行列である。層における行列内の値は、変換行列の中にある接続の強さを乗じられる。この行列の乗算は、接続の強さに従って以前の層における各値をスケーリングし、次に、合計される。次のレベルにおける各ニューロンの閾値を考慮するために、次に、結果として生じる積の行列にバイアス行列が追加される。次に活性化関数がそれぞれの結果の値に適用され、結果として生じる値は、次の層のための行列内に置かれる。例において、活性化関数は、線形ユニット、シグモイド、またはtanh()に修正されることが可能である。各層の間の接続、およびしたがってネットワーク全体は、一連の行列として表現されることが可能である。ニューラル・ネットワークを訓練することは、これらの行列に対する固有値を見つけることを含む。
【００４７】
完全に接続されたニューラル・ネットワークは、正しく訓練されると、手書きなどの入力パターンを認識することができるが、入力に対して演算するときに形状および近接性を利用できないことがある。例えば、あらゆるピクセルは独立して演算されるので、ニューラル・ネットワークは、隣接ピクセルを無視する可能性がある。ＣＮＮは、比較すると、単一の値ではなく値の配列を各ニューロンと関連付けることによって演算する。概念上、配列は、入力パターンのサブセット、または訓練データの他の部分である。その後の層のためのニューロン値の変換は、畳み込みを使用して行われる。このようにして、ＣＮＮにおいて、接続の強さは、完全なネットワークにおけるようなスカラ値ではなく、畳み込みカーネルである。
【００４８】
図５は、本発明の１つまたは複数の実施形態による、入力マップ５１０および畳み込みカーネル５２０を含む訓練データを使用して訓練されるＣＮＮにおける実施例の畳み込み層５００を示す。入力マップ５１０は、例えばＮ個の入力マップといった複数の入力パターンを含む。各入力マップは、大きさｎ×ｎの正方行列などの行列である。入力マップは、大きさｎ−ｋ＋１×ｎ−ｋ＋１のＭ個の出力マップ５３０を生み出すために、図示のような大きさｋ×ｋの畳み込みカーネル５２０で畳み込まれる。各畳み込みは、Ｎ個の入力マップを含む３Ｄの畳み込みである。入力マップ、カーネル、および出力マップは、正方形である必要はないということに留意されたい。ＣＮＮは、複数のこのような層を含むことができ、ここで、以前の層からの出力マップ５３０は、その後の層のための入力マップ５１０として使用される。逆伝搬アルゴリズムは、ｋ×ｋ×Ｍ×Ｎ個のフィルタの重み値を学習するために使用されることが可能である。
【００４９】
例えば、本発明のいくつかの実施形態において、入力マップ５１０は、対応する出力マップを生成するために、各フィルタ・バンクで畳み込まれる。例えば、手書きを識別するためにＣＮＮ５００が訓練されている場合、入力マップ５１０は、縦線を表す畳み込みカーネルを含むフィルタ・バンクと結合される。結果として生じる出力マップ５３０は、入力マップ５１０において提示することが可能な縦線を識別する。さらに、別のフィルタ・バンクは、右上に進むなど、対角線を表す畳み込みカーネルを含むことができる。第２のフィルタ・バンクによって入力マップ５１０の畳み込みから生じる出力マップ５３０は、対角線を収める訓練データのサンプルを識別する。２つの出力マップ５３０は、ピクセルの隣接を維持しながらキャラクタについての異なる情報を示す。これは、キャラクタ認識がより効率的になる可能性がある。
【００５０】
図６は、本発明の１つまたは複数の実施形態による深層学習ニューラル・ネットワークの訓練に適応性のある残差勾配圧縮を行うためのシステム６００のブロック図を示す。システム６００は、例えば、非凸最適化問題の実例として、ディープ・ネットワーク学習を前もって形成することを担う複数の学習処理システム６１０、６２０、６３０、６４０を含む。これは、大きいデータセット上の大量のパラメータでディープ・ニューラル・ネットを訓練するのに有用である可能性がある。例えば、本発明のいくつかの実施形態において、複数のワーカ（例えば、複数の学習処理システム６１０、６２０、６３０、６４０）が、１つのニューラル・ネットワークを訓練するとき、各ワーカは、訓練データのサブセットを計算し、ワーカ間の通信が必要とされる可能性があり、これは、通常、データ並列処理と呼ばれる。通信帯域幅を節約するために、各ワーカは、一部の勾配値を送信し、残りの残差をローカルに保持する。システム６００は、アクセラレータ間で交換されるデータ量を最小化するのを支援する圧縮技術を提供する。特に、システム６００は、勾配残差の局所的選択を利用する適応性のある残差勾配圧縮方式を用い、圧縮方式は、各層のための残差ベクトル全体をいくつかのビンに一様に分割することによって、層全体にわたって残差を取り込むように構成され、固定長ビン・サイズＬＴは、新しいハイパー・パラメータである。各ビンにおいて、残差の絶対値の最大値は、複数の学習処理システム６１０、６２０、６３０、６４０の間で識別して交換すること、またはパラメータ・サーバに伝送すること、あるいはその両方が行われる。この最大値に大きさが比較的似ている他の残差も、複数の学習処理システム６１０、６２０、６３０、６４０の間で交換すること、またはパラメータ・サーバに伝送すること、あるいはその両方が行われる。例えば、本発明のいくつかの実施形態において、残差は、以前の残差と、逆伝搬から取得された最新の勾配値とを合計することによって各ミニ・バッチのために計算される。この最新の勾配を加えたこの以前の残差と、スケール・ファクタとの合計が、ビンにおける最大値を超過する場合、これらの追加の残差は、パラメータ・サーバなどのサーバにおいて送信すること、または、中心的に更新すること、あるいはその両方が行われることになる値のセットに含まれる。４つの学習処理システム６１０、６２０、６３０、６４０が、図６において示されているが、本技術は、任意の適切な数の学習処理システムによって利用されることが可能であるということが理解されよう。本発明のいくつかの実施形態において、複数のワーカ（例えば、複数の学習処理システム６１０、６２０、６３０、６４０）が、１つのニューラル・ネットワークを訓練するとき、各ワーカは、訓練データのサブセットを計算し、ワーカ間の通信が必要とされ、これは、通常、データ並列処理と呼ばれる。通信帯域幅を節約するために、各ワーカは、一部の勾配値を送信し、残りの残差をローカルに保持する。
【００５１】
図７は、本発明の１つまたは複数の実施形態による１つまたは複数の畳み込み層５００を含むＣＮＮなどのＤＮＮを訓練するための実施例の処理フロー７００を示す。実施例のロジックは、ＣＰＵ、ＧＰＵ、デジタル・シグナル・プロセッサ（ＤＳＰ）、もしくは他の任意のプロセッサ、またはこれらの組合せなどの１つまたは複数のプロセッサによって実行されることが可能である。７０２において、ＣＮＮは初期化される。本発明のいくつかの実施形態において、ＣＮＮは、ランダムの重みで初期化される。７０４において、ＣＮＮ５００のための訓練データが受信される。本発明のいくつかの実施形態において、ＣＮＮは、一致した結果および効率的な結果をもたらすように洗練されることが可能な、サンプルの畳み込みカーネルおよびバイアスでプリセットされる。本発明のいくつかの実施形態において、訓練データは、例えば、何万ものオーダーの入力訓練サンプル４００などの複数の入力訓練サンプル４００を含む。入力訓練サンプル４００は、予想出力４６０と関連付けられる。本発明のいくつかの実施形態において、入力４００は手書きサンプルであり、予想出力４６０は、各手書きサンプルを解釈するための正しいキャラクタを示すものである。
【００５２】
本発明のいくつかの実施形態において、ＤＮＮの訓練は、複数の訓練エポックを介して訓練することを含む。例えば、本発明のいくつかの実施形態において、各エポックは、いくつかのミニ・バッチを含む。したがって、本発明のいくつかの実施形態において、ブロック７０６において示されるように、処理は、（例えば、学習処理システム６１０、６２０、６３０、６４０によって）訓練データを受信することによって訓練エポックのミニ・バッチにおいて始まる。入力マップ５１０および畳み込みカーネル５２０を使用して、出力マップ５３０は、（例えば、学習処理システム６１０、６２０、６３０、６４０によって）ブロック７０８において示されるように、本明細書において説明されるように生成される。出力マップ５３０を生成することは、一般に、「フォワード・パス」と呼ばれる。７１０において、予想に対して、ＣＮＮのどれだけ近くにあるか、または遠くにあるかについて、出力マップ５３０に基づいて決定される。ブロック７１２において、ＣＮＮを構成する行列またはベクトルあるいはその両方のそれぞれに関する誤差の程度は、勾配降下を使用して判定される。相対的な誤差を判定することは、（例えば、学習処理システム６１０、６２０、６３０、６４０によって）「バックワード・パス」と呼ばれる。
【００５３】
ブロック７１４において、現在の勾配ベクトルが、（例えば、学習処理システム６１０、６２０、６３０、６４０によって）システムの各学習器によって層毎に取得される。本発明のいくつかの実施形態において、それぞれの所与のニューラル・ネットワーク層に対する現在の勾配ベクトルは、所与のニューラル・ネットワーク層のパラメータの勾配重みを含む。下記においてさらに詳細に論じられるように、本発明のいくつかの実施形態において、勾配重みは、訓練データ全体から計算されるのとは対照的に、訓練データのミニ・バッチから計算される。
【００５４】
ブロック７１６において、現在の残差ベクトル、および圧縮された現在の残差ベクトルは、（例えば、学習処理システム６１０、６２０、６３０、６４０によって）システムの各学習器によって、それぞれの所与の層に対して生成される。本発明のいくつかの実施形態において、圧縮された現在の残差ベクトルは、層方向またはチャンク方向に圧縮された現在の残差ベクトルである。本発明のいくつかの実施形態において、現在の残差ベクトルは、ミニ・バッチの所与の層に対する残差勾配重みを含む。本発明のいくつかの実施形態において、現在の残差ベクトルは、現在の勾配ベクトルを以前の残差ベクトル（例えば、以前のミニ・バッチの残差ベクトル）と合計することによって生成される。本発明のいくつかの実施形態において、以前の残差ベクトルは、空ベクトルであるか、ヌル値を有し、実行が最初に初期化されるときに発生することが可能である。したがって、本発明のいくつかの実施形態において、現在の勾配ベクトルと以前の残差ベクトルとの合計は、現在の勾配ベクトルと同じ、取得された現在の残差ベクトルになる。
【００５５】
本発明のいくつかの実施形態において、ブロック７１６において生成される圧縮された現在の残差ベクトルは、一様な大きさの複数のビンに、現在の残差ベクトルの残差勾配重みを分割すること、および、次に、複数のビンのうちの１つまたは複数のビンの残差勾配重みのサブセットを量子化すること、に少なくとも部分的に基づいて生成され、一様な大きさは、ニューラル・ネットワークのハイパー・パラメータである。本発明のいくつかの実施形態において、残差勾配重みのサブセットの量子化は、ミニ・バッチのスケーリング・パラメータを計算すること、および各ビンの極大値を計算すること、に少なくとも部分的に基づく。
【００５６】
ブロック７１８において、圧縮された現在の残差ベクトルは、（例えば、学習処理システム６１０、６２０、６３０、６４０によって）システムの各学習器の間で交換すること、またはパラメータ・サーバに伝送すること、あるいはその両方が行われる。本発明のいくつかの実施形態において、交換は、システムの各学習器が、圧縮された現在の残差ベクトルを複数の学習器のうちの他の学習器に伝送することを含む。ブロック７２０において、圧縮された現在の残差ベクトルは、（例えば、学習処理システム６１０、６２０、６３０、６４０によって）複数の学習器のうちの各学習器において解凍される。解凍後、ブロック７２２において、複数の学習器のうちの各学習器は、（例えば、学習処理システム６１０、６２０、６３０、６４０によって）解凍されたベクトルの勾配をローカルに平均する。
【００５７】
本発明のいくつかの実施形態において、行列は、次に、ブロック７２４において示されるように、解凍されたベクトルに基づいて、誤差を調節するように修正される。例えば、本発明のいくつかの実施形態において、畳み込みカーネル５２０は、出力誤差情報に基づいて修正され、次に、修正されたカーネルは、各ニューラル・ネットワーク行列の修正を判定するために使用され、これは、「アップデート・パス」と呼ばれる。本発明のいくつかの実施形態において、修正された畳み込みカーネル５２０は、調節後、ブロック７２６において示されるように、訓練が完了したものと見なされない限り、訓練の次のミニ・バッチまたはエポックのために使用される。本発明のいくつかの実施形態において、１つのミニ・バッチによって修正された畳み込みカーネル５２０は、その後のミニ・バッチにおいて使用される。例えば、所定の誤差の閾値による予想出力に従って入力をＣＮＮが識別する場合、訓練は、完了したものと見なされてよい。訓練がまだ完了していない場合、修正された畳み込みカーネルを使用して、別の訓練エポックが行われる。
【００５８】
本発明のいくつかの実施形態において、「フォワード・パスおよびバックワード・パス」の各反復は、訓練データ全体を使用する。代替として、訓練データは、ミニ・バッチ、またはサブセットに分割されることが可能である。バッチ化された訓練処理において、ＣＮＮは、ブロック７０８において示されるように、ミニ・バッチの出力を決定するために、フォワード・パスで伝搬される。誤差関数は、ブロック７１０において示されるように、バッチの予想出力からＣＮＮがどれだけ遠くにあったかを計算するために使用される。勾配関数は、誤差関数に対して決定される。勾配関数は、例において、誤差についての、各ニューラル・ネットワーク行列の各エントリに対する偏導関数を含む。勾配関数は、勾配降下法に従って、各行列をどれだけ調節するかを表す。プロセッサは、ブロック７２４において示されるように、勾配関数に従って、畳み込みカーネルおよびバイアスを含む行列を後で修正する。ブロック７２８において示されるように、「フォワード・パス／バックワード・パス」は、より多くのミニ・バッチがある、または、ＣＮＮが訓練されない、あるいはその両方である限り繰り返される。ミニ・バッチは、訓練エポックを完了するのに必要な入力サンプルの総数のうちのいずれかの小部分を含むことができる。
【００５９】
図８は、本発明の１つまたは複数の実施形態による、圧縮された現在の残差ベクトルを生成するためのブロック７１６の実施例のロジックを示す。ブロック８０２において、スケーリングされた現在の残差ベクトルが、システムの各学習器において生成される。スケーリングされた現在の残差ベクトルは、所与のミニ・バッチのためのスケーリングされた残差勾配重みを含む。スケーリングされた現在の残差ベクトルは、現在の勾配ベクトルにスケーリング・パラメータを乗じ、次に、乗じた勾配ベクトルと以前の残差ベクトルを合計することによって生成される。本発明のいくつかの実施形態において、スケーリング・パラメータは、Ｌ２正規化に従って量子化誤差を最小化することによって計算される。
【００６０】
ブロック８０４において、現在の残差ベクトルの残差勾配重みは、一様な大きさの複数のビンに一様に分割することであり、一様な大きさは、ニューラル・ネットワークのハイパー・パラメータである。ブロック８０６において、それぞれの所与のビンのそれぞれの所与の残差勾配重みに対する極大値が識別される。本発明のいくつかの実施形態において、所与のビンの極大値は、所与のビンの残差勾配重みの最大絶対値である。
【００６１】
ブロック８０８において、所与のビンの極大値を超過する対応するスケーリングされた残差勾配重みを所与の残差勾配重みが有するかどうかが、それぞれの所与のビンのそれぞれの所与の残差勾配重みに対して判定される。ブロック８１０において、対応するスケーリングされた残差勾配重みを有する残差勾配重みが、所与のビンの極大値を超過することを判定すると、所与の残差勾配重みに対する量子化値が生成され、現在の残差ベクトルが更新される。本発明のいくつかの実施形態において、現在の残差ベクトルは、現在の残差ベクトルの所与の残差勾配重みを量子化値で置換することによって更新される。ブロックにおいて、および次に、現在の残差ベクトルの所与の残差勾配重みを量子化値で置換することによって現在の残差ベクトルを更新する。
【００６２】
以下の擬似コードは、処理フロー７００を実行するために使用されることが可能な２つのアルゴリズムを記述している。
【００６３】
【表１】
2021505993.tif 000003
【００６４】
【表２】
2021505993.tif 000004
【００６５】
アルゴリズム１は、本発明の１つまたは複数の実施形態による、実施例の勾配重み通信方式を示す。アルゴリズム２は、（「AdaComp」と簡潔に呼ばれる）本発明の１つまたは複数の実施形態による実施例の圧縮方式を示す。アルゴリズム１は、アルゴリズム２の圧縮アルゴリズムをテストするために使用されることが可能な勾配重み通信方式である。アルゴリズム２は、アルゴリズム２のpack()およびunpack()関数の中にカプセル化される。これらの２つの関数は、例えば、処理フロー７００のバックワード・パス・ステップ７１２と重み更新ステップ７２２との間に挿入されることが可能である。pack/unpack関数は、exchange()関数と関係なく実行されることが可能である。使用されるexchange()関数は、（例えば、リング・ベースｖｓパラメータ・サーバ・ベースといった）ＣＮＮの特定のトポロジに依存する可能性がある。
【００６６】
アルゴリズム２は、圧縮方式において利用されることが可能な量子化関数の１つの例を示す。符号ビットは、元の数字を表現するためにスケール値と共に使用される。この例において、単一のスケール値がそれぞれの所与の層のために使用され、スケール値は、所与の層のためのゲーム・ベクトルにおける全ての要素の絶対値の平均である。他の適切な量子化関数またはスケール値あるいはその両方は、本発明の１つまたは複数の実施形態において利用されることが可能である。
【００６７】
本発明のいくつかの実施形態において、アルゴリズム２は、５０個から５００個の要素間のビンの大きさ（ＬＴ）に対する疎を通じて、各ビンの中の１０個から１００個までの要素をそれぞれ選択する。本発明のいくつかの実施形態において、８ビットのスパース・インデックス表現が、４０個未満の要素のＬＴの大きさに対して使用される。本発明のいくつかの実施形態において、１６ビット表現は、（例えば、５００個以上の要素、または１００００個までの要素、あるいはその両方といった）大きいＬＴの大きさに対して使用される。本発明のいくつかの実施形態において、８ビット表現または１６ビット表現のうちの２ビットは、３進数化された（ternarized）データ値を表現するために使用される。
【００６８】
従来の３２ビット浮動小数点表現と比較すると、アルゴリズム２は、畳み込み層に対しておよそ４０倍、ならびに完全接続層および回帰層に対しておよそ２００倍の効果的な圧縮率を達成することができる。アルゴリズム２を堅牢な圧縮技術にする１つの要因は、アルゴリズム２が自己調節可能な閾値を利用するというものである。アルゴリズム２は、各ビンにおける極大値に近い追加の残差勾配を送信する圧縮方式を適用するので、ミニ・バッチにおける重要な勾配の数に基づいて自動的に適応させることができる。
【００６９】
本発明は、統合の任意の可能な技術詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであることが可能である。コンピュータ・プログラム製品は、プロセッサが本発明の態様を実行するためのコンピュータ可読プログラム命令を保持するコンピュータ可読ストレージ媒体（または複数の媒体）を含むことができる。
【００７０】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納することができる有形デバイスであることが可能である。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せであることが可能であるがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の完全に網羅されていないリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、消去可能プログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、命令が記録されたパンチ・カードまたは溝内隆起構造などの機械的にエンコードされたデバイス、および前述の任意の適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書において使用されるように、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、またはワイヤを通じて伝送される電気信号などの、それ自体が一時的な信号であると解釈されるべきではない。
【００７１】
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から個々のコンピューティング・デバイス／処理デバイスに、あるいは、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せといったネットワークを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロードされることが可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含むことができる。各コンピューティング・デバイス／処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、個々のコンピューティング・デバイス／処理デバイス内のコンピュータ可読ストレージ媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【００７２】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ（ＩＳＡ）命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路機器のための構成データ、または、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む１つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであることが可能である。コンピュータ可読プログラム命令は、スタンド・アロン・ソフトウェア・パッケージとして、全面的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で実行することができ、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、または全面的にリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくは広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されることが可能であり、または、接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて）外部コンピュータに対して行われることが可能である。いくつかの実施形態において、例えば、プログラマブル・ロジック回路機器、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路機器は、本発明の態様を行うために、コンピュータ可読プログラム命令の状態情報を利用して、電子回路機器を個別化することによって、コンピュータ可読プログラム命令を実行することができる。
【００７３】
本発明の態様は、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照しながら本明細書において説明される。流れ図またはブロック図あるいはその両方の各ブロック、ならびに流れ図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実行されることが可能であるということが理解されよう。
【００７４】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行する命令が、流れ図またはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定される機能／行為を実行するための手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されて、マシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体が、流れ図またはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定される機能／行為の態様を実行する命令を含む製品を保持するべく、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに特定の手法で機能するように指示することができるものであってもよい。
【００７５】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、流れ図またはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定される機能／行為を実行するべく、コンピュータ実装処理を生み出すために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【００７６】
図中の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点に関して、流れ図およびブロック図の中の各ブロックは、指定された論理機能を実行するための１つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または一部に相当することが可能である。いくつかの代替実装形態において、ブロック内に記された機能は、図中に記された順序とは異なる順序で発生することが可能である。例えば、連続して示された２つのブロックは、実際に、実質的に並行に実行されることが可能であり、またはブロックは時には、含まれる機能に応じて、逆の順序で実行されることが可能である。ブロック図または流れ図あるいはその両方の各ブロック、およびブロック図または流れ図あるいはその両方におけるブロックの組合せは、指定された機能または行為を行うか、専用ハードウェアとコンピュータ命令の組合せを行う、専用ハードウェア・ベースのシステムによって実行されることが可能であるということにも留意されたい。
【００７７】
本発明の様々な実施形態の説明は例証のために提示されてきたが、網羅的であること、または開示された実施形態に限定されることを意図するものではない。説明された実施形態の範囲および思想から逸脱することなく、多くの変更および改変が当業者には明らかになる。本明細書において使用される専門用語は、実施形態の原理、実用的な用途、もしくは市場において見つかる技術に対する技術改良を最も良く説明するように、または、本明細書において説明される実施形態を当業者が理解できるように、選ばれた。
【図１】
2021505993.tif 000005
【図２】
2021505993.tif 000006
【図３】
2021505993.tif 000007
【図４】
2021505993.tif 000008
【図５】
2021505993.tif 000009
【図６】
2021505993.tif 000010
【図７】
2021505993.tif 000011
【図８】
2021505993.tif 000012
【国際調査報告】
2021505993.tif 000013
2021505993.tif 000014