(57)【要約】【課題】シナプス重みを更新するための方法およびそのニューロモーフィック・チップを提供。【解決手段】ニューロモーフィック・チップは、対応するそれぞれの抵抗性デバイスを含むシナプス・セル、軸索線、樹状突起線およびスイッチを含む。シナプス・セルは、クロスバー・アレイを形成するように、軸索線および樹状突起線に接続されている。軸索線は、入力データを受け取り、その入力データをシナプス・セルに供給するように構成されている。樹状突起線は、出力データを受け取り、その出力データを、１本または複数本の対応するそれぞれの出力線を介して供給するように構成されている。スイッチのうちの所与の１つのスイッチは、入力端子を１本または複数本の入力線に接続し、その１つまたは複数の出力端子を所与の１本または複数本の軸索線に変更可能に接続するように構成されている。抵抗性デバイスのばらつきのために抵抗値を小さな刻みで変化させることが難しい場合であっても、高精密のシナプス重みの更新を可能にする。【選択図】図１
2021511566.tif 000002
【特許請求の範囲】
【請求項１】
ニューロモーフィック・チップであって、
対応するそれぞれの抵抗性デバイスを含む複数のシナプス・セルと、
クロスバー・アレイを形成するように前記シナプス・セルに接続された複数の軸索線および複数の樹状突起線であって、前記軸索線が、入力データを受け取り、前記入力データを前記シナプス・セルに供給するように構成され、前記樹状突起線が、出力データを受け取り、前記出力データを、１本または複数本の対応するそれぞれの出力線を介して供給するように構成された、前記複数の軸索線および前記複数の樹状突起線と、
入力端子および１つまたは複数の出力端子をそれぞれが含む複数のスイッチであって、前記スイッチのうちの所与の１つのスイッチが、その入力端子を１本または複数本の入力線に接続し、その１つまたは複数の出力端子を、前記軸索線のうちの所与の１本または複数本の軸索線に変更可能に接続するように構成された、前記複数のスイッチと
を備える、ニューロモーフィック・チップ。
【請求項２】
前記抵抗性デバイスが可変抵抗値を保持することができる、請求項１に記載のチップ。
【請求項３】
前記抵抗性デバイスがアナログ値を記録することができる、請求項２に記載のチップ。
【請求項４】
前記抵抗性デバイスが不揮発性メモリを含む、請求項１に記載のチップ。
【請求項５】
前記不揮発性メモリが、相変化メモリまたはフラッシュ・メモリを含む、請求項４に記載のチップ。
【請求項６】
前記所与の１本または複数本の軸索線に関連づけられた、前記シナプス・セルのうちの所与の１つまたは複数のシナプス・セルにシナプス重みを割り当てるために、前記所与のスイッチが、その１つまたは複数の出力端子を前記所与の１本または複数本の軸索線に変更可能に接続する、請求項１に記載のチップ。
【請求項７】
前記入力データを前記所与の１つまたは複数のシナプス・セルに供給するために、前記所与のスイッチが、その入力端子を、前記所与の１本または複数本の軸索線に変更可能に接続する、請求項６に記載のチップ。
【請求項８】
前記所与の１本または複数本の軸索線が、隣り合う一対の軸索線を含み、前記入力データを前記所与の１つまたは複数のシナプス・セルに供給するために、前記所与のスイッチが、前記入力端子を、前記隣り合う一対の軸索線に変更可能に接続する、請求項７に記載のチップ。
【請求項９】
前記入力データを前記スイッチを介して前記軸索線に供給するための１つまたは複数のシナプス前ニューロンであって、前記シナプス前ニューロンのそれぞれが入力端および出力端を有する、前記１つまたは複数のシナプス前ニューロンをさらに備え、前記入力データを前記所与のスイッチの前記入力端子に供給するために、前記所与のスイッチの前記入力端子がそれぞれ、前記シナプス前ニューロンのうちの所与の１つのシナプス前ニューロンの前記出力端に接続する、請求項１に記載のチップ。
【請求項１０】
前記出力データを前記樹状突起線から受け取るための１つまたは複数のシナプス後ニューロンであって、前記シナプス後ニューロンのそれぞれが入力端および出力端を有する、前記１つまたは複数のシナプス後ニューロンをさらに備え、前記出力データを前記所与の樹状突起線から受け取るために、前記シナプス後ニューロンのうちの所与の１つのシナプス後ニューロンの前記入力端が、前記樹状突起線のうちの所与の１本の樹状突起線に接続する、請求項９に記載のチップ。
【請求項１１】
前記シナプス後ニューロンを、入力のための第２のシナプス前ニューロンとみなすように構成された後続のニューロン層をさらに備え、前記後続のニューロン層が、対応するそれぞれの抵抗性デバイスを前記第２のシナプス前ニューロンと第２のシナプス後ニューロンの間に含む第２の複数のシナプス・セルに関連づけられており、前記第２の複数のシナプス・セルが、第２のクロスバー・アレイを形成するように前記軸索線および前記樹状突起線によって接続されており、前記後続のニューロン層が、前記出力データを第２の入力データとして受け取る、請求項１０に記載のニューロモーフィック・チップ。
【請求項１２】
前記ニューロモーフィック・チップの製造を簡素化するために、前記スイッチが、ＡＳＩＣまたはＦＰＧＡ回路によって前記ニューロモーフィック・チップに埋め込まれている、請求項１に記載のチップ。
【請求項１３】
ニューロモーフィック・システムであって、
請求項１ないし１２のいずれかに記載のニューロモーフィック・チップと、
前記ニューロモーフィック・チップに動作可能に結合されたコントローラと
を備え、前記コントローラが、
前記所与のスイッチが、その入力線を、前記ニューロモーフィック・システム上で展開されているアプリケーションの要求に従って、前記所与の１本または複数本の軸索線に変更可能に接続することを可能にするように構成されており、さらに、
前記シナプス・セルの好ましい数の抵抗性要素によって単一の重みを表現することによって、前記所与の１本または複数本の軸索線を介して、前記入力データを用いた学習動作を実行するように構成されている、
ニューロモーフィック・システム。
【請求項１４】
前記学習動作中に前記入力データを前記所与の１本または複数本の軸索線に供給するための、前記コントローラに接続されたデータベースをさらに備える、請求項１３に記載のニューロモーフィック・システム。
【請求項１５】
前記出力データを予想出力データと比較し、前記出力データと前記予想出力データとの差を誤差として出力するように構成された比較要素をさらに備える、請求項１３に記載のニューロモーフィック・システム。
【請求項１６】
前記予想出力データが前記コントローラから得られる、請求項１５に記載のニューロモーフィック・システム。
【請求項１７】
ニューロモーフィック・チップ内のシナプス重みを更新するための方法であって、
前記ニューロモーフィック・チップの複数のスイッチの対応するそれぞれの入力端子を前記ニューロモーフィック・チップの入力線に接続することと、
前記ニューロモーフィック・チップの複数のシナプス・セルのうちの所与の１つまたは複数のシナプス・セルにシナプス重みを割り当てるために、前記スイッチのうちの所与の１つのスイッチについて、前記所与のスイッチを、前記ニューロモーフィック・チップの複数の軸索線のうちの所与の１本または複数本の軸索線に変更可能に接続することと  を含み、前記所与の１本または複数本の軸索線が、前記入力線のうちの所与の１本または複数本の入力線から入力データを受け取り、前記入力データを、前記所与の１つまたは複数のシナプス・セルに供給するように構成されており、
前記シナプス・セルが、クロスバー・アレイを形成するように、前記ニューロモーフィック・チップの前記軸索線および複数の樹状突起線に接続されている、
方法。
【請求項１８】
前記ニューロモーフィック・システム上で展開されているアプリケーションの要求に従って、前記所与のスイッチが、前記所与の１本または複数本の軸索線に変更可能に接続し、前記方法がさらに、前記所与の１つまたは複数のシナプス・セルの好ましい数の抵抗性要素によって前記重みを表現することによって、前記所与の１本または複数本の軸索線を介して、前記入力データを用いた学習動作を実行することを含む、請求項１７に記載の方法。
【請求項１９】
プログラム命令が具現化されたコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品であって、前記プログラム命令が、請求項１８に記載の方法を前記スイッチに実行させるように、前記スイッチによって実行可能である、コンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューロモーフィック・チップ（ｎｅｕｒｏｍｏｒｐｈｉｃ  ｃｈｉｐ）、およびニューロモーフィック・チップの精密シナプス重み値（ｐｒｅｃｉｓｅ  ｓｙｎａｐｔｉｃ  ｗｅｉｇｈｔ  ｖａｌｕｅ）を更新するためのシステムに関する。
【背景技術】
【０００２】
不揮発性メモリ（ＮＶＭ：ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ）ベースのニューロモーフィック・チップなどのハードウェア・ニューロモーフィック・チップ実施態様が台頭している。このようなニューロモーフィック・チップは、スパイキング・ニューラル・ネットワーク（ＳＮＮ：ｓｐｉｋｉｎｇ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ）およびディープ・ニューラル・ネットワーク（ＤＮＮ：ｄｅｅｐ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ）などのニューラル・ネットワーク内で実施され得る。ＳＮＮでは、生体ニューロンにならってモデル化されたコンピュータ手法を実施するために、スパイク・タイミング依存可塑性（ＳＴＤＰ：ｓｐｉｋｅ−ｔｉｍｉｎｇ−ｄｅｐｅｎｄｅｎｔ−ｐｌａｓｔｉｃｉｔｙ）などのローカル学習規則によってシナプス接続を更新することができる。ＤＮＮでは、ニューロモーフィック・チップが、バックプロパゲーション（ｂａｃｋｐｒｏｐａｇａｔｉｏｎ）などのアルゴリズムに必要な積和（ＭＡＣ：ｍｕｌｔｉｐｌｙ−ａｃｃｕｍｕｌａｔｅ）演算を、アナログ式ではあるが超並列（ｍａｓｓｉｖｅｌｙ  ｐａｒａｌｌｅｌ）的な手法で実施する、シナプス重みの行列も表現し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明は、ニューロモーフィック・チップ、ニューロモーフィック・システム、ニューロモーフィック・チップ内のシナプス重みを更新するための方法およびコンピュータ・プログラムを提供する。
【課題を解決するための手段】
【０００４】
本発明の１つの態様によれば、ニューロモーフィック・チップが提供される。このニューロモーフィック・チップは、対応するそれぞれの抵抗性デバイス（ｒｅｓｉｓｔｉｖｅ  ｄｅｖｉｃｅ）を含む複数のシナプス・セル、複数の軸索線（ａｘｏｎ  ｌｉｎｅ）、複数の樹状突起線（ｄｅｎｄｒｉｔｅ  ｌｉｎｅ）、ならびに入力端子および１つまたは複数の出力端子をそれぞれが含む複数のスイッチを含む。シナプス・セルは、クロスバー・アレイを形成するように軸索および樹状突起に接続されている。軸索線は、入力データを受け取り、その入力データをシナプス・セルに供給するように構成されている。樹状突起線は、出力データを受け取り、その出力データを、１本または複数本の対応するそれぞれの出力線を介して供給するように構成されている。スイッチのうちの所与の１つのスイッチは、その入力端子を１本または複数本の入力線に接続し、その１つまたは複数の出力端子を、軸索線のうちの所与の１本または複数本の軸索線に変更可能に接続するように構成されている。
【０００５】
本発明の別の態様によれば、ニューロモーフィック・システムが提供される。このニューロモーフィック・システムは、ニューロモーフィック・チップおよびコントローラを含む。ニューロモーフィック・チップは、対応するそれぞれの抵抗性デバイスを含む複数のシナプス・セル、複数の軸索線、複数の樹状突起線、ならびに入力端子および１つまたは複数の出力端子をそれぞれが含む複数のスイッチを含む。シナプス・セルは、クロスバー・アレイを形成するように軸索および樹状突起に接続されている。軸索線は、入力データを受け取り、その入力データをシナプス・セルに供給するように構成されている。樹状突起線は、出力データを受け取り、その出力データを、１本または複数本の対応するそれぞれの出力線を介して供給するように構成されている。スイッチのうちの所与の１つのスイッチは、その入力端子を１本または複数本の入力線に接続し、その１つまたは複数の出力端子を、軸索線のうちの所与の１本または複数本の軸索線に変更可能に接続するように構成されている。コントローラは、所与のスイッチが、その入力線を、システム上で展開されているアプリケーションの要求に従って、所与の１本または複数本の軸索線に変更可能に接続することを可能にするように構成されており、さらに、シナプス・セルの好ましい数の抵抗性要素によって単一の重みを表現することによって、所与の１本または複数本の軸索線を介して、入力データを用いた学習動作を実行するように構成されている。
【０００６】
所与の１本または複数本の軸索線に関連づけられた所与の１つまたは複数のシナプス・セルにシナプス重みを割り当てるために、所与のスイッチは、その１つまたは複数の出力端子を所与の１本または複数本の軸索線に変更可能に接続することができる。
【０００７】
ニューロモーフィック・チップは、入力データをスイッチを介して軸索線に供給するための１つまたは複数のシナプス前ニューロン（ｐｒｅ−ｓｙｎａｐｔｉｃ  ｎｅｕｒｏｎ）をさらに備えることができる。それぞれのシナプス前ニューロンは入力端および出力端を有し、入力データを所与のスイッチの入力端子に供給するために、所与のスイッチの入力端子はそれぞれ、シナプス前ニューロンのうちの所与の１つのシナプス前ニューロンの出力端に接続している。
【０００８】
本発明のさらに別の態様によれば、ニューロモーフィック・チップ内のシナプス重みを更新するための方法が提供される。この方法は、ニューロモーフィック・チップの複数のスイッチの対応するそれぞれの入力端子をニューロモーフィック・チップの入力線に接続すること、およびニューロモーフィック・チップの複数のシナプス・セルのうちの所与の１つまたは複数のシナプス・セルにシナプス重みを割り当てるために、スイッチのうちの所与の１つのスイッチについて、所与のスイッチを、ニューロモーフィック・チップの複数の軸索線のうちの所与の１本または複数本の軸索線に変更可能に接続することを含む。所与の１本または複数本の軸索線は、入力線のうちの所与の１本または複数本の入力線から入力データを受け取り、その入力データを、所与のシナプス・セルに供給するように構成されている。シナプス・セルは、クロスバー・アレイを形成するように、ニューロモーフィック・チップの軸索線および複数の樹状突起線に接続されている。
【０００９】
ニューロモーフィック・システム上で展開されているアプリケーションの要求に従って、所与のスイッチは、所与の１本または複数本の軸索線に変更可能に接続することができ、この方法はさらに、所与の１つまたは複数のシナプス・セルの好ましい数の抵抗性要素によって重みを表現することによって、所与の１本または複数本の軸索線を介して、入力データを用いた学習動作を実行することを含む。
【００１０】
発明の概要の項が、本発明の実施形態の必要な全ての特徴を必ずしも記載しているとは限らない。本発明が、上に記載された特徴の部分的な組合せ（ｓｕｂ−ｃｏｍｂｉｎａｔｉｏｎ）であることもある。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に基づく、ニューロモーフィック・チップの例示的な概要を示す図である。
【図２】生体シナプス前ニューロンから生体シナプス後ニューロン（ｐｏｓｔ−ｓｙｎａｐｔｉｃ  ｂｉｏｌｏｇｉｃａｌ  ｎｅｕｒｏｎ）への活動電位の例示的な遷移を示す図である。
【図３】本発明の実施形態に基づく、アレイのそれぞれのシナプス・セル内において例示的なシナプス重み変化を示すチャートである。
【図４】積和（ＭＡＣ）演算による例示的な下流ニューロン興奮を示す図である。
【図５】本発明の実施形態に基づく、ディープ・ニューラル・ネットワーク（ＤＮＮ）の例示的なハードウェア実施態様を示す図である。
【図６】本発明の実施形態に基づく、ニューロモーフィック・システムを示す図である。
【図７】本発明の代替実施形態に基づく、ニューロモーフィック・システムを示す図である。
【図８】本発明の実施形態に基づく、ニューロモーフィック・チップの入力端子に供給される入力パターンの例示的な関係を示すチャートである。
【図９】本発明の実施形態に基づく、ニューロモーフィック・システムの例示的な動作の流れを示すブロック／流れ図である。
【図１０】本発明の実施形態に基づく、シナプス・セルの数に関係する例示的なコンダクタンス変動を示す図である。
【図１１】本発明の実施形態に基づく、コンピュータの例示的なハードウェア構成を示す図である。
【発明を実施するための形態】
【００１２】
以下では、図面を参照して、本発明の例示的な実施形態を詳細に説明する。
【００１３】
本発明は、以下に示す例示的な実施形態に限定されず、本発明の範囲内でさまざまな変更を加えて実施することができるに留意されたい。さらに、本明細書で使用される図面は図解を目的とし、実寸法を示していない。
【００１４】
通常、ニューロモーフィック・チップのアナログ・セルは、（連続した）シナプス重み値を表現することができる。ニューロモーフィック・チップの学習段階中には、重み値の細かな更新が必要となり得る。しかしながら、デバイス変動性（ｄｅｖｉｃｅ  ｖａｒｉａｂｉｌｉｔｙ）のため、セルごとのシナプス重み値を、ある正確さ（ａｃｃｕｒａｃｙ）レベルの範囲内で精密に更新することが困難であることがある。周辺回路を使用して、シナプス重み値をこの正確さレベルの範囲内で制御して、最終的に、予想される値に近い認識動作を達成することができる。同時に、複雑な周辺回路を使用せずに、ハードウェア・ニューロモーフィック・チップ実施態様は、トレーニング・パワーまたはトレーニング速度における固有の利点に影響を及ぼさないことを要求する。さらに、電気パラメータ、例えばコンダクタンス、抵抗および静電容量の変動のために、シナプス重みの更新に関連する問題が生じ得る。
【００１５】
図１を参照すると、ニューロモーフィック・チップのクロスバー・アレイ１００の例示的な概要が示されている。クロスバー・アレイ１００は、シナプス・セル１０、軸索２０および樹状突起３０を含み得る。シナプス・セルは、抵抗性セルまたはシナプス・メモリ・セル（例えば不揮発性メモリ（ＮＶＭ）セル）とも呼ばれ得る。ＮＶＭの非限定的な例は、相変化メモリ（ＰＣＭ：ｐｈａｓｅ  ｃｈａｎｇｅ  ｍｅｍｏｒｙ）およびフラッシュ・メモリを含む。それぞれのシナプス・セル１０は、アナログ・データまたはディジタル・データあるいはその両方の記録を可能にするために２種類のメモリ・セルを含み得る。
【００１６】
示されているとおり、シナプス・セル１０は、軸索２０と樹状突起３０との全ての交点に、クロスバー・アレイ１００を形成するように置かれている。したがって、それぞれのシナプス・セル１０は、対応するそれぞれの軸索−樹状突起対に関連づけられている。シナプス・セル１０は、シナプス状態に関連づけられたシナプス重み値を記憶することができ、シナプス重み値は、その対応するそれぞれの軸索―樹状突起対間のシナプス重みを示す。
【００１７】
それぞれの軸索２０の一端は、対応するシナプス前ニューロン４０に接続されており、それぞれの樹状突起３０の一端は、対応するシナプス後ニューロン５０に接続されている。シナプス前ニューロン４０は、対応するそれぞれのシナプス・セル１０に軸索２０を通して入力データを渡す。シナプス後ニューロン５０は、対応するそれぞれのシナプス・セル１０から樹状突起３０を通して出力データを受け取る。
【００１８】
デバイス変動性のため、抵抗性デバイスを含むクロスバー・アレイは、シナプス・セルごとのシナプス重みの高分解能抵抗（ｈｉｇｈ−ｒｅｓｏｌｕｔｉｏｎ  ｒｅｓｉｓｔａｎｃｅ）を保持することが困難である。クロスバー・アレイの精密シナプス重み更新が利用可能になる必要がある。本明細書において後に説明するように、可変のいくつかの抵抗性デバイス・ベースのシナプス・セルによって、単一のシナプス重み値を表現することができる。
【００１９】
クロスバー・アレイ１００は、超並列でエネルギー効率が高いニューロモーフィック・コンピューティング・システムの１つの可能な実施態様を表す。クロスバー・アレイ１００は、図２に記載されたものなどの生体ニューラル・ネットワークにならってモデル化されている。
【００２０】
図２を参照すると、生体シナプス前ニューロンから生体シナプス後ニューロンへの活動電位の例示的な遷移を示す図２００が示されている。海馬グルタミン酸作動性シナプス（ｈｉｐｐｏｃａｍｐａｌ  ｇｌｕｔａｍａｔｅｒｇｉｃ  ｓｙｎａｐｓｅ）において観察することができる生体シナプス活動電位の典型的な遷移が示されている。軸索と樹状突起の間の重み接続（ｗｅｉｇｈｔ  ｃｏｎｎｅｃｔｉｏｎ）およびシナプス前ニューロンとシナプス後ニューロンの間の活動電位の遷移が示されている。シナプス前ニューロンは、活動電位を、軸索を介して、シナプスにおける重み付き電位によって、シナプス後ニューロンに伝播させることができる。生体では、新たな活動電位の発生を駆動するシナプスにおける化学的および電気的メッセージングによって、１つのニューロンから次のニューロンへ、興奮性および抑制性のシナプス後電位（ｐｏｓｔ−ｓｙｎａｐｔｉｃ  ｐｏｔｅｎｔｉａｌ）が送達される。
【００２１】
図３を参照すると、アレイのそれぞれのシナプス・セル内において例示的なシナプス重み変化を示すチャート３００が示されている。スパイク・タイミング依存可塑性（ＳＴＤＰ）のハードウェア実施態様では、シナプス重み変化ΔＷが、シナプス前ニューロンとシナプス後ニューロンとの間の相対的なスパイク・タイミングに依存する。ＮＶＭベースのシナプス重みは、生体の場合などのようにアナログ式に急激に変動し得る。ニューロモーフィック・クロスバー・アレイ・オンチップ・ニューロン回路は、ＳＴＤＰに基づいて、リーキー・インテグレート・アンド・ファイア（ＬＩＦ：ｌｅａｋｙ  ｉｎｔｅｇｒａｔｅ  ａｎｄ  ｆｉｒｅ）およびシナプス重み更新を実行することができ、それによってタイミング・スキームに関連する追加の複雑化および電力消費を回避する。
【００２２】
図４を参照すると、ＤＮＮの下流ニューロン興奮などの例示的な下流ニューロン興奮を示す図４００ａが示されている。下流ニューロン興奮は、上流の全てのニューロンの重み興奮に依存する。入力データ（例えばｘ１、ｘ２およびｘ３）が得られ、カレントのニューロンに累積される（Σ）。入力データは、積和（ＭＡＣ）演算によって累算することができる。ＭＡＣ演算によって入力データを累算する際には、それぞれのシナプスが入力データにそれぞれの重みを乗じ、次いで、カレント・ニューロンが、重み付けされた入力データを累算し、１つまたは複数の活性化関数（ａｃｔｉｖａｔｉｏｎ  ｆｕｎｃｔｉｏｎ）（ｆ）に基づいて出力データ（例えばｙ１）を生成する。
【００２３】
図５を参照すると、ＤＮＮの例示的なハードウェア実施態様を示す図４００ｂが示されている。それぞれのシナプス後ニューロン（Ｍ１、Ｍ２、．．．、Ｍｍ）は、シナプス・セルによって重み付けされた出力データをシナプス前ニューロン（Ｎ１、Ｎ２、．．．、Ｎｍ）から受け取る。重み付けされた出力データは次いで、後続のニューロン（Ｐ１、Ｐ２、…、Ｐｍ）層に入力データとして供給される。ＤＮＮの前向き推論（ｆｏｒｗａｒｄ−ｉｎｆｅｒｅｎｃｅ）とバックプロパゲーションの両方で取り上げられるＭＡＣ演算は、ＮＶＭベースの大きなアレイ上でのベクトル−行列乗算として実施することができる。ＮＶＭ（コンダクタンス）とトランジスタの対を有するシナプス・セルのクロスバー・アレイは、ＤＮＮ学習の中心に位置するＭＡＣ演算に理想的に適している。この乗算演算は、どのクロスバーでもオームの法則に従って実行することができ、行または列に沿った電流の合計は、キルヒホッフの電流則に従って実行することができる。
【００２４】
次に図６を参照すると、例示的なニューロモーフィック・システム５００が示されている。システム５００は、シナプス・セル１０を含むシナプス・セルを含んだクロスバー・アレイ１００を含む。クロスバー・アレイ１００は、限定はされないが、ＳＮＮ、ＤＮＮ、動的ボルツマン・マシン（ＤｙＢＭ：ｄｙｎａｍｉｃ  Ｂｏｌｔｚｍａｎｎ  ｍａｃｈｉｎｅ）、コントラスティブ・ダイバージェンス（ｃｏｎｔｒａｓｔｉｖｅ  ｄｉｖｅｒｇｅｎｃｅ）および勾配降下（ｇｒａｄｉｅｎｔ  ｄｅｓｃｅｎｔ）を含むさまざまな種類の実施態様に適用可能である。シナプス・セルは、１つまたは複数の抵抗性デバイスからなり、抵抗性デバイスは、揮発性メモリ、ＮＶＭまたはコンデンサあるいはこれらの組合せを含み得る。シナプス・セルは、軸索線２０および樹状突起線３０によって並列および直列に接続されており、示されているように、シナプス・セルは格子網のそれぞれの交点に配置されている。シナプス前ニューロンのアレイ４５のシナプス前ニューロン（例えばシナプス前ニューロン４０）は、シナプス後ニューロンのアレイ５５のシナプス後ニューロン（例えばシナプス後ニューロン５０）にシナプス・セルを介して接続されており、シナプス・セルはそれぞれ固有のコンダクタンス値を有する。シナプス前ニューロンおよびシナプス後ニューロンはそれぞれ、シナプス前ニューロンおよびシナプス後ニューロンを実施するように構成された回路を含むことができる。
【００２５】
システム５００はさらに、スイッチング機能を実施するためにクロスバー・アレイ１００の入力インタフェース側に沿って１列に並べられたスイッチ（例えばスイッチ９０）を含む。これらのスイッチは、ファンアウト・スイッチング機能を実施するように埋め込まれた「１対ｎ」ファンアウト・スイッチとすることができ、ここでｎは自然数である。この例では、スイッチが１対１ファンアウト・スイッチであり、それぞれのシナプス・セルには単一のシナプス重みが割り当てられている。スイッチは、シナプス前ニューロンの対応するそれぞれの出力端に接続された入力端子、および対応するそれぞれの軸索線に接続された出力端子を含むことができる（例えば、スイッチ９０は、シナプス前ニューロン４０に接続された入力端子および軸索線２０に接続された出力端子を含む）。スイッチは、単一のシナプス重みを１つまたは複数の抵抗性セル９５を用いて表現するために、シナプス前ニューロンの１本の入力線を軸索線２０に変更可能に接続するために使用される。したがって、図６に示された１つの円９５によって指定された１つの抵抗性セルをシナプス重みとして割り当てるために、スイッチを使用して、シナプス前ニューロンのそれぞれの入力線を１本の軸索線に選択的に接続することができる。
【００２６】
図６では、スイッチが、シナプス前ニューロン・アレイ４５内にあるように示されているが、スイッチのうちの１つまたは複数のスイッチをシナプス前アレイ４５の外側に含めることもできる。ＡＳＩＣまたはＦＰＧＡを用いてスイッチをニューロモーフィック・チップに埋め込むことができる。したがって、ファンアウト・スイッチング機能を含むニューロモーフィック・システムを製造するプロセスを簡素化することが可能である。
【００２７】
所与のアプリケーション（例えば画像データ分類、画像認識または音声認識）に必要な重み値の正確さの基準に従って、コントローラ８０は、シナプス前ニューロン４０の１つの出力端に関して２本以上の軸索線を集約する（ａｇｇｒｅｇａｔｅ）ことができる。
【００２８】
シナプス後ニューロンの入力線を対応するそれぞれの樹状突起線に接続することができる（例えばシナプス後ニューロン５０は樹状突起線３０に接続される）。
【００２９】
システム５００は、入力データ、出力データおよびトレーニング・データに基づいて学習を実行するハードウェア装置とすることができる。さらに、システム５００を、入力データに対応する出力データに対して学習結果に基づいて試験を実行し、予測を立てるように動作可能なものとすることができる。システム５００は、入力データに応答して出力された出力データと入力データに対応するトレーニング・データとの間の差を低減させるようなやり方でシナプス重みを調整する。
【００３０】
システム５００は、図６に示された例に限定されない。例えば、７本の軸索線および７本の樹状突起線を含むクロスバー・アレイ１００が示されているが、軸索線および樹状突起線の数が、限定するものであるとはみなされない。さらに、軸索線の数と樹状突起線の数は異なっていてもよい。
【００３１】
シナプス前ニューロンから入力データから繰り返し適用されることにより、それぞれのシナプス・セルの重み値（例えばコンダクタンス）が変化することがある。それぞれのシナプス・セルの重みのこの変化は、クロスバー・アレイ１００内における学習につながる。
【００３２】
システム５００はさらに、コントローラ８０、トレーニング・データを記憶するデータベース６０および比較セクション７０を含むように示されている。コントローラ８０は、入力データを生成し、入力データをクロスバー・アレイ１００に供給するように動作可能なものとすることができる。クロスバー・アレイ１００が学習を実行している場合、コントローラ８０は、入力データに対応するトレーニング・データを生成し、この入力データおよびトレーニング・データをクロスバー・アレイ１００に供給することができる。さらに、クロスバー・アレイ１００が学習結果に基づいて試験を実行するとき、予測を立てるときなどに、コントローラ８０は、試験のための入力データを生成し、この入力データをクロスバー・アレイ１００に供給することができる。例えば、ＳＮＮの場合、入力データは、複数のデータが時間軸に従って配列された、オーディオ・データ、ビデオ・データなどの時系列データ・シーケンスを含むことができる。
【００３３】
コントローラ８０は、所定のフォーマット（例えば画像データの２８×２８画素フォーマットまたは時系列）で記憶された入力データを読み出し、取得することができる。さらに、コントローラ８０を、ネットワークなどに接続することができ、また、そのネットワークを介して入力データなどを取得することができる。コントローラ８０は、取得した入力データなどを、システム５００内の記憶装置などに記憶することができる。
【００３４】
コントローラ８０は、データベース６０からの入力データをシナプス前ニューロン・アレイ４５を介してシナプス・セルに供給するように動作可能なものとすることができる。例えば、それぞれのシナプス前ニューロン４０を、入力データに対応する入力信号をクロスバー・アレイ１００に供給するように動作可能なものとすることができる。それぞれのシナプス前ニューロン４０は、クロスバー・システム１００の対応する１つまたは複数のセルに入力信号を供給するように動作可能なものとすることができる。
【００３５】
この説明のための例では、それぞれのシナプス・セルが、重み付き信号を、対応する別のセルに供給することができる。クロスバー・アレイの出力セル・アレイは、シナプス後ニューロン・アレイ５５から出力された出力値に基づいて出力データを出力するように動作可能なものとすることができる。学習動作では、例えば、シナプス前ニューロン・アレイ４５のそれぞれのシナプス前ニューロンによって出力されたそれぞれの出力値に対応する重みによって、それぞれのシナプス・セルが更新される（例えば、シナプス前ニューロン４０によって出力された出力値に対応する重みによってシナプス・セル１０が更新される）。クロスバー・アレイは、所定の計算を実行することによって得られた結果を出力データとして出力する。
【００３６】
システム５００はさらに、比較セクション７０を含むように示されている。シナプス後ニューロン・アレイ５５は、出力データを比較セクション７０に供給するように動作可能なものとすることができる。比較セクション７０は、コントローラ８０によって出力された予想出力データ（expected output data）を、シナプス後ニューロン・アレイ５５によって供給された出力データと比較するように動作可能なものとすることができる。例えば、比較セクション７０は、予想出力データと出力データの差を誤差として出力する。比較セクション７０は、比較の結果としてのこの誤差をコントローラ８０に供給することができる。
【００３７】
さらに、比較セクション７０は、システム５００が学習動作を実行する場合に比較演算を実行するように動作可能なものとすることができる。比較セクション７０は、システム５００が学習結果を使用して試験を実行している場合または予測を立てている場合に、シナプス後ニューロン・アレイ５５の出力データをそのまま外部に出力するように動作可能なものとすることができる。この場合には、比較セクション７０を、ディスプレイなどの外部出力装置、記憶装置およびデータベース６０などの外部装置に出力データを出力するように動作可能なものとすることができる。そうでない場合、比較セクション７０は、前のシナプス後ニューロンに対応するシナプス前ニューロンとして、後続のニューロン層に出力データを出力するように動作可能なものとすることができる。
【００３８】
コントローラ８０は、ランダム化されたアナログ値をそれぞれのシナプス・セルにセットすることによってシナプス重みを初期化することができる。コントローラ８０は、比較セクション７０の比較結果に従ってシナプス・セル１０の複数の重みをセットするように動作可能なものとすることができる。入力データに応じて予想出力データをシステム５００が出力するように、比較セクション７０を、複数の重みをセットするように動作可能なものとすることができる。コントローラ８０は、シナプス前ニューロン・アレイ４５にトレーニング・データが供給されたことに応答してシナプス後ニューロン・アレイ５５によって出力された出力データと、トレーニング・データに対して予想した予想出力データとの間の誤差をさらに低減させるやり方で複数の重みを更新するように動作可能なものとすることができる。比較セクション７０は、システム５００が学習している場合に動作するように動作可能なものとすることができる。
【００３９】
したがって、クロスバー・アレイ１００のシナプス・セルの重みを更新することによって学習することができるシステム５００に、上で説明したクロスバー・アレイ１００が含まれていてもよい。
【００４０】
試験のための入力データを入力する際に、システム５００は、更新された重みを用いて、試験のための入力データに対する試験結果または予測結果を出力することができる。このようなシステム５００は、行列計算を実行することによって学習動作および試験動作をシミュレートすることができる。さらに、クロスバー・アレイ１００が、入力信号に応答して出力信号を出力する物理デバイスである場合には、ＮＶＭベースのシナプス・セルのアレイを用いて、イージー・ハードウェア・インストレーション（ｅａｓｙ  ｈａｒｄｗａｒｅ  ｉｎｓｔａｌｌａｔｉｏｎ）方式でクロスバー・アレイ１００を実施することができる。
【００４１】
次に図７を参照すると、別の例示的なニューロモーフィック・システム６００が示されている。システム６００の構成は、図６のシステム５００の構成に似ている。例えば、システム６００は、シナプス・セル（例えばシナプス・セル１０）、軸索線（例えば軸索線２０）および樹状突起線（例えば樹状突起線３０）、シナプス前ニューロン（例えばシナプス前ニューロン４０）を含むシナプス前ニューロンのセット４５、シナプス後ニューロン（例えばシナプス後ニューロン５０）を含むシナプス後ニューロンのセット５５、データベース６０、比較セクション７０ならびにコントローラ８０を含む、クロスバー・アレイ１００を含む。
【００４２】
しかしながら、図７のこの例では、スイッチ（例えばスイッチ９０）が、隣り合う一対のシナプス・セル（例えば円９５）を単一のシナプス重みに割り当てる１対２ファンアウト・スイッチである。これにより、単一の重みを表現するデバイスの数を動的に変化させることによって、アプリケーションに必要な重み変動性の可能な限りの低減（Δｗｍｉｎ）を可能にする。
【００４３】
画像データ分類および画像または音声認識などのアプリケーションに必要な重み値の正確さの基準に従って、コントローラ８０は、シナプス前ニューロンの出力端に対する２本以上の軸索線２０を集約する。クロスバー・アレイ１００の隣り合う一対の軸索線は、それぞれのスイッチの２つの出力端子に接続されている（例えば、軸索線２０を含む隣り合う一対の軸索線は、スイッチ９０の２つの出力端子に接続されている）。したがって、図７の例のスイッチは、隣り合う一対のシナプス・セル（例えば円９５）をシナプス重みとして割り当てるための、隣り合う一対の軸索線への２本の入力線の選択的接続を可能にする。
【００４４】
このようなスイッチング機能は、さまざまな認知アプリケーションに使用されるだけでなく、クロスバー・アレイ１００内のシナプス・セルのデバイス変動性にも関わらず、非常に精密な重みの補償にも使用される。コントローラ８０は、例えば、隣り合う抵抗性セル（例えば円９５）の２本の軸索線２０を集約する。集約された隣り合うセルは、クロスバー・アレイ１００内の変動したアナログ値を保持する不安定なセルの影響を受けたシナプス重みの変動を補償する。
【００４５】
コントローラ８０は、それぞれのシナプス前ニューロン４０からの単一の線に対して１本または複数本の入力線を選択するように、スイッチを管理することができる。例えば、スイッチは、それぞれのシナプス前ニューロンからの単一の入力線を、ニューロモーフィック・チップ１００の１本または複数本の入力線に割り当てることができる。
【００４６】
この場合も、スイッチ機能は、図６および７に示された例に限定されない。例えば、スイッチ機能の以下のケースをシステム５００に適用することができる。
（１）１対１（隣合せでない）ファンアウト・スイッチ（例えば図６）
（２）１対２（隣合せ）ファンアウト・スイッチ（例えば図７）
（３）１対ｎ（隣合せでない）ファンアウト・スイッチであって、ここでｎは２以上の自然数である。この場合、ファンアウト・スイッチは、単一の入力線を、隣合せでない２本以上の軸索線の対に接続して、２本の軸索線上の並列に接続された２つ以上のシナプス・セルを単一のシナプス重みとして割り当てることができる。
（４）１対ｎ（隣合せ、並列）ファンアウト・スイッチであって、ここでｎは３以上の自然数である。この場合、ファンアウト・スイッチは、単一の線を、隣り合う３本以上の軸索線の組合せに接続して、軸索線上の並列に接続された３つ以上のシナプス・セルを単一のシナプス重みとして割り当てることができる（ケース２はケース４のサブセットと見ることができる）。
【００４７】
図８は、ニューロモーフィック・チップのクロスバー・アレイの入力端子に供給される入力パターンの例示的な関係を示すチャート７００を示す。図８に示されたトレーニング・データは、時系列に従って入力端子に供給される。図８において、垂直軸は、入力端子Ｐｒ［１］からＰｒ［７］（例えばシナプス前ニューロン）を示し、水平軸は時間を示す。時刻ｔ０から時刻ｔ１０までの期間は通常動作期に対応する。図８に示された動作によって、時刻ｔ１０までのそれぞれのシナプス・セル１０のニューロン電位を監視することができる。通常動作期には、所与のパターンに基づく活動電位が入力端子Ｐｒ［１］からＰｒ［７］に印加される。図８では、時刻ｔｎにそれぞれの入力端子Ｐｒ［１］からＰｒ［７］に活動電位が印加されるそれぞれの交点に、点が記されている。
【００４８】
画像分類の例として、学習動作において、活動電位の入力データ・パターン「ＳＣ」が入力端子Ｐｒ［１］からＰｒ［７］に供給される。入力データとしての文字「ＳＣ」は、シナプス前ニューロン４０を通して供給することができる。この入力データ・パターンは、ＤＮＮについては点スキーム（例えば２８×２８画素）でフォーマットすることができ、またはＳＮＮについては時系列スキームでフォーマットすることができる。入力データは、手書き数字のディジタル化された静的データ（例えば修正国立標準技術研究所（Ｍｏｄｉｆｉｅｄ  Ｎａｔｉｏｎａｌ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｓｔａｎｄａｒｄｓ  ａｎｄ  Ｔｅｃｈｎｏｌｏｇｙ）（ＭＮＩＳＴ）データベース）だけでなく、複数のデータが時間軸に従って配列された、オーディオ・データ、ビデオ・データなどの時系列データ・シーケンスにも限定される。ＤＮＮでは、手書き数字のデータベースまたは図８に示された画素ドット文字「ＳＣ」に対してバックプロパゲーションを用いて学習動作が実行される。
【００４９】
図９は、ニューロモーフィック・システムの例示的な動作の流れを示すブロック／流れ図８００を示す。このシステムは、学習に関係するプロセス８１０〜８４０を実行するように動作可能なＮＶＭベースのニューロモーフィック・システムとすることができる。
【００５０】
ブロック８１０で、システムのコントローラが、ニューロモーフィック・システムのクロスバー・アレイ内のシナプス・セルを初期化する。学習動作を開始する前に、コントローラは、シナプス・セルのハードウェア状態を観察することができる。システムは、ＮＶＭベースのシナプス・セルなどの１つのシナプス・セルだけでなく、アプリケーションまたはハードウェア状態に対する分解能要件に従って複数のシナプス・セルも表現することによって、単一のシナプス重みを動的に変更またはセットすることができる。
【００５１】
ブロック８２０で、コントローラは、学習動作を開始する前に、システム上で展開するアプリケーションを識別しまたは欠陥のあるシナプス・セルを検出する。例えば、１つまたは複数のアプリケーションまたはハードウェア状態が要求するＮＶＭデバイスごとの抵抗（Ｒ）の分解能（ΔＲ）に従って、コントローラは、デバイスごとの分解能の要件を軽減するために何個のシナプス・セルを使用するのかを割り当てることにより、単一の重みを表現することを決定することができる。
【００５２】
ブロック８３０で、１つまたは複数のアプリケーションまたはハードウェア状態に従って、コントローラは、単一のシナプス重みとして１つまたは複数のシナプス・セルを割り当てることができる。スイッチ機能を使用して、シナプス前ニューロンのそれぞれの単一の出力をクロスバー・アレイの軸索線の端子に接続することができる。スイッチ機能は、「１対ｎファンアウト」スイッチ機能とすることができ、コントローラは、シナプス前ニューロンの出力端に対応する単一の入力線に対して軸索線を変更可能に選択するように、「１対ｎファンアウト・スイッチ」を管理することができる。例えば、それぞれの１対ｎファンアウト・スイッチは、それぞれのシナプス前ニューロンの単一の出力線を１本または複数本の入力軸索線に割り当てることができる。
【００５３】
ブロック８４０で、システム１００またはそのコントローラ８０は、アプリケーションによって特徴づけられた入力データを用いて学習動作を実行することができる。単一のシナプス重みとして１つまたは複数のＮＶＭセルを割り当てた後、学習動作中の重み変動性を軽減することによって、アプリケーションに必要な重み値の分解能を満たすことが達成可能である。
【００５４】
図１０は、シナプス・セルの数に関係する例示的なコンダクタンス変動を示すチャート９００を示す。ｘ軸は、抵抗（Ｒ）の逆数であるコンダクタンスＧを示し、ｙ軸は、コンダクタンス（Ｇ）に対する確率比（ｐｒｏｂａｂｉｌｉｔｙ  ｒａｔｉｏ）を示し、ｎは、単一のシナプス重みに関連づけられたシナプス・セルの数を示す。重み値は、シナプス・セルのコンダクタンスに比例する、または抵抗に反比例すると仮定する。ほとんどの場合、単一のシナプス重みを構成するデバイスの数が多いほど、単一のシナプス重みが示す分布は小さくなる。単一のシナプス重みを形成するのに特定のコンダクタンス値が必要な場合、図１０は、単一のシナプス重みを形成するためには、小さな抵抗を有するできるだけ多くの複数の抵抗性要素またはセルを集約した方がよいことを示唆している。以下は、チャート９００に示されたケースである。
（１）ケースＡ。１つのシナプス・セルによって構成された１つのシナプス重みの変動または分布を示す。
（２）ケースＢ。直列の２つのシナプス・セルによって構成された１つのシナプス重みの変動を示す。
（３）ケースＣ。並列の２つのシナプス・セルによって構成された１つのシナプス重みの変動を示す。
（４）ケースＤ。並列の８個のシナプス・セルによって構成された１つのシナプス重みの変動を示す。
【００５５】
学習動作において、（ＮＶＭベースの）ニューロモーフィック・システムは、精密シナプス重み値を、シナプス重みの小さな変動でセットすることができる。シナプス重みの変動を抑制する１つの概念として、シナプス重みが含む抵抗性デバイスの数が多いほど、シナプス重み変動性を徐々に低下させる傾向は大きくなる。クロスバー・アレイの全てのシナプス・セルが、抵抗性デバイスごとのデバイス変動性に関して等価の品質を有する抵抗性デバイスを含む場合、（複数の抵抗性セルによって表現される）単一のシナプス重みの変動は、シナプス・セルごとの変動よりもかなり小さくなる可能性がある。デバイスごとの変動の要件を軽減することを考えれば、複数の抵抗性セルを有する単一のシナプス重みは、ニューロモーフィック・ハードウェア実施態様にとって有益である。
【００５６】
上述のとおり、シナプス・セルに含まれる抵抗体要素にセットされた抵抗値の逆量（ｉｎｖｅｒｓｅ  ｑｕａｎｔｉｔｙ）（例えばコンダクタンス値）は重みを表現することができる。さらに、シナプス・セル内で使用される抵抗体要素は、可変抵抗値を有することができる。例えば、デバイスごとのコンダクタンスの分解能の要件を軽減するために、複数の抵抗性デバイスを利用することにより、単一の重みを表現することができる。１つ、２つまたは３つ以上の抵抗性要素を割り当てることによって単一の重み値を表現する、ニューロモーフィック・ハードウェア実施態様の典型的な例が与えられる。２つ以上の抵抗性セルを単一のシナプス重みに動的に割り当てることにより、ニューロモーフィック・システムを実施する１つまたは複数のアプリケーションに従って必要な抵抗の分解能を満たすという利益がある。
【００５７】
本明細書に記載された例は、デバイス特性（例えば変動）のためにデバイスの抵抗を小さな刻みで変化させることが難しい場合であっても、高精密のシナプス重みの更新を可能にする。さらに、本明細書に記載された実施形態によって実施されるニューロモーフィック・チップは面積効率がよく、さまざまなデバイス変動性に関して、スケーラブルな回路にとって有益である。
【００５８】
図１１は、本発明に基づく、コンピュータの例示的なハードウェア構成を示す。コンピュータ１０００にインストールされたプログラムによって、コンピュータ１０００は、本発明の実施形態のニューロモーフィック・チップ１００もしくは（モジュール、コンポーネント、要素などを含む）その１つもしくは複数のセクションとして機能すること、または本発明の実施形態のニューロモーフィック・チップ１００もしくは（モジュール、コンポーネント、要素などを含む）その１つもしくは複数のセクションに関連する動作を実行することができ、または、プログラムによってコンピュータ１０００は、本発明の実施形態のプロセスまたはそのステップを実行することができ、あるいはプログラムによってコンピュータ１０００は、その両方を実行することができる。このようなプログラムは、ＣＰＵ１０１０によって実行されて、本明細書に記載された流れ図およびブロック図の一部または全部のブロックに関連するある種の動作をコンピュータ１０００に実行させることができる。
【００５９】
本発明に基づくコンピュータ１０００は、ＣＰＵ１０１０およびＲＡＭ１０３０を含む。コンピュータ１０００はさらに、入力／出力コントローラを介してホスト・コントローラに接続された、Ｉ／Ｏインタフェース１０５０、ハード・ディスク・ドライブ１０４０などの入力／出力ユニットを含む。このコンピュータはさらに、ＣＰＵに接続されていてもよい、ＲＯＭ１０２０などの従来の入力／出力ユニットを含む。
【００６０】
ＣＰＵ１０１０は、ＲＯＭ１０２０およびＲＡＭ１０３０に記憶されたプログラムに従って動作し、それによってそれぞれのユニットを制御する。Ｉ／Ｏインタフェース１０５０は、ネットワーク１０８０を介して他の電子デバイスと通信する。ハード・ディスク・ドライブ１０４０は、コンピュータ１０００内のＣＰＵ１０１０によって使用されるプログラムおよびデータを記憶する。ＤＶＤ−ＲＯＭドライブは、ＤＶＤ−ＲＯＭからプログラムまたはデータを読み出し、プログラムまたはデータをＲＡＭ１０３０を介してハード・ディスク・ドライブ１０４０に提供する。
【００６１】
ＲＯＭ１０２０は、その中に、起動時にコンピュータ１０００によって実行されるブート・プログラムなど、またはコンピュータ１０００のハードウェアに応じたプログラム、あるいはその両方を記憶している。
【００６２】
プログラムは、ＤＶＤ−ＲＯＭなどのコンピュータ可読媒体によって提供される。プログラムは、コンピュータ可読媒体から読み出され、やはりコンピュータ可読媒体の例であるハード・ディスク・ドライブ１０４０、ＲＡＭ１０３０またはＲＯＭ１０２０にインストールされ、ＣＰＵ１０１０によって実行される。このようなプログラムに記述された情報処理は、コンピュータ１０００に読み込まれ、その結果、プログラムと上述のさまざまなタイプのハードウェア・リソースとが連携する。ニューロモーフィック・チップおよびそのシステム１００または方法は、コンピュータ１０００の使用法に従って情報の操作または処理を実現することによって構成することができる。
【００６３】
例えば、コンピュータ１０００とネットワーク１０８０の間で通信Ｉ／Ｆ１０７０が実行されたとき、ＣＰＵ１０１０は、ＲＡＭ１０３０にロードされた通信プログラムを実行して、その通信プログラムに記述された処理に基づいて通信インタフェース１０７０に通信処理を命令することができる。通信インタフェース１０７０は、ＣＰＵ１０１０の制御の下で、ＲＡＭ１０３０または記憶ドライブ１０４０（例えばＨＤＤ、ＤＶＤ−ＲＯＭドライブまたはフラッシュドライブ）などの記録媒体内に提供された送信バッファリング領域に記憶された送信データを読み出し、読み出した送信データをネットワーク１０８０に送信し、または、ネットワーク１０８０から受信した受信データを、記録媒体上に提供された受信バッファリング領域などに書き込む。
【００６４】
さらに、ＣＰＵ１０１０は、ハード・ディスク・ドライブ１０４０などの外部記録媒体に記憶されているファイルまたはデータベースの全部または必要部分を読み出してＲＡＭ１０３０に入れること、およびＲＡＭ１０３０上のデータに対してさまざまなタイプの処理を実行することができる。ＣＰＵ１０１０は次いで、処理されたデータを外部記録媒体に再び書き込むことができる。
【００６５】
情報処理を受けるために、さまざまなタイプのプログラム、データ、表およびデータベースなどのさまざまなタイプの情報を記録媒体に記憶することができる。ＣＰＵ１０１０は、ＲＡＭ１０３０から読み出されたデータに対して、さまざまなタイプの演算、情報の処理、条件判定、条件分岐、無条件分岐、情報の検索／置換などを含むさまざまなタイプの処理を、本開示の全体を通じて説明したとおりに、およびプログラムの命令シーケンスによって指定されたとおりに実行することができ、その結果を再びＲＡＭ１０３０に書き込む。さらに、ＣＰＵ１０１０は、記録媒体内のファイル中、データベース中などの情報を探索することができる。
【００６６】
上で説明したプログラムまたはソフトウェア・モジュールは、コンピュータ１０００上のまたはコンピュータ１０００の近くのコンピュータ可読媒体に記憶することができる。さらに、専用通信ネットワークまたはインターネットに接続されたサーバ・システム内に提供されたハード・ディスクまたはＲＡＭなどの記録媒体を、コンピュータ可読媒体として使用することができ、それによってネットワーク１０８０を介してコンピュータ１０００にプログラムを提供することができる。
【００６７】
本発明は、システム、方法またはコンピュータ・プログラム製品、あるいはこれらの組合せとすることができる。このコンピュータ・プログラム製品は、本発明の諸態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。
【００６８】
このコンピュータ可読記憶媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形のデバイスとすることができる。コンピュータ可読記憶媒体は例えば、限定はされないが、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイスまたはこれらの適当な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リードオンリー・メモリ（ＲＯＭ）、消去可能なプログラマブル・リードオンリー・メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク・リードオンリー・メモリ（ＣＤ−ＲＯＭ）、ディジタル・バーサタイル・ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、機械的にコード化されたデバイス、例えばパンチカードまたはその上に命令が記録された溝の中の一段高くなった構造体など、およびこれらの適当な組合せを含む。本明細書で使用されるコンピュータ可読記憶媒体は、それ自体が一過性の信号、例えば電波もしくは他の自由に伝搬する電磁波、ウェーブガイドもしくは他の伝送体内を伝搬する電磁波（例えば光ファイバ・ケーブル内を通る光パルス）、または電線を通して伝送される電気信号であると解釈されるべきではない。
【００６９】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から対応するそれぞれのコンピューティング／処理デバイスにダウンロードすることができ、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはそれらの組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバ、あるいはこれらの組合せを含んでもよい。各コンピューティング／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、それらのコンピュータ可読プログラム命令を、対応するそれぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【００７０】
本発明の操作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令もしくは状態設定データであってもよく、またはＳｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは同種のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つもしくは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードもしくはオブジェクト・コードであってもよい。このコンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されてもよく、一部がユーザのコンピュータ上で実行されてもよく、独立型ソフトウェア・パッケージとして実行されてもよく、一部がユーザのコンピュータ上および一部が遠隔コンピュータ上で実行されてもよく、または全体が遠隔コンピュータもしくはサーバ上で実行されてもよい。後者のシナリオでは、遠隔コンピュータが、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、またはこの接続が、外部コンピュータに対して（例えばインターネット・サービス・プロバイダを使用してインターネットを介して）実施されてもよい。いくつかの実施形態では、本発明の諸態様を実施するために、例えばプログラム可能な論理回路、フィールド・プログラム可能なゲート・アレイ（ＦＰＧＡ）またはプログラム可能な論理アレイ（ＰＬＡ）を含む電子回路が、このコンピュータ可読プログラム命令の状態情報を利用してその電子回路を個人化することにより、このコンピュータ可読プログラム命令を実行してもよい。特に、本実施形態のファンアウト・スイッチ機能が、電子回路の技法によってニューロモーフィック・チップに埋め込まれていてもよい。
【００７１】
本明細書では、本発明の諸態様が、本発明の実施形態に基づく方法、装置（システム）およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照して説明される。それらの流れ図またはブロック図あるいはその両方の各ブロック、およびそれらの流れ図またはブロック図もしくはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実施することができることが理解される。
【００７２】
このようなコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、流れ図またはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。このようなコンピュータ可読プログラム命令は、その中に命令が記憶されたコンピュータ可読記憶媒体が、流れ図またはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の諸態様を実施する命令を含む製品を含むべく、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラム可能なデータ処理装置または他のデバイスあるいはこれらの組合せに特定の方式で機能するように指示するものであってもよい。
【００７３】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能な装置または他のデバイス上で実行される命令が、流れ図またはブロック図あるいはその両方の１つまたは複数のブロックで指定される機能／動作を実行するように、コンピュータによって実行されるプロセスを作出するべく、コンピュータ、他のプログラム可能なデータ処理装置または他のデバイスにロードされ、コンピュータ、他のプログラム可能な装置または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【００７４】
図中の流れ図およびブロック図は、本発明のさまざまな実施形態に基づくシステム、方法およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能および操作を示す。この点に関して、それらの流れ図またはブロック図の各ブロックは、指定された論理機能を実施する１つまたは複数の実行可能な命令を含む、命令のモジュール、セグメントまたは部分を表すことがある。いくつかの代替的実施態様では、これらのブロックに示された機能が、図に示された順序とは異なる順序で実施されることがある。例えば、連続して示された２つのブロックが、実際は、実質的に同時に実行されることがあり、または、含まれる機能によってはそれらのブロックが逆の順序で実行されることもある。それらのブロック図または流れ図あるいはその両方の各ブロック、ならびにそれらのブロック図または流れ図あるいはその両方のブロックの組合せを、指定された機能もしくは動作を実行しまたは専用ハードウェアとコンピュータ命令の組合せを実施するハードウェアベースの専用システムによって実施することができることにも留意すべきである。
【００７５】
本発明の実施形態を説明したが、本発明の技術的範囲は上で説明した例に限定されない。上で説明した例にさまざまな変更および改良を加えることができることは当業者には明らかである。
【００７６】
特許請求の範囲、実施形態または図に示された装置、システム、プログラムおよび方法によって実行されるそれぞれのプロセスの操作、手順、ステップおよび段階は、「〜に先行して」および「〜の前に」などによって順序が示されていない限りにおいて、および以前のプロセスからの出力が後のプロセスで使用されない限りにおいて、任意の順序で実行することができる。特許請求の範囲、実施形態または図の中で「最初に」または「次に」などの言い回しを使用してプロセスの流れが説明されている場合であっても、そのことが、この順序でプロセスが実行されなければならないことを意味するとは必ずしも限らない。
【００７７】
以上の説明によって明らかにされたとおり、本発明の実施形態は、実際のニューロモーフィック・チップの精密シナプス重みを更新することを実現することができる。本発明によって、当初のスケーラブルなＮＶＭアレイ回路を変更することなくデバイス変動性を低減させることができ、そのため、シナプス重みの分解能を向上させるために専用の回路を構築する必要がない。分解能がそれほど小さくなくてもよいときには、チップのＮＶＭアレイ内の残りのデバイスを、ＮＶＭアレイ以外のネットワーク・アレイ用に残りのシナプス・セルを実施するために利用することができる。
【図１】
2021511566.tif 000003
【図２】
2021511566.tif 000004
【図３】
2021511566.tif 000005
【図４】
2021511566.tif 000006
【図５】
2021511566.tif 000007
【図６】
2021511566.tif 000008
【図７】
2021511566.tif 000009
【図８】
2021511566.tif 000010
【図９】
2021511566.tif 000011
【図１０】
2021511566.tif 000012
【図１１】
2021511566.tif 000013
【手続補正書】
【提出日】令和3年3月24日(2021.3.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ニューロモーフィック・チップであって、
対応するそれぞれの抵抗性デバイスを含む複数のシナプス・セルと、
クロスバー・アレイを形成するように前記シナプス・セルに接続された複数の軸索線および複数の樹状突起線であって、前記軸索線が、入力データを受け取り、前記入力データを前記シナプス・セルに供給するように構成され、前記樹状突起線が、出力データを受け取り、前記出力データを、１本または複数本の対応するそれぞれの出力線を介して供給するように構成された、前記複数の軸索線および前記複数の樹状突起線と、
入力端子および１つまたは複数の出力端子をそれぞれが含む複数のスイッチであって、前記スイッチのうちの所与の１つのスイッチが、その入力端子を１本または複数本の入力線に接続し、その１つまたは複数の出力端子を、前記軸索線のうちの所与の１本または複数本の軸索線に変更可能に接続するように構成された、前記複数のスイッチと
を備える、ニューロモーフィック・チップ。
【請求項２】
前記抵抗性デバイスが可変抵抗値を保持することができる、請求項１に記載のチップ。
【請求項３】
前記抵抗性デバイスがアナログ値を記録することができる、請求項２に記載のチップ。
【請求項４】
前記抵抗性デバイスが不揮発性メモリを含む、請求項１に記載のチップ。
【請求項５】
前記不揮発性メモリが、相変化メモリまたはフラッシュ・メモリを含む、請求項４に記載のチップ。
【請求項６】
前記所与の１本または複数本の軸索線に関連づけられた、前記シナプス・セルのうちの所与の１つまたは複数のシナプス・セルにシナプス重みを割り当てるために、前記所与のスイッチが、その１つまたは複数の出力端子を前記所与の１本または複数本の軸索線に変更可能に接続する、請求項１に記載のチップ。
【請求項７】
前記入力データを前記所与の１つまたは複数のシナプス・セルに供給するために、前記所与のスイッチが、その入力端子を、前記所与の１本または複数本の軸索線に変更可能に接続する、請求項６に記載のチップ。
【請求項８】
前記所与の１本または複数本の軸索線が、隣り合う一対の軸索線を含み、前記入力データを前記所与の１つまたは複数のシナプス・セルに供給するために、前記所与のスイッチが、前記入力端子を、前記隣り合う一対の軸索線に変更可能に接続する、請求項７に記載のチップ。
【請求項９】
前記入力データを前記スイッチを介して前記軸索線に供給するための１つまたは複数のシナプス前ニューロンであって、前記シナプス前ニューロンのそれぞれが入力端および出力端を有する、前記１つまたは複数のシナプス前ニューロンをさらに備え、前記入力データを前記所与のスイッチの前記入力端子に供給するために、前記所与のスイッチの前記入力端子がそれぞれ、前記シナプス前ニューロンのうちの所与の１つのシナプス前ニューロンの前記出力端に接続する、請求項１に記載のチップ。
【請求項１０】
前記出力データを前記樹状突起線から受け取るための１つまたは複数のシナプス後ニューロンであって、前記シナプス後ニューロンのそれぞれが入力端および出力端を有する、前記１つまたは複数のシナプス後ニューロンをさらに備え、前記出力データを前記所与の樹状突起線から受け取るために、前記シナプス後ニューロンのうちの所与の１つのシナプス後ニューロンの前記入力端が、前記樹状突起線のうちの所与の１本の樹状突起線に接続する、請求項９に記載のチップ。
【請求項１１】
前記シナプス後ニューロンを、入力のための第２のシナプス前ニューロンとみなすように構成された後続のニューロン層をさらに備え、前記後続のニューロン層が、対応するそれぞれの抵抗性デバイスを前記第２のシナプス前ニューロンと第２のシナプス後ニューロンの間に含む第２の複数のシナプス・セルに関連づけられており、前記第２の複数のシナプス・セルが、第２のクロスバー・アレイを形成するように前記軸索線および前記樹状突起線によって接続されており、前記後続のニューロン層が、前記出力データを第２の入力データとして受け取る、請求項１０に記載のニューロモーフィック・チップ。
【請求項１２】
前記ニューロモーフィック・チップの製造を簡素化するために、前記スイッチが、ＡＳＩＣまたはＦＰＧＡ回路によって前記ニューロモーフィック・チップに埋め込まれている、請求項１に記載のチップ。
【請求項１３】
ニューロモーフィック・システムであって、
請求項１ないし１２のいずれかに記載のニューロモーフィック・チップと、
前記ニューロモーフィック・チップに動作可能に結合されたコントローラと
を備え、前記コントローラが、
前記所与のスイッチが、その入力線を、前記ニューロモーフィック・システム上で展開されているアプリケーションの要求に従って、前記所与の１本または複数本の軸索線に変更可能に接続することを可能にするように構成されており、さらに、
前記シナプス・セルの好ましい数の抵抗性要素によって単一の重みを表現することによって、前記所与の１本または複数本の軸索線を介して、前記入力データを用いた学習動作を実行するように構成されている、
ニューロモーフィック・システム。
【請求項１４】
前記学習動作中に前記入力データを前記所与の１本または複数本の軸索線に供給するための、前記コントローラに接続されたデータベースをさらに備える、請求項１３に記載のニューロモーフィック・システム。
【請求項１５】
前記出力データを予想出力データと比較し、前記出力データと前記予想出力データとの差を誤差として出力するように構成された比較要素をさらに備える、請求項１３に記載のニューロモーフィック・システム。
【請求項１６】
前記予想出力データが前記コントローラから得られる、請求項１５に記載のニューロモーフィック・システム。
【請求項１７】
ニューロモーフィック・チップ内のシナプス重みを更新するための方法であって、
前記ニューロモーフィック・チップの複数のスイッチの対応するそれぞれの入力端子を前記ニューロモーフィック・チップの入力線に接続することと、
前記ニューロモーフィック・チップの複数のシナプス・セルのうちの所与の１つまたは複数のシナプス・セルにシナプス重みを割り当てるために、前記スイッチのうちの所与の１つのスイッチについて、前記所与のスイッチを、前記ニューロモーフィック・チップの複数の軸索線のうちの所与の１本または複数本の軸索線に変更可能に接続することとを含み、
前記所与の１本または複数本の軸索線が、前記入力線のうちの所与の１本または複数本の入力線から入力データを受け取り、前記入力データを、前記所与の１つまたは複数のシナプス・セルに供給するように構成されており、
前記シナプス・セルが、クロスバー・アレイを形成するように、前記ニューロモーフィック・チップの前記軸索線および複数の樹状突起線に接続されている、
方法。
【請求項１８】
ニューロモーフィック・システム上で展開されているアプリケーションの要求に従って、前記所与のスイッチが、前記所与の１本または複数本の軸索線に変更可能に接続し、前記方法がさらに、前記所与の１つまたは複数のシナプス・セルの好ましい数の抵抗性要素によって前記重みを表現することによって、前記所与の１本または複数本の軸索線を介して、前記入力データを用いた学習動作を実行することを含む、請求項１７に記載の方法。
【請求項１９】
ニューロモーフィック・チップ内のシナプス重みを更新するためのプログラムであって、
前記ニューロモーフィック・チップの複数のスイッチの対応するそれぞれの入力端子を前記ニューロモーフィック・チップの入力線に接続することと、
前記ニューロモーフィック・チップの複数のシナプス・セルのうちの所与の１つまたは複数のシナプス・セルにシナプス重みを割り当てるために、前記スイッチのうちの所与の１つのスイッチについて、前記所与のスイッチを、前記ニューロモーフィック・チップの複数の軸索線のうちの所与の１本または複数本の軸索線に変更可能に接続することとを含み、
前記所与の１本または複数本の軸索線が、前記入力線のうちの所与の１本または複数本の入力線から入力データを受け取り、前記入力データを、前記所与の１つまたは複数のシナプス・セルに供給するように構成され、
前記シナプス・セルが、クロスバー・アレイを形成するように、前記ニューロモーフィック・チップの前記軸索線および複数の樹状突起線に接続されるように
前記ステップをニューロモーフィック・チップに実行させるプログラム。
【国際調査報告】
2021511566.tif 000014
2021511566.tif 000015