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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7427030人工ニューラル・ネットワークのトレーニング方法、装置、プログラム
<>
  • 特許-人工ニューラル・ネットワークのトレーニング方法、装置、プログラム 図1
  • 特許-人工ニューラル・ネットワークのトレーニング方法、装置、プログラム 図2
  • 特許-人工ニューラル・ネットワークのトレーニング方法、装置、プログラム 図3
  • 特許-人工ニューラル・ネットワークのトレーニング方法、装置、プログラム 図4
  • 特許-人工ニューラル・ネットワークのトレーニング方法、装置、プログラム 図5
  • 特許-人工ニューラル・ネットワークのトレーニング方法、装置、プログラム 図6
  • 特許-人工ニューラル・ネットワークのトレーニング方法、装置、プログラム 図7
  • 特許-人工ニューラル・ネットワークのトレーニング方法、装置、プログラム 図8
  • 特許-人工ニューラル・ネットワークのトレーニング方法、装置、プログラム 図9
  • 特許-人工ニューラル・ネットワークのトレーニング方法、装置、プログラム 図10
  • 特許-人工ニューラル・ネットワークのトレーニング方法、装置、プログラム 図11
  • 特許-人工ニューラル・ネットワークのトレーニング方法、装置、プログラム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-25
(45)【発行日】2024-02-02
(54)【発明の名称】人工ニューラル・ネットワークのトレーニング方法、装置、プログラム
(51)【国際特許分類】
   G06N 3/08 20230101AFI20240126BHJP
   G06N 3/065 20230101ALI20240126BHJP
   G06N 3/04 20230101ALI20240126BHJP
【FI】
G06N3/08
G06N3/065
G06N3/04
【請求項の数】 26
(21)【出願番号】P 2021568206
(86)(22)【出願日】2020-05-12
(65)【公表番号】
(43)【公表日】2022-07-21
(86)【国際出願番号】 EP2020063194
(87)【国際公開番号】W WO2020229468
(87)【国際公開日】2020-11-19
【審査請求日】2022-10-21
(31)【優先権主張番号】16/413,738
(32)【優先日】2019-05-16
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】レガロ-ブルドー、マニュエル
(72)【発明者】
【氏名】カーダム-アルジャメー、リドゥアン
(72)【発明者】
【氏名】カル、ルカス
(72)【発明者】
【氏名】フランシス、ピアー アンドレア
(72)【発明者】
【氏名】トイフル、トーマス
(72)【発明者】
【氏名】セバスティアン、アブ
(72)【発明者】
【氏名】エレフセリウー、エヴァンゲロス、スタブロス
【審査官】▲はま▼中 信行
(56)【参考文献】
【文献】特開2018-120433(JP,A)
【文献】特開2018-206376(JP,A)
【文献】米国特許出願公開第2019/0122105(US,A1)
【文献】米国特許出願公開第2016/0358075(US,A1)
【文献】米国特許出願公開第2017/0228345(US,A1)
【文献】Takao Marukame et al.,Proposal, analysis and demonstration of Analog/Digital-mixed Neural Networks based on memristive device arrays,Proceedings of 2018 IEEE International Symposium on Circuits and Systems (ISCAS) [online],IEEE,2018年05月,[令和5年12月26日検索], インターネット <URL: https://ieeexplore.ieee.org/abstract/document/8351298>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02 - 3/10
(57)【特許請求の範囲】
【請求項1】
各々が、信号伝播および重み更新計算動作の反復サイクルを介して、隣接するニューロン層間で伝播される信号を重み付けするためのNビット固定点重みのそれぞれの組{w}を有する、シナプス層が介在した一連のニューロン層を有する人工ニューラル・ネットワークをトレーニングするための方法であって、前記方法は、シナプス層ごとに、
各Nビット重みwの複数p個の最下位ビットをデジタル・メモリに記憶することと、
各々が、Nビット重みwのnビット部分のそれぞれのビットを記憶するためのn個のバイナリ・メモリ・セルを含む、デジタル・メモリ素子のアレイを備えるアナログ乗算累算ユニットにおいて前記Nビット重みwのnビット部分、すなわち第(p+1)ビット~第(p+n)ビットを記憶することであって、ここで、n≧1および(p+n+m)=Nであり、ここで、m≧0は、前記シナプス層の重みにおける最上位ゼロ・ビットの定義された数に対応する、前記記憶することと、
前記シナプス層によって重み付けされる信号を前記乗算累算ユニットに供給することによって信号伝播動作を実行し、前記重みの前記記憶されたnビット部分に依拠して、累積された重み付けされた信号を取得することと、
前記デジタル・メモリおよび前記乗算累算ユニットに作動的に連結されたデジタル処理ユニットにおいて、前記重み更新計算動作を実行し、前記ニューロン層によって伝播される信号に依拠して、前記シナプス層の更新された重みを計算することと、
前記デジタル・メモリおよび前記乗算累算ユニットを周期的に再プログラミングして、前記更新された重みのビットを記憶することと、
を含む、方法。
【請求項2】
mは、前記シナプス層についてm=0として定義され、(p+n)=Nである、請求項1に記載の方法。
【請求項3】
各Nビット重みの前記p個の最下位ビットのみが前記デジタル・メモリに記憶される、請求項2に記載の方法。
【請求項4】
前記再プログラミングは、前記重み更新計算動作後に、前記デジタル・メモリ内の重みの前記p個の最下位ビットと、前記乗算累算ユニットにおける重みの前記nビット部分との双方を再プログラミングすることによって実行される、請求項3に記載の方法。
【請求項5】
前記デジタル・メモリは、デジタル・メモリ・ユニットにおいて提供され、前記再プログラミングは、前記デジタル・メモリ・ユニットおよび前記乗算累算ユニットに共通のメモリ・コントローラによって実行される、請求項4に記載の方法。
【請求項6】
前記デジタル・メモリは、各Nビット重みが、その重みの前記p個の最下位ビットを記憶するpビットのデジタル・メモリと、その重みの前記nビット部分を記憶する前記デジタル・メモリ素子とを備えるユニット・セルに記憶されるように、前記乗算累算ユニットにおいて分散される、請求項4に記載の方法。
【請求項7】
前記デジタル・メモリを提供するデジタル・メモリ・ユニットに、各Nビット重みの全Nビットを記憶することを含む、請求項2に記載の方法。
【請求項8】
前記再プログラミングは、
前記重み更新計算動作後に、前記デジタル・メモリ・ユニットにおける前記Nビット重みを、前記更新された重みに再プログラミングすることと、
前記デジタル・メモリ・ユニットにおける更新された重みの前記nビット部分を、前記乗算累算ユニットにおける、その重みの前記nビット部分を記憶する前記デジタル・メモリ素子に周期的にコピーすることと、
によって実行される、請求項7に記載の方法。
【請求項9】
重み更新計算動作のバッチ後に、更新された重みの前記nビット部分を前記デジタル・メモリ素子にコピーすることを含む、請求項8に記載の方法。
【請求項10】
前記重み更新計算動作のバッチにおいてその重みに対する更新中に第(N-p)ビットのビット・オーバフローが発生する場合にのみ、更新された重みの前記nビット部分を、前記デジタル・メモリ素子にコピーすることを含む、請求項9に記載の方法。
【請求項11】
全てのシナプス層の前記Nビット重みを前記デジタル・メモリ・ユニットに記憶することと、
デジタル・メモリ素子の前記アレイに後続の複数のシナプス層の重みの前記nビット部分を動的に記憶し、前記信号伝播動作を実行することと、
を更に含む、請求項7に記載の方法。
【請求項12】
前記シナプス層の重みにおける最上位ゼロ・ビットの数に依拠して、前記シナプス層についてmの初期値を定義することと、
前記シナプス層について、前記複数pをp=(N-n-m)として定義することと、
前記シナプス層の重みにおける最上位ゼロ・ビットの数の変化に依拠して、前記トレーニング中にmの値を調整することと、
mの値の調整に応答して、mの前記調整された値に従って、前記シナプス層の前記重みの前記nビット部分を再定義し、デジタル・メモリ素子の前記アレイを、前記重みの前記再定義されたnビット部分を記憶するように再プログラミングすることと、
を更に含む、請求項1に記載の方法。
【請求項13】
各前記信号伝播動作は、信号が第1のニューロン層からネットワークを通じて伝播される順伝播動作と、信号が最後のニューロン層からネットワークを通じて逆伝播される逆伝播動作とを含み、前記方法は、シナプス層ごとに、前記シナプス層によって重み付けされる信号を、前記順伝播動作および前記逆伝播動作において前記乗算累算ユニットに供給することを含む、請求項1に記載の方法。
【請求項14】
シナプス層ごとにnのそれぞれの値を定義することを含む、請求項1に記載の方法。
【請求項15】
シナプス層ごとに、N=32およびn≦8である、請求項1に記載の方法。
【請求項16】
各々が、信号伝播および重み更新計算動作の反復トレーニング・サイクルにおいて、隣接するニューロン層間で伝播される信号を重み付けするためのNビット固定点重みのそれぞれの組{w}を有する、シナプス層が介在した一連のニューロン層を有する人工ニューラル・ネットワークを実施するための装置であって、前記装置は、
各シナプス層の各Nビット重みwの複数p個の最下位ビットを記憶するデジタル・メモリと、
前記シナプス層の前記Nビット重みwのnビット部分、すなわち第(p+1)ビット~第(p+n)ビットを記憶するためのアナログ乗算累算ユニットであって、前記乗算累算ユニットは、デジタル・メモリ素子のアレイを備え、各々が、重みの前記nビット部分のそれぞれのビットを記憶するためのn個のバイナリ・メモリ・セルを含み、ここで、n≧1および(p+n+m)=Nであり、ここで、m≧0は、前記シナプス層の重みにおける最上位ゼロ・ビットの定義された数に対応する、前記アナログ乗算累算ユニットと、
前記デジタル・メモリおよび前記乗算累算ユニットに作動的に連結されたデジタル処理ユニットであって、前記デジタル処理ユニットは、
信号伝播動作において、各シナプス層によって重み付けされる信号を前記乗算累算ユニットに供給して、前記重みの前記記憶されたnビット部分に依拠して、累積された重み付けされた信号を取得し、
前記重み更新計算動作を実行して、前記ニューロン層によって伝播される信号に依拠して、シナプス層ごとの更新された重みを計算し、
前記デジタル・メモリおよび前記乗算累算ユニットの周期的再プログラミングを制御して、前記更新された重みのビットを記憶する、
ように適合される、前記デジタル処理ユニットと、
を備える、装置。
【請求項17】
mは、前記シナプス層についてm=0として定義され、(p+n)=Nである、請求項16に記載の装置。
【請求項18】
各Nビット重みの前記p個の最下位ビットのみが前記デジタル・メモリに記憶される、請求項17に記載の装置。
【請求項19】
前記デジタル・メモリを提供するデジタル・メモリ・ユニットと、前記再プログラミングを実行するための、前記デジタル・メモリ・ユニットおよび前記乗算累算ユニットに共通のメモリ・コントローラとを備える、請求項18に記載の装置。
【請求項20】
前記デジタル・メモリは、各Nビット重みが、その重みの前記p個の最下位ビットを記憶するpビットのデジタル・メモリと、その重みの前記nビット部分を記憶する前記デジタル・メモリ素子とを備えるユニット・セルに記憶されるように、前記乗算累算ユニットにおいて分散される、請求項18に記載の装置。
【請求項21】
前記デジタル・メモリを提供するデジタル・メモリ・ユニットに、各Nビット重みの全Nビットが記憶される、請求項17に記載の装置。
【請求項22】
全てのシナプス層の前記Nビット重みが前記デジタル・メモリ・ユニットに記憶され、前記装置は、デジタル・メモリ素子の前記アレイに前記シナプス層の連続組の重みの前記nビット部分を動的に記憶し、前記信号伝播動作を実行するように適合される、請求項21に記載の装置。
【請求項23】
前記乗算累算ユニットは、各シナプス層の前記重みの前記nビット部分を記憶する前記デジタル・メモリ素子のそれぞれのアレイを備える、請求項16に記載の装置。
【請求項24】
mの初期値は、そのシナプス層の重みにおける最上位ゼロ・ビットの数に依拠してシナプス層ごとに定義され、前記シナプス層の前記複数pは、p=(N-n-m)として定義され、前記装置は、
前記トレーニング中の前記シナプス層の重みにおける最上位ゼロ・ビットの数の変化に依拠して、シナプス層のmの値を調整し、
mの値の調整に応答して、mの前記調整された値に従って、前記シナプス層の前記重みの前記nビット部分を再定義し、デジタル・メモリ素子の前記アレイを、前記重みの前記再定義されたnビット部分を記憶するように再プログラミングする、
ように適合される、請求項16に記載の装置。
【請求項25】
前記バイナリ・メモリ・セルはSRAMセルを含む、請求項16に記載の装置。
【請求項26】
請求項1ないし15のいずれか一項に記載の方法をコンピュータに実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、人工ニューラル・ネットワーク(artificial neural network)のトレーニングに関する。
【背景技術】
【0002】
人工ニューラル・ネットワーク(ANN)は、神経系の生物学的アーキテクチャから着想を得たやり方で計算タスクを実行するために開発されている。これらのネットワークは、ニューロン間で重み付けされた信号を中継するシナプスを介してニューロンが相互接続される、生物学的システムの基本原理に基づいている。ANNは、シナプス層が介在した一連のニューロン層を含む論理構造に基づく。シナプス層は、隣接するニューロン層においてニューロン間で伝播される信号を重み付けするための重みを記憶する。所与の層におけるニューロンnは、次の層における1つまたは複数のニューロンnに結合することができ、nからnに送信される信号を重み付けするために、異なる重みwijを各ニューロン間の連結n-nに関連付けることができる。各ニューロンは、累積された重み付けされた入力に依拠して出力信号を生成し、これによって、重み付けされた信号は、ネットワークの連続層にわたって伝播され得る。
【0003】
ANNは、音声および画像認識、例えば、MNIST(Modified National Institute of Standards and Technology)データセットに基づく手書き数字の分類等の様々な複雑な解析タスクにおいて上手く適用されている。ANNは、それぞれのシナプス層の重みの組が決定されるトレーニング段階を経る。ネットワークがトレーニング・データから「学習する」と重みが繰り返し更新される反復トレーニング・プロセスにおいて、ネットワークは、トレーニング・データのセット、例えば手書き数字の画像データにさらされる。トレーニングは、信号伝播および重み更新計算動作の反復サイクルを伴い、ネットワーク重みは、収束条件が達成されるまで漸進的に更新される。次に、トレーニング動作を介して重みが定義された、結果として得られるトレーニングされたネットワークを、新たな(初見の)データに適用し、当該用途のための推論タスクを実行することができる。
【0004】
複数のニューロン層および数百万のシナプス重みを有する場合があるANNのトレーニングは、計算および時間集約的タスクである。シナプス重みがPCM(相変化メモリ)デバイス等のメモリスタ・デバイス(memristive device)のアナログ・コンダクタンス値に記憶される、メモリスタ・シナプスのアレイに基づくアナログ乗算累算ユニット(multiply-accumulate unit)を用いたトレーニング方法が、これらの問題を回避するために提案されている。これらのユニットは、デバイスに信号を印加するために行および列のライン間に接続されたメモリスタ・デバイスのクロスバー・アレイを用い、ここで、各デバイスは、(可変の)デバイス・コンダクタンスに対応する重みを有するシナプスを実装する。これらの乗算累算アレイの並列計算能力を利用して、O(1)の計算複雑度を有するアナログ領域において、(シナプス層にわたって伝播される累積された重み付けされた信号を生成するために必要とされる)低コストのベクトル-行列計算を行うことができる。トレーニング中のシナプス重みに対する更新が、高精度デジタル累積器において累積されるそのようなトレーニング方法が当該技術分野において既知である。ニューラル・ネットワーク推論計算のために、1ビット重みがバイナリSRAM(スタティック・ランダム・アクセス・メモリ)セルにおいてデジタルで記憶されるアナログ乗算累算ユニットも当該技術分野において既知である。
【0005】
トレーニングの正確性を保持しながら、複雑度の低減をもたらす更なるニューラル・ネットワーク・トレーニング・システムが依然として必要とされている。
【発明の概要】
【0006】
本発明の少なくとも1つの実施形態によれば、各々が、信号伝播および重み更新計算動作の反復サイクルを介して、隣接するニューロン層間で伝播される信号を重み付けするためのNビット固定点重みのそれぞれの組{w}を有する、シナプス層が介在した一連のニューロン層を有する人工ニューラル・ネットワークをトレーニングするための方法が提供される。方法は、シナプス層ごとに、各Nビット重みwの複数p個の最下位ビットをデジタル・メモリに記憶することと、デジタル・メモリ素子のアレイを備えるアナログ乗算累算ユニットにおいて各重みwの次のnビット部分を記憶することとを含む。各デジタル・メモリ素子は、重みのnビット部分のそれぞれのビットを記憶するためのn個のバイナリ・メモリ・セルを含み、ここで、n≧1および(p+n+m)=Nであり、ここで、m≧0は、シナプス層の重みにおける最上位ゼロ・ビットの定義された数に対応する。方法はまた、シナプス層によって重み付けされる信号を乗算累算ユニットに供給することによって信号伝播動作を実行し、重みの記憶されたnビット部分に依拠して、累積された重み付けされた信号を取得することと、デジタル・メモリおよび乗算累算ユニットに作動的に連結されたデジタル処理ユニットにおいて、重み更新計算動作を実行し、ニューロン層によって伝播される信号に依拠して、シナプス層の更新された重みを計算することとを含む。方法は、デジタル・メモリおよび乗算累算ユニットを周期的に再プログラミングして、更新された重みの前記ビットを記憶することを更に含む。
【0007】
本発明を具現化するトレーニング方法において、トレーニング動作のための所望の精度で、Nビット固定点フォーマットで重みが定義される。Nビット重みwごとに、重みの(少なくとも)p個の最下位ビットがデジタル・メモリに記憶される。次のnビット部分(すなわち、n個の次の最上位ビット)が、アナログ乗算累算ユニットのデジタル・メモリ素子のn個のバイナリ・メモリ・セルにデジタルで記憶される。このnビット部分は、重みwのための低精度の重み(reduced-precision weight)値に対応する。乗算累算演算は、信号伝播動作中に、これらの低精度の重みを用いて実行される。重み更新動作において、シナプス層のための更新されたNビット重みがデジタル処理ユニットにおいて計算される。このため、重み更新計算は、デジタル精度で実行され、デジタル・メモリおよび乗算累算ユニットは、更新された重みの適切なビット(すなわち、それぞれp個の最下位ビットおよびnビット部分)を記憶するように周期的に再プログラミングされる。デジタル・メモリと、乗算累算アレイのデジタル素子との組合せにおいて記憶されるNビット固定点重みを用いることによって、この方法は、重み更新動作における精度の利点を、信号伝播のための高速で、低複雑度のベクトル-行列計算と組み合わせる。ベクトル-行列演算は、低精度の重みで実行され、乗算累算ユニットの複雑度、したがって電力およびオン・チップ面積が低減される。このため、本発明の実施形態は、乗算累算アレイに基づいた、高速で、効率的なANNトレーニング方法を提供する。
【0008】
パラメータmは、任意の所与の層の重みにおける最上位ゼロ・ビットの実際の数にかかわらず、シナプス層についてm=0として定義することができる。これにより、(p+n)=Nである単純な実施が得られる。本発明の他の実施形態において、mの初期値は、その層の重み{w}における最上位ゼロ・ビットの数に依拠してシナプス層について定義することができ、このとき、mの値は、重み組{w}における最上位ゼロ・ビットの数が変化するにつれ、トレーニング中に動的に調整することができる。本発明のこれらの実施形態において、重みwの少なくともp=(N-n-m)個の最下位ビットがデジタル・メモリに記憶され、乗算累算ユニットに記憶されたnビット部分が、トレーニング中にmの値が調整されるにつれ動的に再定義および再プログラミングされる。これにより、様々なネットワーク層のための低精度の重みのより最適な定義が与えられ、トレーニング正確性が向上する。
【0009】
本発明のいくつかの実施形態では、各Nビット重みのp個の最下位ビットのみがデジタル・メモリに記憶される。デジタル・メモリは、各Nビット重みが、その重みのp個の最下位ビットを記憶するpビットのデジタル・メモリと、その重みのnビット部分を記憶するデジタル・メモリ素子とを備えるユニット・セルに記憶されるように、乗算累算ユニットにおいて分散させることができる。これにより、小さなフットプリントを有するユニット・セルに基づいて、組み合わされたデジタル/アナログ・メモリ・ユニットのための面積効率のよい実施が提供される。
【0010】
本発明の他の実施形態において、各Nビット重みの全Nビットを、デジタル・メモリを提供するデジタル・メモリ・ユニットに記憶することができる。これにより、重み更新がデジタル・メモリにおいて実行される効率的な動作が提供され、乗算累算ユニットにおける低精度の重みに対する更新頻度を下げることが可能になる。例えば、低減された精度重みは、トレーニング例の複数のバッチがネットワークによって処理された後に初めて更新することができる。重み更新動作の効率を更に向上させるために、更新された重みのnビット部分は、トレーニング期間にわたって、デジタル・メモリにおいて、その重みに対する更新中に第(N-p)ビットのビット・オーバフローが発生する場合にのみ、デジタル・メモリから乗算累算ユニットにコピーすることができる。
【0011】
全てのシナプス層のNビット重みがデジタル・メモリに記憶される本発明の実施形態において、乗算累算ユニットは、信号伝播がネットワークを通じて進行するにつれ、異なる層の低精度の重みについて再利用することができる。シナプス層の連続組が信号伝播のために活性状態になるにつれ、これらの層の重みのnビット部分は、デジタル・メモリ素子のアレイに動的に記憶することができる。
【0012】
本発明の少なくとも1つの更なる実施形態は、信号伝播および重み更新計算動作の反復トレーニング・サイクルにおいて人工ニューラル・ネットワークを実施するための装置を提供する。装置は、各シナプス層の各Nビット重みwの複数p個の最下位ビットを記憶するデジタル・メモリと、シナプス層の各重みwの次のnビット部分を記憶するためのアナログ乗算累算ユニットとを備える。乗算累算ユニットは、上記で説明したように、各々がn個のバイナリ・メモリ・セルを備えるデジタル・メモリ素子のアレイを備える。装置は、デジタル・メモリおよび乗算累算ユニットに作動的に連結されたデジタル処理ユニットを更に備える。デジタル処理ユニットは、信号伝播動作において、各シナプス層によって重み付けされる信号を乗算累算ユニットに供給して、重みの記憶されたnビット部分に依拠して、累積された重み付けされた信号を取得するように適合される。デジタル処理ユニットは、重み更新計算動作を実行して、ニューロン層によって伝播される信号に依拠してシナプス層ごとの更新される重みを計算し、デジタル・メモリおよび乗算累算ユニットの周期的再プログラミングを制御して、更新された重みの適切なビットを記憶するように更に適合される。
【0013】
1つの態様によれば、各々が、信号伝播および重み更新計算動作の反復サイクルを介して、隣接するニューロン層間で伝播される信号を重み付けするためのNビット固定点重みのそれぞれの組{w}を有する、シナプス層が介在した一連のニューロン層を有する人工ニューラル・ネットワークをトレーニングするための方法が提供され、方法は、シナプス層ごとに、各Nビット重みwの複数p個の最下位ビットをデジタル・メモリに記憶することと、各々が、重みの前記nビット部分のそれぞれのビットを記憶するためのn個のバイナリ・メモリ・セルを含む、デジタル・メモリ素子のアレイを備えるアナログ乗算累算ユニットにおいて各重みwの次のnビット部分を記憶することであって、ここで、n≧1および(p+n+m)=Nであり、ここで、m≧0は、シナプス層の重みにおける最上位ゼロ・ビットの定義された数に対応する、記憶することと、シナプス層によって重み付けされる信号を乗算累算ユニットに供給することによって前記信号伝播動作を実行し、重みの記憶されたnビット部分に依拠して、累積された重み付けされた信号を取得することと、前記デジタル・メモリおよび前記乗算累算ユニットに作動的に連結されたデジタル処理ユニットにおいて、前記重み更新計算動作を実行し、ニューロン層によって伝播される信号に依拠して、シナプス層の更新された重みを計算することと、デジタル・メモリおよび乗算累算ユニットを周期的に再プログラミングして、更新された重みの前記ビットを記憶することとを含む。
【0014】
別の態様によれば、各々が、信号伝播および重み更新計算動作の反復トレーニング・サイクルにおいて、隣接するニューロン層間で伝播される信号を重み付けするためのNビット固定点重みのそれぞれの組{w}を有する、シナプス層が介在した一連のニューロン層を有する人工ニューラル・ネットワークを実施するための装置が提供され、装置は、各シナプス層の各Nビット重みwの複数p個の最下位ビットを記憶するデジタル・メモリと、シナプス層の各重みwの次のnビット部分を記憶するためのアナログ乗算累算ユニットであって、乗算累算ユニットは、デジタル・メモリ素子のアレイを備え、各々が、重みの前記nビット部分のそれぞれのビットを記憶するためのn個のバイナリ・メモリ・セルを含み、ここで、n≧1および(p+n+m)=Nであり、ここで、m≧0は、シナプス層の重みにおける最上位ゼロ・ビットの定義された数に対応する、アナログ乗算累算ユニットと、前記デジタル・メモリおよび前記乗算累算ユニットに作動的に連結されたデジタル処理ユニットであって、デジタル処理ユニットは、前記信号伝播動作において、各シナプス層によって重み付けされる信号を乗算累算ユニットに供給して、重みの記憶されたnビット部分に依拠して、累積された重み付けされた信号を取得し、前記重み更新計算動作を実行して、ニューロン層によって伝播される信号に依拠して、シナプス層ごとの更新された重みを計算し、デジタル・メモリおよび乗算累算ユニットの周期的再プログラミングを制御して、更新された重みの前記ビットを記憶するように適合される、デジタル処理ユニットと、を備える。
【0015】
本発明の実施形態が、添付の図面を参照して、例示的で非限定的な例として以下でより詳細に説明される。
【図面の簡単な説明】
【0016】
図1】例示的なANNの概略図である。
図2】本発明の実施形態による、トレーニング動作においてANNを実施するための装置の概略ブロック図である。
図3】本発明の実施形態によるANN層の重みwのビット構造を示す図である。
図4】本発明の実施形態による、図2の装置の乗算累算ユニットにおけるデジタル・メモリ素子のアレイの構造を示す図である。
図5】本発明の実施形態による、図2の装置によって実行されるトレーニング方法のステップを示す図である。
図6図2の装置の実施形態におけるメモリ装置の構造を示す図である。
図7】本発明の実施形態による、図6の装置におけるアナログSRAM乗算累算アレイのより詳細な構造を示す図である。
図8】本発明の実施形態による、図7のアレイにおけるSRAMユニット・セルの構造を示す図である。
図9】本発明の実施形態による、図2の装置の別の実施形態におけるメモリ装置を示す図である。
図10】本発明の実施形態による、図9の装置における組み合わされたデジタル/アナログSRAMユニットのより詳細な構造を示す図である。
図11図2の装置の更なる実施形態におけるメモリ装置を示す図である。
図12】装置のアナログSRAM乗算累算アレイの別の実施形態を示す図である。
【発明を実施するための形態】
【0017】
図1は、本発明の1つの実施形態による、全結合ANNの1つの例の論理構造を示す。ANN1は、シナプス層が介在した一連のニューロン層を含む。示される単純な例では、ネットワークは、3つのニューロン層、すなわち、ネットワーク入力信号を受信する入力ニューロンの第1の層Nと、ネットワークの出力信号を提供する出力ニューロンの最後の層Nと、入力層と出力層との間のニューロンの中間(「隠れ」)層Nとを有する。ここで、層Nにおけるニューロンは、n1i(1≦i≦l)によって表され、層Nにおけるニューロンは、n2j(1≦j≦l)によって表され、層Nにおけるニューロンはn3k(1≦k≦l)によって表され、ここで、lは、層Nにおけるニューロンの数である。示されるように、各層内の全てのニューロンは、次の層内の全てのニューロンに結合され、これによって、1つの層からのニューロン活性化信号が次の層におけるニューロンに送信される。ニューロン層が介在するシナプス層SおよびSは、それらの隣接するニューロン層間で伝播された信号の重み付けをするために、それぞれの重みの組{wij}および{wjk}を有する。重みwijは、Nニューロンn1iとNニューロンn2jとの間の連結ごとに定義され、これによって、n1iからn2jまで伝播される信号は、そのニューロン対について対応する重みwijに従って重み付けされる。このため、シナプス層Sのための重みの組{wij}は、図に示すように、重みwijのl行およびl列を有する行列Wによって表すことができる。Nニューロンn2j~Nニューロンn3kによって伝播される信号は、シナプス層Sの対応する重みwjkによって同様に重み付けされ、シナプス層Sの重みの組{wjk}は、重みwjkのl行およびl列を有する行列によって表すことができる。
【0018】
入力層ニューロンは、受信した入力データ信号を、層Nのための活性化信号として単に送信することができる。後続の層NおよびNについて、各ニューロンn2j、n3kは、累積された入力、すなわち、前の層における結合されたニューロンからの累積された重み付けされた活性化信号に依拠して活性化信号を生成する。各ニューロンは、この累積演算の結果Aに非線形活性化関数fを適用して、前方への送信のためのニューロン活性化信号を生成する。例えば、ニューロンn2jに対する累積された入力Aは、ドット積計算
【数1】

によって与えられる。ここで、x1iはニューロンn1iからの活性化信号である。このため、ニューロンn2jに対する累積された入力
【数2】

のベクトルAを計算することは、重みwijの行列Wと、ニューロンn1iからの活性化信号
【数3】

のベクトルxとの間の行列-ベクトル乗算Wxによって表すことができる。このとき、各Nニューロンn2jは、層Nへの伝播のために、活性化信号x2jを、x2j=f(A)として生成する。
【0019】
全結合ネットワークの単純な例が図1に示されるが、通常、任意の所与の層におけるニューロンは、次の層における1つまたは複数のニューロンに結合することができ、ネットワークは、隠れニューロンの1つまたは複数の(一般的に最大30個またはそれ以上の)連続層を含むことができる。ニューロン層は、入力信号を受信しないが、次のニューロン層にバイアス信号を送信する1つまたは複数のバイアス・ニューロン(図示せず)を含むことができる。他の計算もいくつかのANN層に関連付けることができる。いくつかのANN、例えば、畳込みニューラル・ネットワーク(CNN)において、ニューロン層は、シナプス層における関連付けられた3次元重みアレイを有するニューロンの3次元ボリュームを含むことができるが、信号伝播計算は、依然として、行列-ベクトル演算の観点において表すことができる。
【0020】
ANNトレーニングは、ネットワークへの入力として供給されるトレーニング例の組に応答して、信号伝播および重み更新計算動作の反復サイクルを伴う。手書き数字の教師あり学習において、例えば、MNISTデータセットからのトレーニング例(ラベル、ここでは、0~9の数字クラスが既知である)がネットワークに繰り返し入力される。トレーニング例ごとに、信号伝播動作は、信号が第1のニューロン層から最後のニューロン層に順伝播される順伝播動作と、エラー信号が最後のニューロン層からネットワークを通じて逆伝播される逆伝播動作とを含む。上記で説明したように、順伝播動作において、活性化信号xは、層ごとに重み付けされ、ネットワークを通じて伝播される。出力層内のニューロンごとに、順伝播後の出力信号が、現在のトレーニング例について(既知のラベルに基づいて)予測される出力と比較され、そのニューロンについてのエラー信号εが得られる。出力層ニューロンのためのエラー信号は、入力層を除くネットワークの全ての層を通じて逆伝播される。隣接するニューロン層間で逆伝播されるエラー信号は、介在するシナプス層の適切な重みによって重み付けされる。このため、逆伝播の結果として、入力層を除くニューロン層ごとのエラー信号が計算される。次に、信号伝播動作においてニューロン層によって伝播された信号に基づいて、各シナプス層の重みの更新が計算される。通常、重み更新は、所与の反復におけるいくつかまたは全ての重みについて計算することができる。例として、1つの層におけるニューロンiと、次の層におけるニューロンjとの間の重みwijに対する更新値Δwijは以下のように計算することができる。
Δwij=ηxε
ここで、xはニューロンiからの順伝播された活性化信号であり、εはニューロンjのための逆伝播されたエラー信号であり、ηはネットワークのための所定の学習パラメータである。このため、トレーニング・プロセスは、収束条件が達成されるまで、ネットワークの重みを漸進的に更新し、この際、トレーニングされた重みを有する、結果として得られるネットワークを、ANN推論動作について適用することができる。
【0021】
図2は、好ましい実施形態による、トレーニング動作においてANN1を実施するための装置を示す。装置2は、メモリ装置3と、ここではシステム・バス5を介してメモリ装置3に作動的に連結されたデジタル処理ユニット4とを備える。メモリ装置3は、概略的に6で示されるデジタル・メモリと、アナログ乗算累算(MAC)ユニット7とを備える。以下で更に説明するように、MACユニット7は、バイナリ・メモリ・セルに基づいて、デジタル・メモリ素子の少なくとも1つのアレイを含む。メモリ・コントローラ8として示されるメモリ制御装置は、デジタル・メモリ6およびMACユニット7の動作を制御する。デジタル処理ユニット4は、中央処理ユニット(CPU)9と、メモリ10とを備える。メモリ10は、以下で説明される動作の機能ステップを実施するためにCPU9によって実行可能なプログラム命令を含む1つまたは複数のプログラム・モジュール11を記憶する。
【0022】
DPU4は、反復トレーニング・プロセスにおいて装置2の動作を制御する。DPUは、順伝播および逆伝播動作においてニューロン層によって伝播された活性化信号およびエラー信号を生成し、トレーニング動作の重み更新計算を実行するように適合される。ネットワークのそれぞれのシナプス層のための重みの組{w}がメモリ装置3に記憶される。重みwは、Nビット固定点フォーマットにおいて定義され、ここで、Nは、特定のトレーニング動作のために必要とされる精度に従って選択される。本発明のこの実施形態では、N=32であり、高精度の32ビット固定点重みを与える。しかしながら、本発明の他の実施形態では、Nは異なる形で、例えばN=64として設定され得る。
【0023】
装置2の動作時、シナプス層のNビット重みwが、デジタル・メモリ6と、MACユニット7のデジタル・メモリ素子との組合せに記憶される。特に、図3を参照すると、各重みwの少なくとも複数p個の最下位ビット(LSB)が、シナプス層ごとにデジタル・メモリ6に記憶される。少なくとも、MACユニット7における信号伝播計算に必要とされるとき、各重みwの次のnビット部分(すなわち、第(p+1)ビット~第(p+n)ビット)が記憶される。特に、各nビット部分は、MACユニット7内のデジタル・メモリ素子のアレイに記憶される。これらのデジタル・メモリ素子の各々は、重みのnビット部分のそれぞれのビットを記憶するための(少なくとも)n個のバイナリ・メモリ・セルを含む。nの値は、異なるシナプス層について異なることができる。しかしながら、通常、n≧1および(p+n+m)=Nであり、m≧0は、シナプス層の重みにおける最上位ゼロ・ビットの定義された数に対応する。このため、mの値は、シナプス層間で変動し得、以下で説明するように、任意の所与の層について、m=0として定義することもでき、このケースでは(p+n)=Nである。このため、各重みwのnビット部分は、その重みについて、以下でWによって表される低精度の重み値を定義する。
【0024】
図4は、1つの実施形態による、シナプス層のための低精度の重みWを記憶する、MACユニット7におけるデジタル・メモリ素子のアレイの論理構造を示す。アレイ15は、示されるように行および列のライン間で接続された(以下で説明される関連付けられたアナログ回路部を有する)デジタル・メモリ素子16のクロスバー・アレイによって好都合に実施することができる。この例は、図1のANNにおけるシナプス層Sのための低精度の重み{Wij}を記憶するクロスバー・アレイを示す。アレイ内の各素子16は、示されるようにそれぞれの低精度の重みWijのnビットを記憶する。素子16は論理的行および列に配列され、各デバイスは、そのデバイスに信号を印加するために、特定の行ラインrおよび列ラインc間に接続される。行および列のラインは、デジタル領域とアナログ領域との間でアレイ入力/出力信号を変換する、行および列のデジタル対アナログ/アナログ対デジタル変換器(図示せず)を介してメモリ装置3のコントローラ8に接続される。
【0025】
シナプス層のための信号伝播動作において、DPU4によって生成される信号は、バス5を介してメモリ装置3に供給され、ここで、コントローラ8は、低精度の重みWijを記憶するアレイ15に信号を供給する。順伝播動作において、コントローラ8は、活性化信号x1iをアレイ15の行ラインrに供給する。列ラインcにおいて結果として得られる出力信号は、コントローラ8によってDPU4に返される累積された重み付けされた信号Σij1iに対応する。シナプス層のための逆伝播計算は、エラー信号εをアレイの列ラインに適用し、行ラインにおける累積された重み付けされた信号Σ(Wijε)を取得することによって同様に実行することができる。こうして、アレイ15は、シナプス層にわたる信号伝播に必要とされる行列-ベクトル計算を実施する。
【0026】
装置2の例示的な実施形態が説明されているが、DPU4は、1つまたは複数のマイクロプロセッサによって実装することができる1つまたは複数のCPUを備えてもよい。メモリ10は、1つまたは複数のデータ記憶エンティティを含むことができ、CPU9から物理的に切り離されたメイン・メモリ、例えばDRAM(ダイナミック・ランダム・アクセス・メモリ)または他のストレージ、あるいはその両方、並びにCPU9にローカルなキャッシュまたは他のメモリ、あるいはその両方を含むことができる。通常、DPU4は、1つまたは複数の(汎用または専用)コンピュータ/プログラム可能なデータ処理装置によって実施することができ、DPU4によって実行される処理動作の機能ステップは、通常、ハードウェアもしくはソフトウェア、またはそれらの組合せによって実施することができる。コントローラ8は、本明細書に記載の機能を実行するようにメモリ装置3を制御するようにソフトウェア命令によって構成可能な1つまたは複数のプロセッサも備えることができる。本発明のいくつかの実施形態において、DPU4またはコントローラ8、あるいはその両方は、説明される機能を実施するためのプログラム命令を実行するための、プログラマブル・ロジック回路部、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)等の電子回路部を含むことができる。本発明の実施形態は、フローチャート図を参照して説明されているが、フローチャート図の各ブロック、またはフローチャート図におけるブロックの組合せ、あるいはその両方は、コンピュータ実行可能プログラム命令によって実施することができることが理解されよう。プログラム命令/プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ・タイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造等を含むことができる。フローチャート図内のブロックまたはブロックの組合せは、また、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組合せを遂行する、専用ハードウェアベース・システムによって実施されてもよい。
【0027】
システム・バス5は、メモリ・バスまたはメモリ・コントローラ、周辺バス、高速グラフィック・ポート、および多様なバス・アーキテクチャのうちの任意のものを使用するプロセッサもしくはローカル・バスを含む、いくつかのタイプのバス構造のうちの任意のもののうちの1つまたは複数を含むことができる。限定ではなく例として、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA)・バス、マイクロ・チャネル・アーキテクチャ(MCA)・バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)・ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI)・バスを含む。
【0028】
MACユニットのメモリ素子16におけるバイナリ・メモリ・セルは、SRAMセル、DRAM(ダイナミックRAM)セル、MRAM(磁気抵抗RAM)セル、フローティング・ゲート・セル、RRAM(抵抗RAM)セル、またはより一般的には、低精度の重みのそれぞれのビットをデジタルで記憶するための任意のバイナリ・セルを含むことができる。SRAMセルに基づくアナログMACアレイの例示的な実施について以下に詳細に説明される。通常、MACユニット7は、1つまたは複数のアナログ乗算累算アレイを備えることができ、その各々が、デジタル・メモリ素子の1つまたは複数のクロスバー・アレイを備えることができる。任意の時点において、MACユニット7は、1つまたは複数のシナプス層のための低精度の重みWの全てまたはサブセットを記憶することができる。本発明のいくつかの実施形態では、各シナプス層の全ての重みWを、MACユニットのそれぞれのアレイに記憶してもよい。他の場合、MACユニットは、信号伝播動作において現在活性状態の(1つまたは複数の)シナプス層の組の重みWのみを記憶してもよい。しかしながら、シナプス層Sごとに、装置2によって実施されるトレーニング方法は、図5の流れ図において示される基本ステップを伴う。
【0029】
図5のステップ20に示すように、シナプス層の各高精度の重みwの少なくともp個のLSBがデジタル・メモリ6に予め記憶される。ステップ21に示されるように、層の重みの後続のnビット部分(すなわち、低精度の重みW)が、MACユニット7に記憶される(予め記憶されるかまたは動的にロードされる)。ステップ22は、シナプス層のための信号伝播動作を表す。図4を参照して説明したように、順伝播の場合、活性化信号xは、MACアレイに供給され、低精度の重みWに依拠して累積された重み付けされた信号が取得される。後続の逆伝播動作において、エラー信号εがアレイに供給され、重みWに依拠して累積された重み付けされた信号が取得される。これらの乗算累算演算において生成された信号がDPU4に返される。ステップ23において、DPU4は、シナプス層のための更新されたNビット重みwを計算する。ここで、上記で説明したニューロン層によって伝播された信号に基づいて、それぞれの重みwについて重み更新値Δwが計算され、各重みはw=w+Δwに更新される。ステップ24において、DPU4は、トレーニング動作のための所定の収束条件が達成されているか否かを判断する。(収束は様々な既知の方式で定義することができ、特定の収束条件は、本明細書に記載の演算に直交する)。達成されていない場合(ステップ24における「N」)、動作はステップ25に進み、ステップ25において、DPU4は、メモリ装置3における重みwの再プログラミングを制御する。以下で更に説明されるように、任意の所与の反復において、このステップは、実装形態に依拠して、デジタル・メモリ6に記憶された、またはデジタル・メモリ6およびMACユニット7の双方に記憶された重みのビットを再プログラミングすることを伴うことができる。しかしながら、デジタル・メモリ6およびMACユニット7の双方が、更新された重みwの適切なビットを記憶するために、トレーニング中、(同じ時点または異なる時点に)周期的に再プログラミングされる。次に、動作は、次のトレーニング・サンプルのためにステップ22に戻る。プロセスは、収束が検出される(ステップ24における「Y」)まで反復し、検出されると、トレーニング動作は終了する。
【0030】
上記の方法を用いて、重み更新は、ANNトレーニングの正確性を確保するために、DPU4において高精度で、ここでは32ビットの精度で計算することができる。加えて、信号伝播のための乗算累算計算は、アナログMACユニットにおいてデジタルで記憶された低精度の重みWを用いて効果的に行うことができる。ここで、低精度の重みを用いることにより、MACユニットの複雑度、電力消費、およびオン・チップ面積が低減する。nの値は、シナプス層間で変動させることができ、トレーニングを最適化するために、層ごとの必要な精度の重みWが提供される。例として、nは、層ごとの単位で値1≦n≦8に設定することができる。このため、好ましい実施形態による、本発明の態様を具現化する方法は、人工ニューラル・ネットワークの効率の高いトレーニングを提供する。
【0031】
図6は、第1の実施形態における図2のメモリ装置3の構造の概略表現である。この実施形態について、パラメータmは、全てのシナプス層について、m=0として定義され、(p+n)=Nであり、この例ではN=32である。この実施形態のメモリ装置30において、デジタル・メモリは、シナプス層の各32ビット重みwのp=(32-n)個のLSBのみを記憶するデジタル・メモリ(ここではSRAM)・ユニット31によって提供される。それぞれの重みwの残りのn個の最上位ビット(MSB)によって定義される低精度の重みWは、MACユニットのSRAMアナログMACアレイ33のデジタル・メモリ素子32に記憶される。デジタル・メモリ・ユニット31およびMACユニット7の双方に共通のグローバル・メモリ・コントローラ34は、メモリユニットと、信号伝播のためのMACアレイ33への/からの信号の入力/出力との双方における重みのプログラミングを行う。各重み更新計算(図5のステップ23)の後、コントローラ34は、デジタルSRAM31において重みのp個のLSB、およびMACアレイ33において重みのnビット部分を再プログラミングすることによって、更新された32ビット重みw+Δwを記憶する。
【0032】
図7は、アナログMACアレイ33の実施形態のより詳細な図である。アレイ33は、SRAMユニット・セル35の行および列を含む。各行は、nビットの低精度の重みWを記憶するデジタル・メモリ素子32を提供する。nビットの各々は、素子のそれぞれのユニット・セル35に記憶される。各ユニット・セル35は、デジタル・メモリ素子32のバイナリSRAMセルと、アナログMACアレイを実施するためのアナログ回路部との双方を含む。これらのユニット・セル(以下で、「アナログ」SRAMセルと呼ばれる)の構造が図8に示される。各ユニット・セル35は、示すように接続された、バイナリSRAMセル38と、コンデンサ39と、スイッチ40、41aおよび41bとを備える。各ユニット・セルにおけるコンデンサ39のサイズは、接続されたバイナリ・セル38に記憶されたビットに対応する2の累乗に依拠する。図7におけるユニット・セル35の第1の列は、各nビット重みのLSBを記憶する。これらのセルにおけるコンデンサ39がキャパシタンスCを有する場合、ユニット・セルの第2の列におけるコンデンサ39は、キャパシタンス(2×C)を有し、第3の列におけるコンデンサは、キャパシタンス(2×C)を有し、コンデンサ39がキャパシタンス(2n-1×C)を有する第n列まで以下同様である。セル35の行は、ワードライン制御回路部42に接続され、セル35の列は、ビットライン制御回路部43に接続される。この制御回路部は、入力電圧発生器、ライン・ドライバ/復号器回路、センス増幅器、並びに必要に応じてセルおよび信号の入力/出力のアドレス指定および再プログラミングを行うためのADC/DAC回路等の、標準的なSRAM回路部を備える。
【0033】
アレイ33における乗算累算演算において、素子32のSRAMセル38は、図4のアレイの適切な行ラインrに接続される。入力電圧発生器は、各電圧がその行における入力信号xの値に対応する行ごとに異なるアナログ電圧を印加する。アナログSRAMセル35における全てのコンデンサは、スイッチ41aを閉じることによってその値に荷電される。次に、入力電圧はオフにされ、スイッチ41aが開放されるため、次に、アナログ・ユニット・セル35におけるSRAMセル38は、これらのセルが「0」を記憶するか、または「1」を記憶するかに基づいて、隣接するコンデンサを放電する。特に、セル38が「0」を記憶する場合、スイッチ40は、コンデンサを放電するために閉じられる。図8に示すように、セル38が「1」を記憶する場合、スイッチ40は開いたままである。このステップは、SRAMセル値に入力電圧を効果的に乗算する。その後、同じ列ラインcに接続されたSRAMユニット・セルにおけるスイッチ41bは、同じ列内の全てのコンデンサを短絡させるために閉じられ、これらのコンデンサにおける電荷再分配を通じてアナログ加算および平均化演算を行う。異なるビットの累乗は、コンデンサの指数関数的サイジングによって対処される。このため、列ラインにおけるコンデンサにおける結果として得られる出力電圧は、乗算および累算演算の結果に対応し、ADCを介して取り出される。
【0034】
図9は、メモリ装置の別の実施形態を示す。このメモリ装置45において、デジタル・メモリは、MACユニット・アレイにおいて分散される。シナプス層の各Nビット重みwは、組み合わされたデジタル/アナログSRAM MACアレイ47のユニット・セル46に記憶される。各ユニット・セル46は、その重みのp個のLSBを記憶するデジタルSRAMのp=(32-n)ビット、および上記で説明したMACアレイ33の行に対応するn個のアナログSRAMセル35を含む。これらのn個のアナログSRAMセルのバイナリSRAMセル38は、nビットの低精度の重みWを記憶するnビットのデジタル・メモリ素子32を提供する。メモリ・コントローラ48は、乗算累算演算について上記で説明したようなユニット・セル36のアナログSRAMセル35へのアクセス、およびユニット・セル46のデジタルSRAMへのアクセスを制御する。本発明の1つの実施形態による、組み合わされたMACアレイ47の構造が、図10においてより詳細に示される。この実施形態の組み合わされたデジタル/アナログ・ユニット・セルは、高度に面積効率のよい実装のための小さなオン・チップ・フットプリントを提供する。
【0035】
図11は、メモリ装置の更なる実施形態の構造を示す。図6の構成要素に対応する構成要素は、類似の参照符号によって示される。このメモリ装置50は、シナプス層の各32ビット重みwの全てのビットを記憶するデジタル・メモリ(ここではSRAM)・ユニット51を備える。上記で説明したように、nビットの低精度の重みWは、SRAMアナログMACアレイ33のデジタル・メモリ素子32に記憶される。前に説明したように、標準的なSRAMコントローラ52は、デジタルSRAMユニット51を制御し、MACコントローラ53はMACアレイ33を制御する。この実施形態において、各重み更新計算(図5のステップ23)の後、SRAMコントローラ52は、デジタル・ユニット51に記憶された32ビット重みwを、更新された重みw+Δwに再プログラミングする。このため、重み更新値は、デジタルSRAM51において累算される。周期的に、例えば、トレーニング例のバッチについて重み更新動作が行われた後、SRAMコントローラ52は、MACコントローラ53を介してユニット51からMACユニットにnビットの低精度の重みWをコピーする。このため、更新された32ビット重みのnビット部分は、対応する低精度の重みをMACアレイ33に記憶するデジタル・メモリ素子32にコピーされる。本明細書に記載の本発明の実施形態において、メモリ・コントローラ52は、重み更新動作のバッチにおいてその重みに対する更新中に第(N-p)ビットのビット・オーバフローが発生する場合にのみ、更新された重みwのnビット部分を、MACユニットにコピーするように適合することができる。これにより、低精度の重みを更新するためのプログラミング動作の数が低減し、したがって、SRAM51とMACユニットとの間のデータ転送が低減する。
【0036】
図6および図9のメモリ装置において、シナプス層ごとの低精度の重みWが、MACユニットのそれぞれのアレイに記憶される。図11のメモリ構造では、所与のMACアレイは、信号伝播が進行するにつれ、異なるシナプス層の重みWのために再利用することができる。特に、DPU4の制御下で、SRAMコントローラ52は、信号伝播動作が進行し、異なる層が活性状態になるにつれ、MACアレイにおける(1つまたは複数の)活性シナプス層の連続組について、重みwのnビット部分を動的に記憶することができる。MACアレイを用いて、トレーニング例のバッチについて、活性層にわたる伝播を行うことができ、次に、これを、活性層の次の組について、低精度の重みを用いて再プログラミングすることができる。
【0037】
図11の実施形態に対する変更形態において、シナプス層の重み行列が、MACアレイがその層の全ての重みWを記憶するには大きすぎる場合、MACアレイ内の重みWのブロック(効果的には、部分行列)を連続して記憶し、ブロックごとに乗算累算演算を行い、次にDPU4における全てのブロックについて、結果として得られた信号を累算することによって、信号伝播動作を行うことができる。
【0038】
図12は、メモリ装置3において使用するためのアナログMACアレイの別の実施形態を示す。このアレイ55の構成要素は、通常、図7の構成要素に対応するが、アレイ55の全てのアナログSRAMセル56が同じキャパシタンスCを有するコンデンサを含む点が異なる。この実施形態のアレイ制御回路部は、57において示されるようなデジタル・シフトおよび加算回路部を含む。この回路部は、セル56の異なる列に記憶されたビットの2の異なる累乗に対処するように、乗算累算演算において、列ラインにおける出力に対しシフトおよび加算演算を行う。列ライン出力のデジタル化後、回路57は、第n列のデジタル出力値を(n-1)ビットだけシフトし、第(n-1)列のデジタル出力値を(n-2)ビットだけシフトし、以下同様である。次に、全n列からの結果が回路57において加算され、図4の論理アレイ構成におけるメモリ素子の列におけるnビット重みのための乗算累算演算の結果が取得される。MACアレイ55は、図10の構造に対応する、組み合わされたデジタル/アナログ・アレイ構造に統合することもできる。
【0039】
ネットワークに依拠して、異なるシナプス層における重みは、異なる範囲にわたる場合があり、低精度の重みWを表すのにNビット重みの同じnビットを用いることが最適でない場合がある。これは、その層の重みにおける最上位ゼロ・ビットの数に依拠してシナプス層ごとにパラメータm(図3を参照)の初期値を定義することによって対処することができる。特に、層内の全ての重みwがM(M>0)個の最上位ゼロ・ビットを有する場合、mは、m=Mの初期値に設定することができる。このとき、デジタル・メモリに(最小限で)記憶される複数p個のLSBは、p=(N-n-m)として定義される。mの値は、シナプス層の重みにおける最上位ゼロ・ビットの数の変化に依拠して、メモリ・コントローラ8の制御下でトレーニング中に調整される。mの値の調整に応答して、シナプス層の重みのnビット部分は、mの調整された値に従って再定義される。このため、図3におけるnビット部分は、mが重み{w}におけるゼロMSBの数と共に変化するにつれ、Nビット重み値に沿って効果的に「スライド」する。次に、メモリ・コントローラ8は、重みの再定義されたnビット部分を記憶するように要求されるとき、MACユニットを再プログラミングする。例えば、再定義されたnビット部分は、メモリ装置のデジタルSRAMに記憶されたNビット重みからコピーすることができる。
【0040】
シナプス層についてm>0であるとき、MACアレイにおけるnビット重み値に基づく乗算累算演算の結果は、DPU4に供給する前に、メモリ・コントローラ8において2-mだけスケーリングすることができる。メモリ・コントローラ8は、デジタル・メモリにおけるNビット重みに対する重み更新中に第(N-m)ビットのビット・オーバフローが検出されるとき、層のためのmの値を減少させることができる。メモリ・コントローラは、層のために記憶された現在のnビット重みを周期的に読み出し、全nビット重みのMSBがゼロであるとき、mを増大させることができる。この方式は、乗算累算演算のために用いられる重みのより最適な定義を与え、トレーニングの正確性を向上させる。
【0041】
当然ながら、説明される本発明の例示的な実施形態に対し、多数の変形および変更を行うことができる。例えば、乗算累算演算は、上記の順伝播動作および逆伝播動作の双方についてMACユニット7において行われるが、MACユニット7が順伝播および逆伝播のうちの一方のみについて用いられる本発明の実施形態が想到され得る。例えば、順伝播がMACユニット7を用いて行われ、逆伝播計算がDPU4において行われてもよい。
【0042】
流れ図のステップは、示される順序と異なる順序で実施されてもよく、いくつかのステップは、適宜並列に実行されてもよい。通常、特徴は、本発明の態様を具現化する方法を参照して本明細書において説明されるが、対応する特徴は、本発明の態様を具現化する装置において提供されてもよく、逆もまた同様である。
【0043】
本発明の様々な実施形態の説明が、例示の目的で提示されたが、包括的であることも、開示される本発明の実施形態に限定されることも意図されていない。本発明の説明された実施形態の範囲および思想から逸脱することなく、多くの変更形態および変形形態が当業者には明らかとなろう。本明細書において用いられる用語は、本発明の実施形態の原理、実際の用途、もしくは市場に見られる技術を上回る技術の改善を最も良好に説明するため、または他の当業者が、本明細書に開示される本発明の実施形態を理解することを可能にするために選択された。
【0044】
本発明は、システム、コンピュータ実施方法、またはコンピュータ・プログラム製品、あるいはその組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。
【0045】
コンピュータ可読記憶媒体は、命令実行デバイスによって用いるための命令を保持および記憶することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、限定ではないが、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または上記の任意の適切な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタルバーサタイルディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録された溝内の隆起構造等の機械的に符号化されたデバイス、および上記の任意の適切な組合せが含まれる。本明細書において用いられるとき、コンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を通じて伝播する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、または配線を通じて送信される電気信号等の、一過性の信号自体であると解釈されるべきではない。
【0046】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはその組合せを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体への記憶のために転送する。
【0047】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk(R)、C++等のオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは同様のプログラミング言語等の従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、スタンドアロン・ソフトウェア・パッケージとして全体がユーザのコンピュータ上で、一部がユーザのコンピュータ上で、一部がユーザのコンピュータ上かつ一部がリモート・コンピュータ上で、または全体がリモート・コンピュータもしくはサーバ上で実行することができる。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む、任意のタイプのネットワークを介してユーザのコンピュータに接続することができ、または接続は、外部コンピュータに対して(例えば、インターネット・サービス・プロバイダを用いてインターネットを通じて)行ってもよい。いくつかの実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行することができる。
【0048】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書において説明されている。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実施されることが理解されよう。
【0049】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実施する手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供され、マシンを作り出すことができる。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作の態様を実施する命令を含む製造品を含むように、コンピュータ可読記憶媒体に記憶することもでき、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに対して特定の方式で機能するように指示できるものとすることができる。
【0050】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ実施プロセスを作り出すべくコンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされて、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものとすることもできる。
【0051】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、指定されるロジック機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表すことがある。いくつかの代替の実装形態では、ブロックに記載されている機能は、図に記載されている順序とは異なる順序で行われてもよい。例えば、連続して示されている2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されてよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、指定される機能もしくは動作を実行するか、または専用ハードウェアとコンピュータ命令との組合せを遂行する専用ハードウェア・ベースのシステムによって実施されることにも留意されたい。
【0052】
本発明の様々な実施形態の説明が、例示の目的で提示されたが、包括的であることも、開示される実施形態に限定されることも意図されていない。説明された実施形態の範囲および思想から逸脱することなく、多くの変更形態および変形形態が当業者には明らかとなろう。本明細書において用いられる用語は、実施形態の原理、実際の用途、もしくは市場に見られる技術を上回る技術の改善を最も良好に説明するため、または他の当業者が、本明細書に開示される実施形態を理解することを可能にするために選択された。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12