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

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

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

特表2023-543971オール・ローカル・ストレージをもつアナログ・メモリ・ベースのニューラル・ネットワークのパイプライン処理
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-10-19
(54)【発明の名称】オール・ローカル・ストレージをもつアナログ・メモリ・ベースのニューラル・ネットワークのパイプライン処理
(51)【国際特許分類】
   G06N 3/065 20230101AFI20231012BHJP
   G06N 3/084 20230101ALI20231012BHJP
   G06F 15/80 20060101ALI20231012BHJP
   G11C 11/54 20060101ALI20231012BHJP
   G06G 7/60 20060101ALI20231012BHJP
   G06F 12/00 20060101ALI20231012BHJP
   G06F 12/06 20060101ALI20231012BHJP
【FI】
G06N3/065
G06N3/084
G06F15/80
G11C11/54
G06G7/60
G06F12/00 560F
G06F12/06 525C
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023514738
(86)(22)【出願日】2021-09-03
(85)【翻訳文提出日】2023-03-02
(86)【国際出願番号】 CN2021116390
(87)【国際公開番号】W WO2022068520
(87)【国際公開日】2022-04-07
(31)【優先権主張番号】17/036,246
(32)【優先日】2020-09-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】バール、ジェフリー
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CB03
5B160MM20
(57)【要約】
オール・ローカル・ストレージをもつ、アナログ・メモリ・ベースのニューラル・ネットワークのパイプライン処理を実現する。入力のアレイは、フィード・フォワード動作中に、前層から隠れ層の第1のシナプス・アレイによって受信される。入力のアレイは、フィード・フォワード動作中に、第1のシナプス・アレイによって記憶される。入力のアレイは、フィード・フォワード動作中に、隠れ層の第2のシナプス・アレイによって受信される。第2のシナプス・アレイは、フィード・フォワード動作中に、第2のシナプス・アレイの重みに基づいて入力のアレイから出力を計算する。保存された入力のアレイは、バック・プロパゲーション動作中に、第1のシナプス・アレイから第2のシナプス・アレイに与えられる。補正値は、バック・プロパゲーション動作中に、第2のシナプス・アレイによって受信される。補正値と記憶された入力のアレイとに基づいて、第2のシナプス・アレイの重みは更新される。
【特許請求の範囲】
【請求項1】
複数のシナプス・アレイを備える人工ニューラル・ネットワークであって、
前記複数のシナプス・アレイの各々が、複数の順序付けられた入力ワイヤと、複数の順序付けられた出力ワイヤと、複数のシナプスとを備え、
前記シナプスの各々が、前記複数の入力ワイヤのうちの1つと、前記複数の出力ワイヤのうちの1つとに動作可能に結合され、
前記複数のシナプスの各々が、重みを記憶するように構成された抵抗素子を備え、
前記複数のシナプス・アレイが、少なくとも1つの入力層と、少なくとも1つの隠れ層と、少なくとも1つの出力層とを含む複数の層に構成され、
前記少なくとも1つの隠れ層における前記複数のシナプス・アレイのうちの少なくとも1つの第1のシナプス・アレイが、フィード・フォワード動作中に前層から入力のアレイを受信し、記憶するように構成され、
前記少なくとも1つの隠れ層における前記複数のシナプス・アレイのうちの少なくとも1つの第2のシナプス・アレイが、前記フィード・フォワード動作中に、前記前層から前記入力のアレイを受信し、前記第2のシナプス・アレイの前記重みに基づいて、前記少なくとも1つの隠れ層からの出力を計算するように構成され、
前記シナプス・アレイのうちの前記第1のシナプス・アレイが、バック・プロパゲーション動作中に、記憶された前記入力のアレイを前記シナプス・アレイのうちの前記第2のシナプス・アレイに提供するように構成され、
前記シナプス・アレイのうちの前記第2のシナプス・アレイが、前記バック・プロパゲーション動作中に補正値を受信し、前記補正値と記憶された前記入力のアレイとに基づいて、前記第2のシナプス・アレイの重みを更新するように構成される、
人工ニューラル・ネットワーク。
【請求項2】
前記フィード・フォワード動作がパイプライン処理される、請求項1に記載の人工ニューラル・ネットワーク。
【請求項3】
前記バック・プロパゲーション動作がパイプライン処理される、請求項1に記載の人工ニューラル・ネットワーク。
【請求項4】
前記フィード・フォワード動作および前記バック・プロパゲーション動作が同時に行われる、請求項1に記載の人工ニューラル・ネットワーク。
【請求項5】
前記シナプス・アレイのうちの前記第1のシナプス・アレイが、列ごとに1つの入力のアレイを記憶するように構成される、請求項1に記載の人工ニューラル・ネットワーク。
【請求項6】
前記複数のシナプスの各々がメモリ素子を備える、請求項1に記載の人工ニューラル・ネットワーク。
【請求項7】
前記複数のシナプスの各々がNVMまたは3T1Cを備える、請求項1に記載の人工ニューラル・ネットワーク。
【請求項8】
第1のシナプス・アレイと第2のシナプス・アレイとを備えるデバイスであって、
前記第1のシナプス・アレイおよび前記第2のシナプス・アレイの各々が、複数の順序付けられた入力ワイヤと、複数の順序付けられた出力ワイヤと、複数のシナプスとを備え、
前記複数のシナプスの各々が、前記複数の入力ワイヤのうちの1つと、前記複数の出力ワイヤのうちの1つとに動作可能に結合され、
前記複数のシナプスの各々が、重みを記憶するように構成された抵抗素子を備え、
前記第1のシナプス・アレイが、フィード・フォワード動作中に、人工ニューラル・ネットワークの前層から入力のアレイを受信し、記憶するように構成され、
前記第2のシナプス・アレイが、前記フィード・フォワード動作中に、前記前層から前記入力のアレイを受信し、前記第2のシナプス・アレイの前記重みに基づいて出力を計算するように構成され、
前記第1のシナプス・アレイが、バック・プロパゲーション動作中に、前記第2のシナプス・アレイに前記記憶された入力のアレイを提供するように構成され、
前記第2のシナプス・アレイが、前記バック・プロパゲーション動作中に、補正値を受信し、前記補正値と前記記憶された入力のアレイとに基づいて、前記第2のシナプス・アレイの重みを更新するよう構成される、
デバイス。
【請求項9】
前記フィード・フォワード動作がパイプライン処理される、請求項8に記載のデバイス。
【請求項10】
前記バック・プロパゲーション動作がパイプライン処理される、請求項8に記載のデバイス。
【請求項11】
前記フィード・フォワード動作と前記バック・プロパゲーション動作とが同時に実行される、請求項8に記載のデバイス。
【請求項12】
前記第1のシナプス・アレイが、列ごとに1つの入力のアレイを記憶するように構成される、請求項8に記載のデバイス。
【請求項13】
前記複数のシナプスの各々がメモリ素子を備える、請求項8に記載のデバイス。
【請求項14】
前記複数のシナプスの各々がNVMまたは3T1Cを備える、請求項1に記載の人工ニューラル・ネットワーク。
【請求項15】
フィード・フォワード動作中に、前層から、隠れ層の第1のシナプス・アレイによって入力のアレイを受信することと、
前記フィード・フォワード動作中に、前記第1のシナプス・アレイによって前記入力のアレイを記憶することと、
前記フィード・フォワード動作中に、前記隠れ層の第2のシナプス・アレイによって前記入力のアレイを受信することと、
前記フィード・フォワード動作中に、前記第2のシナプス・アレイによって、前記第2のシナプス・アレイの重みに基づいて、前記入力のアレイから出力を計算することと、
バック・プロパゲーション動作中に、前記第1のシナプス・アレイから前記第2のシナプス・アレイに前記記憶された入力のアレイを提供することと、
前記バック・プロパゲーション動作中に、前記第2のシナプス・アレイによって補正値を受信することと、
前記補正値および前記記憶された入力のアレイに基づいて、前記第2のシナプス・アレイの前記重みを更新することと
を含む方法。
【請求項16】
前記フィード・フォワード動作がパイプライン処理される、請求項15に記載の方法。
【請求項17】
前記バック・プロパゲーション動作がパイプライン処理される、請求項15に記載の方法。
【請求項18】
前記フィード・フォワード動作と前記バック・プロパゲーション動作とが同時に実行される、請求項15に記載の方法。
【請求項19】
前記第1のシナプス・アレイが、列ごとに1つの入力のアレイを記憶するように構成される、請求項15に記載の方法。
【請求項20】
前記複数のシナプスの各々がメモリ素子を備える、請求項15に記載の方法。
【請求項21】
コンピュータ上で実行されたときに、請求項15ないし20のいずれか一項に記載の方法の各ステップを実行するように適合されたプログラム・コードを含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、ニューラル・ネットワーク回路に関し、より詳細には、オール・ローカル・ストレージをもつアナログ・メモリ・ベースのニューラル・ネットワークのパイプライン処理に関する。
【発明の概要】
【0002】
本開示の実施形態によれば、人工ニューラル・ネットワークが提供される。様々な実施形態において、人工ニューラル・ネットワークは、複数のシナプス・アレイを備える。複数のシナプス・アレイの各々は、複数の順序付けられた入力ワイヤと、複数の順序付けられた出力ワイヤと、複数のシナプスとを備える。シナプスの各々は、複数の入力ワイヤのうちの1つおよび複数の出力ワイヤのうちの1つに動作可能に結合される。複数のシナプスの各々は、重みを記憶するように構成された抵抗素子を備える。複数のシナプス・アレイは、少なくとも1つの入力層と、1つの隠れ層と、1つの出力層とを備える複数の層中に構成される。少なくとも1つの隠れ層のシナプス・アレイのうちの少なくとも1つの第1のシナプス・アレイは、フィード・フォワード動作中に、前層から入力のアレイを受信し、記憶するように構成される。少なくとも1つの隠れ層のシナプス・アレイのうちの少なくとも1つの第2のシナプス・アレイは、フィード・フォワード動作中に、前層から入力のアレイを受信し、第2のシナプス・アレイの重みに基づいて、その少なくとも1つの隠れ層からの出力を計算するように構成される。シナプス・アレイのうちの少なくとも1つの第1のシナプス・アレイは、バック・プロパゲーション動作中に、記憶された入力のアレイをシナプス・アレイのうちの少なくとも1つの第2のシナプス・アレイに与えるように構成される。シナプス・アレイのうちの少なくとも1つの第2のシナプス・アレイは、バック・プロパゲーション動作中に、補正値を受信し、補正値と記憶された入力のアレイとに基づいて、第2のシナプス・アレイの重みを更新するように構成される。
【0003】
本開示の実施形態によれば、第1のシナプス・アレイと第2のシナプス・アレイとを含むデバイスが提供される。第1のシナプス・アレイと第2のシナプス・アレイの各々は、複数の順序付けられた入力ワイヤと、複数の順序付けられた出力ワイヤと、複数のシナプスとを備える。複数のシナプスの各々は、複数の入力ワイヤのうちの1つおよび複数の出力ワイヤのうちの1つに動作可能に結合される。複数のシナプスの各々は、重みを記憶するように構成された抵抗素子を備える。第1のシナプス・アレイは、フィード・フォワード動作中に、人工ニューラル・ネットワークの前層から入力のアレイを受信し、記憶するように構成される。第2のシナプス・アレイは、フィード・フォワード動作中に、前層から入力のアレイを受信し、第2のシナプス・アレイの重みに基づいて出力を計算するように構成される。第1のシナプス・アレイは、バック・プロパゲーション動作中に、記憶された入力のアレイを第2のシナプス・アレイに与えるように構成される。第2のシナプス・アレイは、バック・プロパゲーション動作中に、補正値を受信し、補正値と記憶された入力のアレイとに基づいて、第2のシナプス・アレイの重みを更新するように構成される。
【0004】
本開示の実施形態によれば、ニューラル・ネットワーク回路を動作させるための方法およびコンピュータ・プログラム製品が提供される。入力のアレイは、フィード・フォワード動作中に、前層から隠れ層の第1のシナプス・アレイによって受信される。入力のアレイは、フィード・フォワード動作中に、第1のシナプス・アレイによって記憶される。入力のアレイは、フィード・フォワード動作中に、隠れ層の第2のシナプス・アレイによって受信される。第2のシナプス・アレイは、フィード・フォワード動作中に、第2のシナプス・アレイの重みに基づいて入力のアレイから出力を計算する。記憶された入力のアレイは、バック・プロパゲーション動作中に、第1のシナプス・アレイから第2のシナプス・アレイに与えられる。補正値は、バック・プロパゲーション動作中に、第2のシナプス・アレイによって受信される。補正値と記憶された入力のアレイとに基づいて、第2のシナプス・アレイの重みは更新される。
【図面の簡単な説明】
【0005】
図1】本開示の実施形態による、例示的な不揮発性メモリ・ベースのクロスバー・アレイ、またはクロスバー・メモリを示す図である。
図2】本開示の実施形態による、ニューラル・ネットワーク内の例示的なシナプスを示す図である。
図3】本開示の実施形態による、ニューラル・コアの例示的なアレイを示す図である。
図4】本開示の実施形態による、例示的なニューラル・ネットワークを示す図である。
図5A】本開示の実施形態による、フォワード・プロパゲーションの第1のステップを示す図である。
図5B】本開示の実施形態による、フォワード・プロパゲーションの第2のステップを示す図である。
図5C】本開示の実施形態による、フォワード・プロパゲーションの第3のステップを示す図である。
図5D】本開示の実施形態による、フォワード・プロパゲーションの第4のステップを示す図である。
図5E】本開示の実施形態による、フォワード・プロパゲーションの第5のステップを示す図である。
図6A】本開示の実施形態による、バック・プロパゲーションの第1のステップを示す図である。
図6B】本開示の実施形態による、バック・プロパゲーションの第2のステップを示す図である。
図6C】本開示の実施形態による、バック・プロパゲーションの第3のステップを示す図である。
図6D】本開示の実施形態による、バック・プロパゲーションの第4のステップを示す図である。
図6E】本開示の実施形態による、バック・プロパゲーションの第5のステップを示す図である。
図7A】本開示の実施形態による、フォワード・プロパゲーションとバック・プロパゲーションの両方が同時に行われる第1のステップを示す図である。
図7B】本開示の実施形態による、フォワード・プロパゲーションとバック・プロパゲーションの両方が同時に行われる第2のステップを示す図である。
図7C】本開示の実施形態による、フォワード・プロパゲーションとバック・プロパゲーションの両方が同時に行われる第3のステップを示す図である。
図7D】本開示の実施形態による、フォワード・プロパゲーションとバック・プロパゲーションの両方が同時に行われる第4のステップを示す図である。
図7E】本開示の実施形態による、フォワード・プロパゲーションとバック・プロパゲーションの両方が同時に行われる第5のステップを示す図である。
図8】本開示の実施形態による、ニューラル・ネットワークを動作させる方法を示す図である。
図9】本開示の実施形態による、コンピューティング・ノードを示す図である。
【発明を実施するための形態】
【0006】
人工ニューラル・ネットワーク(ANN)は、シナプスと呼ばれる接続点を介して相互接続された、いくつかのニューロンからなる分散型コンピューティング・システムである。各シナプスは、1つのニューロンの出力と別のニューロンの入力との間の接続の強さを符号化する。各ニューロンの出力は、そのニューロンに接続されている他のニューロンから受信した入力の総和によって決定される。したがって、所与のニューロンの出力は、直前の層からの接続されたニューロンの出力と、シナプスの重みで決定される接続の強さとに基づいて決定される。ANNは、特定の等級の入力が所望の出力を生成するようにシナプスの重みを調整することによって、特定の問題(例えば、パターン認識)を解くようにトレーニングされる。
【0007】
ANNは、クロスポイント・アレイまたはクロスワイヤ・アレイとしても知られているクロスバー・アレイを含む、様々な種類のハードウェア上に実装され得る。基本的なクロスバー・アレイ構成は、1セットの導電性の行ワイヤと、その1セットの導電性の行ワイヤと交差するように形成された1セットの導電性の列ワイヤとを含む。その2セットのワイヤの交点は、クロスポイント・デバイスによって分離されている。クロスポイント・デバイスは、ANNのニューロン間の重み付けされた接続として機能する。
【0008】
様々な実施形態において、不揮発性メモリ・ベースのクロスバー・アレイ、またはクロスバー・メモリが提供される。複数の交差点は、行ラインが列ラインと交差することによって形成される。不揮発性メモリなどの抵抗性メモリ素子は、交差点の各々においてセレクタと直列で、行ラインのうちの1本と列ラインのうちの1本との間を連結する。セレクタは、揮発性のスイッチまたはトランジスタであり得、その多くの種類は当業界で知られている。本明細書で説明するように、メモリスタと、相変化メモリと、導電性ブリッジRAMと、スピン注入トルクRAMとを含む、様々な抵抗性メモリ素子が使用に適していることが理解されよう。
【0009】
一定数のシナプスをコア上に与えられ、次いで複数のコアが接続されて完全なニューラル・ネットワークを提供し得る。このような実施形態では、例えばパケット交換網または回線交換網を介して1つのコア上のニューロンの出力を別のコアに伝えるために、コア間の相互接続性が与えられる。パケット交換網では、アドレス・ビットでの送信、読み出し、および動作が必要であるために電力および速度を犠牲にするが、柔軟な相互接続が実現され得る。回線交換網では、アドレス・ビットが必要ないため、柔軟性および再構成可能性は別の手段で実現されなければならない。
【0010】
様々な例示的なネットワークにおいて、複数のコアはチップ上にアレイ状に配置される。このような実施形態では、コアの相対位置は、方位(北、南、東、西)によって表されることがある。ニューラル信号によって伝えられるデータは、バッファリングに適したデジタル電圧レベルまたはデジタル信号復元の他の形態を使用して、各ワイヤによって伝えられるパルス持続時間に符号化され得る。
【0011】
ルーティングに対する1つの手法は、各コアの出力端にアナログ-デジタル変換器を設けてパケットを他の任意のコアに迅速にルーティングするためのデジタル・ネットワーク・オン・チップと組み合わせ、各コアの入力端にデジタル-アナログ変換器を設けることである。
【0012】
ディープ・ニューラル・ネットワーク(DNN)のトレーニングは3つの異なるステップを含む:1)トレーニング例をネットワーク全体を通して出力まで前向き推論すること;2)そのトレーニング例についての推論された出力と既知のグラウンドトゥルース出力との間の差に基づくデルタすなわち補正をバック・プロパゲーションすること;および3)シナプス重みからすぐ上流のニューロンに因む最初のフォワード励起(forward excitation)(χ)と、シナプス重みのすぐ下流のニューロンに因むバック・プロパゲーションされたデルタとを組み合わせることによって、ネットワーク内の各重みの重み更新をすること。
【0013】
このトレーニング・プロセスのパイプライン処理は、重み更新に必要なこれら2つのデータが、大きく異なる時間に生成されるという事実ゆえに複雑である。入力の励起値(χベクトル)はフォワード・パス中に生成されるが、入力のデルタ値(デルタ・ベクトル)は、フォワード・パス全体が完了し、リバース・パスが同じニューラル・ネットワーク層に戻るまで生成されない。ニューラル・ネットワークの早い段階に位置する層にとって、これは、後に必要とされるχベクトル・データがしばらく記憶されなければならないことを意味し、記憶され、後に取り戻さなければならないようなベクトルの数は非常に大きなものになり得る。
【0014】
特に、ある層qにおける重み更新を行うためには、あるタイム・ステップtで生成された入力m(例えば、画像)に対応する励起が必要である。さらに、層qのためのデルタが必要であるが、これは、lを層qとネットワークの出力との間の層の数として、タイムステップt+2lまで利用できない。
【0015】
一方、χベクトルの長期記憶を必要としない前向き推論のみのパイプライン処理手法では、ニューラル・ネットワーク層を実装する1つのアレイ・コアから、極めて局所的なルーティングで次のアレイ・コアに効率的にこれらのベクトルを渡すことができ、その結果、すべての層が同時にデータについて作業をすることができる。例えば、第N番目のDNN層に関連付けられたアレイ・コアが第N番目のデータ例について作業する間に、第N-1番目の層のアレイ・コアは第N-1番目のデータ例について作業する。データの複数のチャンクがハードウェア・システム中を段階的に進んでいくこの手法は、パイプライン処理として知られる。隣接する構成要素が同じ問題もしくはデータ例の別の部分について作業を行っていても、または全く異なるデータ例について作業を行っていても、各構成要素は常にビジーであり続けるので、特に効率的である。
【0016】
すべてのχベクトルおよびデルタ・ベクトルをデジタル化し、それらをチップ上の別の場所に記憶するパイプライン・トレーニング手法が説明されている。このような手法は、デジタル化、デジタル・データの長距離ルーティング、および大量のメモリが必要であり、ニューラル・ネットワーク層の数が大きくなるにつれてこれらの要素のいずれかがボトルネックになり得る。
【0017】
したがって、すべての長距離データ・トラフィックを排除することによって大規模ネットワークに対して同じスケーラビリティを提供する、ディープ・ニューラル・ネットワーク・トレーニングのパイプライン処理を可能にする技術が必要とされている。
【0018】
本開示は、各ニューラル・ネットワーク層に割り当てられた2つ以上の論理アレイ・コアを用いる、5ステップのシーケンスを提供する。これらのアレイ・コアは一意的に設けられるか、または全く同一とするかどちらでもあり得る。1つのアレイ・コアは、フォワード・パス中で生成されたχベクトルの極めて局所的な短期記憶の役割を担い、もう1つのアレイ・コアは、通常のクロスバー・アレイまたは抵抗型処理ユニット(RPU:resistive processing unit)のモードで、フォワード・プロパゲーション(次のχベクトルを生成)、リバース・プロパゲーション(デルタ・ベクトルを生成)、および重み更新を行う。
【0019】
いくつかの実施形態では、短期記憶は複数のアレイ・コアに分散され得、RPU/クロスバー機能も複数のアレイ・コアに分散され得る。分散スペクトルの他方では、短期記憶とクロスバー機能の2つの役割は、1つの物理アレイ・コアすなわちタイルに実装され得る。
【0020】
図1を参照すると、例示的な不揮発性メモリ・ベースのクロスバー・アレイ、すなわちクロスバー・メモリが図示されている。複数の交差点101は、行ライン102が列ライン103と交差することによって形成される。不揮発性メモリなどの抵抗性メモリ素子104は、交差点101の各々においてセレクタ105と直列に行ライン102の1本と列ライン103の1本との間を連結する。セレクタは、揮発性のスイッチまたはトランジスタであり得、その多くの種類が当業界で知られている。
【0021】
本明細書で説明するように、メモリスタと、相変化メモリと、導電性ブリッジRAMと、スピン注入トルクRAMとを含む、様々な抵抗性メモリ素子が使用に適していることが理解されよう。
【0022】
図2を参照すると、ニューラル・ネットワーク内の例示的なシナプスが図示されている。ノード201からの複数の入力χ・・・χは、対応する重みwijが乗じられる。重みの総和Σχijはノード202の関数f(・)に与えられ、値
【数1】

に至る。ニューラル・ネットワークが複数のこのような層間の接続を含むであろうこと、および、これは単に例示であることは理解されよう。
【0023】
ここで図3を参照すると、本開示の実施形態による、ニューラル・コアの例示的なアレイが図示されている。アレイ300は複数のコア301を含む。アレイ300中のコアは、以下でさらに説明するように、配線302によって相互接続される。この例では、アレイは2次元である。しかしながら、本開示がコアの1次元または3次元アレイに適用され得ることは理解されよう。コア301は、上述したようなシナプスを実現する不揮発性メモリアレイ311を含む。コア301は、西側と南側とを含み、それぞれは入力として機能し、他は出力として機能し得る。西/南という呼称は、単に相対的な位置関係を指しやすくするために採用されたものであり、入出力の方向を限定するものではないことは理解されよう。
【0024】
様々な例示的な実施形態において、西側は、コア301の辺全体専用のサポート回路312と、行のサブセット専用の共有回路313と、個々の行専用の行単位の回路314とを含む。様々な実施形態において、南側も同様に、コア301の辺全体専用のサポート回路315と、列のサブセット専用の共有回路316と、個々のカラム専用の列ごとの回路317とを含む。
【0025】
図4を参照すると、例示的なニューラル・ネットワークが図示されている。この例では、複数の入力ノード401は複数の中間ノード402と相互接続される。同様に、中間ノード402は出力ノード403と相互接続される。この単純なフィード・フォワード・ネットワークは、もっぱら説明のために提示したものであり、本開示は、この特定のニューラル・ネットワーク配置に関係なく、適用可能であることは理解されよう。
【0026】
図5A図5Eを参照すると、本開示の実施形態による、フォワード・プロパゲーションのステップが図示されている。図5A図5Eの各々は、一タイム・スライスにおける一対のアレイの動作を示している。
【0027】
図5Aに示す第1のステップでは、画像mの層qに対するχベクトルを含む並列データ・ベクトルが、アレイ・コア501、502を横断して伝播して層qの計算を担当するRPUアレイ・コア502に到着する。χベクトルは,層qの記憶を担当するアレイ・コア501の東側周辺部に保存される。積和演算が行われ、次のχベクトルを設定する。
【0028】
各クロスバーの西端のボックス503・・・505は、クロスバー・アレイの行に関連する、行内の周辺回路および共有の周辺回路を示し、フォワード励起を生じさせ、リバース・プロパゲーション中に、積分された電流をアナログ測定し、および重み更新ステージ中に、取得したフォワード励起を適用する。
【0029】
同様に、南端のボックス506・・・508は、列に関連する、列内の周辺回路および共有の周辺回路を示し、フォワード励起中に、積分された電流をアナログ測定し、列上にリバース励起(reverse excitation)を生じさせ、および重み更新ステージ中に、それらのリバース励起を適用する。
【0030】
矢印509は、各アレイ上を通る並列ルーティング・ワイヤ上のデータ・ベクトルの伝播を示し、ボックス510、511は、この第1のステップ中に更新される(例えば、充電または放電される)キャパシタを指している。矢印512は、アレイ上の電流の積分(積和)を示す。このステップ中に、左側のアレイ・コアを通過する際に、その東端で励起が捕捉され、そして、これらの励起が右側のアレイ・コアの行を駆動している。これが、大規模並列積和演算を実行する列に沿った電流の積分となる。このステップの終了時には、ボックス511で示すように、これらの演算のアナログ結果を表す集積された電荷が、右側のアレイ・コアの南端のキャパシタに存在する。
【0031】
図5Bに示す第2のステップでは,ストレージ・アレイ・コアの東側周辺部に収められたχベクトル・データ(
【数2】

)が、画像mに関連付けられたデータ列513中に列方向に書き込まれる。いくつかの実施形態では、高持続性(endurance)のNVM(non-volatile memory)、またはほぼ無限大の持続性と数ミリ秒の記憶寿命を示す3T1C(3トランジスタ1キャパシタ)などのシナプス回路素子を使用して行われる。
【0032】
ボックス514、515は、前のタイムステップからの値を保持しているキャパシタ-この場合、左側のアレイ・コアの東端および右側のアレイ・コアの南端-を示している。矢印516は、3T1C(3トランジスタ+1キャパシタ)デバイス、または迅速かつ正確なアナログ状態の書き込みをすることができ、非常に高い持続性をもつ任意の他のデバイスへの並列の行方向書き込みを示す。
【0033】
図5Cに示す第3のステップでは、計算アレイ・コアの南側の次のχベクトル・データがルーティング・ネットワーク上に置かれ、第q+1層に送られる。このプロセスは、本質的にスカッシング関数演算を含むか、またはルーティング・パスに沿った最終目的地の手前の一箇所でスカッシング関数が適用され得る。
【0034】
図5D図5Eに示す、第3のステップおよび第4のステップでは、何もする必要がない。これらのタイム・スライスは、次の画像が処理され得る前に、他のトレーニング・タスクのために使用される。
【0035】
このリストは、第q層に関連付けされたアレイ・コアに対する操作を詳細に説明したが、これは、第q+1層が、これらの全く同じ操作を2ステップだけ位相をシフトして実行することを意味する。このことは、第3のステップの矢印517(データが層qを離れることに相当)が、第q+1層の第1のステップに見られる矢印509(データが層q+1に到着することに相当)と等価であることを意味する。さらに同じように進めると、q+2層はこれらの同じ操作を再度,元の層qから4ステップだけ位相をシフトして実行する。換言すれば、フォワード・プロパゲーション中は、5位相中3位相で全アレイ・コアがビジー状態である。
【0036】
ここで図6A図6Eを参照すると、本開示の実施形態による、バック・プロパゲーションのステップが例示されている。図6A図6Eの各々は、一タイム・スライスにおける一対のアレイの動作を示している。
【0037】
図6Aに示す第1のステップ中に、画像nのχベクトルの以前に記憶されたコピーが取り出され、層qのストレージ・アレイ・コアの西側周辺部で利用可能である。これは、過去のある時点において、画像nがフォワード・プロパゲーションのために処理されたときに記憶されたものと思われることに注意されたい。
【0038】
図6Bに示す第2のステップ中に、画像nの層qに対する並列デルタ・ベクトルは、ルーティング・ネットワークを通じて伝播して同じRPUアレイ・コアの南側に到達し、転置積和演算(列単位で(columns driven)行に沿って積分)が行われ、その結果、層qの計算アレイ・コアの西側キャパシタに次のデルタ・ベクトルを表す電荷が蓄積されることになる。到着したデルタ・ベクトルのコピーは南側の周辺回路に保存される(ボックス601で示す)。
【0039】
図6Cに示す第3のステップ中に、以前に取り出されたχベクトルは、ストレージ・アレイ・コアから計算アレイ・コアに転送され、その結果、現在、層qの計算アレイ・コアの西側周辺部で利用可能である。
【0040】
図6Dに示す第4のステップ中に、西側周辺部のχベクトル情報と南側周辺部のデルタ・ベクトル情報とは、組み合わされてクロスバー互換の重み更新(RPUアレイ・ニューラル・ネットワーク重み更新)を実行する。
【0041】
図6Eに示す第5のステップ中に、西側周辺部で利用可能なすべての派生情報(derivative information)は、第2のステップで生成された次のデルタ・ベクトルに適用される。その場合、この情報はオーバーヘッド・ルーティング・ネットワークに載せられ、左側のアレイ・コア上を通過して、1つ前の層q-1に到着する。
【0042】
アレイ・コアの各列間の位相の不一致は、フォワード・プロパゲーションのステップ中に観察されたものと自己矛盾がない。このように、ネットワークの各層は、動作の各タイムステップ中に有用な作業を行うため、トレーニングの完全なパイプライン処理が可能になる。
【0043】
ここで図7A図7Eを参照すると、本開示の実施形態による、フォワード・プロパゲーションとバック・プロパゲーションの両方が同時に行われるステップが図示されている。これらの合成画像に示すように、図5A図5Eおよび図6A図6Eに与えられたステップは、自己矛盾が全くなく、5つのタイム・ステップで同時に実行され得る。これは、すべてのストレージがローカルであることを意味し、この方式は、ルーティング・パスが無競合で実行され得る限り、任意の大きさのニューラル・ネットワークに拡大することができる。フォワード・プロパゲーション中のデータ例の最初の通過と、リバース・プロパゲーション中のそのデータ例のデルタの最後の到着との間の時間期間中に、5つのステップの各セットに対して中間ストレージの1列が使用されるので、サポートされるであろうネットワークの最大深度は、χベクトルの記憶に利用できる列の数によって制限される。デルタ値の列が取り出され、第4のステップの重み更新に使用されると、その列は破棄され、次の入力データ例のためのフォワード励起データを記憶するために再利用され得る。このように、2つのポインタ-1つは現在フォワード・プロパゲーションされつつある入力例m、もう1つは現在リバース・プロパゲーションされつつある入力例n-が、ネットワークの各層で維持され、更新される。
【0044】
上記で概説したように、第2のRPUアレイは、ローカルに励起を保持するために各層に対して使用され、全層接続された状態で5クロック・サイクルごとに1データ例のスループットを提供する。このように、スループットが最大化されると同時に、データの長距離伝送が排除される。この技術はネットワークの層数に依存せず、LSTM(long short term memory)、および外部で重み更新を行うCNN(convolutional neural network)など、様々なネットワークに適用され得る。
【0045】
図8を参照すると、本開示の実施形態による、ニューラル・ネットワークを動作させる方法が示されている。801において、フィード・フォワード動作中に、入力のアレイが、前層から隠れ層の第1のシナプス・アレイによって受信される。802において、フィード・フォワード動作中に、入力のアレイが、第1のシナプス・アレイによって記憶される。803において、フィード・フォワード動作中に、入力のアレイが、隠れ層の第2のシナプス・アレイによって受信される。804において、フィード・フォワード動作中に、第2のシナプス・アレイが、第2のシナプス・アレイの重みに基づいて入力のアレイから出力を計算する。805において、バック・プロパゲーション動作中に、記憶された入力のアレイが、第1のシナプス・アレイから第2のシナプス・アレイに供給される。806において、バック・プロパゲーション動作中に、補正値が、第2のシナプス・アレイによって受信される。807において、補正値と記憶された入力のアレイとに基づいて、第2のシナプス・アレイの重みが更新される。
【0046】
したがって、様々な実施形態において、トレーニング・データは、フォワード・プロパゲーションと、バック・プロパゲーションと、重み更新とを実行する一連のタスクを使用して処理される。
【0047】
第1のタスクにおいて、画像mの層qのためのχベクトルを含む並列データ・ベクトルは、アレイ・コアを横切って伝播して層qの計算を担当するRPUアレイ・コアに到着すると同時に、層qのストレージを担当するアレイ・コアの東側周辺部に保存もされる。積和演算が行われ、次のχベクトルを設定する。
【0048】
第2のタスクにおいて、ストレージ・アレイ・コアの東側周辺部に保持されているχベクトル・データは、画像mに関連付けられたデータ列に列方向に書き込まれる.いくつかの実施形態では、これは、高持続性のNVM、またはほぼ無限大の持続性および数ミリ秒の記憶寿命を示す3T1Cシナプス回路素子を使用して行われることになる。
【0049】
第3のタスクにおいて、計算アレイ・コアの南側における次のχのベクトル・データは、ルーティング・ネットワーク上に配置され、第q+1層に送られる。このプロセスは、本来的にスカッシング関数演算を含み得るか、またはルーティング・パスに沿った最終目的地の手前の一箇所でスカッシング関数が適用され得る。
【0050】
画像mの層qのデルタ・ベクトルが送信される準備が整った時点に対応する、トレーニング・データのその後の反復の第1のタスクにおいて、この同じ画像mの以前に記憶されたχベクトルのコピーが取り出され、層qのストレージ・アレイ・コアの西側周辺部で利用可能である。
【0051】
その後の反復の第2のタスクにおいて、画像mの層qの並列デルタ・ベクトルは、ルーティング・ネットワークを通じて伝播して同じRPUアレイ・コアの南側に到着し、転置積和演算(列単位で(columns driven)行に沿って積分)が行われ、その結果、層qの計算アレイ・コアの西側キャパシタに次のデルタ・ベクトルを表す電荷が蓄積されることになる。到着したデルタ・ベクトルのコピーは南側の周辺回路に保存される。
【0052】
その後の反復の第3のタスクにおいて、以前に取り出されたχベクトルは、ストレージ・アレイ・コアから計算アレイ・コアに転送され、その結果、現在、層qの計算アレイ・コアの西側周辺部で利用可能である。
【0053】
その後の反復の第4のタスクにおいて、西側周辺部のχベクトル情報と南側周辺部のデルタ・ベクトル情報とは、組み合わされて、RPUアレイのニューラル・ネットワークの重み更新に典型的な通常のクロスバー準拠の重み更新を実行する。
【0054】
その後の反復の第5のタスクにおいて、西側周辺部で利用可能なすべての派生情報は、第2のタスクで生成された次のデルタ・ベクトルに適用される。
【0055】
ここで図9を参照すると、コンピューティング・ノードの一例の概略図が示されている。コンピューティング・ノード10は、好適なコンピューティング・ノードの一例に過ぎず、本明細書で説明する実施形態の使用範囲または機能性に関する限定を示唆することを意図するものでない。いずれにせよ、コンピューティング・ノード10は、実装されること、または本明細書に記載された機能のいずれかを実行すること、あるいはその両方が可能である。
【0056】
コンピューティング・ノード10には、多数の他の汎用または特殊目的のコンピューティング・システム環境または構成で動作可能なコンピュータ・システム/サーバ12がある。コンピュータ・システム/サーバ12とともに使用するのに適した周知のコンピューティング・システム、環境、または構成、あるいはその組合せの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラマブル家電、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などを含むが、これらに限定されるものでない。
【0057】
コンピュータ・システム/サーバ12は、プログラム・モジュールなどのコンピュータ・システム実行可能命令がコンピュータ・システムによって実行されるという一般的な文脈で説明され得る。一般に、プログラム・モジュールは、特定のタスクを実行し、または特定の抽象的なデータ型をインプリメントするルーチン、プログラム、オブジェクト、構成要素、ロジック、データ構造などを含み得る。コンピュータ・システム/サーバ12は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境において運用され得る。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルとリモート両方のコンピュータ・システムの記憶媒体に設置され得る。
【0058】
図9に示すように、コンピューティング・ノード10におけるコンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形態で示される。コンピュータ・システム/サーバ12の構成要素は、1つまたは複数のプロセッサまたは処理ユニット16と、システム・メモリ28と、システム・メモリ28を含む様々なシステム構成要素をプロセッサ16に結合させるバス18とを含み得るが、これらに限定されるものではない。
【0059】
バス18は、メモリ・バスまたはメモリ・コントローラと、周辺バスと、アクセラレーテッド・グラフィックス・ポートと、様々なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスとを含む、いくつかのタイプのバス構造のうちのいずれか1つまたは複数のバス構造を表す。限定するものではなく、例として、そのようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、拡張ISA(EISA:Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカル・バス、PCI(Peripheral Component Interconnect)バス、PCI Express(PCIe:Peripheral Component Interconnect Express)およびAMBA(Advanced Microcontroller Bus Architecture)を含む。
【0060】
コンピュータ・システム/サーバ12は、様々なコンピュータ・システム可読媒体を典型的に含む。そのようなメディアは、コンピュータ・システム/サーバ12によってアクセス可能な任意の利用可能なメディアであり得、揮発性メディアと不揮発性メディア、取り外し可能なメディアと取り外し不可能なメディアの両方を含む。
【0061】
システム・メモリ28は、RAM(random access memory)30またはキャッシュメモリ32あるいはその両方などの揮発性メモリの形態のコンピュータ・システム可読媒体を含み得る。コンピュータ・システム/サーバ12は、他の取り外し可能な/取り外し不可能な、揮発性の/不揮発性のコンピュータ・システム記憶媒体をさらに含み得る。例示に過ぎないが、ストレージ・システム34は、取り外し不可能な不揮発性の磁気媒体(図示せず、典型的には「ハードドライブ」と呼ばれる)からの読み取りおよび磁気媒体への書き込みのために用意され得る。また、図示しないが、着脱可能な不揮発性の磁気ディスク(例えば、「フロッピー(R)ディスク(R)」)からの読み出しおよびこれへの書き込みをする磁気ディスク・ドライブ、ならびにCD-ROM、DVD-ROMまたは他の光学媒体などの着脱可能な不揮発性の光学ディスクからの読み出しおよびこれへの書き込みをする光学ディスク・ドライブが与えられ得る。そのような場合、各々は、1つまたは複数のデータ・メディア・インターフェースによって、バス18に接続され得る。以下にさらに示され、説明されるように、メモリ28は、本開示の実施形態の機能を実行するように構成されたプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含み得る。
【0062】
プログラム・モジュール42のセット(少なくとも1つ)を有するプログラム/ユーティリティ40は、例として、限定ではなく、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、メモリ28に記憶され得る。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データの各々またはそれらの何らかの組合せは、ネットワーク環境の実装を含み得る。プログラム・モジュール42は、一般に、本明細書に記載した実施形態の機能または方法あるいはその両方を実行する。
【0063】
コンピュータ・システム/サーバ12はまた、キーボード、ポインティング・デバイス、ディスプレイ24などの1つもしくは複数の外部デバイス14;ユーザがコンピュータ・システム/サーバ12と対話することを可能にする1つもしくは複数のデバイス;および/またはコンピュータ・システム/サーバ12が1つもしくは複数の他のコンピュータ・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)と通信し得る。このような通信は、入出力(I/O)インターフェース22を介して行われ得る。その上、コンピュータ・システム/サーバ12は、ネットワーク・アダプタ20を介して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、または公衆ネットワーク(例えば、インターネット)、あるいはその組合せなど、1つまたは複数のネットワークと通信し得る。示すように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他の構成要素と通信を行う。図示しないが、他のハードウェア構成要素またはソフトウェア構成要素あるいはその両方は、コンピュータ・システム/サーバ12と組み合わせて使用され得ることを理解されたい。例は、マイクロコード、デバイス・ドライバ、冗長化処理装置、外部ディスク・ドライブ・アレイ、RAID(Redundant Arrays of Inexpensive Disk)システム、テープ・ドライブ、データ・アーカイブ・ストレージ・システムなどを含むが、これらに限定されない。
【0064】
本開示は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せとして具現化され得る。コンピュータ・プログラム製品は、本開示の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または媒体)を含み得る。
【0065】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持し、記憶することができる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、携帯用コンピュータ・ディスケット(R)、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM(erasable programmable read-only memory)またはフラッシュメモリ(R))、静的ランダム・アクセス・メモリ(SRAM:static random access memory)、携帯用コンパクトディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD(R))、メモリースティック(R)、フロッピー(R)ディスク(R)、パンチカードまたは溝内隆起構造などそこに命令が記録されている機械的に符号化されたデバイス、およびこれらの任意の適切な組合せを含む。本明細書で使用するコンピュータ可読記憶媒体は、それ自体が、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を介して伝送される電気信号などの一過性の信号であると解釈されるべきではない。
【0066】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、またはネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークおよび/もしくは無線ネットワークを介して、外部コンピュータもしくは外部ストレージ・デバイスにダウンロードされ得る。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはその組合せを備え得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【0067】
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械語命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語および「C」プログラミング言語、もしくは同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組合せで書かれた、ソースコードもしくはオブジェクトコードのいずれでもあり得る。コンピュータ可読プログラム命令は、全体的にユーザのコンピュータ上で、一部をユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、一部をユーザのコンピュータ上かつ一部をリモート・コンピュータ上で、または全体的にリモート・コンピュータもしくはサーバ上で実行され得る。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され得、または接続は外部のコンピュータに(例えば、インターネット・サービス・プロバイダを使用してインターネット経由で)行われ得る。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路は、本開示の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をカスタマイズすることによって、コンピュータ可読プログラム命令を実行し得る。
【0068】
本開示の態様は、本開示の実施形態による方法、機器(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実施され得ることが理解されるであろう。
【0069】
このようなコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理機器のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するための手段を作り出すべく、汎用コンピュータ、特殊目的コンピュータ、または機械を製造するための他のプログラム可能なデータ処理機器のプロセッサに供給され得る。このようなコンピュータ可読プログラム命令は、その中に記憶された命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含む製品を含むように、コンピュータ可読記憶媒体にも記憶され得、コンピュータ、プログラム可能なデータ処理機器、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示することができる。
【0070】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能な機器、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定された機能/動作を実施するように、コンピュータ実装プロセスを生成するべく、コンピュータ、他のプログラム可能なデータ処理機器、または他のデバイス上にロードされ、コンピュータ、他のプログラム可能な機器、または他のデバイス上で一連の動作ステップを実行させ得る。
【0071】
図中のフローチャートおよびブロック図は、本開示の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性、および動作を示す。この点で、フローチャートまたはブロック図の各ブロックは、命令のモジュール、セグメント、または部分を表し得、これは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含んでいる。いくつかの代替的な実装では、ブロックに記された機能は、図に記された順序とは無関係に起こり得る。例えば、連続して表示される2つのブロックは、実際には影響し合う機能によって、実質的に同時に実行される場合もあれば、または逆の順序で実行される場合もある。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、特定の機能もしくは動作を実行し、または特別な目的のハードウェアとコンピュータ命令との組合せを実行する特別な目的のハードウェア・ベースのシステムによって実装され得ることに留意されたい。
【0072】
本開示の様々な実施形態の説明は、例示の目的で提示されたが、網羅的であることまたは開示された実施形態に限定されることを意図していない。説明した実施形態の範囲から逸脱することなく、当業者には多くの改変および変形が明らかになるであろう。本明細書で使用した用語は、実施形態の原理、市場で見出される技術に対する実際的応用もしくは技術的改善を最もよく説明するために、または当業者が本明細書に開示された実施形態を理解することが可能となるように選択されたものである。
図1
図2
図3
図4
図5A
図5B
図5C
図5D
図5E
図6A
図6B
図6C
図6D
図6E
図7A
図7B
図7C
図7D
図7E
図8
図9
【手続補正書】
【提出日】2023-07-21
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
複数のシナプス・アレイを備える人工ニューラル・ネットワーク・システムであって、
前記複数のシナプス・アレイの各々が、複数の順序付けられた入力ワイヤと、複数の順序付けられた出力ワイヤと、複数のシナプスとを備え、
前記複数のシナプスの各々が、前記複数の入力ワイヤのうちの1つと、前記複数の出力ワイヤのうちの1つとに動作可能に結合され、
前記複数のシナプスの各々が、重みを記憶するように構成された抵抗素子を備え、
前記複数のシナプス・アレイが、少なくとも1つの入力層と、少なくとも1つの隠れ層と、少なくとも1つの出力層とを含む複数の層に構成され、
前記少なくとも1つの隠れ層における前記複数のシナプス・アレイのうちの第1のシナプス・アレイが、フィード・フォワード動作中に前層から入力のアレイを受信し、記憶するように構成され、
前記少なくとも1つの隠れ層における前記複数のシナプス・アレイのうちの第2のシナプス・アレイが、前記フィード・フォワード動作中に、前記前層から前記入力のアレイを受信し、前記第2のシナプス・アレイの前記重みに基づいて、前記少なくとも1つの隠れ層からの出力を計算するように構成され、
記第1のシナプス・アレイが、バック・プロパゲーション動作中に、記憶された前記入力のアレイを前記第2のシナプス・アレイに提供するように構成され、
記第2のシナプス・アレイが、前記バック・プロパゲーション動作中に補正値を受信し、前記補正値と記憶された前記入力のアレイとに基づいて、前記第2のシナプス・アレイの重みを更新するように構成される、
人工ニューラル・ネットワーク・システム
【請求項2】
前記フィード・フォワード動作がパイプライン処理される、請求項1に記載の人工ニューラル・ネットワーク・システム
【請求項3】
前記バック・プロパゲーション動作がパイプライン処理される、請求項1に記載の人工ニューラル・ネットワーク・システム
【請求項4】
前記フィード・フォワード動作および前記バック・プロパゲーション動作が同時に行われる、請求項1に記載の人工ニューラル・ネットワーク・システム
【請求項5】
前記シナプス・アレイのうちの前記第1のシナプス・アレイが、列ごとに1つの入力のアレイを記憶するように構成される、請求項1に記載の人工ニューラル・ネットワーク・システム
【請求項6】
前記複数のシナプスの各々がメモリ素子を備える、請求項1に記載の人工ニューラル・ネットワーク・システム
【請求項7】
前記複数のシナプスの各々がNVMまたは3T1Cを備える、請求項1に記載の人工ニューラル・ネットワーク・システム
【請求項8】
第1のシナプス・アレイと第2のシナプス・アレイとを備えるデバイスであって、
前記第1のシナプス・アレイおよび前記第2のシナプス・アレイの各々が、複数の順序付けられた入力ワイヤと、複数の順序付けられた出力ワイヤと、複数のシナプスとを備え、
前記複数のシナプスの各々が、前記複数の入力ワイヤのうちの1つと、前記複数の出力ワイヤのうちの1つとに動作可能に結合され、
前記複数のシナプスの各々が、重みを記憶するように構成された抵抗素子を備え、
前記第1のシナプス・アレイが、フィード・フォワード動作中に、人工ニューラル・ネットワークの前層から入力のアレイを受信し、記憶するように構成され、
前記第2のシナプス・アレイが、前記フィード・フォワード動作中に、前記前層から前記入力のアレイを受信し、前記第2のシナプス・アレイの前記重みに基づいて出力を計算するように構成され、
前記第1のシナプス・アレイが、バック・プロパゲーション動作中に、前記第2のシナプス・アレイに前記記憶された入力のアレイを提供するように構成され、
前記第2のシナプス・アレイが、前記バック・プロパゲーション動作中に、補正値を受信し、前記補正値と前記記憶された入力のアレイとに基づいて、前記第2のシナプス・アレイの重みを更新するよう構成される、デバイス。
【請求項9】
前記フィード・フォワード動作がパイプライン処理される、請求項8に記載のデバイス。
【請求項10】
前記バック・プロパゲーション動作がパイプライン処理される、請求項8に記載のデバイス。
【請求項11】
前記フィード・フォワード動作と前記バック・プロパゲーション動作とが同時に実行される、請求項8に記載のデバイス。
【請求項12】
前記第1のシナプス・アレイが、列ごとに1つの入力のアレイを記憶するように構成される、請求項8に記載のデバイス。
【請求項13】
前記複数のシナプスの各々がメモリ素子を備える、請求項8に記載のデバイス。
【請求項14】
前記複数のシナプスの各々がNVMまたは3T1Cを備える、請求項に記載のデバイス
【請求項15】
フィード・フォワード動作中に、前層から、隠れ層の第1のシナプス・アレイによって入力のアレイを受信することと、
前記フィード・フォワード動作中に、前記第1のシナプス・アレイによって前記入力のアレイを記憶することと、
前記フィード・フォワード動作中に、前記隠れ層の第2のシナプス・アレイによって前記入力のアレイを受信することと、
前記フィード・フォワード動作中に、前記第2のシナプス・アレイによって、前記第2のシナプス・アレイの重みに基づいて、前記入力のアレイから出力を計算することと、
バック・プロパゲーション動作中に、前記第1のシナプス・アレイから前記第2のシナプス・アレイに前記記憶された入力のアレイを提供することと、
前記バック・プロパゲーション動作中に、前記第2のシナプス・アレイによって補正値を受信することと、
前記補正値および前記記憶された入力のアレイに基づいて、前記第2のシナプス・アレイの前記重みを更新することと
を含む方法。
【請求項16】
前記フィード・フォワード動作がパイプライン処理される、請求項15に記載の方法。
【請求項17】
前記バック・プロパゲーション動作がパイプライン処理される、請求項15に記載の方法。
【請求項18】
前記フィード・フォワード動作と前記バック・プロパゲーション動作とが同時に実行される、請求項15に記載の方法。
【請求項19】
前記第1のシナプス・アレイが、列ごとに1つの入力のアレイを記憶するように構成される、請求項15に記載の方法。
【請求項20】
コンピュータに、請求項15ないし19のいずれか一項に記載の方法の各ステップを実行させる、コンピュータ・プログラム。
【国際調査報告】