(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】2021500646
(43)【公表日】20210107
(54)【発明の名称】人工ニューラル・ネットワークを訓練する方法および人工ニューラル・ネットワークを実施する装置(人工ニューラル・ネットワークの訓練)
(51)【国際特許分類】
   G06N 3/08 20060101AFI20201204BHJP
   G06N 3/063 20060101ALI20201204BHJP
【FI】
   !G06N3/08 140
   !G06N3/063
【審査請求】未請求
【予備審査請求】未請求
【全頁数】39
(21)【出願番号】2020520136
(86)(22)【出願日】20181023
(85)【翻訳文提出日】20200408
(86)【国際出願番号】IB2018058251
(87)【国際公開番号】WO2019082077
(87)【国際公開日】20190502
(31)【優先権主張番号】62/576,081
(32)【優先日】20171024
(33)【優先権主張国】US
(31)【優先権主張番号】16/022,950
(32)【優先日】20180629
(33)【優先権主張国】US
(81)【指定国】 AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JO,JP,KE,KG,KH,KN,KP,KR,KW,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.RRAM
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所】アメリカ合衆国10504 ニューヨーク州 アーモンク ニュー オーチャード ロード
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】レガロ−ブルドー、マニュエル
【住所又は居所】スイス8803 チューリッヒ リュシュリコン ゾイマーシュトラーセ 4
(72)【発明者】
【氏名】セバスティアン、アブ
【住所又は居所】スイス8803 チューリッヒ リュシュリコン ゾイマーシュトラーセ 4
(72)【発明者】
【氏名】ボイバット カラ、イレム
【住所又は居所】スイス8803 チューリッヒ リュシュリコン ゾイマーシュトラーセ 4
(72)【発明者】
【氏名】エレフセリウー、エヴァンゲロス、スタブロス
【住所又は居所】スイス8803 チューリッヒ リュシュリコン ゾイマーシュトラーセ 4
(72)【発明者】
【氏名】サシダラン ラジャエクスミ、ナンダクマ
【住所又は居所】スイス8803 チューリッヒ リュシュリコン ゾイマーシュトラーセ 4
(57)【要約】
【課題】シナプスの層との間に挟まれているニューロン層の連続を有する人工ニューラル・ネットワークを訓練するために、方法および装置を提供する。
【解決手段】行ラインと列ラインとの間に接続されるメムリスティブ・デバイスのクロスバー・アレイのセットは、シナプスの層を実施する。各メムリスティブ・デバイスは、連続するニューロン層内のニューロンのそれぞれの対を相互接続するシナプスについての重み
【数1】
を記憶する。訓練方法は、方式の順伝播動作および逆伝播動作のうちの少なくとも1つにおいて、それぞれのニューロンに関連する入力信号をアレイのセットの行ラインおよび列ラインのうちの一方に適用して、行ラインおよび列ラインのうちの他方の出力信号を取得することと、アレイのセットに動作可能に連結されたデジタル処理ユニットにおいて、入力信号および出力信号に対応するデジタル信号値を記憶することと、によって、反復型訓練方式の順伝播動作、逆伝播動作、および重み更新動作を実行することを含む。方式の重み更新動作は、記憶されたデジタル信号値に依存してそれぞれのメムリスティブ・デバイスについてのデジタル重み補正値ΔWを、デジタル処理ユニットにおいて計算することと、それぞれのデジタル重み補正値ΔWに応じて、記憶された重み
【数2】
を更新するためにプログラミング信号をそれらのデバイスに適用することと、によって実行される。
【選択図】図5
【特許請求の範囲】
【請求項1】
複数のニューロン層の連続と、前記複数のニューロン層との間に挟まれているシナプスの層を実施する、行ラインと列ラインとの間に接続されたメムリスティブ・デバイスのクロスバー・アレイのセットと、を有する人工ニューラル・ネットワークを訓練する方法であって、各メムリスティブ・デバイスが、連続するニューロン層内のニューロンのそれぞれの対を相互接続するシナプスについての重み
【数1】
を記憶し、前記方法が、
反復型訓練方式の順伝播動作および逆伝播動作のうちの少なくとも1つにおいて、それぞれのニューロンに関連して、入力信号を前記アレイのセットの行ラインおよび列ラインのうちの一方に適用して、前記行ラインおよび列ラインのうちの他方の出力信号を取得することと、
前記アレイのセットに動作可能に連結されたデジタル処理ユニットにおいて、前記入力信号および出力信号に対応する複数のデジタル信号値を記憶することと、
前記複数のデジタル信号値に依存してそれぞれのメムリスティブ・デバイスについてのデジタル重み補正値ΔWを、前記デジタル処理ユニットにおいて計算すること、およびそれぞれの前記デジタル重み補正値ΔWに応じて、記憶された前記重み
【数2】
を更新するためにプログラミング信号を前記デバイスに適用することにより、前記方式の重み更新動作を実行することと、
によって、前記反復型訓練方式の前記順伝播動作、前記逆伝播動作、および前記重み更新動作を実行することを含む、方法。
【請求項2】
前記順伝播動作において、前記入力信号を前記アレイのセットの行ラインに適用して、前記列ラインの出力信号を取得することを含む、請求項1に記載の方法。
【請求項3】
前記逆伝播動作において、前記入力信号を前記アレイのセットの列ラインに適用して、前記行ラインの出力信号を取得することを含む、請求項2に記載の方法。
【請求項4】
前記デジタル処理ユニットにおいて、各重み補正値ΔWを所定のステップ・サイズεで丸めて、丸めた補正値
【数3】
を生成することを含み、メムリスティブ・デバイスに適用される前記プログラミング信号が、前記記憶された重み
【数4】
を、前記デバイスについての前記丸めた補正値
【数5】
に依存した量だけ調整する、請求項1に記載の方法。
【請求項5】
前記デジタル重み補正値が、少なくとも16ビット精度で前記デジタル処理ユニットによって計算される、請求項4に記載の方法。
【請求項6】
前記デジタル処理ユニットにおいて、それぞれのメムリスティブ・デバイスによって記憶された前記重み
【数6】
に対応するデジタル重み値を記憶することと、
前記重み更新動作において、それぞれのデバイスについての新たなデジタル重み値を、各デバイスについての記憶された前記デジタル重み値および前記デジタル重み補正値ΔWから、前記デジタル処理ユニットにおいて計算することと、を含み、
メムリスティブ・デバイスに適用される前記プログラミング信号が、前記デバイスについての前記新たなデジタル重み値に依存する、請求項1に記載の方法。
【請求項7】
前記重み更新動作において、
それぞれのメムリスティブ・デバイスによって記憶された前記重み
【数7】
を読み出すことと、
前記デジタル処理ユニットにおいて、デバイスについての前記新たなデジタル重み値と前記デバイスについての読み出された前記重み
【数8】
との間の差を計算することと、を含み、
メムリスティブ・デバイスに適用される前記プログラミング信号が、前記記憶された重み
【数9】
を、前記デバイスについての前記差に依存した量だけ調整する、請求項6に記載の方法。
【請求項8】
前記重み更新動作において、各デバイスを前記デバイスについての前記新たなデジタル重み値に基づいて再プログラムするために前記プログラミング信号を適用することを含む、請求項6に記載の方法。
【請求項9】
前記デジタル重み値が、少なくとも16ビット精度で前記デジタル処理ユニットによって記憶される、請求項6に記載の方法。
【請求項10】
前記デジタル処理ユニットにおいて、それぞれのメムリスティブ・デバイスについてのデジタル累積値を記憶することを含み、前記重み更新動作において、
前記デジタル処理ユニットにおいて、それぞれのメムリスティブ・デバイスについての更新された累積値を、各デバイスについての前記重み補正値ΔWおよび記憶された累積値から計算すること、ならびに重み調整量を各デバイスについての前記更新された累積値から決定することであって、メムリスティブ・デバイスに適用される前記プログラミング信号が、前記記憶された重み
【数10】
を前記デバイスについての前記重み調整量に対応する量だけ調整する、前記決定することと、
前記デジタル処理ユニットにおいて、各デバイスについての前記更新された累積値から前記重み調整量を減算することによって、それぞれのデバイスについての新たなデジタル累積値を計算することと、を含む、請求項1に記載の方法。
【請求項11】
前記デジタル処理ユニットにおいて、前記デバイスに適用されるべき前記プログラミング・パルスの数nを取得するために、所定のプログラミング・パルスの適用に応じた前記デバイスの重み変更を示す所定のステップ・サイズεで、各メムリスティブ・デバイスについての前記更新された累積値を丸めることによって、前記重み調整量を決定することであって、前記メムリスティブ・デバイスに適用される前記プログラミング信号が、n個の前記パルスを含む、前記決定することを含む、請求項10に記載の方法。
【請求項12】
前記デジタル処理ユニットにおいて、各メムリスティブ・デバイスについての前記更新された累積値を、所定のプログラミング・パルスの適用に応じた前記デバイスの重み変更を示すステップ・サイズεに依存する所定の閾値と比較することと、
デバイスについての前記更新された累積値が、前記閾値を超える場合、前記プログラミング・パルスを前記プログラミング信号として前記デバイスに適用することと、
を含む、請求項10に記載の方法。
【請求項13】
前記デジタル重み補正値および前記新たなデジタル累積値が、少なくとも16ビット精度で前記デジタル処理ユニットによって計算される、請求項10に記載の方法。
【請求項14】
前記デジタル処理ユニットにおいて、前記先行ニューロン層から取得された前記出力信号に対応する前記デジタル信号値に活性化関数を適用することによって、前記順伝播動作において前記層の前記ニューロンを実施して、前記ニューロンに関連する前記入力信号に対応する前記デジタル信号値を生成することを含む、請求項2に記載の方法。
【請求項15】
前記逆伝播動作において、
前記順伝播動作におけるニューロンの最後の層について、前記デジタル処理ユニットにおいて、前記ニューラル・ネットワークの予想出力、および前記先行ニューロン層から取得された前記出力信号に対応する前記デジタル信号値に依存してそれぞれの誤差値を計算することと、
前記誤差値に対応する信号を、前記最後の層におけるニューロンに関連する前記入力信号として適用することと、
最後から2番目のニューロン層まで各後続のニューロン層について、前記デジタル処理ユニットにおいて、前記層におけるニューロンについてのそれぞれの誤差値を、前記逆伝播動作における先行ニューロン層から取得された前記出力信号および前記順伝播動作における前記先行ニューロン層から取得された前記出力信号に対応する前記デジタル信号値に基づいて計算することと、
を含む、請求項3に記載の方法。
【請求項16】
前記デジタル処理ユニットにおいて、それぞれのメムリスティブ・デバイスについてのデジタル累積値を記憶することを含み、前記重み更新動作中の前記デジタル処理ユニットにおいて、
前記順伝播動作においてニューロンnから受信される前記入力信号および前記逆伝播動作においてニューロンnについて計算された前記誤差信号の関数として、ニューロンnおよびnの対を相互接続するシナプスに対応するメムリスティブ・デバイスについての前記デジタル重み補正値ΔWを計算することと、
それぞれのメムリスティブ・デバイスについての更新された累積値を、各デバイスについての前記重み補正値ΔWおよび記憶された累積値から計算すること、ならびに重み調整量を各デバイスについての前記更新された累積値から決定することであって、メムリスティブ・デバイスに適用される前記プログラミング信号が、前記記憶された重み
【数11】
を前記デバイスについての前記重み調整量に対応する量だけ調整する、前記決定することと、
各デバイスについての前記更新された累積値から前記重み調整量を減算することによって、それぞれのデバイスについての新たなデジタル累積値を計算することと、を含む、請求項15に記載の方法。
【請求項17】
シナプスの層との間に挟まれている複数のニューロン層の連続を有する人工ニューラル・ネットワークを実施する装置であって、各シナプスが、連続するニューロン層内のニューロンのそれぞれの対を相互接続し、前記装置が、
行ラインおよび列ラインの間に接続されるメムリスティブ・デバイスのクロスバー・アレイのセットであって、各メムリスティブ・デバイスが、それぞれの前記シナプスについての重み
【数12】
を記憶する、前記メムリスティブ・デバイスのクロスバー・アレイのセット、ならびに前記行ラインおよび列ラインを介して前記メムリスティブ・デバイスへの信号の適用を制御するコントローラを含む、メムコンピューティング・ユニットと、
反復型訓練方式の順伝播動作、逆伝播動作、および重み更新動作の前記装置による実行を制御するように適合される、前記メムコンピューティング・ユニットに動作可能に連結されたデジタル処理ユニットと、を備え、
前記方式の前記順伝播動作および逆伝播動作のうちの少なくとも1つにおいて、前記コントローラが、それぞれのニューロンに関連して、入力信号を、前記アレイのセットの行ラインおよび列ラインのうちの一方に適用して、前記行ラインおよび列ラインのうちの他方の出力信号を取得し、
前記デジタル処理ユニットが、前記入力信号および出力信号に対応する複数のデジタル信号値を記憶し、
前記方式の前記重み更新動作において、前記デジタル処理ユニットが、前記複数のデジタル信号値に依存してそれぞれのメムリスティブ・デバイスについてのデジタル重み補正値ΔWを計算し、前記コントローラが、それぞれの前記デジタル重み補正値ΔWに応じて、記憶された前記重み
【数13】
を更新するためにプログラミング信号を前記デバイスに適用する、装置。
【請求項18】
前記コントローラが、前記順伝播動作において、前記入力信号を前記アレイのセットの行ラインに適用して前記列ラインの出力信号を取得し、前記逆伝播動作において、前記入力信号を前記アレイのセットの列ラインに適用して前記行ラインの出力信号を取得するように適合される、請求項17に記載の装置。
【請求項19】
前記デジタル処理ユニットが、前記先行ニューロン層から取得された前記出力信号に対応する前記デジタル信号値に活性化関数を適用することによって、前記順伝播動作において前記層の前記ニューロンを実施して、前記ニューロンに関連する前記入力信号に対応する前記デジタル信号値を生成するように適合される、請求項18に記載の装置。
【請求項20】
前記デジタル処理ユニットが、各重み補正値ΔWを所定のステップ・サイズεで丸めて、丸めた補正値
【数14】
を生成するように適合され、
前記コントローラが、前記プログラミング信号をメムリスティブ・デバイスに適用して、前記記憶された重み
【数15】
を、前記デバイスについての前記丸めた補正値
【数16】
に依存した量だけ調整するように適合される、請求項17に記載の装置。
【請求項21】
前記デジタル処理ユニットが、それぞれのメムリスティブ・デバイスによって記憶される前記重み
【数17】
に対応するデジタル重み値を記憶し、前記重み更新動作において、各デバイスについての前記記憶されたデジタル重み値および前記デジタル重み補正値ΔWから、それぞれのデバイスについての新たなデジタル重み値を計算するように適合され、
前記装置が、メムリスティブ・デバイスに適用される前記プログラミング信号が前記デバイスについての前記新たなデジタル重み値に依存するように適合される、請求項17に記載の装置。
【請求項22】
前記デジタル処理ユニットが、それぞれのメムリスティブ・デバイスについてデジタル累積値を記憶するように適合され、
前記重み更新動作において、前記デジタル処理ユニットが、それぞれのメムリスティブ・デバイスについての更新された累積値を、各デバイスについての前記重み補正値ΔWおよび記憶された累積値から計算し、重み調整量を各デバイスについての前記更新された累積値から決定し、各デバイスについての前記更新された累積値から前記重み調整量を減算することによってそれぞれのデバイスについての新たなデジタル累積値を計算するように適合され、
メムリスティブ・デバイスに適用される前記プログラミング信号が、前記記憶された重み
【数18】
を前記デバイスについての前記重み調整量に対応する量だけ調整するように、前記装置が適合される、請求項17に記載の装置。
【請求項23】
前記デジタル処理ユニットが、前記デジタル重み補正値および前記新たなデジタル累積値を少なくとも16ビット精度で計算するように適合される、請求項22に記載の装置。
【請求項24】
各メムリスティブ・デバイスが、複数のメムリスティブ・メモリ素子を含む、請求項17に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、人工ニューラル・ネットワークの訓練に関する。
【背景技術】
【0002】
人工ニューラル・ネットワーク(ANN)は、神経系の生物学的アーキテクチャから着想を得たやり方で計算タスクを実行するために開発されている。これらのネットワークは、ニューロン間で信号を中継するシナプスを介してニューロンが相互に接続される、生物学的システムの原理に基づいている。生物学上のニューロンは、その入力信号を処理し、それぞれのシナプスを介して他のニューロンに送信される出力信号を生成する。シナプスによって送信される信号強度は、「シナプス効果」または「重み」としても知られるシナプスの伝導度に依存する。シナプスの重みは、ニューロンの活動によって変化することがあり、このシナプスの「適応性」は、記憶および他の脳機能にとって重要である。人工ニューラル・ネットワークは、ニューロン層の連続がシナプスの層との間に挟まれている論理構造に基づき、各シナプスは、連続するニューロン層内のニューロンのそれぞれの対を相互接続する。シナプスを介して中継される信号は、シナプスについて記憶されたそれぞれのシナプスの重みに従って重み付けされる。重み付けされた信号は、よって、連続したネットワークの層を経て入力ニューロン層から出力ニューロン層へ伝播され得る。
【0003】
ANNは、音声および画像認識、例えば、MNIST(Modified National Institute of Standards and Technology)データセットに基づく手書き数字の分類などの様々な複雑な解析タスクにおいて上手く適用されている。ANNの動作は、シナプスの重みが決定される訓練段階を伴う。ネットワークが訓練データから「学習する」と重みが繰り返し更新される反復型訓練方式において、ネットワークは、訓練データのセット、例えば手書き数字についての画像データにさらされる。手書き数字の教師あり学習において、例えば、ラベル(ここでは、0から9の数字クラス)が既知であるMNISTデータが、ネットワークに繰り返し供給される。最後のニューロン層からの出力信号は、誤差を決定するために各数字についての予想されたネットワーク出力と比較され、重みは、収束条件に達するまで、誤差を減少させるように繰り返し更新される。特に、反復型訓練プロセスのステップは、順伝播動作、逆伝播動作、および重み更新動作を伴う。順伝播動作において、訓練データから導出される信号は、入力ニューロン層から出力ニューロン層へ伝播される。結果として生じる誤差信号は、次いで、入力層を除く各層においてニューロンについての誤差信号を取得するための逆伝播動作において、ネットワークを通して出力ニューロン層から入力ニューロン層に逆に伝播される。重み更新動作において、シナプスの重みが、次いで、これらの誤差信号および順伝播の間のニューロン出力信号に基づいて更新される。
【0004】
複数の(例えば、10以上の)ニューロン層および数百万のシナプスの重みを有し得るANNの訓練は、大幅な処理リソースおよび膨大な訓練時間を要する計算的集中型タスクである。メムリスティブ・シナプスのクロスバー・アレイに基づくアナログ訓練方法は、これらの問題を軽減するために提案されている。これらの方法は、信号をデバイスに適用するために行ラインと列ラインとの間に接続される、メムリスティブ・デバイスのアレイの並列計算ケイパビリティを活用する。ここで、各デバイスは、(可変の)デバイス伝導度に対応する重みを有するシナプスを実施する。このような方法が、“Experimental demonstration and tolerancing of a large-scale neural network(165000 synapses) using phase-change memory as the synaptic weight element”,Burr他,IEEE Transactions on Electron Devices 62(11),pp.3498-3507,2015、および“Acceleration of Deep Neural Network Training with Resistive Cross-Point Devices:Design Considerations”,Gokmen&Vlasov,Frontiers in Neuroscience,Vol.10,2016に記載されている。これらのシステムは、順伝播信号および逆伝播誤差から導出され、重み更新動作のためにデバイスの行ラインおよび列ラインに同時適用されるパルス信号で、行ラインまたは列ラインあるいはその両方に信号を適用することによって、メムリスティブ・アレイ上の順伝播、逆伝播、および重み更新計算を実行する。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】“Experimental demonstration and tolerancingof a large-scale neural network (165 000 synapses) using phase-change memory as the synaptic weight element”,Burr他,IEEE Transactions on Electron Devices 62(11),pp.3498-3507,2015
【非特許文献2】“Acceleration of Deep Neural Network Training with Resistive Cross-Point Devices:Design Considerations”,Gokmen&Vlasov,Frontiers in Neuroscience,Vol.10,2016
【発明の概要】
【発明が解決しようとする課題】
【0006】
メムリスティブ・アレイのケイパビリティを活用することによって、これらの方法は、ANN訓練に関連する計算複雑性を劇的に低下させる。しかしながら、両方のシステムでは、高精度の64ビット浮動小数点デジタルの実施と比較して、訓練正確性が大幅に低下する。Burrのシステムは、デバイスの欠陥に非常に影響を受けやすく、Gokmenのシステムは、既存のメムリスティブ・デバイスが浮動小数点の実施に匹敵する正確性を取得するために、達成できないほど多数の伝導状態を必要とする。
【課題を解決するための手段】
【0007】
本発明の少なくとも1つの実施形態によれば、ニューロン層の連続と、ニューロン層との間に挟まれているシナプスの層を実施する、行ラインと列ラインとの間に接続されたメムリスティブ・デバイスのクロスバー・アレイのセットと、を有する人工ニューラル・ネットワークを訓練する方法が提供される。各メムリスティブ・デバイスは、連続するニューロン層内のニューロンのそれぞれの対を相互接続するシナプスについての重み
【数1】
を記憶する。方法は、方式の順伝播動作および逆伝播動作のうちの少なくとも1つにおいて、それぞれのニューロンに関連して、入力信号をアレイのセットの行ラインおよび列ラインのうちの一方に適用して、行ラインおよび列ラインのうちの他方の出力信号を取得することと、アレイのセットに動作可能に連結されたデジタル処理ユニットにおいて、入力信号および出力信号に対応するデジタル信号値を記憶することと、によって、反復型訓練方式の順伝播動作、逆伝播動作、および重み更新動作を実行することを含む。方式の重み更新動作は、記憶されたデジタル信号値に依存してそれぞれのメムリスティブ・デバイスについてのデジタル重み補正値ΔWを、デジタル処理ユニットにおいて計算することと、それぞれのデジタル重み補正値ΔWに応じて、記憶された重み
【数2】
を更新するためにプログラミング信号をそれらのデバイスに適用することと、によって実行される。
【0008】
発明の実施形態は、メムリスティブ・アレイのセットが順伝播ステップおよび逆伝播ステップのうちの1つまたは両方における(本来低精度の)計算に使用され、かつデジタル処理ユニットが重み更新ステップのための重み更新計算を実行するために使用される、混合精度ANN訓練方法を提供する。これは、重み更新計算の特定のステップとして、メムリスティブ・デバイスについてデジタル重み補正値ΔWを計算すること、即ち、記憶された重みの増分変化に対応することを伴う。この計算は、デジタル精度で実行され、結果となるデジタル値は、次いで、記憶された重みを更新するためにメムリスティブ・デバイスに適用されるプログラミング信号を決定するために使用される。この技術は、メムリスティブ・アレイに関連する恩恵、即ち、著しい速度、電力、および面密度の利点を保持しつつ、重み更新動作の改善された正確性を提示する。したがって、発明の実施形態は、メムリスティブ・アレイに基づく高速で効率的なANN訓練方法を提示する。浮動小数点の実施と匹敵する正確性が、後述する実施形態について実証されるように容易に達成され得る。
【0009】
好適な実施形態は、入力信号をアレイのセットの行ラインに適用して列ラインの出力信号を取得することにより、メムリスティブ・アレイ上の順伝播動作を少なくとも実行する。メムリスティブ・アレイの並列計算設備をさらに活用するために、逆伝播もまた、入力信号をアレイのセットの列ラインに適用して行ラインの出力信号を取得することにより、アレイ・セットに対して実行されることが好ましい。
【0010】
第1の重み更新手続において、デジタル処理ユニットは、各重み補正値ΔWを所定のステップ・サイズεで丸めて、丸めた補正値
【数3】
を生成し得る。メムリスティブ・デバイスに適用されるプログラミング信号は、次いで、記憶された重み
【数4】
を、そのデバイスについての丸めた補正値
【数5】
に依存した量だけ調整する。これは、新たな重みの完全な再プログラミングとは対照的に、重みのセットがデジタル処理ユニットに記憶される必要がないという利点とともに、記憶された重みの増分更新を実行する。
【0011】
他の実施形態では、デジタル処理ユニットは、それぞれのメムリスティブ・デバイスによって記憶された重み
【数6】
に対応するデジタル重み値Wを記憶し得る。ここで第2の重み更新手続において、デジタル処理ユニットは、それぞれのデバイスについて新たなデジタル重み値を、各デバイスについての記憶されたデジタル重み値およびデジタル重み補正値ΔWから計算し得る。そのときメムリスティブ・デバイスに適用されるプログラミング信号は、そのデバイスについての新たなデジタル重み値に依存する。これは、新たな重み値が、新たなW=現在のW+ΔWとして、現在記憶されている重み値Wからデジタル精度で計算され、それによって、ΔWについての情報が、上記第1の方法におけるように丸めに起因して失われないため、優れた正確性を提示する。
【0012】
特に好適な実施形態において、デジタル処理ユニットは、それぞれのメムリスティブ・デバイスについてのデジタル累積値χを記憶する。ここで第3の重み更新手続において、デジタル処理ユニットは、各デバイスについての重み補正値ΔWおよび記憶された累積値χからそれぞれのメムリスティブ・デバイスについての更新された累積値を計算し、各デバイスについての更新された累積値から重み調整量Aを決定する。メムリスティブ・デバイスに適用される上記プログラミング信号は、次いで、記憶された重み
【数7】
を、そのデバイスについての重み調整量Aに対応する量だけ調整する。デジタル処理ユニットは、各デバイスについての更新された累積値から重み調整量を減算することによって、それぞれのデバイスについての新たなデジタル累積値を計算する。これは、以下でさらに説明されるように、非常に正確かつ効率的な動作を提示して、累積値χにおいてΔWの十分な正確性を保持する。
【0013】
第3の重み更新手続において、重み調整量Aは、デバイスに適用されるべき上記プログラミング・パルスの数nを取得するために、所定のプログラミング・パルスの適用に応じたデバイスの重み変更を示す所定のステップ・サイズεで、各メムリスティブ・デバイスについての更新された累積値を丸めることによって決定され得る。これは、各デバイスについてn個のパルスとしてプログラミング信号の簡単な実施を可能にする。ここで他の実施形態において、デジタル処理ユニットは、各メムリスティブ・デバイスについての更新された累積値を、ステップ・サイズεに依存する所定の閾値と比較することによって、重み調整量Aを決定する。更新された累積値が、この閾値を超える場合、プログラミング・パルスが、デバイスに適用される。これは、プログラミング信号が単一パルスによって実施されることを可能にし、よって、重み更新毎にただ1つのパルスが必要とされる。
【0014】
発明の少なくとも1つのさらなる実施形態は、人工ニューラル・ネットワークを実施する装置を提供する。装置は、メムコンピューティング・ユニットと、メムコンピューティング・ユニットに動作可能に連結されたデジタル処理ユニットと、を含む。メムコンピューティング・ユニットは、行ラインおよび列ラインの間に接続されるメムリスティブ・デバイスのクロスバー・アレイのセットであって、各メムリスティブ・デバイスがそれぞれのシナプスについての重み
【数8】
を記憶する、メムリスティブ・デバイスのクロスバー・アレイのセットと、行ラインおよび列ラインを介してメムリスティブ・デバイスへの信号の適用を制御するコントローラと、を含む。デジタル処理ユニットは、上述した方法による反復型訓練方式の順伝播動作、逆伝播動作、および重み更新動作の装置により実行を制御するように適合される。
【0015】
発明の実施形態は、添付図面を参照して、例示的かつ非限定的な例として以下でより詳細に説明される。
【図面の簡単な説明】
【0016】
【図1】人工ニューラル・ネットワークの概略表現の図である。
【図2】人工ニューラル・ネットワークを実施するための発明を具現化する装置の概略ブロック図である。
【図3】図2の装置のメムリスティブ・アレイの構造を示す図である。
【図4】メムリスティブ・アレイにおいて使用するための例示的メムリスティブ・デバイスの概略図である。
【図5】図2の装置によって実行される訓練方法の基本ステップを示す図である。
【図6】順伝播動作のより詳細なステップを示す図である。
【図7】順伝播動作におけるメムリスティブ・アレイの動作を示す図である。
【図8】逆伝播動作のより詳細なステップを示す図である。
【図9】逆伝播動作におけるメムリスティブ・アレイの動作を示す図である。
【図10】第1の重み更新動作のステップを示す図である。
【図11】第1の重み更新動作を用いた訓練方法についてのシミュレーション結果を示す図である。
【図12】第2の重み更新動作のステップを示す図である。
【図13】第2の重み更新動作を用いた訓練方法についてのシミュレーション結果を示す図である。
【図14】第3の重み更新動作のステップを示す図である。
【図15】図14の動作のステップの異なる実施を示す図である。
【図16】図14の動作のステップの異なる実施を示す図である。
【図17】第3の重み更新動作を用いた訓練方法についてのシミュレーション結果を示す図である。
【発明を実施するための形態】
【0017】
図1は、例示的なANNの論理構造を示す。ANN1は、シナプスの層との間に挟まれているニューロンの層の連続を含む。図示される簡単な例では、ネットワークが3つのニューロン層、すなわち、ネットワーク入力信号を受信する入力ニューロン層、ネットワークの出力信号を提供する出力ニューロン層、および入力層と出力層との間のニューロンの中間(「隠れ」)層を有する。入力層(層1)内のニューロンは、n1i(1≦i≦N)によってここで示され、隠れ層(層2)内のニューロンは、n2j(1≦j≦N)によって示され、出力層(層3)内のニューロンは、n3k(1≦k≦N)によって示される。ここで、Nは、層x内のニューロンの数である。各層内のニューロンは、図示されるように、シナプスsijまたはsjkを介して次の層内のニューロンに接続される。各シナプスsij、sjkは、連続するニューロン層内のニューロンのそれぞれの対を相互接続する。その接続されたニューロン間のシナプスsijまたはsjkによって中継される信号は、それぞれのシナプス重みwijまたはwjkに従って重み付けされる。入力ニューロン層および隠れニューロン層は、入力信号を受信しないが所定のバイアス信号を次のニューロン層に送信する、1つまたは複数のバイアス・ニューロン(図中で網掛けで示される)を含み得る。完全接続型の構成が示されているが、概して、任意の所与の層内のニューロンは、次の層内の1つまたは複数のニューロンに接続されてもよく、ネットワークは、隠れニューロンの1つまたは複数の(一般には最大30以上の)連続する層を含んでもよい。
【0018】
図2は、ANN1を実施するための発明を具現化する装置を示す。装置2は、メムコンピューティング・ユニット3およびデジタル処理ユニット4を含み、デジタル処理ユニット4は、ここでシステム・バス5を介して、メムコンピューティング・ユニット3に動作可能に連結される。メムコンピューティング・ユニット3は、(1つまたは複数の)メムリスティブ・クロスバー・アレイ6のセット、およびメムコンピューティング・ユニットの動作を制御するコントローラ7を含む。デジタル処理ユニット4は、中央処理装置(CPU)7およびメモリ8を含む。メモリ8は、後述する動作の機能的ステップを実施するための、CPU7によって実行可能なプログラム命令を含む1つまたは複数のプログラム・モジュール9を記憶する。
【0019】
図3は、メムリスティブ・アレイ6のセットの論理構造を示す。この例では、アレイの行ラインと列ラインとの間に接続されたメムリスティブ・デバイス10の2つのクロスバー・アレイを含む。第1のアレイaは、図1のANN1内の第1のニューロン層と第2のニューロン層との間にシナプスsijの層を実施する。アレイaの各メムリスティブ・デバイス10は、それぞれのシナプスsijについての重み
【数9】

を記憶する。重み
【数10】

は、デバイスの電気伝導度に対応し、デバイスへのプログラミング信号の適用により動作を変化させ得る。重み
【数11】

は、したがって、アクセント符号
【数12】

によって示されるように、本来低精度で記憶される。デバイス10は、各デバイスがデバイスへの信号の適用のために特定の行ラインおよび列ラインに接続されるように論理行および論理列に配列される。アレイaの行ラインrは、ANN1のそれぞれの入力ニューロンn1iとシナプスsijとの間の接続として見られ得る。アレイaの列ラインcは、同様に、ANN1のそれぞれの層2のニューロンn2jとシナプスsijとの間の接続として見られ得る。行ラインおよび列ラインは、デジタル・ドメインとアナログ・ドメインとの間でアレイ入力/出力信号を変換する、行デジタル・アナログ/アナログ・デジタル・コンバータ(DAC/ADC)11および列デジタル・アナログ/アナログ・デジタル・コンバータ(DAC/ADC)12を介して、メムコンピューティング・ユニット2のコントローラ7に接続される。
【0020】
アレイ・セット6の第2のアレイaは、ANN1の第2のニューロン層と第3のニューロン層との間のシナプスsjkの層を実施する。構造は、アレイa1の構造に直接対応する。したがって、アレイa2のデバイス10は、シナプスsjkについての重み
【数13】

を記憶し、行ラインrはそれぞれの層2のニューロンn2jとシナプスsjkとの間の接続を表し、列ラインcは、それぞれの出力層ニューロンn3kとシナプスsjkとの間の接続を表す。
【0021】
コントローラ7は、アレイの行ラインおよび列ラインを介してメムリスティブ・デバイス10への信号の適用を制御するための制御回路を提供する。以下で詳細に説明するように、信号は、装置2の計算動作に使用される「読み出し」モードにおいてアレイに入力され、かつアレイから出力される。プログラミング信号は、重み更新動作に使用される「書き込み」(プログラミング)モードにおいてメムリスティブ・デバイス10に適用される。読み出し/書き込み制御回路は、デバイス10における特定のメムリスティブ・シナプスの実施による既知のやり方で概して実施され得る。多様なメムリスティブ・シナプス・デバイスは、例えば、相変化メモリ(PCM)・セルなどの抵抗変化型メモリ・セルに基づいて、当技術分野において既知である。これらのデバイスは、セルのプログラム可能な伝導状態において情報を記憶するように様々な回路構成で配列され得る、1つまたは複数のメモリ・セルを含む。本明細書における好適な実施形態は、以下でより詳細に説明されるように、複数のPCMセルに基づいてメムリスティブ・デバイスを採用し、情報のマルチビット記憶を提供する。コントローラ7はまた、動作中にメムコンピューティング・ユニット3によるシステム・バス5への入力およびシステム・バス5からの出力を制御する。
【0022】
デジタル処理ユニット(DPU)4は、ANN1についての反復型訓練方式の動作ステップの装置2による実行を制御するように適合される。訓練プロセスは、メモリ8内のプログラム・モジュール9からロードされるプログラム命令の実行を介してCPU7により制御される。メモリ8は、また、訓練プロセスの様々なステップにおいてメムコンピューティング・ユニット3に供給され、かつメムコンピューティング・ユニット3から受信されるデータ項目を含む、動作中にCPU7によって使用される様々なデータを記憶する。CPU7は、訓練プロセスの間DPU4において必要とされる計算を実行し、DPU4によってシステム・バス5へのデータの入力およびシステム・バス5からのデータの出力を制御する。CPU7はまた、バス5を介してコントローラ7に送信された制御命令を介して、メムコンピューティング・ユニット3の動作モードを制御する。
【0023】
装置2の例示的実施形態が説明されているが、DPU4は、1つまたは複数のマイクロプロセッサによって実施され得る1つまたは複数のCPU(GPU(グラフィック処理ユニット)を含む)を含み得る。メモリ8は、1つまたは複数のデータ記憶エンティティを含んでもよく、メイン・メモリ、例えば、DRAM(動的ランダム・アクセス・メモリ)またはCPU7から物理的に分離された他の記憶装置あるいはその両方、およびキャッシュまたはCPU7にローカルな他のメモリあるいはその両方を含んでもよい。概して、DPU4は、1つまたは複数の(汎用または専用)コンピュータ/プログラマブル・データ処理装置によって実施されてもよく、DPU4によって実行される処理動作の機能ステップは、概して、ハードウェアもしくはソフトウェア、またはその組み合わせによって実施されてもよい。コントローラ7は、また、後述する機能を実行するようにメムコンピューティング・ユニット2を制御するためのソフトウェア命令によって構成可能な、1つまたは複数のプロセッサを含み得る。コントローラ7によって実行される特定の機能ステップは、ハードウェアもしくはソフトウェア、またはその組み合わせにおいて実施されてもよい。説明される機能ステップを実施するための適当なソフトウェアが、当業者には容易に明らかとなるであろう。
【0024】
いくつかの実施形態では、DPU4またはコントローラ7あるいはその両方が、説明される機能を実施するプログラム命令を実行するための、プログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)などの電子回路を含み得る。実施形態が、フローチャート図を参照して説明される場合に、フローチャート図の各ブロックまたはフローチャート図内のブロックの組み合わせ、あるいはその両方が、コンピュータ実行可能プログラム命令によって実施され得ると理解される。プログラム命令/プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。フローチャート図内のブロックまたはブロックの組み合わせは、また、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組み合わせを遂行する、専用ハードウェアベース・システムによって実施されてもよい。
【0025】
システム・バス5は、メモリ・バスまたはメモリ・コントローラ、周辺バス、高速グラフィック・ポート、および多様なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数種類のバス構造のいずれかの1つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA)・バス、マイクロ・チャネル・アーキテクチャ(MCA)・バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)・ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI)・バスを含む。
【0026】
概して、ANN1のシナプスsij、sjkの層は、メムリスティブ・デバイス10の1つまたは複数のクロスバー・アレイによって実施され得る。これらのアレイの「行」および「列」は、単なる論理的な指定であり、コンポーネントの物理的な向きまたは配列に関していかなる制約も示唆しないと理解される。しかしながら、典型的なPCMベースのデバイス・アレイにおいて、デバイスおよび供給ラインは、図3に概略的に示されるように、行および列の規則的なアレイ内に配列される。そのようなメムリスティブ・デバイスの密集したクロスバー・アレイは、周知の材料処理技術を用いて集積ナノスケール・システムとして製造され、大規模な並列かつ高いエリア効率およびエネルギー効率の実施を提示し得る。
【0027】
図4は、複数のPCMセルに基づく、メムリスティブ・デバイス10についての例示的実施を示す。当技術分野において周知であるように、PCMセルは、セル端子を提供する電極の対の間に配置される、PCM物質、例えば、GST(ゲルマニウム−アンチモン−テルル)などのカルコゲナイドの体積の可変抵抗特性を活用する。この例では、デバイス10は、4つのPCMセル20を含む。各セル20の1つの端子が、デバイスの列ラインcに接続される。各セルの他の端子が、デバイスの行ラインrのそれぞれのコンポーネント・ラインに接続される。対応するコンポーネント行ラインおよび列ラインを介したセル20への適当なプログラミング・パルスの適用によって、セルは、高抵抗(アモルファス)状態または低抵抗(結晶)状態にプログラミングされ得る。各セル20は、したがって、1ビットの情報を記憶してもよく、4つのセルは、高抵抗状態および低抵抗状態のうちのそれぞれにおけるセルの数に依存して5つの異なる重みについての記憶装置をまとめて提供する。これは、図示されるように4つのセル20を用いて記憶される重み
【数14】

について2ビット精度を与え、2個のセルは、概してNビット精度を提供する。コントローラ7によるデバイス10のプログラミングは、特定のセル20が記憶された重みを増加または減少させるように対処される順序を決定するために、クロックベースの調停方式を用いて実行されてもよい。記憶された重みは、行ラインr(の全てのコンポーネント)への(低電圧)読み出し信号を適用することによって、「読み出され」得る。それによって、デバイスの列ラインc上の結果の電流は、4つ全てのセルの伝導度、およびしたがって、合計の記憶された重み
【数15】

に依存する。
【0028】
後述する実施形態において、ANN1のニューロンn1i、n2j、n3kの機能性は、ニューロン入力信号に所定の「活性化」関数を適用して、次のANN層への入力として供給されるニューロン出力信号を生成することによって、DPU4において有効に実施される。装置2の訓練動作において、訓練サンプルについての入力データ(例えば、MNIST訓練データセットからの手書き数字の画像についての画素データ)が、メモリ8に記憶される。入力データ点(例えば、画像画素)は、ANN動作のために固定されたままである所定のマッピングに従って、入力層ニューロンn1iに、名目上マッピングされる。訓練データは、典型的には、訓練プロセスにおいてネットワークに入力される膨大な数のサンプル(例えば、数千の手書き数字のサンプル)を含む。このプロセスの間、装置2は、メムリスティブ・デバイス10によって記憶される重み
【数16】


【数17】

が繰り返し更新される反復型方法を実施する。特に、DPU4は、後述する反復型訓練方式の順伝播動作、逆伝播動作、および重み更新動作の装置2による実行を制御する。
【0029】
訓練方式の基本ステップは、図5のフローチャートに示されている。順伝播動作(ステップ30)において、現在の訓練サンプルについての入力データが、ANN1を通して入力ニューロン層から出力ニューロン層へと順伝播される。以下でさらに詳述されるこの動作は、DPU4内のニューロンn1i、n2j、およびn3kについて、それぞれx1i、x2j、およびx3kで示される出力を計算すること、ならびにこれらの計算において使用されるアレイ出力信号を取得するためのメムリスティブ・アレイ6への入力信号の適用を伴う。後続の逆伝播動作(ステップ31)において、DPU4は、それぞれの出力ニューロンn3kについての誤差値(δ3kで示される)を計算し、ANN1を通して出力層から逆伝播方向に最後から2番目の層までこれらの誤差値を逆に伝播する。これは、アレイ出力信号を取得するためのメムリスティブ・アレイ6への入力信号の適用、および入力ニューロン層を除く全ての他の層内のニューロンについての誤差値、この場合、層2のニューロンn2jについての誤差δ2jの計算を伴う。後続の重み更新動作(ステップ32)において、DPUは、順伝播ステップおよび逆伝播ステップにおいて計算された値を用いてそれぞれのメムリスティブ・デバイス10についてデジタル重み補正値ΔWを計算する。DPU4は、次いで、プログラミング信号をデバイスに適用してそれぞれのデジタル重み補正値ΔWに応じて記憶された重み
【数18】

を更新するように、メムコンピューティング・ユニット3を制御する。決定ステップ33において、DPU4は、所定の収束条件が達成されたかどうかを決定する。(この条件は、訓練動作についての様々なやり方で、例えば、出力ニューロンについての誤差値、反復間の誤差値の変化、サンプル/反復の数などに基づいて、または1つより多くのそのようなパラメータの関数として、定義され得る。特定の収束条件は、本明細書において説明される動作原理に直交する。)達成されない場合(決定ブロック33における「いいえ」(N))、ステップ34において、次の訓練サンプルについての入力データがCPU7にロードされる。動作は、ステップ30に戻る。したがって、プロセスは、収束が達成されるまで反復し、達成されると、訓練プロセスが終了する。
【0030】
メムリスティブ・アレイ6に記憶された重み
【数19】

は、所定の値に初期化されてもよく、または訓練プロセスの開始のためにランダムに分散されてもよい。初期化のための重み分散に対する特定の制約は、例えば、ネットワーク・サイズおよび達成されるべき所与の収束条件についてのニューロン活性化関数f(後述する)に依存し得る。重み更新ステップ32は、反復毎、または所定の数の逆伝播動作の後に実行されてもよく、以下でさらに説明されるように、重み
【数20】

の全てまたは選択されたサブセットの更新を伴ってもよい。いずれにせよ、重み
【数21】

は、ネットワークが訓練データから学習するときに、訓練プロセス中に繰り返し更新される。
【0031】
図6は、図1のANNについての順伝播動作のより詳細なステップを示す。現在の訓練サンプルのためのデータが、ステップ40において入力される。ステップ41において、DPUは、ここでfで示される活性化関数をそのニューロンにマッピングされた入力データ(d)に適用することによって、それぞれの入力層ニューロンn1iについてデジタル信号値x1iを計算する。活性化関数fは、典型的には、シグモイド関数、tanh関数、reLu関数などの非線形関数を含む。入力層ニューロンについての信号値x1iは、ステップ42においてメモリ8に記憶される。ステップ43において、DPU4は、バス5を介してメムコンピューティング・ユニット3に信号値x1iを供給し、コントローラ7を順伝播モードに設定する。ステップ44において、コントローラ7は、信号値x1iをメムリスティブ・アレイaの行DAC11に供給する。したがって、それぞれのニューロンn1iに関連する、対応するアナログ電圧信号は、図7に概略的に示されるように、アレイのそれぞれの行ラインrに適用される。列ラインc上の結果となる出力電流信号は、よって、各列内のデバイス10の重み
【数22】

に従って入力信号の重み付け合計に対応する。これらの出力信号は、ANN1のそれぞれの層2のニューロンn2jによって受信される信号に対応する。列出力信号は、列ADC12によってデジタル信号値
【数23】

に変換され、デジタル信号値は、コントローラ7によってDPU4に供給される。ステップ45において、DPU4は、受信したデジタル信号値
【数24】

をメモリ8に記憶する。ステップ46において、DPU4は、それぞれの層2のニューロンn2jについてデジタル信号値x2jを、
【数25】

として計算する。信号値x2jは、ステップ47においてメモリ8に記憶される。よって、DPUは、先行するニューロン層から取得されるアレイ出力信号に対応するデジタル信号値に活性化関数fを適用して、それらのニューロンn2jに関連するアレイ入力信号に対応するデジタル信号値を生成することによって、層2のニューロンn2jを実施する。
【0032】
上記ステップ43〜47は、ANN1の層1と層2の間の信号の順伝播を実施する。ステップ48〜52は、ステップ43〜47にそれぞれ対応するが、層2と層3との間の信号を伝播する。したがって、ニューロンn2jに関連する入力信号は、ステップ49において、列ラインcの出力信号を取得するためにアレイaの行ラインrに適用される。対応するデジタル信号値
【数26】

は、出力ニューロンn3kについてのデジタル信号値x3k
【数27】

として計算するDPU4に供給される。信号値x3kは、順伝播動作にネットワーク出力を提供する。
【0033】
図8は、ANN1についての逆伝播動作のより詳細なステップを示す。ステップ60において、順伝播動作におけるニューロンの最後の層、即ち、出力ニューロンn3kについて、DPU4は、それぞれの誤差値δ3kを計算する。誤差値δ3kは、現在の訓練サンプル、および前のニューロン層、層2から取得される、アレイa出力信号に対応するデジタル信号値
【数28】

についてのANNの予想出力に依存する。特に、各ニューロンn3kの出力
【数29】

は、対応する誤差値δ3kを取得するために、そのニューロンについての予想出力から減算される。各ニューロンn3kについての予想出力は、現在の訓練サンプルについての既知の分類ラベル、例えば、MNISTサンプルについての0から9のラベルから決定され得る。(例えば、各クラス0〜9は、それぞれの出力ニューロンによって表されてもよく、出力ニューロンは、そのクラス内のサンプルがネットワークに「示される」ときに最大出力を有するように予想される。理想的には、このニューロン出力は、「1」であるべきであり、他のクラスに対応する全ての他のニューロン出力は、「0」であるべきである。サンプルクラスを示すこれらの1および0は、ネットワークの予想出力をもたらす)。DPU4は、ステップ61において誤差値δ3kを記憶する。ステップ62において、DPU4は、バス5を介してメムコンピューティング・ユニット3に誤差値δ3kを供給し、コントローラ7を逆伝播モードに設定する。ステップ63において、コントローラ7は、誤差値δ3kをメムリスティブ・アレイaの列DAC12に供給する。(誤差値は、電圧(例えば、
【数30】

)として適用されるときに、DAC12の最大範囲を使用するためにそれに応じてDPU4においてスケールされてもよい。)したがって、それぞれのニューロンn3kに関連する、対応するアナログ電圧信号は、図9に概略的に示されるように、アレイのそれぞれの列ラインcに入力信号として適用される。行ラインr上の結果となる出力電流信号は、よって、各行内のデバイス10の重み
【数31】

に従って入力信号の重み付け合計に対応する。行出力信号は、行ADC11によってデジタル信号値
【数32】

に変換され、デジタル信号値は、コントローラ7によってDPU4に供給される。ステップ64において、DPU4は、出力信号値
【数33】

を受信および記憶する。ステップ65において、DPU4は、層2についてのそれぞれの誤差値δ2j
【数34】

として計算する。ここで、gは、活性化関数fとは異なる非線形関数を表し、訓練アルゴリズムが平均二乗誤差目的関数を最小化する特定の場合においてfの導関数を含む。層2内のニューロンについてのそれぞれの誤差値δ2jは、したがって、逆伝播動作において先行ニューロン層(層3)から取得されるアレイ出力信号に対応するデジタル信号値
【数35】

、および順伝播動作において先行ニューロン層(層1)から取得されるアレイ出力信号
【数36】

に基づく。誤差値δ2jは、ステップ66においてメモリ8に記憶される。
【0034】
上記ステップ62〜66は、ANN1の層3と層2との間の誤差信号の逆伝播を実施する。追加の隠れ層を有するANNの場合、ステップ62〜66は、各後続ニューロン層について逆伝播方向に最後から2番目の層まで繰り返される。この例では、層2が最後から2番目の層であるため、ステップ66は、ここで逆伝播動作を完了する。
【0035】
図10は、第1の実施形態における重み更新動作のステップを表す。簡略化のため、動作は、第1のアレイaにおけるデバイスについて説明される。ステップ70において、層1の信号値x1iおよび層2の誤差値δ2jが、DPU4内のメモリから取り出される。ステップ71において、DPUは、アレイa内のそれぞれのデバイス10についてデジタル重み補正値ΔWを、
ΔWij=ηx1iδ2j
として計算する。ここで、ηは、ネットワークについての予め定義された学習パラメータである。ANN1内のニューロンn1iおよびn2jの対を相互接続するシナプスsijに対応するデバイスについての重み補正値ΔWijは、よって、順伝播動作においてニューロンnから受信される入力信号および逆伝播動作においてニューロンnについて計算された誤差信号の関数として計算される。ステップ72において、DPU4は、各重み補正値ΔWijを所定のステップ・サイズεで丸めて、丸めた補正値
【数37】

、即ち
【数38】

を生成する。伝統的丸め法または確率的丸め法が、所望によりここで使用され得る。ステップ・サイズεは、所定のプログラミング・パルス、即ち所定の振幅および期間のパルスの適用に応じたメムリスティブ・デバイスの重み変更を示すことが好ましい。ステップ73において、DPU4は、デバイス10についての丸めた補正値
【数39】

をメムコンピューティング・ユニット3に送信し、コントローラ7をプログラミング・モードに設定する。ステップ74において、コントローラ7が、プログラミング信号を各デバイス10に適用して、記憶された重み
【数40】

を、そのデバイスについての丸めた補正値
【数41】

に依存した量だけ調整する。ここでのプログラミング信号は、丸めた補正値
【数42】

に対応する、いくつかの前述のプログラミング・パルスを含み得る。結果となる記憶された重みは、よって、
【数43】

に更新される。
【0036】
いくつかの実施形態では、重み補正値ΔWijは、アレイ内の全てのデバイス10について計算され得る。それ以外では、ΔWijは、デバイスのサブセットのみ、例えばランダムに選択されたサブセット、またはx1iもしくはδ2jまたはその両方が閾値レベルを超えるデバイスについてのみ、計算されてもよい。概して、誤差値δ2jは、正または負であってもよく、それによって、重みが、
【数44】

の符号に従って増加され(「増強され」)または減少され(「抑圧され」)得る。プログラミング・パルスおよびステップ・サイズεは、メムリスティブ・デバイスの特性に依存して増強および抑圧について異なり得る。また、重み更新は、訓練方式の反復毎における逆伝播の後(「オンライン訓練」)、またはある回数K回の反復後(「バッチ訓練」)に、実行され得る。後者の場合、重み補正値ΔWijは、K個の訓練サンプルにわたってDPU4において累積され得る。
【0037】
アレイa内のデバイスの重み
【数45】

は、これらのデバイスについてデジタル重み補正値ΔWjk=ηx2jδ3kから計算される丸めた重み補正値
【数46】

に基づいて、同様に更新される。図10のプロセスのステップは、異なるメムリスティブ・アレイについて並列で、または同様に各アレイについて逐次的に、実行され得る。同様に、重み更新プロセスのステップは、各アレイ内の特定のメムリスティブ・デバイスまたはデバイスのサブセットについて逐次的に実行され得る。異なるプログラミング・パルスおよびステップ・サイズεもまた、いくつかの実施形態において異なるシナプス層を実施するデバイスのために使用され得る。
【0038】
上記システムは、低精度のメムリスティブ・アレイが順伝播計算および逆伝播計算に活用されるが、重み更新動作は、DPU4においてデジタルで計算される重み補正値ΔWに基づく、混合精度ANN訓練方法を実施する。重み補正値は、よって、デジタル精度、好ましくは少なくとも16ビット(固定または浮動小数点)精度で計算され、結果となるデジタル値は、アレイについてのプログラミング信号を決定するために使用される。この技術は、メムリスティブ・アレイの高速低電力並列計算ケイパビリティを活用しつつ、重み更新動作における正確性を向上させる。記憶された重みは、完全に再プログラムされるのとは対照的に、少しづつ更新され、メムリスティブ・アレイについての重みのセットは、DPU4に記憶される必要はなく、メモリ要件を減少させる。
【0039】
ANN1の訓練に続いて、装置2は、訓練済み重み
【数47】


【数48】

に基づいて入力データを分類するテスト(または「推論」)・モードにおいて使用され得る。推論モードにおいて、入力データ(例えば、MNISTテスト数字)は、順伝播モードで動作するネットワークに供給され、入力データは、ネットワーク出力に基づいて(例えば、数字0〜9として)分類される。分類は、例えば、ソフトマックス関数を用いてDPU7において実行され得る。図11は、ステップ72における確率的丸め法とともに上記重み更新動作を用いた訓練に続く、MNISTテスト・データを用いた推論動作についてのシミュレーション結果を示す。テスト正確度が、デバイス10における重み
【数49】

の記憶についてのビット精度に対してプロットされる。完全64ビット浮動小数点訓練方法を用いて取得される相当する結果も、比較のために示されている。上記方法のテスト正確度は、記憶された重み
【数50】

のわずか4ビット精度で64ビット精度の結果に近づいてくることが分かる。重み
【数51】

における8以上のビット精度で、テスト正確度は、64ビット精度の実施に相当する。
【0040】
上記の第1の重み更新方法では、ステップ・サイズεが大きい場合、または重み更新が不正確なやり方で実行される場合に、分類正確度が低下し得る。これは、誤差が精密に考慮されないように、ΔWについての正確な情報が丸めの後で失われるためである。この問題に対処する好適な重み更新手続は、以下で説明される。
【0041】
図12は、重み更新手続の第2の実施形態のステップを示す。この実施形態では、DPU4は、アレイ・セット6内のそれぞれのメムリスティブ・デバイス10によって記憶された重み
【数52】

に対応する(高精度)デジタル重み値Wのセットをメモリ8に記憶する。動作は、ここでアレイaにおけるデバイスについて、再び説明される。ステップ80において、層1の信号値x1iおよび層2の誤差値δ2jが、DPU4内のメモリから取り出される。ステップ81において、DPUは、デバイス10のデジタル重み補正値ΔWを、前の通り、
ΔWij=ηx1iδ2j
として計算する。
【0042】
ステップ82において、DPU4は、メモリ8からそれぞれのデバイス10についてのデジタル重み値Wを取り出す。ステップ83において、DPU4は、各デバイスについての現在のデジタル重み値Wおよびステップ81において計算されたデジタル重み補正値ΔWから、それぞれのデバイスについての新たなデジタル重み値をWij+ΔWij=新たなWijと計算する。この計算は、したがって、デジタル精度、好ましくは高精度、即ち少なくとも16ビット精度で実行され、必要に応じて、例えば32ビット精度または64ビット精度で実行され得る。ステップ84において、DPU4は、そのデバイスについての新たなデジタル重み値Wijに依存してプログラミング信号を各デバイス10に適用するように、メムコンピューティング・ユニット3を制御する。
【0043】
ここで1つの実施において、ステップ84は、コントローラ7の読み出しモード動作を介してそれぞれのメムリスティブ・デバイスにより記憶される重み
【数53】

を読み出すこと、および次いで、デバイスについての新たなデジタル重み値Wとそのデバイスについての読み出された重み
【数54】

との間の差をDPU4において計算することによって、実行され得る。プログラミング信号は、次いで、そのデバイスについて計算された差に依存した量だけ、記憶された重み
【数55】

を調整するために、デバイスに適用される。ここでの差の値は、所定のプログラミング・パルスの適用に応じたデバイスの重み変更を示すステップ・サイズεに従って、(決定論的または確率的に)丸められてもよく、ここでのプログラミング信号は、丸めた異なる値に対応するいくつかのプログラミング・パルスを含み得る。よって、記憶された重み
【数56】

は、少しずつ更新される。
【0044】
ステップ84の別の実施において、増分更新の代わりに、重み
【数57】

が完全に再プログラミングされ得る。この場合、プログラミング信号は、デバイスについての新たなデジタル重み値Wに基づいて各デバイスを再プログラムするために適用される。これは、例えば、重みが反復してプログラムされおよび読み出され、対応するデジタル値Wに可能な限り近い
【数58】

をもたらすようになされる、プログラムおよび検証方式によって、実行され得る。(決定論的または確率的に)丸めたバージョンのWも、ここで使用され得る。
【0045】
図12の方法は、完全64ビット浮動小数点の実施に非常に近い最終的な分類正確度につながる。これは、重みが決定論的に丸めたバージョンのWに基づいて再プログラミングされる方法についての13に示される。W+ΔWの計算が高精度で行われるため、分類正確度は向上する。したがって、ΔWについての情報が失われず、プロセスは、
【数59】

の潜在的に不正確な更新をそれに応じて補償する。
【0046】
図12の方法は、重み更新毎に、重みを読み出すことまたはアレイ全体を再プログラミングすることに起因する追加のオーバヘッドを伴い、これは、いくつかの実施については実際的でない場合がある。図14は、このオーバヘッドを回避する第3の、特に好適な重み更新方法のステップを示す。この方法では、DPU4は、アレイ・セット6内のそれぞれのメムリスティブ・デバイス10について、(高精度)デジタル累積値χのセットをメモリ8に記憶する。これらの累積値χは、訓練動作の開始において0に初期化される。図14のステップ90および91は、図12のステップ80および81に対応する。ステップ92において、DPU4は、それぞれのデバイス10についてのデジタル累積値χをメモリ8から取り出す。ステップ93において、DPU4は、各デバイスについての重み補正値ΔWおよび記憶された累積値χから、それぞれのデバイスについての更新された累積値を、χij+ΔWij=更新されたχijと計算する。ステップ94において、DPU4は、各デバイスについての更新された累積値χijから重み調整量Aijを決定する。このステップの詳述された例が、以下で説明される。ステップ95において、DPU4は、プログラミング信号を各デバイス10に適用して記憶された重み
【数60】

を、そのデバイスについての重み調整量Aijに対応する量だけ調整するように、メムコンピューティング・ユニット3を制御する。ステップ96において、DPU4は、次いで、各デバイスについての更新された累積値から重み調整量を減算することによって、それぞれのデバイスについての新たなデジタル累積値を、χij−Aij=新たなχijと計算する。累積値計算は、したがって、デジタル精度、好ましくは少なくとも16ビット精度で実行され、必要に応じて、より高い(例えば32ビットまたは64ビット)精度で実行され得る。
【0047】
重み更新量Aijを計算するための手続の第1の例が、図15に示される。ステップ100〜102は、図14のステップ94および95を実施する。ステップ100において、DPU4は、所定のステップ・サイズεで各デバイスについて更新された累積値χijを(決定論的または確率的に)丸めることによって、重み調整量Aijを決定する。ここで、ε>0である。再び、このステップ・サイズεは、所定のプログラミング・パルスの適用に応じたメムリスティブ・デバイスの重み変更を示す。丸めた結果は、デバイスに適用されるべきこれらのプログラミング・パルスの数nij=round(χij/ε)を与える。各デバイスについての重み調整量は、よって、ここではAij=nijεである。概して、累積値χijおよびしたがってnijの値が、正または負であってもよく、重みは、nijの符号に従って増強され、または抑圧され得る。(プログラミング・パルスおよびステップ・サイズεは、増強および抑圧について異なってもよく、異なるANN層についても異なってもよい。)DPU4は、ステップ101において結果となる数nijをメムコンピューティング・ユニット3に送信する。nij>0の場合、コントローラ7は、
【数61】

を記憶するデバイスに|nij|個の増強プログラミング・パルスを適用する。nij<0の場合、コントローラ7は、デバイスに|nij|個の抑圧プログラミング・パルスを適用する。図14のステップ96に戻って、各デバイスについての新たな累積値が、χij−nijεとして計算される。
【0048】
図16は、重み更新量Aijを計算するための手続の第2の例を与える。ステップ105〜108は、図14のステップ94および95を実施する。この手続において、DPU4は、各メムリスティブ・デバイスについての更新された累積値χijを、ステップ・サイズεに依存した所定の閾値と比較する。ここで、εは、前と同様に定義される。この例では、閾値は、χijの対応する符号に依存して±εである。χij>εの場合(決定ステップ105における「はい」)、ステップ106において、DPUは、1つの増強プログラミング・パルスをデバイスに適用するようにコントローラ7に命令する。そうでない場合、動作は、決定ステップ107に続く。ここでχij<−εの場合、ステップ108において、DPU4は、1つの抑圧プログラミング・パルスをデバイスに適用するようにコントローラ7に命令する。−ε≦χij≦εの場合、重み
【数62】

は変更されない。したがって、デバイスについての重み調整量Aijは、ここで0または±εのいずれかであり、図14のステップ96において、新たな累積値がそれに応じて計算される。
【0049】
図16の実施形態は、単一プログラミング・パルスのみが重み更新毎に適用されることを必要とし、メムコンピューティング・ユニット3におけるより単純なハードウェア実施を提示する。ステップ・サイズε、例えば±ε/2に基づく様々な他の閾値は、この技術を用いて所望により活用され得る。
【0050】
図14に基づく重み更新方法は、完全に再プログラミングする、または重み
【数63】

を読み直す必要性を回避し、同時に、デジタル累積値χにおいてΔWについての情報全てを保持する。これは、高速で高い正確度のANN訓練のための非常に効率的な実施を提供する。図15の方法を用いたこの技術で達成可能な優れた分類正確度が、図17に示される。
【0051】
多数の変更および修正が、当然ながら、説明された例示的実施形態に対して行われ得る。例えば、訓練方法が順伝播ステップおよび逆伝播ステップのうちの1つだけについてメムコンピューティング・ユニット3を使用する実施形態が、把握され得る。例えば、順計算が、DPU4において行われる逆伝播計算とともに、アレイ・セット6を用いて実行されてもよい。また、ニューロン活性化関数fが、上記DPU4において高精度で実施され、他の実施形態において、ニューロン機能性が、メムコンピューティング・ユニット3におけるアナログ回路によって実施され得る。
【0052】
概して、メムリスティブ・デバイス10は、例えば、様々な回路配列で1つまたは複数のPCMセルまたは他のメムリスティブ・メモリ素子あるいはその両方に基づいて、任意の所望のやり方で実施され得る。任意の種類のメムリスティブ・メモリ素子、例えば、PCM、あるいは伝導ブリッジ型RRAMセル、酸化または金属酸化RRAMセル、カーボンRRAMセルを含む抵抗変化型RAM(RRAMまたはReRAM)セルなどの他の抵抗変化型メモリ・セル、ならびに磁気抵抗ランダム・アクセス・メモリ(MRAM)素子、強誘電体ランダム・アクセス・メモリ(FeRAM)素子、光学メモリ素子、およびメムリスティブ素子の挙動をエミュレートする回路デバイス、例えばトランジスタ、抵抗、コンデンサ、またはインダクタ、あるいはその組み合わせを含むCMOS回路が、使用され得る。
【0053】
いくつかの場合において、フロー図のステップは、図示されたものとは異なる順序で実施されてもよく、ステップは、必要に応じて並列で実行されてもよい。
【0054】
本発明の多様な実施形態の説明は、例示の目的で提示されているが、網羅的であること、または開示された実施形態に限定することを意図したものではない。説明された実施形態の範囲および思想から逸脱することなく、多くの修正および変形が当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、実用的な適用、もしくは市場で発見される技術を超える技術的改善を最もよく説明するため、または他の当業者が本明細書で開示される実施形態を理解することを可能にするために、選択された。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【手続補正書】
【提出日】20200512
【手続補正1】
【補正対象書類名】図面
【補正対象項目名】図5
【補正方法】変更
【補正の内容】
【図5】
【手続補正2】
【補正対象書類名】図面
【補正対象項目名】図6
【補正方法】変更
【補正の内容】
【図6】
【手続補正3】
【補正対象書類名】図面
【補正対象項目名】図7
【補正方法】変更
【補正の内容】
【図7】
【手続補正4】
【補正対象書類名】図面
【補正対象項目名】図8
【補正方法】変更
【補正の内容】
【図8】
【手続補正5】
【補正対象書類名】図面
【補正対象項目名】図9
【補正方法】変更
【補正の内容】
【図9】
【手続補正6】
【補正対象書類名】図面
【補正対象項目名】図10
【補正方法】変更
【補正の内容】
【図10】
【手続補正7】
【補正対象書類名】図面
【補正対象項目名】図12
【補正方法】変更
【補正の内容】
【図12】
【手続補正8】
【補正対象書類名】図面
【補正対象項目名】図14
【補正方法】変更
【補正の内容】
【図14】
【手続補正9】
【補正対象書類名】図面
【補正対象項目名】図15
【補正方法】変更
【補正の内容】
【図15】
【手続補正10】
【補正対象書類名】図面
【補正対象項目名】図16
【補正方法】変更
【補正の内容】
【図16】
【国際調査報告】