(57)【要約】  補償型ディープニューラルネットワーク（補償型ＤＮＮ）が提供される。成分のセットを有する第１のベクトル及び対応する成分のセットを有する第２のベクトルが受信される。第１のベクトルの成分は、第１の量子化値及び第１の補償命令を含み、第２のベクトルの対応する成分は、第２の量子化値及び第２の補償命令を含む。第１の量子化値と第２の量子化値とを乗算して、生の積値を計算する。第１及び第２の補償命令に従って量子化誤差に関して生の積値を補償し、補償された積値を生成する。補償された積値が、ドット積についての累積値に加算される。累積値は、出力量子化値及び出力補償命令を含むドット積の出力ベクトルに変換される。出力ベクトルは、出力量子化値及び出力補償命令を含む。
2021530761.tif 000002
【特許請求の範囲】
【請求項１】
ドット積を計算するためのコンピュータ実施方法であって、
成分のセットを有する第１のベクトル及び対応する成分のセットを有する第２のベクトルを受信することであって、前記第１のベクトルの成分は、第１の量子化値及び第１の補償命令を含み、前記第２のベクトルの対応する成分は、第２の量子化値及び第２の補償命令を含む、受信することと、
前記第１の量子化値と前記第２の量子化値とを乗算して、生の積値を計算することと、
前記第１及び第２の補償命令に従って、量子化誤差に関して前記生の積値を補償して、補償された積値を生成することと、
前記補償された積値を、前記ドット積についての累積値に加算することと、
前記累積値を、出力量子化値及び出力補償命令を含む前記ドット積の出力ベクトルに変換することと
を含む、コンピュータ実施方法。
【請求項２】
前記ドット積は第１のドット積であり、前記方法は、前記出力ベクトルを、第２のドット積についての第２の生の積値を計算し、前記出力補償命令に従って前記第２の生の積を補償するためのベクトルとして使用することをさらに含む、請求項１に記載のコンピュータ実施方法。
【請求項３】
前記第１の補償命令は、前記第１の量子化値の量子化誤差を補償するための第１の方向ビット及び第１の大きさビットを含み、
前記第２の補償命令は、前記第２の量子化値の量子化誤差を補償するための第２の方向ビット及び第２の大きさビットを含む、
請求項１に記載のコンピュータ実施方法。
【請求項４】
前記第１及び第２の補償命令に従って、量子化誤差に関して前記生の積値を補償して、補償された積値を生成することは、
前記第１の大きさビットに従って前記第１の量子化値をシフトすることと、
前記第２の大きさビットに従って前記第２の量子化値をシフトすることと、
前記シフトされた第１の量子化値と前記シフトされた第２の量子化値とを加算して、前記第１及び第２の方向ビットに従った補償値を生成することと、
前記補償値を前記生の積値に加算して、前記補償された積値を生成することと
を含む、請求項１に記載のコンピュータ実施方法。
【請求項５】
前記第１の補償命令が前記第１の量子化値の量子化誤差が閾値を下回ることを示すビットを含み、かつ、前記第２の補償命令が前記第２の量子化値の量子化誤差が閾値を下回ることを示すビットを含むと判断したときに、補償回路を低電力モードにすること
をさらに含む、請求項１に記載のコンピュータ実施方法。
【請求項６】
前記第１の補償命令は、１つの方向ビット、１つのゼロ補償ビット及び２つ又はそれより少ない大きさビットを含む４つを超えないビットを含む、請求項１に記載のコンピュータ実施方法。
【請求項７】
コンピューティングデバイスであって、
プロセッサと、
命令のセットを格納するストレージデバイスと
を含み、前記プロセッサによる前記命令のセットの実行は、前記コンピューティングデバイスを、請求項１〜請求項６のいずれかに記載の方法のステップを実行するように構成する、コンピューティングデバイス。
【請求項８】
前記出力補償命令は、前記出力量子化値が推定量子化誤差によって補償されるべきかどうかを示すためのビットを含む、請求項１に記載のコンピューティングデバイス。
【請求項９】
集積回路（ＩＣ）であって、
成分のセットを有する第１のベクトル及び対応する成分のセットを有する第２のベクトルに基づいてドット積を生成するように構成された処理要素回路を含み、前記第１のベクトルの成分は、第１の量子化値及び第１の補償命令を含み、前記第２のベクトルの対応する成分は、第２の量子化値及び第２の補償命令を含み、
前記処理要素回路は、
前記第１の量子化値と前記第２の量子化値とを乗算して、生の積値を計算するように構成された計算回路と、
前記第１及び第２の補償命令に従って、量子化誤差に関して前記生の積値を補償して、補償された積値を生成するように構成された補償回路と、
前記補償された積値を前記ドット積についての累積値に加算するように構成された累積回路と
を含む、集積回路（ＩＣ）。
【請求項１０】
前記処理要素は、前記累積値を、出力量子化値及び出力補償命令を含む前記ドット積の出力ベクトルに変換するように構成された変換回路をさらに含む、請求項９に記載のＩＣ。
【請求項１１】
前記処理要素は第１の処理要素であり、前記出力ベクトルは、前記出力ベクトルを用いて、第２の生の積値を計算し、前記出力補償命令に従って前記第２の生の積を補償するように構成された第２の処理要素へのベクトルとして使用される、請求項１０に記載のＩＣ。
【請求項１２】
前記出力補償命令は、前記出力量子化値についての推定量子化誤差がゼロであるかどうかを示すためのビットを含む、請求項１０に記載のＩＣ。
【請求項１３】
前記第１の補償命令は、前記第１の量子化値の量子化誤差を補償するための第１の方向ビット及び第１の大きさビットを含み、
前記第２の補償命令は、前記第２の量子化値の量子化誤差を補償するための第２の方向ビット及び第２の大きさビットを含む、
請求項９に記載のＩＣ。
【請求項１４】
前記第１及び第２の補償命令に従って量子化誤差に関して前記生の積値を補償し、補償された積値を生成することは、
前記第１の大きさビットに従って前記第１の量子化値をシフトすることと、
前記第２の大きさビットに従って前記第２の量子化値をシフトすることと、
前記シフトされた第１の量子化値と前記シフトされた第２の量子化値とを加算して、前記第１及び第２の方向ビットに従った補償値を生成することと、
前記生の積値に前記補償値を加算して、前記補償された積値を生成することと
を含む、請求項１３に記載のＩＣ。
【請求項１５】
前記第１の補償命令が前記第１の量子化値が閾値を下回ることを示すビットを含み、かつ、前記第２の補償命令が前記第２の量子化値が閾値を下回ることを示すビットを含むと判断したときに、前記補償回路は低電力モードにある、請求項９に記載のＩＣ。
【請求項１６】
前記第１の補償命令は、１つの方向ビット、１つのゼロ補償ビット及び２つ又はそれより少ない大きさビットを含む４つを超えないビットを含む、請求項９に記載のＩＣ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ニューラルネットワークによる計算に関する。
【背景技術】
【０００２】
人工知能（ＡＩ）の分野は、画像、ビデオ、テキスト、自然言語を含む多くの認識タスクにおいて最新の分類精度を達成したディープニューラルネットワーク（ＤＮＮ）の出現とともに、近年典型的な成長を経験している。ＤＮＮは、人工ニューロンと呼ばれる基本的な計算単位の多層ネットワークである。ネットワーク内の各層は重みのセットと関連付けられる。層内の各ニューロンは、入力と重みとのドット積（dot product）を計算するマルチ入力、単一出力関数を評価し、その後、加重和に対する非線形活性化関数が続く。ＤＮＮは、２つの段階、すなわち（ｉ）訓練及び（ｉｉ）推論で動作する。訓練は、ラベル付けされたデータセットに基づいて行われ、確率的勾配降下（ＳＧＤ）アルゴリズムを用いて、ＤＮＮの重みが反復的に改良される。推論の際、訓練されたモデルを用いて、これまで知られていなかった入力が分類される。
【発明の概要】
【０００３】
本発明の幾つかの実施形態は、ディープニューラルネットワーク（ＤＮＮ）の人工ニューロンのための処理要素を提供する。処理要素は、成分のセットを有する第１のベクトル及び対応する成分のセットを有する第２のベクトルに基づいてドット積を生成するように構成される。第１のベクトルの成分は、第１の量子化値及び第１の補償命令を含み、第２のベクトルの対応する成分は、第２の量子化値及び第２の補償命令を含む。処理要素は、第１の量子化値と第２の量子化値とを乗算して生の積値（raw product value）を計算するように構成された計算モジュールを含む。処理要素は、第１及び第２の補償命令に従って、量子化誤差に関して生の積値を補償し、補償された積値を生成するように構成された補償モジュールを含む。処理要素は、補償された積値をドット積についての累積値に加算するように構成された累積モジュールを含む。処理要素は、累積値をドット積値の出力ベクトルに変換するように構成された変換モジュールを含み、出力ベクトルは、出力量子化値及び出力補償命令を含む。
【０００４】
補償命令は、量子化値の量子化誤差を補償するための方向ビット及び大きさビットを含む。幾つかの実施形態において、補償命令は、１つの方向ビット、１つのゼロ補償ビット及び２又はそれより少ない大きさビットを含む４つを超えないビットを含む。ゼロ補償ビットは、推定された量子化誤差がゼロであり、量子化値を補償する必要がないように、量子化誤差が閾値を下回るかどうかを示す。幾つかの実施形態において、補償モジュールは、第１の量子化命令及び第２の量子化命令の両方のゼロ補償ビットが、第１の量子化値及び第２の量子化値の両方についての推定量子化誤差がゼロであることを示すとき、低電力モードにある。
【０００５】
前述の概要は、本発明の幾つかの実施形態に対する簡単な導入の役割を果たすことを意図する。前述の概要は、本文書において開示される全ての発明の主題の導入又は概説であることを意図するものではない。以下の詳細な説明、及びそこで参照される図面は、概要において説明される実施形態、並びに本発明の他の実施形態をさらに説明する。従って、本文書により説明される本発明の全ての実施形態を理解するために、概要、詳細な説明、及び図面が提供される。さらに、特許請求される主題は、本発明の範囲から逸脱することなく、他の特定の形態で実現することができるため、概要、詳細な説明及び図面における例示的な詳細によって限定されるものではなく、むしろ、添付の特許請求の範囲によって規定される。
【図面の簡単な説明】
【０００６】
図面は、本発明の例示的な実施形態のものである。図面は、本発明の全ての実施形態を例示するものではない。本発明の他の実施形態を、付加的に又は代わりに用いることもできる。明白又は不必要であり得る詳細は、スペースを節約するため又はより効果的な例示のために、省略されることがある。本発明の幾つかの実施形態は、付加的なコンポーネント又はステップを用いて、もしくは例示されるコンポーネント又はステップの全てを用いずに、又はその両方で実施することができる。同じ番号が異なる図面において出現する場合、それは、同じ又は類似のコンポーネント又はステップを指す。
【０００７】
【図１】本発明の１つの実施形態と一致する、量子化誤差の動的補償を容易にするために、乗算及び累積（Ｍｕｌｔｉｐｌｙ  Ａｎｄ  Ａｃｃｕｍｕｌａｔｅ、ＭＡＣ）演算が、誤差補償を用いる固定小数点（Ｆｉｘｅｄ  Ｐｏｉｎｔ  ｗｉｔｈ  Ｅｒｒｏｒ  Ｃｏｍｐｅｎｓａｔｉｏｎ、ＦＰＥＣ）形式で表される数値に基づく補償型（compensated）ＤＮＮを示す。
【図２】本発明の１つの実施形態と一致する、浮動小数点数を表現するためのＦＰＥＣ形式を示す。
【図３】本発明の１つの実施形態と一致する、ＦＰＥＣの量子化誤差と補償ビットとの間のマッピングを示す。
【図４】人工ニューロンの処理要素の例示的な設計を示す。
【図５】本発明の１つの実施形態と一致する、ＤＮＮの人工ニューロンにおける２つのベクトル間のドット積を計算するためのプロセスを概念的に示す。
【図６】本発明の１つの実施形態による、データ処理システムのコンポーネントのブロック図を示す。
【発明を実施するための形態】
【０００８】
以下の詳細な説明において、関連する教示の完全な理解を提供するために、多数の特定の詳細が例として説明される。しかしながら、本教示は、このような詳細なしで実施され得ることが明らかであろう。他の例では、本教示の態様を不必要に分かりにくくすることを避けるために、周知の方法、手順、コンポーネントもしくは回路又はその組み合わせが、詳細なしに比較的高レベルで説明される。
【０００９】
ＤＮＮは、画像、ビデオ、テキスト及び自然言語を含む多くの認識問題における最新の解決法である。しかしながら、ＤＮＮが処理するデータ量により、著しい計算上の課題が課されるため、これらの大規模なネットワークにより課せられる計算及びストレージ需要が、ＤＮＮのユビキタスな採用の主要なボトルネックとなっている。この極端な計算上の課題を実証する重要なシナリオは、低電力推論であり、そこで、ＤＮＮモデルは、エネルギー及び面積の制約が厳しい深く埋め込まれたウェアラブル及びモノのインターネット（ＩｏＴ）デバイス上で実行される。具体的には（モバイル、ウェアラブル及び他のＩｏＴデバイスのような）低電力プラットフォームの文脈においてＤＮＮの効率を向上させるための１つの手法は、低精度固定小数点（１６ビット未満）表現を用いた低精度の実装を探索することである。しかしながら、低精度の実装は、任意の固定小数点実装に内在する量子化誤差に悩まされる。従って、システムがアプリケーションレベルの精度を維持する場合には、ビット幅の選択が制限される。量子化による精度の低下を最小限に抑えるために、ネットワークサイズの増大もしくはＤＮＮの再訓練又はその両方が提案されたが、ある程度しか成功していない。
【００１０】
本発明の幾つかの実施形態は、量子化によって生じる誤差が、実行中に動的に補償される補償型ＤＮＮを提供する。補償型ＤＮＮにおける数は、ＦＰＥＣ形式で表わされる。ＦＰＥＣにおけるビットは、計算ビットと補償ビットとに分けられる。計算ビットは、従来の浮動小数点表記（floating-point notation、ＦｘＰ）を用いて低精度で数を表す。補償ビットは、表現における量子化誤差の推定値（方向及び大きさ）を明示的にキャプチャする。所定のワード長に対して、ＦＰＥＣは、ＦｘＰ表現に比べてより少ない計算ビットを使用することができる。これにより、ＤＮＮにおけるＭＡＣ演算のエネルギーがほぼ２次関数的に改善し得る。幾つかの実施形態においては、ＭＡＣ演算中に生じた誤差を推定するために、補償ビットに基づいた低オーバーヘッドのスパースな（sparse）補償スキームを使用し、次にこの誤差は、量子化の影響を最小限に抑えるために、ＭＡＣ出力に加算される。
【００１１】
ＭＡＣ演算は、誤差補償の性質を本質的に示すことが観察される。具体的には、ＭＡＣ演算が乗算結果を累積すると、乗算演算の量子化誤差も増加する。異なる乗算演算の量子化誤差が逆符号になると、量子化誤差は互いに部分的に相殺され、最終的なドット積出力の量子化誤差が減少する。実際には、乗算演算の量子化誤差は正又は負のいずれかであり得る。量子化誤差が正であるか又は負であるかは、とりわけ、入力の丸めモード、入力の符号を含む幾つかの要因に基づいて決定される。それにも関わらず、ＤＮＮは、発生した量子化誤差を動的に推定し、その誤差を明確に相殺し、それにより分類精度の低下を最小限に抑える。
【００１２】
図１は、本発明の１つの実施形態と一致する、量子化誤差の動的補償を容易にするために、ＭＡＣ演算がＦＰＥＣ形式で表される数値に基づいた補償型ＤＮＮ１００を示す。ＤＮＮ１００は、人工ニューロン１１０〜１１９を含む。人工ニューロン１１０〜１１９は、複数の相互接続された層に編成される。各ニューロンは、入力のセットを受信し、受信した入力に基づいてドット積を実行して単一の出力を生成する。人工ニューロンへの入力は、他の人工ニューロンからの出力もしくはネットワークの一次入力又はその両方を含むことができる。各ニューロンは、ソフトウェア命令のモジュール又は電気回路のモジュールとして実装することができる。人工ニューロンへの入力は、コンピュータメモリ内のデータ構造又は電子デバイス内の電線として実装することができる。
【００１３】
各人工ニューロン１１０〜１１９は、第１のベクトルと第２のベクトルとの間のドット積を計算する。第１のベクトルの成分は、人工ニューロンの相互接続から受信した値のセットとすることができる。第２のベクトルの成分は、第１のベクトルの成分についての対応する重みのセットとすることができる。人工ニューロン１１６は、ニューロン１１０、１１１及び１１２の出力から、入力ｘ１、ｘ２、ｘ３を受信する。人工ニューロン１１６は、それぞれ、入力ｘ１、ｘ２及びｘ３に重みｙ１、ｙ２及びｙ３を適用する。人工ニューロン１１６は、成分［ｙ１，ｙ２，ｙ３］を有する第２のベクトル（図中のＹベクトルに対応する）における重みを用いて、成分［ｘ１，ｘ２，ｘ３］を有する第１のベクトル（図中のＸベクトルに対応する）の加重和を計算するように構成されたドット積処理要素１２０を含む。例示的なドット積処理要素１２０は、以下に図４を参照して説明される。
【００１４】
Ｘベクトル及びＹベクトルの成分は、ＦＰＥＣ形式のものである。ＦＰＥＣにおけるビットフィールドは、２つのグループ、すなわち計算ビット及び補償ビットに分けられる。ＦＰＥＣ形式で表された値ｘ（例えば、Ｘベクトルにおける成分ｘ１又はＹベクトルにおける成分ｙ２）について、計算ビットは、量子化値ｑｘを与える。補償ビットは、量子化誤差Δｘの推定値、又は推定誤差Δｘ（ｅｓｔ）を指定する。
【００１５】
図２は、本発明の１つの実施形態と一致する、浮動小数点数を表すためのＦＰＥＣ形式を示す。図示のように、ＦＰＥＣにおけるビットフィールドは、計算ビット及び補償ビットに分けられる。計算ビットは、数の範囲及び分解能をキャプチャするための、符号ビット（Ｓｉｇｎ）、整数ビット（ＩＢ）及び小数ビット（ＦＢ）を含む。補償ビットは、量子化の際に発生した誤差の方向と大きさを指定する。補償ビットは、３つのフィールド、すなわち（ｉ）誤差方向ビット（Error Direction Bit、ＥＤＢ）、（ｉｉ）誤差大きさビット（Error Magnitude Bit、ＥＭＢ）及び（ｉｉｉ）誤差ゼロビット（Error Zero Bit、ＥＺＢ）に細分化される。ＥＤＢは、数が切り上げられたか又は切り下げられたか、すなわち量子化誤差の方向を示す。ＥＭＢは、量子化誤差の大きさを示す。ＦＰＥＣ数の補償ビットは、推定量子化誤差、又は計算ビットにおける量子化値を補償するための補償値を計算するために使用される。従って、ＦＰＥＣの補償ビットは、補償命令でもある。
【００１６】
ＥＤＢフィールド及びＥＭＢフィールドが、それぞれδ及びθを含む場合、推定誤差は、-１δ＊２−ＦＢ−１−θとなる。幾つかの実施形態において、誤差推定値は、補償論理における乗算を避けるために、２の累乗に制約される。幾つかの実施形態において、ＥＭＢフィールドは、ＦＰＥＣ表現において任意のものである。例えば、誤差の方向のみが指定される場合、θは０であると仮定され、誤差の大きさは分解能の半分である、すなわち推定誤差は±２−ＦＢ−１である。
【００１７】
ＥＺＢフィールドは、ゼロの量子化誤差を示す単一のビットである。ＥＺＢは、ＦＰＥＣが、補償を、選択された計算のみに制限することを可能にする。ＥＺＢが１である場合、ＥＤＢフィールド及びＥＭＢフィールドは、ドントケア（don't care）（例えば、ＥＤＢ及びＥＭＢは、処理要素１２０によって処理されない）である。
【００１８】
図３は、本発明の１つの実施形態と一致する、ＦＰＥＣの量子化誤差と補償ビットとの間のマッピングを示す。ＦＰＥＣで表された値ｘに関して、図は、２つの連続した量子化値であるｑｘとｑｘ＋２−ＦＢとの間の連続範囲３００を示す。この範囲は、推定量子化誤差がＦＰＥＣで表される多数の領域３０１〜３０６に分割される。量子化により、ｑｘ＋２−ＦＢ−１を上回る値はｑｘ＋２−ＦＢに切り上げられ、ｑｘ＋２−ＦＢ−１を下回る値はｑｘに切り下げられる。ＥＤＢは、丸めの方向を示す。
【００１９】
領域３０１、３０６におけるｘの実際の値（ｑｘ又はｑｘ＋２−ＦＢに近い）に関しては、量子化誤差は十分に小さい。従って、ＥＺＢは１に設定され、推定誤差Δｘ（ｅｓｔ）は０である。ＥＺＢを１に設定するための領域３０１及び３０６のサイズは、補償におけるスパース性の程度（degree of sparsity）を制御するために調整することができる閾値によって制御される。
【００２０】
ＥＺＢ＝０である場合の領域３０２〜３０５における値に関して、ＥＭＢフィールドは（随意的に）２の累乗で範囲を分割する。より大きい量子化誤差を有する値の場合、ＥＭＢは１に設定され（領域３０３及び３０４）、補償ビットにおいてエンコードされた推定誤差Δｘ（ｅｓｔ）は、２−ＦＢ−１となる。より小さい量子化誤差を有する値の場合、ＥＭＢは０に設定され（領域３０２及び３０５）、補償ビットにおいてエンコードされた推定誤差Δｘ（ｅｓｔ）は、２−ＦＢ−２となる。
【００２１】
以下の表１は、ＥＤＢ、ＥＭＢ及びＥＺＢのビット幅が全て１であるＦＰＥＣ形式で表わされる例示的な値を示す。ＦＰＥＣで表される各々の実際の値に関して、表は、対応する量子化値、量子化誤差、ＦＰＥＣ推定誤差及びＦＰＥＣ表現を示す。「ｄ」は「ドントケア」ビットを表すことに留意されたい。ＩＢのビット幅は３であり、ＦＢのビット幅は０である。
【表１】
2021530761.tif 000003
【００２２】
前述のように、各人工ニューロンは、入力と重みのドット積を計算する。Ｘベクトル［ｘ１，ｘ２，ｘ３，...]は入力を表し、Ｙベクトル［ｙ１，ｙ２，ｙ３，．．．］は重みを表す。Ｘベクトル及びＹベクトルは、ＱＸ＝［ｑｘ１，ｑｘ２，ｑｘ３，...］及びＱＹ＝［ｑｙ１，ｑｙ２，ｑｙ３，...］に量子化され、量子化誤差ΔＸ＝［Δｘ１，Δｘ２，Δｘ３，...］及びΔＹ＝［Δｙ１，Δｙ２，Δｙ３，...］を伴う。言い換えれば、Ｘ＝ＱＸ＋ΔＸであってここでｘｉ＝ｑｘｉ＋Δｘｉであり、Ｙ＝ＱＹ＋ΔＹであってここでｙｉ＝ｑｙｉ＋Δｙｉである。従って、ドット積は、
Ｘ・Ｙ＝ＱＸ・ＱＹ＋ΔＹ・ＱＸ＋ΔＸ・ＱＹ＋ΔＸ・ΔＹ    式（１）
となる。
【００２３】
従って、ドット積についての量子化誤差は、
Δ（Ｘ・Ｙ）＝ΔＹ・ＱＸ＋ΔＸ・ＱＹ＋ΔＸ・ΔＹ    式（２）
となる。
【００２４】
Ｘベクトル及びＹベクトルの成分の計算ビットは、量子化値ＱＸ及びＱＹについての値を提供する。Ｘ及びＹの成分の補償ビットは、量子化誤差ΔＸ及びΔＹについての推定値、すなわち推定誤差ΔＸ（ｅｓｔ）及びΔＹ（ｅｓｔ）を提供する。次に、推定量子化誤差ΔＸ（ｅｓｔ）及びΔＹ（ｅｓｔ）を用いて、ドット積についての推定量子化誤差
Δ（Ｘ・Ｙ）（ｅｓｔ）＝ΔＹ（ｅｓｔ）・ＱＸ＋ΔＸ（ｅｓｔ）・ＱＹ＋ΔＸ（ｅｓｔ）・ΔＹ（ｅｓｔ）    式（３）
を計算することができる。
【００２５】
本発明の幾つかの実施形態において、ドット積の推定量子化誤差の計算の際、近似が使用される。第１に、量子化誤差の大きさは、典型的には、実際の値よりも小さいので（すなわち、ＱＸ，ＱＹ＞＞ΔＸ，ΔＹ）、高次項ΔＸ（ｅｓｔ）・ΔＹ（ｅｓｔ）は無視される。第２に、入力量子化誤差は、最も近い２の累乗に近似され、それにより、ΔＹ（ｅｓｔ）・ＱＸ及びΔＸ（ｅｓｔ）・ＱＹを計算するとき、乗算器がシフタに変換される。第３に、量子化誤差の大きさをキャプチャするために、多くても１又は２ビットが使用され（従って、１又は２のＥＭＢビット及び合計で３又は４の補償ビットのみが使用され）、これによりシフタがより安価になる。第４に、入力におけるより小さい量子化誤差を無視することによって、ΔＸ（ｅｓｔ）及びΔＹ（ｅｓｔ）はスパースにされる。従って、補償は、特定の選択された計算に対してのみ実行され、補償論理は全体の実行サイクルのほんの一部だけアクティブになる。これらの近似により、量子化誤差を推定するために消費されるエネルギーが大幅に低減する。
【００２６】
図４は、人工ニューロンの処理要素４００の例示的な設計を示す。処理要素（ＰＥ）は、ＸベクトルとＹベクトルとの間のドット積計算を行う。処理要素は、ＦＰＥＣ形式での値を受け入れる。従って、処理要素４００は、ＦＰＥＣ−ＰＥとも呼ばれる。ＦＰＥＣ−ＰＥは、ＦＰＥＣ補償ビットに基づいて推定誤差を計算することによって、量子化誤差の補償を行う。推定誤差の計算中、近似が使用される。
【００２７】
図示のように、ＦＰＥＣ−ＰＥ４００は、（ｉ）計算ユニット４１０、（ｉｉ）補償ユニット４２０及び（ｉｉｉ）変換ユニット４３０を含む。幾つかの実施形態において、計算ユニット４１０、補償ユニット４２０及び変換ユニット４３０は、コンピューティングデバイスの１つ又は複数の処理ユニット（例えば、プロセッサ）によって実行されるソフトウェア命令のモジュールである。幾つかの実施形態において、計算ユニット４１０、補償ユニット４２０及び変換ユニット４３０は、電子装置の１つ又は複数の集積回路（ＩＣ）によって実装されるハードウェア回路のモジュールである。ＦＰＥＣ−ＰＥを実装することができる例示的なコンピューティングデバイスが、以下に図６を参照して説明される。
【００２８】
計算ユニット４１０は、ＦＰＥＣの［ＩＢ，ＦＢ］フィールド（計算ビット）における値を用いて、ドット積を評価する乗算及び累積エンジン４１２を含む。具体的には、乗算及び累積エンジン４１２は、Ｘベクトルからの成分をＹベクトルからの対応する成分と乗算して、加算器４１４によってアキュムレータレジスタ４１６に加算される生の積値を生成する。
【００２９】
補償ユニット４２０は、［ＥＤＢ，ＥＭＢ，ＥＺＢ］フィールド（補償ビット）を用いて、ドット積出力における量子化誤差を同時に評価する。これは、（シフタ４２１における）ｘｉのＥＭＢビットを用いてＸベクトル成分をシフトさせ、（シフタ４２２における）ｙｉのＥＭＢビットを用いてＹベクトル成分をシフトさせ、それぞれのＥＤＢビットに基づいて、（加算器４２６及びＥｒｒＣｏｍｐレジスタ４２８において）補償和からそれらを適切に加算／減算する（加算器４２４において）ことを含む。ｘｉ及びｙｉのＥＺＢビットは結合されて（論理積）、補償ユニット４２０を非アクティブ又は低電力モードにする（例えば、クロックゲーティング、信号ゲーティングなどによって）。全ての入力が処理された後、補償和（すなわち、ドット積Δ（Ｘ・Ｙ）（ｅｓｔ）についての推定誤差）が、計算ユニット４１０におけるアキュムレータレジスタ４１２に加算されて、補償されたドット積出力を生成する。
【００３０】
変換ユニット４３０は、出力を所望のＦＰＥＣ形式に量子化する。変換ユニット４３０は、［ＩＢ，ＦＢ］に基づいて出力をスケーリングするためのシフタを含む。変換ユニット４３０は、スケーリングされたビットに基づいて、出力補償ビット［ＥＤＢ，ＥＭＢ，ＥＺＢ］を推論するためのビット単位の（bit-wise）論理を含む。出力は、出力内の量子化値を用いて生の積値を計算し、出力内の補償ビットに従って計算された生の積を補償する別の処理要素へのベクトルとして使用することができる。
【００３１】
ＦＰＥＣ表現により、量子化誤差をより少ない計算ビットで表現することが可能になるので、ＰＥ−ＦＰＥＣ４００がエネルギー効率の良いことは注目に値する。これは、乗算器、加算器、及びアキュムレータのビット幅がそれに対応して減少するので、計算ユニット４１０においてほぼ２次関数的な改善をもたらす。他方、補償ユニット４２０における加算器及びレジスタは、論理の線形増加をもたらす。しかしながら、それらは、ｘｉ及びｙｉのＥＺＢがアサートされるとき（実験においては３〜５回の計算につき１回）のように、散発的に使用される。変換ユニット４３０におけるオーバーヘッドは、大規模ＤＮＮにおいて数千の計算サイクルを要するドット積ごとに１回だけアクティブであるので、無視できる程度である。
【００３２】
ＦＰＥＣ形式で値を表現することによって、人工ニューロンは、より少ない計算ビット及び非常に少ない補償ビットを用いて、最小の量子化誤差でドット積演算を実行することができる。処理要素４００のようなＦＰＥＣに基づくアーキテクチャは、低減したエネルギー消費量及び計算リソースにより推定量子化誤差を計算するために近似に依存し得る。これは、サイズ及び電力の点でＤＮＮを改善し、これは低電力用途にとって重要である。
【００３３】
図５は、本発明の１つの実施形態と一致する、ＤＮＮの人工ニューロンにおける２つのベクトル間のドット積を計算するためのプロセス５００を概念的に示す。幾つかの実施形態において、人工ニューロンの処理要素（例えば、ＰＥ−ＦＰＥＣ４００）がプロセス５００を実行する。本発明の幾つかの実施形態において、ＤＮＮ１００を実装するコンピューティングデバイスの１つ又は複数の処理ユニット（例えば、プロセッサ）は、コンピュータ可読媒体内に格納された命令を実行することによってプロセス５００を実行する。
【００３４】
プロセス５００は、（５１０において）処理要素が成分のセットを有する第１のベクトル（例えば、Ｘベクトル）を受信するときに開始する。第１のベクトルの各成分は、第１の量子化値（例えば、ｑｘ）と、第１の補償命令（例えば、推定量子化誤差ΔＸ（ｅｓｔ））とを有する。（５２０において）処理要素は、成分の対応するセットを有する第２のベクトル（例えば、Ｙベクトル）も受信する。第２のベクトルの各成分は、第２の量子化値（例えば、ｑｙ）と、第２の補償命令（例えば、推定量子化誤差ΔＹ（ｅｓｔ））とを有する。
【００３５】
本発明の幾つかの実施形態において、第１のベクトルの成分は、人工ニューロンへの入力接続に対応し、一方、第２のベクトルの成分は、入力接続に適用されるべき重みに対応する。ＦＰＥＣ形式のものであるベクトル成分に関して、その量子化値は、計算ビット［ＩＢ，ＦＢ］で表され、その補償命令は、補償ビット［ＥＤＢ，ＥＭＢ，ＥＺＢ］を含む。補償ビットは、ベクトル成分についての推定量子化誤差も表す。
【００３６】
（５３０において）処理要素は、第１の量子化値と第２の量子化値とを乗算して、ドット積計算の一部として生の積値を生成することにより、第１のベクトルの成分と第２のベクトルの対応する成分とを乗算する。
【００３７】
（５３５において）処理要素は、第１及び第２の補償命令のＥＺＢに基づいて、量子化誤差を補償するかどうかを決定する。第１及び第２の補償命令の両方のＥＺＢがアサートされる場合（ΔＸ（ｅｓｔ）及びΔＹ（ｅｓｔ）の両方がゼロであることを示す）、補償を実行する必要がないので、プロセスは５６０に進む。そうでなければ、プロセスは５４０に進み、量子化誤差の補償を実行する。
【００３８】
５４０において、処理要素は、第１及び第２の補償命令におけるＥＭＢ及びＥＤＢに基づいて、生の積値についての補償値（又は、推定量子化誤差）を計算する。（５５０において）処理ユニットは、計算された補償値を用いて補償された積値を生成することによって、生の積値を補償する。次に、（５５５において）、処理要素は、補償された積値をドット積についての累積値に加算する。その後、プロセスは５８０に進む。
【００３９】
５６０において、処理要素は、Ｘ成分及びＹ成分の両方の推定誤差がゼロであるので、補償ユニットを低電力モードにすること、補償ユニットをディスエーブルにことなどによって、誤差補償演算をディスエーブルにする。（５７０において）処理要素は、補償値を計算することなく、生の積値をドット積についての累積値に加算する。その後、プロセスは５８０に進む。
【００４０】
５８０において、処理要素は、第１のベクトル及び第２のベクトル内に、まだドット積に関して乗算及び累積されていないさらなる成分があるかどうかを判断する。ある場合には、プロセスは５３０に戻り、第１及び第２のベクトルからの成分の次の対を処理する。成分の全てがドット積に関して乗算及び累積されている場合、プロセスは５９０に進む。
【００４１】
５９０において、処理要素は、累積値を、出力量子化値及び出力補償命令（ＥＺＢ、ＥＤＢ、ＥＭＢを有する）を含むドット積の出力ベクトルに変換する。この動作は、変換ユニット４３０に対応する。その後、プロセス５００は終了する。
【００４２】
本発明は、システム、方法もしくはコンピュータプログラム製品又はその組み合わせを任意の可能な技術的詳細レベルで統合したものとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体（単数又は複数）を含むことができる。
【００４３】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁気ストレージデバイス、半導体ストレージデバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの、すなわち、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュメモリ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ポータブルコンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリスティック、パンチカードもしくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管もしくは他の伝送媒体を通じて伝搬する電磁波（例えば、光ファイバケーブルを通る光パルス）、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
【００４４】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスに、又は、例えばインターネット、ローカルエリアネットワーク、広域ネットワークもしくは無線ネットワーク又はその組み合わせのネットワークを介して外部コンピュータ又は外部ストレージデバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバ又はその組み合わせを含むことができる。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カード又はネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体に格納する。本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、及び、「Ｃ」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む１つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コード又はオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカルエリアネットワーク（ＬＡＮ）もしくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネットサービスプロバイダを用いたインターネットを通じて）。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、又はプログラム可能論理アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して、電子回路を個別化することができる。
【００４５】
本発明の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータプログラム製品のフローチャート図及び／又はブロック図を参照して説明される。フローチャート図もしくはブロック図又はその両方の各ブロック、並びにフローチャート図もしくはブロック図又はその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて機械を製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート、及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実施するための手段を作り出すようにすることができる。これらのコンピュータプログラム命令を、コンピュータ、他のプログラム可能データ処理装置もしくは他のデバイス又はその組み合わせを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャートもしくはブロック図又はその両方の１つ又は複数のブロックにおいて指定された機能／動作の態様を実施する命令を含む製品を含むようにすることもできる。
【００４６】
コンピュータプログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図又はその両方の１つ又は複数のブロックにおいて指定された機能／動作を実施するようにすることもできる。図面（例えば、図５）内のフローチャート及びブロック図は、本開示の様々な実施形態による、システム、方法、及びコンピュータプログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で行われることがある。例えば、連続して示される２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図もしくはフローチャート図又はその両方の各ブロック、並びにブロック図もしくはフローチャート図又はその両方におけるブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェアベースのシステムによって実装できることにも留意されたい。
【００４７】
図６は、本発明の１つの実施形態による、ＤＮＮ、人工ニューロン、又はＦＰＥＣ処理要素を実装するために用いることができるデータ処理システム６００及び６５０のコンポーネントのブロック図を示す。図６は、１つの実装の例示を提供するに過ぎず、本発明の異なる実施形態を実施することができる環境に関するいかなる制限を意味するものでもないことを理解されたい。設計及び実装の要件に基づいて、示される環境に対する多くの修正を行うことができる。
【００４８】
データ処理システム６００及び６５０は、機械可読プログラム命令を実行することができる任意の電子デバイスを表すものである。データ処理システム６００及び６５０は、スマートフォン、コンピュータシステム、ＰＤＡ、又は他の電子デバイスを表すものであってもよい。データ処理システム６００及び６５０によって表すことができるコンピューティングシステム、環境もしくは構成又はその組み合わせの例として、これらに限定されるものではないが、パーソナルコンピュータシステム、サーバコンピュータシステム、シンクライアント、シッククライアント、手持ち式又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ネットワークＰＣ、ミニコンピュータシステム、及び上記のシステムもしくはデバイスのいずれかを含む分散型クラウドコンピューティング環境が挙げられる。
【００４９】
データ処理システム６００及び６５０は、図６に示される内部コンポーネント６００のセット及び外部コンポーネント６５０のセットを含むことができる。内部コンポーネント６００のセットは、１つ又は複数のバス６２６上の１つ又は複数のプロセッサ６２０、１つ又は複数のコンピュータ可読ＲＡＭ６２２及び１つ又は複数のコンピュータ可読ＲＯＭ６２４、並びに１つ又は複数のオペレーティングシステム６２８及び１つ又は複数のコンピュータ可読有形ストレージデバイス６３０を含む。１つ又は複数のオペレーティングシステム６２８及びプロセス５００を実行するためのプログラムなどのプログラムは、１つ又は複数のＲＡＭ６２２（典型的には、キャッシュメモリを含む）を介して１つ又は複数のプロセッサ６２０によって実行するために、１つ又は複数のコンピュータ可読有形ストレージデバイス６３０上に格納される。図６に示される実施形態において、コンピュータ可読有形ストレージデバイス６３０の各々は、内部ハードドライブの磁気ディスクストレージデバイスである。或いは、コンピュータ可読有形ストレージデバイス６３０の各々は、ＲＯＭ６２４、ＥＰＲＯＭ、フラッシュメモリ、又はコンピュータプログラム及びデジタル情報を格納することができる任意の他のコンピュータ可読有形ストレージデバイスなどの半導体ストレージデバイスである。
【００５０】
内部コンポーネント６００のセットは、ＣＤ−ＲＯＭ、ＤＶＤ、メモリスティック、磁気テープ、磁気ディスク、光ディスク、又は半導体ストレージデバイスなどの１つ又は複数のポータブルコンピュータ可読有形ストレージデバイス６８６との間で読み取りを行うためのＲ／Ｗドライブ又はインターフェース６３２も含む。プロセス５００を実行するための命令は、それぞれのポータブルコンピュータ可読有形ストレージデバイス６８６の１つ又は複数に格納し、それぞれのＲ／Ｗドライブ又はインターフェース６３２を介して読み取り、それぞれのハードドライブ６３０にロードすることができる。
【００５１】
内部コンポーネント６００のセットは、ＴＣＰ／ＩＰアダプタカード、無線Ｗｉ−Ｆｉインターフェースカード、又は３Ｇもしくは４Ｇ無線インターフェースカード、又は他の有線もしくは無線通信リンクなどのネットワークアダプタ（又はスイッチポートカード）又はインターフェース６３６を含むこともできる。上述したプロセス又はプログラムの命令は、ネットワーク（例えば、インターネット、ローカルエリアネットワーク又は他の、広域ネットワーク）及びそれぞれのネットワークアダプタ又はインターフェース６３６を介して、外部コンピュータ（例えば、サーバ）からダウンロードすることができる。ネットワークアダプタ（又はスイッチポートアダプタ）又はインターフェース６３６から、説明されるプログラム又はプロセスの命令及びデータが、それぞれのハードドライブ６３０にロードされる。ネットワークは、銅線、光ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータもしくはエッジサーバ又はその組み合わせで構成することができる。
【００５２】
外部コンポーネント６５０のセットは、コンピュータディスプレイモニタ６７０、キーボード６８０、及びコンピュータマウス６８４を含むことができる。外部コンポーネント６５０のセットは、タッチスクリーン、仮想キーボード、タッチパッド、ポインティングデバイス、及び他のヒューマンインタフェースデバイスを含むこともできる。内部コンポーネント６００のセットは、コンピュータディスプレイモニタ６７０、キーボード６８０、及びコンピュータマウス６８４にインターフェース接続するためのデバイスドライバ６４０も含む。デバイスドライバ６４０、Ｒ／Ｗドライブ又はインターフェース６３２、及びネットワークアダプタ又はインターフェース６３６は、（ストレージデバイス６３０もしくはＲＯＭ６２４又はその両方に格納された）ハードウェア及びソフトウェアも含む。
【００５３】
本開示の種々の実施形態の説明は、例証の目的で提示されたものであるが、網羅的であること又は開示された実施形態に限定することを意図するものではない。説明される実施形態の範囲から逸脱することなく、当業者には、多くの修正及び変形が明らかであろう。本明細書で用いられる用語は、実施形態の原理、実際的な用途、若しくは市場において見出される技術に優る技術的改善を最も良く説明するように、又は当業者が本明細書に含まれる実施形態を理解することを可能にするように、選択されたものである。
【図１】
2021530761.tif 000004
【図２】
2021530761.tif 000005
【図３】
2021530761.tif 000006
【図４】
2021530761.tif 000007
【図５】
2021530761.tif 000008
【図６】
2021530761.tif 000009
【手続補正書】
【提出日】令和3年1月4日(2021.1.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータの情報処理によりドット積を計算する方法であって、
成分のセットを有する第１のベクトル及び対応する成分のセットを有する第２のベクトルを受信することであって、前記第１のベクトルの成分は、第１の量子化値及び第１の補償命令を含み、前記第２のベクトルの対応する成分は、第２の量子化値及び第２の補償命令を含む、受信することと、
前記第１の量子化値と前記第２の量子化値とを乗算して、生の積値を計算することと、
前記第１及び第２の補償命令に従って、量子化誤差に関して前記生の積値を補償して、補償された積値を生成することと、
前記補償された積値を、前記ドット積についての累積値に加算することと、
前記累積値を、出力量子化値及び出力補償命令を含む前記ドット積の出力ベクトルに変換することと
を含む、方法。
【請求項２】
前記ドット積は第１のドット積であり、前記方法は、前記出力ベクトルを、第２のドット積についての第２の生の積値を計算し、前記出力補償命令に従って前記第２の生の積値を補償するためのベクトルとして使用することをさらに含む、請求項１に記載の方法。
【請求項３】
前記第１の補償命令は、前記第１の量子化値の量子化誤差を補償するための第１の方向ビット及び第１の大きさビットを含み、
前記第２の補償命令は、前記第２の量子化値の量子化誤差を補償するための第２の方向ビット及び第２の大きさビットを含む、
請求項１に記載の方法。
【請求項４】
前記第１及び第２の補償命令に従って、量子化誤差に関して前記生の積値を補償して、補償された積値を生成することは、
前記第１の大きさビットに従って前記第１の量子化値をシフトして、シフトされた第１の量子化値を生成することと、
前記第２の大きさビットに従って前記第２の量子化値をシフトして、シフトされた第２の量子化値を生成することと、
前記シフトされた第１の量子化値と前記シフトされた第２の量子化値とを加算して、前記第１及び第２の方向ビットに従った補償値を生成することと、
前記補償値を前記生の積値に加算して、前記補償された積値を生成することと
を含む、請求項３に記載の方法。
【請求項５】
前記第１の補償命令が前記第１の量子化値の量子化誤差が閾値を下回ることを示すビットを含み、かつ、前記第２の補償命令が前記第２の量子化値の量子化誤差が閾値を下回ることを示すビットを含むと判断したときに、補償回路を低電力モードにすること
をさらに含む、請求項１に記載の方法。
【請求項６】
前記第１の補償命令は、１つの方向ビット、１つのゼロ補償ビット及び２つ又はそれより少ない大きさビットを含む４つを超えないビットを含む、請求項１に記載の方法。
【請求項７】
コンピューティングデバイスであって、
プロセッサと、
命令のセットを格納するストレージデバイスと
を含み、前記プロセッサによる前記命令のセットの実行は、前記コンピューティングデバイスを、請求項１〜請求項６のいずれかに記載の方法のステップを実行するように構成する、コンピューティングデバイス。
【請求項８】
前記出力補償命令は、前記出力量子化値が推定量子化誤差によって補償されるべきかどうかを示すためのビットを含む、請求項７に記載のコンピューティングデバイス。
【請求項９】
集積回路（ＩＣ）であって、
成分のセットを有する第１のベクトル及び対応する成分のセットを有する第２のベクトルに基づいてドット積を生成するように構成された処理要素回路を含み、前記第１のベクトルの成分は、第１の量子化値及び第１の補償命令を含み、前記第２のベクトルの対応する成分は、第２の量子化値及び第２の補償命令を含み、
前記処理要素回路は、
前記第１の量子化値と前記第２の量子化値とを乗算して、生の積値を計算するように構成された計算回路と、
前記第１及び第２の補償命令に従って、量子化誤差に関して前記生の積値を補償して、補償された積値を生成するように構成された補償回路と、
前記補償された積値を前記ドット積についての累積値に加算するように構成された累積回路と
を含む、集積回路（ＩＣ）。
【請求項１０】
前記処理要素回路は、前記累積値を、出力量子化値及び出力補償命令を含む前記ドット積の出力ベクトルに変換するように構成された変換回路をさらに含む、請求項９に記載のＩＣ。
【請求項１１】
前記処理要素回路は第１の処理要素回路であり、前記出力ベクトルは、前記出力ベクトルを用いて、第２の生の積値を計算し、前記出力補償命令に従って前記第２の生の積値を補償するように構成された第２の処理要素回路へのベクトルとして使用される、請求項１０に記載のＩＣ。
【請求項１２】
前記出力補償命令は、前記出力量子化値についての推定量子化誤差がゼロであるかどうかを示すためのビットを含む、請求項１０に記載のＩＣ。
【請求項１３】
前記第１の補償命令は、前記第１の量子化値の量子化誤差を補償するための第１の方向ビット及び第１の大きさビットを含み、
前記第２の補償命令は、前記第２の量子化値の量子化誤差を補償するための第２の方向ビット及び第２の大きさビットを含む、
請求項９に記載のＩＣ。
【請求項１４】
前記第１及び第２の補償命令に従って量子化誤差に関して前記生の積値を補償し、補償された積値を生成することは、
前記第１の大きさビットに従って前記第１の量子化値をシフトして、シフトされた第１の量子化値を生成することと、
前記第２の大きさビットに従って前記第２の量子化値をシフトして、シフトされた第２の量子化値を生成することと、
前記シフトされた第１の量子化値と前記シフトされた第２の量子化値とを加算して、前記第１及び第２の方向ビットに従った補償値を生成することと、
前記生の積値に前記補償値を加算して、前記補償された積値を生成することと
を含む、請求項１３に記載のＩＣ。
【請求項１５】
前記第１の補償命令が前記第１の量子化値が閾値を下回ることを示すビットを含み、かつ、前記第２の補償命令が前記第２の量子化値が閾値を下回ることを示すビットを含むと判断したときに、前記補償回路は低電力モードにある、請求項９に記載のＩＣ。
【請求項１６】
前記第１の補償命令は、１つの方向ビット、１つのゼロ補償ビット及び２つ又はそれより少ない大きさビットを含む４つを超えないビットを含む、請求項９に記載のＩＣ。
【国際調査報告】
2021530761.tif 000010
2021530761.tif 000011