(57)【要約】【課題】計算リソースの要求を減少させるためにディープニューラルネットワーク（ＤＮＮ）をトレーニングする技術を開示する。【解決手段】コンピュータシステムは、ＤＮＮの重みのセットを記憶するメモリを有する。ＤＮＮは、複数の層を有する。複数の層の各々に対して、重みのセットは、層の重みを有し、ビット精度値のセットは、層のビット精度値を有する。層の重みは、層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表される。層の重みは、層のニューロンに対する入力に関連する。さらに、コンピュータシステムは、ＤＮＮをトレーニングするように構成された機械学習システムを実行する処理回路を有する。ＤＮＮをトレーニングすることは、重みのセット及びビット精度値のセットを最適化することを備える。【選択図】図１
2019164793.tif 000002
【特許請求の範囲】
【請求項１】
計算リソースの要求を減少させるためにディープニューラルネットワーク（ＤＮＮ）をトレーニングするコンピュータシステムであって、
前記ＤＮＮの重みのセットを記憶するメモリであって、前記ＤＮＮは、複数の層を有し、前記複数の層の各々に対して、前記重みのセットは、前記層の重みを有し、ビット精度値のセットは、前記層のビット精度値を有し、前記層の重みは、前記層のビット精度値に等しいビット精度を有する値を用いて前記メモリにおいて表され、前記層の重みは、前記層のニューロンに対する入力に関連するメモリと、
前記ＤＮＮをトレーニングするように構成された機械学習システムを実行する処理回路であって、前記ＤＮＮをトレーニングすることは、前記重みのセット及び前記ビット精度値のセットを最適化することを備える処理回路と、
を備えるコンピュータシステム。
【請求項２】
前記機械学習システムは、前記ＤＮＮをトレーニングすることの一部として前記機械学習システムが複数の繰り返しに亘って誤差逆伝播アルゴリズムを適用するように構成され、
前記誤差逆伝播アルゴリズムの各繰り返しは、前記重みのセットを更新するとともに前記ビット精度値のセットを最適化する請求項１に記載のコンピュータシステム。
【請求項３】
前記ＤＮＮの層の二つ以上は、互いに異なるビット精度値を有する請求項１に記載のコンピュータシステム。
【請求項４】
前記重みのセットは、重みの第１のセットであり、
前記メモリは、前記複数の層の各層に対する一定の精度の重みのセットを有する重みの第２のセットを記憶し、前記重みの第２のセットの各重みは、予め規定されたビット精度値に等しいビット精度値を有し、
前記機械学習システムは、前記ＤＮＮをトレーニングすることの一部として、前記機械学習システムが前記ＤＮＮをトレーニングするための複数の繰り返しを実行するように構成され、前記機械学習システムは、前記複数の繰り返しを実行することの一部として、前記機械学習システムが前記複数の繰り返しの各繰り返しに対して、
第１の入力データセットに基づいて第１の出力データセットを計算するために前記第２のセットの重みを前記ＤＮＮのニューロンの入力の重みとして用い、
損失関数を計算し、
前記損失関数に基づいて前記重みの第２のセットを更新し、
前記損失関数に基づいて前記ビット精度値のセットを更新し、
前記重みの第２のセットを更新した後及び前記ビット精度値のセットを更新した後、更新した第２のセットの重み及び更新したビット精度値のセットに基づいて前記重みの第１のセットを更新するように構成され、
前記機械学習システムは、第２の入力データセットに基づいて第２の出力データセットを計算するために、前記第１のセットの重みを前記ＤＮＮのニューロンの入力の重みとして用いるように更に構成された請求項１に記載のコンピュータシステム。
【請求項５】
前記機械学習システムは、前記損失関数を決定することの一部として前記機械学習システムが、
中間損失関数である第１の演算対象を決定し、
第１のハイパーパラメータの値と前記複数の層の各層の量子化誤差の和の積に等しくなるような第２の演算対象を決定し、
第２のハイパーパラメータの値と
【数１】
2019164793.tif 000120
の積に等しくなるような第３の演算対象を決定し、ｉは、添え字であり、Ｎは、前記複数の層の総数であり、ｂｉは、前記複数の層のｉ番目の層のビット精度値であるようにし、
前記損失関数を、前記第１の演算対象、前記第２の演算対象及び前記第３の演算対象の総和として決定するように構成された請求項４に記載のコンピュータシステム。
【請求項６】
前記機械学習システムは、
前記複数の層の各層に対して、前記第１のセットの重みの層の重みと前記第２のセットの重みの層の重みの間の差に基づいて層に対する量子化誤差を決定するように更に構成された請求項５に記載のコンピュータシステム。
【請求項７】
前記第１の入力データセットは、トレーニングデータラベル対のバッチを備え、
前記機械学習システムは、前記第１の演算対象を決定することの一部として前記機械学習システムが
【数２】
2019164793.tif 000121
に等しくなるような前記第１の演算対象を決定し、Ｂは、前記トレーニングデータラベル対のバッチのデータラベル対の総数であり、前記トレーニングデータラベル対のバッチの各ラベルは、Ｂ個のラベルを有するラベルのセットの要素であり、ｉは、添え字であり、ｌｏｇ（・）は、対数関数であり、Ｎは、前記複数の層の総数であり、ｙｉは、前記ラベルのセットのｉ番目のラベルであり、
【数３】
2019164793.tif 000122
は、前記ＤＮＮが前記トレーニングデータラベル対のバッチのｉ番目のデータラベル対のデータの入力として与えられるときに前記複数の層のＮ番目の層の出力であるように構成され、
前記トレーニングデータラベル対のバッチのデータラベル対は、独立の一様分布したデータラベル対であり、
前記ビット精度値のセットを更新することの一部として、前記機械学習システムは、
【数４】
2019164793.tif 000123
に等しくなるように前記更新したビット精度値のセットを決定し、ｂは、前記ビット精度値のセットであり、
【数５】
2019164793.tif 000124
は、前記重みの第１のセットであり、
【数６】
2019164793.tif 000125
は、前記ビット精度値のセットに対する前記損失関数の偏微分であり、ｓｉｇｎ（・）は、０を返す場合に独立変数の絶対値が予め決定されたしきい値未満でないときに独立変数の符号を返す関数であり、
前記重みの第２のセットを更新することの一部として、前記機械学習システムは、
【数７】
2019164793.tif 000126
に等しくなるように前記更新した重みの第２のセットを決定し、Ｗは、前記重みの第２のセットであり、μは、学習率であり、
【数８】
2019164793.tif 000127
は、前記重みの第１のセットであり、
【数９】
2019164793.tif 000128
は、前記ビット精度値のセットに対する前記損失関数の偏微分である請求項５に記載のコンピュータシステム。
【請求項８】
前記機械学習システムは、前記重みの第１のセットを更新することの一部として、前記機械学習システムが前記複数の層の各層に対して各層の更新した最適精度の重みが
【数１０】
2019164793.tif 000129
に等しくなるように更新した重みの第１のセットを決定し、αは、層の前記一定の精度の重みのセットの最小重みであり、Ｗは、層の前記一定の精度の重みのセットであり、δは、層の前記一定の精度の重みのセットの最小重みから層の前記一定の精度の重みのセットの最大重みまでの離散化された範囲の一定のステップの総数であり、ｒｏｕｎｄ（・）は、丸め関数であるように構成された請求項４に記載のコンピュータシステム。
【請求項９】
前記重みの第１のセットの各重みに対して、前記機械学習システムは、前記重みの第１のセットを更新することの一部として、前記機械学習システムが２の指数値の乗を乗算した符号の値に等しい前記重みの第１のセットの重みを決定し、前記符号の値は、前記重みの第２のセットの対応する重みの符号を表し、前記指数値は、前記重みの第２のセットの対応する重みの対数の底２に基づくように構成された請求項４に記載のコンピュータシステム。
【請求項１０】
前記重みのセットの各重みが２の乗に等しい請求項１に記載のコンピュータシステム。
【請求項１１】
各重みは、層の前記ビット精度値に等しいビット精度、オフセット値及び量子化ステップ幅の値を有する整数値を用いることによって前記メモリにおいて表される請求項１に記載のコンピュータシステム。
【請求項１２】
前記機械学習システムは、システムアーキテクチャを記述するシステムアーキテクチャパラメータに基づいて前記ＤＮＮをトレーニングするように構成された請求項１に記載のコンピュータシステム。
【請求項１３】
前記機械学習システムは、
システムアーキテクチャのプロセッサを記述するデータを有するシステムアーキテクチャパラメータを取得し、
前記システムアーキテクチャパラメータに基づいて、前記ＤＮＮを有するニューラルネットワークソフトウェアアーキテクチャ及び前記システムアーキテクチャの前記プロセッサに対する前記ニューラルネットワークソフトウェアアーキテクチャのＤＮＮのマッピングを決定するように構成され、
前記ニューラルネットワークソフトウェアアーキテクチャの前記ＤＮＮに対してマッピングされる前記システムアーキテクチャの前記プロセッサは、前記ニューラルネットワークソフトウェアアーキテクチャの前記ＤＮＮを実行するように構成された請求項１に記載のコンピュータシステム。
【請求項１４】
計算リソースの要求を減少させるためにディープニューラルネットワーク（ＤＮＮ）をトレーニングする方法であって、
前記ＤＮＮの重みのセットを記憶することであって、前記ＤＮＮは、複数の層を有し、前記複数の層の各々に対して、前記重みのセットは、前記層の重みを有し、ビット精度値のセットは、前記層のビット精度値を有し、前記層の重みは、前記層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、前記層の重みは、前記層のニューロンに対する入力に関連することと、
前記ＤＮＮをトレーニングするように構成された機械学習システムを実行することであって、前記ＤＮＮをトレーニングすることは、前記重みのセット及び前記ビット精度値のセットを最適化することを備えることと、
を備える方法。
【請求項１５】
前記ＤＮＮをトレーニングすることは、複数の繰り返しに亘って誤差逆伝播アルゴリズムを適用することであって、前記誤差逆伝播アルゴリズムの各繰り返しは、前記重みのセットを更新するとともに前記ビット精度値のセットを最適化することを備える請求項１４に記載の方法。
【請求項１６】
前記ＤＮＮの層の二つ以上は、異なるビット精度値を有する請求項１４に記載の方法。
【請求項１７】
前記重みのセットは、重みの第１のセットであり、
前記複数の層の各層に対する一定の精度の重みのセットを有する重みの第２のセットを記憶し、前記重みの第２のセットの各重みは、予め規定されたビット精度値に等しいビット精度値を有することを更に備え、
前記ＤＮＮをトレーニングすることは、前記ＤＮＮをトレーニングするための複数の繰り返しを実行することを更に備え、前記複数の繰り返しを実行することは、前記複数の繰り返しの各繰り返しに対して、
第１の入力データセットに基づいて第１の出力データセットを計算するために前記第２のセットの重みを前記ＤＮＮのニューロンの入力の重みとして用いることと、
損失関数を計算することと、
前記損失関数に基づいて前記重みの第２のセットを更新することと、
前記損失関数に基づいて前記ビット精度値のセットを更新することと、
前記重みの第２のセットを更新した後及び前記ビット精度値のセットを更新した後、更新した第２のセットの重み及び更新したビット精度値のセットに基づいて前記重みの第１のセットを更新することと、を備え、
第２の入力データセットに基づいて第２の出力データセットを計算するために前記第１のセットの重みを前記ＤＮＮのニューロンの入力の重みとして用いることを更に備える請求項１４に記載の方法。
【請求項１８】
実行のときに、
ディープニューラルネットワーク（ＤＮＮ）の重みのセットを記憶することであって、前記ＤＮＮは、複数の層を有し、前記複数の層の各々に対して、前記重みのセットは、前記層の重みを有し、ビット精度値のセットは、前記層のビット精度値を有し、前記層の重みは、前記層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、前記層の重みは、前記層のニューロンに対する入力に関連することと、
前記ＤＮＮをトレーニングするように構成された機械学習システムを実行することであって、前記ＤＮＮをトレーニングすることは、前記重みのセット及び前記ビット精度値のセットを最適化することを備えることと、
を一つ以上のプロセッサによって実行させる命令を記憶したコンピュータ可読データ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１８年３月１９日に出願された米国仮特許出願第６２／６４４７１５号明細書、２０１８年３月２０日に出願された米国仮特許出願第６２／６４５３５８号明細書及び２０１８年９月１７日に出願された米国特許出願第１６／１３３４４６号明細書の利益を主張する。米国仮特許出願第６２／６４５３５８号明細書及び米国特許出願第１６／１３３４４６号明細書の全体の内容を参照によりここに組み込む。
【０００２】
政府の権利
本発明は、海軍研究事務所によって認可された問合せ先Ｎ０００１４−１７−Ｃ−１０１１の下での政府のサポート及び全米科学財団によって認可された認可番号１５２６３９９の下でのサポートによって行われた。政府は、本発明の所定の権利を有する。
【０００３】
本開示は、一般的には、機械学習システムに関する。
【背景技術】
【０００４】
機械学習アルゴリズムは、ディープニューラルネットワーク（ＤＮＮ）を用いることによって近年急速な進歩を遂げた。ＤＮＮは、入力層と出力層の間に複数の隠れ層を有する人工ニューラルネットワークである。ＤＮＮの例示的なタイプは、再帰型ニューラルネットワーク（ＲＮＮ）及び畳み込みニューラルネットワーク（ＣＮＮ）を含む。ＤＮＮは、人工知能、コンピュータビジョン、自動音声認識、言語翻訳等の分野において広い応用を有する。トレーニング時間、メモリ要求、プロセッサの有用性（ｐｒｏｃｅｓｓｏｒ  ａｖａｉｌａｂｉｌｉｔｙ）、バッテリ電力消費量及びエネルギー効率は、ＤＮＮに関連する課題がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般的には、開示は、機械学習アルゴリズムに関連する技術を記載する。例えば、本開示は、ディープニューラルネットワーク（ＤＮＮ）をトレーニングするための低精度法（すなわち、低精度重みを用いる方法）の使用を開示する。例えば、本開示は、ＤＮＮの精度が最適化された重み（ｐｒｅｃｉｓｉｏｎ−ｏｐｔｉｍｉｚｅｄ  ｗｅｉｇｈｔｓ）のセット及び同一のＤＮＮの一定の精度の重み（ｆｉｘｅｄ−ｐｒｅｃｉｓｉｏｎ  ｗｅｉｇｈｔｓ）のセットを決定するトレーニング方法を記載する。ＤＮＮをトレーニングする方法は低精度であると考えられる。その理由は、精度が最適化された重みが一定の精度の重みと異なってもよい又は一定の精度の重みより低くてもよいからである。記憶位置（ｍｅｍｏｒｙ  ｓｔｏｒａｇｅ  ｌｏｃａｔｉｏｎｓ）、電力、処理サイクル及びコンピュータの他のリソースのような計算リソースは、比較的少ない量の利用可能な計算リソースを有する特定のタイプの装置と共に使用するＤＮＮの性能及びＤＮＮの適合性に関する考慮すべき重要なことである。精度が最適化された重みが一定の精度の重みより低いことがあるので、本開示の低精度法によって、ＤＮＮ処理の低いメモリ要求及び低い計算要求を可能にする。一部の例において、低精度法は、計算リソースが低精度法によって用いられることがあるという意味で及びマイクロプロセッサが精度が最適化された重みを効率的に用いるために設計されることがあるという意味でマイクロプロセッサ設計に悪影響を及ぼすおそれがある。
【０００６】
さらに、低精度トレーニング方法によって、最初のトレーニング段階後に学習を継続する人工知能（ＡＩ）システムを可能にする。追加的には、本開示の態様は、ＤＮＮの生涯学習法に関連し、学習と推論を同時に効率的にサポートすることができるハードウェアアーキテクチャにも関連する。本開示の技術によって、ＡＩシステムは、エッジでの（ａｔ  ｔｈｅ  ｅｄｇｅ）リアルタイム計算制約に適合するためのそれ自体の学習要求を選択及び設定（例えば、それ自体の重みのビット精度（ｂｉｔ  ｐｒｅｃｉｓｉｏｎ）の設定）を行うことができる。一部の例において、本開示の技術は、最適パラメータの確率分布を仮定しない。
【課題を解決するための手段】
【０００７】
一例において、本開示は、計算リソースの要求を減少させるためにディープニューラルネットワーク（ＤＮＮ）をトレーニングするコンピュータシステムであって、ＤＮＮの重みのセットを記憶するメモリであって、ＤＮＮは、複数の層を有し、複数の層の各々に対して、重みのセットは、層の重みを有し、ビット精度値のセットは、層のビット精度値を有し、層の重みは、層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、層の重みは、層のニューロンに対する入力に関連するメモリと、ＤＮＮをトレーニングするように構成された機械学習システムを実行する処理回路であって、ＤＮＮをトレーニングすることは、重みのセット及びビット精度値のセットを最適化することを備える処理回路と、を備えるコンピュータシステムを記載する。
【０００８】
他の例において、本開示は、計算リソースの要求を減少させるためにディープニューラルネットワーク（ＤＮＮ）をトレーニングする方法であって、ＤＮＮの重みのセットを記憶することであって、ＤＮＮは、複数の層を有し、複数の層の各々に対して、重みのセットは、層の重みを有し、ビット精度値のセットは、層のビット精度値を有し、層の重みは、層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、層の重みは、層のニューロンに対する入力に関連することと、ＤＮＮをトレーニングするように構成された機械学習システムを実行することであって、ＤＮＮをトレーニングすることは、重みのセット及びビット精度値のセットを最適化することを備えることと、を備える方法を記載する。
【０００９】
他の例において、本開示は、実行のときに、ディープニューラルネットワーク（ＤＮＮ）の重みのセットを記憶することであって、ＤＮＮは、複数の層を有し、複数の層の各々に対して、重みのセットは、層の重みを有し、ビット精度値のセットは、層のビット精度値を有し、層の重みは、層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、層の重みは、層のニューロンに対する入力に関連することと、ＤＮＮをトレーニングするように構成された機械学習システムを実行することであって、ＤＮＮをトレーニングすることは、重みのセット及びビット精度値のセットを最適化することを備えることと、を一つ以上のプロセッサによって実行させる命令を記憶したコンピュータ可読データ記憶媒体を記載する。
【００１０】
本開示の技術の一つ以上の例の詳細を、添付図面及び後の記載において説明する。技術の他の特徴、目的及び利点は、明細書、図面及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】開示の技術によるコンピュータシステムの一例を示すブロック図である。
【図２】本開示の技術によるＢｉＮｅｔディープニューラルネットワーク（ＤＮＮ）の動作の一例を示すフローチャートである。
【図３】本開示の技術によるＤＮＮをトレーニングする動作の一例を示すフローチャートである。
【図４】本開示の技術による損失関数を決定するための動作の一例を示すフローチャートである。
【図５】異種ニューラルアーキテクチャの一例を示すブロック図である。
【図６Ａ】ＢｉＮｅｔ及びＬｅＮｅｔ−ＦＰ３２の性能の一例を示す。
【図６Ｂ】ＢｉＮｅｔ及びＬｅＮｅｔ−ＦＰ３２の性能の一例を示す。
【図７】ＣＮＮの各層のパラメータを表すのに用いられるビット数を示す。
【図８Ａ】ＭＮＩＳＴデータベースの性能及び圧縮の影響を示す。
【図８Ｂ】ＣＩＦＡＲ−１０データベースの性能及び圧縮の影響を示す。
【図９】ミニバッチに亘るＬｅＮｅｔ−ＦＰ３２と比較したＢｉＮｅｔの繰り返しに対する検証誤り率を示す。
【図１０】ＭＮＩＳＴデータベース及びＣＩＦＡＲ−１０データベースに対する線形ビットペナルティの種々の係数に対するＢｉＮｅｔの性能の一例を示す。
【図１１】階層からなるニューラルネットワークソフトウェアアーキテクチャである。
【図１２】プロセッサの異種のセットを備えるシステムアーキテクチャの一例及びシステムアーキテクチャリソースに対するニューラルネットワークソフトウェアアーキテクチャのマッピングの一例である。
【図１３】本開示の技術による機械学習システムの動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
図面及び説明の全体に亘って同様な参照文字は同様な要素を意味する。
【００１３】
図１は、コンピュータシステム１００の一例を示すブロック図である。図のように、コンピュータシステム１００は、複数の層１０８Ａ〜１０８Ｎ（集合的に「層１０８」）を備えるディープニューラルネットワーク（ＤＮＮ）１０６を有する機械学習システム１０４を実行する処理回路を備える。ＤＮＮ１０６は、再帰型ニューラルネットワーク（ＲＮＮ）及び畳み込みニューラルネットワーク（ＣＮＮ）のような各種のディープニューラルネットワーク（ＤＮＮ）を備えてもよい。
【００１４】
一部の例において、コンピュータシステム１００の処理回路は、マイクロプロセッサ、コントローラ、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、同等の個別の論理回路若しくは同等の集積された論理回路又は他のタイプの処理回路のうちに一つ以上を含む。他の例において、コンピュータシステム１００は、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム機、多機能テレビ、携帯端末、タブレット、携帯電話、スマートフォン等のような任意の適切なコンピュータシステムを備える。一部の例において、システム１００の少なくとも一部は、クラウドコンピューティングシステム、データセンタ、又は、インターネット若しくは公衆又は専用通信ネットワーク、例えば、ブロードバンド、セルラー、Ｗｉ−Ｆｉ（登録商標）及び／又はコンピュータシステム、サーバ及びコンピュータデバイスの間でデータを送信する他のタイプの通信ネットワークのようなネットワークに分散される。
【００１５】
一部の例において、コンピュータシステム１００は、例えば、一つ以上のプロセッサ及びメモリ１０２により回路で実現される。メモリ１０２は、一つ以上の記憶装置を備えてもよい。コンピュータシステム１００の一つ以上の構成要素（例えば、プロセッサ、メモリ１０２等）を、（物理的な、通信的な及び／又は作動的な）構成要素間通信を可能にするために相互接続してもよい。一部の例において、そのような接続を、システムバス、ネットワーク接続、プロセス間通信データ構造、ローカルエリアネットワーク、ワイドエリアネットワーク又は他のデータ通信方法によって設けてもよい。コンピュータシステム１００の一つ以上のプロセッサは、コンピュータシステム１００に関連する機能を実現してもよい及び／又はコンピュータシステム１００に関連する命令を実行してもよい。プロセッサの例は、マイクロプロセッサ、アプリケーションプロセッサ、ディスプレイコントローラ、補助プロセッサ、一つ以上のセンサハブ及びプロセッサ、処理部又は処理装置として機能するように構成された他の任意のハードウェアを有する。コンピュータシステム１００は、コンピュータシステム１００に存在する及び／又はコンピュータシステム１００で実行するソフトウェア、ハードウェア、ファームウェア又はその混成を用いて本開示の一つ以上の態様による動作を実行する一つ以上のプロセッサを用いてもよい。メモリ１０２の一つ以上の記憶装置は、複数の装置の間で分散されてもよい。
【００１６】
メモリ１０２は、コンピュータシステム１００の動作中の処理のための情報を記憶してもよい。一部の例において、メモリ１０２は、メモリ１０２の一つ以上の記憶装置の主目的が長期記憶でないことを意味する一時的なメモリを備える。メモリ１０２を、揮発性メモリとして情報の短期記憶を行うとともに動作を停止したときに記憶された内容を保持しないように構成してもよい。揮発性メモリの例は、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）及び従来知られている他の形式の揮発性メモリを含む。一部の例において、メモリ１０２は、一つ以上のコンピュータ可読記憶媒体を有する。メモリ１０２を、揮発性メモリより多くの量の情報を記憶するように構成してもよい。メモリ１０２を、不揮発性メモリ空間として情報の長期記憶を行うとともにオンオフサイクル後に情報を保持するように構成してもよい。不揮発性メモリの例は、磁気ハードディスク、光ディスク、フラッシュメモリ又は電気的プログラマブルメモリ（ＥＰＲＯＭ）若しくは電気的消去可能プログラマブルメモリ（ＥＥＰＲＯＭ）の形態を含む。メモリ１０２は、本開示の一つ以上の態様に従って記載されるモジュールの一つ以上に関連するプログラム命令及び／又はデータを記憶してもよい。
【００１７】
一つ以上のプロセッサ及びメモリ１０２は、ソフトウェアとして実現してもよいが一部の例においてハードウェア、ファームウェア及びソフトウェアの任意の組合せを含んでもよい一つ以上のモジュール又はユニットに対する動作環境又はプラットフォームを提供してもよい。一つ以上のプロセッサは、命令を実行してもよく、一つ以上の記憶装置は、一つ以上のモジュールの命令及び／又はデータを記憶してもよい。プロセッサ及びメモリ１０２の組合せは、一つ以上のアプリケーション、モジュール又はソフトウェアの命令及び／又はデータを検索、記憶又は実行してもよい。プロセッサ及び／又はメモリ１０２を、本開示の図１又は他の図に示す構成要素の一つ以上を含むがそれに限定されない一つ以上の他のソフトウェア及び／又はハードウェア構成要素に操作的に結合してもよい。
【００１８】
図１の例において、ＤＮＮ１０６は、入力データセット１１０から入力データを受信するとともに出力データ１１２を生成する。入力データセット１１０及び出力データ１１２は、各種情報を有してもよい。例えば、入力データセット１１０は、画像データ、映像データ、音声データ、ソーステキストデータ、数値データ、スピーチデータ等を有してもよい。出力データ１１２は、分類データ（ｃｌａｓｓｉｆｉｃａｔｉｏｎ  ｄａｔａ）、変換テキストデータ（ｔｒａｎｓｌａｔｅｄ  ｔｅｘｔ  ｄａｔａ）、画像分類データ（ｉｍａｇｅ  ｃｌａｓｓｉｆｉｃａｔｉｏｎ  ｄａｔａ）、ロボット制御データ、書換データ（ｔｒａｎｓｃｒｉｐｔｉｏｎ  ｄａｔａ）等を有してもよい。さらに、本開示の他の箇所で説明するように、出力データ１１２は、ニューラルネットワークソフトウェアアーキテクチャ及びハードウェアアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアアーキテクチャのＤＮＮのマッピングを有してもよい。
【００１９】
上述したように、ＤＮＮ１０６は、複数の層１０８を有する。層１０８の各層は、人工ニューロンの各セットを有してもよい。層１０８は、入力層１０８Ａと、出力層１０８Ｎと、一つ以上の隠れ層（例えば、層１０８Ｂ〜１０８Ｍ）と、を有する。層１０８は、完全接続層（ｆｕｌｌｙ  ｃｏｎｎｅｃｔｅｄ  ｌａｙｅｒｓ）、畳み込み層、プーリング層及び／又は他のタイプの層を有してもよい。完全接続層において、以前の層（ｐｒｅｖｉｏｕｓ  ｌａｙｅｒ）の各ニューロンの出力は、完全接続層の各ニューロンの入力を形成する。畳み込み層において、畳み込み層の各ニューロンは、ニューロンの各領域に関連したニューロンからの入力を処理する。プーリング層は、ある層のニューロンクラスタ（ｎｅｕｒｏｎ  ｃｌｕｓｔｅｒｓ）の出力を次の層の単一のニューロンに結合する。
【００２０】
層１０８の各々の人工ニューロンの各入力は、本開示の技術による高精度重み１１４及び低精度重み１１６の対応する重みに関連する。ＤＮＮ１０６のｋ番目の人工ニューロンの出力を、
【００２１】
【数１】
2019164793.tif 000003
【００２２】
のように規定してもよい。式（１）において、ｙｋは、ｋ番目の人工ニューロンの出力であり、φ（・）は、活性化関数であり、Ｗｋは、ｋ番目の人工ニューロンの重み（例えば、高精度重み１１４又は低精度重み１１６）のベクトルであり、Ｘｋは、ｋ番目の人工ニューロンに対する入力の値のベクトルである。一部の例において、ｋ番目の人工ニューロンに対する一つ以上の入力は、他の人工ニューロンの出力値でない又はソースデータに基づかないバイアス項である。種々の活性化関数は、正規化線形ユニット（ＲｅＬＵ）、ＴａｎＨ、Ｓｉｇｍｏｉｄ等のように従来知られている。
【００２３】
本開示の技術によれば、メモリ１０２は、（ここでは重みの第１のセットと称する）ＤＮＮ１０６の低精度重み１１６のセット、（ここでは重みの第２のセットと称する）高精度重み１１４のセット及びビット精度値１１８のセットを記憶する。本開示は、高精度重み１１４をＷで表し、低精度重み１１６を
【００２４】
【数２】
2019164793.tif 000004
【００２５】
で表す。後に詳しく説明するように、高精度重み１１４と低精度重み１１６の両方を、式（１）の重みとして用いてもよい。ビット精度値１１８は、ＤＮＮ１０６の各層１０８のビット精度値を有する。層に対するビット精度値は、低精度重み１１６の重みのビット深度を表す。さらに、後に詳しく説明するように、トレーニング過程は、高精度重み１１４の値、低精度重み１１６の値及びビット精度値１１８を同時に決定してもよい。高精度重み１１４及び低精度重み１１６を有するＤＮＮ１０６の使用は、比較可能な出力データを生じさせることができる。しかしながら、低精度重み１１６が高精度重み１１４より少ないビットを有するので、メモリ１０２から低精度重み１１６を読み出すのに必要な動作を、メモリ１０２から高精度重み１１４を読み出すのに必要な動作より少なくすることができる。さらに、一部の例において、低精度重み１１６が高精度重み１１４より少ないビットを有するので、機械学習システム１０４は、更に少ないビットを占めるデータタイプを用いて低精度重み１１６を記憶することができる。例えば、機械学習システム１０４は、低精度重み１１６に対して８ビットの整数を用いてもよく、高精度重み１１４の各々に対して３２ビットを用いてもよい。したがって、低精度重み１１６のみを用いてトレーニングした後に、メモリ要求を減少させることができる。さらに、読出し動作の回数を減少されることができ、その結果、遅延が小さくなるとともに電気的な消費が減少する。
【００２６】
後に詳しく説明するように、機械学習システム１０４は、トレーニング過程の実行の一部として、機械学習システム１０４が入力データセット１１０の入力データに基づいて出力データ１１２を決定するためにＤＮＮ１０６の高精度重み１１４を用いるフィードフォワード段階を実行してもよい。さらに、機械学習システム１０４は、損失関数の勾配を計算する誤差逆伝播法を行ってもよい。損失関数は、出力データに基づいてコスト値を計算する。本開示の技術によれば、機械学習システム１０４は、損失関数の勾配に基づいて高精度重み１１４、低精度重み１１６及びビット精度値１１８を更新してもよい。機械学習システム１０４は、種々の入力データを用いてフィードフォワード法及び誤差逆伝播法を複数回実行してもよい。トレーニング過程の間又はトレーニング過程の完了後、機械学習システム１０４又は他の装置は、非トレーニング入力データに基づいて出力データを生成するために評価過程において低精度重み１１６を用いてもよい。
【００２７】
図１の例において、メモリ１０２は、一つ以上のハイパーパラメータ１２０のセットも記憶する。ハイパーパラメータ１２０は、学習率を制御するハイパーパラメータを有してもよい。さらに、本開示の技術によれば、ハイパーパラメータ１２０は、損失関数のビット精度ペナルティ項（ｂｉｔ  ｐｒｅｃｉｓｉｏｎ  ｐｅｎａｌｔｙ  ｔｅｒｍ）の程度（ｓｅｖｅｒｉｔｙ）を制御する（本開示でλ２を付した）ハイパーパラメータを有してもよい。ビット精度値１１８（すなわち、ＤＮＮ１０６の各層１０８の低精度ビット重み１１６で用いられるビット数）は、ビット精度ペナルティ項の値に基づいてもよい。したがって、ハイパーパラメータの種々の値の結果として、ＤＮＮ１０６が高ビット精度の重みを用いる場合の種々の程度の場合に対してペナルティを課す損失関数となる。
【００２８】
ＤＮＮは、アプリケーションデータの更に高いレベルの意味依存及び時空間依存（ｓｅｍａｔｎｔｉｃ  ａｎｄ  ｓｐａｔｉｏｎｔｅｍｐｏｒａｌ  ｄｅｐｅｎｄｅｎｃｉｅｓ）を学習するために段々大きくなるとともに層において段々深化する。実際には、過去１０年間で、ＤＮＮパラメータサイズは、手書き数字を分類するための１００万のパラメータしか用いない著しく簡単なＬｅＮｅｔ−５折り畳みニューラルネットワーク（ＣＮＮ）から２０１２年のＩｍａｇｅＮｅｔ画像分類コンペ（ＩｍａｇｅＮｅｔ  ｉｍａｇｅ  ｃｌａｓｓｉｆｉｃａｔｉｏｎ  ｃｏｍｐｅｔｉｔｉｏｎ）で勝つために６０００万のパラメータを用いたＡｌｅｘＮｅｔＣＮＮ及び人の顔の認証のために１億２０００万のパラメータを用いるＤｅｅｐｅｒｆａｃｅのような新たなＤＮＮまでに飛躍的に成長した。１００億のパラメータを有するネットワークさえも存在する。
【００２９】
メモリ１０２がＤＮＮ１０６のパラメータ（例えば、高精度重み１１４、低精度重み１１６）を記憶するので、ＤＮＮ１０６がメモリ１０２を用いる方法は重要である。例えば、メモリ１０２の記憶位置が多くなるに従って必要となるＤＮＮ１０６のパラメータが多くなる。さらに、メモリアクセス（すなわち、メモリの読出し及び書込み）は、電気的なエネルギーを必要とする。したがって、パラメータの記憶に利用できるメモリ１０２の記憶位置のサイズは、ＤＮＮ１０６の学習容量（すなわち、学習するためのＤＮＮ１０６の容量）を反映することがあり、同時に、パラメータの記憶に利用できるメモリ１０２の記憶位置のサイズは、ＤＮＮ１０６の計算効率及び処理時間に影響を及ぼすことがある。例えば、６億３０００万のシナプス結合は、（１００ギガフロップス／フレームで５１２×５１２画像と仮定される）約３テラフロップス／秒を消費する。さらに、大体の見積もりに基づいて、ＡｌｅｘＮｅｔＣＮＮは、ＤＲＡＭアクセスのみに対して８Ｗを消費し、それは、典型的な携帯装置に対する電力量をはるかに超える。したがって、推論モードにおけるこれらの最近のＤＮＮに要求される演算及びランタイムメモリフットプリント（ｃｏｍｐｕｔａｔｉｏｎ  ａｎｄ  ｒｕｎ−ｔｉｍｅ  ｍｅｍｏｒｙ  ｆｏｏｔｐｒｉｎｔ）は、典型的な装置の電力量及びメモリサイズを超えることがある。大型のＤＮＮは、１００億のパラメータに到達することがあり、大型かつ深度の高いネットワークに向かう傾向がある。
【００３０】
電力及びメモリサイズの問題を繰り返すと、電力密度はもはやムーアの法則に従って減少しないとともに演算スループットがエネルギー効率（例えば、ジュール／動作（ｊｏｕｌｅｓ／ｏｐｅｒａｔｉｏｎ））をスケーリングする必要があることが十分理解される。最初に、動作のエネルギーは、（１）演算、例えば、浮動小数点演算のためのエネルギー、（２）データを記憶装置と処理コアの間で移動させるためのエネルギー及び（３）データを記憶するのに必要なエネルギーからなる。データ移動（例えば、メモリの読出し動作及び書込み動作）のためのエネルギーが計算のエネルギーコストを支配しそうであることが十分に説明される。この影響は、低い操業率／バイト率（ｌｏｗ  ｏｐｅｒａｔｉｏｎｓ／ｂｙｔｅ  ｒａｔｉｏ）及び不十分な局所動作（ｐｏｏｒ  ｌｏｃａｌｉｔｙ  ｂｅｈａｖｉｏｒｓ）を有するＤＮＮ計算特性によって増幅されることがある。
【００３１】
メモリ性能は、パッケージピン、帯域幅及び周波数における並びに更に重要には特に数十年の間に変わらないメモリアーキテクチャにおける緩やかな成長において明らかである遅延計算（ｌａｇ  ｃｏｍｐｕｔａｔｉｏｎ）を続ける。状況に応じたキャッシュ階層及びメモリ階層を用いる待ち時間隠蔽（ｌａｔｅｎｃｙ  ｈｉｄｉｎｇ）はもはや有益でない。その理由は、エネルギー使用を隠すことができないからである。データ移動及び記憶エネルギーは、コストを生じ、したがって、管理されない場合には全体的な効率及びスケーラビリティを低下させる。
【００３２】
正則化は、機械学習の過剰適合問題を解決するのに用いられる技術である。一般的には、正規化技術は、次の式（２）で示すようにＤＮＮのトレーニングに用いられる損失関数にペナルティ項を加算することによって機能する。
【００３３】
【数３】
2019164793.tif 000005
【００３４】
式（２）において、Ｌ（・）は、損失関数であり、λは、ハイパーパラメータであり、Ｎ（ｗ）は、重みベクトルｗのノルムである。機械学習において正規化を行うための従来の手法は、ＤＮＮに対して効果がないことが示された。ＬＡＳＳＯ及びＬ−２のような十分に研究された正規化技術は、パラメータの大きさを制御するがパラメータの精度を制御しない。Ｂｉｎａｒｙ  Ｃｏｎｎｅｃｔとして知られている従来の研究は、正規化の特定の形態に１ビット精度パラメータを関連させる。特に、Ｂｉｎａｒｙ  Ｃｏｎｎｅｃｔは、勾配が累算される記憶された重みの精度を保持しながら順方向伝播及び逆方向伝播の間にバイナリ重み（ｂｉｎａｒｙ  ｗｅｉｇｈｔ）を用いてＤＮＮをトレーニングする方法である。
【００３５】
歴史的に見て、パラメータのビットレベル精度（ｂｉｔ−ｌｅｖｅｌ  ｐｒｅｃｉｓｉｏｎ）は、ＤＮＮの圧縮のために後処理の下で研究された。最新のものは、予め一定のビットレベル精度を必要とする又はＤＮＮパラメータを学習するステップ及びＤＮＮパラメータを圧縮するステップに分割する。ここでの技術は、パラメータが対象の装置のリソース制約を特定する柔軟な方法を提供するとともにパラメータの粗いバイナリ表示からパラメータのきめ細かい３２ビット表示までのＤＮＮ層ごとの最適なビット精度を見つけることができる両方の基準のバランスをとってもよい。
【００３６】
これらの技術の一つの目的は、低精度重みに適合する新たな手法を研究することによって大きなＤＮＮのメモリサイズの指数関数的成長に直接対処することである。ここでの技術は、これらの手法が浮動小数点の低精度整数への丸め又は再計算を行う簡単な切り捨ての自由裁量のアプリケーション（ｃａｒｔｅ  ｂｌａｎｃｈｅ  ａｐｐｌｉｃａｔｉｏｎ）を採用することができないという認識の下で省エネルギーのアルゴリズム性能のバランスをとってもよい。ＤＮＮは、典型的には、学習モデルに著しい冗長が存在するのでオーバーパラメータ化（ｏｖｅｒ−ｐａｒａｍｅｔｅｒｉｚｅｄ）される。それに対し、習得表示のスパーシティ（ｓｐａｒｓｉｔｙ  ｏｆ  ｔｈｅ  ｌｅａｒｎｔ  ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）は、ＤＮＮの高いアルゴリズム性能を提供するが、同時に、計算と記憶の両方において無駄が多いＤＮＮに到達するのが容易である。これに関連して、スパーシティは、限られた（少ない）数の値しかとることができない低精度重みの使用を意味する。したがって、本開示の一部の例において、ＤＮＮスパーシティ（したがって、ロバストネス及びアルゴリズム性能）がモデルをオーバーパラメータ化することなく維持されるバランスを見つけることを目的とする。
【００３７】
本開示で説明した技術からの複数の有利な結果がある。先ず、ＤＮＮ１０６のメモリサイズを最適化することができる。次に、本開示で説明したトレーニング過程が学習目標に良好に案内することができるので学習率を高めることができる。その次に、結果的に得られるＤＮＮが高性能及び低電力消費を実現することができる。
【００３８】
学習率に関して、ＤＮＮのトレーニングにおける最も困難な解決していない課題の一つが限られたトレーニング時間内でのＤＮＮのトレーニングであることに留意されたい。学習の観点からすれば、もっともな質問は、ＤＮＮの各層に対する最適なビット数は幾つであるか及び以前の作業に対して入力データセット１１０のトレーニングデータを用いてビット数を最適化する勾配降下アルゴリズムは何であるかである。固有の値の数としての可変ビット数は、パラメータによって取り出され、畳み込みネットワーク又は他のタイプのＤＮＮの分類動作のためのレギュラライザ（ｒｅｇｕｌａｒｉｚｅｒ）としてこれが直接用いられる。低レベルビット精度と最小記述長原理により引き出される正則化を用いる我々の定式化（ｆｏｒｍｕｌａｔｉｏｎ）との間の直接的な関係を形成する、機械学習文献のレギュラライザとして用いられる同等の行列ノルム（ｅｑｕｉｖａｌｅｎｔ  ｍａｔｒｉｘ  ｎｏｒｍ）が存在しない。完全精度重み（ｆｕｌｌ−ｐｒｅｃｉｓｉｏｎ  ｗｅｉｇｈｔｓ）を有するネットワークと比較すると、ここでの技術は、トレーニングエポックの間に変動するビット数を用いる向上したいつでも行われる学習を示すことができる。
【００３９】
ニューラルネットワークの能力の急増は、主に、より良いハードウェアへの遷移によって行われた。ＤＮＮは、基本的には、最も一般的であるとともに最も中心的な動作としての行列の乗算（更に詳しくは、ニューロンごとに一つの複数の重み付けされた足し算の計算）に基づく。行列の乗算は高度に並列化可能であるので、ＧＰＵを用いることによって、ＤＮＮは、著しく高速でスケーリング、実行及びトレーニングを行うことができる。これによって、非常に多いデータセットのトレーニング時間を、シリアルハードウェアで要求される数年から数週間又は数日まで減少させることができる。それは、最近になってＡＩで見られる性能の急激な向上の理由である。
【００４０】
同時に、速度又はエネルギー消費に対する更なる制約を有するモバイルのプラットフォームを用いる際にＤＮＮ処理を更に適合しやすくするための新たなやり方をコンピュータアーキテクトによって検討するのが望ましいことがある。ＧＰＵは大規模な並列化からのスピードアップを行うが、スケーリング動作は制限される。その理由は、ＧＰＵがＤＮＮで用いられる重み付けされた足し算の簡単化を十分に引き出していないからである。新たなハードウェアアクセラレータが発売され、そのほとんどは、ＤＮＮ処理の整数ベースのサポート（ｉｎｔｅｇｅｒ−ｂａｓｅｄ  ｓｕｐｐｏｒｔ）を提供する。さらに、進化したナノエレクトロニクスは、製造のばらつき（ｍａｎｕｆａｃｔｕｒｉｎｇ  ｖａｒｉａｎｃｅ）が生じる傾向があり、これによって、装置の動作のばらつきが大きくなるとともに生産量に悪影響が及ぼされるおそれがある。本開示の技術の一つ以上を実現する例は、内在する論理（ｕｎｄｅｒｌｙｉｎｇ  ｌｏｇｉｃ）の複雑さを簡単化することができるとともに潜在的に最適なメモリサイズ及び設定を有する製造可能性に対処することができる。
【００４１】
パラメータに許容される固有の値の数を、正則化の尺度とみなすことができる。したがって、後に更に詳しく説明するように、式（２）に示すようなペナルティ項としてＮ（ｗ）を用いる代わりに、ペナルティ項を、ＤＮＮ１０６のパラメータが有することができる固有の値の数としてもよい又は当該数に基づいてもよい。ＤＮＮ１０６の表現力（ｅｘｐｒｅｓｓｉｖｅ  ｐｏｗｅｒ）を、パラメータの許容された値のセットを制限することによって徐々に制御してもよい。したがって、ここでの技術は、ＤＮＮ１０６のパラメータのトレーニングを正則化するビットレベル精度の概念を用いてもよい。これらの技術は、ビットレベル精度の概念とＤＮＮ１０６のパラメータトレーニングの正則化とを結び付けてもよい。
【００４２】
ここでの技術は、上述したような二つの段階（ＤＮＮパラメータの学習及び圧縮）を用いる従来の作業を一般化及び包含してもよい。（圧縮、量子化及びＤＮＮの近似化（ａｐｐｒｏｘｉｍａｔｉｏｎ  ｏｆ  ＤＮＮｓ）を含む）メモリサイズ、電力消費及び計算速度に対処する他の手法は十分ではない。その理由は、他の手法が（１）最適にトレーニングしたＤＮＮが入力として与えられると仮定し、（２）ラベルが付されたグランドトゥルースデータに関する圧縮したＤＮＮの性能に依存せず（ａｇｎｏｓｔｉｃ）、（３）圧縮の任意の目標値に対して更に低いアルゴリズム性能を提供し、かつ、（４）トレーニング中に学習の急成長を示さないからである。ここでの技術を、学習した概念をトレーニングするとともに小さいフォームファクタ（ｓｍａｌｌ  ｆｏｒｍ  ｆａｃｔｏｒ）に圧縮する基本的能力に適用することができるので、技術は、ディープラーニングアプリケーション及びシステムの多数の分野で適用可能である。
【００４３】
ここでの技術を用いることによって、ＤＮＮ処理を更に効率的にサポートすることができるマルチビット精度を有するハードウェアアクセラレータを設計及び利用することができる。ここでの技術は、ＤＮＮ１０６をトレーニングするときに対象分野の装置の仕様（ａ  ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｏｆ  ａ  ｔａｒｇｅｔ  ｆｉｅｌｄ  ｄｅｖｉｃｅ）（例えば、空き容量）を考慮してもよく、特定の対象分野の装置の特定のトレーニングデータに対する学習の指導を行ってもよい。ここでの技術は、モバイルプラットフォーム及びスマートフォンを含むがそれに限定されない現実の世界のアプリケーションに対するＤＮＮベースの機械学習の解決を展開する実行者（ｐｒａｃｔｉｔｉｏｎｅｒ）の有益な手段となることができる。ここでの技術によって、リソースが制限された環境に対する有力なＤＮＮを可能にする。ここでの技術は、潜在的に最適なビット精度及び重みを見つけることによって高度なナノテクノロジーにおける収益強化をサポートすることができる。ここでの技術は、リソース（電力、サイズ等）が今日の展開を制限する場合に（例えば、現場のロボット（ｒｏｂｏｔｓ  ｉｎ  ｔｈｅ  ｆｉｅｌｄ））高速のオンライン学習及び他のオンボードシステムをサポートすることができる。
【００４４】
本開示は、ビット精度がトレーニング手順のパラメータの一部となるようにＤＮＮをトレーニングする技術を記載する。現在のトレーニング方法は、モデル選択（例えば、学習率、ネットワークの規模、ネットワーク深度（ｎｅｔｗｏｒｋ  ｄｅｐｔｈ））及びトレーニング段階（例えば、多数の繰り返しの間のネットワークの重みを設定するための誤差逆伝播アルゴリズムの使用）からなる。本開示は、トレーニング段階の一部としてビット精度の最適化を含む方法を記載する。したがって、本開示は、パラメータとしてビット精度それ自体を有するＤＮＮ１０６のトレーニング方法を記載する。結果的に得られるＤＮＮは、ＤＮＮ１０６の層１０８の各々に対して異なるビット精度を有してもよい。そのような手法は、高速学習を示すことができる（すなわち、迅速に解決に向かうことができる）とともにＤＮＮをトレーニングするための標準的な手法と比べて優れたターゲットＤＮＮ（例えば、グランドトゥルーに関する高いアルゴリズム性能）に到達することができる。
【００４５】
手法を、一般的には、分類又は回帰のためのあらゆる勾配ベースのパラメータ学習に適用することができるが、本開示の本節の注意をＣＮＮに限定する。本開示において、大文字記号は、テンソルを表し、小文字記号はベクトルを表す。Ｘ（ｌ）は、ｌ番目の層の入力を表す。Ｘ（ｌ＋１）は、ｌ番目の層の出力を表す。Ｗ（ｌ）は、ｌ番目の層のパラメータを表す。Ｗは、（１），（２），．．．，（Ｎ）を付したＮ個の層を有する全てのＣＮＮパラメータ｛Ｗ（１），Ｗ（２），．．．，Ｗ（Ｎ）｝のセットを示す。本開示において、
【００４６】
【数４】
2019164793.tif 000006
【００４７】
は、ドット積を表し、φは、フィルタ処理のために出力に対して点ごとに適用される平滑化非線形（ｓｍｏｏｔｈ  ｎｏｎ−ｌｉｎｅａｒｉｔｙ）を示す。ｙは、入力データセット１１０であるＸ（ｌ）に対応する例のミニバッチに対するラベルである。
【００４８】
図１の例において、ＤＮＮ１０６は、複数のフィルタバンクと称される層（ｍｕｌｔｉｐｌｅ  ｆｉｌｔｅｒ  ｂａｎｋｓ  ｃａｌｌｅｄ  ｌａｙｅｒｓ）（すなわち、層１０８）に対するフィードフォワード畳み込み（ｆｅｅｄ−ｆｏｒｗａｒｄ  ｃｏｎｖｏｌｕｔｉｏｎｓ）を実現するＣＮＮを備えてもよい。畳み込み層の出力は、典型的には、各画素の近傍内の最大活性（ｍａｘｉｍｕｍ  ｏｆ  ｔｈｅ  ａｃｔｉｖａｔｉｏｎｓ）を出力するプーリング層に接続される。十分に結合された層ｌの出力は、式（３）に示すように、層の入力とパラメータのドット積にすぎない。
【００４９】
【数５】
2019164793.tif 000007
【００５０】
式（３）において、φは、Ｗ（ｌ）及びＸ（ｌ）に対して点ごとに適用される平滑化非線形である。畳み込み層は、入力の次元の一つに亘って重みを反復する（ｒｅｐｌｉｃａｔｉｎｇ）することによって特別な形態の重み共有を実現する。この場合、式（３）のドット積は、次の式（４）に示すように、カーネルＷ（ｌ）を用いる畳み込み演算となる。
【００５１】
【数６】
2019164793.tif 000008
【００５２】
本開示において、＊は畳み込み演算を表す。畳み込み層は、典型的には、各画素の近傍内の最大活性を出力するプーリング層に接続される。近傍を「パッチ」と称してもよい。分類のために、上述したように生成されるパッチを、式（５）に示すように、ロジスティック回帰層の特徴として用いてもよい。
【００５３】
【数７】
2019164793.tif 000009
【００５４】
式（５）において、任意のベクトル
【００５５】
【数８】
2019164793.tif 000010
【００５６】
に対して、ｓｏｆｔｍａｘ（ｖ）は、入力
【００５７】
【数９】
2019164793.tif 000011
【００５８】
を有するベクトルである。ＣＮＮの出力は、Ｄ個のラベルの各々にスコアを割り当てるサイズＤ×１のベクトルである。
【００５９】
ＣＮＮの記述を完了するために、Ｘ（ｌ）を入力データ又は画像に設定する。一部の例において、予測ラベル（すなわち、ＤＮＮ１０６による出力として生成したラベル）を、（１），（２），．．．，（Ｎ）を付したＮ層を有するＣＮＮに対するａｒｇ  ｍａｘＸ（ｌ）としてもよい。換言すれば、機械学習システム１０４は、
【００６０】
【数１０】
2019164793.tif 000012
【００６１】
の最大値を有するインデックスｉとしての予測ラベルを計算してもよい。種々の演算を次に示す。
【００６２】
【数１１】
2019164793.tif 000013
【００６３】
最尤推定は、トレーニングデータからフィルタを学習する最も一般的な方法である。
【００６４】
【数１２】
2019164793.tif 000014
【００６５】
を有するＢの独立同分布（ＩＩＤ）入力ラベル対（Ｘ（ｌ），ｙ）のバッチを仮定すると、後に説明する損失関数は、平均対数尤度を取得する。ＩＩＤ仮定のために、尤度は、個別の例に亘る尤度の積に分解される。その後、対数の性質を用いると、積の対数は、対数項の和となる。
【００６６】
【数１３】
2019164793.tif 000015
【００６７】
ここでの技術は、線形変換を維持する範囲を用いてもよく、線形変換は、範囲を一定の段階（ｆｉｘｅｄ  ｓｔｅｐｓ）δに一様に離散化する。具体的には、Ｗ（ｌ）は、層ｌの高精度重み１１４の浮動小数点表示を表し、
【００６８】
【数１４】
2019164793.tif 000016
【００６９】
は、ｂビットを用いる層ｌの重みの量子化形態である。ｂビットを用いる量子化は、以下の通りである。
【００７０】
【数１５】
2019164793.tif 000017
【００７１】
式（１１）及び（１２）を以下のように書き換えることができる。
【００７２】
【数１６】
2019164793.tif 000018
【００７３】
上述した式において、ｍｉｎｘ（Ｗ（ｌ））は、Ｗ（ｌ）の最小の重みを返し、ｍａｘｘ（Ｗ（ｌ））は、Ｗ（ｌ）の最大の重みを返し、ｒｏｕｎｄ（ｖ）は、最も近い整数を返し、
【００７４】
【数１７】
2019164793.tif 000019
【００７５】
である。任意のＷ（ｌ）及びｂに対して、
【００７６】
【数１８】
2019164793.tif 000020
【００７７】
は、Ｗ（ｌ）の値の範囲に亘る段階関数である。
【００７８】
【数１９】
2019164793.tif 000021
【００７９】
は、
【００８０】
【数２０】
2019164793.tif 000022
【００８１】
の各々に対応する
【００８２】
【数２１】
2019164793.tif 000023
【００８３】
からなる量子化テンソルを表す。一定のＷ及びｂ並びに変動するα≦ｗ≦βに対して、
【００８４】
【数２２】
2019164793.tif 000024
【００８５】
は、δ／２の倍数の不連続性（ｄｉｓｃｏｎｔｉｎｕｉｔｉｅｓ）を有する段階関数である。この問題は、勾配降下を用いる量子化された
【００８６】
【数２３】
2019164793.tif 000025
【００８７】
の関数としての損失の直接最適化を妨げる。
【００８８】
一部の例において、量子化は、効率的であるとともに閉形式の出力による決定性がある。そのような例において、技術は、量子化による誤差を計算するためのＫ平均クラスタリングとして同一の誤差基準を用いる。すなわち、二乗の丸め誤差（ｓｑｕａｒｅｄ  ｒｏｕｎｄｉｎｇ  ｅｒｒｏｒｓ）の和は、次の通りである。
【００８９】
【数２４】
2019164793.tif 000026
【００９０】
式（１４）及び本開示の他の箇所において、
【００９１】
【数２５】
2019164793.tif 000027
【００９２】
は、ベクトルｖの２次元ノルムの二乗を表す（すなわち、
【００９３】
【数２６】
2019164793.tif 000028
【００９４】
である。Ｋ平均クラスタリングの目的関数と同様に、式（１４）で規定した二乗の丸め誤差の和は、量子化のために凸であるとともに微分可能な大きさ（ｃｏｎｖｅｘ  ａｎｄ  ｄｉｆｆｅｒｅｎｔｉａｂｌｅ  ｍｅａｓｕｒｅ）となる。一定のｂに対して、ｑ（ｗ，ｂ）は、あるスカラー
【００９５】
【数２７】
2019164793.tif 000029
【００９６】
に亘って一連の放物線を形成してもよく、その値は、０≦ｑ（ｗ，ｂ）≦δ／２に制限される。
【００９７】
一部の例において、低精度重み１１６は、２の整数乗（ｉｎｔｅｇｅｒ  ｐｏｗｅｒ）に制限される。例えば、低精度重み１１６は、２−ｎ．．．２０．．．２ｎの値を有してもよく、この場合、ｎのあり得る値は整数である。更に詳しくは、低精度重み１１６は、次のように規定される。
【００９８】
【数２８】
2019164793.tif 000030
【００９９】
式（１５）において、
【０１００】
【数２９】
2019164793.tif 000031
【０１０１】
は、整数のセットである。換言すれば、低精度重み１１６は、０，±１，±２，±４，．．．，及び±１／２，±１／４，±１／８，．．．であってもよい。
【０１０２】
低精度重み１１６が２の整数乗に制限される例において、ＤＮＮ１０６が推論モードで動作するときにＤＮＮ１０６の人工ニューロンの出力値を計算するために乗算演算の代わりに論理シフト演算を行う。この結果、ＤＮＮ１０６が推論モードにおいて更に効率的であるとともに更に短い待ち時間で動作することができる。その理由は、シフト演算が乗算演算より複雑でないからである。２の整数乗である値の選択は、高精度重み１１４の量子化を表す。２の整数乗以外の他のマッピングを、例えば、マッピングに基づく乗算演算又は乗算演算の概算を好んで用いるためにハードウェアがこれらのマッピングを利用できるときに選択することができることを理解すべきである。例えば、アナログ回路は、乗算演算と同等である回路動作（例えば、分圧器又は電流分割器）を好んで用いるためにアナログ値の三進コード化（ｔｅｒｎａｒｙ  ｅｎｃｏｄｉｎｇ）（低、中、高）を用いてもよい。高精度重み１１４と低精度重み１１６の間の値の分散の適合（ｍａｔｃｈ  ｔｈｅ  ｄｉｓｔｒｉｂｕｔｉｏｎ  ｏｆ  ｖａｌｕｅｓ）を更に良好におこなうために、機械学習システム１０４は、量子化が微分可能でない場合でも、ＤＮＮ１０６のトレーニングの間に、高精度重み１１４のコード化された分散を最適に維持する量子化関数を選択してもよい。例えば、機械学習システム１０４は、次の量子化関数を用いてもよい。
【０１０３】
【数３０】
2019164793.tif 000032
【０１０４】
式（１６）において、ｗは、高精度重み１１４の一つであり、
【０１０５】
【数３１】
2019164793.tif 000033
【０１０６】
は、低精度重み１１６のうちの対応するものである。式（１６）において、ｓｉｇｎ（ｗ）は、（例えば、０を中間にした値の所定の範囲で）重みｗの符号を返す又は零を返す関数である。ｒｏｕｎｄは、丸め関数である。一部の例において、ｒｏｕｎｄは、確率的丸めを用いて実現される。確率的丸めは、０．３が７０％の確率で０に丸められるとともに３０％の確率で１に丸められるような数の確率的丸め方法を意味する。０．５の値は、５０対５０の確率で０又は１に丸められる。
【０１０７】
低精度重み１１６が２の整数乗に制限される一部の例において、機械学習システム１０４は、次の量子化関数を用いてもよい。
【０１０８】
【数３２】
2019164793.tif 000034
【０１０９】
式（１７）において、ｑ（ｗ；θ（ｌ））を、パラメータｗ（すなわち、高精度重み１１４）の変換としてもよい。さらに、式（１７）において、θ（ｌ）は、各層ｌに対するパラメータである。一部の例において、ｑ（ｗ；θ（ｌ））を次のように規定してもよい。
【０１１０】
【数３３】
2019164793.tif 000035
【０１１１】
式（１８）において、θ１及びθ２はパラメータである。θ１（ｌ）及びθ２（ｌ）を付した各層に対するθ１及びθ２の種々の値が存在してもよい。したがって、式（１８）において、下付き文字のない記号θは、θ１，θ２等のような一つ以上のパラメータを表してもよい。したがって、機械学習システム１０４が式（１７）の量子化関数の式（１８）を用いる例において、機械学習システム１０４は、
【０１１２】
【数３４】
2019164793.tif 000036
【０１１３】
を次のように決定してもよい。
【０１１４】
【数３５】
2019164793.tif 000037
【０１１５】
したがって、本例において、低精度重み１１６のセットの各重みについて、機械学習システム１０４を、低精度重み１１６の更新の一部として、機械学習システム１０４が低精度重み１１６のセットの重みを２の指数値の乗を乗算した符号値（ｓｉｇｎ  ｖａｌｕｅ）に等しくするように決定できるように構成してもよく、この場合、符号値は、高精度重み１１４のセットの対応する重みの符号を表し、指数値は、高精度重み１１４のセットの対応する重みの２を底とする対数に基づく。
【０１１６】
式（１８）及び（１９）において、θ１及びθ２は種々の値を有してもよい。例えば、恒等変換（ｉｄｅｎｔｉｔｙ  ｔｒａｎｓｆｏｒｍ）を考えたときにθ１＝０及びθ２＝１である。θ１＝θ２＝０の場合は、重みｗの符号に基づく三進量子化である。θ１＜０；θ２＜０の場合は、焦点及び偏心がθによって制御される双曲線の族を与える。θ１＞０の場合は、双曲線正接関数の族を与える。一例において、Ｗは、次の行列である。
【０１１７】
【数３６】
2019164793.tif 000038
【０１１８】
この場合、θ１＝−１及びθ２＝３．５である。本例において、機械学習システム１０４は、
【０１１９】
【数３７】
2019164793.tif 000039
【０１２０】
を次のようになるように決定してもよい。
【０１２１】
【数３８】
2019164793.tif 000040
【０１２２】
２．５の値が大きな量子化誤差を有する２−６＝０．０１５６２５に量子化されたことに留意されたい。一部の実験は、量子化誤差が高精度のために非常に重要でないこと及びθの学習した値が重要であることを示した。
【０１２３】
低精度重み１１６の各々が２の整数乗である一部の例において、機械学習システム１０４は、完全な整数値（ｆｕｌｌ  ｉｎｔｅｇｅｒ  ｖａｌｕｅ）又は浮動小数点の値の代わりに指数及び符号のみを記憶することによって低精度重み１１６を記憶してもよい。これは、記憶領域を節約することができる。例えば、指数の最大値が１２７である例において、機械学習システム１０４は、浮動小数点のパラメータの記憶と比較される４Ｘモデル圧縮に８ビットの整数を用いることができる。
【０１２４】
パラメータの量子化のための多種多様の動機がある。先ず、小型の組込式携帯の分野の装置への配置が可能になるように、トレーニングされたＣＮＮモデルのメモリの専有面積を減少させることが望ましい。次に、これらの装置は、ＣＮＮモデルを用いる推論に必要な高度の計算要求を満足しない。次に、トレーニングされたＣＮＮモデルのエネルギー及び電力消費を減少させることが望ましい。次に、高度なマイクロエレクトロニクスを用いて組み込まれた装置のプロセッサは、製造のばらつきを有することがあり、これは、ＣＮＮモデルを用いる推論のために異なる精度が要求されることがある。ここでの技術は、事後の最適化及び分析を行うことなくＣＮＮのトレーニングの間にこれらの懸案事項に対処することができる。ここでの技術は、パラメータによってとられる固有の値の数を制限することができる。第１の注目は、ＣＮＮのパラメータによってとられる値の範囲が小範囲内にあることである。したがって、ここでの技術は、小範囲内の少数の固有の値を表すために著しく少ないビットを用いることができる。
【０１２５】
本開示の他の箇所で説明するように、以前の研究は、確率的丸め、密度に基づく量子化及びＫ平均クラスタリングを含む更に複雑な量子化方法について行われた。本開示の例は、誤差逆伝播によって学習したビット数をＣＮＮのパラメータと同時に許容する簡単な丸め方法を用いてもよい。本開示の一部の例において、機械学習システム１０４は、決定論的丸めを用いる。一部の例において、機械学習システム１０４は、ｓｔｒａｉｇｈｔ  ｔｈｒｏｕｇｈ  ｅｓｔｉｍａｔｏｒを用いた確率的丸めを用いる。ｓｔｒａｉｇｈｔ  ｔｈｒｏｕｇｈ  ｅｓｔｉｍａｔｏｒを用いることは、誤差逆伝播を用いてトレーニングを行う間に機械学習システム１０４が離散関数を無視することを意味する。量子化は、値の範囲を、「ビン」と称する単一の値にする。「ビン」の一様な置換が線源分布（ｓｏｕｒｃｅ  ｄｉｓｔｒｉｂｕｔｉｏｎ）に関係なく平均二乗誤差を最小にするのに漸近的に最適となることに留意されたい。本開示の種々の例は、ビン指標（ｂｉｎ  ｉｎｄｉｃｅｓ）を実値（ｒｅａｌ  ｖａｌｕｅ）にする任意の微分可能な変換と連携することができ、例えば、対数スケールの量子化（ｌｏｇａｒｉｔｈｍｉｃ  ｓｃａｌｅ  ｑｕａｎｔｉｚａｔｉｏｎ）を用いることができる。生来の浮動小数点の精度（ｎａｔｉｖｅ  ｆｌｏａｔｉｎｇ  ｐｏｉｎｔ  ｐｒｅｃｉｓｉｏｎ）も非線形量子化であることを思い出されたい。
【０１２６】
以前の研究は、例えば、パラメータの密度、フィッシャー情報量及びＫ平均クラスタリングを用いる不均一ビニングスキームについて行われた。Ｋ平均手法が二乗誤差を最小にするとしても、Ｋ平均手法は、クラスタリング及び誤差逆伝播のための二つの個別の段階を有する更に複雑なアルゴリズムを必要とする。均一ビニングスキームは、経験的には密度に基づくビニングより優れている。その理由は、パラメータの当初の推定のピーク（ｔｈｅ  ｐｅａｋｓ  ｏｆ  ｔｈｅ  ｉｎｉｔｉａｌ  ｅｓｔｉｍａｔｅ  ｏｆ  ｐａｒａｍｅｔｅｒ）が必ずしも最適なパラメータに向かうように学習指導を行わないからである。Ｋ平均クラスタリングも二乗誤差を最小にするが、Ｋ平均クラスタリングは、誤差逆伝播と一般的に微分可能でない（ハード）クラスタ割当て（（ｈａｒｄ）ｃｌｕｓｔｅｒ  ａｓｓｉｇｎｍｅｎｔ）と交互に行うステップを必要とする。
【０１２７】
本開示の技術は、あらゆる微分可能変換（ｄｉｆｆｅｒｅｎｔｉａｂｌｅ  ｔｒａｎｓｆｏｒｍ）と連携してもよく、量子化の線形スケールは、αとβの間の等距離ビンを用いる設計上の選択である。例えば、事後圧縮アルゴリズム（ｐｏｓｔ−ｈｏｃ  ｃｏｍｐｒｅｓｓｉｏｎ  ａｌｇｏｒｉｔｈｍ）の（https://arxiv.org/pdf/1603.01025.pdfから入手できる）Ｄａｉｓｕｋｅ  Ｍｉｙａｚａｋｉ等による“Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ  ｕｓｉｎｇ  Ｌｏｇａｒｉｔｈｍｉｃ  Ｄａｔａ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ”，ａｒＸｉｖ：１６０３．０１０２５に示すような対数量子化を用いることができる。指数ビット及び端数を記憶するための余剰ビットを表す少数のビットを用いる生来の浮動小数点の精度も非線形量子化であることを思い出されたい。（https://arxiv.org/pdf/1510.00149.pdfから入手できる）Ｓｏｎｇ  Ｈａｎ等による”Ｄｅｅｐ  Ｃｏｍｐｒｅｓｓｉｏｎ：Ｃｏｍｐｒｅｓｓｉｎｇ  Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ  ｗｉｔｈ  Ｐｒｕｎｉｎｇ，  Ｔｒａｉｎｅｄ  Ｑｕａｎｔｉｚａｔｉｏｎ  ａｎｄ  Ｈｕｆｆｍａｎ  Ｃｏｄｉｎｇ“，  ａｒＸｉｖ：１５１０．００１４９において、線形量子化は、逆累積分布関数（ＣＤＦ）サンプリングを介してＷの分布のピークに注目する密度に基づく量子化より優れた性能を示した。逆ＣＤＦサンプリングは、確率分布から乱数を標本抽出（ｓａｍｐｌｅ）する方法であり、例えば、コインが表である確率が０．３である場合、無作為事象がどちらであるかをどのように標本抽出しますか？０と１の間の乱数を標本抽出し、乱数が０．３未満である場合、表である。逆ＣＤＦサンプリングは、確率分布における技術用語である。ここでの技術は、確率的勾配降下法を用いてＷの値及びｂの値を同時に最適化することができる。ここでの技術によって、各層は、種々の量子化を学習することができ、それは、有益であることが示された。
【０１２８】
一部の例において、学習の目的は、少ない総数のビットを有するパラメータＷを有するＣＮＮに到達することである。例えば、誤差逆伝播を介してネットワークのパラメータと連携してビット数を学習することを目的とする。したがって、一部の例において、層ごとの量子化を、ＣＮＮの各層ｌのＷ（ｌ）及びｂ（ｌ）に採用する。しかしながら、損失関数
【０１２９】
【数３９】
2019164793.tif 000041
【０１３０】
は、パラメータ値の範囲に亘って連続的でないとともに微分可能でない。さらに、Ｗの小さい変化が
【０１３１】
【数４０】
2019164793.tif 000042
【０１３２】
で反映されないので、損失は、Ｗの小さい変化に対して一定のままであり、確率的勾配降下法はプラトーのままとなる（ｒｅｍａｉｎ  ｉｎ  ｐｌａｔｅａｕｓ）。したがって、一つ以上の例によれば、機械学習システム１０４は、量子化誤差ｑ（ｗ，ｂ）が小さくなるように高精度重み１１４（Ｗ）を更新する。直感では、Ｗ及び
【０１３３】
【数４１】
2019164793.tif 000043
【０１３４】
が近い（ｃｌｏｓｅ）ときに、機械学習システム１０４は、代わりにｌ（Ｗ）を用いることができる。機械学習システム１０４は、量子化関数ｑによって正則化された負の対数尤度である損失関数を最小にしてもよく、この場合、ｑを、式（１４）又は式（１８）のような本開示の例のいずれかに従って規定してもよい。
【０１３５】
ｂが一定でないとき（すなわち、ｂが誤差逆伝播を用いて決定されたとき）、ｂの値は、量子化誤差を最小にするために最大（例えば、３２ビット）にされる。したがって、本開示の技術によれば、ペナルティ項が、ビット数すなわちネットワークパラメータによって取り出される固有の値の数に対して加えられる。均一に離間した量子化モデルによって、固有の値の数に対する簡単な関数が可能になる。本開示の技術によれば、機械学習システム１０４は、ＣＮＮの各層ｌに対する
【０１３６】
【数４２】
2019164793.tif 000044
【０１３７】
及びｂ（ｌ）を学習するために層ごとの量子化を採用する。例えば、機械学習システム１０４は、上述した式（７）及び式（８）で規定したｌ（Ｗ）並びに上述した式（１４）で規定したｑ（ｗ，ｂ）の関数として、式（２０）で規定する損失関数
【０１３８】
【数４３】
2019164793.tif 000045
【０１３９】
を用いてもよい。
【０１４０】
【数４４】
2019164793.tif 000046
【０１４１】
式（２０）において、λ１及びλ２は、量子誤差を最小にする目的とビット深度を最小にする目的の間のトレードオフを調整するために用いられるハイパーパラメータである。λ１＝０及びλ２＝１であるとき、ＣＮＮは、ビットペナルティのために層ごとに１ビットを用いる。λ１＝１及びλ２＝０であるとき、ＣＮＮは、量子誤差を最小にするために層ごとに最大の許容されるビット数（例えば、３２ビット）を用いる。パラメータλ１及びλ２は、量子誤差及び分類誤差への影響に対するビットのコストを規定する際に柔軟性を持たせる。
【０１４２】
低精度重み１１６が２の整数乗に制限される例のような一部の例において、機械学習システム１０４は、次の式（２１）で規定される損失関数
【０１４３】
【数４５】
2019164793.tif 000047
【０１４４】
を用いてもよい。
【０１４５】
【数４６】
2019164793.tif 000048
【０１４６】
式（２１）において、ｌ（Ｗ），λ１，λ２及びｂは、式（２０）におけるものと同じ意味を有してもよい。しかしながら、式（２１）において、Ｄ（Ｗ，θ）は、蒸留損失（ｄｉｓｔｉｌｌａｔｉｏｎ  ｌｏｓｓ）を意味する。蒸留損失は、機械学習システム１０４が高精度重み１１４（Ｗ）を用いるとともに低精度重み１１６
【０１４７】
【数４７】
2019164793.tif 000049
【０１４８】
を用いて同一の入力でＤＮＮ１０６を実行するときにＤＮＮ１０６によって生成された出力の間の差を示す。式（１９）に関連して示したように、低精度重み１１６を高精度重み１１４（Ｗ）及びパラメータθから計算してもよい。したがって、Ｄを、式（２１）に示すようなＷ及びθによってパラメータ化してもよい。
【０１４９】
一部の例において、ハイパーパラメータの値を、一つ以上のリソース（例えば、ＦＰＧＡファブリック又はＧＰＵコア）の利用可能性、アルゴリズムタスクに基づくデータの品質（例えば、不鮮明な画像は高精度ネットワークを必要とすることがある。）又は他の要因に基づいて（例えば、機械学習システム１０４又は技術者によって）選択してもよい。一部の例において、ハイパーパラメータの値を、高度なナノテクノロジーにおける製造のばらつきに基づいて選択してもよい。ビット精度、記憶及びエネルギー消費の密結合（ｃｌｏｓｅ  ｃｏｕｐｌｉｎｇ）のために処理の待ち時間及びエネルギー消費を減少させることができる。
【０１５０】
一方、一定のＷが与えられた場合のｂの更新を考察する。ビンの数を半分にすること又は倍にすることに対応する更新についての二つの選択を考える。Ｗが最適であるとともにλ２＝０である場合、これは、最小の量子誤差を有するビンを見つけることに対応する。ほとんど全ての場合において、これは、Ｗの範囲内の３２ビット全てを用いることに対応する。したがって、λ２≠０のペナルティが各ビンに加えられ、その結果、量子誤差とビンの数の間のトレードオフが存在する。λ１＝０のとき、この結果として、ペナルティのために層ごとに１ビットを用いる。
【０１５１】
機械学習システム１０４がトレーニング中に式（２０）に従って損失関数を計算する例において、機械学習システム１０４は、式（２２）及び式（２３）で表現される次の規則を用いてＷ及びｂを更新してもよく、高い浮動小数点の精度を保持することによってＷに更新される。
【０１５２】
【数４８】
2019164793.tif 000050
【０１５３】
式（２２）及び式（２３）において、μは、学習率を表すハイパーパラメータである。式（２２）におけるＷの更新された値は、式（１４）に示すような量子化を用いてＷに投影される。機械学習システム１０４は、式（２２）及び式（２３）に関する勾配を計算するＢｅｒｇｓｔｒａ等による”Ｔｈｅａｍｏ：Ａ  ｃｐｕ  ａｎｄ  ｇｐｕ  ｍａｔｈ  ｃｏｍｐｉｌｅｒ  ｉｎ  ｐｙｔｈｏｎ“，Ｉｎ  Ｐｒｏｃ．９ｔｈ  Ｐｙｔｈｏｎ  ｉｎ  Ｓｃｉｅｎｃｅ  Ｃｏｎｆ．，ｐａｇｅｓ  １−７，２０１０（以下、”Ｔｈｅａｎｏ“）において与えられる自動微分（ａｕｔｏｍａｔｉｃ  ｄｉｆｆｅｒｅｎｔｉａｔｉｏｎ）を用いてもよい。
【０１５４】
式（２４）に示すように、式（２３）の符号関数は、演算対象が０に近くない場合には符号の演算対象を返し、演算対象が０に近い場合には符号関数は０を返す。これによって、学習率及び勾配が０になるときにビット数を収束させることができる。一部の例において、ε＝１０−９である。
【０１５５】
【数４９】
2019164793.tif 000051
【０１５６】
重みが２の乗に制限されるとともに機械学習システム１０４が式（２１）に示すような損失関数を計算する例のような一部の例において、各層ｌに対して、機械学習システム１０４は、次の式に従って層ｌのビット深度（すなわち、ｂ（ｌ））を更新してもよい。
【０１５７】
【数５０】
2019164793.tif 000052
【０１５８】
式（２７）、式（２８）及び式（２９）において、ｑ（ｗ，ｂ）を、式（１８）に示すように規定してもよい。式（１８）がθ１の値及びθ２の値に依存することに留意されたい。したがって、本例において、複数の層の各々に対して、機械学習システム１０４を、層に関連する重みの第２のセットの重み（すなわち、高精度重み１１４）に量子化関数（例えば、θ１＋θ２ｌｏｇ２｜ｗ｜）を適用することによって生成された値を丸めることにより層に対する量子化された値のセットを決定するように構成してもよい。さらに、機械学習システム１０４は、層に対する量子化された値のセットの最大値及び層に対する量子化された値のセット最小値を決定してもよい。この場合、機械学習システム１０４は、量子化された値のセットの最大値及び量子化された値のセット最小値によって規定される範囲の底が２の対数に基づいて層のビット精度値（ｂ（ｌ））を設定してもよい。したがって、本例において、層ｌの低精度重みを、ｂ（ｌ）ビットの符号値及び整数としてメモリ１０２に記憶させてもよい。値ｂ（ｌ）それ自体をメモリ１０２に記憶させる代わりに、メモリ１０２は、θ１（ｌ）の値及びθ２（ｌ）の値を記憶するとともに上記の式（２５）〜（２９）に示すようにθ１（ｌ）及びθ２（ｌ）からｂ（ｌ）を計算してもよい。
【０１５９】
式（２０）の損失関数は、Ｗに対する小さい及び／又は大きい更新を推奨し、中間サイズの更新を妨げる。説明のために、｛０，−１，＋１｝（すなわち、±１）の二つのビンを考察するとともに０に等しい一部の重みを考察する。一般的な勾配降下法は、あらゆる方向の重みを更新するが、１／２未満の大きさの更新は、
【０１６０】
【数５１】
2019164793.tif 000053
【０１６１】
を変更せず、したがって、分類損失を改善しない。さらに、重みを丸めて０にする際に更新によって量子化誤差が生じる。同様に、１／２と１の間の大きさの更新によって量子化ペナルティが生じる。式（２０）において規定されるような（又はｌ（Ｗ）＋ｑ（ｗ，ｂ）によって規定されるような）損失を用いた最適な更新を±１としてもよく、いずれにしても、量子化誤差を生じさせることなく尤度推定量（ｌｉｋｅｌｉｈｏｏｄ  ｅｓｔｉｍａｔｅ）を改善させる。
【０１６２】
【数５２】
2019164793.tif 000054
【０１６３】
が凸であるとともに量子化されたパラメータに対する負の対数尤度の微分可能緩和（ｄｉｆｆｅｒｅｎｔｉａｂｌｅ  ｒｅｌａｘａｔｉｏｎ）であることに留意されたい。
【０１６４】
【数５３】
2019164793.tif 000055
【０１６５】
が少数ビットを用いる小さい量子化誤差の制限に対応するラグランジュであるｌ（Ｗ）の上限であることは明らかである。式（１４）の均一に離間した量子化によって、固有の値の数に対するこのような簡単な関数形式が可能になる。
【０１６６】
分類損失と組み合わされる量子化ペナルティは、学習曲線に重大な影響を有することがあり、経験的に示すような一部の場合において、学習率が一定ダルときに学習の速度を上げることがある。この現象は、量子化がパラメータの微小な変化を無視するとともにパラメータに対するかなりの量の変化を増幅することによってレギュラライザの役割を果たすという点でバイナリニューラルネットワークに対する以前の研究で注目された。さらに、ＣＮＮの最終パラメータが双峰型分布を有することが以前の研究において示された。ＤＮＮの近似及び圧縮についての以前の研究の大部分は、この利益を活用しない。その理由は、ＤＮＮが学習を事後量子化から切り離す又は予めトレーニングされたネットワークを設けていると仮定するからである。
【０１６７】
一部の例において、トレーニングを完了すると、機械学習システム１０４は、高精度重み１１４（Ｗ）を廃棄するとともに各層の
【０１６８】
【数５４】
2019164793.tif 000056
【０１６９】
α及びδのみを記憶してもよい。この場合、機械学習システム１０４は、ＤＮＮ１０６の低精度重み
【０１７０】
【数５５】
2019164793.tif 000057
【０１７１】
を用いてもよい。機械学習システム１０４は、層の全てのパラメータをビンの指標に対応する整数としてコード化してもよく、これによって、低精度重み１１６の必要な記憶領域を著しく減少させることができる。（例えば、ＦＰＧＡを用いて）畳み込み及びドット積を迅速に求めることを目的とするハードウェアアクセラレータを設計するために次の式（３０）に示すようなパラメータの形態を利用してもよい。
【０１７２】
【数５６】
2019164793.tif 000058
【０１７３】
式（３０）において、ｚは、ビンの指標である。したがって、各層に対して、機械学習システム１０４は、各層についてαの一つの値及びδの一つの値のみをメモリ１０２に記憶させるとともに層の各入力に対する個別の整数値ｚを記憶してもよい。
【０１７４】
低精度重み１１６が２の整数乗に制限される一部の例において、トレーニングを完了すると、機械学習システム１０４は、高精度重み１１４（Ｗ）を廃棄するとともに低精度重み１１６
【０１７５】
【数５７】
2019164793.tif 000059
【０１７６】
の値を指数値として記憶してもよい。したがって、機械学習システム１０４は、低精度重み
【０１７７】
【数５８】
2019164793.tif 000060
【０１７８】
に対する値ｚを記憶するとともに低精度重み
【０１７９】
【数５９】
2019164793.tif 000061
【０１８０】
を次のように再構成してもよい。
【０１８１】
【数６０】
2019164793.tif 000062
【０１８２】
最終モデルを記憶するのに必要な記憶容量を著しく減少させることができる。その理由は、我々の手法によってビット精度の選択をトレーニング過程の一部として行うことができるからである。機械学習システム１０４は、層ごとの二つの浮動小数点のみを用いてもよく及び／又は層ごとの二つの浮動小数点のみを記憶してもよく、ＣＮＮの全てのパラメータを整数としてコード化してもよい。逆に、推論又は予測のために整数の間の演算に加えて二つの浮動小数点演算しか必要としない。したがって、ＤＮＮ１０６を、大抵の分野の装置（ｍｏｓｔ  ｆｉｅｌｄ  ｄｅｖｉｃｅｓ）、ＦＰＧＡ及び複雑なプログラマブル論理装置（ＣＰＬＤ）、携帯装置等の演算能力を有しながら簡単に配置することができる。
【０１８３】
これは、対象分野の装置の仕様（例えば、メモリの空き容量）も考慮することができるとともに特定のトレーニングデータ及び装置に対する学習の指導を行うことができるＤＮＮをトレーニングする一般的な方法である。例示的なタイプの対象分野の装置は、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、サーバコンピュータ、モノのインターネット（ＩｏＴ）装置、自律的走行車、ロボット等を含んでもよい。本開示は、ＢｉｔＮｅｔ  ＤＮＮのような本開示の技術に従ってトレーニングされたＤＮＮに注意を向けてもよい。ＢｉｔＮｅｔ  ＤＮＮは、互いに異なる層に対して互いに異なるビット精度値を有してもよい。ＢｉｔＮｅｔ  ＤＮＮは、画像認識から自然言語処理までの多数の領域に適用できる。ＢｉｔＮｅｔ  ＤＮＮは、モバイルプラットフォーム及びスマートフォンを含むがそれに限定されない実際のアプリケーション（ｒｅａｌ  ｗｏｒｌｄ  ａｐｐｌｉｃａｔｉｏｎ）に対してＤＮＮに基づく機械学習解決を展開する実務者に有益となることができる。本開示の技術によって、リソース制約された環境に対する効果的なＤＮＮを可能にする。メモリサイズを減少させるために基本的なＤＮＮ処理を簡単化するための連結及び新たな形態の並行処理を見つけることは有利となる。本開示の他の箇所で詳しく説明するように、機械学習システム１０４は、ニューラルネットワークソフトウェアアーキテクチャの他のＤＮＮをハードウェアアーキテクチャにマッピングするためにＤＮＮ１０６を用いてもよい。さらに、一部の例において、機械学習システム１０４は、種々のハードウェアアーキテクチャでの動作のためにＢｉｔＮｅｔ  ＤＮＮをトレーニングしてもよい。
【０１８４】
図２は、本開示の技術によるＢｉｔＮｅｔ  ＤＮＮの例示的な動作を示すフローチャートである。図２の例において、メモリ１０２は、ＤＮＮ１０６の重みのセット及びＤＮＮ１０６の精度値のセットを記憶する（２００）。ＤＮＮ１０６は、複数の層１０８を有する。複数の層１０８の各々に対して、重みのセットは、層の重みを有し、精度値のセットは、層のビット精度値を有する。層の重みは、層のビット精度値に等しいビット精度を有する値を用いてメモリ１０２で表される。例えば、層のビット精度が５に等しい場合、層の重みの各々を、上述した式（３０）に示すように、（例えば、５ビットを有する整数としての）５ビット指標、オフセット値α及び量子化ステップサイズ値δを用いて表してもよい。本例において、メモリ１０２は、各層に対して一つのオフセット値α及び一つの量子化ステップサイズ値δを記憶してもよい。重みが２の整数乗に限定される例において、各層に対する重みを、層のビット精度値に等しいビット精度を有する指数値を用いてメモリ１０２で表してもよい。層の重みは、層のニューロンに対する入力に関連する。
【０１８５】
さらに、図２の例に示すように、機械学習システム１０４は、ＤＮＮ１０６をトレーニングしてもよい（２０２）。ＤＮＮ１０６をトレーニングすることは、重みのセット及びビット精度値のセットを最適化することを備える。したがって、ビット精度値は、ＤＮＮ１０６のトレーニング中に更新される。その結果、ＤＮＮ１０６の層１０８の二つ以上は、互いに異なるビット精度を有してもよい。一部の例において、ＤＮＮ１０６の層１０８の全ては、互いに異なるビット精度を有する。
【０１８６】
機械学習システム１０４は、ＤＮＮ１０６をトレーニングすることの一部として、複数の繰り返しに亘る誤差逆伝播アルゴリズムを適用してもよい。誤差逆伝播アルゴリズムの各繰り返しは、重みのセットを更新してもよく、ビット精度値のセットを最適化してもよい。逆伝播アルゴリズム及びビット精度の最適化の例示的な詳細を、図３に関連して説明する。
【０１８７】
図３は、本開示の技術によるＤＮＮ１０６をトレーニングための例示的な動作を示すフローチャートである。上述したように、機械学習システム１０４は、ＤＮＮ１０６をトレーニングするための複数の繰り返しを実行してもよい。後に説明するように、機械学習システム１０４は、複数の繰り返しの各々に対する図３の動作（３００）〜（３０８）を実行してもよい。
【０１８８】
図３に関連して、上述した低精度重み１１６（図１）のセットは、重み
【０１８９】
【数６１】
2019164793.tif 000063
【０１９０】
の第１のセットである。トレーニング中、メモリ１０２は、複数の層の各々に対する重みの一定の精度セットを有する重み（すなわち、高精度重み１１４（図１））の第２のセットを記憶してもよい。高精度重み１１４のセットの各重みは、予め規定された最高ビット精度値（例えば、３２ビット、１６ビット等）に等しいビット精度を有してもよい。低精度重み
【０１９１】
【数６２】
2019164793.tif 000064
【０１９２】
（すなわち、低精度重み１１６）のセットは、複数の層の各々に対する重みの精度が最適化されたセットを有する。式（２０）のような一部の例において、低精度重み１１６のセットの各重みは整数である。一部の例において、低精度重み１１６のセット各重みは２の乗である。ビット精度値（ｂ）（すなわち、ビット精度値１１８（図１））のセットは、複数の層の各々に対するビット精度値を有する。複数の層の各々に対して、重み
【０１９３】
【数６３】
2019164793.tif 000065
【０１９４】
の精度が最適化されたセットの各重みを、層に対するビット精度値に等しいビット精度を有する値を用いてメモリ１０２において表してもよい。機械学習システム１０４は、ＤＮＮ１０６をトレーニングするための複数の繰り返しを実行することの一部として、複数の繰り返しの各々に対する動作（３００）〜（３０８）を実行してもよい。
【０１９５】
特に、図３の例において、機械学習システム１０４は、第１の入力データセットに基づいて第１の出力データセットを計算するためにＤＮＮ１０６のニューロンの入力の重みとして高精度重みのセットを用いてもよい（３００）。例えば、機械学習システム１０４は、重みｗとして重みの第２のセットを用いて、式（１）又は他の活性化関数に従ってＤＮＮ１０６の人工ニューロンの各々の出力値を計算してもよい。第１の出力データセットを、ＤＮＮ１０６の出力層１０８Ｎの出力ｙとしてもよい。
【０１９６】
追加的には、機械学習システム１０４は、損失関数を決定してもよい（３０２）。例えば、機械学習システム１０４は、データラベル対、第１の出力データセット、ビット精度値１１８のセット、高精度重み１１４及びハイパーパラメータ１２０のセットに基づいて損失関数を決定してもよい。データラベル対は、第１の入力データセット及びラベルを有する。図４は、後に詳しく説明するように、損失関数を決定するための例示的な動作を示すフローチャートである。他の例において、損失関数を種々の方法で決定してもよい。例えば、損失関数は、本開示の他の箇所で説明するような一つ以上の追加の係数を有してもよい。
【０１９７】
さらに、図３の例において、機械学習システム１０４は、損失関数に基づいて高精度重み１１４のセットを更新する（３０４）。例えば、機械学習システム１０４は、式（２２）に示すように高精度重み１１４（Ｗ）のセットを更新してもよい。したがって、機械学習システム１０４は、高精度重み１１４の更新されたセットが次のようになるように高精度重み１１４の更新されたセットを決定してもよい。
【０１９８】
【数６４】
2019164793.tif 000066
【０１９９】
この場合、Ｗは、高精度重み１１４のセットであり、μは、学習率であり、
【０２００】
【数６５】
2019164793.tif 000067
【０２０１】
は、低精度重み１１６のセットであり、
【０２０２】
【数６６】
2019164793.tif 000068
【０２０３】
は、高精度重み１１４のセットに対する損失関数の偏微分である。
【０２０４】
さらに、機械学習システム１０４は、精度値のセットを更新してもよい（３０６）。例えば、機械学習システム１０４は、式（２３）に示す損失関数のような損失関数に基づいてビット精度値１１８のセットを更新してもよい。したがって、機械学習システム１０４は、ビット精度値１１８の更新されたセットが
【０２０５】
【数６７】
2019164793.tif 000069
【０２０６】
に等しくなるよう設定するようにビット精度値１１８の更新されたセットを決定してもよく、この場合、ｂは、ビット精度値１１８のセットであり、μは、学習率であり、
【０２０７】
【数６８】
2019164793.tif 000070
【０２０８】
は、低精度重み１１６のセットであり、
【０２０９】
【数６９】
2019164793.tif 000071
【０２１０】
は、ビット精度値１１８のセットに対する損失関数の偏微分であり、ｓｉｇｎ（・）は、関数の独立変数の絶対値が予め決定されたしきい値未満でない場合に関数の独立変数の符号を返すとともに関数の独立変数の絶対値が予め決定されたしきい値未満である場合に０を返す関数である。
【０２１１】
低精度重み１１６が２の整数乗に制限される例のような一部の例において、機械学習システム１０４は、式（２５）〜（２９）に基づいてビット精度値１１８のセットを更新してもよい。したがって、機械学習システム１０４は、層に対する更新された第１のパラメータが
【０２１２】
【数７０】
2019164793.tif 000072
【０２１３】
に等しくなるよう設定するように層に対する更新された第１のパラメータを決定し、この場合、θ１は、層に対する第１のパラメータであり、μは、学習率であり、
【０２１４】
【数７１】
2019164793.tif 000073
【０２１５】
は、θ１に対する損失関数の偏微分である。追加的には、機械学習システム１０４は、層に対する更新された第２のパラメータが
【０２１６】
【数７２】
2019164793.tif 000074
【０２１７】
に等しくなるよう設定するように層に対する更新された第２のパラメータを決定し、この場合、θ２は、層に対する第２のパラメータであり、μは、学習率であり、
【０２１８】
【数７３】
2019164793.tif 000075
【０２１９】
は、θ２に対する損失関数の偏微分である。本例において、機械学習システム１０４は、量子化関数θ１＋θ２ｌｏｇ２｜ｗ｜を適用することによって層に対する量子化された重みのセットを決定してもよく、この場合、ｗは、層に関連する重みの第２のセットの重みを表す。機械学習システム１０４は、層に対する量子化された重みのセットの最大重み及び層に対する量子化された重みのセットの最小重みを決定してもよい。機械学習システム１０４は、（例えば、式（２９）に示すような）量子化された重みのセットの最大重み及び量子化された重みのセットの最小重みによって規定される範囲の底が２の対数に基づいて層のビット精度値を設定してもよい。
【０２２０】
機械学習システム１０４は、高精度重み１１４（Ｗ）のセットを更新した後及びビット精度値１１８のセットを更新した後、高精度重み１１４（Ｗ）の更新されたセット及びビット精度値１１８の更新されたセットに基づいて低精度重み１１６
【０２２１】
【数７４】
2019164793.tif 000076
【０２２２】
のセットを更新してもよい（３０８）。例えば、機械学習システム１０４は、式（１３）に示すように低精度重み１１６
【０２２３】
【数７５】
2019164793.tif 000077
【０２２４】
のセットを更新してもよい。したがって、機械学習システム１０４は、複数の層の各々に対して、層に対する更新された精度が最適化された重みが
【０２２５】
【数７６】
2019164793.tif 000078
【０２２６】
に等しくなるように低精度重み１１６の更新されたセットを更新してもよく、この場合、αは、層に対する重みの一定の精度のセット（すなわち、高精度重み１１４のセット）の最小重みであり、Ｗは、層に対する重みの一定の精度のセットであり、δは、層に対する重みの一定の精度のセットの最小重みから層に対する重みの第２の一定の精度のセットの最大重みまでの離散化された範囲の一定のステップの総数であり、ｒｏｕｎｄ（・）は、丸め関数である。本例において、δを
【０２２７】
【数７７】
2019164793.tif 000079
【０２２８】
に等しくしてもよく、この場合、βは、層に対する重みの一定の精度のセットの最大重みであり、ｂは、層に対するビット精度値である。
【０２２９】
低精度重み１１６のセットが２の整数乗に制限される一部の例において、機械学習システム１０４は、低精度重み１１６のセットの各重みに対して、指数値の乗に２が乗算された符号値に等しくなる低精度重み１１６のセット重みを決定してもよい。本例において、符号値は、高精度重み１１４のセットの対応する重みの符号を表す。本例において、指数値は、高精度重み１１４のセットの対応する重みの２を底にする対数に基づく。例えば、機械学習システム１０４は、式（１９）に示すように低精度重み１１６の更新されたセットを決定してもよい。
【０２３０】
トレーニング過程とは別に、機械学習システム１０４は、第２の入力データセットに基づいて第２の出力データセットを計算するためにＤＮＮ１０６のニューロンの入力の重みとして低精度重み１１６
【０２３１】
【数７８】
2019164793.tif 000080
【０２３２】
のセットを用いてもよい（３１０）。換言すれば、機械学習システム１０４は、出力データを生成するために第２の入力データを用いてもよい。例えば、機械学習システム１０４は、入力データに基づいて出力データを計算するために評価モード中にＤＮＮ１０６のニューロンの入力の重みとして低精度重み１１６のセットを用いてもよい。
【０２３３】
本開示の一部の例において、図２を参照すると、ニューラルネットワークのトレーニング（２０２）の結果としてＤＮＮ１０６を２の乗に等しくしてもよい。低精度重み１１６が２の乗に等しくなる例において、推論モード中の計算を、乗算演算の代わりに論理シフト演算を用いることによって簡単化することができる。この結果、ＤＮＮ１０６は、推論モード中に更に効率的にかつ潜在的に更に短い待ち時間で動作する。その理由は、シフト演算が乗算より複雑でないからである。一例において、図３を参照すると、ＢｉｔＮｅｔトレーニングは、動作（３００）〜（３０８）の間に重みを２の整数乗に制限することができる。例えば、動作（３０８）の間に、機械学習システム１０４は、低精度重み１１６の値が２の整数乗となるように低精度重み１１６を更新してもよく、動作（３１０）の間に、低精度重み１１６のセットは、ニューラルネットワークのニューロンの入力の重みとして用いられる。
【０２３４】
例えば、動作（３０８）における２の整数乗である値の選択は、選択した重みの量子化を表す。高精度とＢｉｔＮｅｔトレーニングされたニューラルネットワークの間の値の分布の整合を更に良好に行うために、ＢｉｔＮｅｔトレーニングは、量子化が微分不可能である場合でも、学習した重みパラメータのコード化された分布を最良に維持する量子化関数を選択することができる。例えば、動作（３０８）において、機械学習システム１０４は、量子化関数ｓｉｇｎ（ｗ）＊２（ｒｏｕｎｄ（ｌｏｇ｜ｗ｜）を用いてもよく、この場合、ｗは、動作（３０６）で構成ンされた元の浮動小数点重みである。
【０２３５】
図４は、本開示の技術による損失関数を決定するための例示的な動作を示すフローチャートである。図４の例において、機械学習システム１０４は、第１の演算対象ｌ（Ｗ）を決定する（４００）。第１の演算対象ｌ（Ｗ）は、中間損失関数（ｉｎｔｅｒｍｅｄｉａｔｅ  ｌｏｓｓ  ｆｕｎｃｔｉｏｎ）である。一部の例において、中間損失関数は、データラベル対（Ｘ（ｌ），ｙ）、第１の出力データ（Ｘ（ｌ））及び重み（Ｗ）の第２のセットに基づく。式（７）及び（８）は、中間損失関数の例を示す。したがって、第１の入力データセットは、トレーニングデータラベル対のバッチを備え、機械学習システム１０４は、第１の演算対象を決定することの一部として、第１の演算対象が
【０２３６】
【数７９】
2019164793.tif 000081
【０２３７】
に等しくなるように第１の演算対象を決定してもよく、この場合、Ｂは、データラベル対のバッチのデータラベル対の総数であり、データラベル対のバッチの各ラベルは、Ｂラベルを有するラベルのセットの要素であり、ｉは、指標であり、ｌｏｇ（・）は、対数関数であり、Ｎは、複数の層の総数であり、ｙｉは、ラベルのセットのｉ番目のラベルであり、
【０２３８】
【数８０】
2019164793.tif 000082
【０２３９】
は、データラベル対のバッチのｉ番目のデータラベル対のデータが入力としてＤＮＮ１０６に与えられるとともにＤＮＮ１０６が重みの第２のセットを用いるときの複数の層のＮ番目の層の出力である。本例において、データラベル対のバッチのデータラベル対は、独立の均一に分布したデータラベル対であってもよい。一部の例において、中間損失関数は、任意の標準的な教師付き又は教師なし損失関数、例えば、教師付き分類のための交差エントロピー（若しくは負の対数尤度）又は教師なしオートエンコーダのための再構成誤差であってもよい。中間損失関数が損失関数である一例において、機械学習システム１０４は、第１の演算対象を式（３３）に示すように計算してもよい。
【０２４０】
【数８１】
2019164793.tif 000083
【０２４１】
式（３２）において、ｘは、入力データであり、
【０２４２】
【数８２】
2019164793.tif 000084
【０２４３】
は、高精度重み１４４を用いるＤＮＮ１０６の出力である。
【０２４４】
さらに、図４の例において、機械学習システム１０４は、第２の演算対象がハイパーパラメータ（λ１）と複数の層の各々に対する量子化誤差ｑ（ｗ（ｌ），ｂ（ｌ））の和との積に等しくなるように第２の演算対象を決定する（４０２）。例えば、機械学習システム１０４は、式（２０）に示すように
【０２４５】
【数８３】
2019164793.tif 000085
【０２４６】
を計算してもよい。機械学習システム１０４は、複数の層の各々に対して、式（１４）に示すように層の高精度重みのセット（すなわち、重みの第２のセット）と層の低精度重みのセット（すなわち、重みの第１のセット）の間の差に基づいて層の量子化誤差を決定してもよい。低精度重み１１６が２の整数乗に制限されるとともに機械学習システム１０４が式（２１）で規定した損失関数を用いる例のような一部の例において、機械学習システム１０４は、第２の演算対象をハイパーパラメータと量子化誤差との積として決定する代わりに上述したように第２の演算対象をハイパーパラメータ（λ１）の値及び蒸留損失に等しくなるように決定してもよい。
【０２４７】
追加的には、図４の例において、機械学習システム１０４は、第３の演算対象がハイパーパラメータ（λ２）と
【０２４８】
【数８４】
2019164793.tif 000086
【０２４９】
との積に等しくなるように第３の演算対象を決定してもよく、この場合、ｉは、指標であり、Ｎは、複数の層の総数であり、ｂｉは、複数の層のｉ番目の層のビット精度値である（４０４）。機械学習システム１０４は、損失関数を第１の演算対象、第２の演算対象及び第３の演算対象の和として決定してもよい。
【０２５０】
本開示は、ＤＮＮメモリサイズを管理するのと同時にここで説明する低精度手法によって生じたニューラルネットワーク組立（ｃｏｍｐｏｓｉｔｉｏｎ）の新たな機会を提供することができる技術を記載する。図５は、例示的な異種ニューラルアーキテクチャを示すブロック図である。図５の異種ニューラルアーキテクチャは、本開示の低精度手法によって生じるニューラルネットワーク組立の新たな領域を強調する。図５の例において、システム５００は、サブバンド分解部５０２と、バイナリニューラルネットワーク（ＢＮＮ）５０４と、ＢＮＮ５０６と、ＤＮＮ５０８と、融合部５１０と、を有する。サブバンド分解部５０２は、入力データを受信する。ＢＮＮ５０４、ＢＮＮ５０６及びＤＮＮ５０８は、サブバンド分解部５０２の出力を入力として受信する。融合部５１０は、ＢＮＮ５０４、ＢＮＮ５０６及びＤＮＮ５０８の出力を入力として受信する。融合部５１０は、出力を生成する。機械学習システム１０４（図１）は、サブバンド分解部５０２、ＢＮＮ５０４、ＢＮＮ５０６、ＤＮＮ５０８及び融合部５１０の各々を実現してもよい。
【０２５１】
ＤＮＮは、シプナス重み及びシプナス活性化を表すために単一のビット精度のみを用いるニューラルネットワークである。これは、処理におけるかなりの節約を表す。その理由は、計算アーキテクチャが乗算を必用としないとともにメモリの使用量が著しく減少するからである。ＢＮＮは、物体検出及び分類のために以前に適用されてきた。推論モードにおいて、ＢＮＮは、乗累算ハードウェアを必要とすることなくランタイムメモリの実装面積の１／３２未満の実装面積で実行する。見方によっては（Ｔｏ  ｇｉｖｅ  ａ  ｐｅｒｓｐｅｃｔｉｖｅ）、ＡｌｅｘＮｅｔＣＮＮは、ビット単位演算を用いることによって２３倍に速度を上げながら０．２５Ｗしか用いない。
【０２５２】
サブバンド分解部５０２は、各周波数帯域をＢＮＮ５０４、ＢＮＮ５０６及びＤＮＮ５０８のような低精度のＤＮＮで処理できるように画像を互いに異なる周波数帯域に分解することができる。画像を高周波帯域及び低周波帯域に分離することによって、ＤＮＮは、エッジ及びテクスチャを個別に処理することができる。分解は、画像コンテンツを分離する処理における入力データを互いに異なるサブバンドにする前処理に依存し、ウェーブレット分解によく似ている。この処理は、他の形態のデータ前処理、例えば、画像を回転し、保存し（ｍｉｒｒｏｒｅｄ）、かつ、コントラスト調整するデータ拡大を有してもよい。
【０２５３】
サブバンド分解の処理によって、各サブバンドを互いに異なるＤＮＮにより並列に処理することができるニューラルネットワーク組立が可能になる。この手法によって、サブバンド分解部５０２は、入力データを複数の並列なストリームに分解することができる。本開示の技術によれば、機械学習システム１０４は、各サブバンドが学習の観点から「最適」となる基本的な前提に基づいて記憶及び計算の要求に最も適するようにするために各サブバンドを選択してもよい。各サブバンドをビット精度の観点から最適化してもよい。処理されるサブバンドの各々の精度を低下させる際の節約を伴う入力データの前処理のコストが存在する。
【０２５４】
本開示の他の箇所で説明するように、ハイパーパラメータとしてのビット精度それ自体を用いてＤＮＮをトレーニングすることがアルゴリズム性能の観点から有利となることができる。結果的に得られるＤＮＮ５０８は、ＤＮＮ５０８の各層に対して互いに異なるビット精度を有してもよい。ＤＮＮ重みの量子化及び丸めのような他の手法は、アルゴリズム性能が低下するだけでなく全ての重み値が包括的に同一の精度（例えば、３２ビット、１６ビット、８ビット等）で取り扱われる。同様に、ＢＮＮを、最小ビット設定がＤＮＮ層の均一な設定に適用されるようにトレーニングしてもよい。メモリサイズの節約量は、アルゴリズムタスク（例えば、特徴及びオブジェクトクラス（ｎｕｍｂｅｒ  ｏｆ  ｆｅａｔｒｅｓ  ａｎｄ  ｏｂｊｅｃｔ  ｃｌａｓｓ）の数）に依存してもよい。
【０２５５】
図５の例において、融合部５１０は、ＢＮＮ５０４、ＢＮＮ５０６及びＤＮＮ５０８の一つ以上により生成された出力データに基づいて出力データを生成してもよい。一部の例において、融合部５１０は、他のＤＮＮであってもよい。一部の例において、融合部５１０は、ＤＮＮを用いないプログラムであってもよい。このようにして、図５は、各ニューラルネットワーク（ＢＮＮ５０４、ＢＮＮ５０６、ＤＮＮ５０８、融合部５１０）を学習の観点及びリソース使用の観点（例えば、全体的な記憶保持を制御するとともにハードウェアで計算するためのビット精度）から最適にすることができるニューラルネットワークから構成された例示的な実施の形態を示す。
【０２５６】
本開示の以下のセクションは、ＤＮＮ１０６（図１）のようなＢｉｔＮｅｔ  ＤＮＮが更に高い学習率をサポートする（例えば、更に速くまとまる）ことができるとともに標準的なＤＮＮより高い性能を有することができるＤＮＮの重みの設定に到達することができることを示す。ビット精度を用いることによって、機械学習システム１０４は、（例えば、重みに対して選択することができる値の数の範囲内で）更に明確に方向付けられた目標（ｍｏｒｅ  ｄｉｒｅｃｔｅｄ  ｇｏａｌ）を有する学習指導を行うことができる。例えば、機械学習システム１０４は、トレーニング過程の正則化を更に良好に行うことができる。その理由は、ＢｉｔＮｅｔトレーニングがニューラルネットワーク重みに対する値の許容できる範囲に更に良好に案内することができるからである。それに対し、標準的な高精度手法は、重みに対して選択することができる値の範囲が非常に広く、したがって、適切な値に到達するためにトレーニング過程に更に長い時間を要することがある。一部の例において、機械学習システム１０４は、低い精度で始動し、迅速に解決に向かうためにビット精度を徐々に上げ、これによって、全体に亘るトレーニング時間が減少する。例えば、機械学習システム１０４は、先ず、λ１の値より高いλ２の値を用いた後にλ１の値に関連してλ２の値を徐々に減少させる。
【０２５７】
ＢｉｔＮｅｔ  ＤＮＮは、画像認識及び分類に対する二つのよく知られているベンチマーク、すなわち、ＭＮＩＳＴ及びＣＩＦＡＲ−１０において評価されてきた。説明のために、ＬｅＮｅｔ−５に基づく簡単なニューラルアーキテクチャが、多くのエポックに対するトレーニングを行うことなく用いられ、ＢｉｔＮｅｔ  ＤＮＮが従来の性能を与える必要がなかった。それどころか、強調すべきことは、対応する高精度実現、特に、本開示では“ＬｅＮｅｔ  ＥＰ３２”と称する３２ビットパラメータを有する同一のＣＮＮに対するＢｉＮｅｔ  ＤＮＮの比較である。同じ理由により前処理又はデータ拡大が行われなかった。（センタリングとしても知られている）バッチ正規化が、バッチ間の共変量シフトを回避するために入力に対して行われた。Ｔｈｅａｎｏに示された自動微分は、式（２２）及び（２３）に関連する勾配を計算するために用いられた。
【０２５８】
手書き数字のＭＮＩＳＴデータベースは、サイズが２８×２８である合計７００００のグレースケール画像を有する。各画像は、０，１，．．．，９のうちの一つの数字から構成される。データは、５００００のトレーニング、１００００のテスト及び１００００の検証例に分割される。数字は、サイズ正規化される（ｓｉｚｅ−ｎｏｒｍａｌｉｚｅｄ）とともに一定サイズの画像に集中される（ｃｅｎｔｅｒｅｄ  ｉｎ）。このトレーニングデータは、２５０画像のバッチに分割される。このデータベースのベースラインアーキテクチャは、二つの畳み込み層から構成され、その各々は、３０の５×５フィルタ及びそれに続く４×４プーリング並びに５０の５×５フィルタ及びそれに続く４×４プーリングから構成される。フィルタ処理された画像は、５００の隠れ部（すなわち人工ニューロン）の隠れ層及びそれに続く１０のラベルに亘るスコアを出力するためのソフトマックス層に供給された。
【０２５９】
ＣＩＦ  ＡＲ−１０データセットは、「猫」、「犬」、「飛行機」、「鳥」等のようなオブジェクトプロトタイプ（ｏｂｊｅｃｔ  ｐｒｏｔｏｔｙｐｅ）に対応する分類ごとに６０００画像を有する１０分類の６００００の３２×３２カラー画像から構成される。４００００画像がトレーニングに用いられ、１００００画像がテスト及び検証にそれぞれ用いられた。トレーニングデータは、２５０画像のバッチに分割された。このデータセットのベースラインアーキテクチャは、二つの畳み込み層から構成され、その各々は、３０の５×５フィルタ及びそれに続く４×４プーリング並びに５０の５×５フィルタ及びそれに続く４×４プーリングから構成される。フィルタ処理された画像は、５００の隠れ部（すなわち人工ニューロン）の隠れ層及びそれに続く１０のラベルに亘るスコアを出力するためのソフトマックス層に供給された。
【０２６０】
図６Ａ及び図６Ｂは、ＢｉＮｅｔ及びＬｅＮｅｔ−ＦＰ３２の例示的な性能を示す。すなわち、図６Ａ及び図６Ｂは、ＭＮＩＳＴデータセット及びＣＩＦＡＲ−１０データセットにおけるＬｅＮｅｔ−ＦＰ３２と比較したＢｉＮｅｔの性能を示す。図６Ａ及び図６Ｂの各々の左側のパネルは、トレーニング繰り返しに亘る検証誤り％を示し、図６Ａ及び図６Ｂの各々の右側のパネルは、トレーニング繰り返しに亘る負の対数尤度を示す。図６Ａ及び図６Ｂにおいて、最終的な検証誤りを括弧内に示す。さらに、図６Ａ及び図６Ｂにおいて、学習率μは、ＭＮＩＳＴに対して２５０の繰り返しであるとともにＣＩＦＡＲ−１０に対して２００の繰り返しである各エポックの後に半分になる。
【０２６１】
図６Ａ及び図６Ｂに示すように、ＢｉＮｅｔにおける正則化によって、著しく高速な学習となる。図６Ａ及び図６Ｂの左側のパネルにおいて、ＢｉＮｅｔの検証誤りは、ＬｅＮｅｔ−ＦＰ３２より急速に減少する。１００エポック後の結果的に得られるＢｉＮｅｔの検証誤りは、ＬｅＮｅｔ−ＦＰ３２より２％低くなる。同様に、ＢｉｔＮｅｔは、テストセットにおいて５．２５％の誤りとなり、それに対し、ＬｅＮｅｔ−ＦＰ３２は、７．３％の誤りとなる。所定の性能に対して、ＢｉＮｅｔは、ベースラインの大体半分の数の繰り返しを要する。図６Ａ及び図６Ｂの右側のパネルは、ＢｉＮｅｔに対する高精度パラメータに関するトレーニングエラーがＬｅＮｅｔ−ＦＰ３２より迅速に減少することを示し、それは、低い検証誤りが量子化のみによって生じないことを示す。優れた性能に加えて、ＢｉＮｅｔは、ＬｅＮｅｔ−ＦＰ３２に関する５．３３×圧縮に対応する層ごとの平均６ビットしか用いない。
【０２６２】
図７は、ＣＮＮの各層のパラメータを表すのに用いられるビット数を示す。すなわち、図７は、トレーニングの繰り返しに亘るビット数の変化を示す。ビット数が最初の５エポック内に集中することがわかる。ビットに関する勾配が急速に０になることもわかる。
【０２６３】
一つの実験において、式（２０）のハイパーパラメータ（すなわち、λ１及びλ２）の影響を示す。この実験において、各ＣＮＮは、３０エポックのみに対してトレーニングされる。図８Ａ及び図８Ｂは、ＭＮＩＳＴデータ及びＣＩＦＡＲ−１０データに対する性能及び圧縮の影響をそれぞれ示す。換言すれば、図８Ａ及び図８Ｂは、ＭＮＩＳＴデータセット及びＣＩＦＡＲ−１０データセットに対するＢｉＮｅｔのハイパーパラメータのテストエラー及び圧縮率の感度をそれぞれ示す。図８Ａ及び図８Ｂに関して、圧縮率を、ＢｉＮｅｔによって用いられる総ビット数に対するＬｅＮｅｔ−ＦＰ３２によって用いられる総ビット数（＝３２×４）の比として規定する。両方のデータセットにおいて、一方では、λ２＝０及びλ１＝１であるとき、ＢｉＮｅｔは、パラメータ値の範囲の間で均一に離間した３２ビットを用い、式（１１）の線形変換を維持する範囲が３２ビットを用いるＬｅＮｅｔ−ＦＰ３２より著しく良好なテストエラーとなることが分かり、それは、非線形的であるとともに範囲に影響されにくい。ＭＮＩＳＴに対して、図８Ａの左側のパネルにおいて、λ２＝０及びλ１＝１であるとともに３２ビットを用いるＢｉＮｅｔは、ＬｅＮｅｔ−ＦＰ３２の１９．９５％のエラーに対して１１．１８％のテストエラーとなり、λ１＝１０−７及びλ２＝１０−３の最適な設定でＢｉＮｅｔは１１％のエラーとなる。図８Ｂに示すように、同じ見解がＣＩＦＡＲ−１０データセットにも当てはまる。
【０２６４】
それに対し、λ１＝０及びλ２＝１であるとき、ＢｉＮｅｔは、層ごとに２ビットしか用いず、ＮＭＩＳＴにおいて１３．０９％のテストエラーであり、１６×圧縮と引き換えに小さい悪化がある。この手法は、パラメータのビット幅を制限する際にある程度の柔軟性を提供し、以前の研究のバイナリネットワーク又はターナリネットワーク（ｂｉｎａｒｙ  ｏｒ  ｔｅｒｎａｒｙ  ｎｅｔｗｏｒｋｓ）に到達する代替的な方法を与える。
【０２６５】
一定値のλ１に対して、λ２の値を増加させることによって、ビット数が減少し、圧縮が更に大きくなり、かつ、性能がわずかに低下する。一定値のλ２に対して、λ１の値を増加させることによって、ビット数が増加するとともに圧縮が小さくなる。テストエラーに対する圧縮率の変動は著しく大きくなる。実際には、テストした設定のほとんどは同様なテストエラーとなったが層ごとのビット数が非常に異なる。最適な設定は、圧縮と精度の両方が最大となるようなグリッド検索によって見つけられた。ＭＮＩＳＴ及びＣＩＦＡＲ−１０において、これは、λ１＝１０−７及びλ２＝１０−３である。
【０２６６】
一つの実験において、更に多くの層をＣＮＮに追加するとともに性能及び圧縮に対するビット正則化の影響を評価した。ＤＮＮをトレーニングする際に二つの主要な困難がある。先ず、多くのパラメータは、データ量及びトレーニング時間の増大を必要とする。ベリーディープニューラルネットワーク（ｖｅｒｙ  ｄｅｅｐ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋｓ）の第２の問題は、層の増加に伴うテストエラーの増加によって見ることができるトレーニングデータに対する過剰適合である。ビット正則化が過剰適合なくディープネットワークをトレーニングするのを助けることを示す。追加することができるあり得るアーキテクチャ及び層のスペースは、処理しにくいものである。性能が向上するように徐々に追加することができる層の配列のサンプルを示す。これらの層を、知識及び一部の実験を用いて手作業で選択した。
【０２６７】
表１は、３０エポックの終了時のＭＮＩＳＴに対する結果を示す。
【０２６８】
【表１】
2019164793.tif 000087
【０２６９】
表１は、ニューラルアーキテクチャの複雑さの増大に伴うＭＮＩＳＴの３０エポックの終了時のＢｉＮｅｔの性能及びＣＩＦＡＲ−１０の１００エポックの終了時のＢｉＮｅｔの性能を示す。表１の第１列（＃）は、層の総数を表す。テストエラーをテストセット（すなわち、トレーニング中にＤＮＮ１０６によって見られなかったデータ）において評価し、エラーの評価基準（ｅｒｒｏｒ  ｍｅａｓｕｒｅ）は、不正確な回答の割合である。圧縮率（Ｃｏｍｐｒ．Ｒａｔｉｏ）は、ＢｉＮｅｔによって用いられる平均ビット数に対する割合である。圧縮率の右側の列は、最終ＢｉＮｅｔモデルのアーキテクチャ及びビット数を特定する。各表において、最終行は、全アーキテクチャを含み、左から右に読まれる列は、ニューラルアーキテクチャである。最終行の上の行において、これらの層の一部を、更に小さいＤＮＮをトレーニングするために省略する。ヘッド部（ｈｅａｄｓ）は、Ｐ−Ｑ−Ｒのフォーマットを有し、Ｐは、畳み込みフィルタの数であり、Ｑは、各フィルタのサイズであり、Ｒは、フィルタ処理後に行われる最大プーリングのサイズである。緻密層（すなわち、完全接続層）の場合、ニューロンの数を意味する。折り畳み層の列の最初は、フィルタの数、空間領域及びプーリングサイズを特定する。ここでは、λ１＝１０−７及びλ２＝１０−４である。
【０２７０】
最初に、ＢｉＮｅｔを４層から始め、その性能を以前のセクションで示した。先ず、テストエラーが過剰適合の兆候なく徐々に減少することが観察される。次に、ビット数及び圧縮率がアーキテクチャによって著しく影響が及ぼされないとともにデータ及びハイパーパラメータの強関数（ｓｔｒｏｎｇ  ｆｕｎｃｔｉｏｎ）に見えることが観察される。次に、テストエラーが追加の畳み込み層及び緻密層によって減少することが観察される。（グローバルスケーリング（ｇｌｏｂａｌ  ｓｃａｌｉｎｇ）に対応する）１×１フィルタの追加によって、緻密層の追加に対してパラメータの数を増加させなくしながらテストエラーを減少させることができる。
【０２７１】
ＣＩＦＡＲ−１０データセットに対する同様の比較を、トレーニングの１００エポック後の表１に示す。過剰適合の兆候がない。その理由は、各実験においてトレーニングとテストエラーの両方が減少するからである。アーキテクチャが更に複雑になるので、性能の少しの低下がみられ、それは、パラメータの総数及び一定の１００エポックに対するトレーニングの減少のせいである。以前の実験におけるように、圧縮率がアーキテクチャによって著しく影響が及ぼされないことがわかる。ＣＩＦＡＲ−１０に対する従来の結果が存在しない。しかしながら、ＢｉＮｅｔは、いつでも性能に集中する、すなわち、これらの実験の各々は、従来の結果に対する約２０時間に対して約１時間行われる。
【０２７２】
一つの実験において、ＢｉＮｅｔの加速学習（ａｃｃｅｌｅｒａｔｅｄ  ｌｅａｒｎｉｎｇ）の性質は、学習率に間接的に関連する。このために、線形ペナルティ（ｌｉｎｅａｒ  ｐｅｎａｌｔｙ）が、式（２０）の指数ペナルティ（第３の項）の代わりにビット数に対して用いられる。図９は、ＭＮＩＳＴデータセットにおけるＢｉｔＮｅｔの性能の例を示す。特に、図９は、ミニバッチに亘るＬｅＮｅｔ−ＦＰ３２と比較したＢｉｔＮｅｔの繰り返しに対する検証誤り率を示す。最終的な検証誤りを図９の括弧内に示す。図９の例において、学習率μは、各エポックの後に０．１が乗算される。図９の左側のパネルは、ＢｉＮｅｔが指数ペナルティを用いるのと同様の高速学習を示していることを示す。図９の右側のパネルは、学習率が上がったときにベースラインＬｅＮｅｔ−ＦＰ３２もＢｉＮｅｔと同様な率で学習することができることを示す。この点を図１０に更に示し、この場合、λ２の種々の値について、線形的なビット数に対する係数は、学習率と直接的な関係を示す。図１０は、ＭＮＩＳＴデータセット及びＣＩＦＡＲ−１０データセットに対する線形的なビットペナルティの種々の係数におけるＢｉｔＮｅｔの例示的な性能を示す。特に、図１０の右側のパネルは、λ２の値が大きくなるに従って不安定になるとともに性能が低下し、それに対し、λ２の値が小さくなるに従って学習曲線が円滑になる。
【０２７３】
しかしながら、ＬｅＮｅｔ−ＦＰ３２のＣＮＮの全てのパラメータに対して全体的に学習率を上げることは、ＢｉＮｅｔにおけるような各パラメータによって取得される適合率のような安定性はない。さらに、学習は、学習率が更に上がる場合に特に変動する。これは、低精度トレーニング、運動量、又は、「静的（ｓｔａｔｉｃ）」学習率の問題にも対処するＡｄａＧｒａｄのような洗練された勾配降下アルゴリズムの間の関心のある関連を確立する。ＡｄａＧｒａｄは、Ｄｕｃｈｉ等の”Ａｄａｐｔｉｖｅ  Ｓｕｂｇｒａｄｉｅｎｔ  Ｍｅｔｈｏｄｓ  ｆｏｒ  Ｏｎｌｉｎｅ  Ｌｅａｒｉｎｇ  ａｎｄ  Ｓｔｏｃｈａｓｔｉｃ  Ｏｐｔｉｍｉｚａｔｉｏｎ“，Ｊｏｕｒｎａｌ  ｏｆ  Ｍａｃｈｉｎｅ  Ｌｅａｒｎｉｎｇ  ｒｅｓｅａｒｃｈ，ｐａｇｅｓ  ２１２１−２１５９，１２  Ｊｕｌｙ  ２０１１に記載されている。代替的には、雑音のある勾配を有するトレーニングとしてＢｉＮｅｔを評価することができ、雑音の確率分布がほとんどない安定した学習を促すための手法を示す。ＢｉｔＮｅｔの勾配に組み込まれる雑音は、Ｗ及びｂによって決定される均一に離間した中心を有するガウス分布の互いに素な集合に類似し、その数は、ｂとＷの値の範囲の分散とによって決定される。
【０２７４】
実在のアプリケーションへのディープニューラルネットワークの配置は、計算の要求及び記憶の要求によって著しく制限される。要約すると、本開示は、対象の装置で利用できる総ビット数の間接的な仕様が与えられたコンパクトなＤＮＮをトレーニングする柔軟ツールを記載する。本開示は、従来の分類損失関数の正則化のような制約を組み込む公式化を提供する。この公式化は、パラメータがとることができる値の範囲及びセットを動的に量子化することによってネットワークの表現力を制御することに基づく。ここで説明する実験は、同等の正則化されていないネットワークよりもトレーニング及びテストエラーに関して優れた学習を示した。我々の手法のロバストネスは、ニューラルネットワークの深度の増大及び種々のハイパーパラメータと共に示された。我々の実験は、ＢｉＮｅｔが全体的な学習率との間接的な関係を有してもよいことを示した。ＢｉＮｅｔを、ビット数に依存するパラメータごとの動的な学習率を有するものと解釈することができる。その意味では、ビット正則化は、ＡｄａＧｒａｄのような動的な学習率スケジューラに関連する。一部の例において、機械学習システム１０４は、高精度微調整と組み合わされた高速初期学習（ｆａｓｔ  ｉｎｉｔｉａｌ  ｌｅａｒｎｉｎｇ）を活用するための制約に対するアニール（ａｎｎｅａｌ）を行ってもよい。その意味では、ＢｉＮｅｔを、トレーニングデータ及びシステムアーキテクチャの表現を学習するための同時最適化を有するものと解釈することができる。
【０２７５】
本開示の以前のセクションは、ビット精度がトレーニング手順のパラメータの一部となるようにＤＮＮをトレーニングする方法を説明した。換言すれば、本開示の以前のセクションは、トレーニング段階の一部としてのビット精度の最適化を説明した。結果的に得られるＤＮＮは、種々のＤＮＮ層に対して種々のビット精度を有してもよい。利益は、小さいメモリ実装面積、高速学習及び潜在的に高いアルゴリズム性能を含んでもよい。
【０２７６】
本開示の次のセクションは、処理の実施の形態に関連する追加の詳細並びにトレーニング及び推論との関係を提示する。特に、本開示は、（１）ＤＮＮ組立のＢｉＮｅｔ選択内でシステムアーキテクチャパラメータを用いる方法と、（２）トレーニングされたＤＮＮに対する処理を分散させるためにシステムアーキテクチャパラメータを用いる方法と、を説明する。
【０２７７】
本開示は、一つ以上のＤＮＮをトレーニングする及び／又は一つ以上のＤＮＮを推論モード中に実行するための処理ハードウェア（及び関連のソフトウェアスタック）のセットを意味する用語「システムアーキテクチャ」を用いる。一部の例において、処理ハードウェアは、物理的なハードウェアのように作動する仮想マシンを含んでもよい。一部の例において、システムアーキテクチャは、ＢｉＮｅｔ  ＤＮＮのトレーニングをサポートする一つ以上のプロセッサ（例えば、ＣＰＵ，ＧＰＵ，ＦＰＡＧ，ＤＳＰ又はその仮想表現）を備える。一部の例において、同一のシステムアーキテクチャを、トレーニングされたＤＮＮを推論モード中に実行するのに用いることができる。一部の例において、代替的なシステムアーキテクチャを用いることができる。例えば、一つ以上のＢｉＮｅｔ  ＤＮＮを、第１のシステムアーキテクチャ（例えば、クラウドコンピューティングシステム）でトレーニングした後に推論モードにおいて第２の異なるシステムアーキテクチャ（例えば、携帯装置）で用いてもよい。本開示は、一つ以上のＤＮＮからなるシステム及びこれらのＤＮＮの構成を意味する用語「ニューラルネットワークソフトウェアアーキテクチャ」を用いる。例えば、ニューラルネットワークソフトウェアアーキテクチャは、互いに作用することができる複数の個別のＤＮＮを有してもよい。上述した技術に加えて、本開示は、システムアーキテクチャ入力がＤＮＮモデルの構成を選択するのに用いられるＤＮＮトレーニングの方法に関連した技術を説明する。本開示の追加の技術は、ＤＮＮ処理（トレーニングと推論の両方）をシステムアーキテクチャのプロセッサの間で分散させる方法を有する。
【０２７８】
図１１は、各々がＤＮＮである層の階層から構成される例示的なニューラルネットワークソフトウェアアーキテクチャである。すなわち、図１１は、ニューラルネットワークの階層から構成される例示的なニューラルネットワークソフトウェアアーキテクチャを示す。図１１の例において、ニューラルネットワークソフトウェアアーキテクチャ１１００に対するセンサ入力は、映像データ、音声データ及び深度マップである。ニューラルネットワークソフトウェアアーキテクチャ１１００の出力は、映像、音声及び深度マップの分析から検出した活動の分類である。一例において、ニューラルネットワークソフトウェアアーキテクチャ１１００の応用を、人間のジェスチャー認識とすることができる。人間の開発者又はコンピュータシステムは、ニューラルネットワークソフトウェアアーキテクチャ１１００を選択してもよい。
【０２７９】
さらに、図１１の例において、８ビットＣＮＮ１１０２は、映像データに対して選択される。本例において、ＣＮＮ１１０２の高精度重みはそれぞれ８ビットである。ＣＮＮ１１０２のトレーニング中、ＣＮＮ１１０２の精度が最適化された重みを、８未満のビット精度を有するように更新してもよい。３２ビットＬＳＴＭ（長短期記憶ニューラルネットワーク）１１０６が続く４ビットＣＮＮ１１０４は、音声データに対して選択される。本例において、ＣＮＮ１１０４の高精度重みはそれぞれ４ビットであり、ＬＳＴＭ１１０６の高精度重みはそれぞれ３２ビットである。ＣＮＮ１１０４及びＬＳＴＭ１１０６のトレーニング中、ＣＮＮ１１０４及びＬＳＴＭ１１０６の精度が最適化された重みをそれぞれ、４未満のビット精度及び３２未満のビット精度を有するように更新してもよい。１ビットＢＮＮ１１０８は、深度マップに対して選択される。図１１の例において、ＣＮＮ１１０２、ＬＳＴＭ１１０６及びＢＮＮ１１０８によって生成される三つのストリームは、活動分類出力を生成するために８ビットＭＬＰ（多層パーセプトロン）１１１０に供給される。ＭＬＰ１１１０の高精度重みはそれぞれ８ビットである。ＭＬＰ１１１０のトレーニング中、ＭＬＰ１１１０の精度が最適化された重みを、８未満のビット精度を有するように更新してもよい。
【０２８０】
映像データは、互いに異なる色平面（ｃｏｌｏｒ  ｐｌａｎｅ）（赤、緑、青）を有する２次元画像を備えてもよく、典型的には画素ごとに８ビットである。音声データは、１次元ストリームを備えてもよく、典型的にはサンプルごとに１６ビットである。音声処理は、（例えば、ＣＮＮ１１０４による）特徴抽出及び（例えば、ＬＳＴＭ１１０６による）その後の音声分析を有することができる。深度マップは、センサ（例えば、カメラ）からの距離を表す画素値を有する２次元マスクを備えてもよい。
【０２８１】
図１２は、プロセッサの異種のセットを備える例示的なシステムアーキテクチャ１２００である。図１２の例において、プロセッサは、ＣＰＵ１２０２、ＧＰＵ１２０４、ＧＰＵ１２０６、ＦＰＧＡ１２０８及びＤＳＰ１２１０を有する。各プロセッサは、互いに異なるビット精度サポートを有する。例示的なサポートされたビット精度は、８ビット及び１ビット精度（整数）並びに３２ビット及び６４ビット（浮動小数点）を有してもよい。互いに異なるプロセッサハードウェアは、種々のサイズ、重量及び電力（ＳＷａＰ）提供（ｏｆｆｅｒｉｎｇ）をサポートするために（例えば、種々のレベルの並列処理及びメモリの統合（ｏｒｇａｎｉｚａｔｉｏｎ  ｏｆ  ｍｅｍｏｒｙ）を伴う）ＤＮＮ計算を異なるように処理することができる。プロセッサをネットワークに接続してもよい。図１２の例において、各ネットワーク接続は、互いに異なる処理能力（ｂａｎｄｗｉｄｔｈ  ａｖａｉｌａｂｉｌｉｔｙ）、例えば、１０Ｍｂｐｓ、１００Ｍｂｐｓ及び１０Ｇｂｐｓを有する。図１２の例において、トラフィックを管理するがＤＮＮについての計算を行わないルータ１２１２が存在する。ネットワークの帯域幅の利用可の正は、プロセッサ間の通信制限を設定し、したがって、ＤＮＮをトレーニングするとともに推論中に処理する方法に影響を及ぼすことがある。
【０２８２】
本開示は、システムアーキテクチャ能力に基づいてビット精度を選択する技術を記載する。本開示は、この技術を説明するために図１１の例及び図１２の例を用いる。分析する必要があるセンサデータタイプが与えられた場合、機械学習システム１０４は、先ず、ニューラルネットワークソフトウェアアーキテクチャ１１００が推論モードで動作する必要があるシステムアーキテクチャを検査してもよい。例えば、機械学習システム１０４は、１ビットＢＮＮに対する最適なプロセッサがＦＰＧＡであることを決定してもよい。その理由は、ＦＰＧＡが二項演算をサポートすることができる細粒度プログラマブルユニット（ｆｉｎｅ  ｇｒａｉｎ  ｐｒｏｇｒａｍｍａｂｌｅ  ｕｎｉｔｓ）を有するからである。それに対し、ＬＳＴＭは、時系列分析のために更に高い精度を要求してもよい。機械学習システム１０４は、ＤＮＮの種々の層の間の通信をサポートするのに必要なネットワーク回線容量を考察してもよい。例えば、映像処理は、音声処理より多い通信回線容量を必要とする。システムアーキテクチャパラメータの他の例は、メモリ実装面積を有してもよい（例えば、１ビットＢＮＮは、８ビットＣＮＮより少ないメモリ要求を有する。）。
【０２８３】
システムアーキテクチャパラメータは、ニューラルネットワークソフトウェアアーキテクチャをシステムアーキテクチャの適切なプロセッサにマッピングするために用いられる。例えば、コンピュータシステム１００（図１）の機械学習システム１０４は、ニューラルネットワークソフトウェアアーキテクチャをシステムアーキテクチャの適切なプロセッサにマッピングする。機械学習システム１０４は、最適なマッピングを選択するためにコスト関数を用いてもよい（すなわち、ベストフィット方式を用いることができる。）。コスト関数を、サイズ、重量、電力及びコスト（ＳＷａＰＣ）のうちの一つとすることができる。例えば、８ビットＣＮＮの選択の場合、機械学習システム１０４は、低システム（ｌｏｗｅｒ  ｓｙｓｔｅｍ）を提供するマッピングを選択するコスト関数を用いてもよい。例えば、機械学習システム１０４は、ハードウェアアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアアーキテクチャの種々の潜在的なマッピングを評価してもよい。機械学習システム１０４は、ハードウェアアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアアーキテクチャのマッピングを選択するためにマッピングコスト関数を用いてもよい。
【０２８４】
図１２は、システムアーキテクチャに対するニューラルネットワークソフトウェアアーキテクチャの例示的なマッピングを示す。さらに詳しくは、機械学習システム１０４は、図１１の８ビットＣＮＮ１１０２を図１２のビット浮動小数点ＧＰＵ１２０６にマッピングしてもよい。同一の８ビットＣＮＮは、ＦＰＧＡにマッピングされる場合、更に大きい計算リソース（例えば、浮動小数点計算をサポートするためのメモリ及びＦＰＧＡファブリックの更に多い使用）を負担することがある。さらに、図１２の例において、機械学習システム１０４は、１ビットＢＮＮ１１０８を１ビットＦＰＧＡ１２０８にマッピングし、８ビットＭＬＰ１１１０を１６ビットＣＰＵ１２０２にマッピングし、３２ビットＬＳＴＭ１１０６を６４ビット浮動小数点ＧＰＵ１２０４にマッピングし、４ビットＣＮＮ１１０４を８ビットＤＳＰ１２１０にマッピングしてもよい。機械学習システム１０４がＤＮＮをプロセッサにマッピングした後、プロセッサは、ＤＮＮを実行してもよい。例えば、図１２の例において、ＧＰＵ１２０６は、ＣＮＮ１１０２を実行してもよい。
【０２８５】
本開示の一態様は、ＢｉＮｅｔトレーニング方法のためのものである。例えば、一部の例において、システムアーキテクチャパラメータは、適切なニューラルネットワークソフトウェアアーキテクチャ及びハードウェアアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアのＤＮＮのマッピングを選択するためのＢｉＮｅｔ  ＤＮＮ（例えば、ＤＮＮ１０６（図１））に対する入力としての役割を果たす。例えば、ＤＮＮ１０６は、ハードウェアアーキテクチャの記述及びニューラルネットワークソフトウェアアーキテクチャが解決のために配置される問題の記述を受け取るＢｉＮｅｔ  ＤＮＮであってもよい。本例において、ＤＮＮ１０６の出力は、ニューラルネットワークソフトウェアアーキテクチャが解決のために配置される問題及びハードウェアアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアアーキテクチャのＤＮＮのマッピングに対する適切なニューラルネットワークソフトウェアアーキテクチャであってもよい。本例において、ＤＮＮ１０６を、ハードウェアアーキテクチャの既存の例及び問題記述の既存の例を用いてトレーニングしてもよい。
【０２８６】
さらに、マルチビット精度を対象とするためのＢｉＮｅｔ  ＤＮＮの能力は、利用できるハードウェアリソースに対する有効なマッピングを可能にするとともにプロセッサの異種のセットに対して特に有用である。換言すれば、重みを更に多いビット又は更に少ないビットを用いて表すようにＤＮＮをトレーニングすることができるので、機械学習システム１０４は、同一のＢｉＮｅｔ  ＤＮＮの種々のバージョンが種々のビット深度を有するように同一の入力データに基づいて同一のＢｉＮｅｔ  ＤＮＮの複数のバージョンをトレーニングできるようにしてもよい。
【０２８７】
このセクションで説明するコスト関数を、潜在的に最適なＤＮＮアルゴリズム性能を見つけるためにＢｉＮｅｔトレーニングアルゴリズムに統合することができる。例えば、機械学習システム１０４は、次の式（３３）に示すように、式（２０）の変形バージョンを用いてもよい。
【０２８８】
【数８５】
2019164793.tif 000088
【０２８９】
式（３３）の例において、Ｐは、ハードウェアアーキテクチャのハードウェアパラメータのセットを表し、ｒ（ｂ，Ｐ）は、ＢｉＮｅｔ  ＤＮＮの精度が最適化されたビット深度ｂ及びハードウェアパラメータのセットＰをパラメータとしてとるここではリソース関数と称する関数である。一部の例において、リソース関数ｒは、ＢｉＮｅｔ  ＤＮＮの任意の層の精度が最適化されたビット深度がハードウェアパラメータのセットＰによって表された制限を超えるときに大きい値を生成する。例えば、リソース関数ｒは、ＢｉＮｅｔ  ＤＮＮの各層のビット深度が制限より下である場合に０の値を生成するとともにＢｉＮｅｔ  ＤＮＮの任意の層のビット深度が制限より上である場合に１の値を生成する段階関数であってもよい。他の例において、リソース関数ｒは、精度が最適化されたビット深度が制限を超える程度が大きくなるに従って段階的に大きくなる値を生成してもよい。一部の例において、制限は、メモリ要求である。例えば、一例において、制限は、精度が最適化された重みｂの記憶に要求されるメモリの総量としてもよい（例えば、ｂの記憶に要求されるメモリの総量を３２キロバイト未満にする必要がある。）。他の例において、制限は、ＢｉＮｅｔ  ＤＮＮの単一の層の精度が最適化された重みの記憶に用いることができるｂの記憶に必要なメモリの総量であってもよい（例えば、層は、４ビットより多い精度が最適化された重みを有することができない。）。他の例において、リソース関数ｒは、重みが読み出し境界に整合したか否かに基づいて値を返してもよい。例えば、単一のメモリ読出し動作が８ビットを返す場合、９ビットの重みを返すために２回の読出し動作を必要とする。本例において、リソース関数ｒは、精度が最適化された重みが読み出し境界に整合した場合にローの値を返す。したがって、本例において、プライオリティは、読出し動作の回数を最小にすることであり、したがって、読出し動作に関連する潜在的なエネルギー消費及び遅延を減少させることにある。
【０２９０】
他の例において、機械学習システム１０４は、次の式（３４）で表される損失関数を用いてもよい。
【０２９１】
【数８６】
2019164793.tif 000089
【０２９２】
式（３４）において、λ３は、第３のハイパーパラメータであり、ｒ（ｂ，Ｐ）を上述したように規定してもよい。式（３４）の損失関数は、ビット深度をハードウェアパラメータｐから切り離して考慮できるようにしてもよい。他の例において、損失関数は、追加のハイパーパラメータに関連する一つ以上の追加の係数並びにｂ及び種々のハードウェア係数に基づく追加の関数を有してもよい。このようにして、損失関数は、ＢｉＮｅｔ  ＤＮＮをトレーニングするときに種々のハードウェアパラメータを考慮できるようにしてもよい。したがって、一部の例において、ここでの技術によって、機械学習システム１０４は、図１２のプロセッサ及び通信リンクのようなハードウェアリソースのセットが与えられた場合の最適なＤＮＮ性能を見つけることができる。トレーニング段階中の計算を、選択したビット精度をサポートする適切なハードウェアにおいてテストする際に適切なハードウェアに同様にマッピングすることもできる。
【０２９３】
ここで説明する技術は、プロセッサ内のハードウェアリソースに適用可能であってもよい。例えば、複数のプロセッサコア、ハードウェアアクセラレータ及びリコンフィギャブルファブリック（ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  ｆａｂｒｉｃ）を有するシステムオンチップ（ＳｏＣ）において、技術を、ニューラルネットワークソフトウェアアーキテクチャをＳｏＣリソースにマッピングするシステムアーキテクチャパラメータ（この場合、システムアーキテクチャパラメータは、ＳｏＣに関連する。）を用いて同様に用いることができる。他の例において、システムアーキテクチャがＦＰＧＡのバンクを備える又はＦＰＧＡのバンクから構成される場合、機械学習システム１０４は、利用できるハードウェアに基づいて最高及び最適のＤＮＮ性能を取得する（例えば、ＦＰＧＡルックアップテーブル（ＬＵＴ）及びメモリを割り当てる）適切なＦＰＧＡリソースを選択するためにＤＮＮ１０６を用いてもよい。
【０２９４】
上述したように、図１２は、システムアーキテクチャリソースに対するニューラルネットワークソフトウェアアーキテクチャの例示的なマッピングを示す。以前に、本開示は、リソース要求を管理及び予測することができるＡＩシステムを説明した。換言すれば、ＡＩシステムは、ニューラルネットワークソフトウェアアーキテクチャのどの部分が所定のシステムアーキテクチャで利用できるプロセッサで最も有効に実行されるかを決定することによってリソース要求を予測してもよい。例えば、エンジニア又はコンピュータシステムは、複数の互いに異なる状況を識別してもよい。一部の例において、互いに異なる状況は、互いに異なるシステムアーキテクチャであってもよい。一部の例において、互いに異なる状況は、利用できる帯域幅、利用できる残りの電池寿命、残りの割当て可能なメモリ領域、プロセッサ作業負荷等のようなパラメータの違いを有するプロセッサの同一セットを含んでもよい。本例において、機械学習システム１０４は、互いに異なる状況に基づいて本開示の技術を用いて同一のニューラルネットワークソフトウェアアーキテクチャの複数のバージョンをトレーニングしてもよい。したがって、ニューラルネットワークソフトウェアアーキテクチャの各バージョンを、互いに異なる予測される状況で用いるのに合わせてもよい。
【０２９５】
図１２を参照すると、ハードウェアリソースの一つが利用できなくなる（例えば、電力消失、ネットワーク接続消失等）場合、ＢｉＮｅｔトレーニング方法は、システムアーキテクチャパラメータの新たなセットに対するニューラルネットワークソフトウェアアーキテクチャのマッピングを引き起こさせることができる。特に、新たなマッピングは、新たなシステムアーキテクチャ（例えば、図１２のプロセッサのサブセット）に対するニューラルネットワークソフトウェアアーキテクチャ（例えば、図１１のニューラルネットワークソフトウェアアーキテクチャ１１００）で行われる。例えば、図１２の例において、ＧＰＵ１２０６が利用できなくなった場合、マッピングモジュール１２２は、システムアーキテクチャ１２００（すなわち、ハードウェアアーキテクチャ）の残りのプロセッサに、ＧＰＵ１２０６が利用できない状況で用いるのに合わせられたニューラルネットワークソフトウェアアーキテクチャ１１００のバージョンを配置してもよい。例えば、ＧＰＵ１２０６が利用できない状況で用いるのに合わせたニューラルネットワークソフトウェアアーキテクチャ１１００のバージョンにおいて、ＣＮＮ１１０２及びＬＳＴＭ１１０６の両方をＧＰＵ１２０４にマッピングしてもよい。ここでの一態様は、ＢｉＮｅｔトレーニングとシステムアーキテクチャパラメータの動的なセットとの組合せである。ここでの一態様は、ＢｉｔＮｅｔのコスト関数がシステムアーキテクチャパラメータの動的なセット（例えば、損失関数）に基づいてもよい。本例において、コスト関数は、式（３４）で既に説明した損失関数であってもよく、この場合、λ１及びλ２は、ハードウェアアーキテクチャ１２００のサイズ、重量、電力及びコスト（ＳＷａＰＣ）のうちの一つを最適化することに基づいて設定される。
【０２９６】
他の例において、ＢｉｔＮｅｔトレーニングを、典型的な設定のセットに対する複数のニューラルネットワークソフトウェアアーキテクチャに到達するのに用いることができる。例えば、図１２を参照すると、ルータ１２１２は、（例えば、ネットワークの混雑が存在するときの互いに異なる期間中の）帯域幅の周期的な減少を有する。ＢｉｔＮｅｔは、トレーニング中に二つのニューラルネットワークソフトウェアアーキテクチャ（ルータ１２１２を用いてＤＮＮをシステムにマッピングするニューラルネットワークソフトウェアアーキテクチャ及びルータ１２１２を用いることなくＤＮＮをシステムにマッピングするニューラルネットワークソフトウェアアーキテクチャ）を生成してもよい。したがって、このプロセスは、複数の静的にコンパイルしたプログラムを動的な条件に基づいて実行時に選択することができるファットバイナリに類似する。我々のケースにおいて、ＢｉＮｅｔ  ＤＮＮは、利用できるハードウェアに適切なニューラルネットワークソフトウェアアーキテクチャを選択する。換言すれば、ＤＮＮ１０６は、複数の以前に準備したニューラルネットワークソフトウェアアーキテクチャの中から適切な以前に準備したニューラルネットワークソフトウェアアーキテクチャを選択してもよい。以前に準備したニューラルネットワークソフトウェアアーキテクチャの各ＤＮＮは、既にトレーニングされている。
【０２９７】
機械学習システム１０４に関して、制限をアニールするステップにおいて、選択される重みは、ＤＮＮ性能及びハードウェアリソースの同時最適化に基づいて選択される。損失関数選択に関して、式（３４）のλパラメータ（λ１、λ２及びλ３）は、ハードウェアパラメータＰに基づき、本開示は、アニーリング制約の選択に影響を及ぼすためのトレーニング段階中に更新してもよいハードウェアパラメータＰを説明する。トレーニング中のハードウェアパラメータＰの選択は、例えば、サイズ、重量及び電力に関するハードウェアリソースのパレート最適選択を可能にする。ハードウェアパラメータの動的な選択におけるそのような手法は、機械学習性能及びハードウェアリソースの同時最適化として損失関数を用いる設計者の設計トレードオフ方法としての機能を果たす。本開示は、式（３４）及びｒ（ｂ，Ｐ）に関するビット精度とハードウェアパラメータの間の対応を用いる損失関数を記載する。対応が同時最適化を可能にするためのハードウェアパラメータに対する機械学習ハイパーパラメータ（例えば、精度、学習率、ＤＮＮ深度、融合層（ｆｕｓｉｏｎ  ｌａｙｅｒ）、活性化、学習アルゴリズム）の同様なマッピングになることができることを理解すべきである。対応がＤＮＮトレーニングに影響を及ぼす他の物理的な制約（例えば、環境バイアス、データバイアス（ｅｎｖｉｒｏｎｍｅｎｔａｌ，ｄａｔａ  ｂｉａｓｅｓ）に対する機械学習パラメータの他の同様なマッピングになることも理解すべきであり、この場合、同時最適化を、式（３４）と同様にして行うことができる。
【０２９８】
このセクションにおいて、本開示は、衛星搭載アプリケーションの例を記載する。本例は、衛星搭載アプリケーションを用いる。その理由は、利用できるＳＷａＰ及び通信帯域幅に厳格な制限があるからである。キューブサットのような小型衛星は、１０×１０×１０ｃｍ及び１．３３Ｋｇの重量しか有さない。キューブサットは、典型的には、各々がセンサの互いに異なるセットを有する分散した群れとして動作する。地上局に対する及びキューブサットの間の制限された電力量及び制限された通信帯域幅も存在する。図１２を参照すると、機械学習システム１０４（図１）は、ニューラルネットワークソフトウェアアーキテクチャをキューブサットの群れにマッピングしてもよい。ＢｉＮｅｔ  ＤＮＮを、ＤＮＮ推論計算をキューブサットの間で分散させるとともにマッピングするために用いてもよい。本例において、通信リンクがキューブサットのサブセットとともに消失した場合、ＢｉＮｅｔ  ＤＮＮを、再トレーニングを行うとともに現在利用できるキューブサットハードウェアに対するＤＮＮ計算を分散させるために用いることができる。ここでの一態様は、ＢｉＮｅｔ  ＤＮＮ（例えば、ＤＮＮ１０６）が計算の分散及びニューラルネットワークソフトウェアアーキテクチャの選択を同時に行ってもよいものである。ＢｉＮｅｔ  ＤＮＮが特定のビット精度を対象とすることができるので、ＢｉＮｅｔ  ＤＮＮは、他のＤＮＮをシステムリソースに最適にマッピングすることができる。システムリソースのセットを変更することによって、ＤＮＮ１０６は、利用できるハードウェアに適合させるために種々のニューラルネットワークソフトウェアアーキテクチャを動的に再選択することができる。他の例において、マッピングのためのＢｉｔＮｅｔのコスト関数を復元性の一つとすることができる。キューブサットネットワークトポロジーを変更できるようにした場合、ＢｉＮｅｔ  ＤＮＮを、利用できるキューブサットハードウェアの中から最適なネットワーク形状を見つけるために用いることができる。例えば、キューブサットの間のポイントツーポイントネットワーク通信を、最適なＤＮＮ性能をサポートするやり方において行うことができる。
【０２９９】
ＡＩシステムは、サーチエンジンから自律走行車までの無数の応用において示された。ＡＩシステムは、多次元データの学習の複雑な関係の優れた性能を最近示したＤＮＮアルゴリズムを用いてもよい。しかしながら、現在のＡＩシステムは、典型的には、ＡＩシステムが予め準備したことを超えて学習する能力を有しない。完全な詳細がしばしば予め未知である状況において、現在のＡＩシステムは、動的な環境に迅速に応答及び適合することができない。さらに、従来の手法は、再トレーニング／再プログラミングのためにシステムをオフラインにすることを要求することがある。このプロセスは、所定のタスクに対して混乱を起こさせる又は実行不可能であるだけでなく費用がかかるとともに時間がかかる。
【０３００】
したがって、学習を推論と略同時に実行し続けるＡＩシステムを有するのが有利であることがある。更に詳しくは、ＡＩシステムが（例えば、学習の観点から及び電力／性能の観点から）学習及び推論を有効なやり方で同時にサポートすることが有利であることがある。そのようなＡＩシステムは、学習率のようなハイパーパラメータの調整を含むオンザフライで自律的に自己再設定（ｓｅｌｆ−ｒｅｃｏｎｆｉｇｕｒｅ）してもよい。
【０３０１】
本開示は、（ａ）学習ニーズを予測し、（ｂ）動作／リソースを動的及び積極的に管理することができるＡＩシステムを提供する。ＡＩシステムは、フルコンバージェンス（ｆｕｌｌ  ｃｏｎｖｅｒｇｅｎｃｅ）のためのトレーニングを行うことなく最適なＤＮＮパラメータを選択又は検索してもよい。ここでの技術は、トレーニングとＤＮＮ構造最適化タスクとを切り離し、これによって、所定のデータセットの最適な性能を導き出すハイパーパラメータのセットを見つけるための繰り返しモデル選択及びトレーニングに依存する従来の手法から脱する。
【０３０２】
ここでの技術は、多くの分野で適用可能になる。その理由は、技術がインフラストラクチャ（学習手法、ソフトウェア／ハードウェア等）を選択するためのＡＩシステムの基本的な能力に適用できるからである。技術によって、ＡＩシステムは、アルゴリズム性能とハードウェアＳＷａＰ（サイズ、重量及び電力）のトレードオフを行う手法を提供することによってエッジで適応できる。ここでの技術は、自動運転車及びロボットのような応用に有用となることができ、この場合、学習能力を向上させる間に自律的態様を自己再設定能力により向上させる。ここでの技術は、携帯スマートフォン装置のようなリソースが制限された環境の強力なＤＮＮを可能にする。ここでの技術は、サイバー攻撃の事前情報が未知である（とともに再トレーニングのためにシステムをオフラインにすることが実行可能な選択でない）サイバーセキュリティのような他の分野の有益なツールとなることができる。ここでの技術は、ＡＩシステムがユーザ入力に基づいて自己再設定を行うユーザカスタマイズ／個別化に有用となることができる。
【０３０３】
本開示は、検知、学習及び応答を行うシステムを記載する。システム（例えば、ＤＮＮ１０６）は、センサからの入力を外部環境及び内部動作から収集する。センサは、プロセッサの利用可能状態、通信リンクのアップ／ダウン状態、電気エネルギーの利用可能性、温度、電池残量、残りのメモリ領域、リアルタイム性能の要求等を表すデータのような種々のタイプのデータを生成してもよい。システムは、これらの入力センサデータから学習を行ってもよい。本開示は、システムが検知したもの及びシステムが行う学習に基づいてシステムが自身を再設定する（アルゴリズム、ソフトウェア、ハードウェア等）「応答」態様に及ぶ。この場合、システムは、（ａ）システムが学習の観点から必要とするものを予測し、（ｂ）学習目標を実現するために動作／リソースを動的及び積極的に管理する。例えば、ＤＮＮ１０６を、入力としてハードウェアパラメータを取り出すとともにハードウェアアーキテクチャのプロセッサにマッピングされる一つ以上のＤＮＮを有するニューラルネットワークソフトウェアアーキテクチャを出力するＢｉＮｅｔ  ＤＮＮとして実現してもよい。ニューラルネットワークソフトウェアアーキテクチャの一つ以上のＤＮＮは、ＢｉＮｅｔ  ＤＮＮそれ自体であってもよい。一部の例において、ニューラルネットワークソフトウェアアーキテクチャの一つ以上のＤＮＮを予めトレーニングしてもよい。一部の例において、機械学習システム１０４は、ＤＮＮ１０６がニューラルネットワークソフトウェアアーキテクチャ及びマッピングを選択した後に特定のプロセッサの要求に適合するためにニューラルネットワークソフトウェアアーキテクチャのＤＮＮの一つ以上をトレーニングしてもよい。一部の例において、ＤＮＮ１０６は、ＤＮＮ１０６が新たな入力をセンサから受け取ったときにニューラルネットワークソフトウェアアーキテクチャを更新し続けてもよい。
【０３０４】
計算要求及びリソース制限に基づいてシステム設定を調整することができるシステムが存在する（例えば、プロセスは、電池残量に基づいて動作周波数レベルを調整することができる）。本開示の技術によれば、機械学習システム１０４は、最適な学習パラメータの選択又は検索に基づいてＤＮＮ１０６を再構成してもよい。更に詳しくは、技術は、ハードウェア／ソフトウェアパラメータ（例えば、プロセッサ動作周波数、ソフトウェア処理要求、電池残量）ではない適切なＤＮＮパラメータ（例えば、重み）の選択を有する。ＤＮＮトレーニングに関して、最適なＤＮＮパラメータの選択又は検索を行う技術を、フルコンバージェンスのトレーニングを行うことなく行ってもよい。その理由は、一例において、低いビット精度を有するＤＮＮを高い精度のニューラルネットワークの計算に近づく代替的なニューラルネットワークとすることができるからである。本開示は、（ａ）システム再設定と、（ｂ）ＤＮＮ学習パラメータの選択及び最適化と、（ｃ）ＤＮＮの十分なトレーニングの省略とを組み合わせ、これによって、ＢｉｔＮｅｔトレーニングされたニューラルネットワークが高いビット精度でトレーニングされたニューラルネットワークに近づく予め規定された性能に到達したときにトレーニングを原則的にやめることができる。
【０３０５】
ＢｉｔＮｅｔトレーニングされたニューラルネットワークの低ＳＷａＰハードウェア及び回路の実施の形態の複数のオプションが存在する。例えば、マルチコアプロセッサにおいて、所定のプロセッサ又はハードウェアアクセラレータを、種々のＤＮＮ計算要求をサポートする必要があるときにオンにすることができる。ＦＰＧＡに対して、所定の回路構成を、必要なときにオンにする（設定する）ことができる。スタック３Ｄメモリを有する他のアーキテクチャにおいて、所定のバンクのメモリを、記憶されたパラメータに大きい帯域幅を提供するのに利用することができる。データの記憶及び移動に関する時間／エネルギーの他のトレードオフを、迅速な勾配評価（ローカル及びグローバル）をサポートするために設定することができる。追加の回路（神経形態学的、アナログ及びメモリスタ）を用いることができる。アナログプロセッサは、向上したナノエレクトロニクスにおける製造ばらつきに対処するために種々のビット精度を選択することができる。
【０３０６】
一部の例において、コンピュータシステム１００は、ＳＷａＰＣ（サイズ、重量、電力、コスト）及び有効性（スループット、待ち時間及び機能的な最適性）に対して最適化された実現の自律的な変更を可能にする。本開示のＢｉｔＮｅｔ  ＤＮＮ技術は、アーキテクチャ展開（ａｒｃｈｉｔｅｃｔｕｒａｌ  ｅｖｏｌｕｔｉｏｎ）を伴う生涯学習を可能にする。一部の例において、システム（ハードウェア及びソフトウェア）及び学習（学習率、ＤＮＮ深度、溶融層）の両方の調整を、システム要求に基づいて動的に行ってもよい。ハードウェアは、コンバージェンスのためにトレーニングする必要がない我々のＤＮＮ選択アルゴリズムによってサポートされるオンライン学習と略同時の推論の両方をサポートしてもよい。すなわち、コンピュータシステム１００（例えば、ＤＮＮ１０６）は、（本開示に記載した選択アルゴリズムを用いて）適切なニューラルネットワークソフトウェアアーキテクチャを画定的に選択し、ハードウェアを適切に設定し、トレーニングのためにオフラインにすることなく動作を継続してもよい。ソフトウェアの観点におけるコンテキストスイッチによく似ているように、本開示は、ＤＮＮコンテキストを選択／スイッチングする方法を記載する。
【０３０７】
コンピュータシステム１００のようなＡＩシステムによって提供される能力は、迅速なシステムにとって重要となることがある。新たなＡＩシステムは、種々のタイプのデータ（ＥＯ、ＩＲ、レーダ等）からのコンテキストに同時に適合してもよい。これらのプラットフォームが電力及びサイズの規模（ｓｉｚｅ  ｂｕｄｇｅｔｓ）が制限される分野のオンライントレーニングをサポートするのが望ましい。ここでの技術は、多様なマルチモーダルデータのネットワーク構造最適化に特に有効である。アジャイル（ａｇｉｌｅ）システムは、教師なしであるとともに継続的な学習手法を用いてもよく、したがって、本開示の技術は、変化する環境信号（ｃｈａｎｇｉｎｇ  ｅｎｖｉｒｏｎｍｅｎｔａｌ  ｃｕｅｓ）に応答するように継続的に適合してもよい。コンピュータシステム１００は、例えば、図１２に記載したようなフルコンバージェンスのためのトレーニングを行うことなく動的なパラメータを用いる上述した手法を用いる迅速な構造（例えば、ニューラルネットワークソフトウェアアーキテクチャ）選択及びＤＮＮのマルチモーダル構成を用いた最適化を可能にすることによって、壊滅的な学習損失の問題に対処してもよい。
【０３０８】
そのようなＡＩシステムは、敵対的攻撃に対する更に強い回復力を有してもよい。例えば、コンピュータシステム１００は、（例えば、種々のビット精度及び値の範囲を有するＤＮＮパラメータの新たなセットに到達するために式（１６）に記載した損失関数の種々のハイパーパラメータを用いることにより）コンピュータシステム１００がコンピュータシステム１００の学習手法を自己再設定できるようにすることによって、コンピュータシステム１００のＡＩ動作の学習から敵を回避してもよい。サイバーセキュリティの観点から、そのような学習手法は、敵対的なターゲティング（ａｄｖｅｒｓａｒｉａｌ  ｔａｒｇｅｔｉｎｇ）に対する回復力を有してもよい。サイバーセキュリティに対する例示的な応用実施例は、次の通りである。
・原因攻撃（ｃａｕｓａｔｉｖｅ  ａｔｔａｃｋｓ）（例えば、ＡＩ脆弱性がトレーニング中に導入されるために経時的に増えることが原因で見逃される攻撃）−ＡＩシステムは、ＡＩ脆弱性の検出が困難となるように学習法を変更することができる。敵は、トレーニングデータを操作することによってＡＩシステムが入力の一部のセットを不正確に分類するようにすることを試みる。例えば、ＡＩシステムが疑わしいクレジットカード取引を検出するために用いられる場合、特定のタイプのクレジットカード取引を用いる盗用を計画した敵は、ＡＩシステムが特定のタイプのクレジットカード取引を疑わしいと認識しないようにトレーニングデータを操作することがある。しかしながら、そのような敵は、ニューラルネットワークソフトウェアアーキテクチャの複数のバージョンが存在するとともにニューラルネットワークソフトウェアアーキテクチャのいずれかのバージョンが配備変更（ｄｅｐｌｏｙｅｄ  ｃｈａｎｇｅｓ）される場合には攻撃が成功する可能性が低くなる。
・探索攻撃（ｅｘｐｌｏｒａｔｏｒｙ  ａｔｔａｃｋｓ）（例えば、規則に基づくトリガーを、システム出力の十分なサンプリングによって推定することができ、トレーニング後の脆弱性を不当に利用する）−我々のＡＩシステムは、敵が安全対策（ｐｒｏｔｅｃｔｉｖｅ  ｍｅａｓｕｒｅｓ）を学習するのを困難にするために（例えば、強化学習手法の）基本的な応答及び報酬関数を変更するように再設定を行うことができる。例えば、敵は、十分な数のシステム出力を観察することによってＡＩシステムが入力データを分類する方法を予測することができる。本例において、ＡＩシステムが疑わしいクレジットカード取引を検出するように設計されている場合、敵は、ＡＩシステムが差し障りのないものとして（ａｓ  ｉｎｎｏｃｕｏｕｓ）不正確な分類を行う特定のタイプのクレジットカード取引を識別することができる。したがって、本例において、敵は、特定のタイプのクレジットカード取引を用いて犯罪の実行を開始することができる。しかしながら、応答及び報酬関数を変更することによって（例えば、ニューラルネットワークソフトウェアアーキテクチャの異なるバージョンは、ハードウェアパラメータを変更する際に配備される）、敵は、ＡＩシステムが敵にとって魅力的となるように入力データを誤分類した入力データのセットを識別するのが著しく困難になる。
・回避攻撃（Ｅｖａｓｉｏｎ  ａｔｔａｃｋｓ）（例えば、攻撃信号は、検出しきい値より下であり、難読化によってうまく逃れる）−我々のＡＩは、敵を検出するための検出能力を高めることができる（例えば、ハニーポットの位置及び複雑さを変更する）。
・毒攻撃（ｐｏｉｓｏｎｉｎｇ  ａｔｔａｃｋｓ）（例えば、敵が入力データの分配を弱めるトレーニングデータを崩壊させる攻撃であり、これによって、誤分類が生じる）−ＡＩシステムは、壊滅的な忘却に対する回復力を有してもよい。その理由は、ＡＩシステムが保持のために完全なＤＮＮを必要としないからである。その代わりに、ＡＩシステムは、以前の分配を変更することなく新たなトレーニングデータを学習するために、新たなＤＮＮ層を有するニューラルネットワークソフトウェアアーキテクチャを再設定することができる（例えば、トレーニングされたＤＮＮをニューラルネットワークソフトウェアアーキテクチャに代入することができる）。例えば、コンピュータシステム１００は、入力するトレーニングデータに基づいて学習を継続することができる一つ以上のＤＮＮを有するニューラルネットワークソフトウェアアーキテクチャを配置してもよい。入力するトレーニングデータが、ニューラルネットワークソフトウェアアーキテクチャの正当な入力データを正確に分類する能力を損なうようにするために意図的に崩壊されることがあるので、コンピュータシステム１００は、配置されたニューラルネットワークソフトウェアアーキテクチャが毒攻撃によって入力の誤分類を開始した場合に同一のニューラルネットワークソフトウェアアーキテクチャの以前にトレーニングされたバージョンを保持するとともに配置してもよい。
【０３０９】
本開示の技術のイネイブラー（ｅｎａｂｌｅｒ）は、システムが機械速度（ｍａｃｈｉｎｅ  ｓｐｅｅｄ）に適応するのをサポートするＡＩシステムのためのものである。換言すれば、ＡＩシステムは、（例えば、ハードウェアアーキテクチャパラメータ、サイバーセキュリティの危険な兆候等に基づいて）ＤＮＮのバージョンがリアルタイムで有効になるように自動的に変化させてもよい。これによって、更に有効な検出、学習及び応答（例えば、検知、記憶（ｌｅａｒｎ）及び反応）が少ない待ち時間で可能になる。さらに、これは、検出及び防御措置を有効かつ迅速に行う必要がある自律的システム及びサイバーセキュリティシステムで重要である。
【０３１０】
図１３は、本開示の技術による機械学習システムの例示的な動作を示すフローチャートである。図１３の例において、機械学習システム１０４は、システムアーキテクチャパラメータを取得してもよい（１３００）。システムアーキテクチャパラメータは、システムアーキテクチャのプロセッサを記述するデータを有してもよい。一部の例において、システムアーキテクチャパラメータは、システムアーキテクチャのプロセッサに等しい通信リンクを記述するデータを有する。さらに、一部の例において、システムアーキテクチャパラメータは、システムアーキテクチャの計算リソースの現在の状態を表すデータを有する。一部の例において、機械学習システム１０４は、機械学習システム１０４（図１）からシステムアーキテクチャパラメータを取得してもよい。
【０３１１】
さらに、図１３の例において、機械学習システム１０４は、システムアーキテクチャパラメータに基づいて、ニューラルネットワークソフトウェアアーキテクチャ及びシステムアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアアーキテクチャのＤＮＮのマッピングを決定してもよい（１３０２）。例えば、機械学習システム１０４は、ニューラルネットワークソフトウェアアーキテクチャ及びマッピングをシステムアーキテクチャパラメータに基づいて決定するためにＤＮＮ１０６を用いてもよい。したがって、ニューラルネットワークソフトウェアアーキテクチャ及びシステムアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアアーキテクチャのＤＮＮのマッピングは、ＤＮＮ１０６の出力である。本例において、機械学習システム１０４は、ＤＮＮ１０６のトレーニング中に、システムアーキテクチャパラメータを用いて規定したように、サイズ、重み、電力及びコストの一つ以上に基づいて潜在的なニューラルネットワークソフトウェアアーキテクチャ及びＤＮＮのマッピングにコスト値を割り当てるコスト関数を用いてもよい。
【０３１２】
ニューラルネットワークソフトウェアアーキテクチャを決定するプロセスを更に有効にするために、機械学習システム１０４は、ニューラルネットワークソフトウェアアーキテクチャの予めトレーニングされたＤＮＮを用いてもよい。一部の例において、機械学習システム１０４は、ＤＮＮがマッピングされるハードウェアアーキテクチャのプロセッサに対する予めトレーニングされたＤＮＮを最適化するために予めトレーニングされたＤＮＮを生成するのに用いられた損失関数のハイパーパラメータ（例えば、λ１、λ２、λ３等）の種々の値を用いて追加のトレーニングの繰り返しを予めトレーニングされたＤＮＮにおいて行ってもよい。
【０３１３】
機械学習システム１０４は、システムアーキテクチャパラメータによって表されるニューラルネットワークソフトウェアアーキテクチャの複数のバージョン及びシステムアーキテクチャのプロセッサに対するＤＮＮの潜在的な種々のマッピングを決定するために種々のシステムアーキテクチャパラメータに基づいて動作（１３００）〜（１３０２）を複数回繰り返してもよい。
【０３１４】
図１３の例において、ニューラルネットワークソフトウェアアーキテクチャのＤＮＮにマッピングされたプロセッサは、ニューラルネットワークソフトウェアアーキテクチャのＤＮＮを実行してもよい（１３０４）。一部の例において、プロセッサは、評価モードにおいてＤＮＮを実行してもよい。一部の例において、プロセッサは、ＤＮＮのトレーニングを継続してもよい。
【０３１５】
以下の段落は、本開示の例の限定されないリストを提供する。
【０３１６】
例１．計算リソースの要求を減少させるためにディープニューラルネットワーク（ＤＮＮ）をトレーニングするコンピュータシステムであって、ＤＮＮの重みのセットを記憶するメモリであって、ＤＮＮは、複数の層を有し、複数の層の各々に対して、重みのセットは、層の重みを有し、ビット精度値のセットは、層のビット精度値を有し、層の重みは、層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、層の重みは、層のニューロンに対する入力に関連するメモリと、ＤＮＮをトレーニングするように構成された機械学習システムを実行する処理回路であって、ＤＮＮをトレーニングすることは、重みのセット及びビット精度値のセットを最適化することを備える処理回路と、を備えるコンピュータシステム。
【０３１７】
例２．機械学習システムは、ＤＮＮをトレーニングすることの一部として機械学習システムが複数の繰り返しに亘って誤差逆伝播アルゴリズムを適用するように構成され、誤差逆伝播アルゴリズムの各繰り返しは、重みのセットを更新するとともにビット精度値のセットを最適化する例１に記載のコンピュータシステム。
【０３１８】
例３．ＤＮＮの層の二つ以上は、互いに異なるビット精度値を有する例１に記載のコンピュータシステム。
【０３１９】
例４．重みのセットは、重みの第１のセットであり、メモリは、複数の層の各層に対する一定の精度の重みのセットを有する重みの第２のセットを記憶し、重みの第２のセットの各重みは、予め規定されたビット精度値に等しいビット精度値を有し、機械学習システムは、ＤＮＮをトレーニングすることの一部として、機械学習システムがＤＮＮをトレーニングするための複数の繰り返しを実行するように構成され、機械学習システムは、複数の繰り返しを実行することの一部として、機械学習システムが複数の繰り返しの各繰り返しに対して、第１の入力データセットに基づいて第１の出力データセットを計算するために第２のセットの重みをＤＮＮのニューロンの入力の重みとして用い、損失関数を計算し、損失関数に基づいて重みの第２のセットを更新し、損失関数に基づいてビット精度値のセットを更新し、重みの第２のセットを更新した後及びビット精度値のセットを更新した後、更新した第２のセットの重み及び更新したビット精度値のセットに基づいて重みの第１のセットを更新するように構成され、機械学習システムは、第２の入力データセットに基づいて第２の出力データセットを計算するために、第１のセットの重みをＤＮＮのニューロンの入力の重みとして用いるように更に構成された例１に記載のコンピュータシステム。
【０３２０】
例５．機械学習システムは、損失関数を決定することの一部として、機械学習システムが、中間損失関数である第１の演算対象を決定し、第１のハイパーパラメータの値と複数の層の各層の量子化誤差の和の積に等しくなるような第２の演算対象を決定し、第２のハイパーパラメータの値と
【０３２１】
【数８７】
2019164793.tif 000090
【０３２２】
の積に等しくなるような第３の演算対象を決定し、ｉは、添え字であり、Ｎは、複数の層の総数であり、ｂｉは、複数の層のｉ番目の層のビット精度値であるようにし、損失関数を、第１の演算対象、第２の演算対象及び第３の演算対象の総和として決定するように構成された例４に記載のコンピュータシステム。
【０３２３】
例６．機械学習システムは、複数の層の各層に対して、第１のセットの重みの層の重みと第２のセットの重みの層の重みの間の差に基づいて層に対する量子化誤差を決定するように更に構成された例５に記載のコンピュータシステム。
【０３２４】
例７．第１の入力データセットは、トレーニングデータラベル対のバッチを備え、機械学習システムは、第１の演算対象を決定することの一部として機械学習システムが
【０３２５】
【数８８】
2019164793.tif 000091
【０３２６】
に等しくなるような第１の演算対象を決定し、Ｂは、トレーニングデータラベル対のバッチのデータラベル対の総数であり、トレーニングデータラベル対のバッチの各ラベルは、Ｂ個のラベルを有するラベルのセットの要素であり、ｉは、添え字であり、ｌｏｇ（・）は、対数関数であり、Ｎは、複数の層の総数であり、ｙｉは、ラベルのセットのｉ番目のラベルであり、
【０３２７】
【数８９】
2019164793.tif 000092
【０３２８】
は、ＤＮＮがトレーニングデータラベル対のバッチのｉ番目のデータラベル対のデータの入力として与えられるときに複数の層のＮ番目の層の出力であるように構成され、トレーニングデータラベル対のバッチのデータラベル対は、独立の一様分布したデータラベル対である例５に記載のコンピュータシステム。
【０３２９】
ビット精度値のセットを更新することの一部として、機械学習システムは、
【０３３０】
【数９０】
2019164793.tif 000093
【０３３１】
に等しくなるように更新したビット精度値のセットを決定し、ｂは、ビット精度値のセットであり、
【０３３２】
【数９１】
2019164793.tif 000094
【０３３３】
は、重みの第１のセットであり、
【０３３４】
【数９２】
2019164793.tif 000095
【０３３５】
は、ビット精度値のセットに対する損失関数の偏微分であり、ｓｉｇｎ（・）は、０を返す場合に独立変数の絶対値が予め決定されたしきい値未満でないときに独立変数の符号を返す関数である例４に記載のコンピュータシステム。
【０３３６】
例９．重みの第２のセットを更新することの一部として、機械学習システムは、
【０３３７】
【数９３】
2019164793.tif 000096
【０３３８】
に等しくなるように更新した重みの第２のセットを決定し、Ｗは、重みの第２のセットであり、μは、学習率であり、
【０３３９】
【数９４】
2019164793.tif 000097
【０３４０】
は、重みの第１のセットであり、
【０３４１】
【数９５】
2019164793.tif 000098
【０３４２】
は、ビット精度値のセットに対する損失関数の偏微分である例４に記載のコンピュータシステム。
【０３４３】
例１０．機械学習システムは、重みの第１のセットを更新することの一部として、機械学習システムが複数の層の各層に対して各層の更新した最適精度の重みが
【０３４４】
【数９６】
2019164793.tif 000099
【０３４５】
に等しくなるように更新した重みの第１のセットを決定し、αは、層の一定の精度の重みのセットの最小重みであり、Ｗは、層の一定の精度の重みのセットであり、δは、層の一定の精度の重みのセットの最小重みから層の一定の精度の重みのセットの最大重みまでの離散化された範囲の一定のステップの総数であり、ｒｏｕｎｄ（・）は、丸め関数であるように構成された例４に記載のコンピュータシステム。
【０３４６】
例１１．δは、
【０３４７】
【数９７】
2019164793.tif 000100
【０３４８】
に等しく、βは、層の一定の精度の重みのセットの最大重みであり、ｂは、層のビット精度である例１０に記載のコンピュータシステム。
【０３４９】
例１２．複数の層の各々に対して、機械学習システムは、層の更新した第１のパラメータが
【０３５０】
【数９８】
2019164793.tif 000101
【０３５１】
に等しく設定されるように層の更新した第１のパラメータを決定し、θ１は、層の第１のパラメータであり、μは、学習率であり、
【０３５２】
【数９９】
2019164793.tif 000102
【０３５３】
は、θ１に関する損失関数の偏微分であり、層の更新した第２のパラメータが
【０３５４】
【数１００】
2019164793.tif 000103
【０３５５】
に等しく設定されるように層の更新した第２のパラメータを決定し、θ１は、層の第２のパラメータであり、μは、学習率であり、
【０３５６】
【数１０１】
2019164793.tif 000104
【０３５７】
は、θ１に関する損失関数の偏微分であり、量子化関数θ１＋θ２ｌｏｇ２｜ｗ｜を適用することによって生成された値を丸めることにより層に対する量子化された値のセットを決定し、ｗは、層に関連する重みの第２のセットの重みを表し、層の量子化された値のセットの最大値及び層の量子化された値のセットの最小値を決定し、量子化された値のセットの最大値及び量子化された値のセットの最小値によって規定される範囲の２を底とする対数に基づいて層のビット精度値を設定するように構成された例４に記載のコンピュータシステム。
【０３５８】
例１３．重みの第１のセットの各重みに対して、機械学習システムは、重みの第１のセットを更新することの一部として、機械学習システムが指数値の乗に２を乗算した符号の値に等しい重みの第１のセットの重みを決定し、符号の値は、重みの第２のセットの対応する重みの符号を表し、指数値は、重みの第２のセットの対応する重みの対数の底２に基づくように構成された例４に記載のコンピュータシステム。
【０３５９】
例１４．重みのセットの各重みが２の乗に等しい例１に記載のコンピュータシステム。
【０３６０】
例１５．各重みは、層のビット精度値に等しいビット精度、オフセット値及び量子化ステップ幅の値を有する整数値を用いることによってメモリにおいて表される例１に記載のコンピュータシステム。
【０３６１】
例１６．機械学習システムは、システムアーキテクチャを記述するシステムアーキテクチャパラメータに基づいてＤＮＮをトレーニングするように構成された例１に記載のコンピュータシステム。
【０３６２】
例１７．機械学習システムは、システムアーキテクチャのプロセッサを記述するデータを有するシステムアーキテクチャパラメータを取得し、システムアーキテクチャパラメータに基づいて、ＤＮＮを有するニューラルネットワークソフトウェアアーキテクチャ及びシステムアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアアーキテクチャのＤＮＮのマッピングを決定するように構成され、ニューラルネットワークソフトウェアアーキテクチャのＤＮＮに対してマッピングされるシステムアーキテクチャのプロセッサは、ニューラルネットワークソフトウェアアーキテクチャのＤＮＮを実行するように構成された例１に記載のコンピュータシステム。
【０３６３】
例１８．計算リソースの要求を減少させるためにディープニューラルネットワーク（ＤＮＮ）をトレーニングする方法であって、ＤＮＮの重みのセットを記憶することであって、ＤＮＮは、複数の層を有し、複数の層の各々に対して、重みのセットは、層の重みを有し、ビット精度値のセットは、層のビット精度値を有し、層の重みは、層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、層の重みは、層のニューロンに対する入力に関連することと、ＤＮＮをトレーニングするように構成された機械学習システムを実行することであって、ＤＮＮをトレーニングすることは、重みのセット及びビット精度値のセットを最適化することを備えることと、を備える方法。
【０３６４】
例１９．ＤＮＮをトレーニングすることは、複数の繰り返しに亘って誤差逆伝播アルゴリズムを適用することであって、誤差逆伝播アルゴリズムの各繰り返しは、重みのセットを更新するとともにビット精度値のセットを最適化することを備える例１８に記載の方法。
【０３６５】
例２０．ＤＮＮの層の二つ以上は、互いに異なるビット精度値を有する例１８に記載の方法。
【０３６６】
例２１．重みのセットは、重みの第１のセットであり、複数の層の各層に対する一定の精度の重みのセットを有する重みの第２のセットを記憶し、重みの第２のセットの各重みは、予め規定されたビット精度値に等しいビット精度値を有することを更に備え、ＤＮＮをトレーニングすることは、ＤＮＮをトレーニングするための複数の繰り返しを実行することを更に備え、複数の繰り返しを実行することは、複数の繰り返しの各繰り返しに対して、第１の入力データセットに基づいて第１の出力データセットを計算するために第２のセットの重みをＤＮＮのニューロンの入力の重みとして用いることと、損失関数を計算することと、損失関数に基づいて重みの第２のセットを更新することと、損失関数に基づいてビット精度値のセットを更新することと、重みの第２のセットを更新した後及びビット精度値のセットを更新した後、更新した第２のセットの重み及び更新したビット精度値のセットに基づいて重みの第１のセットを更新することと、を備え、第２の入力データセットに基づいて第２の出力データセットを計算するために第１のセットの重みをＤＮＮのニューロンの入力の重みとして用いることを更に備える例１８に記載の方法。
【０３６７】
例２２．損失関数を決定することは、中間損失関数である第１の演算対象を決定することと、第１のハイパーパラメータの値と複数の層の各層の量子化誤差の和の積に等しくなるような第２の演算対象を決定することと、第２のハイパーパラメータの値と
【０３６８】
【数１０２】
2019164793.tif 000105
【０３６９】
の積に等しくなるような第３の演算対象を決定することであって、ｉは、添え字であり、Ｎは、複数の層の総数であり、ｂｉは、複数の層のｉ番目の層のビット精度値であるようにすることと、損失関数を、第１の演算対象、第２の演算対象及び第３の演算対象の総和として決定することと、を備える例２１に記載の方法。
【０３７０】
例２３．複数の層の各層に対して、第１のセットの重みの層の重みと第２のセットの重みの層の重みの間の差に基づいて層に対する量子化誤差を決定することを更に備える例２２に記載の方法。
【０３７１】
例２４．第１の入力データセットは、トレーニングデータラベル対のバッチを備え、第１の演算対象を決定することは、
【０３７２】
【数１０３】
2019164793.tif 000106
【０３７３】
に等しくなるような第１の演算対象を決定し、Ｂは、トレーニングデータラベル対のバッチのデータラベル対の総数であり、トレーニングデータラベル対のバッチの各ラベルは、Ｂ個のラベルを有するラベルのセットの要素であり、ｉは、添え字であり、ｌｏｇ（・）は、対数関数であり、Ｎは、複数の層の総数であり、ｙｉは、ラベルのセットのｉ番目のラベルであり、
【０３７４】
【数１０４】
2019164793.tif 000107
【０３７５】
は、ＤＮＮがトレーニングデータラベル対のバッチのｉ番目のデータラベル対のデータの入力として与えられるときに複数の層のＮ番目の層の出力であることを備え、トレーニングデータラベル対のバッチのデータラベル対は、独立の一様分布したデータラベル対である例２２に記載の方法。
【０３７６】
例２５．  ビット精度値のセットを更新することは、
【０３７７】
【数１０５】
2019164793.tif 000108
【０３７８】
に等しくなるように更新したビット精度値のセットを決定し、ｂは、ビット精度値のセットであり、
【０３７９】
【数１０６】
2019164793.tif 000109
【０３８０】
は、重みの第１のセットであり、
【０３８１】
【数１０７】
2019164793.tif 000110
【０３８２】
は、ビット精度値のセットに対する損失関数の偏微分であり、ｓｉｇｎ（・）は、０を返す場合に独立変数の絶対値が予め決定されたしきい値未満でないときに独立変数の符号を返す関数である例２１に記載の方法。
【０３８３】
例２６．重みの第２のセットを更新することは、
【０３８４】
【数１０８】
2019164793.tif 000111
【０３８５】
に等しくなるように更新した重みの第２のセットを決定し、Ｗは、重みの第２のセットであり、μは、学習率であり、
【０３８６】
【数１０９】
2019164793.tif 000112
【０３８７】
は、重みの第１のセットであり、
【０３８８】
【数１１０】
2019164793.tif 000113
【０３８９】
は、ビット精度値のセットに対する損失関数の偏微分であることを備える例２１に記載の方法。
【０３９０】
例２７．重みの第１のセットを更新することは、機械学習システムが複数の層の各層に対して各層の更新した最適精度の重みが
【０３９１】
【数１１１】
2019164793.tif 000114
【０３９２】
に等しくなるように更新した重みの第１のセットを決定し、αは、層の一定の精度の重みのセットの最小重みであり、Ｗは、層の一定の精度の重みのセットであり、δは、層の一定の精度の重みのセットの最小重みから層の一定の精度の重みのセットの最大重みまでの離散化された範囲の一定のステップの総数であり、ｒｏｕｎｄ（・）は、丸め関数であることを備える例２１に記載の方法。
【０３９３】
例２８．δは、
【０３９４】
【数１１２】
2019164793.tif 000115
【０３９５】
に等しく、βは、層の一定の精度の重みのセットの最大重みであり、ｂは、層のビット精度である例２７に記載の方法。
【０３９６】
例２９．ビット精度値のセットを更新することは、複数の層の各々に対して、層の更新した第１のパラメータが
【０３９７】
【数１１３】
2019164793.tif 000116
【０３９８】
に等しく設定されるように層の更新した第１のパラメータを決定し、θ１は、層の第１のパラメータであり、μは、学習率であり、
【０３９９】
【数１１４】
2019164793.tif 000117
【０４００】
は、θ１に関する損失関数の偏微分であることと、層の更新した第２のパラメータが
【０４０１】
【数１１５】
2019164793.tif 000118
【０４０２】
に等しく設定されるように層の更新した第２のパラメータを決定し、θ１は、層の第２のパラメータであり、μは、学習率であり、
【０４０３】
【数１１６】
2019164793.tif 000119
【０４０４】
は、θ１に関する損失関数の偏微分であることと、量子化関数θ１＋θ２ｌｏｇ２｜ｗ｜を適用することによって生成された値を丸めることにより層に対する量子化された値のセットを決定し、ｗは、層に関連する重みの第２のセットの重みを表すことと、層の量子化された値のセットの最大値及び層の量子化された値のセットの最小値を決定し、量子化された値のセットの最大値及び量子化された値のセットの最小値によって規定される範囲の２を底とする対数に基づいて層のビット精度値を設定することと、を備える例２１に記載の方法。
【０４０５】
例３０．重みの第１のセットを更新することは、重みの第１のセットの各重みに対して、指数値の乗に２を乗算した符号の値に等しい重みの第１のセットの重みを決定し、符号の値は、重みの第２のセットの対応する重みの符号を表し、指数値は、重みの第２のセットの対応する重みの対数の底２に基づくことを備える例２１に記載の方法。
【０４０６】
例３１．重みのセットの各重みが２の乗に等しい例１８に記載の方法。
【０４０７】
例３２．各重みは、層のビット精度値に等しいビット精度、オフセット値及び量子化ステップ幅の値を有する整数値を用いることによってメモリにおいて表される例１８に記載の方法。
【０４０８】
例３３．機械学習システムは、システムアーキテクチャを記述するシステムアーキテクチャパラメータに基づいてＤＮＮをトレーニングするように構成された例１８に記載の方法。
【０４０９】
例３４．システムアーキテクチャのプロセッサを記述するデータを有するシステムアーキテクチャパラメータを取得することと、システムアーキテクチャパラメータに基づいて、ＤＮＮを有するニューラルネットワークソフトウェアアーキテクチャ及びシステムアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアアーキテクチャのＤＮＮのマッピングを決定することと、ニューラルネットワークソフトウェアアーキテクチャのＤＮＮに対してマッピングされるシステムアーキテクチャのプロセッサによって、ニューラルネットワークソフトウェアアーキテクチャのＤＮＮを実行することと、を更に備える例１８に記載の方法。
【０４１０】
例３５．実行のときに、ディープニューラルネットワーク（ＤＮＮ）の重みのセットを記憶することであって、ＤＮＮは、複数の層を有し、複数の層の各々に対して、重みのセットは、層の重みを有し、ビット精度値のセットは、層のビット精度値を有し、層の重みは、層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、層の重みは、層のニューロンに対する入力に関連することと、ＤＮＮをトレーニングするように構成された機械学習システムを実行することであって、ＤＮＮをトレーニングすることは、重みのセット及びビット精度値のセットを最適化することを備えることと、を一つ以上のプロセッサによって実行させる命令を記憶したコンピュータ可読データ記憶媒体。
【０４１１】
本開示に記載した技術を、ハードウェア、ソフトウェア、ファームウェア及びその任意の組合せによって少なくとも部分的に実現してもよい。例えば、記載した技術の種々の態様を、一つ以上のマイクロプロセッサ、デジタルシグナルプロセッサ（ＤＰＳ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又は他の任意の同等の統合された又は個別の論理回路及びそのような構成要素の任意の組合せを含む一つ以上のプロセッサ内で実現することができる。用語「プロセッサ」又は「処理回路」は、一般的には、上述した論理回路のみ、上述した論理回路と他の論理回路との組合せ又は他の任意の同等の回路を意味する。ハードウェアを備える制御部は、本開示の技術の一つ以上を実行してもよい。
【０４１２】
そのようなハードウェア、ソフトウェア及びファームウェアを、本開示で説明した種々の動作及び機能をサポートするために同一の回路内又は個別の回路内で実現してもよい。追加的には、記載したユニット、モジュール又は構成要素のいずれかを、個別であるが相互運用可能な論路装置として協働して又は個別に実現してもよい。モジュール又はユニットとしての種々の特徴の描写は、種々の機能的な態様を強調することを意図するものであり、そのようなモジュール又はユニットを個別のハードウェア構成要素又はソフトウェア構成要素によって実現する必要があることを必ずしも意味しない。それどころか、一つ以上のモジュール又はユニットに関連する機能を、個別のハードウェア構成要素若しくはソフトウェア構成要素によって実現してもよい又は共通の若しくは個別尾ハードウェア構成要素若しくはソフトウェア構成要素内で統合してもよい。
【０４１３】
本開示に記載した技術を、命令を含むコンピュータ可読記憶媒体のようなコンピュータ可読媒体で具体化又はコード化してもよい。コンピュータ可読記憶媒体において組み込まれた又はコード化された命令によって、プログラマブルプロセッサ又は他のプロセッサは、例えば、命令が実行されるときに方法を実行してもよい。コンピュータ可読媒体は、データ記憶媒体のような有形的表現媒体又は、例えば、通信プロトコルに従ってある場所から他の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に対応するコンピュータ可読記憶媒体を含んでもよい。このようにして、コンピュータ可読媒体は、一般的には、（１）非一時的な有形的表現コンピュータ可読記憶媒体又は（２）信号又は搬送波のような通信媒体に対応する。データ記憶媒体を、本開示に記載した技術の命令、コード及び／又はデータ構造を検索するために一つ以上のコンピュータ又は一つ以上のプロセッサによってアクセスすることができる任意の利用できる媒体としてもよい。コンピュータ可読記憶媒体は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、プログラマブルリードオンリーメモリ（ＰＲＯＭ），消去可能プログラマブルリードオンリーメモリ（ＥＰＲＯＭ）、電子的消去可能プログラマブルリードオンリーメモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、ハードディスク、ＣＤ−ＲＯＭ、フロッピーディスク（登録商標）、カセット、磁気媒体、光媒体又は他のコンピュータ可読媒体を含んでもよい。
【０４１４】
種々の例を説明した。これらの例及び他の例は、特許請求の範囲内にある。
【図１】
2019164793.tif 000130
【図２】
2019164793.tif 000131
【図３】
2019164793.tif 000132
【図４】
2019164793.tif 000133
【図５】
2019164793.tif 000134
【図６Ａ】
2019164793.tif 000135
【図６Ｂ】
2019164793.tif 000136
【図７】
2019164793.tif 000137
【図８Ａ】
2019164793.tif 000138
【図８Ｂ】
2019164793.tif 000139
【図９】
2019164793.tif 000140
【図１０】
2019164793.tif 000141
【図１１】
2019164793.tif 000142
【図１２】
2019164793.tif 000143
【図１３】
2019164793.tif 000144
【外国語明細書】
2019164793000001.pdf