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

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

▶ クゥアルコム・インコーポレイテッドの特許一覧

特表2022-547460コンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施すること
<>
  • 特表-コンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施すること 図1
  • 特表-コンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施すること 図2A
  • 特表-コンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施すること 図2B
  • 特表-コンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施すること 図2C
  • 特表-コンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施すること 図2D
  • 特表-コンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施すること 図3
  • 特表-コンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施すること 図4
  • 特表-コンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施すること 図5
  • 特表-コンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施すること 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-11-14
(54)【発明の名称】コンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施すること
(51)【国際特許分類】
   G06G 7/60 20060101AFI20221107BHJP
   G06N 3/063 20060101ALI20221107BHJP
   G11C 11/54 20060101ALI20221107BHJP
   G06G 7/16 20060101ALI20221107BHJP
【FI】
G06G7/60
G06N3/063
G11C11/54
G06G7/16 510
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022514184
(86)(22)【出願日】2020-09-08
(85)【翻訳文提出日】2022-03-02
(86)【国際出願番号】 US2020049754
(87)【国際公開番号】W WO2021050440
(87)【国際公開日】2021-03-18
(31)【優先権主張番号】16/565,308
(32)【優先日】2019-09-09
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】100108855
【弁理士】
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100158805
【弁理士】
【氏名又は名称】井関 守三
(74)【代理人】
【識別番号】100112807
【弁理士】
【氏名又は名称】岡田 貴志
(72)【発明者】
【氏名】ワン、ジョンゾー
(72)【発明者】
【氏名】ティーグ、エドワード
(72)【発明者】
【氏名】ウェリング、マックス
(57)【要約】
方法が、人工ニューラルネットワークのコンピュートインメモリアレイの列しきい値を調整することによって、XNOR等価演算を実施する。本方法は、重み値とアクティブ化値との関数に基づいて、コンピュートインメモリアレイの各列について生成されるアクティブ化しきい値を調整することを含む。本方法は、入力ベクトルからコンピュートインメモリアレイへの入力値に基づいて、コンバージョンバイアス電流基準を計算すること、コンピュートインメモリアレイが、重みのセットでプログラムされる、をも含む。調整されたアクティブ化しきい値およびコンバージョンバイアス電流基準は、コンピュートインメモリアレイの出力値を決定するためのしきい値として使用される。
【選択図】図5
【特許請求の範囲】
【請求項1】
行と列とを備えるコンピュートインメモリアレイを備え、前記コンピュートインメモリアレイは、
重み値とアクティブ化値との関数に基づいて、前記コンピュートインメモリアレイの各列について生成されるアクティブ化しきい値を調整することと、
入力ベクトルから前記コンピュートインメモリアレイへの入力値に基づいて、コンバージョンバイアス電流基準を計算することと、前記コンピュートインメモリアレイが、重み値のセットでプログラムされ、そこにおいて、前記調整されたアクティブ化しきい値および前記コンバージョンバイアス電流基準が、前記コンピュートインメモリアレイの出力値を決定するためのしきい値として使用される、
を行うように構成された、装置。
【請求項2】
ビット線の出力を決定するために、ビット線ポピュレーションカウントを、前記コンバージョンバイアス電流基準と前記調整されたアクティブ化しきい値との和と比較するように構成された比較器をさらに備える、請求項1に記載の装置。
【請求項3】
前記コンピュートインメモリアレイを含む人工ニューラルネットワークは、バイナリニューラルネットワークを備える、請求項1に記載の装置。
【請求項4】
前記アクティブ化しきい値は、前記コンピュートインメモリアレイの行の数の1/2よりも小さく、行の前記数は、前記入力ベクトルのサイズに対応する、請求項1に記載の装置。
【請求項5】
前記コンバージョンバイアス電流基準は、前記コンピュートインメモリアレイの行の数の1/2よりも小さく、行の前記数は、前記入力ベクトルのサイズに対応する、請求項1に記載の装置。
【請求項6】
重み値とアクティブ化値との関数に基づいて、行と列とを有するコンピュートインメモリアレイの各列について生成されるアクティブ化しきい値を調整することと、
入力ベクトルから前記コンピュートインメモリアレイへの入力値に基づいて、コンバージョンバイアス電流基準を計算することと、前記コンピュートインメモリアレイが、重み値のセットでプログラムされ、そこにおいて、前記調整されたアクティブ化しきい値および前記コンバージョンバイアス電流基準が、前記コンピュートインメモリアレイの出力値を決定するためのしきい値として使用される、
を備える方法。
【請求項7】
ビット線の出力を決定するために、ビット線ポピュレーションカウントを、前記コンバージョンバイアス電流基準と前記調整されたアクティブ化しきい値との和と比較することをさらに備える、請求項6に記載の方法。
【請求項8】
前記コンピュートインメモリアレイを含む人工ニューラルネットワークは、バイナリニューラルネットワークを備える、請求項6に記載の方法。
【請求項9】
前記アクティブ化しきい値は、前記コンピュートインメモリアレイの行の数の1/2よりも小さく、行の前記数は、前記入力ベクトルのサイズに対応する、請求項6に記載の方法。
【請求項10】
前記コンバージョンバイアス電流基準は、前記コンピュートインメモリアレイの行の数の1/2よりも小さく、行の前記数は、前記入力ベクトルのサイズに対応する、請求項6に記載の方法。
【請求項11】
非一時的プログラムコードを記録した非一時的コンピュータ可読媒体であって、前記プログラムコードは、
重み値とアクティブ化値との関数に基づいて、行と列とを有するコンピュートインメモリアレイの各列について生成されるアクティブ化しきい値を調整するためのプログラムコードと、
入力ベクトルから前記コンピュートインメモリアレイへの入力値に基づいて、コンバージョンバイアス電流基準を計算するためのプログラムコードと、前記コンピュートインメモリアレイが、重み値のセットでプログラムされ、そこにおいて、前記調整されたアクティブ化しきい値および前記コンバージョンバイアス電流基準が、前記コンピュートインメモリアレイの出力値を決定するためのしきい値として使用される、
を備える、非一時的コンピュータ可読媒体。
【請求項12】
ビット線の出力を決定するために、ビット線ポピュレーションカウントを、前記コンバージョンバイアス電流基準と前記調整されたアクティブ化しきい値との和と比較するためのプログラムコードをさらに備える、請求項11に記載の非一時的コンピュータ可読媒体。
【請求項13】
前記調整することおよび前記計算することの対象となる人工ニューラルネットワークは、バイナリニューラルネットワークを備える、請求項11に記載の非一時的コンピュータ可読媒体。
【請求項14】
前記アクティブ化しきい値は、前記コンピュートインメモリアレイの行の数の1/2よりも小さく、行の前記数は、前記入力ベクトルのサイズに対応する、請求項11に記載の非一時的コンピュータ可読媒体。
【請求項15】
前記コンバージョンバイアス電流基準は、前記コンピュートインメモリアレイの行の数の1/2よりも小さく、行の前記数は、前記入力ベクトルのサイズに対応する、請求項11に記載の非一時的コンピュータ可読媒体。
【請求項16】
重み値とアクティブ化値との関数に基づいて、行と列とを有するコンピュートインメモリアレイの各列について生成されるアクティブ化しきい値を調整するための手段と、
入力ベクトルから前記コンピュートインメモリアレイへの入力値に基づいて、コンバージョンバイアス電流基準を計算するための手段と、前記コンピュートインメモリアレイが、重み値のセットでプログラムされ、そこにおいて、前記調整されたアクティブ化しきい値および前記コンバージョンバイアス電流基準が、前記コンピュートインメモリアレイの出力値を決定するためのしきい値として使用される、
を備える装置。
【請求項17】
ビット線の出力を決定するために、ビット線ポピュレーションカウントを、前記コンバージョンバイアス電流基準と前記調整されたアクティブ化しきい値との和と比較するための手段をさらに備える、請求項16に記載の装置。
【請求項18】
前記コンピュートインメモリアレイを含む人工ニューラルネットワークは、バイナリニューラルネットワークを備える、請求項16に記載の装置。
【請求項19】
前記アクティブ化しきい値は、前記コンピュートインメモリアレイの行の数の1/2よりも小さく、行の前記数は、前記入力ベクトルのサイズに対応する、請求項16に記載の装置。
【請求項20】
前記コンバージョンバイアス電流基準は、前記コンピュートインメモリアレイの行の数の1/2よりも小さく、行の前記数は、前記入力ベクトルのサイズに対応する、請求項16に記載の装置。
【発明の詳細な説明】
【優先権の主張】
【0001】
米国特許法第119条に基づく優先権の主張
[0001]本特許出願は、2019年9月9日に出願され、本出願の譲受人に譲渡され、参照により本明細書に明確に組み込まれる、「PERFORMING XNOR EQUIVALENT OPERATIONS BY ADJUSTING COLUMN THRESHOLDS OF A COMPUTE-IN-MEMORY ARRAY」と題する非仮出願第16/565,308号の優先権を主張する。
【技術分野】
【0002】
[0002]本開示の態様は、一般に、人工ニューラルネットワークのコンピュートインメモリ(compute-in-memory)アレイの列しきい値を調整することによってXNOR等価演算を実施することに関する。
【背景技術】
【0003】
[0003]バイナリニューラルネットワーク(BNN)などの超低ビット幅ニューラルネットワーク(very low bit width neural network)は、深層ニューラルネットワーキング(DNN)における強力な新しい手法である。バイナリニューラルネットワークは、データトラフィックを著しく低減し、電力を節約することができる。たとえば、バイナリニューラルネットワークのためのメモリストレージは、浮動小数点/固定小数点精度と比較して、重みとニューロンアクティブ化の両方が-1または+1に2値化されるので、著しく低減される。
【0004】
[0004]しかしながら、デジタル相補型金属酸化物半導体(CMOS)処理は、[0,1]基底を使用する。これらのバイナリニューラルネットワークに関連するバイナリ実装を実行するために、バイナリネットワークの[-1,+1]基底は、CMOS[0,1]基底に変換されなければならない。その変換は、算出量の多い(computationally intense)排他的否定OR(XNOR:exclusive-negative OR)演算を採用する。
【0005】
[0005]コンピュートインメモリシステムが、バイナリニューラルネットワーク(BNN)などの超低ビット幅ニューラルネットワークを実装することができる。コンピュートインメモリシステムは、いくつかの処理能力をもつメモリを有する。たとえば、ビット線とワード線との各交点が、フィルタ重み値を表現し、これは、積を生成するために、ワード線上の入力アクティブ化を乗算される。各ビット線に沿った個々の積は、次いで、出力テンソルの対応する出力値を生成するために加算される。この実装は、積和(MAC:multiply accumulate)演算と見なされ得る。これらのMAC演算は、バイナリネットワークの[-1,+1]基底をCMOS[0,1]基底に変換することができる。
【0006】
[0006]従来、コンピュートインメモリシステムによる変換は、各ビットセルにおけるXNOR演算を完了することによって達成される。各ビット線に沿った結果は、次いで、対応する出力値を生成するために加算される。残念ながら、各ビットセル中にXNOR関数を含むことは、大きい面積を消費し、電力消費を増加させる。
【0007】
[0007]従来の実装では、各ビットセルは、読取りおよび書込みの基本メモリ関数に加えて、入力とセル状態との間のXNORの追加の論理関数を含む。XNOR能力を含むことの結果として、メモリ(たとえば、スタティックランダムアクセスメモリ(SRAM))中の各セルについてのトランジスタの数が、6つまたは8つから12個に増加し、これは、セルサイズおよび電力消費を著しく増加させる。依然としてバイナリニューラルネットワーク[-1,+1]基底からCMOS[0,1]基底に変換することが可能でありながら、XNOR演算をなくすことが望ましいであろう。
【発明の概要】
【0008】
[0008]本開示の一態様では、装置が、列と行とを含むコンピュートインメモリアレイを含む。コンピュートインメモリアレイは、重み値とアクティブ化値との関数に基づいて、コンピュートインメモリアレイの各列について生成されるアクティブ化しきい値を調整するように構成される。コンピュートインメモリアレイはまた、入力ベクトルからコンピュートインメモリアレイへの入力値に基づいて、コンバージョンバイアス電流基準(conversion bias current reference)を計算するように構成される。コンピュートインメモリアレイは、重み値のセットでプログラムされる。調整されたアクティブ化しきい値およびコンバージョンバイアス電流基準は、コンピュートインメモリアレイの出力値を決定するためのしきい値として使用される。
【0009】
[0009]別の態様は、行と列とを有するコンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施するための方法を開示する。本方法は、重み値とアクティブ化値との関数に基づいて、コンピュートインメモリアレイの各列について生成されるアクティブ化しきい値を調整することを含む。本方法は、入力ベクトルからコンピュートインメモリアレイへの入力値に基づいて、コンバージョンバイアス電流基準を計算することをも含む。コンピュートインメモリアレイは、重み値のセットでプログラムされる。調整されたアクティブ化しきい値およびコンバージョンバイアス電流基準は、コンピュートインメモリアレイの出力値を決定するためのしきい値として使用される。
【0010】
[0010]別の態様では、非一時的コンピュータ可読媒体が、非一時的プログラムコードを記録する。(1つまたは複数の)プロセッサによって実行されたとき、(1つまたは複数の)プロセッサに、重み値とアクティブ化値との関数に基づいて、行と列とを有するコンピュートインメモリアレイの各列について生成されるアクティブ化しきい値を調整させる非一時的プログラムコード。プログラムコードはまた、(1つまたは複数の)プロセッサに、入力ベクトルからコンピュートインメモリアレイへの入力値に基づいて、コンバージョンバイアス電流基準を計算させる。コンピュートインメモリアレイは、重み値のセットでプログラムされる。調整されたアクティブ化しきい値およびコンバージョンバイアス電流基準は、コンピュートインメモリアレイの出力値を決定するためのしきい値として使用される。
【0011】
[0011]別の態様は、行と列とを有するコンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施するための装置を開示する。本装置は、重み値とアクティブ化値との関数に基づいて、コンピュートインメモリアレイの各列について生成されるアクティブ化しきい値を調整するための手段を含む。本装置は、入力ベクトルからコンピュートインメモリアレイへの入力値に基づいて、コンバージョンバイアス電流基準を計算するための手段をも含む。コンピュートインメモリアレイは、重み値のセットでプログラムされる。調整されたアクティブ化しきい値およびコンバージョンバイアス電流基準は、コンピュートインメモリアレイの出力値を決定するためのしきい値として使用される。
【0012】
[0012]ここでは、以下の発明を実施するための形態がより良く理解され得るように、本開示の特徴および技術的利点についてやや広く概説した。本開示の追加の特徴および利点が、以下で説明される。本開示は、本開示の同じ目的を実行するための他の構造を変更または設計するための基礎として容易に利用され得ることを、当業者は諒解されたい。また、そのような等価な構成は、添付の特許請求の範囲に記載の本開示の教示から逸脱しないことを、当業者は了解されたい。さらなる目的および利点とともに、本開示の編成と動作の方法の両方に関して、本開示を特徴づけると考えられる新規の特徴は、添付の図に関連して以下の説明を検討するとより良く理解されよう。ただし、図の各々は、例示および説明のみの目的で与えられたものであり、本開示の限界を定めるものではないことを明確に理解されたい。
【0013】
[0013]本開示の特徴、特性、および利点は、全体を通じて同様の参照符号が同様のものを指す図面とともに、以下に記載される発明を実施するための形態を読めばより明らかになろう。
【図面の簡単な説明】
【0014】
図1】[0014]本開示のいくつかの態様による、汎用プロセッサを含むシステムオンチップ(SOC)を使用してニューラルネットワークを設計する例示的な実装形態を示す図。
図2A】[0015]本開示の態様による、ニューラルネットワークを示す図。
図2B】本開示の態様による、ニューラルネットワークを示す図。
図2C】本開示の態様による、ニューラルネットワークを示す図。
図2D】[0016]本開示の態様による、例示的な深層畳み込みネットワーク(DCN)を示す図。
図3】[0017]本開示の態様による、例示的な深層畳み込みネットワーク(DCN)を示すブロック図。
図4】[0018]本開示の態様による、人工ニューラルネットワークのコンピュートインメモリ(CIM)アレイを示すアーキテクチャを示す図。
図5】[0019]本開示の態様による、人工ニューラルネットワークのコンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施するためのアーキテクチャを示す図。
図6】[0020]本開示の態様による、人工ニューラルネットワークのコンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施するための方法を示す図。
【発明を実施するための形態】
【0015】
[0021]添付の図面に関して以下に記載される発明を実施するための形態は、様々な構成を説明するものであり、本明細書で説明される概念が実施され得る構成のみを表現するものではない。発明を実施するための形態は、様々な概念の完全な理解を提供するための具体的な詳細を含む。ただし、これらの概念はこれらの具体的な詳細なしに実施され得ることが当業者には明らかであろう。いくつかの事例では、そのような概念を不明瞭にしないように、よく知られている構造および構成要素がブロック図の形式で示される。
【0016】
[0022]これらの教示に基づいて、本開示の範囲は、本開示の他の態様とは無関係に実装されるにせよ、本開示の他の態様と組み合わせられるにせよ、本開示のいかなる態様をもカバーするものであることを、当業者は諒解されたい。たとえば、記載された態様をいくつ使用しても、装置が実装され得、または方法が実施され得る。さらに、本開示の範囲は、記載された本開示の様々な態様に加えてまたはそれらの態様以外に、他の構造、機能、または構造および機能を使用して実施されるそのような装置または方法をカバーするものとする。開示される本開示のいずれの態様も、請求項の1つまたは複数の要素によって実施され得ることを理解されたい。
【0017】
[0023]「例示的」という単語は、本明細書では「例、事例、または例示の働きをすること」を意味するために使用される。「例示的」として本明細書で説明されるいかなる態様も、必ずしも他の態様よりも好適または有利であると解釈されるべきであるとは限らない。
【0018】
[0024]本明細書では特定の態様が説明されるが、これらの態様の多くの変形および置換は本開示の範囲内に入る。好適な態様のいくつかの利益および利点が説明されるが、本開示の範囲は特定の利益、使用、または目的に限定されるものではない。むしろ、本開示の態様は、様々な技術、システム構成、ネットワーク、およびプロトコルに広く適用可能であるものとし、それらのいくつかが、例として、図および好適な態様についての以下の説明において示される。発明を実施するための形態および図面は、本開示を限定するものではなく説明するものにすぎず、本開示の範囲は添付の特許請求の範囲およびそれの均等物によって定義される。
【0019】
[0025]コンピュートインメモリ(CIM)は、メモリアレイにおいて積和(MAC:multiply and accumulate)演算を実施する方法である。コンピュートインメモリは、乗算演算と加算演算とを行うために、複数の行をアクティブ化することと、アナログ列電流を使用することとによって、メモリアレイ内の並列度を改善し得る。たとえば、SRAMビットセルが、バイナリニューラルネットワークのためのXNOR演算とビットカウンティング演算とを可能にするようにカスタマイズされ得る。
【0020】
[0026]従来、コンピュートインメモリバイナリニューラルネットワーク実装は、各ビットセルにおけるXNOR演算を完了することと、各ビットセルについての結果を加算することとによって、達成される。各ビットセル中にXNOR関数を追加することは、レイアウト面積を増加させ、電力消費を増加させる。たとえば、メモリ(たとえば、SRAM)中の各セル中のトランジスタの数が、6つまたは8つから12個に増加する。
【0021】
[0027]本開示の態様は、人工ニューラルネットワーク(たとえば、バイナリニューラルネットワーク)のコンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施することを対象とする。一態様では、メモリアレイの各列についてのアクティブ化しきい値が、重み値とアクティブ化値との関数に基づいて調整される。コンバージョンバイアス電流基準が、入力ベクトルからの入力値に基づいて計算される。
【0022】
[0028]一態様では、ビット線ポピュレーションカウント(population count)が、ビット線の出力を決定するために、コンバージョンバイアス電流基準と調整されたアクティブ化しきい値との和と比較される。ビット線ポピュレーションカウントは、メモリアレイのビット線に対応するビットセルの各出力の和である。たとえば、第1のビット線に関連する各ビットセルの出力の和(またはポピュレーションカウント)は、第1の入力として比較器に提供される。ポピュレーションカウントは、次いで、ビット線の出力を決定するために、コンバージョンバイアス電流基準と調整されたアクティブ化しきい値との和と比較される。いくつかの態様では、アクティブ化しきい値は、メモリアレイの行の数の1/2よりも小さい。行の数は、入力ベクトルのサイズに対応する。いくつかの態様では、コンバージョンバイアス電流基準は、メモリアレイの行の数の1/2よりも小さい。
【0023】
[0029]本開示の人工ニューラルネットワークは、バイナリニューラルネットワーク、マルチビットニューラルネットワーク、または超低ビット幅ニューラルネットワークであり得る。本開示の態様は、極めて低いメモリ処理および電力を指定するデバイス(たとえば、エッジデバイス)、またはバイナリフォーマットから生じるメモリ節約から恩恵を受けることができる大規模ネットワークに適用可能であり得る。本開示の態様は、バイナリニューラルネットワークを実装するコンピュートインメモリシステムにおけるXNOR演算をなくすことによって、メモリのサイズを低減し、メモリの電力消費を改善する。たとえば、基底変換は、各ビットセルにおけるXNOR関数およびそれの対応する(1つまたは複数の)トランジスタの使用を回避し、それにより、メモリのサイズを低減するために実装される。
【0024】
[0030]図1は、本開示のいくつかの態様による、人工ニューラルネットワークのコンピュートインメモリ(CIM)アレイのための積和演算を変換するために構成された中央処理ユニット(CPU)102またはマルチコアCPUを含み得る、システムオンチップ(SOC)100の例示的な一実装形態を示す。変数(たとえば、ニューラル信号およびシナプス荷重)、算出デバイスに関連するシステムパラメータ(たとえば、重みをもつニューラルネットワーク)、遅延、周波数ビン情報、およびタスク情報が、ニューラル処理ユニット(NPU)108に関連するメモリブロックに記憶されるか、CPU102に関連するメモリブロックに記憶されるか、グラフィックス処理ユニット(GPU)104に関連するメモリブロックに記憶されるか、デジタル信号プロセッサ(DSP)106に関連するメモリブロックに記憶されるか、メモリブロック118に記憶され得るか、または複数のブロックにわたって分散され得る。CPU102において実行される命令が、CPU102に関連するプログラムメモリからロードされ得るか、またはメモリブロック118からロードされ得る。
【0025】
[0031]SOC100はまた、GPU104、DSP106など、特定の機能に適合された追加の処理ブロックと、第5世代(5G)接続性、第4世代ロングタームエボリューション(4G LTE(登録商標))接続性、Wi-Fi(登録商標)接続性、USB接続性、Bluetooth(登録商標)接続性などを含み得る接続性ブロック110と、たとえば、ジェスチャーを検出および認識し得るマルチメディアプロセッサ112とを含み得る。一実装形態では、NPUは、CPU、DSP、および/またはGPUにおいて実装される。SOC100はまた、センサープロセッサ114、画像信号プロセッサ(ISP)116、および/または全地球測位システムを含み得るナビゲーションモジュール120を含み得る。
【0026】
[0032]SOC100はARM命令セットに基づき得る。本開示の一態様では、汎用プロセッサ102にロードされる命令は、重み値(たとえば、重み行列)とアクティブ化値との関数に基づいて、アレイの各列についてのアクティブ化しきい値を調整するためのコードを備え得る。汎用プロセッサ102は、入力ベクトルからの入力値に基づいてコンバージョンバイアス電流基準を計算するためのコードをさらに備え得る。
【0027】
[0033]深層学習アーキテクチャは、各層において連続的により高い抽象レベルで入力を表現するように学習し、それにより、入力データの有用な特徴表現を蓄積することによって、オブジェクト認識タスクを実施し得る。このようにして、深層学習は、旧来の機械学習の主要なボトルネックに対処する。深層学習の出現より前に、オブジェクト認識問題に対する機械学習手法は、場合によっては浅い分類器(shallow classifier)と組み合わせて、人的に設計された特徴に大きく依拠していることがある。浅い分類器は、たとえば、入力がどのクラスに属するかを予測するために、特徴ベクトル成分の重み付き和がしきい値と比較され得る2クラス線形分類器であり得る。人的に設計された特徴は、領域の専門知識をもつ技術者によって特定の問題領域に適合されたテンプレートまたはカーネルであり得る。対照的に、深層学習アーキテクチャは、人間の技術者が設計し得るものと同様である特徴を表現するように学習するが、トレーニングを通してそれを行い得る。さらに、深層ネットワークは、人間が考慮していないことがある新しいタイプの特徴を表現し、認識するように学習し得る。
【0028】
[0034]深層学習アーキテクチャは特徴の階層を学習し得る。たとえば、視覚データが提示された場合、第1の層は、エッジなど、入力ストリーム中の比較的単純な特徴を認識するように学習し得る。別の例では、聴覚データが提示された場合、第1の層は、特定の周波数におけるスペクトル電力を認識するように学習し得る。第1の層の出力を入力として取る第2の層は、視覚データの場合の単純な形状、または聴覚データの場合の音の組合せなど、特徴の組合せを認識するように学習し得る。たとえば、上位層は、視覚データ中の複雑な形状、または聴覚データ中の単語を表現するように学習し得る。さらに上位の層は、共通の視覚オブジェクトまたは発話フレーズを認識するように学習し得る。
【0029】
[0035]深層学習アーキテクチャは、自然階層構造を有する問題に適用されたとき、特にうまく機能し得る。たとえば、原動機付き車両の分類は、ホイール、フロントガラス、および他の特徴を認識するための第1の学習から恩恵を受け得る。これらの特徴は、車、トラック、および飛行機を認識するために、異なる方法で、上位層において組み合わせられ得る。
【0030】
[0036]ニューラルネットワークは、様々な結合性パターンを用いて設計され得る。フィードフォワードネットワークでは、情報が下位層から上位層に受け渡され、所与の層における各ニューロンは、上位層におけるニューロンに通信する。上記で説明されたように、フィードフォワードネットワークの連続する層において、階層表現が蓄積され得る。ニューラルネットワークはまた、リカレントまたは(トップダウンとも呼ばれる)フィードバック結合を有し得る。リカレント結合では、所与の層におけるニューロンからの出力は、同じ層における別のニューロンに通信され得る。リカレントアーキテクチャは、ニューラルネットワークに順次配信される入力データチャンクのうちの2つ以上にわたるパターンを認識するのに役立ち得る。所与の層におけるニューロンから下位層におけるニューロンへの結合は、フィードバック(またはトップダウン)結合と呼ばれる。高レベルの概念の認識が、入力の特定の低レベルの特徴を弁別することを助け得るとき、多くのフィードバック結合をもつネットワークが役立ち得る。
【0031】
[0037]ニューラルネットワークの層間の結合は全結合または局所結合であり得る。図2Aは、全結合ニューラルネットワーク202の一例を示す。全結合ニューラルネットワーク202では、第1の層におけるニューロンは、第2の層における各ニューロンが第1の層におけるあらゆるニューロンから入力を受信するように、それの出力を第2の層におけるあらゆるニューロンに通信し得る。図2Bは、局所結合ニューラルネットワーク204の一例を示す。局所結合ニューラルネットワーク204では、第1の層におけるニューロンは、第2の層における限られた数のニューロンに結合され得る。より一般的には、局所結合ニューラルネットワーク204の局所結合層は、層における各ニューロンが同じまたは同様の結合性パターンを有するように構成されるが、異なる値を有し得る結合強度で構成され得る(たとえば、210、212、214、および216)。局所結合の結合性パターンは、所与の領域中の上位層ニューロンが、ネットワークへの総入力のうちの制限された部分のプロパティにトレーニングを通して調節された入力を受信し得るので、上位層において空間的に別個の受容野を生じ得る。
【0032】
[0038]局所結合ニューラルネットワークの一例は、畳み込みニューラルネットワークである。図2Cは、畳み込みニューラルネットワーク206の一例を示す。畳み込みニューラルネットワーク206は、第2の層における各ニューロンのための入力に関連する結合強度が共有されるように構成され得る(たとえば、208)。畳み込みニューラルネットワークは、入力の空間ロケーションが有意味である問題に好適であり得る。
【0033】
[0039]1つのタイプの畳み込みニューラルネットワークは、深層畳み込みネットワーク(DCN)である。図2Dは、車載カメラなどの画像キャプチャデバイス230から入力された画像226から視覚特徴を認識するように設計されたDCN200の詳細な例を示す。本例のDCN200は、交通標識(traffic signs)と、交通標識上で与えられる数とを識別するようにトレーニングされ得る。もちろん、DCN200は、車線マーキングを識別すること、または交通信号を識別することなど、他のタスクのためにトレーニングされ得る。
【0034】
[0040]DCN200は、教師あり学習を用いてトレーニングされ得る。トレーニング中に、DCN200は、速度制限標識の画像226など、画像を提示され得、次いで、出力222を生成するために、フォワードパスが算出され得る。DCN200は、特徴抽出セクションと分類セクションとを含み得る。画像226を受信すると、畳み込み層232が、特徴マップ218の第1のセットを生成するために、畳み込みカーネル(図示せず)を画像226に適用し得る。一例として、畳み込み層232のための畳み込みカーネルは、28×28特徴マップを生成する5×5カーネルであり得る。本例では、4つの異なる特徴マップが、特徴マップ218の第1のセットにおいて生成されるので、4つの異なる畳み込みカーネルが、畳み込み層232において画像226に適用された。畳み込みカーネルは、フィルタまたは畳み込みフィルタと呼ばれることもある。
【0035】
[0041]特徴マップ218の第1のセットは、特徴マップ220の第2のセットを生成するために、最大プーリング層(図示せず)によってサブサンプリングされ得る。最大プーリング層は、特徴マップ218の第1のセットのサイズを低減する。すなわち、14×14などの特徴マップ220の第2のセットのサイズが、28×28などの特徴マップ218の第1のセットのサイズよりも小さい。低減されたサイズは、メモリ消費を低減しながら、後続の層に同様の情報を提供する。特徴マップ220の第2のセットは、特徴マップの1つまたは複数の後続のセット(図示せず)を生成するために、1つまたは複数の後続の畳み込み層(図示せず)を介して、さらに畳み込まれ得る。
【0036】
[0042]図2Dの例では、特徴マップ220の第2のセットは、第1の特徴ベクトル224を生成するために畳み込まれる。さらに、第1の特徴ベクトル224は、第2の特徴ベクトル228を生成するために、さらに畳み込まれる。第2の特徴ベクトル228の各特徴は、「標識」、「60」、および「100」など、画像226の可能な特徴に対応する数を含み得る。ソフトマックス関数(図示せず)が、第2の特徴ベクトル228中の数を確率にコンバートし得る。したがって、DCN200の出力222は、画像226が1つまたは複数の特徴を含む確率である。
【0037】
[0043]本例では、「標識」および「60」についての出力222における確率は、「30」、「40」、「50」、「70」、「80」、「90」、および「100」など、出力222の他のものの確率よりも高い。トレーニングの前に、DCN200によって生成される出力222は、不正確である可能性がある。したがって、誤差が、出力222とターゲット出力との間で計算され得る。ターゲット出力は、画像226(たとえば、「標識」および「60」)のグランドトゥルースである。次いで、DCN200の重みは、DCN200の出力222がターゲット出力とより密接に整合されるように調整され得る。
【0038】
[0044]重みを調整するために、学習アルゴリズムは、重みのための勾配ベクトルを算出し得る。勾配は、重みが調整された場合に、誤差が増加または減少する量を示し得る。最上層において、勾配は、最後から2番目の層におけるアクティブ化されたニューロンと出力層におけるニューロンとを結合する重みの値に直接対応し得る。下位層では、勾配は、重みの値と、上位層の算出された誤差勾配とに依存し得る。次いで、重みは、誤差を低減するために調整され得る。重みを調整するこの様式は、それがニューラルネットワークを通して「バックワードパス」を伴うので、「バックプロパゲーション」と呼ばれることがある。
【0039】
[0045]実際には、重みの誤差勾配は、計算された勾配が真の誤差勾配を近似するように、少数の例にわたって計算され得る。この近似方法は、確率的勾配降下(stochastic gradient descent)と呼ばれることがある。システム全体の達成可能な誤差レートが減少しなくなるまで、または誤差レートがターゲットレベルに達するまで、確率的勾配降下が繰り返され得る。学習の後に、DCNは新しい画像(たとえば、画像226の速度制限標識)を提示され得、ネットワークを通したフォワードパスは、DCNの推論または予測と見なされ得る出力222をもたらし得る。
【0040】
[0046]深層信念ネットワーク(DBN:deep belief network)は、隠れノードの複数の層を備える確率モデルである。DBNは、トレーニングデータセットの階層表現を抽出するために使用され得る。DBNは、制限ボルツマンマシン(RBM:Restricted Boltzmann Machine)の層を積層することによって取得され得る。RBMは、入力のセットにわたる確率分布を学習することができる人工ニューラルネットワークのタイプである。RBMは、各入力がそれにカテゴリー分類されるべきクラスに関する情報の不在下で確率分布を学習することができるので、RBMは、教師なし学習においてしばしば使用される。ハイブリッド教師なしおよび教師ありパラダイムを使用して、DBNの下部RBMは、教師なし様式でトレーニングされ得、特徴抽出器として働き得、上部RBMは、(前の層からの入力とターゲットクラスとの同時分布上で)教師あり様式でトレーニングされ得、分類器として働き得る。
【0041】
[0047]深層畳み込みネットワーク(DCN)は、追加のプーリング層および正規化層で構成された、畳み込みネットワークのネットワークである。DCNは、多くのタスクに関して最先端の性能を達成している。DCNは、入力と出力ターゲットの両方が、多くの標本について知られており、勾配降下方法の使用によってネットワークの重みを変更するために使用される、教師あり学習を使用してトレーニングされ得る。
【0042】
[0048]DCNは、フィードフォワードネットワークであり得る。さらに、上記で説明されたように、DCNの第1の層におけるニューロンから次の上位層におけるニューロンのグループへの結合は、第1の層におけるニューロンにわたって共有される。DCNのフィードフォワードおよび共有結合は、高速処理のために活用され得る。DCNの算出負担は、たとえば、リカレントまたはフィードバック結合を備える同様のサイズのニューラルネットワークのそれよりもはるかに少ないことがある。
【0043】
[0049]畳み込みネットワークの各層の処理は、空間的に不変のテンプレートまたは基底投射と見なされ得る。入力が、カラー画像の赤色、緑色、および青色チャネルなど、複数のチャネルに最初に分解された場合、その入力に関してトレーニングされた畳み込みネットワークは、画像の軸に沿った2つの空間次元と、色情報をキャプチャする第3の次元とをもつ、3次元であると見なされ得る。畳み込み結合の出力は、後続の層において特徴マップを形成すると考えられ、特徴マップ(たとえば、220)の各要素が、前の層(たとえば、特徴マップ218)における様々なニューロンから、および複数のチャネルの各々から入力を受信し得る。特徴マップにおける値は、整流(rectification)、max(0,x)など、非線形性を用いてさらに処理され得る。隣接するニューロンからの値は、さらにプールされ得、これは、ダウンサンプリングに対応し、さらなる局所不変性と次元削減とを与え得る。白色化に対応する正規化はまた、特徴マップにおけるニューロン間のラテラル抑制によって適用され得る。
【0044】
[0050]深層学習アーキテクチャの性能は、より多くのラベリングされたデータポイントが利用可能となるにつれて、または算出能力が増加するにつれて、向上し得る。現代の深層ニューラルネットワークは、ほんの15年前に一般的な研究者にとって利用可能であったものより数千倍も大きいコンピューティングリソースを用いて、ルーチン的にトレーニングされる。新しいアーキテクチャおよびトレーニングパラダイムが、深層学習の性能をさらに高め得る。整流された線形ユニット(rectified linear unit)は、勾配消失(vanishing gradients)として知られるトレーニング問題を低減し得る。新しいトレーニング技法は、過学習(over-fitting)を低減し、したがって、より大きいモデルがより良い汎化を達成することを可能にし得る。カプセル化技法は、所与の受容野においてデータを抽出し、全体的性能をさらに高め得る。
【0045】
[0051]図3は、深層畳み込みネットワーク350を示すブロック図である。深層畳み込みネットワーク350は、結合性および重み共有に基づく、複数の異なるタイプの層を含み得る。図3に示されているように、深層畳み込みネットワーク350は、畳み込みブロック354A、354Bを含む。畳み込みブロック354A、354Bの各々は、畳み込み層(CONV)356と、正規化層(LNorm)358と、最大プーリング層(MAX POOL)360とで構成され得る。
【0046】
[0052]畳み込み層356は、1つまたは複数の畳み込みフィルタを含み得、これは、特徴マップを生成するために入力データに適用され得る。畳み込みブロック354A、354Bのうちの2つのみが示されているが、本開示はそのように限定しておらず、代わりに、設計選好に従って、任意の数の畳み込みブロック354A、354Bが深層畳み込みネットワーク350中に含まれ得る。正規化層358は、畳み込みフィルタの出力を正規化し得る。たとえば、正規化層358は、白色化またはラテラル抑制を行い得る。最大プーリング層360は、局所不変性および次元削減のために、空間にわたってダウンサンプリングアグリゲーションを行い得る。
【0047】
[0053]たとえば、深層畳み込みネットワークの並列フィルタバンクは、高性能および低電力消費を達成するために、SOC100のCPU102またはGPU104にロードされ得る。代替実施形態では、並列フィルタバンクは、SOC100のDSP106またはISP116にロードされ得る。さらに、深層畳み込みネットワーク350は、それぞれ、センサーおよびナビゲーションに専用の、センサープロセッサ114およびナビゲーションモジュール120など、SOC100上に存在し得る他の処理ブロックにアクセスし得る。
【0048】
[0054]深層畳み込みネットワーク350はまた、1つまたは複数の全結合層362(FC1およびFC2)を含み得る。深層畳み込みネットワーク350は、ロジスティック回帰(LR)層364をさらに含み得る。深層畳み込みネットワーク350の各層356、358、360、362、364の間には、更新されるべき重み(図示せず)がある。層(たとえば、356、358、360、362、364)の各々の出力は、畳み込みブロック354Aのうちの第1のものにおいて供給された入力データ352(たとえば、画像、オーディオ、ビデオ、センサーデータおよび/または他の入力データ)から階層特徴表現を学習するために、深層畳み込みネットワーク350中の層(たとえば、356、358、360、362、364)のうちの後続の層の入力として働き得る。深層畳み込みネットワーク350の出力は、入力データ352についての分類スコア366である。分類スコア366は、確率のセットであり得、ここで、各確率は、入力データが特徴のセットからの特徴を含む確率である。
【0049】
[0055]人工ニューラルネットワーク(たとえば、バイナリニューラルネットワーク)のメモリストレージは、重みおよびニューロンアクティブ化が-1または+1([-1,+1]空間)に2値化されるとき、著しく低減され得る。しかしながら、デジタル相補型金属酸化物半導体(CMOS)論理は、[0,1]空間において動作する。したがって、バイナリ実装中に、[0,1]基底を使用するデジタルCMOSデバイスと、[-1,+1]基底を使用するバイナリニューラルネットワークとの間で、変換が行われる。
【0050】
[0056]メモリセルが、排他的否定OR(XNOR)関数をサポートするように構成され得る。たとえば、表1~表3(たとえば、真理値表)が、2値化された[-1,+1]空間におけるバイナリ乗算への、[0,1]空間におけるバイナリニューラルネットワークのマッピングを示す。2入力論理関数が、真理値表1~3に示されている。
【0051】
[0057]表1は、2値化された[-1,+1]空間におけるバイナリ乗算の一例を示す。たとえば、2値化された[-1,+1]空間における乗算は、-1*-1、-1*+1、+1*-1、+1*+1の4ビット出力(たとえば、「1、-1、-1、1」)を生成する。
【0052】
【表1】
【0053】
[0058]表2は、XNOR実装の一例を示す。メモリセルは、バイナリ出力を生成するために、第1の入力値(たとえば、バイナリニューロンアクティブ化)および第2の入力値(たとえば、バイナリシナプス荷重)に対してXNOR関数を実施するように構成され得る。たとえば、XNOR関数は入力値のすべてが真であるとき、または入力値のすべてが偽であるときのみ、真である。入力のうちのいくつかが真であり、他の入力が偽である場合、XNOR関数の出力は偽である。したがって、表2に示されているように、両方の入力(たとえば、第1の入力および第2の入力)が偽である(たとえば、第1の入力が0であり、第2の入力が0である)とき、出力は真(たとえば、1)である。第1の入力が偽(0)であり、第2の入力が真(1)であるとき、出力は偽(0)である。第1の入力が真(1)であり、第2の入力が偽(0)であるとき、出力は偽(0)である。第1の入力が真(1)であり、第2の入力が真(1)であるとき、出力は真(1)である。したがって、2つの入力をもつXNOR関数のための真理値表は、「1、0、0、1」のバイナリ出力を有する。
【0054】
[0059]したがって、2値化された[-1,+1]空間におけるバイナリ乗算は、[0,1]空間におけるXNORのバイナリ出力にマッピングする。たとえば、2値化された[-1,+1]空間の4ビット出力における「1」は、XNOR関数のバイナリ出力における「1」にマッピングし、2値化された[-1,+1]空間の4ビット出力における「-1」は、XNOR関数のバイナリ出力における「0」にマッピングする。
【0055】
【表2】
【0056】
【表3】
【0057】
[0060]対照的に、2値化された[-1,+1]空間におけるバイナリ乗算は、表3に示されている2値化された[0,1]空間におけるバイナリ乗算にマッピングしない。たとえば、表3は、「0、0、0、1」の4ビット出力を生成するための2値化された[0,1]空間における乗算を示し、これは、2値化された[-1,+1]空間における「1、-1、-1、1」の4ビット出力にマッピングしない。たとえば、「0、0、0、1」の4ビット出力は、1つのみの真のビット(たとえば、最後のビット)を含むが、「1、-1、-1、1」の4ビット出力は、2つの真のビット(たとえば、第1のビットおよび最後のビット)を含む。
【0058】
[0061]従来、コンピュートインメモリシステムを用いて実装されるバイナリニューラルネットワークは、各ビットセルにおけるXNORを算出することと、出力値を生成するために各ビット線に沿って結果を加算することとによって、実現される。しかしながら、各ビットセル中にXNOR関数を追加することは費用がかかる。たとえば、メモリ(たとえば、SRAM)中の各セルについてのトランジスタの数が、6つまたは8つから12個に増加し、これは、セルサイズおよび電力消費を著しく増加させる。
【0059】
[0062]本開示の態様は、バイナリニューラルネットワークコンピュートインメモリアレイにおけるXNORをなくすことによって、メモリのサイズを低減し、メモリの電力消費を改善することを対象とする。一態様では、コンピュートインメモリアレイの各列についてのアクティブ化しきい値が、各ビットセルにおけるXNOR関数およびそれの対応する(1つまたは複数の)トランジスタの使用を回避するために調整される。たとえば、より小さいメモリビットセルをもつより小さいメモリ(たとえば、8トランジスタSRAM(eight transistor SRAM))が、コンピュートインメモリバイナリニューラルネットワークのために使用され得る。
【0060】
[0063]図4は、本開示の態様による、人工ニューラルネットワークのコンピュートインメモリ(CIM)アレイのための例示的なアーキテクチャ400を示す。コンピュートインメモリは、メモリアレイにおいて積和演算を実施する方法である。メモリアレイは、ワード線404(またはWL1)、405(またはWL2)...406(またはWLM)、ならびにビット線401(またはBL1)、402(またはBL2)...403(またはBLN)を含む。重み(たとえば、バイナリシナプス荷重値)が、メモリアレイのビットセルに記憶される。入力アクティブ化(たとえば、入力ベクトルであり得る入力値)は、ワード線上にある。乗算は、各ビットセルにおいて起こり、乗算の結果は、ビット線を通して出力される。たとえば、乗算は、各ビットセルにおいて重みに入力アクティブ化を乗算することを含む。ビット線または列(たとえば、401)に関連する、電圧/電流加算デバイスなどの加算デバイス(図示せず)が、ビット線の出力(たとえば、電荷、電流または電圧)を加算し、その結果(たとえば、出力)をアナログデジタル変換器(ADC)に受け渡す。たとえば、各ビット線の和が、各ビット線のビットセルのそれぞれの出力から計算される。
【0061】
[0064]本開示の一態様では、アクティブ化しきい値調整が、面積効率を改善するために、各ビットセルにおいての代わりに、(ビット線に対応する)各列において行われる。
【0062】
[0065]従来、重みおよびニューロンアクティブ化が-1または+1([-1,+1]空間)に2値化されるバイナリニューラルネットワーク実装で開始して、積和演算は、XNOR結果を伴う(ビットセルにおける)XNOR演算と、XNOR結果のポピュレーションカウントとになる。たとえば、ビット線のポピュレーションカウントは、ビット線の各ビットセルの正(たとえば、「1」)の結果の和を含む。ADCは、アクティブ化しきい値を使用することによって、比較器のように機能する。たとえば、ポピュレーションカウントは、ADCによってアクティブ化しきい値または基準と比較される。ポピュレーションカウントがアクティブ化しきい値よりも大きい場合、ビット線の出力は「1」である。そうではなく、ポピュレーションカウントがアクティブ化しきい値よりも小さいかまたはそれに等しい場合、ビット線の出力は「0」である。しかしながら、メモリのサイズを低減するために、各ビットセルにおけるXNOR関数およびそれの対応する(1つまたは複数の)トランジスタをなくすことが望ましい。アクティブ化しきい値を調整するための特定の技法は以下の通りである。
【0063】
[0066]ニューラルネットワーク(たとえば、バイナリニューラルネットワーク)の畳み込み層が、アレイ(たとえば、コンピュートインメモリアレイ)に編成されたセル(たとえば、ビットセル)を含み得る。セルは、ゲートデバイスを含み、そこにおいて、ゲートデバイス中に存在する電荷レベルが、アレイの記憶された重みを表現する。M個の行(たとえば、入力ベクトルのサイズ)およびN個の列のアレイを有するトレーニングされたXNORバイナリニューラルネットワークが、バイナリ値[-1,+1]の重みであるM×Nバイナリシナプス荷重Wijと、N個のアクティブ化しきい値Cjとを含む。アレイへの入力は、ワード線に対応し得、出力は、ビット線に対応し得る。たとえば、バイナリ値[-1,+1]の入力である入力アクティブ化Xiは、X1、X2...XMである。対応する重みとの入力の積の和
【0064】
【数1】
【0065】
は、重み付き和
【0066】
【数2】
【0067】
として知られる。
【0068】
[0067]たとえば、重み付き和がアクティブ化しきい値Cjよりも大きいとき、出力は1に等しい。他の場合、出力は0に等しい。XNORバイナリニューラルネットワークは、メモリのサイズを低減するために、各ビットセルにおけるXNOR関数およびそれの対応する(1つまたは複数の)トランジスタをなくしながら、[0,1]空間における非XNORバイナリニューラルネットワーク(non-XNOR binary neural network)にマッピングされ得る。一態様では、XNORバイナリニューラルネットワークは、以下のように、各列のアクティブ化しきい値Cjの調整を伴う非XNORバイナリニューラルネットワークにマッピングされ得る。
式1は、XNORバイナリニューラルネットワークに関して、対応する重みとの入力の積の和とアクティブ化しきい値Cjとの間の関係を示す。
【0069】
【数3】
【0070】
ここで、
- Xi(たとえば、X1、X2...XM)は、バイナリ値[-1,+1]の入力である
- Wijは、バイナリ値[-1,+1]の重み(たとえば、M×N行列)である、
- Yj(たとえば、Y1、Y2...YN)は、バイナリ値[-1,+1]のビット線の出力である
[0068]従来、コンピュートインメモリバイナリニューラルネットワーク実装は、各ビットセルにおけるXNOR演算を完了することと、各ビット線についての結果を加算することとによって、達成される。しかしながら、各ビットセル中にXNOR関数を追加することは、レイアウト面積を増加させ、電力消費を増加させる。たとえば、メモリ(たとえば、SRAM)中の各セル中のトランジスタの数が、6つまたは8つから12個に増加する。したがって、本開示の態様は、アクティブ化しきい値調整を使用して[-1,+1]空間から[0,1]空間に人工ニューラルネットワーク(たとえば、バイナリニューラルネットワーク)のコンピュートインメモリアレイのための積和演算を変換することを対象とする。
【0071】
[0069]バイナリニューラルネットワークは、[-1,+1]空間(ここで、
【0072】
【数4】
【0073】
)から[0,1]空間にコンバートされ、[0,1]空間におけるビット線の出力は、以下のように、異なるしきい値(たとえば、その導出は以下で説明される)と比較される。
【0074】
【数5】
【0075】
【0076】
【数6】
【0077】
は、バイナリ値[0,1]の入力である
【0078】
【数7】
【0079】
は、バイナリ値[0,1]の重みである
ここで、
【0080】
【数8】
【0081】
は、[0,1]空間における調整可能なアクティブ化(または調整されたアクティブ化しきい値)に対応し、
【0082】
【数9】
【0083】
は、[0,1]空間におけるコンバージョンバイアス(たとえば、コンバージョンバイアス電流基準)を表現する。
【0084】
[0070]本明細書で説明されるアクティブ化しきい値を調整することは、XNOR機能が実装されたかのように同じ結果を得ながら、各ビットセルにおけるXNOR機能を実装することを回避すること/控えることを可能にする。アクティブ化しきい値を調整することは、より単純なおよびより小さいメモリビットセル(たとえば、8トランジスタ(8T)SRAM)の使用を可能にする。
【0085】
[0071]以下の式(3および4)は、[-1,+1]空間におけるネットワークを[0,1]空間にマッピングするための変数を含む。
【0086】
【数10】
【0087】
[0072]式3および式4の値を式1に入れると、調整されたアクティブ化しきい値が、[-1,+1]空間と[0,1]空間との間のコンバージョンまたは変換を通して決定され得る。以下は、調整されたアクティブ化しきい値の導出である。
【0088】
【数11】
【0089】
式5を展開すると、
【0090】
【数12】
【0091】
(式1の場合のように)バイナリ値[-1,+1]のビット線の出力Yjを、[-1,+1]空間におけるアクティブ化しきい値Cjと比較すると、
【0092】
【数13】
【0093】
[0,1]空間におけるビット線ごとのポピュレーションカウント
【0094】
【数14】
【0095】
を取得するために、式6におけるビット線の出力Yjの値を式1に入れると、
【0096】
【数15】
【0097】
[0073]式9における[0,1]空間におけるビット線ごとのポピュレーションカウント
【0098】
【数16】
【0099】
を、[-1,+1]空間におけるビット線ごとのポピュレーションカウント
【0100】
【数17】
【0101】
にマッピングすると、[-1,+1]空間におけるN個のアクティブ化しきい値Cjは、[0,1]空間における調整可能なアクティブ化
【0102】
【数18】
【0103】
ならびにコンバージョンバイアス
【0104】
【数19】
【0105】
にマッピングする。たとえば、XNOR関数およびそれの対応する(1つまたは複数の)トランジスタをなくしながら、[0,1]空間における非XNORバイナリニューラルネットワークを達成するために、[0,1]空間における、調整可能なアクティブ化
【0106】
【数20】
【0107】
ならびにコンバージョンバイアス
【0108】
【数21】
【0109】
が使用される。
【0110】
[0074]式9を参照すると、関数
【0111】
【数22】
【0112】
は、調整可能なアクティブ化
【0113】
【数23】
【0114】
を決定するために使用される。たとえば、要素
【0115】
【数24】
【0116】
は、調整可能なアクティブ化
【0117】
【数25】
【0118】
のアクティブ化値に対応する。調整可能なアクティブ化
【0119】
【数26】
【0120】
は、アクティブ化入力Xiに依存しない。また、調整可能なアクティブ化
【0121】
【数27】
【0122】
は、アクティブ化しきい値Cjを調整するために変更され得る所定のパラメータ(たとえば、バイナリシナプス荷重Wij)からなる。
【0123】
[0075]関数
【0124】
【数28】
【0125】
は、コンバージョンバイアス
【0126】
【数29】
【0127】
を決定するために使用される。コンバージョンバイアス
【0128】
【数30】
【0129】
は、入力アクティブ化のみに依存する。これは、新しい入力が受信されるとき、コンバージョンバイアスが常に変化していることを意味する。
【0130】
[0076]たとえば、Cj=0であり、
【0131】
【数31】
【0132】
であり、
【0133】
【数32】
【0134】
であるとき、
【0135】
【数33】
【0136】
【0137】
【数34】
【0138】
および
【0139】
【数35】
【0140】
の値は、式9に関して以下のように計算される。
【0141】
【数36】
【0142】
[0077]同様に、
【0143】
【数37】
【0144】
であり、
【0145】
【数38】
【0146】
であり、
【0147】
【数39】
【0148】
であるとき、
【0149】
【数40】
【0150】
【0151】
【数41】
【0152】
および
【0153】
【数42】
【0154】
の値は、式9に関して以下のように計算される。
【0155】
【数43】
【0156】
[0078]いくつかの態様では、関数
【0157】
【数44】
【0158】
は、バイナリ値の重み
【0159】
【数45】
【0160】
を1に等しく設定することによって、基準列(たとえば、基準として使用される、N個のビット線の一部でないビット線)から、コンバージョンバイアス
【0161】
【数46】
【0162】
を生成するために使用され得る。
1に等しい
【0163】
【数47】
【0164】
の値を式9中に入れると、得られた式は以下の通りである。
【0165】
【数48】
【0166】
[0079]ポピュレーションカウントは、
【0167】
【数49】
【0168】
に等しく、これは、アクティブ化電流をオフセットするために使用され得る。したがって、単一の列のみが、メモリアレイ全体についての基準バイアス値またはコンバージョンバイアスを決定するために指定される。
【0169】
[0080]図5は、本開示の態様による、人工ニューラルネットワークのコンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施するための例示的なアーキテクチャ500を示す。アーキテクチャは、基準列502と、比較器504と、(メモリアレイの列に対応する)ビット線506と、(メモリアレイの行に対応する)ワード線508とを含む、メモリアレイを含む。入力アクティブ化は、ワード線を介して受信される。一例では、入力アクティブ化Xiのバイナリ値は、10101011である。
【0170】
[0081]乗算(たとえば、Xiij)は、各ビットセルにおいて起こり、各ビットセルからの乗算の結果は、ビット線506を通して出力される。ビット線506の各々に関連する加算デバイス510が、メモリアレイのビットセルの各出力を加算し、その結果を比較器504に受け渡す。比較器504は、図4に示されているアナログデジタル変換器(ADC)の一部であり得る。一態様では、第1のビット線に関連する各ビットセルの出力は、第2のビット線に関連する各ビットセルの出力とは別個に加算される。
【0171】
[0082]アクティブ化しきい値調整は、面積効率を改善するために、各ビットセルにおいての代わりに、(ビット線に対応する)各列において行われる。たとえば、第1のビット線に関連する各ビットセルの出力の和(またはポピュレーションカウント)は、第1の入力として比較器504に提供される。比較器の第2の入力が、調整可能なアクティブ化
【0172】
【数50】
【0173】
と、コンバージョンバイアス
【0174】
【数51】
【0175】
(たとえば、コンバージョンバイアス電流基準)との和を含む。たとえば、コンバージョンバイアス
【0176】
【数52】
【0177】
は、ビット線506の各々について基準(たとえば、基準列502)にプログラムされ得る。ポピュレーションカウントが、調整可能なアクティブ化
【0178】
【数53】
【0179】
と、コンバージョンバイアス
【0180】
【数54】
【0181】
との和よりも大きいとき、第1のビット線の出力に対応する比較器504の出力は「1」である。そうではなく、ポピュレーションカウントが、調整可能なアクティブ化
【0182】
【数55】
【0183】
と、コンバージョンバイアス
【0184】
【数56】
【0185】
との和よりも小さいかまたはそれに等しい場合、第1のビット線の出力に対応する比較器の出力は「0」である。したがって、各ビット線ポピュレーションカウントは、調整可能なアクティブ化
【0186】
【数57】
【0187】
と、コンバージョンバイアス
【0188】
【数58】
【0189】
との和と比較される。
【0190】
[0083]図6は、本開示の態様による、人工ニューラルネットワークのコンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施するための方法600を示す。図6に示されているように、ブロック602において、コンピュートインメモリアレイの各列について生成されるアクティブ化しきい値が、重み値とアクティブ化値との関数に基づいて調整され得る。ブロック604において、コンバージョンバイアス電流基準が、入力ベクトルからコンピュートインメモリアレイへの入力値に基づいて計算され、コンピュートインメモリアレイは、重み値のセットでプログラムされる。調整されたアクティブ化しきい値およびコンバージョンバイアス電流基準の各々は、コンピュートインメモリアレイの出力値を決定するためのしきい値として使用される。コンピュートインメモリアレイは、列と行の両方を有する。
【0191】
[0084]本開示のさらなる態様によれば、人工ニューラルネットワークのコンピュートインメモリアレイの列しきい値を調整することによってXNOR等価演算を実施するための装置が説明される。装置は、重み値とアクティブ化値との関数に基づいて、アレイの各列についてのアクティブ化しきい値を調整するための手段を含む。調整手段は、深層畳み込みネットワーク200、深層畳み込みネットワーク350、畳み込み層232、SoC100、CPU102、アーキテクチャ500、アーキテクチャ400、および/または畳み込みブロック354Aを含む。装置は、入力ベクトルからの入力値に基づいて、コンバージョンバイアス電流基準を計算するための手段をさらに含む。計算手段は、深層畳み込みネットワーク200、深層畳み込みネットワーク350、畳み込み層232、SoC100、CPU102、アーキテクチャ500、アーキテクチャ400、および/または畳み込みブロック354Aを含む。
【0192】
[0085]装置は、ビット線の出力を決定するために、ビット線ポピュレーションカウントを、コンバージョンバイアス電流基準と調整されたアクティブ化しきい値との和と比較するための手段をさらに含む。比較手段は、図5の比較器504、および/または図4のアナログデジタル変換器(ADC)を含む。別の態様では、上述の手段は、上述の手段によって具陳された機能を実施するように構成された任意のモジュールまたは任意の装置であり得る。
【0193】
[0086]上記で説明された方法の様々な動作は、対応する機能を実施することが可能な任意の好適な手段によって実施され得る。それらの手段は、限定はしないが、回路、特定用途向け集積回路(ASIC)、またはプロセッサを含む、様々な(1つまたは複数の)ハードウェアおよび/またはソフトウェア構成要素および/またはモジュールを含み得る。概して、図に示されている動作がある場合、それらの動作は、同様の番号をもつ対応するカウンターパートのミーンズプラスファンクション構成要素を有し得る。
【0194】
[0087]本明細書で使用される「決定すること」という用語は、多種多様なアクションを包含する。たとえば、「決定すること」は、計算すること、算出すること、処理すること、導出すること、調査すること、ルックアップすること(たとえば、テーブル、データベースまたは別のデータ構造においてルックアップすること)、確認することなどを含み得る。さらに、「決定すること」は、受信すること(たとえば、情報を受信すること)、アクセスすること(たとえば、メモリ中のデータにアクセスすること)などを含み得る。さらに、「決定すること」は、解決すること、選択すること、選定すること、確立することなどを含み得る。
【0195】
[0088]本明細書で使用される、項目のリスト「のうちの少なくとも1つ」を指す句は、単一のメンバーを含む、それらの項目の任意の組合せを指す。一例として、「a、b、またはcのうちの少なくとも1つ」は、a、b、c、a-b、a-c、b-c、およびa-b-cを包含するものとする。
【0196】
[0089]本開示に関連して説明された様々な例示的な論理ブロック、モジュールおよび回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ信号(FPGA)または他のプログラマブル論理デバイス(PLD)、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素、あるいは本明細書で説明された機能を実施するように設計されたそれらの任意の組合せを用いて実装または実施され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の市販のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。
【0197】
[0090]本開示に関連して説明された方法またはアルゴリズムのステップは、ハードウェアで直接実施されるか、プロセッサによって実行されるソフトウェアモジュールで実施されるか、またはその2つの組合せで実施され得る。ソフトウェアモジュールは、当技術分野で知られている任意の形態の記憶媒体中に常駐し得る。使用され得る記憶媒体のいくつかの例は、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、フラッシュメモリ、消去可能プログラマブル読取り専用メモリ(EPROM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM(登録商標))、レジスタ、ハードディスク、リムーバブルディスク、CD-ROMなどを含む。ソフトウェアモジュールは、単一の命令、または多数の命令を備え得、いくつかの異なるコードセグメント上で、異なるプログラム間で、および複数の記憶媒体にわたって分散され得る。記憶媒体は、プロセッサがその記憶媒体から情報を読み取ることができ、その記憶媒体に情報を書き込むことができるように、プロセッサに結合され得る。代替として、記憶媒体はプロセッサに一体化され得る。
【0198】
[0091]本明細書で開示される方法は、説明された方法を達成するための1つまたは複数のステップまたはアクションを備える。本方法のステップおよび/またはアクションは、特許請求の範囲から逸脱することなく、互いに交換され得る。言い換えれば、ステップまたはアクションの特定の順序が指定されない限り、特定のステップおよび/またはアクションの順序および/または使用は、特許請求の範囲から逸脱することなく変更され得る。
【0199】
[0092]説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ハードウェアで実装される場合、例示的なハードウェア構成はデバイス中に処理システムを備え得る。処理システムは、バスアーキテクチャを用いて実装され得る。バスは、処理システムの特定の適用例および全体的な設計制約に応じて、任意の数の相互接続バスおよびブリッジを含み得る。バスは、プロセッサと、機械可読媒体と、バスインターフェースとを含む様々な回路を互いにリンクし得る。バスインターフェースは、ネットワークアダプタを、特に、バスを介して処理システムに接続するために使用され得る。ネットワークアダプタは、信号処理機能を実装するために使用され得る。いくつかの態様では、ユーザインターフェース(たとえば、キーパッド、ディスプレイ、マウス、ジョイスティックなど)もバスに接続され得る。バスはまた、タイミングソース、周辺機器、電圧調整器、電力管理回路など、様々な他の回路をリンクし得るが、これらの回路は当技術分野でよく知られており、したがってこれ以上説明されない。
【0200】
[0093]プロセッサは、機械可読媒体に記憶されたソフトウェアの実行を含む、バスおよび一般的な処理を管理することを担当し得る。プロセッサは、1つまたは複数の汎用および/または専用プロセッサを用いて実装され得る。例は、マイクロプロセッサと、マイクロコントローラと、DSPプロセッサと、ソフトウェアを実行することができる他の回路とを含む。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語などの名称にかかわらず、命令、データ、またはそれらの任意の組合せを意味すると広く解釈されたい。機械可読媒体は、例として、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、レジスタ、磁気ディスク、光ディスク、ハードドライブ、または他の好適な記憶媒体、あるいはそれらの任意の組合せを含み得る。機械可読媒体はコンピュータプログラム製品において実施され得る。コンピュータプログラム製品はパッケージング材料を備え得る。
【0201】
[0094]ハードウェア実装形態では、機械可読媒体は、プロセッサとは別個の処理システムの一部であり得る。しかしながら、当業者なら容易に理解するように、機械可読媒体またはその任意の部分は処理システムの外部にあり得る。例として、機械可読媒体は、すべてバスインターフェースを介してプロセッサによってアクセスされ得る、伝送線路、データによって変調された搬送波、および/またはデバイスとは別個のコンピュータ製品を含み得る。代替的に、または追加として、機械可読媒体またはその任意の部分は、キャッシュおよび/または汎用レジスタファイルがそうであり得るように、プロセッサに統合され得る。局所構成要素など、説明された様々な構成要素は、特定のロケーションを有するものとして説明され得るが、それらはまた、分散コンピューティングシステムの一部として構成されているいくつかの構成要素など、様々な方法で構成され得る。
【0202】
[0095]処理システムは、すべて外部バスアーキテクチャを介して他のサポート回路と互いにリンクされる、プロセッサ機能を提供する1つまたは複数のマイクロプロセッサと、機械可読媒体の少なくとも一部を提供する外部メモリとをもつ汎用処理システムとして構成され得る。代替的に、処理システムは、本明細書で説明されたニューロンモデルとニューラルシステムのモデルとを実装するための1つまたは複数の神経形態学的プロセッサを備え得る。別の代替として、処理システムは、プロセッサをもつ特定用途向け集積回路(ASIC)と、バスインターフェースと、ユーザインターフェースと、サポート回路と、単一のチップに統合された機械可読媒体の少なくとも一部分とを用いて、あるいは1つまたは複数のフィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理デバイス(PLD)、コントローラ、状態機械、ゲート論理、個別ハードウェア構成要素、もしくは他の好適な回路、または本開示全体にわたって説明された様々な機能を実施することができる回路の任意の組合せを用いて、実装され得る。当業者は、特定の適用例と、全体的なシステムに課される全体的な設計制約とに応じて、どのようにしたら処理システムについて説明された機能を最も良く実装し得るかを理解されよう。
【0203】
[0096]機械可読媒体はいくつかのソフトウェアモジュールを備え得る。ソフトウェアモジュールは、プロセッサによって実行されたときに、処理システムに様々な機能を実施させる命令を含む。ソフトウェアモジュールは、送信モジュールと受信モジュールとを含み得る。各ソフトウェアモジュールは、単一の記憶デバイス中に常駐するか、または複数の記憶デバイスにわたって分散され得る。例として、トリガイベントが発生したとき、ソフトウェアモジュールがハードドライブからRAMにロードされ得る。ソフトウェアモジュールの実行中、プロセッサは、アクセス速度を高めるために、命令のいくつかをキャッシュにロードし得る。次いで、1つまたは複数のキャッシュラインが、プロセッサによる実行のために汎用レジスタファイルにロードされ得る。以下でソフトウェアモジュールの機能に言及する場合、そのような機能は、そのソフトウェアモジュールからの命令を実行したときにプロセッサによって実装されることが理解されよう。さらに、本開示の態様が、そのような態様を実装するプロセッサ、コンピュータ、機械、または他のシステムの機能に改善を生じることを諒解されたい。
【0204】
[0097]ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。さらに、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線(IR)、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびBlu-ray(登録商標)ディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。したがって、いくつかの態様では、コンピュータ可読媒体は非一時的コンピュータ可読媒体(たとえば、有形媒体)を備え得る。さらに、他の態様では、コンピュータ可読媒体は一時的コンピュータ可読媒体(たとえば、信号)を備え得る。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【0205】
[0098]したがって、いくつかの態様は、本明細書で提示される動作を実施するためのコンピュータプログラム製品を備え得る。たとえば、そのようなコンピュータプログラム製品は、本明細書で説明された動作を実施するために1つまたは複数のプロセッサによって実行可能である命令をその上に記憶した(および/または符号化した)コンピュータ可読媒体を備え得る。いくつかの態様では、コンピュータプログラム製品はパッケージング材料を含み得る。
【0206】
[0099]さらに、本明細書で説明された方法および技法を実施するためのモジュールおよび/または他の適切な手段は、適用可能な場合にユーザ端末および/または基地局によってダウンロードされ、および/または他の方法で取得され得ることを諒解されたい。たとえば、そのようなデバイスは、本明細書で説明された方法を実施するための手段の転送を可能にするためにサーバに結合され得る。代替的に、本明細書で説明された様々な方法は、ユーザ端末および/または基地局が記憶手段(たとえば、RAM、ROM、コンパクトディスク(CD)またはフロッピーディスクなどの物理記憶媒体など)をデバイスに結合するかまたは与えると様々な方法を得ることができるように、記憶手段によって提供され得る。その上、本明細書で説明された方法および技法をデバイスに提供するための任意の他の好適な技法が利用され得る。
【0207】
[00100]特許請求の範囲は、上記で示された厳密な構成および構成要素に限定されないことを理解されたい。上記で説明された方法および装置の構成、動作、および詳細において、特許請求の範囲から逸脱することなく、様々な修正、変更、および変形が行われ得る。
図1
図2A
図2B
図2C
図2D
図3
図4
図5
図6
【国際調査報告】