IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エスアールアイ インターナショナルの特許一覧

特開2024-50691ディープニューラルネットワークの動的適応
<>
  • 特開-ディープニューラルネットワークの動的適応 図1
  • 特開-ディープニューラルネットワークの動的適応 図2
  • 特開-ディープニューラルネットワークの動的適応 図3
  • 特開-ディープニューラルネットワークの動的適応 図4
  • 特開-ディープニューラルネットワークの動的適応 図5
  • 特開-ディープニューラルネットワークの動的適応 図6A
  • 特開-ディープニューラルネットワークの動的適応 図6B
  • 特開-ディープニューラルネットワークの動的適応 図7
  • 特開-ディープニューラルネットワークの動的適応 図8A
  • 特開-ディープニューラルネットワークの動的適応 図8B
  • 特開-ディープニューラルネットワークの動的適応 図9
  • 特開-ディープニューラルネットワークの動的適応 図10
  • 特開-ディープニューラルネットワークの動的適応 図11
  • 特開-ディープニューラルネットワークの動的適応 図12
  • 特開-ディープニューラルネットワークの動的適応 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024050691
(43)【公開日】2024-04-10
(54)【発明の名称】ディープニューラルネットワークの動的適応
(51)【国際特許分類】
   G06N 3/084 20230101AFI20240403BHJP
【FI】
G06N3/084
【審査請求】有
【請求項の数】15
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024009579
(22)【出願日】2024-01-25
(62)【分割の表示】P 2022001150の分割
【原出願日】2022-01-06
(31)【優先権主張番号】62/644,715
(32)【優先日】2018-03-19
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/645,358
(32)【優先日】2018-03-20
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/133,446
(32)【優先日】2018-09-17
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】510119843
【氏名又は名称】エスアールアイ インターナショナル
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【弁理士】
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100114018
【弁理士】
【氏名又は名称】南山 知広
(74)【代理人】
【識別番号】100165191
【弁理士】
【氏名又は名称】河合 章
(74)【代理人】
【識別番号】100133835
【弁理士】
【氏名又は名称】河野 努
(72)【発明者】
【氏名】セク チャイ
(72)【発明者】
【氏名】アスウィン ナダムニ ラガバン
(72)【発明者】
【氏名】サムヤック パラジュリ
(57)【要約】
【課題】計算リソースの要求を減少させるためにディープニューラルネットワーク(DNN)をトレーニングする技術を開示する。
【解決手段】コンピュータシステムは、DNNの重みのセットを記憶するメモリを有する。DNNは、複数の層を有する。複数の層の各々に対して、重みのセットは、層の重みを有し、ビット精度値のセットは、層のビット精度値を有する。層の重みは、層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表される。層の重みは、層のニューロンに対する入力に関連する。さらに、コンピュータシステムは、DNNをトレーニングするように構成された機械学習システムを実行する処理回路を有する。DNNをトレーニングすることは、重みのセット及びビット精度値のセットを最適化することを備える。
【選択図】図1
【特許請求の範囲】
【請求項1】
計算リソースの要求を減少させるためにディープニューラルネットワーク(DNN)をトレーニングするコンピュータシステムであって、
前記DNNの重みのセットを記憶するメモリであって、前記DNNは、複数の層を有し、前記複数の層の各々に対して、前記重みのセットは、前記層の重みを有し、ビット精度値のセットは、前記層のビット精度値を有し、前記層の重みは、前記層のビット精度値に等しいビット精度を有する値を用いて前記メモリにおいて表され、前記層の重みは、前記層のニューロンに対する入力に関連するメモリと、
前記DNNをトレーニングするように構成された機械学習システムを実行する処理回路であって、前記DNNをトレーニングすることは、前記重みのセット及び前記ビット精度値のセットを最適化することを備える処理回路と、
を備えるコンピュータシステム。
【請求項2】
前記機械学習システムは、前記DNNをトレーニングすることの一部として前記機械学習システムが複数の繰り返しに亘って誤差逆伝播アルゴリズムを適用するように構成され、
前記誤差逆伝播アルゴリズムの各繰り返しは、前記重みのセットを更新するとともに前記ビット精度値のセットを最適化する請求項1に記載のコンピュータシステム。
【請求項3】
前記DNNの層の二つ以上は、互いに異なるビット精度値を有する請求項1に記載のコンピュータシステム。
【請求項4】
前記重みのセットは、重みの第1のセットであり、
前記メモリは、前記複数の層の各層に対する一定の精度の重みのセットを有する重みの第2のセットを記憶し、前記重みの第2のセットの各重みは、予め規定されたビット精度値に等しいビット精度値を有し、
前記機械学習システムは、前記DNNをトレーニングすることの一部として、前記機械学習システムが前記DNNをトレーニングするための複数の繰り返しを実行するように構成され、前記機械学習システムは、前記複数の繰り返しを実行することの一部として、前記機械学習システムが前記複数の繰り返しの各繰り返しに対して、
第1の入力データセットに基づいて第1の出力データセットを計算するために前記第2のセットの重みを前記DNNのニューロンの入力の重みとして用い、
損失関数を計算し、
前記損失関数に基づいて前記重みの第2のセットを更新し、
前記損失関数に基づいて前記ビット精度値のセットを更新し、
前記重みの第2のセットを更新した後及び前記ビット精度値のセットを更新した後、更新した第2のセットの重み及び更新したビット精度値のセットに基づいて前記重みの第1のセットを更新するように構成され、
前記機械学習システムは、第2の入力データセットに基づいて第2の出力データセットを計算するために、前記第1のセットの重みを前記DNNのニューロンの入力の重みとして用いるように更に構成された請求項1に記載のコンピュータシステム。
【請求項5】
前記機械学習システムは、前記損失関数を決定することの一部として前記機械学習システムが、
中間損失関数である第1の演算対象を決定し、
第1のハイパーパラメータの値と前記複数の層の各層の量子化誤差の和の積に等しくなるような第2の演算対象を決定し、
第2のハイパーパラメータの値と
【数1】
の積に等しくなるような第3の演算対象を決定し、iは、添え字であり、Nは、前記複数の層の総数であり、bは、前記複数の層のi番目の層のビット精度値であるようにし、
前記損失関数を、前記第1の演算対象、前記第2の演算対象及び前記第3の演算対象の総和として決定するように構成された請求項4に記載のコンピュータシステム。
【請求項6】
前記機械学習システムは、
前記複数の層の各層に対して、前記第1のセットの重みの層の重みと前記第2のセットの重みの層の重みの間の差に基づいて層に対する量子化誤差を決定するように更に構成された請求項5に記載のコンピュータシステム。
【請求項7】
前記第1の入力データセットは、トレーニングデータラベル対のバッチを備え、
前記機械学習システムは、前記第1の演算対象を決定することの一部として前記機械学習システムが
【数2】
に等しくなるような前記第1の演算対象を決定し、Bは、前記トレーニングデータラベル対のバッチのデータラベル対の総数であり、前記トレーニングデータラベル対のバッチの各ラベルは、B個のラベルを有するラベルのセットの要素であり、iは、添え字であり、log(・)は、対数関数であり、Nは、前記複数の層の総数であり、yは、前記ラベルのセットのi番目のラベルであり、
【数3】
は、前記DNNが前記トレーニングデータラベル対のバッチのi番目のデータラベル対のデータの入力として与えられるときに前記複数の層のN番目の層の出力であるように構成され、
前記トレーニングデータラベル対のバッチのデータラベル対は、独立の一様分布したデータラベル対であり、
前記ビット精度値のセットを更新することの一部として、前記機械学習システムは、
【数4】
に等しくなるように前記更新したビット精度値のセットを決定し、bは、前記ビット精度値のセットであり、
【数5】
は、前記重みの第1のセットであり、
【数6】
は、前記ビット精度値のセットに対する前記損失関数の偏微分であり、sign(・)は、関数の引数の絶対値がしきい値未満のときに0を返し、そうでないときに関数の引数の符号を返す関数であり、
前記重みの第2のセットを更新することの一部として、前記機械学習システムは、
【数7】
に等しくなるように前記更新した重みの第2のセットを決定し、Wは、前記重みの第2のセットであり、μは、学習率であり、
【数8】
は、前記重みの第1のセットであり、
【数9】
は、前記ビット精度値のセットに対する前記損失関数の偏微分である請求項5に記載のコンピュータシステム。
【請求項8】
前記機械学習システムは、前記重みの第1のセットを更新することの一部として、前記機械学習システムが前記複数の層の各層に対して各層の更新した最適精度の重みが
【数10】
に等しくなるように更新した重みの第1のセットを決定し、αは、層の前記一定の精度の重みのセットの最小重みであり、Wは、層の前記一定の精度の重みのセットであり、δは、層の前記一定の精度の重みのセットの最小重みから層の前記一定の精度の重みのセットの最大重みまでの離散化された範囲の一定のステップの総数であり、round(・)は、丸め関数であるように構成された請求項4に記載のコンピュータシステム。
【請求項9】
前記重みの第1のセットの各重みに対して、前記機械学習システムは、前記重みの第1のセットを更新することの一部として、前記機械学習システムが2の指数値の累乗を乗算した符号の値に等しい前記重みの第1のセットの重みを決定し、前記符号の値は、前記重みの第2のセットの対応する重みの符号を表し、前記指数値は、前記重みの第2のセットの対応する重みの対数の底2に基づくように構成された請求項4に記載のコンピュータシステム。
【請求項10】
前記重みのセットの各重みが2の累乗に等しい請求項1に記載のコンピュータシステム。
【請求項11】
各重みは、層の前記ビット精度値に等しいビット精度、オフセット値及び量子化ステップ幅の値を有する整数値を用いることによって前記メモリにおいて表される請求項1に記載のコンピュータシステム。
【請求項12】
前記機械学習システムは、システムアーキテクチャを記述するシステムアーキテクチャパラメータに基づいて前記DNNをトレーニングするように構成された請求項1に記載のコンピュータシステム。
【請求項13】
前記機械学習システムは、
システムアーキテクチャのプロセッサを記述するデータを有するシステムアーキテクチャパラメータを取得し、
前記システムアーキテクチャパラメータに基づいて、前記DNNを有するニューラルネットワークソフトウェアアーキテクチャ及び前記システムアーキテクチャの前記プロセッサに対する前記ニューラルネットワークソフトウェアアーキテクチャのDNNのマッピングを決定するように構成され、
前記ニューラルネットワークソフトウェアアーキテクチャの前記DNNに対してマッピングされる前記システムアーキテクチャの前記プロセッサは、前記ニューラルネットワークソフトウェアアーキテクチャの前記DNNを実行するように構成された請求項1に記載のコンピュータシステム。
【請求項14】
計算リソースの要求を減少させるためにディープニューラルネットワーク(DNN)をトレーニングする方法であって、
前記DNNの重みのセットを記憶することであって、前記DNNは、複数の層を有し、前記複数の層の各々に対して、前記重みのセットは、前記層の重みを有し、ビット精度値のセットは、前記層のビット精度値を有し、前記層の重みは、前記層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、前記層の重みは、前記層のニューロンに対する入力に関連することと、
前記DNNをトレーニングするように構成された機械学習システムを実行することであって、前記DNNをトレーニングすることは、前記重みのセット及び前記ビット精度値のセットを最適化することを備えることと、
を備える方法。
【請求項15】
前記DNNをトレーニングすることは、複数の繰り返しに亘って誤差逆伝播アルゴリズムを適用することであって、前記誤差逆伝播アルゴリズムの各繰り返しは、前記重みのセットを更新するとともに前記ビット精度値のセットを最適化することを備える請求項14に記載の方法。
【請求項16】
前記DNNの層の二つ以上は、異なるビット精度値を有する請求項14に記載の方法。
【請求項17】
前記重みのセットは、重みの第1のセットであり、
前記複数の層の各層に対する一定の精度の重みのセットを有する重みの第2のセットを記憶し、前記重みの第2のセットの各重みは、予め規定されたビット精度値に等しいビット精度値を有することを更に備え、
前記DNNをトレーニングすることは、前記DNNをトレーニングするための複数の繰り返しを実行することを更に備え、前記複数の繰り返しを実行することは、前記複数の繰り返しの各繰り返しに対して、
第1の入力データセットに基づいて第1の出力データセットを計算するために前記第2のセットの重みを前記DNNのニューロンの入力の重みとして用いることと、
損失関数を計算することと、
前記損失関数に基づいて前記重みの第2のセットを更新することと、
前記損失関数に基づいて前記ビット精度値のセットを更新することと、
前記重みの第2のセットを更新した後及び前記ビット精度値のセットを更新した後、更新した第2のセットの重み及び更新したビット精度値のセットに基づいて前記重みの第1のセットを更新することと、を備え、
第2の入力データセットに基づいて第2の出力データセットを計算するために前記第1のセットの重みを前記DNNのニューロンの入力の重みとして用いることを更に備える請求項14に記載の方法。
【請求項18】
実行のときに、
ディープニューラルネットワーク(DNN)の重みのセットを記憶することであって、前記DNNは、複数の層を有し、前記複数の層の各々に対して、前記重みのセットは、前記層の重みを有し、ビット精度値のセットは、前記層のビット精度値を有し、前記層の重みは、前記層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、前記層の重みは、前記層のニューロンに対する入力に関連することと、
前記DNNをトレーニングするように構成された機械学習システムを実行することであって、前記DNNをトレーニングすることは、前記重みのセット及び前記ビット精度値のセットを最適化することを備えることと、
を一つ以上のプロセッサによって実行させる命令を記憶したコンピュータ可読データ記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2018年3月19日に出願された米国仮特許出願第62/644715号明細書、2018年3月20日に出願された米国仮特許出願第62/645358号明細書及び2018年9月17日に出願された米国特許出願第16/133446号明細書の利益を主張する。米国仮特許出願第62/645358号明細書及び米国特許出願第16/133446号明細書の全体の内容を参照によりここに組み込む。
【0002】
政府の権利
本発明は、海軍研究事務所によって認可された問合せ先N00014-17-C-1011の下での政府のサポート及び全米科学財団によって認可された認可番号1526399の下でのサポートによって行われた。政府は、本発明の所定の権利を有する。
【0003】
本開示は、一般的には、機械学習システムに関する。
【背景技術】
【0004】
機械学習アルゴリズムは、ディープニューラルネットワーク(DNN)を用いることによって近年急速な進歩を遂げた。DNNは、入力層と出力層の間に複数の隠れ層を有する人工ニューラルネットワークである。DNNの例示的なタイプは、再帰型ニューラルネットワーク(RNN)及び畳み込みニューラルネットワーク(CNN)を含む。DNNは、人工知能、コンピュータビジョン、自動音声認識、言語翻訳等の分野において広い応用を有する。トレーニング時間、メモリ要求、プロセッサの有用性(processor availability)、バッテリ電力消費量及びエネルギー効率は、DNNに関連する課題がある。
【発明の概要】
【発明が解決しようとする課題】
【0005】
一般的には、開示は、機械学習アルゴリズムに関連する技術を記載する。例えば、本開示は、ディープニューラルネットワーク(DNN)をトレーニングするための低精度法(すなわち、低精度重みを用いる方法)の使用を開示する。例えば、本開示は、DNNの精度が最適化された重み(precision-optimized weights)のセット及び同一のDNNの一定の精度の重み(fixed-precision weights)のセットを決定するトレーニング方法を記載する。DNNをトレーニングする方法は低精度であると考えられる。その理由は、精度が最適化された重みが一定の精度の重みと異なってもよい又は一定の精度の重みより低くてもよいからである。記憶位置(memory storage locations)、電力、処理サイクル及びコンピュータの他のリソースのような計算リソースは、比較的少ない量の利用可能な計算リソースを有する特定のタイプの装置と共に使用するDNNの性能及びDNNの適合性に関する考慮すべき重要なことである。精度が最適化された重みが一定の精度の重みより低いことがあるので、本開示の低精度法によって、DNN処理の低いメモリ要求及び低い計算要求を可能にする。一部の例において、低精度法は、計算リソースが低精度法によって用いられることがあるという意味で及びマイクロプロセッサが精度が最適化された重みを効率的に用いるために設計されることがあるという意味でマイクロプロセッサ設計に悪影響を及ぼすおそれがある。
【0006】
さらに、低精度トレーニング方法によって、最初のトレーニング段階後に学習を継続する人工知能(AI)システムを可能にする。追加的には、本開示の態様は、DNNの生涯学習法に関連し、学習と推論を同時に効率的にサポートすることができるハードウェアアーキテクチャにも関連する。本開示の技術によって、AIシステムは、エッジでの(at the edge)リアルタイム計算制約に適合するためのそれ自体の学習要求を選択及び設定(例えば、それ自体の重みのビット精度(bit precision)の設定)を行うことができる。一部の例において、本開示の技術は、最適パラメータの確率分布を仮定しない。
【課題を解決するための手段】
【0007】
一例において、本開示は、計算リソースの要求を減少させるためにディープニューラルネットワーク(DNN)をトレーニングするコンピュータシステムであって、DNNの重みのセットを記憶するメモリであって、DNNは、複数の層を有し、複数の層の各々に対して、重みのセットは、層の重みを有し、ビット精度値のセットは、層のビット精度値を有し、層の重みは、層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、層の重みは、層のニューロンに対する入力に関連するメモリと、DNNをトレーニングするように構成された機械学習システムを実行する処理回路であって、DNNをトレーニングすることは、重みのセット及びビット精度値のセットを最適化することを備える処理回路と、を備えるコンピュータシステムを記載する。
【0008】
他の例において、本開示は、計算リソースの要求を減少させるためにディープニューラルネットワーク(DNN)をトレーニングする方法であって、DNNの重みのセットを記憶することであって、DNNは、複数の層を有し、複数の層の各々に対して、重みのセットは、層の重みを有し、ビット精度値のセットは、層のビット精度値を有し、層の重みは、層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、層の重みは、層のニューロンに対する入力に関連することと、DNNをトレーニングするように構成された機械学習システムを実行することであって、DNNをトレーニングすることは、重みのセット及びビット精度値のセットを最適化することを備えることと、を備える方法を記載する。
【0009】
他の例において、本開示は、実行のときに、ディープニューラルネットワーク(DNN)の重みのセットを記憶することであって、DNNは、複数の層を有し、複数の層の各々に対して、重みのセットは、層の重みを有し、ビット精度値のセットは、層のビット精度値を有し、層の重みは、層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、層の重みは、層のニューロンに対する入力に関連することと、DNNをトレーニングするように構成された機械学習システムを実行することであって、DNNをトレーニングすることは、重みのセット及びビット精度値のセットを最適化することを備えることと、を一つ以上のプロセッサによって実行させる命令を記憶したコンピュータ可読データ記憶媒体を記載する。
【0010】
本開示の技術の一つ以上の例の詳細を、添付図面及び後の記載において説明する。技術の他の特徴、目的及び利点は、明細書、図面及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0011】
図1】開示の技術によるコンピュータシステムの一例を示すブロック図である。
図2】本開示の技術によるBiNetディープニューラルネットワーク(DNN)の動作の一例を示すフローチャートである。
図3】本開示の技術によるDNNをトレーニングする動作の一例を示すフローチャートである。
図4】本開示の技術による損失関数を決定するための動作の一例を示すフローチャートである。
図5】異種ニューラルアーキテクチャの一例を示すブロック図である。
図6A】BiNet及びLeNet-FP32の性能の一例を示す。
図6B】BiNet及びLeNet-FP32の性能の一例を示す。
図7】CNNの各層のパラメータを表すのに用いられるビット数を示す。
図8A】MNISTデータベースの性能及び圧縮の影響を示す。
図8B】CIFAR-10データベースの性能及び圧縮の影響を示す。
図9】ミニバッチに亘るLeNet-FP32と比較したBiNetの繰り返しに対する検証誤り率を示す。
図10】MNISTデータベース及びCIFAR-10データベースに対する線形ビットペナルティの種々の係数に対するBiNetの性能の一例を示す。
図11】階層からなるニューラルネットワークソフトウェアアーキテクチャである。
図12】プロセッサの異種のセットを備えるシステムアーキテクチャの一例及びシステムアーキテクチャリソースに対するニューラルネットワークソフトウェアアーキテクチャのマッピングの一例である。
図13】本開示の技術による機械学習システムの動作の一例を示すフローチャートである。
【発明を実施するための形態】
【0012】
図面及び説明の全体に亘って同様な参照文字は同様な要素を意味する。
【0013】
図1は、コンピュータシステム100の一例を示すブロック図である。図のように、コンピュータシステム100は、複数の層108A~108N(集合的に「層108」)を備えるディープニューラルネットワーク(DNN)106を有する機械学習システム104を実行する処理回路を備える。DNN106は、再帰型ニューラルネットワーク(RNN)及び畳み込みニューラルネットワーク(CNN)のような各種のディープニューラルネットワーク(DNN)を備えてもよい。
【0014】
一部の例において、コンピュータシステム100の処理回路は、マイクロプロセッサ、コントローラ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、同等の個別の論理回路若しくは同等の集積された論理回路又は他のタイプの処理回路のうちに一つ以上を含む。他の例において、コンピュータシステム100は、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム機、多機能テレビ、携帯端末、タブレット、携帯電話、スマートフォン等のような任意の適切なコンピュータシステムを備える。一部の例において、システム100の少なくとも一部は、クラウドコンピューティングシステム、データセンタ、又は、インターネット若しくは公衆又は専用通信ネットワーク、例えば、ブロードバンド、セルラー、Wi-Fi(登録商標)及び/又はコンピュータシステム、サーバ及びコンピュータデバイスの間でデータを送信する他のタイプの通信ネットワークのようなネットワークに分散される。
【0015】
一部の例において、コンピュータシステム100は、例えば、一つ以上のプロセッサ及びメモリ102により回路で実現される。メモリ102は、一つ以上の記憶装置を備えてもよい。コンピュータシステム100の一つ以上の構成要素(例えば、プロセッサ、メモリ102等)を、(物理的な、通信的な及び/又は作動的な)構成要素間通信を可能にするために相互接続してもよい。一部の例において、そのような接続を、システムバス、ネットワーク接続、プロセス間通信データ構造、ローカルエリアネットワーク、ワイドエリアネットワーク又は他のデータ通信方法によって設けてもよい。コンピュータシステム100の一つ以上のプロセッサは、コンピュータシステム100に関連する機能を実現してもよい及び/又はコンピュータシステム100に関連する命令を実行してもよい。プロセッサの例は、マイクロプロセッサ、アプリケーションプロセッサ、ディスプレイコントローラ、補助プロセッサ、一つ以上のセンサハブ及びプロセッサ、処理部又は処理装置として機能するように構成された他の任意のハードウェアを有する。コンピュータシステム100は、コンピュータシステム100に存在する及び/又はコンピュータシステム100で実行するソフトウェア、ハードウェア、ファームウェア又はその混成を用いて本開示の一つ以上の態様による動作を実行する一つ以上のプロセッサを用いてもよい。メモリ102の一つ以上の記憶装置は、複数の装置の間で分散されてもよい。
【0016】
メモリ102は、コンピュータシステム100の動作中の処理のための情報を記憶してもよい。一部の例において、メモリ102は、メモリ102の一つ以上の記憶装置の主目的が長期記憶でないことを意味する一時的なメモリを備える。メモリ102を、揮発性メモリとして情報の短期記憶を行うとともに動作を停止したときに記憶された内容を保持しないように構成してもよい。揮発性メモリの例は、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)及び従来知られている他の形式の揮発性メモリを含む。一部の例において、メモリ102は、一つ以上のコンピュータ可読記憶媒体を有する。メモリ102を、揮発性メモリより多くの量の情報を記憶するように構成してもよい。メモリ102を、不揮発性メモリ空間として情報の長期記憶を行うとともにオンオフサイクル後に情報を保持するように構成してもよい。不揮発性メモリの例は、磁気ハードディスク、光ディスク、フラッシュメモリ又は電気的プログラマブルメモリ(EPROM)若しくは電気的消去可能プログラマブルメモリ(EEPROM)の形態を含む。メモリ102は、本開示の一つ以上の態様に従って記載されるモジュールの一つ以上に関連するプログラム命令及び/又はデータを記憶してもよい。
【0017】
一つ以上のプロセッサ及びメモリ102は、ソフトウェアとして実現してもよいが一部の例においてハードウェア、ファームウェア及びソフトウェアの任意の組合せを含んでもよい一つ以上のモジュール又はユニットに対する動作環境又はプラットフォームを提供してもよい。一つ以上のプロセッサは、命令を実行してもよく、一つ以上の記憶装置は、一つ以上のモジュールの命令及び/又はデータを記憶してもよい。プロセッサ及びメモリ102の組合せは、一つ以上のアプリケーション、モジュール又はソフトウェアの命令及び/又はデータを検索、記憶又は実行してもよい。プロセッサ及び/又はメモリ102を、本開示の図1又は他の図に示す構成要素の一つ以上を含むがそれに限定されない一つ以上の他のソフトウェア及び/又はハードウェア構成要素に操作的に結合してもよい。
【0018】
図1の例において、DNN106は、入力データセット110から入力データを受信するとともに出力データ112を生成する。入力データセット110及び出力データ112は、各種情報を有してもよい。例えば、入力データセット110は、画像データ、映像データ、音声データ、ソーステキストデータ、数値データ、スピーチデータ等を有してもよい。出力データ112は、分類データ(classification data)、変換テキストデータ(translated text data)、画像分類データ(image classification data)、ロボット制御データ、書換データ(transcription data)等を有してもよい。さらに、本開示の他の箇所で説明するように、出力データ112は、ニューラルネットワークソフトウェアアーキテクチャ及びハードウェアアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアアーキテクチャのDNNのマッピングを有してもよい。
【0019】
上述したように、DNN106は、複数の層108を有する。層108の各層は、人工ニューロンの各セットを有してもよい。層108は、入力層108Aと、出力層108Nと、一つ以上の隠れ層(例えば、層108B~108M)と、を有する。層108は、完全接続層(fully connected layers)、畳み込み層、プーリング層及び/又は他のタイプの層を有してもよい。完全接続層において、以前の層(previous layer)の各ニューロンの出力は、完全接続層の各ニューロンの入力を形成する。畳み込み層において、畳み込み層の各ニューロンは、ニューロンの各領域に関連したニューロンからの入力を処理する。プーリング層は、ある層のニューロンクラスタ(neuron clusters)の出力を次の層の単一のニューロンに結合する。
【0020】
層108の各々の人工ニューロンの各入力は、本開示の技術による高精度重み114及び低精度重み116の対応する重みに関連する。DNN106のk番目の人工ニューロンの出力を、
【0021】
【数1】
【0022】
のように規定してもよい。式(1)において、yは、k番目の人工ニューロンの出力であり、φ(・)は、活性化関数であり、Wは、k番目の人工ニューロンの重み(例えば、高精度重み114又は低精度重み116)のベクトルであり、Xは、k番目の人工ニューロンに対する入力の値のベクトルである。一部の例において、k番目の人工ニューロンに対する一つ以上の入力は、他の人工ニューロンの出力値でない又はソースデータに基づかないバイアス項である。種々の活性化関数は、正規化線形ユニット(ReLU)、TanH、Sigmoid等のように従来知られている。
【0023】
本開示の技術によれば、メモリ102は、(ここでは重みの第1のセットと称する)DNN106の低精度重み116のセット、(ここでは重みの第2のセットと称する)高精度重み114のセット及びビット精度値118のセットを記憶する。本開示は、高精度重み114をWで表し、低精度重み116を
【0024】
【数2】
【0025】
で表す。後に詳しく説明するように、高精度重み114と低精度重み116の両方を、式(1)の重みとして用いてもよい。ビット精度値118は、DNN106の各層108のビット精度値を有する。層に対するビット精度値は、低精度重み116の重みのビット深度を表す。さらに、後に詳しく説明するように、トレーニング過程は、高精度重み114の値、低精度重み116の値及びビット精度値118を同時に決定してもよい。高精度重み114及び低精度重み116を有するDNN106の使用は、比較可能な出力データを生じさせることができる。しかしながら、低精度重み116が高精度重み114より少ないビットを有するので、メモリ102から低精度重み116を読み出すのに必要な動作を、メモリ102から高精度重み114を読み出すのに必要な動作より少なくすることができる。さらに、一部の例において、低精度重み116が高精度重み114より少ないビットを有するので、機械学習システム104は、更に少ないビットを占めるデータタイプを用いて低精度重み116を記憶することができる。例えば、機械学習システム104は、低精度重み116に対して8ビットの整数を用いてもよく、高精度重み114の各々に対して32ビットを用いてもよい。したがって、低精度重み116のみを用いてトレーニングした後に、メモリ要求を減少させることができる。さらに、読出し動作の回数を減少されることができ、その結果、遅延が小さくなるとともに電気的な消費が減少する。
【0026】
後に詳しく説明するように、機械学習システム104は、トレーニング過程の実行の一部として、機械学習システム104が入力データセット110の入力データに基づいて出力データ112を決定するためにDNN106の高精度重み114を用いるフィードフォワード段階を実行してもよい。さらに、機械学習システム104は、損失関数の勾配を計算する誤差逆伝播法を行ってもよい。損失関数は、出力データに基づいてコスト値を計算する。本開示の技術によれば、機械学習システム104は、損失関数の勾配に基づいて高精度重み114、低精度重み116及びビット精度値118を更新してもよい。機械学習システム104は、種々の入力データを用いてフィードフォワード法及び誤差逆伝播法を複数回実行してもよい。トレーニング過程の間又はトレーニング過程の完了後、機械学習システム104又は他の装置は、非トレーニング入力データに基づいて出力データを生成するために評価過程において低精度重み116を用いてもよい。
【0027】
図1の例において、メモリ102は、一つ以上のハイパーパラメータ120のセットも記憶する。ハイパーパラメータ120は、学習率を制御するハイパーパラメータを有してもよい。さらに、本開示の技術によれば、ハイパーパラメータ120は、損失関数のビット精度ペナルティ項(bit precision penalty term)の程度(severity)を制御する(本開示でλを付した)ハイパーパラメータを有してもよい。ビット精度値118(すなわち、DNN106の各層108の低精度ビット重み116で用いられるビット数)は、ビット精度ペナルティ項の値に基づいてもよい。したがって、ハイパーパラメータの種々の値の結果として、DNN106が高ビット精度の重みを用いる場合の種々の程度の場合に対してペナルティを課す損失関数となる。
【0028】
DNNは、アプリケーションデータの更に高いレベルの意味依存及び時空間依存(sematntic and spationtemporal dependencies)を学習するために段々大きくなるとともに層において段々深化する。実際には、過去10年間で、DNNパラメータサイズは、手書き数字を分類するための100万のパラメータしか用いない著しく簡単なLeNet-5折り畳みニューラルネットワーク(CNN)から2012年のImageNet画像分類コンペ(ImageNet image classification competition)で勝つために6000万のパラメータを用いたAlexNetCNN及び人の顔の認証のために1億2000万のパラメータを用いるDeeperfaceのような新たなDNNまでに飛躍的に成長した。100億のパラメータを有するネットワークさえも存在する。
【0029】
メモリ102がDNN106のパラメータ(例えば、高精度重み114、低精度重み116)を記憶するので、DNN106がメモリ102を用いる方法は重要である。例えば、メモリ102の記憶位置が多くなるに従って必要となるDNN106のパラメータが多くなる。さらに、メモリアクセス(すなわち、メモリの読出し及び書込み)は、電気的なエネルギーを必要とする。したがって、パラメータの記憶に利用できるメモリ102の記憶位置のサイズは、DNN106の学習容量(すなわち、学習するためのDNN106の容量)を反映することがあり、同時に、パラメータの記憶に利用できるメモリ102の記憶位置のサイズは、DNN106の計算効率及び処理時間に影響を及ぼすことがある。例えば、6億3000万のシナプス結合は、(100ギガフロップス/フレームで512×512画像と仮定される)約3テラフロップス/秒を消費する。さらに、大体の見積もりに基づいて、AlexNetCNNは、DRAMアクセスのみに対して8Wを消費し、それは、典型的な携帯装置に対する電力量をはるかに超える。したがって、推論モードにおけるこれらの最近のDNNに要求される演算及びランタイムメモリフットプリント(computation and run-time memory footprint)は、典型的な装置の電力量及びメモリサイズを超えることがある。大型のDNNは、100億のパラメータに到達することがあり、大型かつ深度の高いネットワークに向かう傾向がある。
【0030】
電力及びメモリサイズの問題を繰り返すと、電力密度はもはやムーアの法則に従って減少しないとともに演算スループットがエネルギー効率(例えば、ジュール/動作(joules/operation))をスケーリングする必要があることが十分理解される。最初に、動作のエネルギーは、(1)演算、例えば、浮動小数点演算のためのエネルギー、(2)データを記憶装置と処理コアの間で移動させるためのエネルギー及び(3)データを記憶するのに必要なエネルギーからなる。データ移動(例えば、メモリの読出し動作及び書込み動作)のためのエネルギーが計算のエネルギーコストを支配しそうであることが十分に説明される。この影響は、低い操業率/バイト率(low operations/byte ratio)及び不十分な局所動作(poor locality behaviors)を有するDNN計算特性によって増幅されることがある。
【0031】
メモリ性能は、パッケージピン、帯域幅及び周波数における並びに更に重要には特に数十年の間に変わらないメモリアーキテクチャにおける緩やかな成長において明らかである遅延計算(lag computation)を続ける。状況に応じたキャッシュ階層及びメモリ階層を用いる待ち時間隠蔽(latency hiding)はもはや有益でない。その理由は、エネルギー使用を隠すことができないからである。データ移動及び記憶エネルギーは、コストを生じ、したがって、管理されない場合には全体的な効率及びスケーラビリティを低下させる。
【0032】
正則化は、機械学習の過剰適合問題を解決するのに用いられる技術である。一般的には、正規化技術は、次の式(2)で示すようにDNNのトレーニングに用いられる損失関数にペナルティ項を加算することによって機能する。
【0033】
【数3】
【0034】
式(2)において、L(・)は、損失関数であり、λは、ハイパーパラメータであり、N(w)は、重みベクトルwのノルムである。機械学習において正規化を行うための従来の手法は、DNNに対して効果がないことが示された。LASSO及びL-2のような十分に研究された正規化技術は、パラメータの大きさを制御するがパラメータの精度を制御しない。Binary Connectとして知られている従来の研究は、正規化の特定の形態に1ビット精度パラメータを関連させる。特に、Binary Connectは、勾配が累算される記憶された重みの精度を保持しながら順方向伝播及び逆方向伝播の間にバイナリ重み(binary weight)を用いてDNNをトレーニングする方法である。
【0035】
歴史的に見て、パラメータのビットレベル精度(bit-level precision)は、DNNの圧縮のために後処理の下で研究された。最新のものは、予め一定のビットレベル精度を必要とする又はDNNパラメータを学習するステップ及びDNNパラメータを圧縮するステップに分割する。ここでの技術は、パラメータが対象の装置のリソース制約を特定する柔軟な方法を提供するとともにパラメータの粗いバイナリ表示からパラメータのきめ細かい32ビット表示までのDNN層ごとの最適なビット精度を見つけることができる両方の基準のバランスをとってもよい。
【0036】
これらの技術の一つの目的は、低精度重みに適合する新たな手法を研究することによって大きなDNNのメモリサイズの指数関数的成長に直接対処することである。ここでの技術は、これらの手法が浮動小数点の低精度整数への丸め又は再計算を行う簡単な切り捨ての自由裁量のアプリケーション(carte blanche application)を採用することができないという認識の下で省エネルギーのアルゴリズム性能のバランスをとってもよい。DNNは、典型的には、学習モデルに著しい冗長が存在するのでオーバーパラメータ化(over-parameterized)される。それに対し、習得表示のスパーシティ(sparsity of the learnt representation)は、DNNの高いアルゴリズム性能を提供するが、同時に、計算と記憶の両方において無駄が多いDNNに到達するのが容易である。これに関連して、スパーシティは、限られた(少ない)数の値しかとることができない低精度重みの使用を意味する。したがって、本開示の一部の例において、DNNスパーシティ(したがって、ロバストネス及びアルゴリズム性能)がモデルをオーバーパラメータ化することなく維持されるバランスを見つけることを目的とする。
【0037】
本開示で説明した技術からの複数の有利な結果がある。先ず、DNN106のメモリサイズを最適化することができる。次に、本開示で説明したトレーニング過程が学習目標に良好に案内することができるので学習率を高めることができる。その次に、結果的に得られるDNNが高性能及び低電力消費を実現することができる。
【0038】
学習率に関して、DNNのトレーニングにおける最も困難な解決していない課題の一つが限られたトレーニング時間内でのDNNのトレーニングであることに留意されたい。学習の観点からすれば、もっともな質問は、DNNの各層に対する最適なビット数は幾つであるか及び以前の作業に対して入力データセット110のトレーニングデータを用いてビット数を最適化する勾配降下アルゴリズムは何であるかである。固有の値の数としての可変ビット数は、パラメータによって取り出され、畳み込みネットワーク又は他のタイプのDNNの分類動作のためのレギュラライザ(regularizer)としてこれが直接用いられる。低レベルビット精度と最小記述長原理により引き出される正則化を用いる我々の定式化(formulation)との間の直接的な関係を形成する、機械学習文献のレギュラライザとして用いられる同等の行列ノルム(equivalent matrix norm)が存在しない。完全精度重み(full-precision weights)を有するネットワークと比較すると、ここでの技術は、トレーニングエポックの間に変動するビット数を用いる向上したいつでも行われる学習を示すことができる。
【0039】
ニューラルネットワークの能力の急増は、主に、より良いハードウェアへの遷移によって行われた。DNNは、基本的には、最も一般的であるとともに最も中心的な動作としての行列の乗算(更に詳しくは、ニューロンごとに一つの複数の重み付けされた足し算の計算)に基づく。行列の乗算は高度に並列化可能であるので、GPUを用いることによって、DNNは、著しく高速でスケーリング、実行及びトレーニングを行うことができる。これによって、非常に多いデータセットのトレーニング時間を、シリアルハードウェアで要求される数年から数週間又は数日まで減少させることができる。それは、最近になってAIで見られる性能の急激な向上の理由である。
【0040】
同時に、速度又はエネルギー消費に対する更なる制約を有するモバイルのプラットフォームを用いる際にDNN処理を更に適合しやすくするための新たなやり方をコンピュータアーキテクトによって検討するのが望ましいことがある。GPUは大規模な並列化からのスピードアップを行うが、スケーリング動作は制限される。その理由は、GPUがDNNで用いられる重み付けされた足し算の簡単化を十分に引き出していないからである。新たなハードウェアアクセラレータが発売され、そのほとんどは、DNN処理の整数ベースのサポート(integer-based support)を提供する。さらに、進化したナノエレクトロニクスは、製造のばらつき(manufacturing variance)が生じる傾向があり、これによって、装置の動作のばらつきが大きくなるとともに生産量に悪影響が及ぼされるおそれがある。本開示の技術の一つ以上を実現する例は、内在する論理(underlying logic)の複雑さを簡単化することができるとともに潜在的に最適なメモリサイズ及び設定を有する製造可能性に対処することができる。
【0041】
パラメータに許容される固有の値の数を、正則化の尺度とみなすことができる。したがって、後に更に詳しく説明するように、式(2)に示すようなペナルティ項としてN(w)を用いる代わりに、ペナルティ項を、DNN106のパラメータが有することができる固有の値の数としてもよい又は当該数に基づいてもよい。DNN106の表現力(expressive power)を、パラメータの許容された値のセットを制限することによって徐々に制御してもよい。したがって、ここでの技術は、DNN106のパラメータのトレーニングを正則化するビットレベル精度の概念を用いてもよい。これらの技術は、ビットレベル精度の概念とDNN106のパラメータトレーニングの正則化とを結び付けてもよい。
【0042】
ここでの技術は、上述したような二つの段階(DNNパラメータの学習及び圧縮)を用いる従来の作業を一般化及び包含してもよい。(圧縮、量子化及びDNNの近似化(approximation of DNNs)を含む)メモリサイズ、電力消費及び計算速度に対処する他の手法は十分ではない。その理由は、他の手法が(1)最適にトレーニングしたDNNが入力として与えられると仮定し、(2)ラベルが付されたグランドトゥルースデータに関する圧縮したDNNの性能に依存せず(agnostic)、(3)圧縮の任意の目標値に対して更に低いアルゴリズム性能を提供し、かつ、(4)トレーニング中に学習の急成長を示さないからである。ここでの技術を、学習した概念をトレーニングするとともに小さいフォームファクタ(small form factor)に圧縮する基本的能力に適用することができるので、技術は、ディープラーニングアプリケーション及びシステムの多数の分野で適用可能である。
【0043】
ここでの技術を用いることによって、DNN処理を更に効率的にサポートすることができるマルチビット精度を有するハードウェアアクセラレータを設計及び利用することができる。ここでの技術は、DNN106をトレーニングするときに対象分野の装置の仕様(a specification of a target field device)(例えば、空き容量)を考慮してもよく、特定の対象分野の装置の特定のトレーニングデータに対する学習の指導を行ってもよい。ここでの技術は、モバイルプラットフォーム及びスマートフォンを含むがそれに限定されない現実の世界のアプリケーションに対するDNNベースの機械学習の解決を展開する実行者(practitioner)の有益な手段となることができる。ここでの技術によって、リソースが制限された環境に対する有力なDNNを可能にする。ここでの技術は、潜在的に最適なビット精度及び重みを見つけることによって高度なナノテクノロジーにおける収益強化をサポートすることができる。ここでの技術は、リソース(電力、サイズ等)が今日の展開を制限する場合に(例えば、現場のロボット(robots in the field))高速のオンライン学習及び他のオンボードシステムをサポートすることができる。
【0044】
本開示は、ビット精度がトレーニング手順のパラメータの一部となるようにDNNをトレーニングする技術を記載する。現在のトレーニング方法は、モデル選択(例えば、学習率、ネットワークの規模、ネットワーク深度(network depth))及びトレーニング段階(例えば、多数の繰り返しの間のネットワークの重みを設定するための誤差逆伝播アルゴリズムの使用)からなる。本開示は、トレーニング段階の一部としてビット精度の最適化を含む方法を記載する。したがって、本開示は、パラメータとしてビット精度それ自体を有するDNN106のトレーニング方法を記載する。結果的に得られるDNNは、DNN106の層108の各々に対して異なるビット精度を有してもよい。そのような手法は、高速学習を示すことができる(すなわち、迅速に解決に向かうことができる)とともにDNNをトレーニングするための標準的な手法と比べて優れたターゲットDNN(例えば、グランドトゥルーに関する高いアルゴリズム性能)に到達することができる。
【0045】
手法を、一般的には、分類又は回帰のためのあらゆる勾配ベースのパラメータ学習に適用することができるが、本開示の本節の注意をCNNに限定する。本開示において、大文字記号は、テンソルを表し、小文字記号はベクトルを表す。X(l)は、l番目の層の入力を表す。X(l+1)は、l番目の層の出力を表す。W(l)は、l番目の層のパラメータを表す。Wは、(1),(2),...,(N)を付したN個の層を有する全てのCNNパラメータ{W(1),W(2),...,W(N)}のセットを示す。本開示において、
【0046】
【数4】
【0047】
は、ドット積を表し、φは、フィルタ処理のために出力に対して点ごとに適用される平滑化非線形(smooth non-linearity)を示す。yは、入力データセット110であるX(l)に対応する例のミニバッチに対するラベルである。
【0048】
図1の例において、DNN106は、複数のフィルタバンクと称される層(multiple filter banks called layers)(すなわち、層108)に対するフィードフォワード畳み込み(feed-forward convolutions)を実現するCNNを備えてもよい。畳み込み層の出力は、典型的には、各画素の近傍内の最大活性(maximum of the activations)を出力するプーリング層に接続される。十分に結合された層lの出力は、式(3)に示すように、層の入力とパラメータのドット積にすぎない。
【0049】
【数5】
【0050】
式(3)において、φは、W(l)及びX(l)に対して点ごとに適用される平滑化非線形である。畳み込み層は、入力の次元の一つに亘って重みを反復する(replicating)することによって特別な形態の重み共有を実現する。この場合、式(3)のドット積は、次の式(4)に示すように、カーネルW(l)を用いる畳み込み演算となる。
【0051】
【数6】
【0052】
本開示において、*は畳み込み演算を表す。畳み込み層は、典型的には、各画素の近傍内の最大活性を出力するプーリング層に接続される。近傍を「パッチ」と称してもよい。分類のために、上述したように生成されるパッチを、式(5)に示すように、ロジスティック回帰層の特徴として用いてもよい。
【0053】
【数7】
【0054】
式(5)において、任意のベクトル
【0055】
【数8】
【0056】
に対して、softmax(v)は、入力
【0057】
【数9】
【0058】
を有するベクトルである。CNNの出力は、D個のラベルの各々にスコアを割り当てるサイズD×1のベクトルである。
【0059】
CNNの記述を完了するために、X(l)を入力データ又は画像に設定する。一部の例において、予測ラベル(すなわち、DNN106による出力として生成したラベル)を、(1),(2),...,(N)を付したN層を有するCNNに対するarg maxX(l)としてもよい。換言すれば、機械学習システム104は、
【0060】
【数10】
【0061】
の最大値を有するインデックスiとしての予測ラベルを計算してもよい。種々の演算を次に示す。
【0062】
【数11】
【0063】
最尤推定は、トレーニングデータからフィルタを学習する最も一般的な方法である。
【0064】
【数12】
【0065】
を有するBの独立同分布(IID)入力ラベル対(X(l),y)のバッチを仮定すると、後に説明する損失関数は、平均対数尤度を取得する。IID仮定のために、尤度は、個別の例に亘る尤度の積に分解される。その後、対数の性質を用いると、積の対数は、対数項の和となる。
【0066】
【数13】
【0067】
ここでの技術は、線形変換を維持する範囲を用いてもよく、線形変換は、範囲を一定の段階(fixed steps)δに一様に離散化する。具体的には、W(l)は、層lの高精度重み114の浮動小数点表示を表し、
【0068】
【数14】
【0069】
は、bビットを用いる層lの重みの量子化形態である。bビットを用いる量子化は、以下の通りである。
【0070】
【数15】
【0071】
式(11)及び(12)を以下のように書き換えることができる。
【0072】
【数16】
【0073】
上述した式において、min(W(l))は、W(l)の最小の重みを返し、max(W(l))は、W(l)の最大の重みを返し、round(v)は、最も近い整数を返し、
【0074】
【数17】
【0075】
である。任意のW(l)及びbに対して、
【0076】
【数18】
【0077】
は、W(l)の値の範囲に亘る段階関数である。
【0078】
【数19】
【0079】
は、
【0080】
【数20】
【0081】
の各々に対応する
【0082】
【数21】
【0083】
からなる量子化テンソルを表す。一定のW及びb並びに変動するα≦w≦βに対して、
【0084】
【数22】
【0085】
は、δ/2の倍数の不連続性(discontinuities)を有する段階関数である。この問題は、勾配降下を用いる量子化された
【0086】
【数23】
【0087】
の関数としての損失の直接最適化を妨げる。
【0088】
一部の例において、量子化は、効率的であるとともに閉形式の出力による決定性がある。そのような例において、技術は、量子化による誤差を計算するためのK平均クラスタリングとして同一の誤差基準を用いる。すなわち、二乗の丸め誤差(squared rounding errors)の和は、次の通りである。
【0089】
【数24】
【0090】
式(14)及び本開示の他の箇所において、
【0091】
【数25】
【0092】
は、ベクトルvの2次元ノルムの二乗を表す(すなわち、
【0093】
【数26】
【0094】
である。K平均クラスタリングの目的関数と同様に、式(14)で規定した二乗の丸め誤差の和は、量子化のために凸であるとともに微分可能な大きさ(convex and differentiable measure)となる。一定のbに対して、q(w,b)は、あるスカラー
【0095】
【数27】
【0096】
に亘って一連の放物線を形成してもよく、その値は、0≦q(w,b)≦δ/2に制限される。
【0097】
一部の例において、低精度重み116は、2の整数乗(integer power)に制限される。例えば、低精度重み116は、2-n...2...2の値を有してもよく、この場合、nのあり得る値は整数である。更に詳しくは、低精度重み116は、次のように規定される。
【0098】
【数28】
【0099】
式(15)において、
【0100】
【数29】
【0101】
は、整数のセットである。換言すれば、低精度重み116は、0,±1,±2,±4,...,及び±1/2,±1/4,±1/8,...であってもよい。
【0102】
低精度重み116が2の整数乗に制限される例において、DNN106が推論モードで動作するときにDNN106の人工ニューロンの出力値を計算するために乗算演算の代わりに論理シフト演算を行う。この結果、DNN106が推論モードにおいて更に効率的であるとともに更に短い待ち時間で動作することができる。その理由は、シフト演算が乗算演算より複雑でないからである。2の整数乗である値の選択は、高精度重み114の量子化を表す。2の整数乗以外の他のマッピングを、例えば、マッピングに基づく乗算演算又は乗算演算の概算を好んで用いるためにハードウェアがこれらのマッピングを利用できるときに選択することができることを理解すべきである。例えば、アナログ回路は、乗算演算と同等である回路動作(例えば、分圧器又は電流分割器)を好んで用いるためにアナログ値の三進コード化(ternary encoding)(低、中、高)を用いてもよい。高精度重み114と低精度重み116の間の値の分散の適合(match the distribution of values)を更に良好におこなうために、機械学習システム104は、量子化が微分可能でない場合でも、DNN106のトレーニングの間に、高精度重み114のコード化された分散を最適に維持する量子化関数を選択してもよい。例えば、機械学習システム104は、次の量子化関数を用いてもよい。
【0103】
【数30】
【0104】
式(16)において、wは、高精度重み114の一つであり、
【0105】
【数31】
【0106】
は、低精度重み116のうちの対応するものである。式(16)において、sign(w)は、(例えば、0を中間にした値の所定の範囲で)重みwの符号を返す又は零を返す関数である。roundは、丸め関数である。一部の例において、roundは、確率的丸めを用いて実現される。確率的丸めは、0.3が70%の確率で0に丸められるとともに30%の確率で1に丸められるような数の確率的丸め方法を意味する。0.5の値は、50対50の確率で0又は1に丸められる。
【0107】
低精度重み116が2の整数乗に制限される一部の例において、機械学習システム104は、次の量子化関数を用いてもよい。
【0108】
【数32】
【0109】
式(17)において、q(w;θ(l))を、パラメータw(すなわち、高精度重み114)の変換としてもよい。さらに、式(17)において、θ(l)は、各層lに対するパラメータである。一部の例において、q(w;θ(l))を次のように規定してもよい。
【0110】
【数33】
【0111】
式(18)において、θ及びθはパラメータである。θ (l)及びθ (l)を付した各層に対するθ及びθの種々の値が存在してもよい。したがって、式(18)において、下付き文字のない記号θは、θ,θ等のような一つ以上のパラメータを表してもよい。したがって、機械学習システム104が式(17)の量子化関数の式(18)を用いる例において、機械学習システム104は、
【0112】
【数34】
【0113】
を次のように決定してもよい。
【0114】
【数35】
【0115】
したがって、本例において、低精度重み116のセットの各重みについて、機械学習システム104を、低精度重み116の更新の一部として、機械学習システム104が低精度重み116のセットの重みを2の指数値の累乗を乗算した符号値(sign value)に等しくするように決定できるように構成してもよく、この場合、符号値は、高精度重み114のセットの対応する重みの符号を表し、指数値は、高精度重み114のセットの対応する重みの2を底とする対数に基づく。
【0116】
式(18)及び(19)において、θ及びθは種々の値を有してもよい。例えば、恒等変換(identity transform)を考えたときにθ=0及びθ=1である。θ=θ=0の場合は、重みwの符号に基づく三進量子化である。θ<0;θ<0の場合は、焦点及び偏心がθによって制御される双曲線の族を与える。θ>0の場合は、双曲線正接関数の族を与える。一例において、Wは、次の行列である。
【0117】
【数36】
【0118】
この場合、θ=-1及びθ=3.5である。本例において、機械学習システム104は、
【0119】
【数37】
【0120】
を次のようになるように決定してもよい。
【0121】
【数38】
【0122】
2.5の値が大きな量子化誤差を有する2-6=0.015625に量子化されたことに留意されたい。一部の実験は、量子化誤差が高精度のために非常に重要でないこと及びθの学習した値が重要であることを示した。
【0123】
低精度重み116の各々が2の整数乗である一部の例において、機械学習システム104は、完全な整数値(full integer value)又は浮動小数点の値の代わりに指数及び符号のみを記憶することによって低精度重み116を記憶してもよい。これは、記憶領域を節約することができる。例えば、指数の最大値が127である例において、機械学習システム104は、浮動小数点のパラメータの記憶と比較される4Xモデル圧縮に8ビットの整数を用いることができる。
【0124】
パラメータの量子化のための多種多様の動機がある。先ず、小型の組込式携帯の分野の装置への配置が可能になるように、トレーニングされたCNNモデルのメモリの専有面積を減少させることが望ましい。次に、これらの装置は、CNNモデルを用いる推論に必要な高度の計算要求を満足しない。次に、トレーニングされたCNNモデルのエネルギー及び電力消費を減少させることが望ましい。次に、高度なマイクロエレクトロニクスを用いて組み込まれた装置のプロセッサは、製造のばらつきを有することがあり、これは、CNNモデルを用いる推論のために異なる精度が要求されることがある。ここでの技術は、事後の最適化及び分析を行うことなくCNNのトレーニングの間にこれらの懸案事項に対処することができる。ここでの技術は、パラメータによってとられる固有の値の数を制限することができる。第1の注目は、CNNのパラメータによってとられる値の範囲が小範囲内にあることである。したがって、ここでの技術は、小範囲内の少数の固有の値を表すために著しく少ないビットを用いることができる。
【0125】
本開示の他の箇所で説明するように、以前の研究は、確率的丸め、密度に基づく量子化及びK平均クラスタリングを含む更に複雑な量子化方法について行われた。本開示の例は、誤差逆伝播によって学習したビット数をCNNのパラメータと同時に許容する簡単な丸め方法を用いてもよい。本開示の一部の例において、機械学習システム104は、決定論的丸めを用いる。一部の例において、機械学習システム104は、straight through estimatorを用いた確率的丸めを用いる。straight through estimatorを用いることは、誤差逆伝播を用いてトレーニングを行う間に機械学習システム104が離散関数を無視することを意味する。量子化は、値の範囲を、「ビン」と称する単一の値にする。「ビン」の一様な置換が線源分布(source distribution)に関係なく平均二乗誤差を最小にするのに漸近的に最適となることに留意されたい。本開示の種々の例は、ビン指標(bin indices)を実値(real value)にする任意の微分可能な変換と連携することができ、例えば、対数スケールの量子化(logarithmic scale quantization)を用いることができる。生来の浮動小数点の精度(native floating point precision)も非線形量子化であることを思い出されたい。
【0126】
以前の研究は、例えば、パラメータの密度、フィッシャー情報量及びK平均クラスタリングを用いる不均一ビニングスキームについて行われた。K平均手法が二乗誤差を最小にするとしても、K平均手法は、クラスタリング及び誤差逆伝播のための二つの個別の段階を有する更に複雑なアルゴリズムを必要とする。均一ビニングスキームは、経験的には密度に基づくビニングより優れている。その理由は、パラメータの当初の推定のピーク(the peaks of the initial estimate of parameter)が必ずしも最適なパラメータに向かうように学習指導を行わないからである。K平均クラスタリングも二乗誤差を最小にするが、K平均クラスタリングは、誤差逆伝播と一般的に微分可能でない(ハード)クラスタ割当て((hard)cluster assignment)と交互に行うステップを必要とする。
【0127】
本開示の技術は、あらゆる微分可能変換(differentiable transform)と連携してもよく、量子化の線形スケールは、αとβの間の等距離ビンを用いる設計上の選択である。例えば、事後圧縮アルゴリズム(post-hoc compression algorithm)の(https://arxiv.org/pdf/1603.01025.pdfから入手できる)Daisuke Miyazaki等による“Convolutional Neural Networks using Logarithmic Data Representation”,arXiv:1603.01025に示すような対数量子化を用いることができる。指数ビット及び端数を記憶するための余剰ビットを表す少数のビットを用いる生来の浮動小数点の精度も非線形量子化であることを思い出されたい。(https://arxiv.org/pdf/1510.00149.pdfから入手できる)Song Han等による”Deep Compression:Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding“, arXiv:1510.00149において、線形量子化は、逆累積分布関数(CDF)サンプリングを介してWの分布のピークに注目する密度に基づく量子化より優れた性能を示した。逆CDFサンプリングは、確率分布から乱数を標本抽出(sample)する方法であり、例えば、コインが表である確率が0.3である場合、無作為事象がどちらであるかをどのように標本抽出しますか?0と1の間の乱数を標本抽出し、乱数が0.3未満である場合、表である。逆CDFサンプリングは、確率分布における技術用語である。ここでの技術は、確率的勾配降下法を用いてWの値及びbの値を同時に最適化することができる。ここでの技術によって、各層は、種々の量子化を学習することができ、それは、有益であることが示された。
【0128】
一部の例において、学習の目的は、少ない総数のビットを有するパラメータWを有するCNNに到達することである。例えば、誤差逆伝播を介してネットワークのパラメータと連携してビット数を学習することを目的とする。したがって、一部の例において、層ごとの量子化を、CNNの各層lのW(l)及びb(l)に採用する。しかしながら、損失関数
【0129】
【数39】
【0130】
は、パラメータ値の範囲に亘って連続的でないとともに微分可能でない。さらに、Wの小さい変化が
【0131】
【数40】
【0132】
で反映されないので、損失は、Wの小さい変化に対して一定のままであり、確率的勾配降下法はプラトーのままとなる(remain in plateaus)。したがって、一つ以上の例によれば、機械学習システム104は、量子化誤差q(w,b)が小さくなるように高精度重み114(W)を更新する。直感では、W及び
【0133】
【数41】
【0134】
が近い(close)ときに、機械学習システム104は、代わりにl(W)を用いることができる。機械学習システム104は、量子化関数qによって正則化された負の対数尤度である損失関数を最小にしてもよく、この場合、qを、式(14)又は式(18)のような本開示の例のいずれかに従って規定してもよい。
【0135】
bが一定でないとき(すなわち、bが誤差逆伝播を用いて決定されたとき)、bの値は、量子化誤差を最小にするために最大(例えば、32ビット)にされる。したがって、本開示の技術によれば、ペナルティ項が、ビット数すなわちネットワークパラメータによって取り出される固有の値の数に対して加えられる。均一に離間した量子化モデルによって、固有の値の数に対する簡単な関数が可能になる。本開示の技術によれば、機械学習システム104は、CNNの各層lに対する
【0136】
【数42】
【0137】
及びb(l)を学習するために層ごとの量子化を採用する。例えば、機械学習システム104は、上述した式(7)及び式(8)で規定したl(W)並びに上述した式(14)で規定したq(w,b)の関数として、式(20)で規定する損失関数
【0138】
【数43】
【0139】
を用いてもよい。
【0140】
【数44】
【0141】
式(20)において、λ及びλは、量子誤差を最小にする目的とビット深度を最小にする目的の間のトレードオフを調整するために用いられるハイパーパラメータである。λ=0及びλ=1であるとき、CNNは、ビットペナルティのために層ごとに1ビットを用いる。λ=1及びλ=0であるとき、CNNは、量子誤差を最小にするために層ごとに最大の許容されるビット数(例えば、32ビット)を用いる。パラメータλ及びλは、量子誤差及び分類誤差への影響に対するビットのコストを規定する際に柔軟性を持たせる。
【0142】
低精度重み116が2の整数乗に制限される例のような一部の例において、機械学習システム104は、次の式(21)で規定される損失関数
【0143】
【数45】
【0144】
を用いてもよい。
【0145】
【数46】
【0146】
式(21)において、l(W),λ,λ及びbは、式(20)におけるものと同じ意味を有してもよい。しかしながら、式(21)において、D(W,θ)は、蒸留損失(distillation loss)を意味する。蒸留損失は、機械学習システム104が高精度重み114(W)を用いるとともに低精度重み116
【0147】
【数47】
【0148】
を用いて同一の入力でDNN106を実行するときにDNN106によって生成された出力の間の差を示す。式(19)に関連して示したように、低精度重み116を高精度重み114(W)及びパラメータθから計算してもよい。したがって、Dを、式(21)に示すようなW及びθによってパラメータ化してもよい。
【0149】
一部の例において、ハイパーパラメータの値を、一つ以上のリソース(例えば、FPGAファブリック又はGPUコア)の利用可能性、アルゴリズムタスクに基づくデータの品質(例えば、不鮮明な画像は高精度ネットワークを必要とすることがある。)又は他の要因に基づいて(例えば、機械学習システム104又は技術者によって)選択してもよい。一部の例において、ハイパーパラメータの値を、高度なナノテクノロジーにおける製造のばらつきに基づいて選択してもよい。ビット精度、記憶及びエネルギー消費の密結合(close coupling)のために処理の待ち時間及びエネルギー消費を減少させることができる。
【0150】
一方、一定のWが与えられた場合のbの更新を考察する。ビンの数を半分にすること又は倍にすることに対応する更新についての二つの選択を考える。Wが最適であるとともにλ=0である場合、これは、最小の量子誤差を有するビンを見つけることに対応する。ほとんど全ての場合において、これは、Wの範囲内の32ビット全てを用いることに対応する。したがって、λ≠0のペナルティが各ビンに加えられ、その結果、量子誤差とビンの数の間のトレードオフが存在する。λ=0のとき、この結果として、ペナルティのために層ごとに1ビットを用いる。
【0151】
機械学習システム104がトレーニング中に式(20)に従って損失関数を計算する例において、機械学習システム104は、式(22)及び式(23)で表現される次の規則を用いてW及びbを更新してもよく、高い浮動小数点の精度を保持することによってWに更新される。
【0152】
【数48】
【0153】
式(22)及び式(23)において、μは、学習率を表すハイパーパラメータである。式(22)におけるWの更新された値は、式(14)に示すような量子化を用いてWに投影される。機械学習システム104は、式(22)及び式(23)に関する勾配を計算するBergstra等による”Theamo:A cpu and gpu math compiler in python“,In Proc.9th Python in Science Conf.,pages 1-7,2010(以下、”Theano“)において与えられる自動微分(automatic differentiation)を用いてもよい。
【0154】
式(24)に示すように、式(23)の符号関数は、演算対象が0に近くない場合には符号の演算対象を返し、演算対象が0に近い場合には符号関数は0を返す。これによって、学習率及び勾配が0になるときにビット数を収束させることができる。一部の例において、ε=10-9である。
【0155】
【数49】
【0156】
重みが2の累乗に制限されるとともに機械学習システム104が式(21)に示すような損失関数を計算する例のような一部の例において、各層lに対して、機械学習システム104は、次の式に従って層lのビット深度(すなわち、b(l))を更新してもよい。
【0157】
【数50】
【0158】
式(27)、式(28)及び式(29)において、q(w,b)を、式(18)に示すように規定してもよい。式(18)がθの値及びθの値に依存することに留意されたい。したがって、本例において、複数の層の各々に対して、機械学習システム104を、層に関連する重みの第2のセットの重み(すなわち、高精度重み114)に量子化関数(例えば、θ+θlog|w|)を適用することによって生成された値を丸めることにより層に対する量子化された値のセットを決定するように構成してもよい。さらに、機械学習システム104は、層に対する量子化された値のセットの最大値及び層に対する量子化された値のセット最小値を決定してもよい。この場合、機械学習システム104は、量子化された値のセットの最大値及び量子化された値のセット最小値によって規定される範囲の底が2の対数に基づいて層のビット精度値(b(l))を設定してもよい。したがって、本例において、層lの低精度重みを、b(l)ビットの符号値及び整数としてメモリ102に記憶させてもよい。値b(l)それ自体をメモリ102に記憶させる代わりに、メモリ102は、θ (l)の値及びθ (l)の値を記憶するとともに上記の式(25)~(29)に示すようにθ (l)及びθ (l)からb(l)を計算してもよい。
【0159】
式(20)の損失関数は、Wに対する小さい及び/又は大きい更新を推奨し、中間サイズの更新を妨げる。説明のために、{0,-1,+1}(すなわち、±1)の二つのビンを考察するとともに0に等しい一部の重みを考察する。一般的な勾配降下法は、あらゆる方向の重みを更新するが、1/2未満の大きさの更新は、
【0160】
【数51】
【0161】
を変更せず、したがって、分類損失を改善しない。さらに、重みを丸めて0にする際に更新によって量子化誤差が生じる。同様に、1/2と1の間の大きさの更新によって量子化ペナルティが生じる。式(20)において規定されるような(又はl(W)+q(w,b)によって規定されるような)損失を用いた最適な更新を±1としてもよく、いずれにしても、量子化誤差を生じさせることなく尤度推定量(likelihood estimate)を改善させる。
【0162】
【数52】
【0163】
が凸であるとともに量子化されたパラメータに対する負の対数尤度の微分可能緩和(differentiable relaxation)であることに留意されたい。
【0164】
【数53】
【0165】
が少数ビットを用いる小さい量子化誤差の制限に対応するラグランジュであるl(W)の上限であることは明らかである。式(14)の均一に離間した量子化によって、固有の値の数に対するこのような簡単な関数形式が可能になる。
【0166】
分類損失と組み合わされる量子化ペナルティは、学習曲線に重大な影響を有することがあり、経験的に示すような一部の場合において、学習率が一定ダルときに学習の速度を上げることがある。この現象は、量子化がパラメータの微小な変化を無視するとともにパラメータに対するかなりの量の変化を増幅することによってレギュラライザの役割を果たすという点でバイナリニューラルネットワークに対する以前の研究で注目された。さらに、CNNの最終パラメータが双峰型分布を有することが以前の研究において示された。DNNの近似及び圧縮についての以前の研究の大部分は、この利益を活用しない。その理由は、DNNが学習を事後量子化から切り離す又は予めトレーニングされたネットワークを設けていると仮定するからである。
【0167】
一部の例において、トレーニングを完了すると、機械学習システム104は、高精度重み114(W)を廃棄するとともに各層の
【0168】
【数54】
【0169】
α及びδのみを記憶してもよい。この場合、機械学習システム104は、DNN106の低精度重み
【0170】
【数55】
【0171】
を用いてもよい。機械学習システム104は、層の全てのパラメータをビンの指標に対応する整数としてコード化してもよく、これによって、低精度重み116の必要な記憶領域を著しく減少させることができる。(例えば、FPGAを用いて)畳み込み及びドット積を迅速に求めることを目的とするハードウェアアクセラレータを設計するために次の式(30)に示すようなパラメータの形態を利用してもよい。
【0172】
【数56】
【0173】
式(30)において、zは、ビンの指標である。したがって、各層に対して、機械学習システム104は、各層についてαの一つの値及びδの一つの値のみをメモリ102に記憶させるとともに層の各入力に対する個別の整数値zを記憶してもよい。
【0174】
低精度重み116が2の整数乗に制限される一部の例において、トレーニングを完了すると、機械学習システム104は、高精度重み114(W)を廃棄するとともに低精度重み116
【0175】
【数57】
【0176】
の値を指数値として記憶してもよい。したがって、機械学習システム104は、低精度重み
【0177】
【数58】
【0178】
に対する値zを記憶するとともに低精度重み
【0179】
【数59】
【0180】
を次のように再構成してもよい。
【0181】
【数60】
【0182】
最終モデルを記憶するのに必要な記憶容量を著しく減少させることができる。その理由は、我々の手法によってビット精度の選択をトレーニング過程の一部として行うことができるからである。機械学習システム104は、層ごとの二つの浮動小数点のみを用いてもよく及び/又は層ごとの二つの浮動小数点のみを記憶してもよく、CNNの全てのパラメータを整数としてコード化してもよい。逆に、推論又は予測のために整数の間の演算に加えて二つの浮動小数点演算しか必要としない。したがって、DNN106を、大抵の分野の装置(most field devices)、FPGA及び複雑なプログラマブル論理装置(CPLD)、携帯装置等の演算能力を有しながら簡単に配置することができる。
【0183】
これは、対象分野の装置の仕様(例えば、メモリの空き容量)も考慮することができるとともに特定のトレーニングデータ及び装置に対する学習の指導を行うことができるDNNをトレーニングする一般的な方法である。例示的なタイプの対象分野の装置は、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、サーバコンピュータ、モノのインターネット(IoT)装置、自律的走行車、ロボット等を含んでもよい。本開示は、BitNet DNNのような本開示の技術に従ってトレーニングされたDNNに注意を向けてもよい。BitNet DNNは、互いに異なる層に対して互いに異なるビット精度値を有してもよい。BitNet DNNは、画像認識から自然言語処理までの多数の領域に適用できる。BitNet DNNは、モバイルプラットフォーム及びスマートフォンを含むがそれに限定されない実際のアプリケーション(real world application)に対してDNNに基づく機械学習解決を展開する実務者に有益となることができる。本開示の技術によって、リソース制約された環境に対する効果的なDNNを可能にする。メモリサイズを減少させるために基本的なDNN処理を簡単化するための連結及び新たな形態の並行処理を見つけることは有利となる。本開示の他の箇所で詳しく説明するように、機械学習システム104は、ニューラルネットワークソフトウェアアーキテクチャの他のDNNをハードウェアアーキテクチャにマッピングするためにDNN106を用いてもよい。さらに、一部の例において、機械学習システム104は、種々のハードウェアアーキテクチャでの動作のためにBitNet DNNをトレーニングしてもよい。
【0184】
図2は、本開示の技術によるBitNet DNNの例示的な動作を示すフローチャートである。図2の例において、メモリ102は、DNN106の重みのセット及びDNN106の精度値のセットを記憶する(200)。DNN106は、複数の層108を有する。複数の層108の各々に対して、重みのセットは、層の重みを有し、精度値のセットは、層のビット精度値を有する。層の重みは、層のビット精度値に等しいビット精度を有する値を用いてメモリ102で表される。例えば、層のビット精度が5に等しい場合、層の重みの各々を、上述した式(30)に示すように、(例えば、5ビットを有する整数としての)5ビット指標、オフセット値α及び量子化ステップサイズ値δを用いて表してもよい。本例において、メモリ102は、各層に対して一つのオフセット値α及び一つの量子化ステップサイズ値δを記憶してもよい。重みが2の整数乗に限定される例において、各層に対する重みを、層のビット精度値に等しいビット精度を有する指数値を用いてメモリ102で表してもよい。層の重みは、層のニューロンに対する入力に関連する。
【0185】
さらに、図2の例に示すように、機械学習システム104は、DNN106をトレーニングしてもよい(202)。DNN106をトレーニングすることは、重みのセット及びビット精度値のセットを最適化することを備える。したがって、ビット精度値は、DNN106のトレーニング中に更新される。その結果、DNN106の層108の二つ以上は、互いに異なるビット精度を有してもよい。一部の例において、DNN106の層108の全ては、互いに異なるビット精度を有する。
【0186】
機械学習システム104は、DNN106をトレーニングすることの一部として、複数の繰り返しに亘る誤差逆伝播アルゴリズムを適用してもよい。誤差逆伝播アルゴリズムの各繰り返しは、重みのセットを更新してもよく、ビット精度値のセットを最適化してもよい。逆伝播アルゴリズム及びビット精度の最適化の例示的な詳細を、図3に関連して説明する。
【0187】
図3は、本開示の技術によるDNN106をトレーニングための例示的な動作を示すフローチャートである。上述したように、機械学習システム104は、DNN106をトレーニングするための複数の繰り返しを実行してもよい。後に説明するように、機械学習システム104は、複数の繰り返しの各々に対する図3の動作(300)~(308)を実行してもよい。
【0188】
図3に関連して、上述した低精度重み116(図1)のセットは、重み
【0189】
【数61】
【0190】
の第1のセットである。トレーニング中、メモリ102は、複数の層の各々に対する重みの一定の精度セットを有する重み(すなわち、高精度重み114(図1))の第2のセットを記憶してもよい。高精度重み114のセットの各重みは、予め規定された最高ビット精度値(例えば、32ビット、16ビット等)に等しいビット精度を有してもよい。低精度重み
【0191】
【数62】
【0192】
(すなわち、低精度重み116)のセットは、複数の層の各々に対する重みの精度が最適化されたセットを有する。式(20)のような一部の例において、低精度重み116のセットの各重みは整数である。一部の例において、低精度重み116のセット各重みは2の累乗である。ビット精度値(b)(すなわち、ビット精度値118(図1))のセットは、複数の層の各々に対するビット精度値を有する。複数の層の各々に対して、重み
【0193】
【数63】
【0194】
の精度が最適化されたセットの各重みを、層に対するビット精度値に等しいビット精度を有する値を用いてメモリ102において表してもよい。機械学習システム104は、DNN106をトレーニングするための複数の繰り返しを実行することの一部として、複数の繰り返しの各々に対する動作(300)~(308)を実行してもよい。
【0195】
特に、図3の例において、機械学習システム104は、第1の入力データセットに基づいて第1の出力データセットを計算するためにDNN106のニューロンの入力の重みとして高精度重みのセットを用いてもよい(300)。例えば、機械学習システム104は、重みwとして重みの第2のセットを用いて、式(1)又は他の活性化関数に従ってDNN106の人工ニューロンの各々の出力値を計算してもよい。第1の出力データセットを、DNN106の出力層108Nの出力yとしてもよい。
【0196】
追加的には、機械学習システム104は、損失関数を決定してもよい(302)。例えば、機械学習システム104は、データラベル対、第1の出力データセット、ビット精度値118のセット、高精度重み114及びハイパーパラメータ120のセットに基づいて損失関数を決定してもよい。データラベル対は、第1の入力データセット及びラベルを有する。図4は、後に詳しく説明するように、損失関数を決定するための例示的な動作を示すフローチャートである。他の例において、損失関数を種々の方法で決定してもよい。例えば、損失関数は、本開示の他の箇所で説明するような一つ以上の追加の係数を有してもよい。
【0197】
さらに、図3の例において、機械学習システム104は、損失関数に基づいて高精度重み114のセットを更新する(304)。例えば、機械学習システム104は、式(22)に示すように高精度重み114(W)のセットを更新してもよい。したがって、機械学習システム104は、高精度重み114の更新されたセットが次のようになるように高精度重み114の更新されたセットを決定してもよい。
【0198】
【数64】
【0199】
この場合、Wは、高精度重み114のセットであり、μは、学習率であり、
【0200】
【数65】
【0201】
は、低精度重み116のセットであり、
【0202】
【数66】
【0203】
は、高精度重み114のセットに対する損失関数の偏微分である。
【0204】
さらに、機械学習システム104は、精度値のセットを更新してもよい(306)。例えば、機械学習システム104は、式(23)に示す損失関数のような損失関数に基づいてビット精度値118のセットを更新してもよい。したがって、機械学習システム104は、ビット精度値118の更新されたセットが
【0205】
【数67】
【0206】
に等しくなるよう設定するようにビット精度値118の更新されたセットを決定してもよく、この場合、bは、ビット精度値118のセットであり、μは、学習率であり、
【0207】
【数68】
【0208】
は、低精度重み116のセットであり、
【0209】
【数69】
【0210】
は、ビット精度値118のセットに対する損失関数の偏微分であり、sign(・)は、関数の引数の絶対値が予め決定されたしきい値未満でない場合に関数の引数の符号を返すとともに関数の引数の絶対値が予め決定されたしきい値未満である場合に0を返す関数である。
【0211】
低精度重み116が2の整数乗に制限される例のような一部の例において、機械学習システム104は、式(25)~(29)に基づいてビット精度値118のセットを更新してもよい。したがって、機械学習システム104は、層に対する更新された第1のパラメータが
【0212】
【数70】
【0213】
に等しくなるよう設定するように層に対する更新された第1のパラメータを決定し、この場合、θは、層に対する第1のパラメータであり、μは、学習率であり、
【0214】
【数71】
【0215】
は、θに対する損失関数の偏微分である。追加的には、機械学習システム104は、層に対する更新された第2のパラメータが
【0216】
【数72】
【0217】
に等しくなるよう設定するように層に対する更新された第2のパラメータを決定し、この場合、θは、層に対する第2のパラメータであり、μは、学習率であり、
【0218】
【数73】
【0219】
は、θに対する損失関数の偏微分である。本例において、機械学習システム104は、量子化関数θ+θlog|w|を適用することによって層に対する量子化された重みのセットを決定してもよく、この場合、wは、層に関連する重みの第2のセットの重みを表す。機械学習システム104は、層に対する量子化された重みのセットの最大重み及び層に対する量子化された重みのセットの最小重みを決定してもよい。機械学習システム104は、(例えば、式(29)に示すような)量子化された重みのセットの最大重み及び量子化された重みのセットの最小重みによって規定される範囲の底が2の対数に基づいて層のビット精度値を設定してもよい。
【0220】
機械学習システム104は、高精度重み114(W)のセットを更新した後及びビット精度値118のセットを更新した後、高精度重み114(W)の更新されたセット及びビット精度値118の更新されたセットに基づいて低精度重み116
【0221】
【数74】
【0222】
のセットを更新してもよい(308)。例えば、機械学習システム104は、式(13)に示すように低精度重み116
【0223】
【数75】
【0224】
のセットを更新してもよい。したがって、機械学習システム104は、複数の層の各々に対して、層に対する更新された精度が最適化された重みが
【0225】
【数76】
【0226】
に等しくなるように低精度重み116の更新されたセットを更新してもよく、この場合、αは、層に対する重みの一定の精度のセット(すなわち、高精度重み114のセット)の最小重みであり、Wは、層に対する重みの一定の精度のセットであり、δは、層に対する重みの一定の精度のセットの最小重みから層に対する重みの第2の一定の精度のセットの最大重みまでの離散化された範囲の一定のステップの総数であり、round(・)は、丸め関数である。本例において、δを
【0227】
【数77】
【0228】
に等しくしてもよく、この場合、βは、層に対する重みの一定の精度のセットの最大重みであり、bは、層に対するビット精度値である。
【0229】
低精度重み116のセットが2の整数乗に制限される一部の例において、機械学習システム104は、低精度重み116のセットの各重みに対して、2の指数値の累乗が乗算された符号値に等しくなる低精度重み116のセット重みを決定してもよい。本例において、符号値は、高精度重み114のセットの対応する重みの符号を表す。本例において、指数値は、高精度重み114のセットの対応する重みの2を底にする対数に基づく。例えば、機械学習システム104は、式(19)に示すように低精度重み116の更新されたセットを決定してもよい。
【0230】
トレーニング過程とは別に、機械学習システム104は、第2の入力データセットに基づいて第2の出力データセットを計算するためにDNN106のニューロンの入力の重みとして低精度重み116
【0231】
【数78】
【0232】
のセットを用いてもよい(310)。換言すれば、機械学習システム104は、出力データを生成するために第2の入力データを用いてもよい。例えば、機械学習システム104は、入力データに基づいて出力データを計算するために評価モード中にDNN106のニューロンの入力の重みとして低精度重み116のセットを用いてもよい。
【0233】
本開示の一部の例において、図2を参照すると、ニューラルネットワークのトレーニング(202)の結果としてDNN106を2の累乗に等しくしてもよい。低精度重み116が2の累乗に等しくなる例において、推論モード中の計算を、乗算演算の代わりに論理シフト演算を用いることによって簡単化することができる。この結果、DNN106は、推論モード中に更に効率的にかつ潜在的に更に短い待ち時間で動作する。その理由は、シフト演算が乗算より複雑でないからである。一例において、図3を参照すると、BitNetトレーニングは、動作(300)~(308)の間に重みを2の整数乗に制限することができる。例えば、動作(308)の間に、機械学習システム104は、低精度重み116の値が2の整数乗となるように低精度重み116を更新してもよく、動作(310)の間に、低精度重み116のセットは、ニューラルネットワークのニューロンの入力の重みとして用いられる。
【0234】
例えば、動作(308)における2の整数乗である値の選択は、選択した重みの量子化を表す。高精度とBitNetトレーニングされたニューラルネットワークの間の値の分布の整合を更に良好に行うために、BitNetトレーニングは、量子化が微分不可能である場合でも、学習した重みパラメータのコード化された分布を最良に維持する量子化関数を選択することができる。例えば、動作(308)において、機械学習システム104は、量子化関数sign(w)*2(round(log|w|)を用いてもよく、この場合、wは、動作(306)で構成された元の浮動小数点重みである。
【0235】
図4は、本開示の技術による損失関数を決定するための例示的な動作を示すフローチャートである。図4の例において、機械学習システム104は、第1の演算対象l(W)を決定する(400)。第1の演算対象l(W)は、中間損失関数(intermediate loss function)である。一部の例において、中間損失関数は、データラベル対(X(l),y)、第1の出力データ(X(l))及び重み(W)の第2のセットに基づく。式(7)及び(8)は、中間損失関数の例を示す。したがって、第1の入力データセットは、トレーニングデータラベル対のバッチを備え、機械学習システム104は、第1の演算対象を決定することの一部として、第1の演算対象が
【0236】
【数79】
【0237】
に等しくなるように第1の演算対象を決定してもよく、この場合、Bは、データラベル対のバッチのデータラベル対の総数であり、データラベル対のバッチの各ラベルは、Bラベルを有するラベルのセットの要素であり、iは、指標であり、log(・)は、対数関数であり、Nは、複数の層の総数であり、yは、ラベルのセットのi番目のラベルであり、
【0238】
【数80】
【0239】
は、データラベル対のバッチのi番目のデータラベル対のデータが入力としてDNN106に与えられるとともにDNN106が重みの第2のセットを用いるときの複数の層のN番目の層の出力である。本例において、データラベル対のバッチのデータラベル対は、独立の均一に分布したデータラベル対であってもよい。一部の例において、中間損失関数は、任意の標準的な教師付き又は教師なし損失関数、例えば、教師付き分類のための交差エントロピー(若しくは負の対数尤度)又は教師なしオートエンコーダのための再構成誤差であってもよい。中間損失関数が損失関数である一例において、機械学習システム104は、第1の演算対象を式(33)に示すように計算してもよい。
【0240】
【数81】
【0241】
式(32)において、xは、入力データであり、
【0242】
【数82】
【0243】
は、高精度重み144を用いるDNN106の出力である。
【0244】
さらに、図4の例において、機械学習システム104は、第2の演算対象がハイパーパラメータ(λ)と複数の層の各々に対する量子化誤差q(w(l),b(l))の和との積に等しくなるように第2の演算対象を決定する(402)。例えば、機械学習システム104は、式(20)に示すように
【0245】
【数83】
【0246】
を計算してもよい。機械学習システム104は、複数の層の各々に対して、式(14)に示すように層の高精度重みのセット(すなわち、重みの第2のセット)と層の低精度重みのセット(すなわち、重みの第1のセット)の間の差に基づいて層の量子化誤差を決定してもよい。低精度重み116が2の整数乗に制限されるとともに機械学習システム104が式(21)で規定した損失関数を用いる例のような一部の例において、機械学習システム104は、第2の演算対象をハイパーパラメータと量子化誤差との積として決定する代わりに上述したように第2の演算対象をハイパーパラメータ(λ)の値及び蒸留損失に等しくなるように決定してもよい。
【0247】
追加的には、図4の例において、機械学習システム104は、第3の演算対象がハイパーパラメータ(λ)と
【0248】
【数84】
【0249】
との積に等しくなるように第3の演算対象を決定してもよく、この場合、iは、指標であり、Nは、複数の層の総数であり、bは、複数の層のi番目の層のビット精度値である(404)。機械学習システム104は、損失関数を第1の演算対象、第2の演算対象及び第3の演算対象の和として決定してもよい。
【0250】
本開示は、DNNメモリサイズを管理するのと同時にここで説明する低精度手法によって生じたニューラルネットワーク組立(composition)の新たな機会を提供することができる技術を記載する。図5は、例示的な異種ニューラルアーキテクチャを示すブロック図である。図5の異種ニューラルアーキテクチャは、本開示の低精度手法によって生じるニューラルネットワーク組立の新たな領域を強調する。図5の例において、システム500は、サブバンド分解部502と、バイナリニューラルネットワーク(BNN)504と、BNN506と、DNN508と、融合部510と、を有する。サブバンド分解部502は、入力データを受信する。BNN504、BNN506及びDNN508は、サブバンド分解部502の出力を入力として受信する。融合部510は、BNN504、BNN506及びDNN508の出力を入力として受信する。融合部510は、出力を生成する。機械学習システム104(図1)は、サブバンド分解部502、BNN504、BNN506、DNN508及び融合部510の各々を実現してもよい。
【0251】
DNNは、シプナス重み及びシプナス活性化を表すために単一のビット精度のみを用いるニューラルネットワークである。これは、処理におけるかなりの節約を表す。その理由は、計算アーキテクチャが乗算を必用としないとともにメモリの使用量が著しく減少するからである。BNNは、物体検出及び分類のために以前に適用されてきた。推論モードにおいて、BNNは、乗累算ハードウェアを必要とすることなくランタイムメモリの実装面積の1/32未満の実装面積で実行する。見方によっては(To give a perspective)、AlexNetCNNは、ビット単位演算を用いることによって23倍に速度を上げながら0.25Wしか用いない。
【0252】
サブバンド分解部502は、各周波数帯域をBNN504、BNN506及びDNN508のような低精度のDNNで処理できるように画像を互いに異なる周波数帯域に分解することができる。画像を高周波帯域及び低周波帯域に分離することによって、DNNは、エッジ及びテクスチャを個別に処理することができる。分解は、画像コンテンツを分離する処理における入力データを互いに異なるサブバンドにする前処理に依存し、ウェーブレット分解によく似ている。この処理は、他の形態のデータ前処理、例えば、画像を回転し、保存し(mirrored)、かつ、コントラスト調整するデータ拡大を有してもよい。
【0253】
サブバンド分解の処理によって、各サブバンドを互いに異なるDNNにより並列に処理することができるニューラルネットワーク組立が可能になる。この手法によって、サブバンド分解部502は、入力データを複数の並列なストリームに分解することができる。本開示の技術によれば、機械学習システム104は、各サブバンドが学習の観点から「最適」となる基本的な前提に基づいて記憶及び計算の要求に最も適するようにするために各サブバンドを選択してもよい。各サブバンドをビット精度の観点から最適化してもよい。処理されるサブバンドの各々の精度を低下させる際の節約を伴う入力データの前処理のコストが存在する。
【0254】
本開示の他の箇所で説明するように、ハイパーパラメータとしてのビット精度それ自体を用いてDNNをトレーニングすることがアルゴリズム性能の観点から有利となることができる。結果的に得られるDNN508は、DNN508の各層に対して互いに異なるビット精度を有してもよい。DNN重みの量子化及び丸めのような他の手法は、アルゴリズム性能が低下するだけでなく全ての重み値が包括的に同一の精度(例えば、32ビット、16ビット、8ビット等)で取り扱われる。同様に、BNNを、最小ビット設定がDNN層の均一な設定に適用されるようにトレーニングしてもよい。メモリサイズの節約量は、アルゴリズムタスク(例えば、特徴及びオブジェクトクラス(number of featres and object class)の数)に依存してもよい。
【0255】
図5の例において、融合部510は、BNN504、BNN506及びDNN508の一つ以上により生成された出力データに基づいて出力データを生成してもよい。一部の例において、融合部510は、他のDNNであってもよい。一部の例において、融合部510は、DNNを用いないプログラムであってもよい。このようにして、図5は、各ニューラルネットワーク(BNN504、BNN506、DNN508、融合部510)を学習の観点及びリソース使用の観点(例えば、全体的な記憶保持を制御するとともにハードウェアで計算するためのビット精度)から最適にすることができるニューラルネットワークから構成された例示的な実施の形態を示す。
【0256】
本開示の以下のセクションは、DNN106(図1)のようなBitNet DNNが更に高い学習率をサポートする(例えば、更に速くまとまる)ことができるとともに標準的なDNNより高い性能を有することができるDNNの重みの設定に到達することができることを示す。ビット精度を用いることによって、機械学習システム104は、(例えば、重みに対して選択することができる値の数の範囲内で)更に明確に方向付けられた目標(more directed goal)を有する学習指導を行うことができる。例えば、機械学習システム104は、トレーニング過程の正則化を更に良好に行うことができる。その理由は、BitNetトレーニングがニューラルネットワーク重みに対する値の許容できる範囲に更に良好に案内することができるからである。それに対し、標準的な高精度手法は、重みに対して選択することができる値の範囲が非常に広く、したがって、適切な値に到達するためにトレーニング過程に更に長い時間を要することがある。一部の例において、機械学習システム104は、低い精度で始動し、迅速に解決に向かうためにビット精度を徐々に上げ、これによって、全体に亘るトレーニング時間が減少する。例えば、機械学習システム104は、先ず、λの値より高いλの値を用いた後にλの値に関連してλの値を徐々に減少させる。
【0257】
BitNet DNNは、画像認識及び分類に対する二つのよく知られているベンチマーク、すなわち、MNIST及びCIFAR-10において評価されてきた。説明のために、LeNet-5に基づく簡単なニューラルアーキテクチャが、多くのエポックに対するトレーニングを行うことなく用いられ、BitNet DNNが従来の性能を与える必要がなかった。それどころか、強調すべきことは、対応する高精度実現、特に、本開示では“LeNet EP32”と称する32ビットパラメータを有する同一のCNNに対するBiNet DNNの比較である。同じ理由により前処理又はデータ拡大が行われなかった。(センタリングとしても知られている)バッチ正規化が、バッチ間の共変量シフトを回避するために入力に対して行われた。Theanoに示された自動微分は、式(22)及び(23)に関連する勾配を計算するために用いられた。
【0258】
手書き数字のMNISTデータベースは、サイズが28×28である合計70000のグレースケール画像を有する。各画像は、0,1,...,9のうちの一つの数字から構成される。データは、50000のトレーニング、10000のテスト及び10000の検証例に分割される。数字は、サイズ正規化される(size-normalized)とともに一定サイズの画像に集中される(centered in)。このトレーニングデータは、250画像のバッチに分割される。このデータベースのベースラインアーキテクチャは、二つの畳み込み層から構成され、その各々は、30の5×5フィルタ及びそれに続く4×4プーリング並びに50の5×5フィルタ及びそれに続く4×4プーリングから構成される。フィルタ処理された画像は、500の隠れ部(すなわち人工ニューロン)の隠れ層及びそれに続く10のラベルに亘るスコアを出力するためのソフトマックス層に供給された。
【0259】
CIF AR-10データセットは、「猫」、「犬」、「飛行機」、「鳥」等のようなオブジェクトプロトタイプ(object prototype)に対応する分類ごとに6000画像を有する10分類の60000の32×32カラー画像から構成される。40000画像がトレーニングに用いられ、10000画像がテスト及び検証にそれぞれ用いられた。トレーニングデータは、250画像のバッチに分割された。このデータセットのベースラインアーキテクチャは、二つの畳み込み層から構成され、その各々は、30の5×5フィルタ及びそれに続く4×4プーリング並びに50の5×5フィルタ及びそれに続く4×4プーリングから構成される。フィルタ処理された画像は、500の隠れ部(すなわち人工ニューロン)の隠れ層及びそれに続く10のラベルに亘るスコアを出力するためのソフトマックス層に供給された。
【0260】
図6A及び図6Bは、BiNet及びLeNet-FP32の例示的な性能を示す。すなわち、図6A及び図6Bは、MNISTデータセット及びCIFAR-10データセットにおけるLeNet-FP32と比較したBiNetの性能を示す。図6A及び図6Bの各々の左側のパネルは、トレーニング繰り返しに亘る検証誤り%を示し、図6A及び図6Bの各々の右側のパネルは、トレーニング繰り返しに亘る負の対数尤度を示す。図6A及び図6Bにおいて、最終的な検証誤りを括弧内に示す。さらに、図6A及び図6Bにおいて、学習率μは、MNISTに対して250の繰り返しであるとともにCIFAR-10に対して200の繰り返しである各エポックの後に半分になる。
【0261】
図6A及び図6Bに示すように、BiNetにおける正則化によって、著しく高速な学習となる。図6A及び図6Bの左側のパネルにおいて、BiNetの検証誤りは、LeNet-FP32より急速に減少する。100エポック後の結果的に得られるBiNetの検証誤りは、LeNet-FP32より2%低くなる。同様に、BitNetは、テストセットにおいて5.25%の誤りとなり、それに対し、LeNet-FP32は、7.3%の誤りとなる。所定の性能に対して、BiNetは、ベースラインの大体半分の数の繰り返しを要する。図6A及び図6Bの右側のパネルは、BiNetに対する高精度パラメータに関するトレーニングエラーがLeNet-FP32より迅速に減少することを示し、それは、低い検証誤りが量子化のみによって生じないことを示す。優れた性能に加えて、BiNetは、LeNet-FP32に関する5.33×圧縮に対応する層ごとの平均6ビットしか用いない。
【0262】
図7は、CNNの各層のパラメータを表すのに用いられるビット数を示す。すなわち、図7は、トレーニングの繰り返しに亘るビット数の変化を示す。ビット数が最初の5エポック内に集中することがわかる。ビットに関する勾配が急速に0になることもわかる。
【0263】
一つの実験において、式(20)のハイパーパラメータ(すなわち、λ及びλ)の影響を示す。この実験において、各CNNは、30エポックのみに対してトレーニングされる。図8A及び図8Bは、MNISTデータ及びCIFAR-10データに対する性能及び圧縮の影響をそれぞれ示す。換言すれば、図8A及び図8Bは、MNISTデータセット及びCIFAR-10データセットに対するBiNetのハイパーパラメータのテストエラー及び圧縮率の感度をそれぞれ示す。図8A及び図8Bに関して、圧縮率を、BiNetによって用いられる総ビット数に対するLeNet-FP32によって用いられる総ビット数(=32×4)の比として規定する。両方のデータセットにおいて、一方では、λ=0及びλ=1であるとき、BiNetは、パラメータ値の範囲の間で均一に離間した32ビットを用い、式(11)の線形変換を維持する範囲が32ビットを用いるLeNet-FP32より著しく良好なテストエラーとなることが分かり、それは、非線形的であるとともに範囲に影響されにくい。MNISTに対して、図8Aの左側のパネルにおいて、λ=0及びλ=1であるとともに32ビットを用いるBiNetは、LeNet-FP32の19.95%のエラーに対して11.18%のテストエラーとなり、λ=10-7及びλ=10-3の最適な設定でBiNetは11%のエラーとなる。図8Bに示すように、同じ見解がCIFAR-10データセットにも当てはまる。
【0264】
それに対し、λ=0及びλ=1であるとき、BiNetは、層ごとに2ビットしか用いず、NMISTにおいて13.09%のテストエラーであり、16×圧縮と引き換えに小さい悪化がある。この手法は、パラメータのビット幅を制限する際にある程度の柔軟性を提供し、以前の研究のバイナリネットワーク又はターナリネットワーク(binary or ternary networks)に到達する代替的な方法を与える。
【0265】
一定値のλに対して、λの値を増加させることによって、ビット数が減少し、圧縮が更に大きくなり、かつ、性能がわずかに低下する。一定値のλに対して、λの値を増加させることによって、ビット数が増加するとともに圧縮が小さくなる。テストエラーに対する圧縮率の変動は著しく大きくなる。実際には、テストした設定のほとんどは同様なテストエラーとなったが層ごとのビット数が非常に異なる。最適な設定は、圧縮と精度の両方が最大となるようなグリッド検索によって見つけられた。MNIST及びCIFAR-10において、これは、λ=10-7及びλ=10-3である。
【0266】
一つの実験において、更に多くの層をCNNに追加するとともに性能及び圧縮に対するビット正則化の影響を評価した。DNNをトレーニングする際に二つの主要な困難がある。先ず、多くのパラメータは、データ量及びトレーニング時間の増大を必要とする。ベリーディープニューラルネットワーク(very deep neural networks)の第2の問題は、層の増加に伴うテストエラーの増加によって見ることができるトレーニングデータに対する過剰適合である。ビット正則化が過剰適合なくディープネットワークをトレーニングするのを助けることを示す。追加することができるあり得るアーキテクチャ及び層のスペースは、処理しにくいものである。性能が向上するように徐々に追加することができる層の配列のサンプルを示す。これらの層を、知識及び一部の実験を用いて手作業で選択した。
【0267】
表1は、30エポックの終了時のMNISTに対する結果を示す。
【0268】
【表1】
【0269】
表1は、ニューラルアーキテクチャの複雑さの増大に伴うMNISTの30エポックの終了時のBiNetの性能及びCIFAR-10の100エポックの終了時のBiNetの性能を示す。表1の第1列(#)は、層の総数を表す。テストエラーをテストセット(すなわち、トレーニング中にDNN106によって見られなかったデータ)において評価し、エラーの評価基準(error measure)は、不正確な回答の割合である。圧縮率(Compr.Ratio)は、BiNetによって用いられる平均ビット数に対する割合である。圧縮率の右側の列は、最終BiNetモデルのアーキテクチャ及びビット数を特定する。各表において、最終行は、全アーキテクチャを含み、左から右に読まれる列は、ニューラルアーキテクチャである。最終行の上の行において、これらの層の一部を、更に小さいDNNをトレーニングするために省略する。ヘッド部(heads)は、P-Q-Rのフォーマットを有し、Pは、畳み込みフィルタの数であり、Qは、各フィルタのサイズであり、Rは、フィルタ処理後に行われる最大プーリングのサイズである。緻密層(すなわち、完全接続層)の場合、ニューロンの数を意味する。折り畳み層の列の最初は、フィルタの数、空間領域及びプーリングサイズを特定する。ここでは、λ=10-7及びλ=10-4である。
【0270】
最初に、BiNetを4層から始め、その性能を以前のセクションで示した。先ず、テストエラーが過剰適合の兆候なく徐々に減少することが観察される。次に、ビット数及び圧縮率がアーキテクチャによって著しく影響が及ぼされないとともにデータ及びハイパーパラメータの強関数(strong function)に見えることが観察される。次に、テストエラーが追加の畳み込み層及び緻密層によって減少することが観察される。(グローバルスケーリング(global scaling)に対応する)1×1フィルタの追加によって、緻密層の追加に対してパラメータの数を増加させなくしながらテストエラーを減少させることができる。
【0271】
CIFAR-10データセットに対する同様の比較を、トレーニングの100エポック後の表1に示す。過剰適合の兆候がない。その理由は、各実験においてトレーニングとテストエラーの両方が減少するからである。アーキテクチャが更に複雑になるので、性能の少しの低下がみられ、それは、パラメータの総数及び一定の100エポックに対するトレーニングの減少のせいである。以前の実験におけるように、圧縮率がアーキテクチャによって著しく影響が及ぼされないことがわかる。CIFAR-10に対する従来の結果が存在しない。しかしながら、BiNetは、いつでも性能に集中する、すなわち、これらの実験の各々は、従来の結果に対する約20時間に対して約1時間行われる。
【0272】
一つの実験において、BiNetの加速学習(accelerated learning)の性質は、学習率に間接的に関連する。このために、線形ペナルティ(linear penalty)が、式(20)の指数ペナルティ(第3の項)の代わりにビット数に対して用いられる。図9は、MNISTデータセットにおけるBitNetの性能の例を示す。特に、図9は、ミニバッチに亘るLeNet-FP32と比較したBitNetの繰り返しに対する検証誤り率を示す。最終的な検証誤りを図9の括弧内に示す。図9の例において、学習率μは、各エポックの後に0.1が乗算される。図9の左側のパネルは、BiNetが指数ペナルティを用いるのと同様の高速学習を示していることを示す。図9の右側のパネルは、学習率が上がったときにベースラインLeNet-FP32もBiNetと同様な率で学習することができることを示す。この点を図10に更に示し、この場合、λの種々の値について、線形的なビット数に対する係数は、学習率と直接的な関係を示す。図10は、MNISTデータセット及びCIFAR-10データセットに対する線形的なビットペナルティの種々の係数におけるBitNetの例示的な性能を示す。特に、図10の右側のパネルは、λの値が大きくなるに従って不安定になるとともに性能が低下し、それに対し、λの値が小さくなるに従って学習曲線が円滑になる。
【0273】
しかしながら、LeNet-FP32のCNNの全てのパラメータに対して全体的に学習率を上げることは、BiNetにおけるような各パラメータによって取得される適合率のような安定性はない。さらに、学習は、学習率が更に上がる場合に特に変動する。これは、低精度トレーニング、運動量、又は、「静的(static)」学習率の問題にも対処するAdaGradのような洗練された勾配降下アルゴリズムの間の関心のある関連を確立する。AdaGradは、Duchi等の”Adaptive Subgradient Methods for Online Learing and Stochastic Optimization“,Journal of Machine Learning research,pages 2121-2159,12 July 2011に記載されている。代替的には、雑音のある勾配を有するトレーニングとしてBiNetを評価することができ、雑音の確率分布がほとんどない安定した学習を促すための手法を示す。BitNetの勾配に組み込まれる雑音は、W及びbによって決定される均一に離間した中心を有するガウス分布の互いに素な集合に類似し、その数は、bとWの値の範囲の分散とによって決定される。
【0274】
実在のアプリケーションへのディープニューラルネットワークの配置は、計算の要求及び記憶の要求によって著しく制限される。要約すると、本開示は、対象の装置で利用できる総ビット数の間接的な仕様が与えられたコンパクトなDNNをトレーニングする柔軟ツールを記載する。本開示は、従来の分類損失関数の正則化のような制約を組み込む公式化を提供する。この公式化は、パラメータがとることができる値の範囲及びセットを動的に量子化することによってネットワークの表現力を制御することに基づく。ここで説明する実験は、同等の正則化されていないネットワークよりもトレーニング及びテストエラーに関して優れた学習を示した。我々の手法のロバストネスは、ニューラルネットワークの深度の増大及び種々のハイパーパラメータと共に示された。我々の実験は、BiNetが全体的な学習率との間接的な関係を有してもよいことを示した。BiNetを、ビット数に依存するパラメータごとの動的な学習率を有するものと解釈することができる。その意味では、ビット正則化は、AdaGradのような動的な学習率スケジューラに関連する。一部の例において、機械学習システム104は、高精度微調整と組み合わされた高速初期学習(fast initial learning)を活用するための制約に対するアニール(anneal)を行ってもよい。その意味では、BiNetを、トレーニングデータ及びシステムアーキテクチャの表現を学習するための同時最適化を有するものと解釈することができる。
【0275】
本開示の以前のセクションは、ビット精度がトレーニング手順のパラメータの一部となるようにDNNをトレーニングする方法を説明した。換言すれば、本開示の以前のセクションは、トレーニング段階の一部としてのビット精度の最適化を説明した。結果的に得られるDNNは、種々のDNN層に対して種々のビット精度を有してもよい。利益は、小さいメモリ実装面積、高速学習及び潜在的に高いアルゴリズム性能を含んでもよい。
【0276】
本開示の次のセクションは、処理の実施の形態に関連する追加の詳細並びにトレーニング及び推論との関係を提示する。特に、本開示は、(1)DNN組立のBiNet選択内でシステムアーキテクチャパラメータを用いる方法と、(2)トレーニングされたDNNに対する処理を分散させるためにシステムアーキテクチャパラメータを用いる方法と、を説明する。
【0277】
本開示は、一つ以上のDNNをトレーニングする及び/又は一つ以上のDNNを推論モード中に実行するための処理ハードウェア(及び関連のソフトウェアスタック)のセットを意味する用語「システムアーキテクチャ」を用いる。一部の例において、処理ハードウェアは、物理的なハードウェアのように作動する仮想マシンを含んでもよい。一部の例において、システムアーキテクチャは、BiNet DNNのトレーニングをサポートする一つ以上のプロセッサ(例えば、CPU,GPU,FPAG,DSP又はその仮想表現)を備える。一部の例において、同一のシステムアーキテクチャを、トレーニングされたDNNを推論モード中に実行するのに用いることができる。一部の例において、代替的なシステムアーキテクチャを用いることができる。例えば、一つ以上のBiNet DNNを、第1のシステムアーキテクチャ(例えば、クラウドコンピューティングシステム)でトレーニングした後に推論モードにおいて第2の異なるシステムアーキテクチャ(例えば、携帯装置)で用いてもよい。本開示は、一つ以上のDNNからなるシステム及びこれらのDNNの構成を意味する用語「ニューラルネットワークソフトウェアアーキテクチャ」を用いる。例えば、ニューラルネットワークソフトウェアアーキテクチャは、互いに作用することができる複数の個別のDNNを有してもよい。上述した技術に加えて、本開示は、システムアーキテクチャ入力がDNNモデルの構成を選択するのに用いられるDNNトレーニングの方法に関連した技術を説明する。本開示の追加の技術は、DNN処理(トレーニングと推論の両方)をシステムアーキテクチャのプロセッサの間で分散させる方法を有する。
【0278】
図11は、各々がDNNである層の階層から構成される例示的なニューラルネットワークソフトウェアアーキテクチャである。すなわち、図11は、ニューラルネットワークの階層から構成される例示的なニューラルネットワークソフトウェアアーキテクチャを示す。図11の例において、ニューラルネットワークソフトウェアアーキテクチャ1100に対するセンサ入力は、映像データ、音声データ及び深度マップである。ニューラルネットワークソフトウェアアーキテクチャ1100の出力は、映像、音声及び深度マップの分析から検出した活動の分類である。一例において、ニューラルネットワークソフトウェアアーキテクチャ1100の応用を、人間のジェスチャー認識とすることができる。人間の開発者又はコンピュータシステムは、ニューラルネットワークソフトウェアアーキテクチャ1100を選択してもよい。
【0279】
さらに、図11の例において、8ビットCNN1102は、映像データに対して選択される。本例において、CNN1102の高精度重みはそれぞれ8ビットである。CNN1102のトレーニング中、CNN1102の精度が最適化された重みを、8未満のビット精度を有するように更新してもよい。32ビットLSTM(長短期記憶ニューラルネットワーク)1106が続く4ビットCNN1104は、音声データに対して選択される。本例において、CNN1104の高精度重みはそれぞれ4ビットであり、LSTM1106の高精度重みはそれぞれ32ビットである。CNN1104及びLSTM1106のトレーニング中、CNN1104及びLSTM1106の精度が最適化された重みをそれぞれ、4未満のビット精度及び32未満のビット精度を有するように更新してもよい。1ビットBNN1108は、深度マップに対して選択される。図11の例において、CNN1102、LSTM1106及びBNN1108によって生成される三つのストリームは、活動分類出力を生成するために8ビットMLP(多層パーセプトロン)1110に供給される。MLP1110の高精度重みはそれぞれ8ビットである。MLP1110のトレーニング中、MLP1110の精度が最適化された重みを、8未満のビット精度を有するように更新してもよい。
【0280】
映像データは、互いに異なる色平面(color plane)(赤、緑、青)を有する2次元画像を備えてもよく、典型的には画素ごとに8ビットである。音声データは、1次元ストリームを備えてもよく、典型的にはサンプルごとに16ビットである。音声処理は、(例えば、CNN1104による)特徴抽出及び(例えば、LSTM1106による)その後の音声分析を有することができる。深度マップは、センサ(例えば、カメラ)からの距離を表す画素値を有する2次元マスクを備えてもよい。
【0281】
図12は、プロセッサの異種のセットを備える例示的なシステムアーキテクチャ1200である。図12の例において、プロセッサは、CPU1202、GPU1204、GPU1206、FPGA1208及びDSP1210を有する。各プロセッサは、互いに異なるビット精度サポートを有する。例示的なサポートされたビット精度は、8ビット及び1ビット精度(整数)並びに32ビット及び64ビット(浮動小数点)を有してもよい。互いに異なるプロセッサハードウェアは、種々のサイズ、重量及び電力(SWaP)提供(offering)をサポートするために(例えば、種々のレベルの並列処理及びメモリの統合(organization of memory)を伴う)DNN計算を異なるように処理することができる。プロセッサをネットワークに接続してもよい。図12の例において、各ネットワーク接続は、互いに異なる処理能力(bandwidth availability)、例えば、10Mbps、100Mbps及び10Gbpsを有する。図12の例において、トラフィックを管理するがDNNについての計算を行わないルータ1212が存在する。ネットワークの帯域幅の利用可の正は、プロセッサ間の通信制限を設定し、したがって、DNNをトレーニングするとともに推論中に処理する方法に影響を及ぼすことがある。
【0282】
本開示は、システムアーキテクチャ能力に基づいてビット精度を選択する技術を記載する。本開示は、この技術を説明するために図11の例及び図12の例を用いる。分析する必要があるセンサデータタイプが与えられた場合、機械学習システム104は、先ず、ニューラルネットワークソフトウェアアーキテクチャ1100が推論モードで動作する必要があるシステムアーキテクチャを検査してもよい。例えば、機械学習システム104は、1ビットBNNに対する最適なプロセッサがFPGAであることを決定してもよい。その理由は、FPGAが二項演算をサポートすることができる細粒度プログラマブルユニット(fine grain programmable units)を有するからである。それに対し、LSTMは、時系列分析のために更に高い精度を要求してもよい。機械学習システム104は、DNNの種々の層の間の通信をサポートするのに必要なネットワーク回線容量を考察してもよい。例えば、映像処理は、音声処理より多い通信回線容量を必要とする。システムアーキテクチャパラメータの他の例は、メモリ実装面積を有してもよい(例えば、1ビットBNNは、8ビットCNNより少ないメモリ要求を有する。)。
【0283】
システムアーキテクチャパラメータは、ニューラルネットワークソフトウェアアーキテクチャをシステムアーキテクチャの適切なプロセッサにマッピングするために用いられる。例えば、コンピュータシステム100(図1)の機械学習システム104は、ニューラルネットワークソフトウェアアーキテクチャをシステムアーキテクチャの適切なプロセッサにマッピングする。機械学習システム104は、最適なマッピングを選択するためにコスト関数を用いてもよい(すなわち、ベストフィット方式を用いることができる。)。コスト関数を、サイズ、重量、電力及びコスト(SWaPC)のうちの一つとすることができる。例えば、8ビットCNNの選択の場合、機械学習システム104は、低システム(lower system)を提供するマッピングを選択するコスト関数を用いてもよい。例えば、機械学習システム104は、ハードウェアアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアアーキテクチャの種々の潜在的なマッピングを評価してもよい。機械学習システム104は、ハードウェアアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアアーキテクチャのマッピングを選択するためにマッピングコスト関数を用いてもよい。
【0284】
図12は、システムアーキテクチャに対するニューラルネットワークソフトウェアアーキテクチャの例示的なマッピングを示す。さらに詳しくは、機械学習システム104は、図11の8ビットCNN1102を図12のビット浮動小数点GPU1206にマッピングしてもよい。同一の8ビットCNNは、FPGAにマッピングされる場合、更に大きい計算リソース(例えば、浮動小数点計算をサポートするためのメモリ及びFPGAファブリックの更に多い使用)を負担することがある。さらに、図12の例において、機械学習システム104は、1ビットBNN1108を1ビットFPGA1208にマッピングし、8ビットMLP1110を16ビットCPU1202にマッピングし、32ビットLSTM1106を64ビット浮動小数点GPU1204にマッピングし、4ビットCNN1104を8ビットDSP1210にマッピングしてもよい。機械学習システム104がDNNをプロセッサにマッピングした後、プロセッサは、DNNを実行してもよい。例えば、図12の例において、GPU1206は、CNN1102を実行してもよい。
【0285】
本開示の一態様は、BiNetトレーニング方法のためのものである。例えば、一部の例において、システムアーキテクチャパラメータは、適切なニューラルネットワークソフトウェアアーキテクチャ及びハードウェアアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアのDNNのマッピングを選択するためのBiNet DNN(例えば、DNN106(図1))に対する入力としての役割を果たす。例えば、DNN106は、ハードウェアアーキテクチャの記述及びニューラルネットワークソフトウェアアーキテクチャが解決のために配置される問題の記述を受け取るBiNet DNNであってもよい。本例において、DNN106の出力は、ニューラルネットワークソフトウェアアーキテクチャが解決のために配置される問題及びハードウェアアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアアーキテクチャのDNNのマッピングに対する適切なニューラルネットワークソフトウェアアーキテクチャであってもよい。本例において、DNN106を、ハードウェアアーキテクチャの既存の例及び問題記述の既存の例を用いてトレーニングしてもよい。
【0286】
さらに、マルチビット精度を対象とするためのBiNet DNNの能力は、利用できるハードウェアリソースに対する有効なマッピングを可能にするとともにプロセッサの異種のセットに対して特に有用である。換言すれば、重みを更に多いビット又は更に少ないビットを用いて表すようにDNNをトレーニングすることができるので、機械学習システム104は、同一のBiNet DNNの種々のバージョンが種々のビット深度を有するように同一の入力データに基づいて同一のBiNet DNNの複数のバージョンをトレーニングできるようにしてもよい。
【0287】
このセクションで説明するコスト関数を、潜在的に最適なDNNアルゴリズム性能を見つけるためにBiNetトレーニングアルゴリズムに統合することができる。例えば、機械学習システム104は、次の式(33)に示すように、式(20)の変形バージョンを用いてもよい。
【0288】
【数85】
【0289】
式(33)の例において、Pは、ハードウェアアーキテクチャのハードウェアパラメータのセットを表し、r(b,P)は、BiNet DNNの精度が最適化されたビット深度b及びハードウェアパラメータのセットPをパラメータとしてとるここではリソース関数と称する関数である。一部の例において、リソース関数rは、BiNet DNNの任意の層の精度が最適化されたビット深度がハードウェアパラメータのセットPによって表された制限を超えるときに大きい値を生成する。例えば、リソース関数rは、BiNet DNNの各層のビット深度が制限より下である場合に0の値を生成するとともにBiNet DNNの任意の層のビット深度が制限より上である場合に1の値を生成する段階関数であってもよい。他の例において、リソース関数rは、精度が最適化されたビット深度が制限を超える程度が大きくなるに従って段階的に大きくなる値を生成してもよい。一部の例において、制限は、メモリ要求である。例えば、一例において、制限は、精度が最適化された重みbの記憶に要求されるメモリの総量としてもよい(例えば、bの記憶に要求されるメモリの総量を32キロバイト未満にする必要がある。)。他の例において、制限は、BiNet DNNの単一の層の精度が最適化された重みの記憶に用いることができるbの記憶に必要なメモリの総量であってもよい(例えば、層は、4ビットより多い精度が最適化された重みを有することができない。)。他の例において、リソース関数rは、重みが読み出し境界に整合したか否かに基づいて値を返してもよい。例えば、単一のメモリ読出し動作が8ビットを返す場合、9ビットの重みを返すために2回の読出し動作を必要とする。本例において、リソース関数rは、精度が最適化された重みが読み出し境界に整合した場合にローの値を返す。したがって、本例において、プライオリティは、読出し動作の回数を最小にすることであり、したがって、読出し動作に関連する潜在的なエネルギー消費及び遅延を減少させることにある。
【0290】
他の例において、機械学習システム104は、次の式(34)で表される損失関数を用いてもよい。
【0291】
【数86】
【0292】
式(34)において、λは、第3のハイパーパラメータであり、r(b,P)を上述したように規定してもよい。式(34)の損失関数は、ビット深度をハードウェアパラメータpから切り離して考慮できるようにしてもよい。他の例において、損失関数は、追加のハイパーパラメータに関連する一つ以上の追加の係数並びにb及び種々のハードウェア係数に基づく追加の関数を有してもよい。このようにして、損失関数は、BiNet DNNをトレーニングするときに種々のハードウェアパラメータを考慮できるようにしてもよい。したがって、一部の例において、ここでの技術によって、機械学習システム104は、図12のプロセッサ及び通信リンクのようなハードウェアリソースのセットが与えられた場合の最適なDNN性能を見つけることができる。トレーニング段階中の計算を、選択したビット精度をサポートする適切なハードウェアにおいてテストする際に適切なハードウェアに同様にマッピングすることもできる。
【0293】
ここで説明する技術は、プロセッサ内のハードウェアリソースに適用可能であってもよい。例えば、複数のプロセッサコア、ハードウェアアクセラレータ及びリコンフィギャブルファブリック(reconfigurable fabric)を有するシステムオンチップ(SoC)において、技術を、ニューラルネットワークソフトウェアアーキテクチャをSoCリソースにマッピングするシステムアーキテクチャパラメータ(この場合、システムアーキテクチャパラメータは、SoCに関連する。)を用いて同様に用いることができる。他の例において、システムアーキテクチャがFPGAのバンクを備える又はFPGAのバンクから構成される場合、機械学習システム104は、利用できるハードウェアに基づいて最高及び最適のDNN性能を取得する(例えば、FPGAルックアップテーブル(LUT)及びメモリを割り当てる)適切なFPGAリソースを選択するためにDNN106を用いてもよい。
【0294】
上述したように、図12は、システムアーキテクチャリソースに対するニューラルネットワークソフトウェアアーキテクチャの例示的なマッピングを示す。以前に、本開示は、リソース要求を管理及び予測することができるAIシステムを説明した。換言すれば、AIシステムは、ニューラルネットワークソフトウェアアーキテクチャのどの部分が所定のシステムアーキテクチャで利用できるプロセッサで最も有効に実行されるかを決定することによってリソース要求を予測してもよい。例えば、エンジニア又はコンピュータシステムは、複数の互いに異なる状況を識別してもよい。一部の例において、互いに異なる状況は、互いに異なるシステムアーキテクチャであってもよい。一部の例において、互いに異なる状況は、利用できる帯域幅、利用できる残りの電池寿命、残りの割当て可能なメモリ領域、プロセッサ作業負荷等のようなパラメータの違いを有するプロセッサの同一セットを含んでもよい。本例において、機械学習システム104は、互いに異なる状況に基づいて本開示の技術を用いて同一のニューラルネットワークソフトウェアアーキテクチャの複数のバージョンをトレーニングしてもよい。したがって、ニューラルネットワークソフトウェアアーキテクチャの各バージョンを、互いに異なる予測される状況で用いるのに合わせてもよい。
【0295】
図12を参照すると、ハードウェアリソースの一つが利用できなくなる(例えば、電力消失、ネットワーク接続消失等)場合、BiNetトレーニング方法は、システムアーキテクチャパラメータの新たなセットに対するニューラルネットワークソフトウェアアーキテクチャのマッピングを引き起こさせることができる。特に、新たなマッピングは、新たなシステムアーキテクチャ(例えば、図12のプロセッサのサブセット)に対するニューラルネットワークソフトウェアアーキテクチャ(例えば、図11のニューラルネットワークソフトウェアアーキテクチャ1100)で行われる。例えば、図12の例において、GPU1206が利用できなくなった場合、マッピングモジュール122は、システムアーキテクチャ1200(すなわち、ハードウェアアーキテクチャ)の残りのプロセッサに、GPU1206が利用できない状況で用いるのに合わせられたニューラルネットワークソフトウェアアーキテクチャ1100のバージョンを配置してもよい。例えば、GPU1206が利用できない状況で用いるのに合わせたニューラルネットワークソフトウェアアーキテクチャ1100のバージョンにおいて、CNN1102及びLSTM1106の両方をGPU1204にマッピングしてもよい。ここでの一態様は、BiNetトレーニングとシステムアーキテクチャパラメータの動的なセットとの組合せである。ここでの一態様は、BitNetのコスト関数がシステムアーキテクチャパラメータの動的なセット(例えば、損失関数)に基づいてもよい。本例において、コスト関数は、式(34)で既に説明した損失関数であってもよく、この場合、λ1及びλ2は、ハードウェアアーキテクチャ1200のサイズ、重量、電力及びコスト(SWaPC)のうちの一つを最適化することに基づいて設定される。
【0296】
他の例において、BitNetトレーニングを、典型的な設定のセットに対する複数のニューラルネットワークソフトウェアアーキテクチャに到達するのに用いることができる。例えば、図12を参照すると、ルータ1212は、(例えば、ネットワークの混雑が存在するときの互いに異なる期間中の)帯域幅の周期的な減少を有する。BitNetは、トレーニング中に二つのニューラルネットワークソフトウェアアーキテクチャ(ルータ1212を用いてDNNをシステムにマッピングするニューラルネットワークソフトウェアアーキテクチャ及びルータ1212を用いることなくDNNをシステムにマッピングするニューラルネットワークソフトウェアアーキテクチャ)を生成してもよい。したがって、このプロセスは、複数の静的にコンパイルしたプログラムを動的な条件に基づいて実行時に選択することができるファットバイナリに類似する。我々のケースにおいて、BiNet DNNは、利用できるハードウェアに適切なニューラルネットワークソフトウェアアーキテクチャを選択する。換言すれば、DNN106は、複数の以前に準備したニューラルネットワークソフトウェアアーキテクチャの中から適切な以前に準備したニューラルネットワークソフトウェアアーキテクチャを選択してもよい。以前に準備したニューラルネットワークソフトウェアアーキテクチャの各DNNは、既にトレーニングされている。
【0297】
機械学習システム104に関して、制限をアニールするステップにおいて、選択される重みは、DNN性能及びハードウェアリソースの同時最適化に基づいて選択される。損失関数選択に関して、式(34)のλパラメータ(λ、λ及びλ)は、ハードウェアパラメータPに基づき、本開示は、アニーリング制約の選択に影響を及ぼすためのトレーニング段階中に更新してもよいハードウェアパラメータPを説明する。トレーニング中のハードウェアパラメータPの選択は、例えば、サイズ、重量及び電力に関するハードウェアリソースのパレート最適選択を可能にする。ハードウェアパラメータの動的な選択におけるそのような手法は、機械学習性能及びハードウェアリソースの同時最適化として損失関数を用いる設計者の設計トレードオフ方法としての機能を果たす。本開示は、式(34)及びr(b,P)に関するビット精度とハードウェアパラメータの間の対応を用いる損失関数を記載する。対応が同時最適化を可能にするためのハードウェアパラメータに対する機械学習ハイパーパラメータ(例えば、精度、学習率、DNN深度、融合層(fusion layer)、活性化、学習アルゴリズム)の同様なマッピングになることができることを理解すべきである。対応がDNNトレーニングに影響を及ぼす他の物理的な制約(例えば、環境バイアス、データバイアス(environmental,data biases)に対する機械学習パラメータの他の同様なマッピングになることも理解すべきであり、この場合、同時最適化を、式(34)と同様にして行うことができる。
【0298】
このセクションにおいて、本開示は、衛星搭載アプリケーションの例を記載する。本例は、衛星搭載アプリケーションを用いる。その理由は、利用できるSWaP及び通信帯域幅に厳格な制限があるからである。キューブサットのような小型衛星は、10×10×10cm及び1.33Kgの重量しか有さない。キューブサットは、典型的には、各々がセンサの互いに異なるセットを有する分散した群れとして動作する。地上局に対する及びキューブサットの間の制限された電力量及び制限された通信帯域幅も存在する。図12を参照すると、機械学習システム104(図1)は、ニューラルネットワークソフトウェアアーキテクチャをキューブサットの群れにマッピングしてもよい。BiNet DNNを、DNN推論計算をキューブサットの間で分散させるとともにマッピングするために用いてもよい。本例において、通信リンクがキューブサットのサブセットとともに消失した場合、BiNet DNNを、再トレーニングを行うとともに現在利用できるキューブサットハードウェアに対するDNN計算を分散させるために用いることができる。ここでの一態様は、BiNet DNN(例えば、DNN106)が計算の分散及びニューラルネットワークソフトウェアアーキテクチャの選択を同時に行ってもよいものである。BiNet DNNが特定のビット精度を対象とすることができるので、BiNet DNNは、他のDNNをシステムリソースに最適にマッピングすることができる。システムリソースのセットを変更することによって、DNN106は、利用できるハードウェアに適合させるために種々のニューラルネットワークソフトウェアアーキテクチャを動的に再選択することができる。他の例において、マッピングのためのBitNetのコスト関数を復元性の一つとすることができる。キューブサットネットワークトポロジーを変更できるようにした場合、BiNet DNNを、利用できるキューブサットハードウェアの中から最適なネットワーク形状を見つけるために用いることができる。例えば、キューブサットの間のポイントツーポイントネットワーク通信を、最適なDNN性能をサポートするやり方において行うことができる。
【0299】
AIシステムは、サーチエンジンから自律走行車までの無数の応用において示された。AIシステムは、多次元データの学習の複雑な関係の優れた性能を最近示したDNNアルゴリズムを用いてもよい。しかしながら、現在のAIシステムは、典型的には、AIシステムが予め準備したことを超えて学習する能力を有しない。完全な詳細がしばしば予め未知である状況において、現在のAIシステムは、動的な環境に迅速に応答及び適合することができない。さらに、従来の手法は、再トレーニング/再プログラミングのためにシステムをオフラインにすることを要求することがある。このプロセスは、所定のタスクに対して混乱を起こさせる又は実行不可能であるだけでなく費用がかかるとともに時間がかかる。
【0300】
したがって、学習を推論と略同時に実行し続けるAIシステムを有するのが有利であることがある。更に詳しくは、AIシステムが(例えば、学習の観点から及び電力/性能の観点から)学習及び推論を有効なやり方で同時にサポートすることが有利であることがある。そのようなAIシステムは、学習率のようなハイパーパラメータの調整を含むオンザフライで自律的に自己再設定(self-reconfigure)してもよい。
【0301】
本開示は、(a)学習ニーズを予測し、(b)動作/リソースを動的及び積極的に管理することができるAIシステムを提供する。AIシステムは、フルコンバージェンス(full convergence)のためのトレーニングを行うことなく最適なDNNパラメータを選択又は検索してもよい。ここでの技術は、トレーニングとDNN構造最適化タスクとを切り離し、これによって、所定のデータセットの最適な性能を導き出すハイパーパラメータのセットを見つけるための繰り返しモデル選択及びトレーニングに依存する従来の手法から脱する。
【0302】
ここでの技術は、多くの分野で適用可能になる。その理由は、技術がインフラストラクチャ(学習手法、ソフトウェア/ハードウェア等)を選択するためのAIシステムの基本的な能力に適用できるからである。技術によって、AIシステムは、アルゴリズム性能とハードウェアSWaP(サイズ、重量及び電力)のトレードオフを行う手法を提供することによってエッジで適応できる。ここでの技術は、自動運転車及びロボットのような応用に有用となることができ、この場合、学習能力を向上させる間に自律的態様を自己再設定能力により向上させる。ここでの技術は、携帯スマートフォン装置のようなリソースが制限された環境の強力なDNNを可能にする。ここでの技術は、サイバー攻撃の事前情報が未知である(とともに再トレーニングのためにシステムをオフラインにすることが実行可能な選択でない)サイバーセキュリティのような他の分野の有益なツールとなることができる。ここでの技術は、AIシステムがユーザ入力に基づいて自己再設定を行うユーザカスタマイズ/個別化に有用となることができる。
【0303】
本開示は、検知、学習及び応答を行うシステムを記載する。システム(例えば、DNN106)は、センサからの入力を外部環境及び内部動作から収集する。センサは、プロセッサの利用可能状態、通信リンクのアップ/ダウン状態、電気エネルギーの利用可能性、温度、電池残量、残りのメモリ領域、リアルタイム性能の要求等を表すデータのような種々のタイプのデータを生成してもよい。システムは、これらの入力センサデータから学習を行ってもよい。本開示は、システムが検知したもの及びシステムが行う学習に基づいてシステムが自身を再設定する(アルゴリズム、ソフトウェア、ハードウェア等)「応答」態様に及ぶ。この場合、システムは、(a)システムが学習の観点から必要とするものを予測し、(b)学習目標を実現するために動作/リソースを動的及び積極的に管理する。例えば、DNN106を、入力としてハードウェアパラメータを取り出すとともにハードウェアアーキテクチャのプロセッサにマッピングされる一つ以上のDNNを有するニューラルネットワークソフトウェアアーキテクチャを出力するBiNet DNNとして実現してもよい。ニューラルネットワークソフトウェアアーキテクチャの一つ以上のDNNは、BiNet DNNそれ自体であってもよい。一部の例において、ニューラルネットワークソフトウェアアーキテクチャの一つ以上のDNNを予めトレーニングしてもよい。一部の例において、機械学習システム104は、DNN106がニューラルネットワークソフトウェアアーキテクチャ及びマッピングを選択した後に特定のプロセッサの要求に適合するためにニューラルネットワークソフトウェアアーキテクチャのDNNの一つ以上をトレーニングしてもよい。一部の例において、DNN106は、DNN106が新たな入力をセンサから受け取ったときにニューラルネットワークソフトウェアアーキテクチャを更新し続けてもよい。
【0304】
計算要求及びリソース制限に基づいてシステム設定を調整することができるシステムが存在する(例えば、プロセスは、電池残量に基づいて動作周波数レベルを調整することができる)。本開示の技術によれば、機械学習システム104は、最適な学習パラメータの選択又は検索に基づいてDNN106を再構成してもよい。更に詳しくは、技術は、ハードウェア/ソフトウェアパラメータ(例えば、プロセッサ動作周波数、ソフトウェア処理要求、電池残量)ではない適切なDNNパラメータ(例えば、重み)の選択を有する。DNNトレーニングに関して、最適なDNNパラメータの選択又は検索を行う技術を、フルコンバージェンスのトレーニングを行うことなく行ってもよい。その理由は、一例において、低いビット精度を有するDNNを高い精度のニューラルネットワークの計算に近づく代替的なニューラルネットワークとすることができるからである。本開示は、(a)システム再設定と、(b)DNN学習パラメータの選択及び最適化と、(c)DNNの十分なトレーニングの省略とを組み合わせ、これによって、BitNetトレーニングされたニューラルネットワークが高いビット精度でトレーニングされたニューラルネットワークに近づく予め規定された性能に到達したときにトレーニングを原則的にやめることができる。
【0305】
BitNetトレーニングされたニューラルネットワークの低SWaPハードウェア及び回路の実施の形態の複数のオプションが存在する。例えば、マルチコアプロセッサにおいて、所定のプロセッサ又はハードウェアアクセラレータを、種々のDNN計算要求をサポートする必要があるときにオンにすることができる。FPGAに対して、所定の回路構成を、必要なときにオンにする(設定する)ことができる。スタック3Dメモリを有する他のアーキテクチャにおいて、所定のバンクのメモリを、記憶されたパラメータに大きい帯域幅を提供するのに利用することができる。データの記憶及び移動に関する時間/エネルギーの他のトレードオフを、迅速な勾配評価(ローカル及びグローバル)をサポートするために設定することができる。追加の回路(神経形態学的、アナログ及びメモリスタ)を用いることができる。アナログプロセッサは、向上したナノエレクトロニクスにおける製造ばらつきに対処するために種々のビット精度を選択することができる。
【0306】
一部の例において、コンピュータシステム100は、SWaPC(サイズ、重量、電力、コスト)及び有効性(スループット、待ち時間及び機能的な最適性)に対して最適化された実現の自律的な変更を可能にする。本開示のBitNet DNN技術は、アーキテクチャ展開(architectural evolution)を伴う生涯学習を可能にする。一部の例において、システム(ハードウェア及びソフトウェア)及び学習(学習率、DNN深度、溶融層)の両方の調整を、システム要求に基づいて動的に行ってもよい。ハードウェアは、コンバージェンスのためにトレーニングする必要がない我々のDNN選択アルゴリズムによってサポートされるオンライン学習と略同時の推論の両方をサポートしてもよい。すなわち、コンピュータシステム100(例えば、DNN106)は、(本開示に記載した選択アルゴリズムを用いて)適切なニューラルネットワークソフトウェアアーキテクチャを画定的に選択し、ハードウェアを適切に設定し、トレーニングのためにオフラインにすることなく動作を継続してもよい。ソフトウェアの観点におけるコンテキストスイッチによく似ているように、本開示は、DNNコンテキストを選択/スイッチングする方法を記載する。
【0307】
コンピュータシステム100のようなAIシステムによって提供される能力は、迅速なシステムにとって重要となることがある。新たなAIシステムは、種々のタイプのデータ(EO、IR、レーダ等)からのコンテキストに同時に適合してもよい。これらのプラットフォームが電力及びサイズの規模(size budgets)が制限される分野のオンライントレーニングをサポートするのが望ましい。ここでの技術は、多様なマルチモーダルデータのネットワーク構造最適化に特に有効である。アジャイル(agile)システムは、教師なしであるとともに継続的な学習手法を用いてもよく、したがって、本開示の技術は、変化する環境信号(changing environmental cues)に応答するように継続的に適合してもよい。コンピュータシステム100は、例えば、図12に記載したようなフルコンバージェンスのためのトレーニングを行うことなく動的なパラメータを用いる上述した手法を用いる迅速な構造(例えば、ニューラルネットワークソフトウェアアーキテクチャ)選択及びDNNのマルチモーダル構成を用いた最適化を可能にすることによって、壊滅的な学習損失の問題に対処してもよい。
【0308】
そのようなAIシステムは、敵対的攻撃に対する更に強い回復力を有してもよい。例えば、コンピュータシステム100は、(例えば、種々のビット精度及び値の範囲を有するDNNパラメータの新たなセットに到達するために式(16)に記載した損失関数の種々のハイパーパラメータを用いることにより)コンピュータシステム100がコンピュータシステム100の学習手法を自己再設定できるようにすることによって、コンピュータシステム100のAI動作の学習から敵を回避してもよい。サイバーセキュリティの観点から、そのような学習手法は、敵対的なターゲティング(adversarial targeting)に対する回復力を有してもよい。サイバーセキュリティに対する例示的な応用実施例は、次の通りである。
・原因攻撃(causative attacks)(例えば、AI脆弱性がトレーニング中に導入されるために経時的に増えることが原因で見逃される攻撃)-AIシステムは、AI脆弱性の検出が困難となるように学習法を変更することができる。敵は、トレーニングデータを操作することによってAIシステムが入力の一部のセットを不正確に分類するようにすることを試みる。例えば、AIシステムが疑わしいクレジットカード取引を検出するために用いられる場合、特定のタイプのクレジットカード取引を用いる盗用を計画した敵は、AIシステムが特定のタイプのクレジットカード取引を疑わしいと認識しないようにトレーニングデータを操作することがある。しかしながら、そのような敵は、ニューラルネットワークソフトウェアアーキテクチャの複数のバージョンが存在するとともにニューラルネットワークソフトウェアアーキテクチャのいずれかのバージョンが配備変更(deployed changes)される場合には攻撃が成功する可能性が低くなる。
・探索攻撃(exploratory attacks)(例えば、規則に基づくトリガーを、システム出力の十分なサンプリングによって推定することができ、トレーニング後の脆弱性を不当に利用する)-我々のAIシステムは、敵が安全対策(protective measures)を学習するのを困難にするために(例えば、強化学習手法の)基本的な応答及び報酬関数を変更するように再設定を行うことができる。例えば、敵は、十分な数のシステム出力を観察することによってAIシステムが入力データを分類する方法を予測することができる。本例において、AIシステムが疑わしいクレジットカード取引を検出するように設計されている場合、敵は、AIシステムが差し障りのないものとして(as innocuous)不正確な分類を行う特定のタイプのクレジットカード取引を識別することができる。したがって、本例において、敵は、特定のタイプのクレジットカード取引を用いて犯罪の実行を開始することができる。しかしながら、応答及び報酬関数を変更することによって(例えば、ニューラルネットワークソフトウェアアーキテクチャの異なるバージョンは、ハードウェアパラメータを変更する際に配備される)、敵は、AIシステムが敵にとって魅力的となるように入力データを誤分類した入力データのセットを識別するのが著しく困難になる。
・回避攻撃(Evasion attacks)(例えば、攻撃信号は、検出しきい値より下であり、難読化によってうまく逃れる)-我々のAIは、敵を検出するための検出能力を高めることができる(例えば、ハニーポットの位置及び複雑さを変更する)。
・毒攻撃(poisoning attacks)(例えば、敵が入力データの分配を弱めるトレーニングデータを崩壊させる攻撃であり、これによって、誤分類が生じる)-AIシステムは、壊滅的な忘却に対する回復力を有してもよい。その理由は、AIシステムが保持のために完全なDNNを必要としないからである。その代わりに、AIシステムは、以前の分配を変更することなく新たなトレーニングデータを学習するために、新たなDNN層を有するニューラルネットワークソフトウェアアーキテクチャを再設定することができる(例えば、トレーニングされたDNNをニューラルネットワークソフトウェアアーキテクチャに代入することができる)。例えば、コンピュータシステム100は、入力するトレーニングデータに基づいて学習を継続することができる一つ以上のDNNを有するニューラルネットワークソフトウェアアーキテクチャを配置してもよい。入力するトレーニングデータが、ニューラルネットワークソフトウェアアーキテクチャの正当な入力データを正確に分類する能力を損なうようにするために意図的に崩壊されることがあるので、コンピュータシステム100は、配置されたニューラルネットワークソフトウェアアーキテクチャが毒攻撃によって入力の誤分類を開始した場合に同一のニューラルネットワークソフトウェアアーキテクチャの以前にトレーニングされたバージョンを保持するとともに配置してもよい。
【0309】
本開示の技術のイネイブラー(enabler)は、システムが機械速度(machine speed)に適応するのをサポートするAIシステムのためのものである。換言すれば、AIシステムは、(例えば、ハードウェアアーキテクチャパラメータ、サイバーセキュリティの危険な兆候等に基づいて)DNNのバージョンがリアルタイムで有効になるように自動的に変化させてもよい。これによって、更に有効な検出、学習及び応答(例えば、検知、記憶(learn)及び反応)が少ない待ち時間で可能になる。さらに、これは、検出及び防御措置を有効かつ迅速に行う必要がある自律的システム及びサイバーセキュリティシステムで重要である。
【0310】
図13は、本開示の技術による機械学習システムの例示的な動作を示すフローチャートである。図13の例において、機械学習システム104は、システムアーキテクチャパラメータを取得してもよい(1300)。システムアーキテクチャパラメータは、システムアーキテクチャのプロセッサを記述するデータを有してもよい。一部の例において、システムアーキテクチャパラメータは、システムアーキテクチャのプロセッサに等しい通信リンクを記述するデータを有する。さらに、一部の例において、システムアーキテクチャパラメータは、システムアーキテクチャの計算リソースの現在の状態を表すデータを有する。一部の例において、機械学習システム104は、機械学習システム104(図1)からシステムアーキテクチャパラメータを取得してもよい。
【0311】
さらに、図13の例において、機械学習システム104は、システムアーキテクチャパラメータに基づいて、ニューラルネットワークソフトウェアアーキテクチャ及びシステムアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアアーキテクチャのDNNのマッピングを決定してもよい(1302)。例えば、機械学習システム104は、ニューラルネットワークソフトウェアアーキテクチャ及びマッピングをシステムアーキテクチャパラメータに基づいて決定するためにDNN106を用いてもよい。したがって、ニューラルネットワークソフトウェアアーキテクチャ及びシステムアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアアーキテクチャのDNNのマッピングは、DNN106の出力である。本例において、機械学習システム104は、DNN106のトレーニング中に、システムアーキテクチャパラメータを用いて規定したように、サイズ、重み、電力及びコストの一つ以上に基づいて潜在的なニューラルネットワークソフトウェアアーキテクチャ及びDNNのマッピングにコスト値を割り当てるコスト関数を用いてもよい。
【0312】
ニューラルネットワークソフトウェアアーキテクチャを決定するプロセスを更に有効にするために、機械学習システム104は、ニューラルネットワークソフトウェアアーキテクチャの予めトレーニングされたDNNを用いてもよい。一部の例において、機械学習システム104は、DNNがマッピングされるハードウェアアーキテクチャのプロセッサに対する予めトレーニングされたDNNを最適化するために予めトレーニングされたDNNを生成するのに用いられた損失関数のハイパーパラメータ(例えば、λ、λ、λ等)の種々の値を用いて追加のトレーニングの繰り返しを予めトレーニングされたDNNにおいて行ってもよい。
【0313】
機械学習システム104は、システムアーキテクチャパラメータによって表されるニューラルネットワークソフトウェアアーキテクチャの複数のバージョン及びシステムアーキテクチャのプロセッサに対するDNNの潜在的な種々のマッピングを決定するために種々のシステムアーキテクチャパラメータに基づいて動作(1300)~(1302)を複数回繰り返してもよい。
【0314】
図13の例において、ニューラルネットワークソフトウェアアーキテクチャのDNNにマッピングされたプロセッサは、ニューラルネットワークソフトウェアアーキテクチャのDNNを実行してもよい(1304)。一部の例において、プロセッサは、評価モードにおいてDNNを実行してもよい。一部の例において、プロセッサは、DNNのトレーニングを継続してもよい。
【0315】
以下の段落は、本開示の例の限定されないリストを提供する。
【0316】
例1.計算リソースの要求を減少させるためにディープニューラルネットワーク(DNN)をトレーニングするコンピュータシステムであって、DNNの重みのセットを記憶するメモリであって、DNNは、複数の層を有し、複数の層の各々に対して、重みのセットは、層の重みを有し、ビット精度値のセットは、層のビット精度値を有し、層の重みは、層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、層の重みは、層のニューロンに対する入力に関連するメモリと、DNNをトレーニングするように構成された機械学習システムを実行する処理回路であって、DNNをトレーニングすることは、重みのセット及びビット精度値のセットを最適化することを備える処理回路と、を備えるコンピュータシステム。
【0317】
例2.機械学習システムは、DNNをトレーニングすることの一部として機械学習システムが複数の繰り返しに亘って誤差逆伝播アルゴリズムを適用するように構成され、誤差逆伝播アルゴリズムの各繰り返しは、重みのセットを更新するとともにビット精度値のセットを最適化する例1に記載のコンピュータシステム。
【0318】
例3.DNNの層の二つ以上は、互いに異なるビット精度値を有する例1に記載のコンピュータシステム。
【0319】
例4.重みのセットは、重みの第1のセットであり、メモリは、複数の層の各層に対する一定の精度の重みのセットを有する重みの第2のセットを記憶し、重みの第2のセットの各重みは、予め規定されたビット精度値に等しいビット精度値を有し、機械学習システムは、DNNをトレーニングすることの一部として、機械学習システムがDNNをトレーニングするための複数の繰り返しを実行するように構成され、機械学習システムは、複数の繰り返しを実行することの一部として、機械学習システムが複数の繰り返しの各繰り返しに対して、第1の入力データセットに基づいて第1の出力データセットを計算するために第2のセットの重みをDNNのニューロンの入力の重みとして用い、損失関数を計算し、損失関数に基づいて重みの第2のセットを更新し、損失関数に基づいてビット精度値のセットを更新し、重みの第2のセットを更新した後及びビット精度値のセットを更新した後、更新した第2のセットの重み及び更新したビット精度値のセットに基づいて重みの第1のセットを更新するように構成され、機械学習システムは、第2の入力データセットに基づいて第2の出力データセットを計算するために、第1のセットの重みをDNNのニューロンの入力の重みとして用いるように更に構成された例1に記載のコンピュータシステム。
【0320】
例5.機械学習システムは、損失関数を決定することの一部として、機械学習システムが、中間損失関数である第1の演算対象を決定し、第1のハイパーパラメータの値と複数の層の各層の量子化誤差の和の積に等しくなるような第2の演算対象を決定し、第2のハイパーパラメータの値と
【0321】
【数87】
【0322】
の積に等しくなるような第3の演算対象を決定し、iは、添え字であり、Nは、複数の層の総数であり、bは、複数の層のi番目の層のビット精度値であるようにし、損失関数を、第1の演算対象、第2の演算対象及び第3の演算対象の総和として決定するように構成された例4に記載のコンピュータシステム。
【0323】
例6.機械学習システムは、複数の層の各層に対して、第1のセットの重みの層の重みと第2のセットの重みの層の重みの間の差に基づいて層に対する量子化誤差を決定するように更に構成された例5に記載のコンピュータシステム。
【0324】
例7.第1の入力データセットは、トレーニングデータラベル対のバッチを備え、機械学習システムは、第1の演算対象を決定することの一部として機械学習システムが
【0325】
【数88】
【0326】
に等しくなるような第1の演算対象を決定し、Bは、トレーニングデータラベル対のバッチのデータラベル対の総数であり、トレーニングデータラベル対のバッチの各ラベルは、B個のラベルを有するラベルのセットの要素であり、iは、添え字であり、log(・)は、対数関数であり、Nは、複数の層の総数であり、yは、ラベルのセットのi番目のラベルであり、
【0327】
【数89】
【0328】
は、DNNがトレーニングデータラベル対のバッチのi番目のデータラベル対のデータの入力として与えられるときに複数の層のN番目の層の出力であるように構成され、トレーニングデータラベル対のバッチのデータラベル対は、独立の一様分布したデータラベル対である例5に記載のコンピュータシステム。
【0329】
ビット精度値のセットを更新することの一部として、機械学習システムは、
【0330】
【数90】
【0331】
に等しくなるように更新したビット精度値のセットを決定し、bは、ビット精度値のセットであり、
【0332】
【数91】
【0333】
は、重みの第1のセットであり、
【0334】
【数92】
【0335】
は、ビット精度値のセットに対する損失関数の偏微分であり、sign(・)は、関数の引数の絶対値がしきい値未満であるときに0を返し、そうでないときに関数の引数の符号を返す関数である例4に記載のコンピュータシステム。
【0336】
例9.重みの第2のセットを更新することの一部として、機械学習システムは、
【0337】
【数93】
【0338】
に等しくなるように更新した重みの第2のセットを決定し、Wは、重みの第2のセットであり、μは、学習率であり、
【0339】
【数94】
【0340】
は、重みの第1のセットであり、
【0341】
【数95】
【0342】
は、重みの第2のセットに対する損失関数の偏微分である例4に記載のコンピュータシステム。
【0343】
例10.機械学習システムは、重みの第1のセットを更新することの一部として、機械学習システムが複数の層の各層に対して各層の更新した最適精度の重みが
【0344】
【数96】
【0345】
に等しくなるように更新した重みの第1のセットを決定し、αは、層の一定の精度の重みのセットの最小重みであり、Wは、層の一定の精度の重みのセットであり、δは、層の一定の精度の重みのセットの最小重みから層の一定の精度の重みのセットの最大重みまでの離散化された範囲の一定のステップの総数であり、round(・)は、丸め関数であるように構成された例4に記載のコンピュータシステム。
【0346】
例11.δは、
【0347】
【数97】
【0348】
に等しく、βは、層の一定の精度の重みのセットの最大重みであり、bは、層のビット精度である例10に記載のコンピュータシステム。
【0349】
例12.複数の層の各々に対して、機械学習システムは、層の更新した第1のパラメータが
【0350】
【数98】
【0351】
に等しく設定されるように層の更新した第1のパラメータを決定し、θは、層の第1のパラメータであり、μは、学習率であり、
【0352】
【数99】
【0353】
は、θに関する損失関数の偏微分であり、層の更新した第2のパラメータが
【0354】
【数100】
【0355】
に等しく設定されるように層の更新した第2のパラメータを決定し、θは、層の第2のパラメータであり、μは、学習率であり、
【0356】
【数101】
【0357】
は、θに関する損失関数の偏微分であり、量子化関数θ+θlog|w|を適用することによって生成された値を丸めることにより層に対する量子化された値のセットを決定し、wは、層に関連する重みの第2のセットの重みを表し、層の量子化された値のセットの最大値及び層の量子化された値のセットの最小値を決定し、量子化された値のセットの最大値及び量子化された値のセットの最小値によって規定される範囲の2を底とする対数に基づいて層のビット精度値を設定するように構成された例4に記載のコンピュータシステム。
【0358】
例13.重みの第1のセットの各重みに対して、機械学習システムは、重みの第1のセットを更新することの一部として、機械学習システムが2の指数値の累乗を乗算した符号の値に等しい重みの第1のセットの重みを決定し、符号の値は、重みの第2のセットの対応する重みの符号を表し、指数値は、重みの第2のセットの対応する重みの対数の底2に基づくように構成された例4に記載のコンピュータシステム。
【0359】
例14.重みのセットの各重みが2の累乗に等しい例1に記載のコンピュータシステム。
【0360】
例15.各重みは、層のビット精度値に等しいビット精度、オフセット値及び量子化ステップ幅の値を有する整数値を用いることによってメモリにおいて表される例1に記載のコンピュータシステム。
【0361】
例16.機械学習システムは、システムアーキテクチャを記述するシステムアーキテクチャパラメータに基づいてDNNをトレーニングするように構成された例1に記載のコンピュータシステム。
【0362】
例17.機械学習システムは、システムアーキテクチャのプロセッサを記述するデータを有するシステムアーキテクチャパラメータを取得し、システムアーキテクチャパラメータに基づいて、DNNを有するニューラルネットワークソフトウェアアーキテクチャ及びシステムアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアアーキテクチャのDNNのマッピングを決定するように構成され、ニューラルネットワークソフトウェアアーキテクチャのDNNに対してマッピングされるシステムアーキテクチャのプロセッサは、ニューラルネットワークソフトウェアアーキテクチャのDNNを実行するように構成された例1に記載のコンピュータシステム。
【0363】
例18.計算リソースの要求を減少させるためにディープニューラルネットワーク(DNN)をトレーニングする方法であって、DNNの重みのセットを記憶することであって、DNNは、複数の層を有し、複数の層の各々に対して、重みのセットは、層の重みを有し、ビット精度値のセットは、層のビット精度値を有し、層の重みは、層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、層の重みは、層のニューロンに対する入力に関連することと、DNNをトレーニングするように構成された機械学習システムを実行することであって、DNNをトレーニングすることは、重みのセット及びビット精度値のセットを最適化することを備えることと、を備える方法。
【0364】
例19.DNNをトレーニングすることは、複数の繰り返しに亘って誤差逆伝播アルゴリズムを適用することであって、誤差逆伝播アルゴリズムの各繰り返しは、重みのセットを更新するとともにビット精度値のセットを最適化することを備える例18に記載の方法。
【0365】
例20.DNNの層の二つ以上は、互いに異なるビット精度値を有する例18に記載の方法。
【0366】
例21.重みのセットは、重みの第1のセットであり、複数の層の各層に対する一定の精度の重みのセットを有する重みの第2のセットを記憶し、重みの第2のセットの各重みは、予め規定されたビット精度値に等しいビット精度値を有することを更に備え、DNNをトレーニングすることは、DNNをトレーニングするための複数の繰り返しを実行することを更に備え、複数の繰り返しを実行することは、複数の繰り返しの各繰り返しに対して、第1の入力データセットに基づいて第1の出力データセットを計算するために第2のセットの重みをDNNのニューロンの入力の重みとして用いることと、損失関数を計算することと、損失関数に基づいて重みの第2のセットを更新することと、損失関数に基づいてビット精度値のセットを更新することと、重みの第2のセットを更新した後及びビット精度値のセットを更新した後、更新した第2のセットの重み及び更新したビット精度値のセットに基づいて重みの第1のセットを更新することと、を備え、第2の入力データセットに基づいて第2の出力データセットを計算するために第1のセットの重みをDNNのニューロンの入力の重みとして用いることを更に備える例18に記載の方法。
【0367】
例22.損失関数を決定することは、中間損失関数である第1の演算対象を決定することと、第1のハイパーパラメータの値と複数の層の各層の量子化誤差の和の積に等しくなるような第2の演算対象を決定することと、第2のハイパーパラメータの値と
【0368】
【数102】
【0369】
の積に等しくなるような第3の演算対象を決定することであって、iは、添え字であり、Nは、複数の層の総数であり、bは、複数の層のi番目の層のビット精度値であるようにすることと、損失関数を、第1の演算対象、第2の演算対象及び第3の演算対象の総和として決定することと、を備える例21に記載の方法。
【0370】
例23.複数の層の各層に対して、第1のセットの重みの層の重みと第2のセットの重みの層の重みの間の差に基づいて層に対する量子化誤差を決定することを更に備える例22に記載の方法。
【0371】
例24.第1の入力データセットは、トレーニングデータラベル対のバッチを備え、第1の演算対象を決定することは、
【0372】
【数103】
【0373】
に等しくなるような第1の演算対象を決定し、Bは、トレーニングデータラベル対のバッチのデータラベル対の総数であり、トレーニングデータラベル対のバッチの各ラベルは、B個のラベルを有するラベルのセットの要素であり、iは、添え字であり、log(・)は、対数関数であり、Nは、複数の層の総数であり、yは、ラベルのセットのi番目のラベルであり、
【0374】
【数104】
【0375】
は、DNNがトレーニングデータラベル対のバッチのi番目のデータラベル対のデータの入力として与えられるときに複数の層のN番目の層の出力であることを備え、トレーニングデータラベル対のバッチのデータラベル対は、独立の一様分布したデータラベル対である例22に記載の方法。
【0376】
例25. ビット精度値のセットを更新することは、
【0377】
【数105】
【0378】
に等しくなるように更新したビット精度値のセットを決定し、bは、ビット精度値のセットであり、
【0379】
【数106】
【0380】
は、重みの第1のセットであり、
【0381】
【数107】
【0382】
は、ビット精度値のセットに対する損失関数の偏微分であり、sign(・)は、関数の引数の絶対値がしきい値未満であるときに0を返し、そうでないときに関数の引数の符号を返す関数である例21に記載の方法。
【0383】
例26.重みの第2のセットを更新することは、
【0384】
【数108】
【0385】
に等しくなるように更新した重みの第2のセットを決定し、Wは、重みの第2のセットであり、μは、学習率であり、
【0386】
【数109】
【0387】
は、重みの第1のセットであり、
【0388】
【数110】
【0389】
は、重みの第2のセットに対する損失関数の偏微分であることを備える例21に記載の方法。
【0390】
例27.重みの第1のセットを更新することは、機械学習システムが複数の層の各層に対して各層の更新した最適精度の重みが
【0391】
【数111】
【0392】
に等しくなるように更新した重みの第1のセットを決定し、αは、層の一定の精度の重みのセットの最小重みであり、Wは、層の一定の精度の重みのセットであり、δは、層の一定の精度の重みのセットの最小重みから層の一定の精度の重みのセットの最大重みまでの離散化された範囲の一定のステップの総数であり、round(・)は、丸め関数であることを備える例21に記載の方法。
【0393】
例28.δは、
【0394】
【数112】
【0395】
に等しく、βは、層の一定の精度の重みのセットの最大重みであり、bは、層のビット精度である例27に記載の方法。
【0396】
例29.ビット精度値のセットを更新することは、複数の層の各々に対して、層の更新した第1のパラメータが
【0397】
【数113】
【0398】
に等しく設定されるように層の更新した第1のパラメータを決定し、θは、層の第1のパラメータであり、μは、学習率であり、
【0399】
【数114】
【0400】
は、θに関する損失関数の偏微分であることと、層の更新した第2のパラメータが
【0401】
【数115】
【0402】
に等しく設定されるように層の更新した第2のパラメータを決定し、θは、層の第2のパラメータであり、μは、学習率であり、
【0403】
【数116】
【0404】
は、θに関する損失関数の偏微分であることと、量子化関数θ+θlog|w|を適用することによって生成された値を丸めることにより層に対する量子化された値のセットを決定し、wは、層に関連する重みの第2のセットの重みを表すことと、層の量子化された値のセットの最大値及び層の量子化された値のセットの最小値を決定し、量子化された値のセットの最大値及び量子化された値のセットの最小値によって規定される範囲の2を底とする対数に基づいて層のビット精度値を設定することと、を備える例21に記載の方法。
【0405】
例30.重みの第1のセットを更新することは、重みの第1のセットの各重みに対して、2の指数値の累乗を乗算した符号の値に等しい重みの第1のセットの重みを決定し、符号の値は、重みの第2のセットの対応する重みの符号を表し、指数値は、重みの第2のセットの対応する重みの対数の底2に基づくことを備える例21に記載の方法。
【0406】
例31.重みのセットの各重みが2の累乗に等しい例18に記載の方法。
【0407】
例32.各重みは、層のビット精度値に等しいビット精度、オフセット値及び量子化ステップ幅の値を有する整数値を用いることによってメモリにおいて表される例18に記載の方法。
【0408】
例33.機械学習システムは、システムアーキテクチャを記述するシステムアーキテクチャパラメータに基づいてDNNをトレーニングするように構成された例18に記載の方法。
【0409】
例34.システムアーキテクチャのプロセッサを記述するデータを有するシステムアーキテクチャパラメータを取得することと、システムアーキテクチャパラメータに基づいて、DNNを有するニューラルネットワークソフトウェアアーキテクチャ及びシステムアーキテクチャのプロセッサに対するニューラルネットワークソフトウェアアーキテクチャのDNNのマッピングを決定することと、ニューラルネットワークソフトウェアアーキテクチャのDNNに対してマッピングされるシステムアーキテクチャのプロセッサによって、ニューラルネットワークソフトウェアアーキテクチャのDNNを実行することと、を更に備える例18に記載の方法。
【0410】
例35.実行のときに、ディープニューラルネットワーク(DNN)の重みのセットを記憶することであって、DNNは、複数の層を有し、複数の層の各々に対して、重みのセットは、層の重みを有し、ビット精度値のセットは、層のビット精度値を有し、層の重みは、層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、層の重みは、層のニューロンに対する入力に関連することと、DNNをトレーニングするように構成された機械学習システムを実行することであって、DNNをトレーニングすることは、重みのセット及びビット精度値のセットを最適化することを備えることと、を一つ以上のプロセッサによって実行させる命令を記憶したコンピュータ可読データ記憶媒体。
【0411】
本開示に記載した技術を、ハードウェア、ソフトウェア、ファームウェア及びその任意の組合せによって少なくとも部分的に実現してもよい。例えば、記載した技術の種々の態様を、一つ以上のマイクロプロセッサ、デジタルシグナルプロセッサ(DPS)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)又は他の任意の同等の統合された又は個別の論理回路及びそのような構成要素の任意の組合せを含む一つ以上のプロセッサ内で実現することができる。用語「プロセッサ」又は「処理回路」は、一般的には、上述した論理回路のみ、上述した論理回路と他の論理回路との組合せ又は他の任意の同等の回路を意味する。ハードウェアを備える制御部は、本開示の技術の一つ以上を実行してもよい。
【0412】
そのようなハードウェア、ソフトウェア及びファームウェアを、本開示で説明した種々の動作及び機能をサポートするために同一の回路内又は個別の回路内で実現してもよい。追加的には、記載したユニット、モジュール又は構成要素のいずれかを、個別であるが相互運用可能な論路装置として協働して又は個別に実現してもよい。モジュール又はユニットとしての種々の特徴の描写は、種々の機能的な態様を強調することを意図するものであり、そのようなモジュール又はユニットを個別のハードウェア構成要素又はソフトウェア構成要素によって実現する必要があることを必ずしも意味しない。それどころか、一つ以上のモジュール又はユニットに関連する機能を、個別のハードウェア構成要素若しくはソフトウェア構成要素によって実現してもよい又は共通の若しくは個別尾ハードウェア構成要素若しくはソフトウェア構成要素内で統合してもよい。
【0413】
本開示に記載した技術を、命令を含むコンピュータ可読記憶媒体のようなコンピュータ可読媒体で具体化又はコード化してもよい。コンピュータ可読記憶媒体において組み込まれた又はコード化された命令によって、プログラマブルプロセッサ又は他のプロセッサは、例えば、命令が実行されるときに方法を実行してもよい。コンピュータ可読媒体は、データ記憶媒体のような有形的表現媒体又は、例えば、通信プロトコルに従ってある場所から他の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に対応するコンピュータ可読記憶媒体を含んでもよい。このようにして、コンピュータ可読媒体は、一般的には、(1)非一時的な有形的表現コンピュータ可読記憶媒体又は(2)信号又は搬送波のような通信媒体に対応する。データ記憶媒体を、本開示に記載した技術の命令、コード及び/又はデータ構造を検索するために一つ以上のコンピュータ又は一つ以上のプロセッサによってアクセスすることができる任意の利用できる媒体としてもよい。コンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、プログラマブルリードオンリーメモリ(PROM),消去可能プログラマブルリードオンリーメモリ(EPROM)、電子的消去可能プログラマブルリードオンリーメモリ(EEPROM)、フラッシュメモリ、ハードディスク、CD-ROM、フロッピーディスク(登録商標)、カセット、磁気媒体、光媒体又は他のコンピュータ可読媒体を含んでもよい。
【0414】
種々の例を説明した。これらの例及び他の例は、特許請求の範囲内にある。
図1
図2
図3
図4
図5
図6A
図6B
図7
図8A
図8B
図9
図10
図11
図12
図13
【手続補正書】
【提出日】2024-02-01
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
計算リソースの要求を減少させるためにディープニューラルネットワーク(DNN)をトレーニングするコンピュータシステムであって、
前記DNNの重みの第1のセット、前記DNNの重みの第2のセット及びビット精度値のセットを記憶するメモリであって、前記DNNは、複数の層を有し、前記複数の層の各層に対して、前記重みの第1のセットは、前記層の第1の重みを有し、前記重みの第2のセットは、前記層の第2の重みを有し、前記ビット精度値のセットは、前記層のビット精度値を有し、前記層の第1の重みは、前記層のビット精度値に等しいビット精度を有する値を用いて前記メモリにおいて表され、前記層の第2の重みは、予め規定された最高ビット精度値に等しいビット精度を有する値を用いて前記メモリにおいて表され、前記層の第1の重み及び前記層の第2の重みは、前記層のニューロンに対する入力に関連するメモリと、
前記DNNをトレーニングするように構成された機械学習システムを実行する処理回路であって、前記DNNをトレーニングすることは、損失関数の勾配に基づいて、前記重みの第1のセット、前記重みの第2のセット及び前記ビット精度値のセットを更新することを備える処理回路と、
を備え
前記機械学習システムは、更新した前記重みの第2のセット及び更新した前記ビット精度値に基づいて前記重みの第1のセットを更新し、
前記損失関数は、第1の演算対象、第2の演算対象及び第3の演算対象の和として決定され、
前記第1の演算対象は、中間損失関数であり、
前記第2の演算対象は、第1のハイパーパラメータの値と、前記機械学習システムが前記重みの第1のセットを用いるとともに前記重みの第2のセットを用いて第1の入力データセットで前記DNNを実行するときに前記DNNによって生成された出力の間の差を表す蒸留損失との積に等しく、
前記第3の演算対象は、第2のハイパーパラメータの値と、前記複数の層の各層に対応する項の和との積に等しく、前記複数の層の各層に対して、各層に対応する項は、2の各層に対するビット精度値の累乗に等しく、
前記重みのセットの各重みが2の累乗に等しく、
前記機械学習システムは、前記ビット精度値のセットを更新の一部として、前記複数の層の各々に対して、
前記層に対するパラメータに対する前記損失関数の勾配に基づいて、前記層に対する更新されたパラメータを決定し、
前記層に対する更新されたパラメータに基づく量子化関数を前記層に関連する前記重みの第2のセットの重みに適用することによって生成された値を丸めることにより前記層に対する量子化された値のセットを決定し、
前記層に対する量子化された値のセットの最大値及び前記層に対する量子化された値のセット最小値を決定し、
前記量子化された値のセットの最大値から前記量子化された値のセット最小値を減算したものに1を加算したものの底が2の対数に基づいて前記層のビット精度値を設定するように構成された、コンピュータシステム。
【請求項2】
前記DNNの層の二つ以上は、互いに異なるビット精度値を有する請求項1に記載のコンピュータシステム。
【請求項3】
前記重みの第2のセットは、前記複数の層の各層に対する一定の精度の重みのセットを有し
前記機械学習システムは、前記DNNをトレーニングすることの一部として、前記機械学習システムが前記DNNをトレーニングするための複数の繰り返しを実行するように構成され、前記機械学習システムは、前記複数の繰り返しを実行することの一部として、前記機械学習システムが前記複数の繰り返しの各繰り返しに対して、
第1の入力データセットに基づいて第1の出力データセットを計算するために前記第2のセットの重みを前記DNNのニューロンの入力の重みとして用い、
前記損失関数を計算し、
更新した前記重みの第2のセットを決定するために、前記損失関数に基づいて前記重みの第2のセットを更新し、
記ビット精度値のセットを更新し、
前記重みの第2のセットを更新した後及び前記ビット精度値のセットを更新した後、更新した第2のセットの重み及び更新したビット精度値のセットに基づいて前記重みの第1のセットを更新するように構成され、
前記機械学習システムは、第2の入力データセットに基づいて第2の出力データセットを計算するために、前記第1のセットの重みを前記DNNのニューロンの入力の重みとして用いるように更に構成された請求項1に記載のコンピュータシステム。
【請求項4】
前記複数の層の各層に対して、前記層に対するパラメータは、前記層に対する第1のパラメータ及び前記層に対する第2のパラメータを有し、前記層に対する更新されたパラメータは、前記層に対する更新された第1のパラメータ及び前記層に対する更新された第2のパラメータを有し、前記機械学習システムは、
前記層に対する更新された第1のパラメータが
【数1】
に等しくなるように前記層に対する更新された第1のパラメータを決定し、θ は、前記層に対する第1のパラメータであり、μは、学習率であり、
【数2】
は、θ に対する損失関数の偏微分であり、
前記層に対する更新された第2のパラメータが
【数3】
に等しくなるように前記層に対する更新された第2のパラメータを決定し、θ は、前記層に対する第2のパラメータであり、μは、学習率であり、
【数4】
は、θ に対する損失関数の偏微分であり、
量子化関数θ +θ log |w|を適用することによって生成された値を丸めることにより前記層に対する量子化された重みのセットを決定するように構成された、請求項3に記載のコンピュータシステム。
【請求項5】
前記機械学習システムは、1に丸め値を加算したものに基づいて前記層のビット精度値を設定し、前記丸め値は、前記量子化された値のセットの最大値から前記量子化された値のセット最小値を減算したものに1を加算したものの底が2の対数に等しい、請求項1に記載のコンピュータシステム。
【請求項6】
前記重みの第1のセットの各重みに対して、前記機械学習システムは、前記重みの第1のセットを更新することの一部として、前記機械学習システムが2の指数値の累乗を乗算した符号の値に等しい前記重みの第1のセットの重みを決定し、前記符号の値は、前記重みの第2のセットの対応する重みの符号を表し、前記指数値は、前記重みの第2のセットの対応する重みの対数の底2に基づくように構成された請求項3に記載のコンピュータシステム。
【請求項7】
前記重みの第1のセットの各重みは、指数値及び符号値を用いることによって前記メモリにおいて表される請求項に記載のコンピュータシステム。
【請求項8】
前記機械学習システムは、システムアーキテクチャを記述するシステムアーキテクチャパラメータに基づいて前記DNNをトレーニングするように構成された請求項1に記載のコンピュータシステム。
【請求項9】
前記機械学習システムは、
システムアーキテクチャのプロセッサを記述するデータを有するシステムアーキテクチャパラメータを取得し、
前記システムアーキテクチャパラメータに基づいて、前記DNNを有するニューラルネットワークソフトウェアアーキテクチャ及び前記システムアーキテクチャの前記プロセッサに対する前記ニューラルネットワークソフトウェアアーキテクチャのDNNのマッピングを決定するように構成され、
前記ニューラルネットワークソフトウェアアーキテクチャの前記DNNに対してマッピングされる前記システムアーキテクチャの前記プロセッサは、前記ニューラルネットワークソフトウェアアーキテクチャの前記DNNを実行するように構成された請求項1に記載のコンピュータシステム。
【請求項10】
計算リソースの要求を減少させるためにディープニューラルネットワーク(DNN)をトレーニングする方法であって、
前記DNNの重みの第1のセット、前記DNNの重みの第2のセット及びビット精度値のセットを記憶することであって、前記DNNは、複数の層を有し、前記複数の層の各々に対して、
前記重みの第1のセットは、前記層の第1の重みを有し、前記重みの第2のセットは、前記層の第2の重みを有し、前記ビット精度値のセットは、前記層のビット精度値を有し、前記層の第1の重みは、前記層のビット精度値に等しいビット精度を有する値を用いてメモリにおいて表され、前記層の第2の重みは、予め規定された最高ビット精度値に等しいビット精度を有する値を用いて前記メモリにおいて表され、前記層の第1の重み及び前記層の第2の重みは、前記層のニューロンに対する入力に関連することと、
前記DNNをトレーニングするように構成された機械学習システムを実行することであって、前記DNNをトレーニングすることは、損失関数の勾配に基づいて、前記重みの第1のセット、前記重みの第2のセット及び前記ビット精度値のセットを更新することを備えることと、
を備え、
前記機械学習システムは、更新した前記重みの第2のセット及び更新した前記ビット精度値に基づいて前記重みの第1のセットを更新し、
前記損失関数は、第1の演算対象、第2の演算対象及び第3の演算対象の和として決定され、
前記第1の演算対象は、中間損失関数であり、
前記第2の演算対象は、第1のハイパーパラメータの値と、前記機械学習システムが前記重みの第1のセットを用いるとともに前記重みの第2のセットを用いて第1の入力データセットで前記DNNを実行するときに前記DNNによって生成された出力の間の差を表す蒸留損失との積に等しく、
前記第3の演算対象は、第2のハイパーパラメータの値と、前記複数の層の各層に対応する項の和との積に等しく、前記複数の層の各層に対して、各層に対応する項は、2の各層のビット精度値の累乗に等しく、
前記重みのセットの各重みが2の累乗に等しく、
前記機械学習システムは、前記ビット精度値のセットを更新の一部として、前記複数の層の各々に対して、
前記層に対するパラメータに対する前記損失関数の勾配に基づいて、前記層に対する更新されたパラメータを決定し、
前記層に対する更新されたパラメータに基づく量子化関数を前記層に関連する前記重みの第2のセットの重みに適用することによって生成された値を丸めることにより前記層に対する量子化された値のセットを決定し、
前記層に対する量子化された値のセットの最大値及び前記層に対する量子化された値のセット最小値を決定し、
前記量子化された値のセットの最大値から前記量子化された値のセット最小値を減算したものに1を加算したものの底が2の対数に基づいて前記層のビット精度値を設定するように構成された、方法。
【請求項11】
前記DNNの層の二つ以上は、異なるビット精度値を有する請求項10に記載の方法。
【請求項12】
前記重みの第2のセットは、前記複数の層の各層に対する一定の精度の重みのセットを有し
前記DNNをトレーニングすることは、前記DNNをトレーニングするための複数の繰り返しを実行することを更に備え、前記複数の繰り返しを実行することは、前記複数の繰り返しの各繰り返しに対して、
第1の入力データセットに基づいて第1の出力データセットを計算するために前記第2のセットの重みを前記DNNのニューロンの入力の重みとして用いることと、
損失関数を計算することと、
更新した前記重みの第2のセットを決定するために、前記損失関数に基づいて前記重みの第2のセットを更新することと、
記損失関数に基づいて前記ビット精度値のセットを更新することと、
前記重みの第2のセットを更新した後及び前記ビット精度値のセットを更新した後、更新した第2のセットの重み及び更新したビット精度値のセットに基づいて前記重みの第1のセットを更新することと、を備え、
第2の入力データセットに基づいて第2の出力データセットを計算するために前記第1のセットの重みを前記DNNのニューロンの入力の重みとして用いることを更に備える請求項10に記載の方法。
【請求項13】
前記複数の層の各層に対して、前記層に対するパラメータは、前記層に対する第1のパラメータ及び前記層に対する第2のパラメータを有し、前記層に対する更新されたパラメータは、前記層に対する更新された第1のパラメータ及び前記層に対する更新された第2のパラメータを有し、前記ビット精度値のセットを更新することは、
前記層に対する更新された第1のパラメータが
【数5】
に等しくなるように前記層に対する更新された第1のパラメータを決定することであって、θ は、前記層に対する第1のパラメータであり、μは、学習率であり、
【数6】
は、θ に対する損失関数の偏微分であることと、
前記層に対する更新された第2のパラメータが
【数7】
に等しくなるように前記層に対する更新された第2のパラメータを決定することであって、θ は、前記層に対する第2のパラメータであり、μは、学習率であり、
【数8】
は、θ に対する損失関数の偏微分であることと、
量子化関数θ +θ log |w|を適用することによって生成された値を丸めることにより前記層に対する量子化された重みのセットを決定することと、
を備える、請求項12に記載の方法。
【請求項14】
前記機械学習システムは、1に丸め値を加算したものに基づいて前記層のビット精度値を設定し、前記丸め値は、前記量子化された値のセットの最大値から前記量子化された値のセット最小値を減算したものに1を加算したものの底が2の対数に等しい、請求項10に記載の方法。
【請求項15】
実行のときに、
ディープニューラルネットワーク(DNN)の重みの第1のセット、前記DNNの重みの第2のセット及びビット精度値のセットメモリに記憶することであって、前記DNNは、複数の層を有し、前記複数の層の各々に対して、前記重みの第1のセットは、前記層の第1の重みを有し、前記重みの第2のセットは、前記層の第2の重みを有し、前記ビット精度値のセットは、前記層のビット精度値を有し、前記層の第1の重みは、前記層のビット精度値に等しいビット精度を有する値を用いて前記メモリにおいて表され、前記層の第2の重みは、予め規定された最高ビット精度値に等しいビット精度を有する値を用いて前記メモリにおいて表され、前記層の第1の重み及び前記層の第2の重みは、前記層のニューロンに対する入力に関連することと、
前記DNNをトレーニングするように構成された機械学習システムを実行することであって、前記DNNをトレーニングすることは、損失関数の勾配に基づいて、前記重みの第1のセット、前記重みの第2のセット及び前記ビット精度値のセットを更新することを備えることと、
を一つ以上のプロセッサによって実行させる命令を記憶し
前記機械学習システムは、更新した前記重みの第2のセット及び更新した前記ビット精度値に基づいて前記重みの第1のセットを更新し、
前記損失関数は、第1の演算対象、第2の演算対象及び第3の演算対象の和として決定され、
前記第1の演算対象は、中間損失関数であり、
前記第2の演算対象は、第1のハイパーパラメータの値と、前記機械学習システムが前記重みの第1のセットを用いるとともに前記重みの第2のセットを用いて第1の入力データセットで前記DNNを実行するときに前記DNNによって生成された出力の間の差を表す蒸留損失との積に等しく、
前記第3の演算対象は、第2のハイパーパラメータの値と、前記複数の層の各層に対応する項の和との積に等しく、前記複数の層の各層に対して、各層に対応する項は、2の各層のビット精度値の累乗に等しく、
前記重みのセットの各重みが2の累乗に等しく、
前記機械学習システムは、前記ビット精度値のセットを更新の一部として、前記複数の層の各々に対して、
前記層に対するパラメータに対する前記損失関数の勾配に基づいて、前記層に対する更新されたパラメータを決定し、
前記層に対する更新されたパラメータに基づく量子化関数を前記層に関連する前記重みの第2のセットの重みに適用することによって生成された値を丸めることにより前記層に対する量子化された値のセットを決定し、
前記層に対する量子化された値のセットの最大値及び前記層に対する量子化された値のセット最小値を決定し、
前記量子化された値のセットの最大値から前記量子化された値のセット最小値を減算したものに1を加算したものの底が2の対数に基づいて前記層のビット精度値を設定するように構成された、コンピュータ可読データ記憶媒体。
【外国語明細書】