(57)【要約】【課題】シナプスの層との間に挟まれているニューロン層の連続を有する人工ニューラル・ネットワークを訓練するために、方法および装置を提供する。【解決手段】行ラインと列ラインとの間に接続されるメムリスティブ・デバイスのクロスバー・アレイのセットは、シナプスの層を実施する。各メムリスティブ・デバイスは、連続するニューロン層内のニューロンのそれぞれの対を相互接続するシナプスについての重み    【数１】を記憶する。訓練方法は、方式の順伝播動作および逆伝播動作のうちの少なくとも１つにおいて、それぞれのニューロンに関連する入力信号をアレイのセットの行ラインおよび列ラインのうちの一方に適用して、行ラインおよび列ラインのうちの他方の出力信号を取得することと、アレイのセットに動作可能に連結されたデジタル処理ユニットにおいて、入力信号および出力信号に対応するデジタル信号値を記憶することと、によって、反復型訓練方式の順伝播動作、逆伝播動作、および重み更新動作を実行することを含む。方式の重み更新動作は、記憶されたデジタル信号値に依存してそれぞれのメムリスティブ・デバイスについてのデジタル重み補正値ΔＷを、デジタル処理ユニットにおいて計算することと、それぞれのデジタル重み補正値ΔＷに応じて、記憶された重み    【数２】を更新するためにプログラミング信号をそれらのデバイスに適用することと、によって実行される。【選択図】図５
2021500646.tif 000002
【特許請求の範囲】
【請求項１】
複数のニューロン層の連続と、前記複数のニューロン層との間に挟まれているシナプスの層を実施する、行ラインと列ラインとの間に接続されたメムリスティブ・デバイスのクロスバー・アレイのセットと、を有する人工ニューラル・ネットワークを訓練する方法であって、各メムリスティブ・デバイスが、連続するニューロン層内のニューロンのそれぞれの対を相互接続するシナプスについての重み
【数１】
2021500646.tif 000066
を記憶し、前記方法が、
反復型訓練方式の順伝播動作および逆伝播動作のうちの少なくとも１つにおいて、それぞれのニューロンに関連して、入力信号を前記アレイのセットの行ラインおよび列ラインのうちの一方に適用して、前記行ラインおよび列ラインのうちの他方の出力信号を取得することと、
前記アレイのセットに動作可能に連結されたデジタル処理ユニットにおいて、前記入力信号および出力信号に対応する複数のデジタル信号値を記憶することと、
前記複数のデジタル信号値に依存してそれぞれのメムリスティブ・デバイスについてのデジタル重み補正値ΔＷを、前記デジタル処理ユニットにおいて計算すること、およびそれぞれの前記デジタル重み補正値ΔＷに応じて、記憶された前記重み
【数２】
2021500646.tif 000067
を更新するためにプログラミング信号を前記デバイスに適用することにより、前記方式の重み更新動作を実行することと、
によって、前記反復型訓練方式の前記順伝播動作、前記逆伝播動作、および前記重み更新動作を実行することを含む、方法。
【請求項２】
前記順伝播動作において、前記入力信号を前記アレイのセットの行ラインに適用して、前記列ラインの出力信号を取得することを含む、請求項１に記載の方法。
【請求項３】
前記逆伝播動作において、前記入力信号を前記アレイのセットの列ラインに適用して、前記行ラインの出力信号を取得することを含む、請求項２に記載の方法。
【請求項４】
前記デジタル処理ユニットにおいて、各重み補正値ΔＷを所定のステップ・サイズεで丸めて、丸めた補正値
【数３】
2021500646.tif 000068
を生成することを含み、メムリスティブ・デバイスに適用される前記プログラミング信号が、前記記憶された重み
【数４】
2021500646.tif 000069
を、前記デバイスについての前記丸めた補正値
【数５】
2021500646.tif 000070
に依存した量だけ調整する、請求項１に記載の方法。
【請求項５】
前記デジタル重み補正値が、少なくとも１６ビット精度で前記デジタル処理ユニットによって計算される、請求項４に記載の方法。
【請求項６】
前記デジタル処理ユニットにおいて、それぞれのメムリスティブ・デバイスによって記憶された前記重み
【数６】
2021500646.tif 000071
に対応するデジタル重み値を記憶することと、
前記重み更新動作において、それぞれのデバイスについての新たなデジタル重み値を、各デバイスについての記憶された前記デジタル重み値および前記デジタル重み補正値ΔＷから、前記デジタル処理ユニットにおいて計算することと、を含み、
メムリスティブ・デバイスに適用される前記プログラミング信号が、前記デバイスについての前記新たなデジタル重み値に依存する、請求項１に記載の方法。
【請求項７】
前記重み更新動作において、
それぞれのメムリスティブ・デバイスによって記憶された前記重み
【数７】
2021500646.tif 000072
を読み出すことと、
前記デジタル処理ユニットにおいて、デバイスについての前記新たなデジタル重み値と前記デバイスについての読み出された前記重み
【数８】
2021500646.tif 000073
との間の差を計算することと、を含み、
メムリスティブ・デバイスに適用される前記プログラミング信号が、前記記憶された重み
【数９】
2021500646.tif 000074
を、前記デバイスについての前記差に依存した量だけ調整する、請求項６に記載の方法。
【請求項８】
前記重み更新動作において、各デバイスを前記デバイスについての前記新たなデジタル重み値に基づいて再プログラムするために前記プログラミング信号を適用することを含む、請求項６に記載の方法。
【請求項９】
前記デジタル重み値が、少なくとも１６ビット精度で前記デジタル処理ユニットによって記憶される、請求項６に記載の方法。
【請求項１０】
前記デジタル処理ユニットにおいて、それぞれのメムリスティブ・デバイスについてのデジタル累積値を記憶することを含み、前記重み更新動作において、
前記デジタル処理ユニットにおいて、それぞれのメムリスティブ・デバイスについての更新された累積値を、各デバイスについての前記重み補正値ΔＷおよび記憶された累積値から計算すること、ならびに重み調整量を各デバイスについての前記更新された累積値から決定することであって、メムリスティブ・デバイスに適用される前記プログラミング信号が、前記記憶された重み
【数１０】
2021500646.tif 000075
を前記デバイスについての前記重み調整量に対応する量だけ調整する、前記決定することと、
前記デジタル処理ユニットにおいて、各デバイスについての前記更新された累積値から前記重み調整量を減算することによって、それぞれのデバイスについての新たなデジタル累積値を計算することと、を含む、請求項１に記載の方法。
【請求項１１】
前記デジタル処理ユニットにおいて、前記デバイスに適用されるべき前記プログラミング・パルスの数ｎを取得するために、所定のプログラミング・パルスの適用に応じた前記デバイスの重み変更を示す所定のステップ・サイズεで、各メムリスティブ・デバイスについての前記更新された累積値を丸めることによって、前記重み調整量を決定することであって、前記メムリスティブ・デバイスに適用される前記プログラミング信号が、ｎ個の前記パルスを含む、前記決定することを含む、請求項１０に記載の方法。
【請求項１２】
前記デジタル処理ユニットにおいて、各メムリスティブ・デバイスについての前記更新された累積値を、所定のプログラミング・パルスの適用に応じた前記デバイスの重み変更を示すステップ・サイズεに依存する所定の閾値と比較することと、
デバイスについての前記更新された累積値が、前記閾値を超える場合、前記プログラミング・パルスを前記プログラミング信号として前記デバイスに適用することと、
を含む、請求項１０に記載の方法。
【請求項１３】
前記デジタル重み補正値および前記新たなデジタル累積値が、少なくとも１６ビット精度で前記デジタル処理ユニットによって計算される、請求項１０に記載の方法。
【請求項１４】
前記デジタル処理ユニットにおいて、前記先行ニューロン層から取得された前記出力信号に対応する前記デジタル信号値に活性化関数を適用することによって、前記順伝播動作において前記層の前記ニューロンを実施して、前記ニューロンに関連する前記入力信号に対応する前記デジタル信号値を生成することを含む、請求項２に記載の方法。
【請求項１５】
前記逆伝播動作において、
前記順伝播動作におけるニューロンの最後の層について、前記デジタル処理ユニットにおいて、前記ニューラル・ネットワークの予想出力、および前記先行ニューロン層から取得された前記出力信号に対応する前記デジタル信号値に依存してそれぞれの誤差値を計算することと、
前記誤差値に対応する信号を、前記最後の層におけるニューロンに関連する前記入力信号として適用することと、
最後から２番目のニューロン層まで各後続のニューロン層について、前記デジタル処理ユニットにおいて、前記層におけるニューロンについてのそれぞれの誤差値を、前記逆伝播動作における先行ニューロン層から取得された前記出力信号および前記順伝播動作における前記先行ニューロン層から取得された前記出力信号に対応する前記デジタル信号値に基づいて計算することと、
を含む、請求項３に記載の方法。
【請求項１６】
前記デジタル処理ユニットにおいて、それぞれのメムリスティブ・デバイスについてのデジタル累積値を記憶することを含み、前記重み更新動作中の前記デジタル処理ユニットにおいて、
前記順伝播動作においてニューロンｎ１から受信される前記入力信号および前記逆伝播動作においてニューロンｎ２について計算された前記誤差信号の関数として、ニューロンｎ１およびｎ２の対を相互接続するシナプスに対応するメムリスティブ・デバイスについての前記デジタル重み補正値ΔＷを計算することと、
それぞれのメムリスティブ・デバイスについての更新された累積値を、各デバイスについての前記重み補正値ΔＷおよび記憶された累積値から計算すること、ならびに重み調整量を各デバイスについての前記更新された累積値から決定することであって、メムリスティブ・デバイスに適用される前記プログラミング信号が、前記記憶された重み
【数１１】
2021500646.tif 000076
を前記デバイスについての前記重み調整量に対応する量だけ調整する、前記決定することと、
各デバイスについての前記更新された累積値から前記重み調整量を減算することによって、それぞれのデバイスについての新たなデジタル累積値を計算することと、を含む、請求項１５に記載の方法。
【請求項１７】
シナプスの層との間に挟まれている複数のニューロン層の連続を有する人工ニューラル・ネットワークを実施する装置であって、各シナプスが、連続するニューロン層内のニューロンのそれぞれの対を相互接続し、前記装置が、
行ラインおよび列ラインの間に接続されるメムリスティブ・デバイスのクロスバー・アレイのセットであって、各メムリスティブ・デバイスが、それぞれの前記シナプスについての重み
【数１２】
2021500646.tif 000077
を記憶する、前記メムリスティブ・デバイスのクロスバー・アレイのセット、ならびに前記行ラインおよび列ラインを介して前記メムリスティブ・デバイスへの信号の適用を制御するコントローラを含む、メムコンピューティング・ユニットと、
反復型訓練方式の順伝播動作、逆伝播動作、および重み更新動作の前記装置による実行を制御するように適合される、前記メムコンピューティング・ユニットに動作可能に連結されたデジタル処理ユニットと、を備え、
前記方式の前記順伝播動作および逆伝播動作のうちの少なくとも１つにおいて、前記コントローラが、それぞれのニューロンに関連して、入力信号を、前記アレイのセットの行ラインおよび列ラインのうちの一方に適用して、前記行ラインおよび列ラインのうちの他方の出力信号を取得し、
前記デジタル処理ユニットが、前記入力信号および出力信号に対応する複数のデジタル信号値を記憶し、
前記方式の前記重み更新動作において、前記デジタル処理ユニットが、前記複数のデジタル信号値に依存してそれぞれのメムリスティブ・デバイスについてのデジタル重み補正値ΔＷを計算し、前記コントローラが、それぞれの前記デジタル重み補正値ΔＷに応じて、記憶された前記重み
【数１３】
2021500646.tif 000078
を更新するためにプログラミング信号を前記デバイスに適用する、装置。
【請求項１８】
前記コントローラが、前記順伝播動作において、前記入力信号を前記アレイのセットの行ラインに適用して前記列ラインの出力信号を取得し、前記逆伝播動作において、前記入力信号を前記アレイのセットの列ラインに適用して前記行ラインの出力信号を取得するように適合される、請求項１７に記載の装置。
【請求項１９】
前記デジタル処理ユニットが、前記先行ニューロン層から取得された前記出力信号に対応する前記デジタル信号値に活性化関数を適用することによって、前記順伝播動作において前記層の前記ニューロンを実施して、前記ニューロンに関連する前記入力信号に対応する前記デジタル信号値を生成するように適合される、請求項１８に記載の装置。
【請求項２０】
前記デジタル処理ユニットが、各重み補正値ΔＷを所定のステップ・サイズεで丸めて、丸めた補正値
【数１４】
2021500646.tif 000079
を生成するように適合され、
前記コントローラが、前記プログラミング信号をメムリスティブ・デバイスに適用して、前記記憶された重み
【数１５】
2021500646.tif 000080
を、前記デバイスについての前記丸めた補正値
【数１６】
2021500646.tif 000081
に依存した量だけ調整するように適合される、請求項１７に記載の装置。
【請求項２１】
前記デジタル処理ユニットが、それぞれのメムリスティブ・デバイスによって記憶される前記重み
【数１７】
2021500646.tif 000082
に対応するデジタル重み値を記憶し、前記重み更新動作において、各デバイスについての前記記憶されたデジタル重み値および前記デジタル重み補正値ΔＷから、それぞれのデバイスについての新たなデジタル重み値を計算するように適合され、
前記装置が、メムリスティブ・デバイスに適用される前記プログラミング信号が前記デバイスについての前記新たなデジタル重み値に依存するように適合される、請求項１７に記載の装置。
【請求項２２】
前記デジタル処理ユニットが、それぞれのメムリスティブ・デバイスについてデジタル累積値を記憶するように適合され、
前記重み更新動作において、前記デジタル処理ユニットが、それぞれのメムリスティブ・デバイスについての更新された累積値を、各デバイスについての前記重み補正値ΔＷおよび記憶された累積値から計算し、重み調整量を各デバイスについての前記更新された累積値から決定し、各デバイスについての前記更新された累積値から前記重み調整量を減算することによってそれぞれのデバイスについての新たなデジタル累積値を計算するように適合され、
メムリスティブ・デバイスに適用される前記プログラミング信号が、前記記憶された重み
【数１８】
2021500646.tif 000083
を前記デバイスについての前記重み調整量に対応する量だけ調整するように、前記装置が適合される、請求項１７に記載の装置。
【請求項２３】
前記デジタル処理ユニットが、前記デジタル重み補正値および前記新たなデジタル累積値を少なくとも１６ビット精度で計算するように適合される、請求項２２に記載の装置。
【請求項２４】
各メムリスティブ・デバイスが、複数のメムリスティブ・メモリ素子を含む、請求項１７に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、人工ニューラル・ネットワークの訓練に関する。
【背景技術】
【０００２】
人工ニューラル・ネットワーク（ＡＮＮ）は、神経系の生物学的アーキテクチャから着想を得たやり方で計算タスクを実行するために開発されている。これらのネットワークは、ニューロン間で信号を中継するシナプスを介してニューロンが相互に接続される、生物学的システムの原理に基づいている。生物学上のニューロンは、その入力信号を処理し、それぞれのシナプスを介して他のニューロンに送信される出力信号を生成する。シナプスによって送信される信号強度は、「シナプス効果」または「重み」としても知られるシナプスの伝導度に依存する。シナプスの重みは、ニューロンの活動によって変化することがあり、このシナプスの「適応性」は、記憶および他の脳機能にとって重要である。人工ニューラル・ネットワークは、ニューロン層の連続がシナプスの層との間に挟まれている論理構造に基づき、各シナプスは、連続するニューロン層内のニューロンのそれぞれの対を相互接続する。シナプスを介して中継される信号は、シナプスについて記憶されたそれぞれのシナプスの重みに従って重み付けされる。重み付けされた信号は、よって、連続したネットワークの層を経て入力ニューロン層から出力ニューロン層へ伝播され得る。
【０００３】
ＡＮＮは、音声および画像認識、例えば、ＭＮＩＳＴ（Modified National Institute of Standards and Technology）データセットに基づく手書き数字の分類などの様々な複雑な解析タスクにおいて上手く適用されている。ＡＮＮの動作は、シナプスの重みが決定される訓練段階を伴う。ネットワークが訓練データから「学習する」と重みが繰り返し更新される反復型訓練方式において、ネットワークは、訓練データのセット、例えば手書き数字についての画像データにさらされる。手書き数字の教師あり学習において、例えば、ラベル（ここでは、０から９の数字クラス）が既知であるＭＮＩＳＴデータが、ネットワークに繰り返し供給される。最後のニューロン層からの出力信号は、誤差を決定するために各数字についての予想されたネットワーク出力と比較され、重みは、収束条件に達するまで、誤差を減少させるように繰り返し更新される。特に、反復型訓練プロセスのステップは、順伝播動作、逆伝播動作、および重み更新動作を伴う。順伝播動作において、訓練データから導出される信号は、入力ニューロン層から出力ニューロン層へ伝播される。結果として生じる誤差信号は、次いで、入力層を除く各層においてニューロンについての誤差信号を取得するための逆伝播動作において、ネットワークを通して出力ニューロン層から入力ニューロン層に逆に伝播される。重み更新動作において、シナプスの重みが、次いで、これらの誤差信号および順伝播の間のニューロン出力信号に基づいて更新される。
【０００４】
複数の（例えば、１０以上の）ニューロン層および数百万のシナプスの重みを有し得るＡＮＮの訓練は、大幅な処理リソースおよび膨大な訓練時間を要する計算的集中型タスクである。メムリスティブ・シナプスのクロスバー・アレイに基づくアナログ訓練方法は、これらの問題を軽減するために提案されている。これらの方法は、信号をデバイスに適用するために行ラインと列ラインとの間に接続される、メムリスティブ・デバイスのアレイの並列計算ケイパビリティを活用する。ここで、各デバイスは、（可変の）デバイス伝導度に対応する重みを有するシナプスを実施する。このような方法が、“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に記載されている。これらのシステムは、順伝播信号および逆伝播誤差から導出され、重み更新動作のためにデバイスの行ラインおよび列ラインに同時適用されるパルス信号で、行ラインまたは列ラインあるいはその両方に信号を適用することによって、メムリスティブ・アレイ上の順伝播、逆伝播、および重み更新計算を実行する。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】“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
【非特許文献２】“Acceleration of Deep Neural Network Training with Resistive Cross-Point Devices：Design Considerations”，Gokmen&Vlasov，Frontiers in Neuroscience，Vol.10，2016
【発明の概要】
【発明が解決しようとする課題】
【０００６】
メムリスティブ・アレイのケイパビリティを活用することによって、これらの方法は、ＡＮＮ訓練に関連する計算複雑性を劇的に低下させる。しかしながら、両方のシステムでは、高精度の６４ビット浮動小数点デジタルの実施と比較して、訓練正確性が大幅に低下する。Ｂｕｒｒのシステムは、デバイスの欠陥に非常に影響を受けやすく、Ｇｏｋｍｅｎのシステムは、既存のメムリスティブ・デバイスが浮動小数点の実施に匹敵する正確性を取得するために、達成できないほど多数の伝導状態を必要とする。
【課題を解決するための手段】
【０００７】
本発明の少なくとも１つの実施形態によれば、ニューロン層の連続と、ニューロン層との間に挟まれているシナプスの層を実施する、行ラインと列ラインとの間に接続されたメムリスティブ・デバイスのクロスバー・アレイのセットと、を有する人工ニューラル・ネットワークを訓練する方法が提供される。各メムリスティブ・デバイスは、連続するニューロン層内のニューロンのそれぞれの対を相互接続するシナプスについての重み
【数１】
2021500646.tif 000003
を記憶する。方法は、方式の順伝播動作および逆伝播動作のうちの少なくとも１つにおいて、それぞれのニューロンに関連して、入力信号をアレイのセットの行ラインおよび列ラインのうちの一方に適用して、行ラインおよび列ラインのうちの他方の出力信号を取得することと、アレイのセットに動作可能に連結されたデジタル処理ユニットにおいて、入力信号および出力信号に対応するデジタル信号値を記憶することと、によって、反復型訓練方式の順伝播動作、逆伝播動作、および重み更新動作を実行することを含む。方式の重み更新動作は、記憶されたデジタル信号値に依存してそれぞれのメムリスティブ・デバイスについてのデジタル重み補正値ΔＷを、デジタル処理ユニットにおいて計算することと、それぞれのデジタル重み補正値ΔＷに応じて、記憶された重み
【数２】
2021500646.tif 000004
を更新するためにプログラミング信号をそれらのデバイスに適用することと、によって実行される。
【０００８】
発明の実施形態は、メムリスティブ・アレイのセットが順伝播ステップおよび逆伝播ステップのうちの１つまたは両方における（本来低精度の）計算に使用され、かつデジタル処理ユニットが重み更新ステップのための重み更新計算を実行するために使用される、混合精度ＡＮＮ訓練方法を提供する。これは、重み更新計算の特定のステップとして、メムリスティブ・デバイスについてデジタル重み補正値ΔＷを計算すること、即ち、記憶された重みの増分変化に対応することを伴う。この計算は、デジタル精度で実行され、結果となるデジタル値は、次いで、記憶された重みを更新するためにメムリスティブ・デバイスに適用されるプログラミング信号を決定するために使用される。この技術は、メムリスティブ・アレイに関連する恩恵、即ち、著しい速度、電力、および面密度の利点を保持しつつ、重み更新動作の改善された正確性を提示する。したがって、発明の実施形態は、メムリスティブ・アレイに基づく高速で効率的なＡＮＮ訓練方法を提示する。浮動小数点の実施と匹敵する正確性が、後述する実施形態について実証されるように容易に達成され得る。
【０００９】
好適な実施形態は、入力信号をアレイのセットの行ラインに適用して列ラインの出力信号を取得することにより、メムリスティブ・アレイ上の順伝播動作を少なくとも実行する。メムリスティブ・アレイの並列計算設備をさらに活用するために、逆伝播もまた、入力信号をアレイのセットの列ラインに適用して行ラインの出力信号を取得することにより、アレイ・セットに対して実行されることが好ましい。
【００１０】
第１の重み更新手続において、デジタル処理ユニットは、各重み補正値ΔＷを所定のステップ・サイズεで丸めて、丸めた補正値
【数３】
2021500646.tif 000005
を生成し得る。メムリスティブ・デバイスに適用されるプログラミング信号は、次いで、記憶された重み
【数４】
2021500646.tif 000006
を、そのデバイスについての丸めた補正値
【数５】
2021500646.tif 000007
に依存した量だけ調整する。これは、新たな重みの完全な再プログラミングとは対照的に、重みのセットがデジタル処理ユニットに記憶される必要がないという利点とともに、記憶された重みの増分更新を実行する。
【００１１】
他の実施形態では、デジタル処理ユニットは、それぞれのメムリスティブ・デバイスによって記憶された重み
【数６】
2021500646.tif 000008
に対応するデジタル重み値Ｗを記憶し得る。ここで第２の重み更新手続において、デジタル処理ユニットは、それぞれのデバイスについて新たなデジタル重み値を、各デバイスについての記憶されたデジタル重み値およびデジタル重み補正値ΔＷから計算し得る。そのときメムリスティブ・デバイスに適用されるプログラミング信号は、そのデバイスについての新たなデジタル重み値に依存する。これは、新たな重み値が、新たなＷ＝現在のＷ＋ΔＷとして、現在記憶されている重み値Ｗからデジタル精度で計算され、それによって、ΔＷについての情報が、上記第１の方法におけるように丸めに起因して失われないため、優れた正確性を提示する。
【００１２】
特に好適な実施形態において、デジタル処理ユニットは、それぞれのメムリスティブ・デバイスについてのデジタル累積値χを記憶する。ここで第３の重み更新手続において、デジタル処理ユニットは、各デバイスについての重み補正値ΔＷおよび記憶された累積値χからそれぞれのメムリスティブ・デバイスについての更新された累積値を計算し、各デバイスについての更新された累積値から重み調整量Ａを決定する。メムリスティブ・デバイスに適用される上記プログラミング信号は、次いで、記憶された重み
【数７】
2021500646.tif 000009
を、そのデバイスについての重み調整量Ａに対応する量だけ調整する。デジタル処理ユニットは、各デバイスについての更新された累積値から重み調整量を減算することによって、それぞれのデバイスについての新たなデジタル累積値を計算する。これは、以下でさらに説明されるように、非常に正確かつ効率的な動作を提示して、累積値χにおいてΔＷの十分な正確性を保持する。
【００１３】
第３の重み更新手続において、重み調整量Ａは、デバイスに適用されるべき上記プログラミング・パルスの数ｎを取得するために、所定のプログラミング・パルスの適用に応じたデバイスの重み変更を示す所定のステップ・サイズεで、各メムリスティブ・デバイスについての更新された累積値を丸めることによって決定され得る。これは、各デバイスについてｎ個のパルスとしてプログラミング信号の簡単な実施を可能にする。ここで他の実施形態において、デジタル処理ユニットは、各メムリスティブ・デバイスについての更新された累積値を、ステップ・サイズεに依存する所定の閾値と比較することによって、重み調整量Ａを決定する。更新された累積値が、この閾値を超える場合、プログラミング・パルスが、デバイスに適用される。これは、プログラミング信号が単一パルスによって実施されることを可能にし、よって、重み更新毎にただ１つのパルスが必要とされる。
【００１４】
発明の少なくとも１つのさらなる実施形態は、人工ニューラル・ネットワークを実施する装置を提供する。装置は、メムコンピューティング・ユニットと、メムコンピューティング・ユニットに動作可能に連結されたデジタル処理ユニットと、を含む。メムコンピューティング・ユニットは、行ラインおよび列ラインの間に接続されるメムリスティブ・デバイスのクロスバー・アレイのセットであって、各メムリスティブ・デバイスがそれぞれのシナプスについての重み
【数８】
2021500646.tif 000010
を記憶する、メムリスティブ・デバイスのクロスバー・アレイのセットと、行ラインおよび列ラインを介してメムリスティブ・デバイスへの信号の適用を制御するコントローラと、を含む。デジタル処理ユニットは、上述した方法による反復型訓練方式の順伝播動作、逆伝播動作、および重み更新動作の装置により実行を制御するように適合される。
【００１５】
発明の実施形態は、添付図面を参照して、例示的かつ非限定的な例として以下でより詳細に説明される。
【図面の簡単な説明】
【００１６】
【図１】人工ニューラル・ネットワークの概略表現の図である。
【図２】人工ニューラル・ネットワークを実施するための発明を具現化する装置の概略ブロック図である。
【図３】図２の装置のメムリスティブ・アレイの構造を示す図である。
【図４】メムリスティブ・アレイにおいて使用するための例示的メムリスティブ・デバイスの概略図である。
【図５】図２の装置によって実行される訓練方法の基本ステップを示す図である。
【図６】順伝播動作のより詳細なステップを示す図である。
【図７】順伝播動作におけるメムリスティブ・アレイの動作を示す図である。
【図８】逆伝播動作のより詳細なステップを示す図である。
【図９】逆伝播動作におけるメムリスティブ・アレイの動作を示す図である。
【図１０】第１の重み更新動作のステップを示す図である。
【図１１】第１の重み更新動作を用いた訓練方法についてのシミュレーション結果を示す図である。
【図１２】第２の重み更新動作のステップを示す図である。
【図１３】第２の重み更新動作を用いた訓練方法についてのシミュレーション結果を示す図である。
【図１４】第３の重み更新動作のステップを示す図である。
【図１５】図１４の動作のステップの異なる実施を示す図である。
【図１６】図１４の動作のステップの異なる実施を示す図である。
【図１７】第３の重み更新動作を用いた訓練方法についてのシミュレーション結果を示す図である。
【発明を実施するための形態】
【００１７】
図１は、例示的なＡＮＮの論理構造を示す。ＡＮＮ１は、シナプスの層との間に挟まれているニューロンの層の連続を含む。図示される簡単な例では、ネットワークが３つのニューロン層、すなわち、ネットワーク入力信号を受信する入力ニューロン層、ネットワークの出力信号を提供する出力ニューロン層、および入力層と出力層との間のニューロンの中間（「隠れ」）層を有する。入力層（層１）内のニューロンは、ｎ１ｉ（１≦ｉ≦Ｎ１）によってここで示され、隠れ層（層２）内のニューロンは、ｎ２ｊ（１≦ｊ≦Ｎ２）によって示され、出力層（層３）内のニューロンは、ｎ３ｋ（１≦ｋ≦Ｎ３）によって示される。ここで、Ｎｘは、層ｘ内のニューロンの数である。各層内のニューロンは、図示されるように、シナプスｓｉｊまたはｓｊｋを介して次の層内のニューロンに接続される。各シナプスｓｉｊ、ｓｊｋは、連続するニューロン層内のニューロンのそれぞれの対を相互接続する。その接続されたニューロン間のシナプスｓｉｊまたはｓｊｋによって中継される信号は、それぞれのシナプス重みｗｉｊまたはｗｊｋに従って重み付けされる。入力ニューロン層および隠れニューロン層は、入力信号を受信しないが所定のバイアス信号を次のニューロン層に送信する、１つまたは複数のバイアス・ニューロン（図中で網掛けで示される）を含み得る。完全接続型の構成が示されているが、概して、任意の所与の層内のニューロンは、次の層内の１つまたは複数のニューロンに接続されてもよく、ネットワークは、隠れニューロンの１つまたは複数の（一般には最大３０以上の）連続する層を含んでもよい。
【００１８】
図２は、ＡＮＮ１を実施するための発明を具現化する装置を示す。装置２は、メムコンピューティング・ユニット３およびデジタル処理ユニット４を含み、デジタル処理ユニット４は、ここでシステム・バス５を介して、メムコンピューティング・ユニット３に動作可能に連結される。メムコンピューティング・ユニット３は、（１つまたは複数の）メムリスティブ・クロスバー・アレイ６のセット、およびメムコンピューティング・ユニットの動作を制御するコントローラ７を含む。デジタル処理ユニット４は、中央処理装置（ＣＰＵ）７およびメモリ８を含む。メモリ８は、後述する動作の機能的ステップを実施するための、ＣＰＵ７によって実行可能なプログラム命令を含む１つまたは複数のプログラム・モジュール９を記憶する。
【００１９】
図３は、メムリスティブ・アレイ６のセットの論理構造を示す。この例では、アレイの行ラインと列ラインとの間に接続されたメムリスティブ・デバイス１０の２つのクロスバー・アレイを含む。第１のアレイａ１は、図１のＡＮＮ１内の第１のニューロン層と第２のニューロン層との間にシナプスｓｉｊの層を実施する。アレイａ１の各メムリスティブ・デバイス１０は、それぞれのシナプスｓｉｊについての重み
【数９】
2021500646.tif 000011
を記憶する。重み
【数１０】
2021500646.tif 000012
は、デバイスの電気伝導度に対応し、デバイスへのプログラミング信号の適用により動作を変化させ得る。重み
【数１１】
2021500646.tif 000013
は、したがって、アクセント符号
【数１２】
2021500646.tif 000014
によって示されるように、本来低精度で記憶される。デバイス１０は、各デバイスがデバイスへの信号の適用のために特定の行ラインおよび列ラインに接続されるように論理行および論理列に配列される。アレイａ１の行ラインｒｉは、ＡＮＮ１のそれぞれの入力ニューロンｎ１ｉとシナプスｓｉｊとの間の接続として見られ得る。アレイａ１の列ラインｃｊは、同様に、ＡＮＮ１のそれぞれの層２のニューロンｎ２ｊとシナプスｓｉｊとの間の接続として見られ得る。行ラインおよび列ラインは、デジタル・ドメインとアナログ・ドメインとの間でアレイ入力／出力信号を変換する、行デジタル・アナログ／アナログ・デジタル・コンバータ（ＤＡＣ／ＡＤＣ）１１および列デジタル・アナログ／アナログ・デジタル・コンバータ（ＤＡＣ／ＡＤＣ）１２を介して、メムコンピューティング・ユニット２のコントローラ７に接続される。
【００２０】
アレイ・セット６の第２のアレイａ２は、ＡＮＮ１の第２のニューロン層と第３のニューロン層との間のシナプスｓｊｋの層を実施する。構造は、アレイａ１の構造に直接対応する。したがって、アレイａ２のデバイス１０は、シナプスｓｊｋについての重み
【数１３】
2021500646.tif 000015
を記憶し、行ラインｒｊはそれぞれの層２のニューロンｎ２ｊとシナプスｓｊｋとの間の接続を表し、列ラインｃｋは、それぞれの出力層ニューロンｎ３ｋとシナプスｓｊｋとの間の接続を表す。
【００２１】
コントローラ７は、アレイの行ラインおよび列ラインを介してメムリスティブ・デバイス１０への信号の適用を制御するための制御回路を提供する。以下で詳細に説明するように、信号は、装置２の計算動作に使用される「読み出し」モードにおいてアレイに入力され、かつアレイから出力される。プログラミング信号は、重み更新動作に使用される「書き込み」（プログラミング）モードにおいてメムリスティブ・デバイス１０に適用される。読み出し／書き込み制御回路は、デバイス１０における特定のメムリスティブ・シナプスの実施による既知のやり方で概して実施され得る。多様なメムリスティブ・シナプス・デバイスは、例えば、相変化メモリ（ＰＣＭ）・セルなどの抵抗変化型メモリ・セルに基づいて、当技術分野において既知である。これらのデバイスは、セルのプログラム可能な伝導状態において情報を記憶するように様々な回路構成で配列され得る、１つまたは複数のメモリ・セルを含む。本明細書における好適な実施形態は、以下でより詳細に説明されるように、複数のＰＣＭセルに基づいてメムリスティブ・デバイスを採用し、情報のマルチビット記憶を提供する。コントローラ７はまた、動作中にメムコンピューティング・ユニット３によるシステム・バス５への入力およびシステム・バス５からの出力を制御する。
【００２２】
デジタル処理ユニット（ＤＰＵ）４は、ＡＮＮ１についての反復型訓練方式の動作ステップの装置２による実行を制御するように適合される。訓練プロセスは、メモリ８内のプログラム・モジュール９からロードされるプログラム命令の実行を介してＣＰＵ７により制御される。メモリ８は、また、訓練プロセスの様々なステップにおいてメムコンピューティング・ユニット３に供給され、かつメムコンピューティング・ユニット３から受信されるデータ項目を含む、動作中にＣＰＵ７によって使用される様々なデータを記憶する。ＣＰＵ７は、訓練プロセスの間ＤＰＵ４において必要とされる計算を実行し、ＤＰＵ４によってシステム・バス５へのデータの入力およびシステム・バス５からのデータの出力を制御する。ＣＰＵ７はまた、バス５を介してコントローラ７に送信された制御命令を介して、メムコンピューティング・ユニット３の動作モードを制御する。
【００２３】
装置２の例示的実施形態が説明されているが、ＤＰＵ４は、１つまたは複数のマイクロプロセッサによって実施され得る１つまたは複数のＣＰＵ（ＧＰＵ（グラフィック処理ユニット）を含む）を含み得る。メモリ８は、１つまたは複数のデータ記憶エンティティを含んでもよく、メイン・メモリ、例えば、ＤＲＡＭ（動的ランダム・アクセス・メモリ）またはＣＰＵ７から物理的に分離された他の記憶装置あるいはその両方、およびキャッシュまたはＣＰＵ７にローカルな他のメモリあるいはその両方を含んでもよい。概して、ＤＰＵ４は、１つまたは複数の（汎用または専用）コンピュータ／プログラマブル・データ処理装置によって実施されてもよく、ＤＰＵ４によって実行される処理動作の機能ステップは、概して、ハードウェアもしくはソフトウェア、またはその組み合わせによって実施されてもよい。コントローラ７は、また、後述する機能を実行するようにメムコンピューティング・ユニット２を制御するためのソフトウェア命令によって構成可能な、１つまたは複数のプロセッサを含み得る。コントローラ７によって実行される特定の機能ステップは、ハードウェアもしくはソフトウェア、またはその組み合わせにおいて実施されてもよい。説明される機能ステップを実施するための適当なソフトウェアが、当業者には容易に明らかとなるであろう。
【００２４】
いくつかの実施形態では、ＤＰＵ４またはコントローラ７あるいはその両方が、説明される機能を実施するプログラム命令を実行するための、プログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）などの電子回路を含み得る。実施形態が、フローチャート図を参照して説明される場合に、フローチャート図の各ブロックまたはフローチャート図内のブロックの組み合わせ、あるいはその両方が、コンピュータ実行可能プログラム命令によって実施され得ると理解される。プログラム命令／プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。フローチャート図内のブロックまたはブロックの組み合わせは、また、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組み合わせを遂行する、専用ハードウェアベース・システムによって実施されてもよい。
【００２５】
システム・バス５は、メモリ・バスまたはメモリ・コントローラ、周辺バス、高速グラフィック・ポート、および多様なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含む、複数種類のバス構造のいずれかの１つまたは複数を表す。限定ではなく例として、そのようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ（ＩＳＡ）・バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）・バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（ＶＥＳＡ）・ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）・バスを含む。
【００２６】
概して、ＡＮＮ１のシナプスｓｉｊ、ｓｊｋの層は、メムリスティブ・デバイス１０の１つまたは複数のクロスバー・アレイによって実施され得る。これらのアレイの「行」および「列」は、単なる論理的な指定であり、コンポーネントの物理的な向きまたは配列に関していかなる制約も示唆しないと理解される。しかしながら、典型的なＰＣＭベースのデバイス・アレイにおいて、デバイスおよび供給ラインは、図３に概略的に示されるように、行および列の規則的なアレイ内に配列される。そのようなメムリスティブ・デバイスの密集したクロスバー・アレイは、周知の材料処理技術を用いて集積ナノスケール・システムとして製造され、大規模な並列かつ高いエリア効率およびエネルギー効率の実施を提示し得る。
【００２７】
図４は、複数のＰＣＭセルに基づく、メムリスティブ・デバイス１０についての例示的実施を示す。当技術分野において周知であるように、ＰＣＭセルは、セル端子を提供する電極の対の間に配置される、ＰＣＭ物質、例えば、ＧＳＴ（ゲルマニウム−アンチモン−テルル）などのカルコゲナイドの体積の可変抵抗特性を活用する。この例では、デバイス１０は、４つのＰＣＭセル２０を含む。各セル２０の１つの端子が、デバイスの列ラインｃｊに接続される。各セルの他の端子が、デバイスの行ラインｒｉのそれぞれのコンポーネント・ラインに接続される。対応するコンポーネント行ラインおよび列ラインを介したセル２０への適当なプログラミング・パルスの適用によって、セルは、高抵抗（アモルファス）状態または低抵抗（結晶）状態にプログラミングされ得る。各セル２０は、したがって、１ビットの情報を記憶してもよく、４つのセルは、高抵抗状態および低抵抗状態のうちのそれぞれにおけるセルの数に依存して５つの異なる重みについての記憶装置をまとめて提供する。これは、図示されるように４つのセル２０を用いて記憶される重み
【数１４】
2021500646.tif 000016
について２ビット精度を与え、２Ｎ個のセルは、概してＮビット精度を提供する。コントローラ７によるデバイス１０のプログラミングは、特定のセル２０が記憶された重みを増加または減少させるように対処される順序を決定するために、クロックベースの調停方式を用いて実行されてもよい。記憶された重みは、行ラインｒｉ（の全てのコンポーネント）への（低電圧）読み出し信号を適用することによって、「読み出され」得る。それによって、デバイスの列ラインｃｊ上の結果の電流は、４つ全てのセルの伝導度、およびしたがって、合計の記憶された重み
【数１５】
2021500646.tif 000017
に依存する。
【００２８】
後述する実施形態において、ＡＮＮ１のニューロンｎ１ｉ、ｎ２ｊ、ｎ３ｋの機能性は、ニューロン入力信号に所定の「活性化」関数を適用して、次のＡＮＮ層への入力として供給されるニューロン出力信号を生成することによって、ＤＰＵ４において有効に実施される。装置２の訓練動作において、訓練サンプルについての入力データ（例えば、ＭＮＩＳＴ訓練データセットからの手書き数字の画像についての画素データ）が、メモリ８に記憶される。入力データ点（例えば、画像画素）は、ＡＮＮ動作のために固定されたままである所定のマッピングに従って、入力層ニューロンｎ１ｉに、名目上マッピングされる。訓練データは、典型的には、訓練プロセスにおいてネットワークに入力される膨大な数のサンプル（例えば、数千の手書き数字のサンプル）を含む。このプロセスの間、装置２は、メムリスティブ・デバイス１０によって記憶される重み
【数１６】
2021500646.tif 000018
、
【数１７】
2021500646.tif 000019
が繰り返し更新される反復型方法を実施する。特に、ＤＰＵ４は、後述する反復型訓練方式の順伝播動作、逆伝播動作、および重み更新動作の装置２による実行を制御する。
【００２９】
訓練方式の基本ステップは、図５のフローチャートに示されている。順伝播動作（ステップ３０）において、現在の訓練サンプルについての入力データが、ＡＮＮ１を通して入力ニューロン層から出力ニューロン層へと順伝播される。以下でさらに詳述されるこの動作は、ＤＰＵ４内のニューロンｎ１ｉ、ｎ２ｊ、およびｎ３ｋについて、それぞれｘ１ｉ、ｘ２ｊ、およびｘ３ｋで示される出力を計算すること、ならびにこれらの計算において使用されるアレイ出力信号を取得するためのメムリスティブ・アレイ６への入力信号の適用を伴う。後続の逆伝播動作（ステップ３１）において、ＤＰＵ４は、それぞれの出力ニューロンｎ３ｋについての誤差値（δ３ｋで示される）を計算し、ＡＮＮ１を通して出力層から逆伝播方向に最後から２番目の層までこれらの誤差値を逆に伝播する。これは、アレイ出力信号を取得するためのメムリスティブ・アレイ６への入力信号の適用、および入力ニューロン層を除く全ての他の層内のニューロンについての誤差値、この場合、層２のニューロンｎ２ｊについての誤差δ２ｊの計算を伴う。後続の重み更新動作（ステップ３２）において、ＤＰＵは、順伝播ステップおよび逆伝播ステップにおいて計算された値を用いてそれぞれのメムリスティブ・デバイス１０についてデジタル重み補正値ΔＷを計算する。ＤＰＵ４は、次いで、プログラミング信号をデバイスに適用してそれぞれのデジタル重み補正値ΔＷに応じて記憶された重み
【数１８】
2021500646.tif 000020
を更新するように、メムコンピューティング・ユニット３を制御する。決定ステップ３３において、ＤＰＵ４は、所定の収束条件が達成されたかどうかを決定する。（この条件は、訓練動作についての様々なやり方で、例えば、出力ニューロンについての誤差値、反復間の誤差値の変化、サンプル／反復の数などに基づいて、または１つより多くのそのようなパラメータの関数として、定義され得る。特定の収束条件は、本明細書において説明される動作原理に直交する。）達成されない場合（決定ブロック３３における「いいえ」（Ｎ））、ステップ３４において、次の訓練サンプルについての入力データがＣＰＵ７にロードされる。動作は、ステップ３０に戻る。したがって、プロセスは、収束が達成されるまで反復し、達成されると、訓練プロセスが終了する。
【００３０】
メムリスティブ・アレイ６に記憶された重み
【数１９】
2021500646.tif 000021
は、所定の値に初期化されてもよく、または訓練プロセスの開始のためにランダムに分散されてもよい。初期化のための重み分散に対する特定の制約は、例えば、ネットワーク・サイズおよび達成されるべき所与の収束条件についてのニューロン活性化関数ｆ（後述する）に依存し得る。重み更新ステップ３２は、反復毎、または所定の数の逆伝播動作の後に実行されてもよく、以下でさらに説明されるように、重み
【数２０】
2021500646.tif 000022
の全てまたは選択されたサブセットの更新を伴ってもよい。いずれにせよ、重み
【数２１】
2021500646.tif 000023
は、ネットワークが訓練データから学習するときに、訓練プロセス中に繰り返し更新される。
【００３１】
図６は、図１のＡＮＮについての順伝播動作のより詳細なステップを示す。現在の訓練サンプルのためのデータが、ステップ４０において入力される。ステップ４１において、ＤＰＵは、ここでｆで示される活性化関数をそのニューロンにマッピングされた入力データ（ｄｉ）に適用することによって、それぞれの入力層ニューロンｎ１ｉについてデジタル信号値ｘ１ｉを計算する。活性化関数ｆは、典型的には、シグモイド関数、ｔａｎｈ関数、ｒｅＬｕ関数などの非線形関数を含む。入力層ニューロンについての信号値ｘ１ｉは、ステップ４２においてメモリ８に記憶される。ステップ４３において、ＤＰＵ４は、バス５を介してメムコンピューティング・ユニット３に信号値ｘ１ｉを供給し、コントローラ７を順伝播モードに設定する。ステップ４４において、コントローラ７は、信号値ｘ１ｉをメムリスティブ・アレイａ１の行ＤＡＣ１１に供給する。したがって、それぞれのニューロンｎ１ｉに関連する、対応するアナログ電圧信号は、図７に概略的に示されるように、アレイのそれぞれの行ラインｒｉに適用される。列ラインｃｉ上の結果となる出力電流信号は、よって、各列内のデバイス１０の重み
【数２２】
2021500646.tif 000024
に従って入力信号の重み付け合計に対応する。これらの出力信号は、ＡＮＮ１のそれぞれの層２のニューロンｎ２ｊによって受信される信号に対応する。列出力信号は、列ＡＤＣ１２によってデジタル信号値
【数２３】
2021500646.tif 000025
に変換され、デジタル信号値は、コントローラ７によってＤＰＵ４に供給される。ステップ４５において、ＤＰＵ４は、受信したデジタル信号値
【数２４】
2021500646.tif 000026
をメモリ８に記憶する。ステップ４６において、ＤＰＵ４は、それぞれの層２のニューロンｎ２ｊについてデジタル信号値ｘ２ｊを、
【数２５】
2021500646.tif 000027
として計算する。信号値ｘ２ｊは、ステップ４７においてメモリ８に記憶される。よって、ＤＰＵは、先行するニューロン層から取得されるアレイ出力信号に対応するデジタル信号値に活性化関数ｆを適用して、それらのニューロンｎ２ｊに関連するアレイ入力信号に対応するデジタル信号値を生成することによって、層２のニューロンｎ２ｊを実施する。
【００３２】
上記ステップ４３〜４７は、ＡＮＮ１の層１と層２の間の信号の順伝播を実施する。ステップ４８〜５２は、ステップ４３〜４７にそれぞれ対応するが、層２と層３との間の信号を伝播する。したがって、ニューロンｎ２ｊに関連する入力信号は、ステップ４９において、列ラインｃｋの出力信号を取得するためにアレイａ２の行ラインｒｊに適用される。対応するデジタル信号値
【数２６】
2021500646.tif 000028
は、出力ニューロンｎ３ｋについてのデジタル信号値ｘ３ｋを
【数２７】
2021500646.tif 000029
として計算するＤＰＵ４に供給される。信号値ｘ３ｋは、順伝播動作にネットワーク出力を提供する。
【００３３】
図８は、ＡＮＮ１についての逆伝播動作のより詳細なステップを示す。ステップ６０において、順伝播動作におけるニューロンの最後の層、即ち、出力ニューロンｎ３ｋについて、ＤＰＵ４は、それぞれの誤差値δ３ｋを計算する。誤差値δ３ｋは、現在の訓練サンプル、および前のニューロン層、層２から取得される、アレイａ２出力信号に対応するデジタル信号値
【数２８】
2021500646.tif 000030
についてのＡＮＮの予想出力に依存する。特に、各ニューロンｎ３ｋの出力
【数２９】
2021500646.tif 000031
は、対応する誤差値δ３ｋを取得するために、そのニューロンについての予想出力から減算される。各ニューロンｎ３ｋについての予想出力は、現在の訓練サンプルについての既知の分類ラベル、例えば、ＭＮＩＳＴサンプルについての０から９のラベルから決定され得る。（例えば、各クラス０〜９は、それぞれの出力ニューロンによって表されてもよく、出力ニューロンは、そのクラス内のサンプルがネットワークに「示される」ときに最大出力を有するように予想される。理想的には、このニューロン出力は、「１」であるべきであり、他のクラスに対応する全ての他のニューロン出力は、「０」であるべきである。サンプルクラスを示すこれらの１および０は、ネットワークの予想出力をもたらす）。ＤＰＵ４は、ステップ６１において誤差値δ３ｋを記憶する。ステップ６２において、ＤＰＵ４は、バス５を介してメムコンピューティング・ユニット３に誤差値δ３ｋを供給し、コントローラ７を逆伝播モードに設定する。ステップ６３において、コントローラ７は、誤差値δ３ｋをメムリスティブ・アレイａ２の列ＤＡＣ１２に供給する。（誤差値は、電圧（例えば、
【数３０】
2021500646.tif 000032
）として適用されるときに、ＤＡＣ１２の最大範囲を使用するためにそれに応じてＤＰＵ４においてスケールされてもよい。）したがって、それぞれのニューロンｎ３ｋに関連する、対応するアナログ電圧信号は、図９に概略的に示されるように、アレイのそれぞれの列ラインｃｋに入力信号として適用される。行ラインｒｊ上の結果となる出力電流信号は、よって、各行内のデバイス１０の重み
【数３１】
2021500646.tif 000033
に従って入力信号の重み付け合計に対応する。行出力信号は、行ＡＤＣ１１によってデジタル信号値
【数３２】
2021500646.tif 000034
に変換され、デジタル信号値は、コントローラ７によってＤＰＵ４に供給される。ステップ６４において、ＤＰＵ４は、出力信号値
【数３３】
2021500646.tif 000035
を受信および記憶する。ステップ６５において、ＤＰＵ４は、層２についてのそれぞれの誤差値δ２ｊを
【数３４】
2021500646.tif 000036
として計算する。ここで、ｇは、活性化関数ｆとは異なる非線形関数を表し、訓練アルゴリズムが平均二乗誤差目的関数を最小化する特定の場合においてｆの導関数を含む。層２内のニューロンについてのそれぞれの誤差値δ２ｊは、したがって、逆伝播動作において先行ニューロン層（層３）から取得されるアレイ出力信号に対応するデジタル信号値
【数３５】
2021500646.tif 000037
、および順伝播動作において先行ニューロン層（層１）から取得されるアレイ出力信号
【数３６】
2021500646.tif 000038
に基づく。誤差値δ２ｊは、ステップ６６においてメモリ８に記憶される。
【００３４】
上記ステップ６２〜６６は、ＡＮＮ１の層３と層２との間の誤差信号の逆伝播を実施する。追加の隠れ層を有するＡＮＮの場合、ステップ６２〜６６は、各後続ニューロン層について逆伝播方向に最後から２番目の層まで繰り返される。この例では、層２が最後から２番目の層であるため、ステップ６６は、ここで逆伝播動作を完了する。
【００３５】
図１０は、第１の実施形態における重み更新動作のステップを表す。簡略化のため、動作は、第１のアレイａ１におけるデバイスについて説明される。ステップ７０において、層１の信号値ｘ１ｉおよび層２の誤差値δ２ｊが、ＤＰＵ４内のメモリから取り出される。ステップ７１において、ＤＰＵは、アレイａ１内のそれぞれのデバイス１０についてデジタル重み補正値ΔＷを、
ΔＷｉｊ＝ηｘ１ｉδ２ｊ
として計算する。ここで、ηは、ネットワークについての予め定義された学習パラメータである。ＡＮＮ１内のニューロンｎ１ｉおよびｎ２ｊの対を相互接続するシナプスｓｉｊに対応するデバイスについての重み補正値ΔＷｉｊは、よって、順伝播動作においてニューロンｎ１から受信される入力信号および逆伝播動作においてニューロンｎ２について計算された誤差信号の関数として計算される。ステップ７２において、ＤＰＵ４は、各重み補正値ΔＷｉｊを所定のステップ・サイズεで丸めて、丸めた補正値
【数３７】
2021500646.tif 000039
、即ち
【数３８】
2021500646.tif 000040
を生成する。伝統的丸め法または確率的丸め法が、所望によりここで使用され得る。ステップ・サイズεは、所定のプログラミング・パルス、即ち所定の振幅および期間のパルスの適用に応じたメムリスティブ・デバイスの重み変更を示すことが好ましい。ステップ７３において、ＤＰＵ４は、デバイス１０についての丸めた補正値
【数３９】
2021500646.tif 000041
をメムコンピューティング・ユニット３に送信し、コントローラ７をプログラミング・モードに設定する。ステップ７４において、コントローラ７が、プログラミング信号を各デバイス１０に適用して、記憶された重み
【数４０】
2021500646.tif 000042
を、そのデバイスについての丸めた補正値
【数４１】
2021500646.tif 000043
に依存した量だけ調整する。ここでのプログラミング信号は、丸めた補正値
【数４２】
2021500646.tif 000044
に対応する、いくつかの前述のプログラミング・パルスを含み得る。結果となる記憶された重みは、よって、
【数４３】
2021500646.tif 000045
に更新される。
【００３６】
いくつかの実施形態では、重み補正値ΔＷｉｊは、アレイ内の全てのデバイス１０について計算され得る。それ以外では、ΔＷｉｊは、デバイスのサブセットのみ、例えばランダムに選択されたサブセット、またはｘ１ｉもしくはδ２ｊまたはその両方が閾値レベルを超えるデバイスについてのみ、計算されてもよい。概して、誤差値δ２ｊは、正または負であってもよく、それによって、重みが、
【数４４】
2021500646.tif 000046
の符号に従って増加され（「増強され」）または減少され（「抑圧され」）得る。プログラミング・パルスおよびステップ・サイズεは、メムリスティブ・デバイスの特性に依存して増強および抑圧について異なり得る。また、重み更新は、訓練方式の反復毎における逆伝播の後（「オンライン訓練」）、またはある回数Ｋ回の反復後（「バッチ訓練」）に、実行され得る。後者の場合、重み補正値ΔＷｉｊは、Ｋ個の訓練サンプルにわたってＤＰＵ４において累積され得る。
【００３７】
アレイａ２内のデバイスの重み
【数４５】
2021500646.tif 000047
は、これらのデバイスについてデジタル重み補正値ΔＷｊｋ＝ηｘ２ｊδ３ｋから計算される丸めた重み補正値
【数４６】
2021500646.tif 000048
に基づいて、同様に更新される。図１０のプロセスのステップは、異なるメムリスティブ・アレイについて並列で、または同様に各アレイについて逐次的に、実行され得る。同様に、重み更新プロセスのステップは、各アレイ内の特定のメムリスティブ・デバイスまたはデバイスのサブセットについて逐次的に実行され得る。異なるプログラミング・パルスおよびステップ・サイズεもまた、いくつかの実施形態において異なるシナプス層を実施するデバイスのために使用され得る。
【００３８】
上記システムは、低精度のメムリスティブ・アレイが順伝播計算および逆伝播計算に活用されるが、重み更新動作は、ＤＰＵ４においてデジタルで計算される重み補正値ΔＷに基づく、混合精度ＡＮＮ訓練方法を実施する。重み補正値は、よって、デジタル精度、好ましくは少なくとも１６ビット（固定または浮動小数点）精度で計算され、結果となるデジタル値は、アレイについてのプログラミング信号を決定するために使用される。この技術は、メムリスティブ・アレイの高速低電力並列計算ケイパビリティを活用しつつ、重み更新動作における正確性を向上させる。記憶された重みは、完全に再プログラムされるのとは対照的に、少しづつ更新され、メムリスティブ・アレイについての重みのセットは、ＤＰＵ４に記憶される必要はなく、メモリ要件を減少させる。
【００３９】
ＡＮＮ１の訓練に続いて、装置２は、訓練済み重み
【数４７】
2021500646.tif 000049
、
【数４８】
2021500646.tif 000050
に基づいて入力データを分類するテスト（または「推論」）・モードにおいて使用され得る。推論モードにおいて、入力データ（例えば、ＭＮＩＳＴテスト数字）は、順伝播モードで動作するネットワークに供給され、入力データは、ネットワーク出力に基づいて（例えば、数字０〜９として）分類される。分類は、例えば、ソフトマックス関数を用いてＤＰＵ７において実行され得る。図１１は、ステップ７２における確率的丸め法とともに上記重み更新動作を用いた訓練に続く、ＭＮＩＳＴテスト・データを用いた推論動作についてのシミュレーション結果を示す。テスト正確度が、デバイス１０における重み
【数４９】
2021500646.tif 000051
の記憶についてのビット精度に対してプロットされる。完全６４ビット浮動小数点訓練方法を用いて取得される相当する結果も、比較のために示されている。上記方法のテスト正確度は、記憶された重み
【数５０】
2021500646.tif 000052
のわずか４ビット精度で６４ビット精度の結果に近づいてくることが分かる。重み
【数５１】
2021500646.tif 000053
における８以上のビット精度で、テスト正確度は、６４ビット精度の実施に相当する。
【００４０】
上記の第１の重み更新方法では、ステップ・サイズεが大きい場合、または重み更新が不正確なやり方で実行される場合に、分類正確度が低下し得る。これは、誤差が精密に考慮されないように、ΔＷについての正確な情報が丸めの後で失われるためである。この問題に対処する好適な重み更新手続は、以下で説明される。
【００４１】
図１２は、重み更新手続の第２の実施形態のステップを示す。この実施形態では、ＤＰＵ４は、アレイ・セット６内のそれぞれのメムリスティブ・デバイス１０によって記憶された重み
【数５２】
2021500646.tif 000054
に対応する（高精度）デジタル重み値Ｗのセットをメモリ８に記憶する。動作は、ここでアレイａ１におけるデバイスについて、再び説明される。ステップ８０において、層１の信号値ｘ１ｉおよび層２の誤差値δ２ｊが、ＤＰＵ４内のメモリから取り出される。ステップ８１において、ＤＰＵは、デバイス１０のデジタル重み補正値ΔＷを、前の通り、
ΔＷｉｊ＝ηｘ１ｉδ２ｊ
として計算する。
【００４２】
ステップ８２において、ＤＰＵ４は、メモリ８からそれぞれのデバイス１０についてのデジタル重み値Ｗを取り出す。ステップ８３において、ＤＰＵ４は、各デバイスについての現在のデジタル重み値Ｗおよびステップ８１において計算されたデジタル重み補正値ΔＷから、それぞれのデバイスについての新たなデジタル重み値をＷｉｊ＋ΔＷｉｊ＝新たなＷｉｊと計算する。この計算は、したがって、デジタル精度、好ましくは高精度、即ち少なくとも１６ビット精度で実行され、必要に応じて、例えば３２ビット精度または６４ビット精度で実行され得る。ステップ８４において、ＤＰＵ４は、そのデバイスについての新たなデジタル重み値Ｗｉｊに依存してプログラミング信号を各デバイス１０に適用するように、メムコンピューティング・ユニット３を制御する。
【００４３】
ここで１つの実施において、ステップ８４は、コントローラ７の読み出しモード動作を介してそれぞれのメムリスティブ・デバイスにより記憶される重み
【数５３】
2021500646.tif 000055
を読み出すこと、および次いで、デバイスについての新たなデジタル重み値Ｗとそのデバイスについての読み出された重み
【数５４】
2021500646.tif 000056
との間の差をＤＰＵ４において計算することによって、実行され得る。プログラミング信号は、次いで、そのデバイスについて計算された差に依存した量だけ、記憶された重み
【数５５】
2021500646.tif 000057
を調整するために、デバイスに適用される。ここでの差の値は、所定のプログラミング・パルスの適用に応じたデバイスの重み変更を示すステップ・サイズεに従って、（決定論的または確率的に）丸められてもよく、ここでのプログラミング信号は、丸めた異なる値に対応するいくつかのプログラミング・パルスを含み得る。よって、記憶された重み
【数５６】
2021500646.tif 000058
は、少しずつ更新される。
【００４４】
ステップ８４の別の実施において、増分更新の代わりに、重み
【数５７】
2021500646.tif 000059
が完全に再プログラミングされ得る。この場合、プログラミング信号は、デバイスについての新たなデジタル重み値Ｗに基づいて各デバイスを再プログラムするために適用される。これは、例えば、重みが反復してプログラムされおよび読み出され、対応するデジタル値Ｗに可能な限り近い
【数５８】
2021500646.tif 000060
をもたらすようになされる、プログラムおよび検証方式によって、実行され得る。（決定論的または確率的に）丸めたバージョンのＷも、ここで使用され得る。
【００４５】
図１２の方法は、完全６４ビット浮動小数点の実施に非常に近い最終的な分類正確度につながる。これは、重みが決定論的に丸めたバージョンのＷに基づいて再プログラミングされる方法についての１３に示される。Ｗ＋ΔＷの計算が高精度で行われるため、分類正確度は向上する。したがって、ΔＷについての情報が失われず、プロセスは、
【数５９】
2021500646.tif 000061
の潜在的に不正確な更新をそれに応じて補償する。
【００４６】
図１２の方法は、重み更新毎に、重みを読み出すことまたはアレイ全体を再プログラミングすることに起因する追加のオーバヘッドを伴い、これは、いくつかの実施については実際的でない場合がある。図１４は、このオーバヘッドを回避する第３の、特に好適な重み更新方法のステップを示す。この方法では、ＤＰＵ４は、アレイ・セット６内のそれぞれのメムリスティブ・デバイス１０について、（高精度）デジタル累積値χのセットをメモリ８に記憶する。これらの累積値χは、訓練動作の開始において０に初期化される。図１４のステップ９０および９１は、図１２のステップ８０および８１に対応する。ステップ９２において、ＤＰＵ４は、それぞれのデバイス１０についてのデジタル累積値χをメモリ８から取り出す。ステップ９３において、ＤＰＵ４は、各デバイスについての重み補正値ΔＷおよび記憶された累積値χから、それぞれのデバイスについての更新された累積値を、χｉｊ＋ΔＷｉｊ＝更新されたχｉｊと計算する。ステップ９４において、ＤＰＵ４は、各デバイスについての更新された累積値χｉｊから重み調整量Ａｉｊを決定する。このステップの詳述された例が、以下で説明される。ステップ９５において、ＤＰＵ４は、プログラミング信号を各デバイス１０に適用して記憶された重み
【数６０】
2021500646.tif 000062
を、そのデバイスについての重み調整量Ａｉｊに対応する量だけ調整するように、メムコンピューティング・ユニット３を制御する。ステップ９６において、ＤＰＵ４は、次いで、各デバイスについての更新された累積値から重み調整量を減算することによって、それぞれのデバイスについての新たなデジタル累積値を、χｉｊ−Ａｉｊ＝新たなχｉｊと計算する。累積値計算は、したがって、デジタル精度、好ましくは少なくとも１６ビット精度で実行され、必要に応じて、より高い（例えば３２ビットまたは６４ビット）精度で実行され得る。
【００４７】
重み更新量Ａｉｊを計算するための手続の第１の例が、図１５に示される。ステップ１００〜１０２は、図１４のステップ９４および９５を実施する。ステップ１００において、ＤＰＵ４は、所定のステップ・サイズεで各デバイスについて更新された累積値χｉｊを（決定論的または確率的に）丸めることによって、重み調整量Ａｉｊを決定する。ここで、ε＞０である。再び、このステップ・サイズεは、所定のプログラミング・パルスの適用に応じたメムリスティブ・デバイスの重み変更を示す。丸めた結果は、デバイスに適用されるべきこれらのプログラミング・パルスの数ｎｉｊ＝ｒｏｕｎｄ（χｉｊ／ε）を与える。各デバイスについての重み調整量は、よって、ここではＡｉｊ＝ｎｉｊεである。概して、累積値χｉｊおよびしたがってｎｉｊの値が、正または負であってもよく、重みは、ｎｉｊの符号に従って増強され、または抑圧され得る。（プログラミング・パルスおよびステップ・サイズεは、増強および抑圧について異なってもよく、異なるＡＮＮ層についても異なってもよい。）ＤＰＵ４は、ステップ１０１において結果となる数ｎｉｊをメムコンピューティング・ユニット３に送信する。ｎｉｊ＞０の場合、コントローラ７は、
【数６１】
2021500646.tif 000063
を記憶するデバイスに｜ｎｉｊ｜個の増強プログラミング・パルスを適用する。ｎｉｊ＜０の場合、コントローラ７は、デバイスに｜ｎｉｊ｜個の抑圧プログラミング・パルスを適用する。図１４のステップ９６に戻って、各デバイスについての新たな累積値が、χｉｊ−ｎｉｊεとして計算される。
【００４８】
図１６は、重み更新量Ａｉｊを計算するための手続の第２の例を与える。ステップ１０５〜１０８は、図１４のステップ９４および９５を実施する。この手続において、ＤＰＵ４は、各メムリスティブ・デバイスについての更新された累積値χｉｊを、ステップ・サイズεに依存した所定の閾値と比較する。ここで、εは、前と同様に定義される。この例では、閾値は、χｉｊの対応する符号に依存して±εである。χｉｊ＞εの場合（決定ステップ１０５における「はい」）、ステップ１０６において、ＤＰＵは、１つの増強プログラミング・パルスをデバイスに適用するようにコントローラ７に命令する。そうでない場合、動作は、決定ステップ１０７に続く。ここでχｉｊ＜−εの場合、ステップ１０８において、ＤＰＵ４は、１つの抑圧プログラミング・パルスをデバイスに適用するようにコントローラ７に命令する。−ε≦χｉｊ≦εの場合、重み
【数６２】
2021500646.tif 000064
は変更されない。したがって、デバイスについての重み調整量Ａｉｊは、ここで０または±εのいずれかであり、図１４のステップ９６において、新たな累積値がそれに応じて計算される。
【００４９】
図１６の実施形態は、単一プログラミング・パルスのみが重み更新毎に適用されることを必要とし、メムコンピューティング・ユニット３におけるより単純なハードウェア実施を提示する。ステップ・サイズε、例えば±ε／２に基づく様々な他の閾値は、この技術を用いて所望により活用され得る。
【００５０】
図１４に基づく重み更新方法は、完全に再プログラミングする、または重み
【数６３】
2021500646.tif 000065
を読み直す必要性を回避し、同時に、デジタル累積値χにおいてΔＷについての情報全てを保持する。これは、高速で高い正確度のＡＮＮ訓練のための非常に効率的な実施を提供する。図１５の方法を用いたこの技術で達成可能な優れた分類正確度が、図１７に示される。
【００５１】
多数の変更および修正が、当然ながら、説明された例示的実施形態に対して行われ得る。例えば、訓練方法が順伝播ステップおよび逆伝播ステップのうちの１つだけについてメムコンピューティング・ユニット３を使用する実施形態が、把握され得る。例えば、順計算が、ＤＰＵ４において行われる逆伝播計算とともに、アレイ・セット６を用いて実行されてもよい。また、ニューロン活性化関数ｆが、上記ＤＰＵ４において高精度で実施され、他の実施形態において、ニューロン機能性が、メムコンピューティング・ユニット３におけるアナログ回路によって実施され得る。
【００５２】
概して、メムリスティブ・デバイス１０は、例えば、様々な回路配列で１つまたは複数のＰＣＭセルまたは他のメムリスティブ・メモリ素子あるいはその両方に基づいて、任意の所望のやり方で実施され得る。任意の種類のメムリスティブ・メモリ素子、例えば、ＰＣＭ、あるいは伝導ブリッジ型ＲＲＡＭセル、酸化または金属酸化ＲＲＡＭセル、カーボンＲＲＡＭセルを含む抵抗変化型ＲＡＭ（ＲＲＡＭまたはＲｅＲＡＭ）セルなどの他の抵抗変化型メモリ・セル、ならびに磁気抵抗ランダム・アクセス・メモリ（ＭＲＡＭ）素子、強誘電体ランダム・アクセス・メモリ（ＦｅＲＡＭ）素子、光学メモリ素子、およびメムリスティブ素子の挙動をエミュレートする回路デバイス、例えばトランジスタ、抵抗、コンデンサ、またはインダクタ、あるいはその組み合わせを含むＣＭＯＳ回路が、使用され得る。
【００５３】
いくつかの場合において、フロー図のステップは、図示されたものとは異なる順序で実施されてもよく、ステップは、必要に応じて並列で実行されてもよい。
【００５４】
本発明の多様な実施形態の説明は、例示の目的で提示されているが、網羅的であること、または開示された実施形態に限定することを意図したものではない。説明された実施形態の範囲および思想から逸脱することなく、多くの修正および変形が当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、実用的な適用、もしくは市場で発見される技術を超える技術的改善を最もよく説明するため、または他の当業者が本明細書で開示される実施形態を理解することを可能にするために、選択された。
【図１】
2021500646.tif 000084
【図２】
2021500646.tif 000085
【図３】
2021500646.tif 000086
【図４】
2021500646.tif 000087
【図５】
2021500646.tif 000088
【図６】
2021500646.tif 000089
【図７】
2021500646.tif 000090
【図８】
2021500646.tif 000091
【図９】
2021500646.tif 000092
【図１０】
2021500646.tif 000093
【図１１】
2021500646.tif 000094
【図１２】
2021500646.tif 000095
【図１３】
2021500646.tif 000096
【図１４】
2021500646.tif 000097
【図１５】
2021500646.tif 000098
【図１６】
2021500646.tif 000099
【図１７】
2021500646.tif 000100
【手続補正書】
【提出日】令和2年5月12日(2020.5.12)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図５
【補正方法】変更
【補正の内容】
【図５】
2021500646.tif 000101
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図６
【補正方法】変更
【補正の内容】
【図６】
2021500646.tif 000102
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図７
【補正方法】変更
【補正の内容】
【図７】
2021500646.tif 000103
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図８
【補正方法】変更
【補正の内容】
【図８】
2021500646.tif 000104
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図９
【補正方法】変更
【補正の内容】
【図９】
2021500646.tif 000105
【手続補正６】
【補正対象書類名】図面
【補正対象項目名】図１０
【補正方法】変更
【補正の内容】
【図１０】
2021500646.tif 000106
【手続補正７】
【補正対象書類名】図面
【補正対象項目名】図１２
【補正方法】変更
【補正の内容】
【図１２】
2021500646.tif 000107
【手続補正８】
【補正対象書類名】図面
【補正対象項目名】図１４
【補正方法】変更
【補正の内容】
【図１４】
2021500646.tif 000108
【手続補正９】
【補正対象書類名】図面
【補正対象項目名】図１５
【補正方法】変更
【補正の内容】
【図１５】
2021500646.tif 000109
【手続補正１０】
【補正対象書類名】図面
【補正対象項目名】図１６
【補正方法】変更
【補正の内容】
【図１６】
2021500646.tif 000110
【国際調査報告】
2021500646.tif 000111
2021500646.tif 000112