(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-11-13
(54)【発明の名称】内積計算のための対数記数法プロセッサ
(51)【国際特許分類】
G06N 3/08 20230101AFI20231106BHJP
【FI】
G06N3/08
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023528004
(86)(22)【出願日】2021-11-03
(85)【翻訳文提出日】2023-07-03
(86)【国際出願番号】 CA2021051564
(87)【国際公開番号】W WO2022094710
(87)【国際公開日】2022-05-12
(32)【優先日】2020-11-03
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】523166201
【氏名又は名称】レムリアン ラブス インコーポレイテッド
【氏名又は名称原語表記】LEMURIAN LABS INC.
(74)【代理人】
【識別番号】110001999
【氏名又は名称】弁理士法人はなぶさ特許商標事務所
(72)【発明者】
【氏名】ダワニ,サンジェイ
(72)【発明者】
【氏名】ディミトロフ,ヴァシル
(72)【発明者】
【氏名】マダナヤケ,ハバラカダ エル.
(57)【要約】
内積計算のハードウェアアクセラレーションに多次元対数記数法を使用する方法と装置について説明する。これらの方法および装置は、例えば、エッジデバイス上のディープニューラルネットワークの訓練および推論の計算など、低消費電力、低面積、および高速の内積計算ユニットを必要とする任意のデバイスに使用することができる。特定の実施形態では、ニューラルネットワークの訓練は、ニューラルネットワークの重み係数のセットを得るために、多次元対数データ表現を使用して実行される。決定された重み係数が与えられると、多次元対数データ表現用に第2の底が最適化される。この最適な表現は、ニューラルネットワークによる推論を実行するために使用することができる。
【特許請求の範囲】
【請求項1】
ディープニューラルネットワークの訓練および推論を実施するための方法であって、
(a)訓練データのセットを受け取るステップと、
(b)訓練データのセットを多次元対数記数法(MDLNS)で表現するステップであって、MDLNS表現は、第1の底に関連する第1の指数と第2の底に関連する第2の指数を使用するステップと、
(c)既定の第1の底および既定の第2の底を使用して、訓練データのセットに対してディープニューラルネットワークの訓練を実施し、ニューラルネットワークの重み係数のセットを決定するステップと、
(d)決定されたニューラルネットワークの重み係数のセットに基づいて、既定の第1の底に対して、多次元対数データ表現のための第2の底を最適化するステップと、
(e)ネットワーク出力セットを得るために、ステップ(d)で決定された最適化された多次元対数データ表現を使用して、ネットワーク入力セットに対してディープニューラルネットワーク推論を実施するステップと、
を含む方法。
【請求項2】
多次元対数データ表現のために第2の底を最適化することは、平均二乗誤差(MSE)が最小化される最適な第2の底を決定することを含む、ことを特徴とする請求項1に記載の方法。
【請求項3】
第2の底および該第2の底に関連する第2の指数の範囲を最適化するために混合整数大域的最適化手順を実行するステップを含む、ことを特徴とする請求項1または2に記載の方法。
【請求項4】
既定の第1の底は2である、ことを特徴とする請求項1から3のいずれか1項に記載の方法。
【請求項5】
既定の第2の底は2
ωであり、ω=(1+sqrt(5))/2ある、ことを特徴とする請求項4に記載の方法。
【請求項6】
MDLNSは、1つ以上の追加の指数を使用し、該1つ以上の追加の指数の各々は、対応する1つ以上の追加の底に関連する、ことを特徴とする請求項1から4のいずれか1項に記載の方法。
【請求項7】
訓練データのセットに対してディープニューラルネットワークの訓練を実施することは、既定の第3の底を使用することを含み、既定の第2の底は、
【数1】
であり、既定の第3の底は、
【数2】
である、ことを特徴とする請求項6に記載の方法。
【請求項8】
指数は整数値であり、既定の第2の底は、
【数3】
からなるグループから選択される、ことを特徴とする請求項6に記載の方法。
【請求項9】
第1の指数と第2の指数が極性において反対である、ことを特徴とする請求項6に記載の方法。
【請求項10】
第1の指数および第2の指数は小数値である、ことを特徴とする請求項6に記載の方法。
【請求項11】
多次元対数データ表現のための1つ以上の追加の底のうちの少なくとも1つを最適化するステップを含む、ことを特徴とする請求項6から10のいずれか1項に記載の方法。
【請求項12】
請求項1から11のいずれか1項に記載の方法を実行するように構成されたハードウェアアクセラレータ。
【請求項13】
コンピューティングデバイスのプロセッサから割り当てられた内積計算を実行するためのハードウェアアクセラレータであって、
コンピューティングデバイスのメモリおよびハードウェアアクセラレータのキャッシュに接続された多次元対数記数法(MDLNS)コンバータと、
第1の数の行および第2の数の列のアレイに配列された複数の処理ユニットであって、集合的に処理コアを形成する、処理ユニットと、
処理コアおよびMDLNSコンバータに接続されたマイクロコントローラと、を含み、
MDLNSコンバータは、コンピューティングデバイスのメモリから受信したデータセットのMDLNS表現を作成し、該MDLNS表現をハードウェアアクセラレータのキャッシュに格納するように構成され、MDLNS表現は、バイナリに関連する第1の指数と非バイナリに関連する第2の指数を使用する、ハードウェアアクセラレータ。
【請求項14】
前記処理ユニットは、バイナリの底で動作する第1の加算器と、非バイナリの底で動作する第2の加算器とを含む、ことを特徴とする請求項13に記載のハードウェアアクセラレータ。
【請求項15】
前記処理ユニットは、前記第1の加算器および前記第2の加算器に接続された集約加算器を含み、前記集約加算器は、複数の集約チャネルを有し、各集約チャネルは、前記第1の指数のN個のビットと前記第2の指数のM個のビットとによって定められるペア(N,M)の一意の組合せに対応する、ことを特徴とする請求項14に記載のハードウェアアクセラレータ。
【請求項16】
前記集約加算器は、指数の一意な(N,M)のペアを集約するために並列に動作する2
N+M個のアップカウンタを含む、ことを特徴とする請求項15に記載のハードウェアアクセラレータ。
【請求項17】
前記処理コアの前記処理ユニットは、行列-ベクトル乗算ユニットのシストリックアレイとして構成される、ことを特徴とする請求項13から16のいずれか1項に記載のハードウェアアクセラレータ。
【請求項18】
前記第2の底は2
ωであり、ω=(1+sqrt(5))/2である、ことを特徴とする請求項13から17のいずれか1項に記載のハードウェアアクセラレータ。
【請求項19】
複数の処理タイルを含み、各処理タイルは、複数の前記処理コアを含み、チップオンネットワークによって他の処理タイルに接続されている、ことを特徴とする請求項13から18のいずれか1項に記載のハードウェアアクセラレータ。
【請求項20】
前記コンピューティングデバイスは、エッジコンピューティングデバイスである、ことを特徴とする請求項13から19のいずれか1項に記載のハードウェアアクセラレータ。
【請求項21】
本明細書に記載される、任意の新規かつ発明的な特徴、特徴の組み合わせ、または特徴のサブコンビネーションを有する装置。
【請求項22】
本明細書に記載される、任意の新規かつ発明的なステップ、行為、ステップおよび/または行為の組み合わせ、またはステップおよび/または行為の部分的な組み合わせを有する方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、人工知能(AI)アクセラレータの計算効率を改善するためのデータ表現の方法および装置に関する。
【0002】
(関連出願の参照)
本出願は、「内積計算のための多次元対数記数法プロセッサ(MULTI-DIMENSIONAL LOGARITHMIC NUMBER SYSTEM PROCESSOR FOR INNER PRODUCT COMPUTATIONS)」と題された2020年11月3日出願の米国特許出願第63/109136号の優先権を主張する。本出願は、「内積計算のための多次元対数記数法プロセッサ(MULTI-DIMENSIONAL LOGARITHMIC NUMBER SYSTEM PROCESSOR FOR INNER PRODUCT COMPUTATIONS)」と題された2020年11月3日出願の米国特許出願第63/109136号の米国特許法第119条に基づく利益を主張するものであり、この出願は、あらゆる目的のために参照によりその全体が本明細書に組み込まれる。
【背景技術】
【0003】
畳み込みニューラルネットワーク(CNN)などのディープニューラルネットワークは、画像および映像の認識および分類、並びに、推奨エンジン、自然言語処理、医療画像解析などの他の人工知能(AI)用途に使用できる。これらの用途に使用されるニューラルネットワークは、計算複雑性(computational complexity)が増大し、学習および推論に必要な消費電力が増加している。特に、モバイルまたは組み込みプラットフォーム上でニューラルネットワークを実行することは、ハードウェアと電力の制約のために難しい課題である。エッジデバイス(消費者製品または商用製品(例えば、ロボット、ドローン、監視装置、拡張現実(AR)製品、仮想現実(VR)製品、自動運転車両、スマートフォン、ウェアラブルデバイスなど)とインターフェースするローカルデバイスまたはネットワークをインターネットのエッジに接続できるようにするデバイス)には、そのサイズと利用可能な電力から課される制約がある。そのため、このようなエッジデバイス上でニューラルネットワークのより効率的な動作を可能にする解決策が必要とされている。こうした取り組みの中には、ハードウェア設計の効率化に向けたものもある。その他の取り組みは、機械学習モデルの効率を高めることに向けられている。しかし、ニューラルネットワークの計算複雑性が増大していることを考えると、ハードウェア設計とモデリングの効率向上だけでは十分な解決策を提供できない可能性がある。
【0004】
そのため、ニューラルネットワークが実行する演算の計算効率を向上させるためのデータ表現の方法への関心が高まっている。例えば、効率の向上と引き換えに多少の精度の低下を受け入れることが現実的である場合、低精度演算および/または圧縮を使用することができる。しかし、低精度の計算方法の中には、計算効率にもたらされる改善が小さいもの、および/または、訓練および推論において貧弱な結果、あるいは無効な結果さえもたらすものがある。例えば畳み込みニューラルネットワークで使用される内積計算を含む計算効率を改善するために使用することができ、なおかつ許容可能な出力を達成することができるデータ表現の方法および装置が必要とされている。
【発明の概要】
【0005】
一般に、本明細書では、畳み込みニューラルネットワーク(CNN)などのニューラルネットワークにおける内積計算をハードウェアで高速化するために、多次元対数記数法に基づくデータ表現の使用を組み込んだ方法および装置について説明する。
【0006】
本発明の一態様は、ディープニューラルネットワークの訓練および推論を実施するための方法を提供する。この方法は、訓練データのセットを受け取るステップと、訓練データのセットを多次元対数記数法(multidimensional logarithmic number system:MDLNS)で表現するステップであって、MDLNS表現は、第1の底に関連する第1の指数と第2の底に関連する第2の指数を使用するステップと、既定の第1の底および既定の第2の底を使用して、訓練データのセットに対してディープニューラルネットワークの訓練を実施し、ニューラルネットワークの重み係数のセットを決定するステップと、決定されたニューラルネットワークの重み係数のセットに基づいて、既定の第1の底に対して、多次元対数データ表現のための第2の底を最適化するステップと、ネットワーク出力セットを得るために、最適化された多次元対数データ表現を使用して、ネットワーク入力セットに対してディープニューラルネットワーク推論を実施するステップと、を含む。
【0007】
いくつかの実施形態において、多次元対数データ表現のために第2の底を最適化することは、平均二乗誤差(MSE)が最小化される最適な第2の底を決定することを含む。第2の底とそれに関連する第2の指数の可能な範囲を最適化するために、混合整数大域的最適化手順を実行するものであってもよい。
【0008】
いくつかの実施形態において、既定の第1の底は2である。いくつかの実施形態では、既定の第2の底は2
ωであり、ω=(1+sqrt(5))/2ある。MDLNSは、任意選択で、1つ以上の追加の指数(例えば、第3の指数、第4の指数など)を使用してもよく、これらの指数はそれぞれ対応する1つ以上の追加の底(例えば、第3の底、第4の底など)に関連付けられる。いくつかの実施形態において、訓練データのセットに対してディープニューラルネットワークの訓練を実施することは、既定の第3の底を使用することを含むものであってもよく、既定の第2の底は、
【数1】
であり、既定の第3の底は、
【数2】
である。いくつかの実施形態において、1つ以上の追加の底のうちの少なくとも1つは、多次元対数データ表現に対して最適化されている。
【0009】
いくつかの実施形態において、底の指数は整数値である。いくつかの実施形態では、第1の指数と第2の指数は、極性が反対である。いくつかの実施形態では、第1の指数および第2の指数は小数値である。いくつかの実施形態では、既定の第2の底は、
【数3】
からなるグループから選択される。
【0010】
本発明の別の態様は、本明細書に記載の方法を実行するためにエッジデバイス上で採用され得るハードウェアアクセラレータを提供する。ハードウェアアクセラレータは、 コンピューティングデバイスのメモリおよびハードウェアアクセラレータのキャッシュに接続された多次元対数記数法(MDLNS)コンバータと、第1の数の行および第2の数の列のアレイに配列された複数の処理ユニットであって、集合的に処理コアを形成する、処理ユニットと、処理コアおよびMDLNSコンバータに接続されたマイクロコントローラと、を含む。MDLNSコンバータは、コンピューティングデバイスのメモリから受信したデータセットのMDLNS表現を作成し、そのMDLNS表現をハードウェアアクセラレータのキャッシュに格納するように構成されるものであってもよい。MDLNS表現は、バイナリに関連する第1の指数と非バイナリに関連する第2の指数を使用するものであってもよい。
【0011】
いくつかの実施形態において、ハードウェアアクセラレータの処理ユニットは、バイナリの底で動作する第1の加算器と、非バイナリの底で動作する第2の加算器とを含む。処理ユニットは、任意選択で、第1の加算器および第2の加算器に接続された集約加算器を含むものであってもよい。集約加算器は、複数の集約チャネルを有しており、各集約チャネルは、第1の指数のビット数と第2の指数のビット数とによって定められるペア(N,M)の一意の組合せに対応する。集約加算器は、任意選択で、指数の一意な(N,M)のペアを集約するために並列に動作する2N+M個のアップカウンタを含むものであってもよい。
【0012】
いくつかの実施形態において、処理コアの処理ユニットは、行列-ベクトル乗算ユニットのシストリックアレイとして構成される。いくつかの実施形態において、第2の底は2ωであり、ω=(1+sqrt(5))/2である。いくつかの実施形態において、ハードウェアアクセラレータは、チップオンネットワークによって他の処理タイルに接続される複数の処理タイルを含む。処理タイルの各々は、複数の上述した処理コアを含むものであってもよい。
【0013】
本明細書で説明するハードウェアアクセラレータは、エッジコンピューティングデバイスなどのコンピューティングデバイスで使用され、計算効率の向上と消費電力の低減のために、対数データ表現の使用を組み込み、ディープニューラルネットワークの推論を実施することができる。
【0014】
本発明のさらなる態様は、以下の説明を考慮すれば明らかになるであろう。
【0015】
本発明の実施形態の特徴および利点は、添付の図面を参照して説明する以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【0016】
【
図1】
図1は、多次元対数表現の幾何学的解釈を示す図である。
【
図2】
図2は、計算効率を高めるためにハードウェアアクセラレータを用いてディープニューラルネットワークを実行するために使用することができるエッジコンピューティングデバイスの例示的な実施形態を模式的に示す図である。
【
図3】
図3は、
図2のハードウェアアクセラレータの例示的な実施形態のブロック図である。
【
図3A】
図3Aは、例示的な実施形態に従う
図3のハードウェアアクセラレータの処理ユニットを模式的に示す図である。
【
図3B】
図3Bは、
図3Aの処理ユニットのいくつかの実施形態に含まれ得る例示的なアグレゲートアダーを模式的に示す図である。
【
図4】
図4は、ディープニューラルネットワークの訓練および推論を実施するための多次元対数データ表現を組み込んだ一実施形態に従う方法を示す図である。
【発明を実施するための形態】
【0017】
以下に続く説明、およびそこに記載された実施形態は、本発明の原理の特定の実施形態の例の説明のために提供される。これらの例は、これらの原理および本発明を、限定するものではなく、説明するために提供されるものである。
【0018】
本明細書では、畳み込みニューラルネットワーク(CNN)などのニューラルネットワークにおける内積計算をハードウェアで高速化するために、多次元対数記数法に基づくデータ表現の使用を組み込んだ方法および装置について説明する。これらの方法および装置の用途には、ニューラルネットワークの訓練および推論の計算が含まれる。しかしながら、低消費電力、低面積、および高速の内積計算ユニットを必要とするあらゆるデバイスが、本明細書に記載される方法および装置から利益を得ることができる。本発明の実施形態は、コンピュータビジョン、人工知能(AI)用途、画像圧縮、音声認識、機械学習、またはエッジデバイス(例えば、ロボット、ドローン、監視装置、拡張現実(AR)製品、仮想現実(VR)製品、自動運転車両、スマートフォン、ウェアラブルデバイスなど)における他の用途に使用できるアクセラレータに組み込むことができる。
【0019】
古典的な一次元の対数記数法(logarithmic number system:LNS)は、低電力、低精度のデジタル信号および画像処理において様々な用途がある。LNSは、デジタルフィルタ(有限インパルス応答(FIR)、無限インパルス応答(HR)、適応フィルタなど)の分野や、信号変換の実施に使用される。LNSの機械的バージョンは、よく知られた計算尺である。
【0020】
LNSは、次ように要約できる。すなわち、LNSは、乗算および除算を加算および減算に変換する。加算および減算は、ルックアップテーブル(LUT)と追加の加算によって実施される。重大な欠点はLUTのサイズであり、これは計算のダイナミックレンジに応じて指数関数的に大きくなる傾向がある。その結果、一般的にLNSの使用は、低精度(例えば、8~16ビットのダイナミックレンジなど)を必要とする用途に限られる。全体的な内積アーキテクチャから乗算器が削除されるため、一般的に低消費電力の実装が実現され、これはモバイル用途にとって望ましい機能である。
【0021】
低精度計算は、機械学習(例えば、深層学習、訓練時間中および配備後に更新される重みを伴うまたは伴わない継続的学習、強化学習など)、人工知能、3Dイメージング、AR/VRシミュレーションなどの用途に関連する計算を高速化するのに有利である。標準的な浮動小数点表現の代替として対数表現を検討した結果、消費電力の大幅な削減など、これらの用途で有望な結果が得られている。対照的に、浮動小数点表現の使用は、このような用途の計算に不必要に大きなダイナミックレンジを提供するため、計算が大幅に遅くなり、消費電力が高くなる。
【0022】
多次元対数記数法(multidimensional logarithmic number system:MDLNS)は、LNSを2次元に拡張したものとして見ることができる。MDLNSにおいて、実数xは、x=s*D1
a*D2
bとして符号化され得る。ここで、(D1,D2)は、1組の2つの乗算的に独立(multiplicatively independent)な底(これは、実数または複素数であってもよい)および(a,b)は、1組の2つの整数である。また、xが正の場合、s=1、xが負の場合、s=-1である。この表現の簡単な幾何学的解釈は、
図1に示すように、2次元の計算尺10である。
【0023】
下の表1に、LNSとMDLNSの主な相違点のいくつかについて概要が記されている。
【表1】
【0024】
第2の底D2が数値1として選択される場合、LNSはMDLNNSの部分的な場合であることに留意されたい。LNSが魅力的な実用的性能を提供する用途では、LNSと同じ利点を提供するようにMDLNNSを適合させることができる。
【0025】
表1に見られるように、MDLNNSはLNSに類似しない特徴を含んでいる。そのため、MDLNNSは、LNSよりも計算上の利点を提供するために、そのような機能をより効率的に利用することで活用できる。例えば、MDLNNSは、対数形式からバイナリ形式への変換を指数関数的に高速化する。LNSでは、対数形式からバイナリ形式への変換は、大きなLUTを使用するか、または関数f(x)=2xを実装する専用の回路を使用することによって達成される。MDLNNSでは、指数expのすべての可能な値に対して、第2の底D2のべき乗が浮動小数点方式で格納されている場合(例えば、D2exp=1.ddddd*2eeeee)、変換はかなり高速に実行できる。
【0026】
MDLNNSと古典的なLNS(または浮動小数点演算)の違いの1つは、1(乗法の単位元)の非自明な近似の存在である(例えば、1に非常に近い2exp1*D2exp2の形の数)。以下の例は、計算オーバーフローを防止するために、これらの1の近似がどのように有利に使用できるかを示している。
【0027】
一例では、特定のMDLNNSの底は、D1=2およびD2=3である。この例において、1の良好な近似値には次のような数が含まれる。すなわち、28*3-5、219*3-12、
284*3-53等々である。例示的に、2a*3b(ここで、a2+b2>0、aおよびbは整数とする)は、一対の指数(a、b)のビットサイズに制限が課されない場合、2と3が乗法的に独立である(すなわち、log23は無理数である)ため、任意に1に近づけることができる。
【0028】
別の例として、x=(180,-115)としてx2は、9ビット固定小数点バイナリ演算を利用して計算される。xの実数値は、約0.207231である。x2を直接計算すると、9ビット符号付き固定小数点演算の場合、結果である(360,-230)はオーバーフローエラーを生じさせる。しかし、MDLNSが提供する1の優れた近似は、オーバーフロー問題を軽減する最適化オプションを提供する。注目すべきことに、この最適化オプションは、1次元対数記数法(1DLNS)にも浮動小数点バイナリ演算にも類似していない。もしxが2次元対数記数法(2DLNS)で(-84,53)として符号化された数(すなわち、1に非常に近い数)と乗算されるなら、このスケーリングに関連する誤差は非常に小さくなり、指数のサイズは(96,-62)に減らすことができる。これにより、二乗演算を9ビット固定小数点のダイナミックレンジ内で安全に実行することができ、最終的な答えは(192,-164)となる。例示的には、使用する数値のサイズを小さくしてオーバーフローのない範囲にすることで、膨大な計算オプションを提供することができる。
【0029】
標準的な乗算のような標準的な計算手順も2DLNSで実行できる。例として、D1=2, D2=2.0228の底を有する2DLNSを使用することで、41に109を乗算することができる。この底の選択により、41は(-17,22)のように符号化され、109は(21,-14)のように符号化される。指数を成分ごとに加算すると、(4,8)のペアができる。このペアで符号化された数値を得るには、D2のべき乗(すなわち、
1.ddddd*2eeeeeのように符号化された)を含む小さなLUTを使用することができる。この例では、D28=1.0001100001....*28に24を乗算すると、1.0001100001...*212となり、これは、10進数で4485に相当する。41に109を乗算した場合の正しい積は、10進数で4469である。
【0030】
本発明の態様は、上述の2DLNSなどのMDLNNSを使用して計算を実行するための多次元対数データ表現を提供するシステムおよび方法に関する。例示的に、データの多次元対数表現を使用すると、エッジコンピューティングデバイスによって実行される画像圧縮、画像認識または音声認識、機械学習などのアプリケーションの計算効率を高めることができる。
【0031】
図2は、例示的な実施形態によるコンピューティングデバイス12を示す。コンピューティングデバイス12は、インターネットのエッジで動作するコンピューティングデバイスであってもよい。本明細書では、説明を容易にする目的で、コンピューティングデバイス12を「エッジコンピューティングデバイス」と呼ぶことがある。しかしながら、他のタイプのコンピューティングデバイスは、本発明の範囲内で「エッジコンピューティングデバイス」と交換可能であることが理解されるべきである。
【0032】
図2に示されるように、エッジコンピューティングデバイス12は、プロセッサ14、(例えば、インターネットへのイーサネットおよび/またはWi-Fi接続をサポートする)ネットワークインターフェース16、メモリ18、およびアプリケーション固有の計算を実行するように適合され得る1つまたは複数のハードウェアアクセラレータ20を含む。エッジコンピューティングデバイス12は、クラウドまたはクラウドサーバ100を介してインターネットに接続されるものであってもよい。
図2に示されるように、関心のある様々なローカルデバイス2またはローカルネットワーク(たとえば、商業用ロボットまたはドローン、軍事用ロボットまたはドローン、軌道上のデータセンター、衛星、監視装置、拡張現実(AR)製品、仮想現実(VR)製品、スマートフォンのようなパーソナルコンピューティングデバイス、ウェアラブルデバイス、自律走行(自動運転)車両、または他の任意の無線電子デバイスなど)が、エッジコンピューティングデバイス12に接続されるものであってもよい。
【0033】
エッジコンピューティングデバイス12は、ローカルデバイス2とエッジコンピューティングデバイス12との間のデータ伝送に関連する待ち時間を低減するために、典型的には、ローカルデバイス2に比較的近接して配置される。例えば、エッジコンピューティングデバイス12は、風力タービンのローカルセンサ2から収集されたデータを受信して処理するために、風力タービン上に設置される場合がある。別の例として、エッジコンピューティングデバイス12は、自律走行車両2から送信されたデータを受信して処理するために、信号機上に設置されることがある。いくつかの実施形態では、エッジコンピューティングデバイス12は、ローカルデバイス2に物理的に配置され、および/またはローカルデバイス2の一部を形成する(すなわち、ローカルデバイス2は、エッジコンピューティングデバイス12を含むものであってもよい)。
【0034】
エッジコンピューティングデバイス12は、場合によっては、ディープニューラルネットワークを実行することが要求されることがある。例えば、エッジコンピューティングデバイス12は、画像またはビデオ認識、音声認識、推奨エンジン、自然言語処理、医療画像分析などのAIアプリケーションを実行するために、ディープニューラルネットワークを採用することがある。そのような場合、エッジコンピューティングデバイス12は、ニューラルネットワークの実行に関連する計算タスクを、そのハードウェアアクセラレータ20のうちの1つ以上に割り当てるように構成され得る。いくつかの実施形態では、エッジコンピューティングデバイス12は、行列-ベクトル乗算および/または内積計算を実行するようにプログラム可能であるか、または他の方法でカスタム設計されたハードウェアアクセラレータ20を含む。必須ではないが、ハードウェアアクセラレータ20には、典型的には、タイルベースのアーキテクチャが組み込まれている。例示的に、ハードウェアアクセラレータ20は、従来の中央処理装置(CPU)またはグラフィカルプロセシングユニット(GPU)を使用するのに比べて計算効率が高い方法で、そのような計算を実行することができる。
【0035】
図3は、ハードウェアアクセラレータ20の例示的な実施形態のブロック図である。ハードウェアアクセラレータ20は、並列アーキテクチャで配列された複数の処理要素22を含む。処理要素22は、任意の適切な次元(例えば、2、3、等々)のアレイに配列されてもよい。例えば、処理要素22は、
図3に示されているように、m行n列を有する2次元アレイに配置されてもよい。行数mは、例えば、2から16の範囲の任意の数(例えば、2、3、4、5、6、7、8、9、10、11、12、13、14、15、または16)を含む任意の適切な数とすることができる。列数nは、例えば、2から16の範囲の任意の数(例えば、2、3、4、5、6、7、8、9、10、11、12、13、14、15、または16)を含む任意の適切な数とすることができる。いくつかの実施形態において、処理要素22は、同じ数のm行とn列を有する2次元アレイに配置される(すなわち、処理要素22は、正方形アレイに配置されるものであってもよい)。
【0036】
本明細書では、説明を容易にする目的で、(例えば上述のように)アレイ構成で配置された処理要素22のアセンブリを処理コア40と呼ぶことがある。
図3の例示的な実施形態では、図示上の目的および簡潔さのため、ハードウェアアクセラレータの単一の処理コア40が示されている。一般には、ハードウェアアクセラレータ20は、任意の適切な数の処理コア40を含むものであってもよい。各処理コア40は、ハードウェアアクセラレータ20の他の処理コア40と同じ数または異なる数の処理要素22を有することができる。
【0037】
本明細書では、説明を容易にするためで、処理コア40のアセンブリを処理タイルと呼ぶことがある。各処理タイルは、例えば、2から16の範囲の任意の数(例えば、2、3、4、5、6、7、8、9、10、11、12、13、14、15、または16)を含む、適切な数の処理コア40を含む。例えば、例示的な一実施形態において、ハードウェアアクセラレータ20の単一の処理タイルは、8つの処理コア40を含むものであってもよく、各処理コア40は、8行8列の正方形アレイに配置された64個の処理要素22を含むものであってもよい。ハードウェアアクセラレータ20は、エッジコンピューティングデバイス12によって必要とされる処理能力に応じて、任意の適切な数の処理タイルを含むものであってもよい。多くのアプリケーションでは、エッジコンピューティングデバイス12は、64個から512個の処理タイルを有するハードウェアアクセラレータ20で含む。
【0038】
処理コア40およびその中に含まれる処理ユニット22は、ハードウェアアクセラレータ20の1つまたは複数のマイクロコントローラ24によって制御される。マイクロコントローラ24は、専用に設計されたハードウェア、構成可能なハードウェア、データプロセッサ上で実行可能なソフトウェアまたはファームウェアを備えることによって構成されたプログラム可能なデータプロセッサ、および本明細書に記載される方法に従って処理ユニット22を制御するように専用にプログラムされ、構成され、または構築された特定目的データプロセッサのうちの1つ以上を使用して実装され得る。
【0039】
いくつかの実施形態では、マイクロコントローラ24は、縮小命令セットコンピュータ(RISC)マイクロコントローラである。そのような実施形態では、マイクロコントローラ24は、データメモリ、命令メモリ、プログラムカウンタ、レジスタ、制御回路、および入出力デバイスのうちの1つまたは複数を含み得る。
【0040】
いくつかの実施形態では、各処理コア40は、それ自体のマイクロコントローラ24によって制御される。他の実施形態では、ハードウェアアクセラレータ20の単一のマイクロコントローラ24が、2つ以上の処理コア40を制御する。例えば、ハードウェアアクセラレータ20の処理タイルを形成する全ての処理コア40は、単一のマイクロコントローラ24によって制御されるものであってもよい。
【0041】
マイクロコントローラ24は、ハードウェアアクセラレータ20に割り当てられた計算タスク(例えば、エッジコンピューティングデバイス12の中央プロセッサ14によって割り当てられたタスク)を実行するために、処理ユニット22およびハードウェアアクセラレータ20のデータメモリ30と通信する。例えば、マイクロコントローラ24は、メモリ30に記憶されたデータを処理ユニット22にロードするロード命令を提供するように構成され得る。ロード命令は、ハードウェアアクセラレータ20のローカルクロック26によって定められるクロックサイクルで実行されてもよい。データが処理ユニット22にロードされると、次のクロックサイクルでマイクロコントローラ24によって提供される演算命令(例えば、加算、減算、乗算、除算)が、処理ユニット22にロードされたデータに対して実行され得る。
【0042】
算術演算が実行された直後に処理ユニットの出力データをメモリに格納することを必要とする従来のコンピュータ・アーキテクチャ(例えば、フォン・ノイマン型のアーキテクチャ)とは異なり、処理コア40およびその中に含まれる処理ユニット22のアーキテクチャは、最終データがメモリに出力される格納前に一連の算術演算を実行することを可能にする。
【0043】
図3に示される例では、データは、ローカルクロック26の第1のクロックサイクルにおいて、メモリ30から処理コア40の第1の処理ユニット22Aにロードされ得る。第1の処理ユニット22Aは、次いで、ローカルクロック26の第2のクロックサイクルで、ロードされたデータに対して第1の算術演算を実行することができる。第1の算術演算を実行した後、処理ユニット22Aの出力データは、メモリ30に戻る代わりに、処理コア40の第2の処理ユニット22Bに直接転送される。次いで、第2の処理ユニット22Bは、第1の処理ユニット22Aの出力データのメモリ30からのロードを要することなく、ローカルクロック26の次の(すなわち、第3の)クロックサイクルにおいて、転送されたデータに対して直ちに第2の算術演算を実行することができる。この処理は、処理コア40の最後の処理ユニット22Cが、そこに転送されたデータに対して最後の演算処理を実行し、処理コア40の最終出力データをメモリ30に格納して戻すまで繰り返すことができる。これにより、処理コア40が必要とするロードおよび格納動作の回数を減らすことができ、それにより、従来のプロセッサよりも処理コア40の計算効率を向上させることができる。
【0044】
いくつかの実施形態では、メモリ30は、スタティックランダムアクセスメモリ(SRAM)または他の適切なストレージ技術を使用して実装され、同時ロード動作および同時格納動作を容易にする。すなわち、メモリ30は、(すなわち、他の1つまたは複数の処理ユニットからの)他の1つまたは複数のデータセットがメモリ30に格納されるのと同じクロックサイクルで、1つまたは複数のデータセットが1つまたは複数の処理ユニット22にロードされることを可能にするストレージ技術を使用して実装され得る。例えば、メモリ30は、8T SRAMを用いて実装されてもよい。任意選択で、メモリ30は、処理ユニット22の実行速度にピッチ整合されていてもよい。
【0045】
例示的に、ハードウェアアクセラレータ20のアーキテクチャは、各処理コア40を互いに独立して動作させることができるように、グローバルに非同期であるが、ローカルに同期である。各処理コア40がそれ自体のローカルクロック26を含む実施形態では、各処理コア40は、例えば、マイクロコントローラ24によって必要に応じて高速化または低速化され得る。他の実施形態では、処理タイルは、そこに含まれる処理コア40の処理を同期させる単一のクロック26を含むものであってもよい。ハードウェアアクセラレータ20のアーキテクチャは、大量の動的エネルギーと大きな面積を消費する可能性のあるグローバルクロックツリーの必要性を回避するものである。
【0046】
いくつかの実施形態では、ハードウェアアクセラレータ20の異なる処理タイルは、ネットワークオンチップ(NoC)50によって互いに接続される。NoC50は、ハードウェアアクセラレータの消費電力を比較的低く保ちつつ、より柔軟性を高めるために、データフロー再構成可能であってもよい。
【0047】
いくつかの実施形態では、処理ユニット22は、入力データに対して乗算演算を実行するように設計または構成された乗算ユニットである。
図3に示される例では、各処理ユニット22は、第1の入力を介して受信された第1のデータと第2の入力を介して受信された第2のデータとを乗算し、その積を、処理ユニット22のパイプラインの下流に位置する2つ以上の処理ユニット22(処理ユニットがパイプラインの最後の処理ユニット22Cである場合はメモリ30)に出力するように構成され得る。例示的に、乗算演算は、ハードウェアアクセラレータ20のタイルベースアーキテクチャを利用して、乗算演算の実行に関連する計算効率を向上させるために、MDLNNSで数値を表現するデータに対して実行され得る。例えば、ハードウェアアクセラレータ20は、バイナリで数値を表現するデータ(例えば、エッジコンピューティングデバイス12のメインメモリ18に格納された数値に対応する)をMDLNNSで同じ数値を表現するデータに変換するMDLNNSコンバータ40を含むか、または他の方法で MDLNNSコンバータ40とインターフェースすることができる。MDLNSコンバータ40は、MDLNSで数値を表すデータをバイナリで数値を表現するデータに戻すこともできる。
【0048】
図3Aは、処理ユニット22の例示的な実施形態を模式的に示す図である。
図3Aに図示される例では、処理ユニット22は、MDLNSで表現された第1の数値(x=s
x*D1
ax*D2
bx)と、同じMDLNSで表現された第2の数値(y=s
y*D1
ay*D2
by)とを乗算するように構成または設計される。
図3Aに示されているように、MDLNSコンバータ40は、エッジコンピューティングデバイス12のメインメモリ18に格納されている数値のバイナリデータ表現を、同じ数値のMDLNSデータ表現(例えば“x”、“y”)に変換する。MDLNS数は、続いて、ハードウェアアクセラレータ20のキャッシュ30に格納される。処理ユニット22は、2つ以上のMDLNS数(例えば“x”、“y”)にアクセスし、2つ以上のMDLNS数に対して乗算を実行するように(例えばマイクロコントローラ24を介して)動作することができる。
【0049】
図3Aの例示的な実施形態では、処理ユニット22は、第1の底用加算器62と第2の底用加算器64とを含む。第1の底用加算器62は、第1の数値の第1の底D1の指数(すなわち、“ax”)と第2の数値の第1の底D1の指数(すなわち、“ay”)とを加算するように構成される。第2の底用加算器64は、第1の数値の第2の底D2の指数(すなわち、“bx”)と第2の数値の第2の底D2の指数(すなわち、“by”)とを加算するように構成される。例示的に、底D1、D2は、任意の適切な数であってもよく、ハードウェアアクセラレータ20の特定の用途に従って最適化されていてもよい。底D1、D2は、例えば、以下に詳細に説明する方法を用いて最適化されるものであってもよい。加算器62、64は、最適化された底D1、D2に従って構成することができる。例えば、第1の加算器62は、D1=2の場合、バイナリ(2進)加算器であってもよい。別の例として、第2の加算器64は、D2=3の場合、3進加算器であってもよい。
【0050】
図3Aに示されるように、第1の加算器62は、第1の数値の第1の底D1の指数と第2の数値の第1の底D1の指数との和(すなわち、“ax+ay”)を生成する。第2の加算器64は、第1の数値の第2の底D2の指数と第2の数値の第2の底D2の指数との和(すなわち、“bx+by”)を生成する。上述したように、xとyの積はMDLNSでは
D1
a1+a2*D2
b1+b2と表現することができる。これによって、第1の加算器62の出力66と第2の加算器64の出力68をMDLNSコンバータ40に供給することにより、xとyの積をバイナリデータ表現に変換し直すことができる。
【0051】
場合によっては、数値の大きな集合を一緒に乗算して集約的に積を求めることが望ましい。多数の乗算演算は、例えば、内積計算、行列乗算、および/または機械学習およびAIアプリケーションで一般的に見られるタイプの計算を実行するときに必要となる場合がある。このような場合、処理ユニット22は、多数のMDNLS数を加算してその和を求めるように構成された集約加算器(aggregate adder)70を含むものであってもよい。
【0052】
図3Bは、集約加算器70を含む処理ユニット22の例示的な実施形態を模式的に示す図である。
図3Bに示される例では、アクセラレータキャッシュ30は、MDNLSの数値を表現する多数のデータを記憶する。MDNLSで表現される各数値について、データは、第1の底D1の指数に対応するN個のビットと、第2の底D2の指数に対応するM個のビットを含み得る。これらのタイプのデータでは、D2の指数には2
M個の可能な異なる値があり、この値のそれぞれが第1の底D1に由来する2
N個の可能な乗法因子を有する。
【0053】
集約加算器70は、2-組(2成分の順序対)である(N,M)の2N+M個の異なる組み合わせごとに、別個かつ専用の集約チャネルを含む。いくつかの実施形態では、集約加算器70は、2N+M個の並列アップカウンタを含み、各アップカウンタは、値の一意の(N,M)の組合せを集計するように構成される。各アップカウンタは、複数のDフロップを含む単純なデジタルカウンタであってもよい。Dフロップは、各アップカウンタについて、位置nのDフロップ(すなわち、F(n))のクロック入力が、位置(n-1)のDフロップの出力に接続されるように接続されてもよい。ここで、n=0,1,...,Uであり、Uはカウンタ内のビット数である。いくつかの実施形態では、n=0における第1のDフロップのクロックには、ハードウェアアクセラレータ20のアーキテクチャによって定まる望ましいクロック速度“f”で動作するマスタクロック(例えば、処理コア40のクロッ26)が使用される。
【0054】
アップカウンタの出力は、チャネル化された部分和であり、(例えば、MDLNSコンバータ40によって)エッジコンピューティングデバイス12によって認識される記数法(例えば、固定小数点)に変換されなければならない。P個のMDNLS数が合計されなければならない状況では、処理ユニット22の最終出力は、クロック26のPクロックサイクル後にのみ計算される。アップカウンタ値は、PサイクルごとにD1M*D2Nよってスケーリングされる。アップカウンタ値は、場合によっては、その後、ハードウェアアクセラレータ20の固定小数点加算器によって合計されてもよい。固定小数点加算器は、場合によっては、MDLNSコンバータ40の一部として具現化される。
【0055】
例示的に、アップコンバータの値を固定小数点にマッピングするために固定小数点加算器によって実装される高精度固定小数点加算および最終再構築ステップ(final reconstruction step:FRS)を、低減された速度(rate)(例えば、f/P Hzの速度)で実行することができる。畳み込みニューラルネットワーク(CNN)のような典型的な機械学習構造の場合、Pは10,000~100,000以上の範囲の数値となり得る。このようなアプリケーションの場合、FRSステップは、例えば、エッジコンピューティングデバイス12の適切な組み込みプロセッサコアを使用してソフトウェアで実装され得る。いくつかの実施形態では、ハードウェアアクセラレータ20は、FRSを介してMDLNSアップカウンタ値を固定小数点に変換するように構成された一連のプログレッシブダウンサンプリング積分器を備える。一連のプログレッシブダウンサンプリング積分器は、ハードウェアアクセラレータ20の速度、電力、およびチップ面積の間の適切なトレードオフを決定するために、処理ユニット22と関連して動作させることができる。
【0056】
いくつかの実施形態では、集約加算器70は、アップカウンタの一部または全部に加えて、またはその代わりに、バレルシフタを有する固定小数点加算器を含む。このような固定小数点加算器は、例えば、2N個の項を計算するために実装されるものであってもよく、それによって、集約チャネルの数を2N+Mから2Mに減少させるものである。
【0057】
いくつかの実施形態では、処理コア40およびその中に含まれる処理ユニット22は、単一のアキュムレータに接続されるシストリックアレイ行列-ベクトル乗算ユニットとして構成される。そのような実施形態では、各処理ユニット22は、ドット積計算および/または行列乗算の部分的な結果を計算するように動作し得るMDLNS乗算ユニットであるかまたはそのように機能する。例示的に、処理ユニット22をシストリックアレイとして構成することにより、順序付けられたデータフローを提供することができ、および/または、処理コア40が、ハードウェアアクセラレータ20の効率および/またはスループットを増加させるために、重み定常(weight stationary)および/または出力定常(output stationary)などの特性を利用することを可能にすることができる。
【0058】
いくつかの実施形態では、ハードウェアアクセラレータ20は、活性化関数および/またはプーリングを処理するための非線形性および削減ユニットを備える。活性化関数は、畳み込みネットワーク(CNN)などのニューラルネットワークにおける非線形関数であり、行列乗算の結果(すなわち、重み付き和)がどのように出力に変換されるかを定める。活性化関数の例としては、ReLU活性化関数、Leaky ReLU活性化関数、シグモイド活性化関数、ソフトプラス活性化関数、または他の微分可能な非線形関数が挙げられるが、これらに限定されるものではない。非線形性および低減ユニットは、処理コア40によって実行される行列乗算(例えば、“AX+b”(行列-行列)、“Ax+b”(行列-ベクトル)の結果に適切な活性化関数を適用するように設計または構成されるものであってもよい。
【0059】
以下、
図4を参照して、ディープニューラルネットワーク演算の計算効率を高めるためにハードウェアアクセラレータ20によって実現することができる方法を説明する。
【0060】
図4は、ディープニューラルネットワークの訓練および推論の実施に使用されるデータ表現に上述した概念が組み込まれた一実施形態に従う方法200を示す。方法200は、上述の1つまたは複数のハードウェアアクセラレータ20を使用して、それらのタイルベースアーキテクチャを利用するように実装されてもよく、これらのハードウェアアクセラレータ20は、ディープニューラルネットワークの訓練に必要な計算の一部を効果的な方法で実行するように設計されるか、または構成されるものであってもよい。
【0061】
方法200は、データ入力(訓練データ)のセット201を受け入れ、データ入力のセット201を第1の底および第2の底を含むMDLNSで表現することによって、ブロック202で開始する。データのセットをMDLNSで表現した後、ブロック202は、入力201に対してディープニューラルネットワークの訓練を実行することによって進行する。上述したように、実数xは、MDLNSにおいて、x=s*D1
a*D2
b、のように符号化され得る。ここで、(D1,D2)は、2つの乗法的に独立な底であり、(a,b)は、2つの整数の1組である。ブロック202は、いくつかの異なる可能なMDLNSのうちの任意の1つを使用して、実数xを符号化または表現することを含むものであってもよい。例えば、ブロック202は、次のうちのいずれか1つを使用して、実数xを符号化または表現することを含むものであってもよい。それらは、底(2,2
ω)を用いた2DLNS(ここで、ωは黄金比である)、底(2,D2,D3)を用いた3DLNS(ここで、
【数4】
であり、D3=D2^2である)、非負のバイナリ指数と非正の第2の底のバイナリ指数を用いたMDLNS、底
【数5】
と整数の指数を用いたMDLNS、底
【数6】
と整数の指数を用いたMDNLS、異なるダイナミックレンジに対して特定の最適化された底を用いたMDLNS、異なるダイナミックレンジに対して最適化された非バイナリの底を用いた3DLNS、および最適化された第2の底を用いたMDLNSである。
【0062】
ブロック202での訓練は、上述した2DLNSまたはMDLNSのうちのいずれか1つで表現される数値をハードウェアアクセラレータ20に入力することによって実行されるものであってもよい。例示的に、ブロック202において、黄金比の底の2DLNSは、重み係数の初期符号化を提供し、ドット積計算を実行する(すなわち、処理コア40のタイルベースアーキテクチャを利用することによってハードウェアアクセラレータ20を使用する)ために使用されてもよい。これは、上述した計算効率の向上(例えば、対数形式からバイナリ形式への指数関数的に高速な変換、および指数サイズの低減)をもたらす。ブロック202での訓練の結果、ディープニューラルネットワークの重み係数の初期セット203が決定される。
【0063】
方法200は、ディープニューラルネットワークの重み係数の初期セット203を決定した後、ブロック204に進む。ブロック204では、係数の初期セット203を使用して、2DLNSまたはMDLNSにおける最適な第2の底205を決定するために最適化手順が適用される。ブロック204における最適化手順は、場合によっては、固定された第1の底(例えば、特定の実施形態において第1の底は2である)に対して最小の平均二乗誤差をもたらす第2の底205を決定することを含むものであってもよい。一実施形態では、所与の指数のダイナミックレンジの下で、最適な底および指数の値を見つけるために、混合整数大域的最適化手順が使用される。混合整数大域的最適化手順は、実数である整数指数および非バイナリの底を用いたMDLNSのための混合整数最適化アルゴリズムを使用して実施することができる。
【0064】
最後に、方法200はブロック206に進む。ブロック206では、2DLNSのために新たに決定された最適な第2の底205を用いて、入力のセット207に対して推論が実行される。例えば、重み係数は、最適な第2の底を用いて2DLNSで表現され得る。推論計算の結果、出力のセット208が得られる。ハードウェアアクセラレータ20による推論計算のための最適な第2の底を用いた2DLNSの使用によって、計算効率の向上(例えば、対数形式からバイナリ形式への指数関数的に高速な変換、および指数サイズの低減)をもたらすことができ、これにより、(サイズまたは電力によって制限される)エッジデバイス、または低電力、低面積、および/または高速な内積計算ユニットを必要とする他のデバイス上で推論を実施することが可能になる。バイナリ表現から対数表現への変換は、事前に計算されたルックアップテーブル(LUT)を介して得ることができる。例えば、1つのLUT(それぞれ256ワードまたは2Kを含む)を、8ビットまたは12ビットのダイナミックレンジに使用できる。
【0065】
上述した例示的な態様に加えて、本発明を以下の例で説明するが、これらは本発明の理解を助けるために記載されたものであり、その後に続く特許請求の範囲に定められる本発明の範囲をいかなる意味においても限定するものと解釈されるべきではない。
【0066】
(例)
デジタル補聴器の分野における以下の例は、a)MDLNSにおける第2の底の選択の重要性、b)2桁のMDLNSの近似値の使用に基づく指数関数的な指数サイズの低減によって実現される桁数の重要性、を示すことを目的としている。
【0067】
以下の係数を持つタップ数53のFIRフィルタを考える(係数28~53は、線形位相を保証するために1~26の鏡映(mirror)である)。このフィルタは、デジタル補聴器に使用され、その目的は80dB以上の阻止帯域減衰を確保することである。
【表2】
【表3】
【0068】
上記の表3は、MDLNSが指数サイズの大幅な低減を可能にすることを明らかにしている。実際、理想的な(無限精度の)係数を用いると、-85.362dBの阻止帯域減衰が達成される。1桁のMDLNSと9桁の指数、x=0.7278946656の最適な底は、-80.315dBの阻止帯域減衰が達成される。2桁のMDLNSの場合、指数を3ビットのみ使用し、最適な底をx=0.735254518とすると、-81.562dBの阻止帯域減衰が達成される。このように、第2の底の最適化と2桁表現の使用との組み合わせにより、古典的なLNSの主な欠点、すなわち(LNSにとって)困難な算術演算を実行するための大規模なLUTの必要性を回避することができる。第2の底を正確に選択することの役割は、ランダムな(最適化されていない)第2の底を使用した場合との比較によって強調される。
【0069】
本発明の実施形態は、2次元対数数記数法(2DLNS)が組み込まれており、この場合、第2の底D2の選択は、平均最適(optimal-on-average)な底の選択を考慮することによって行われる。まず、(第1の底D1=2と仮定して)、D2について特に悪い選択をいくつか考える。例えば、D2=sqrt(2)とする。この場合、D2の偶数乗は完全な2のべき乗であり、したがって非常に悪い近似値を持つ多くの数を持つことになる。例えば(19,83)のような他の(共に非バイナリの)底を考えてみると、避けるべき現象に気づくかもしれない。実際、19-3* 832=1.00437...である。したがって、この特定のペアも悪いと考えられる。もし19a*83b(a,bは整数)の形の数を考えるなら、それらはクラスターを形成する。クラスター内の数は非常に良い近似になるが、クラスター外の数は、極端に大きな指数(aおよびb)を使用しない限り、悪い近似になる。したがって、底が乗法的に独立であるという理論的制約は、最適な計算性能を得るための底の選択において必要ではあるが、十分な条件ではない。
【0070】
したがって、「良い」第2の底は、log2(D)(Dの底2の対数)が不良近似(badly approximable)無理数となるようなものである。有理近似に関して「最悪」であることが知られている数は黄金比(ω=(1+sqrt(5)/2=1.618...)であるため、非常に良い(普遍的な)第2の底は、D=2ω=21.618...=3.069...となる。利便性のため、D=D/2である底を考えることもできる。実際、この底は良好に機能し、(例えば)適応デジタルフィルタが2DLNSで実装される場合、底(2,2ω)を使用することは、計算上最適であるように思われ、(平均的な意味で)良い性能を望むのであれば、これを選択することができる。これは平均最適な底の選択と呼ぶことができる。第1の底が2でない場合、平均最適な第2の底を選択するための一般的なルールは、D2=D1ωである。
【0071】
MDLNS(具体的には、この例では2DLNS)でテストされる行列乗算タスクに最適な第2の底を見つけるために、本発明者らによって実験が実施された。画像理解アプリケーションの場合、主な計算演算は、Wx+bである。ここでWは(非正方)行列、xおよびbはベクトルである。Wx+bは、-2から+2に位置するガウス分布則に従う。
【0072】
上述したことに基づいて、区間[-2,2]が256個の等間隔区間に分割され、256個の数値の各々が2^a*D^bの形に近似される。Dに関する平均二乗誤差(MSE)は、この区間内のすべての数値がガウス分布によって提供される重みを持つと仮定して最小化される。教師あり訓練では、入力がディープニューラルネットワークに提供され、ネットワーク出力が目標出力と比較される。誤差は、目標出力とネットワーク出力の差として測定される。これらの誤差の和の平均(平均二乗誤差)を最小化することが望ましい。すべての特定の指数、および固定された第1の底(この例では、2に固定)に対して、MSEが最小化される最適な第2の底が導出される。以下の表4はその結果を示している。
【表4】
【0073】
最適な第2の底は、区間[1/sqrt(2),sqrt(2)]内に位置する必要がある。これは、上記の表4で最適な第2の底について見られる数値を説明するものであり、小数点以下5桁の精度で計算される。表4に示されるように、平均二乗誤差は、非バイナリの指数のビット数の関数として減少する。
【0074】
以下の表5は、(a)第1の底2に伴って特に最適化された第2の底(与えられたビットサイズごとに異なる)、(b)底(2,3)の2DLNS、および(c)入力データ近似の平均二乗誤差に関する平均最適な底(2,2
ω)の2DLNSの間の数値的に得られたデータの比較を示すものである。データは、[-2,2]の間に位置するガウス分布に従うと仮定する。
【表5】
【0075】
上記の表5から、いくつかの重要な結論を見出すことができる。特に最適化された第2の底を使用した場合、指数にさらにビットを追加するため、平均二乗誤差はすべてのステップで2倍以上改善される。平均最適な底(2,2ω)を選択した場合、誤差は2倍よりわずかに大きく、非常にロバストな低減を得ることができる。この底の選択は、底(2,3)の2DLNSよりも、1つの例外(6ビットの指数)を除いて、ほとんど常に良好である。
【0076】
デジタル信号処理では、FIR/IRRフィルタと適応フィルタにおけるMDLNSの使用には基本的な違いがある。上述した議論では、非常に小さい指数、非常に小さいLUT、および非常に小さい加算器を含む非常に効率的なMDLNS内積アーキテクチャを確保するために、第2の底を注意深く選択することの重要性が強調されている。一方、第2の底をランダムに選択すると、FIR/IRアーキテクチャの性能は大幅に低下する。
【0077】
適応フィルタの場合、フィルタの係数は適応フィルタリングアルゴリズムに応じて反復的に変化するため、最適な第2の底を選択するという手段はない。従って、上述したように、第2の底を選択するために平均最適技術を使用することができる。
【0078】
上述した概念は、3次元対数記数法(3DLNS)を用いたデータ表現による内積計算にも適用できる。平均最適な底の選択のためには、「不良近似実数のペア」を探す必要がある。この分野の研究は少ないが、有理数として良く近似できない無理数のペアに対するいくつかの明示的な推定が、T.W. Cusick, The two-dimensional Diophantine approximation constant - II, Pacific Journal of Mathematics, vol.105, pp.53-67, 1983で議論されている。Cusickの結果はKeith Briggsによって、Some explicitly badly approximable pairs <arxiv.org/pdf/math/0211143.pdf>, October 25, 2018で拡張されており、彼が有理数のペアとして特に近似が難しいとしたペアは、(α,α2)である。ここで、αの非常に良い候補として、α=cos(2*pi/7)が知られている。したがって、(2,2α,2α^2)=(2,1.18671,1.469117)の底の3つ組は、3DLNSアプリケーションの場合、平均最適な底の選択として実用的な良い選択である。
【0079】
以下の表の数値は、混合整数最適化技術(指数は整数、非バイナリの底は実数)を用いて得られたものである。
【表6】
【0080】
本明細書で使用される例および対応する図は、説明のためのものである。本明細書で表現される原理から逸脱することなく、異なる構成および用語を使用することができる。
【0081】
本発明を特定の特定の実施形態を参照して説明したが、当業者には、本発明の範囲を逸脱することのないその様々な変更が明らかであろう。特許請求の範囲は、例に記載された例示的な実施形態によって限定されるべきではなく、全体として説明と一致する最も広い解釈が与えられるべきである。例えば、本明細書では、様々な特徴が「いくつかの実施形態」に存在するものとして記載されている。このような特徴は必須ではなく、全ての実施形態に存在するとは限らない。本発明の実施形態は、そのような特徴のゼロ、任意の1つ、または2つ以上の任意の組み合わせを含むことができる。これは、そのような特徴のうちのあるものが、そのような特徴のうちの他のものと、そのような互換性のない特徴を組み合わせた実用的な実施形態を構築することが当業者にとって不可能であるという意味で互換性がないという範囲にのみ限定される。従って、「いくつかの実施形態」が特徴Aを有し、「いくつかの実施形態」が特徴Bを有するという記述は、(記述に別段の記載があるか、特徴Aと特徴Bが基本的に両立しない場合を除いて)、本発明者らが特徴Aと特徴Bを組み合わせた実施形態も想定していることを明示的に示すものと解釈されるべきである。
【国際調査報告】