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

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

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

特許7663295クロスバーアレイを更新するためのパルス生成
<>
  • 特許-クロスバーアレイを更新するためのパルス生成 図1
  • 特許-クロスバーアレイを更新するためのパルス生成 図2
  • 特許-クロスバーアレイを更新するためのパルス生成 図3
  • 特許-クロスバーアレイを更新するためのパルス生成 図4
  • 特許-クロスバーアレイを更新するためのパルス生成 図5
  • 特許-クロスバーアレイを更新するためのパルス生成 図6
  • 特許-クロスバーアレイを更新するためのパルス生成 図7
  • 特許-クロスバーアレイを更新するためのパルス生成 図8
  • 特許-クロスバーアレイを更新するためのパルス生成 図9
  • 特許-クロスバーアレイを更新するためのパルス生成 図10
  • 特許-クロスバーアレイを更新するためのパルス生成 図11
  • 特許-クロスバーアレイを更新するためのパルス生成 図12
  • 特許-クロスバーアレイを更新するためのパルス生成 図13
  • 特許-クロスバーアレイを更新するためのパルス生成 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-04-08
(45)【発行日】2025-04-16
(54)【発明の名称】クロスバーアレイを更新するためのパルス生成
(51)【国際特許分類】
   G06G 7/60 20060101AFI20250409BHJP
   G06N 3/065 20230101ALI20250409BHJP
   G06G 7/16 20060101ALI20250409BHJP
【FI】
G06G7/60
G06N3/065
G06G7/16 510
【請求項の数】 24
(21)【出願番号】P 2023502838
(86)(22)【出願日】2021-06-29
(65)【公表番号】
(43)【公表日】2023-08-04
(86)【国際出願番号】 EP2021067834
(87)【国際公開番号】W WO2022012917
(87)【国際公開日】2022-01-20
【審査請求日】2023-11-14
(31)【優先権主張番号】16/929,168
(32)【優先日】2020-07-15
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】キム、セヨン
(72)【発明者】
【氏名】オネン、オグザン
(72)【発明者】
【氏名】ゴクメン、タイフン
(72)【発明者】
【氏名】ラッシュ、マルテ
【審査官】小林 義晴
(56)【参考文献】
【文献】米国特許出願公開第2018/0300627(US,A1)
【文献】米国特許出願公開第2019/0318239(US,A1)
【文献】特開2019-003547(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06G 7/60
G06N 3/065
G06G 7/16
(57)【特許請求の範囲】
【請求項1】
アナログクロスバーアレイを更新するためのパルス生成のコンピュータ実装方法であって、
プロセッサによって、クロスバーアレイのためのパルス生成を使用して表す行列乗算に使用される第1の数を受信する段階と、
前記プロセッサによって、前記第1の数を表すビット長を受信する段階であって、前記ビット長は前記第1の数が取り得る値の数の二乗よりも小さい段階と、
前記プロセッサによって、前記第1の数を表す前記ビット長を有し、前記第1の数に対応する第1のパルスシーケンスにおけるパルス位置を決定的に選択する段階と、
前記プロセッサによって、前記第1のパルスシーケンスにおける前記選択されたパルス位置および第2のパルスシーケンスにおけるパルス位置のパルス同時計数を使用して計算を実行する段階であって、前記第2のパルスシーケンスは前記クロスバーアレイの出力の誤差に基づく第2の数に対応するパルスシーケンスである段階と、
前記プロセッサによって、前記計算を使用して、前記パルス同時計数に対応して前記クロスバーアレイの重みを更新する段階と
を備える、コンピュータ実装方法。
【請求項2】
前記計算が、前記第1の数および前記第2の数を用いて外積演算を実行することを含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記第1のパルスシーケンスにおける前記選択されたパルス位置は、前記ビット長に少なくとも部分的に基づいている、請求項1または2に記載のコンピュータ実装方法。
【請求項4】
前記ビット長が、前記クロスバーアレイの1つまたは複数のメモリスタのデバイスの重みを表す重み行列において、前記第1の数が取り得る値の数に等しい、請求項1から3のいずれか一項に記載のコンピュータ実装方法。
【請求項5】
ヒートマップを生成する段階をさらに備え、前記生成されたヒートマップが、前記第1のパルスシーケンスと前記第2のパルスシーケンスとの間の前記パルス同時計数に少なくとも部分的に対応して作成され、前記第1のパルスシーケンスまたは前記第2のパルスシーケンスのうちの少なくとも1つが前記選択されたパルス位置に基づく、請求項1から4のいずれか一項に記載のコンピュータ実装方法。
【請求項6】
前記選択されたパルス位置を使用して、真の乗算マップを前記生成されたヒートマップと比較する段階をさらに備え、前記真の乗算マップが、各要素に対して要素ごとの乗算を実行する、請求項に記載のコンピュータ実装方法。
【請求項7】
前記真の乗算マップと前記生成されたヒートマップとの間の誤差を決定する段階と、
前記真の乗算マップと前記生成されたヒートマップとの間の前記誤差を表示する段階と
をさらに備える、請求項に記載のコンピュータ実装方法。
【請求項8】
前記クロスバーアレイを更新する段階が、前記計算に少なくとも部分的に基づいて、前記クロスバーアレイの1つまたは複数のメモリスタのデバイスのコンダクタンス値を更新する段階を含む、請求項1からのいずれか一項に記載のコンピュータ実装方法。
【請求項9】
クロスバーアレイを更新するためにパルス生成を実装するためのシステムであって、
1つまたは複数のメモリスタのデバイスを含むクロスバーアレイと、
前記クロスバーアレイのためのパルス生成を使用して表す行列乗算に使用される第1の数を受信することと、
前記第1の数を表すビット長を受信することであって、前記ビット長は前記第1の数が取り得る値の数の二乗よりも小さい、受信することと、
前記第1の数を表す前記ビット長を有し、前記第1の数に対応する第1のパルスシーケンスにおけるパルス位置を決定的に選択することと、
前記第1のパルスシーケンスにおける前記選択されたパルス位置および第2のパルスシーケンスにおけるパルス位置のパルス同時計数を使用して計算を実行することであって、前記第2のパルスシーケンスは、前記クロスバーアレイの出力の誤差に基づく第2の数に対応するパルスシーケンスである、計算を実行することと、
前記計算を使用して、前記パルス同時計数に対応して前記クロスバーアレイを更新することであって、前記クロスバーアレイを前記更新することにより、前記1つまたは複数のメモリスタのデバイスの重みが変更される、更新することと
を行うように構成されたプロセッサと
を備える、システム。
【請求項10】
前記計算が、前記第1の数および前記第2の数を用いて外積演算を実行することを含む、請求項に記載のシステム。
【請求項11】
前記第1のパルスシーケンスにおける前記選択されたパルス位置は、前記ビット長に少なくとも部分的に基づいている、請求項または10に記載のシステム。
【請求項12】
前記ビット長が、前記クロスバーアレイの前記1つまたは複数のメモリスタのデバイスの重みを表す重み行列において、前記第1の数が取り得る値の数に等しい、請求項から11のいずれか一項に記載のシステム。
【請求項13】
前記計算が、ニューラルネットワークの前記第1のパルスシーケンスおよび前記第2のパルスシーケンスの外積を決定することを含む、請求項から12のいずれか一項に記載のシステム。
【請求項14】
前記プロセッサが、ヒートマップを生成するようにさらに構成され、前記生成されたヒートマップが、前記第1のパルスシーケンスと前記第2のパルスシーケンスとの間のパルス同時計数に少なくとも部分的に対応して作成され、前記第1のパルスシーケンスまたは前記第2のパルスシーケンスのうちの少なくとも1つが前記選択されたパルス位置に基づく、請求項から13のいずれか一項に記載のシステム。
【請求項15】
前記プロセッサが、前記選択されたパルス位置を使用して、真の乗算マップを前記生成されたヒートマップと比較するようにさらに構成され、前記真の乗算マップが、各要素に対して要素ごとの乗算を実行する、請求項14に記載のシステム。
【請求項16】
前記プロセッサが、
前記真の乗算マップと前記生成されたヒートマップとの間の誤差を決定することと、
前記真の乗算マップと前記生成されたヒートマップとの間の前記誤差を表示することと
を行うようにさらに構成されている、請求項15に記載のシステム。
【請求項17】
前記クロスバーアレイを更新することが、前記計算に少なくとも部分的に基づいて、前記クロスバーアレイの1つまたは複数のメモリスタのデバイスのコンダクタンス値を更新することを含む、請求項から16のいずれか一項に記載のシステム。
【請求項18】
アナログクロスバーアレイを更新するためのパルス生成のためのコンピュータプログラムであって、プロセッサに、
クロスバーアレイのためのパルス生成を使用して表す行列乗算に使用される第1の数を受信する手順と、
前記第1の数を表すビット長を受信する手順であって、前記ビット長は前記第1の数が取り得る値の数の二乗よりも小さい手順と、
前記第1の数を表す前記ビット長を有し、前記第1の数に対応する第1のパルスシーケンスにおけるパルス位置を決定的に選択する手順と、
前記第1のパルスシーケンスにおける前記選択されたパルス位置および第2のパルスシーケンスにおけるパルス位置のパルス同時計数を使用して計算を実行する手順であって、前記第2のパルスシーケンスは、前記クロスバーアレイの出力の誤差に基づく第2の数に対応するパルスシーケンスである、計算を実行する手順と、
前記計算を使用して、前記パルス同時計数に対応して前記クロスバーアレイを更新する手順であって、前記クロスバーアレイを前記更新する手順が、前記計算に少なくとも部分的に基づいて前記クロスバーアレイの1つまたは複数のメモリスタのデバイスのコンダクタンス値を更新する手順を含む、更新する手順と
を実行させるための、コンピュータプログラム。
【請求項19】
前記計算が、前記第1の数および前記第2の数を用いて外積演算を実行することを含む、請求項18に記載のコンピュータプログラム。
【請求項20】
前記ビット長が前記クロスバーアレイの前記1つまたは複数のメモリスタのデバイスの重みを表す重み行列において、前記第1の数が取り得る値の数に等しい、請求項18または19に記載のコンピュータプログラム。
【請求項21】
前記プロセッサに、ニューラルネットワークの前記第1のパルスシーケンスおよび前記第2のパルスシーケンスの外積を決定させる手順をさらに実行させる、請求項18から20のいずれか一項に記載のコンピュータプログラム。
【請求項22】
前記プロセッサに、ヒートマップを生成する手順をさらに実行させ、前記生成されたヒートマップが、前記第1のパルスシーケンスと前記第2のパルスシーケンスとの間のパルス同時計数に少なくとも部分的に対応して作成され、前記第1のパルスシーケンスまたは前記第2のパルスシーケンスのうちの少なくとも1つが前記選択されたパルス位置に基づく、請求項18から21のいずれか一項に記載のコンピュータプログラム。
【請求項23】
前記プロセッサに、前記選択されたパルス位置を使用して、真の乗算マップを前記生成されたヒートマップと比較させる手順をさらに実行させ、前記真の乗算マップが、各要素に対して要素ごとの乗算を実行する、請求項22に記載のコンピュータプログラム。
【請求項24】
前記プロセッサに、
前記真の乗算マップと前記生成されたヒートマップとの間の誤差を決定する手順と、
前記真の乗算マップと前記生成されたヒートマップとの間の前記誤差を表示する手順と
をさらに実行させる、請求項23に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、ニューラルネットワークを実装するクロスバーアレイに関し、より具体的には、アナログクロスバーアレイを更新するためにコンパクトな固定ビット長の決定論的パルス生成を使用してニューラルネットワークを訓練することに関する。
【背景技術】
【0002】
ニューロモーフィック(neuromorphic)およびシナプトロニック(synaptronic)システムとしても知られる人工ニューラルネットワーク(ANN)は、電子システムが、人間の脳など、生体神経系のものと類似した方法で本質的に機能することを許容する計算システムである。この詳細な説明では、ANNへのいかなる言及も、パルスニューラルネットワーク(PNN)を含むがこれに限定されない、生物学的ニューラルネットワークをモデル化する広範囲のコンピュータおよび電子システムを包含するように、最も広い意味で使用される。ANNのいくつかの実装形態は、一般に、0および1を操作する従来のデジタルモデルを利用しない。代わりに、ANNのいくつかの実装形態は、生体の脳のニューロンと機能的におよそ同等である処理要素間の接続を生み出す。
【0003】
ANNは、多くの相互接続を含む多くの単純なプロセッサを有する比較的大きい並列計算システムとして実装されることが多い。ANN(またはPNN)を使用して生物学的な神経系をモデル化することは、生体機能のより良好な理解に寄与し得る。多くのANNモデルが、人間の脳において使用されると考えられている何らかの「組織的」原理を使用することを試みている。現代のコンピュータのハードウェア技術(例えば、VLSIおよび光学)は、そのようなモデル化を実行可能にしてきた。ANNは、神経生理学、認知科学/心理学、物理学(統計力学)、制御理論、コンピュータサイエンス、人工知能、統計/数学、パターン認識、コンピュータビジョン、並列処理、およびハードウェア(例えば、デジタル/アナログ/VLSI/光学)を含む様々な領域からの知識を組み込む。
【0004】
現代のANNは、人工ニューロン(「ノード」としても知られる)のネットワークを含む。これらのノードは互いに接続され、それらの互いに対する接続の強度には値が割り当てられる。例えば、接続は、抑制(抑制の最大値は-1.0である)または励起(励起の最大値は+1.0である)を呈するものとして識別され得る。接続のマグニチュード値が高い場合、これは、強い接続を示す。各ノードの設計内には、伝達関数も備えられている。典型的なANNには3つのタイプのニューロンがあり、すなわち、入力ノード、隠れノード、および出力ノードである。
【0005】
入力ノードは、数値的に表現できる情報を取り込む。情報は活性化値として提示され、各ノードには数値が与えられ、より大きいマグニチュードを有する数値がより大きい活性化を引き起こす。この情報は、次に、ネットワークを通じて伝達される。接続強度(重み)、抑制(または励起)、および伝達関数に基づいて、活性化値がノードからノードへと伝達される。各ノードは、それが受信した活性化値を合計する。各ノードは、次に、その伝達関数に基づいて値を修正する。活性化は、出力ノードに到達するまで、入力ノードおよび隠れ層を通って流れる。出力ノードは、外部に対して意味ある方式で入力を反映する。
【0006】
多くのタイプのニューラルネットワークが存在するが、2つの最も広範なカテゴリがフィードフォワードおよびフィードバックネットワークである。フィードフォワードネットワークは、入力層、出力層、および隠れ層を有する非再帰型ネットワークである。信号は、1方向にのみ伝わることができる。入力データは、計算を実行する処理要素の層に伝達される。各処理要素は、その入力の加重和に基づいて計算を行う。新たに計算された値は、次に、次の層に与えられる新たな入力値になる。このプロセスは、それが全ての層を通り、出力が決定されるまで継続される。閾値伝達関数は、出力層におけるニューロンの出力を定量化するのに使用される場合がある。
【0007】
フィードバックネットワークはフィードバック経路を含み、これは、それらの信号がループを使用して両方向に伝わることができることを意味する。ニューロン間の全ての可能な接続が許容される。このタイプのネットワークではループが存在するため、ある操作の下では、平衡状態に到達するまで連続的に変化する非線形力学系になり得る。フィードバックネットワークは、連想メモリおよび最適化問題において使用されることが多く、ネットワークは、相互接続要因の最適な配置を見つける。
【0008】
ANNにおいて、時間エンコーダまたはスパイク生成器として一般に知られるコンポーネントによってスパイク生成関数がモデル化され得る。そのため、以前に説明した生体神経系のより大きな知識を得る能力は、スパイクする時間エンコーダの回帰型ネットワークにおいて神経情報がどのように符号化されているかをモデル化するANNの開発に依存する。時間エンコーダは、受信した信号を非同期的に統合し、非同期パルス信号の後続のセットを生成することによって、情報のデジタルおよびアナログの符号化に対して代替案を提供する。時間エンコーダネットワークのある構成は、ネットワークから出力されたパルスまたはスパイクのセットからネットワークに入力された信号のセットについての情報の抽出を可能にする。
【発明の概要】
【0009】
本発明の実施形態は、クロスバーアレイを更新するためのパルス生成のコンピュータ実装方法を対象とする。コンピュータ実装方法の非限定的な例は、クロスバーアレイのためのパルス生成を使用して表す行列乗算に使用した数を受信する段階と、数を表すビット長を受信する段階とを含む。コンピュータ実装方法はまた、数を表す、ビット長を有するパルスシーケンスにおけるパルス位置を選択する段階と、パルスシーケンスにおける選択されたパルス位置を使用して計算を実行する段階と、計算を使用してクロスバーアレイを更新する段階とを含む。
【0010】
本発明の実施形態は、クロスバーアレイを更新するためにパルスを生成するためのシステムを対象とする。システムの非限定的な例は、1つまたは複数のメモリスタのデバイスを有するクロスバーアレイと、プロセッサとを含む。プロセッサは、クロスバーアレイのためのパルス生成を使用して表す行列乗算に使用した数を受信し、数を表すビット長を受信するように構成されている。プロセッサはまた、数を表す、ビット長を有するパルスシーケンスにおけるパルス位置を選択し、パルスシーケンスにおける選択されたパルス位置を使用して計算を実行し、計算を使用してクロスバーアレイを更新するように構成され、クロスバーアレイを更新することにより、1つまたは複数のメモリスタのデバイスの重みが変更される。
【0011】
発明の実施形態は、クロスバーアレイを更新するためのパルス生成のためのコンピュータプログラム製品を対象とし、コンピュータプログラム製品は、それにより具現化されるプログラム命令を有するコンピュータ可読記憶媒体を含む。プログラム命令は、プロセッサに方法を実行させるためにプロセッサによって実行可能である。方法の非限定的な例は、クロスバーアレイのためのパルス生成を使用して表す行列乗算に使用した数を受信する段階と、数を表すビット長を受信する段階とを含む。方法はまた、数を表す、ビット長を有するパルスシーケンスにおけるパルス位置を選択する段階と、パルスシーケンスにおける選択されたパルス位置を使用して計算を実行する段階と、計算を使用してクロスバーアレイを更新する段階とを含む。
【0012】
さらなる技術的特徴および利益が本発明の技術によって実現される。本発明の実施形態および態様が本明細書において詳細に説明され、特許請求される主題の一部とみなされる。より良好な理解のために、詳細な説明および図面を参照する。
【図面の簡単な説明】
【0013】
本明細書で説明される排他的権利の詳細は、明細書末尾の特許請求の範囲において具体的に示され、明確に特許請求される。本発明の実施形態の前述および他の特徴および利点は、添付の図面と併せて読まれると、以下の詳細な説明から明らかである。
【0014】
図1】本発明の実施形態を使用してモデル化された生物学的ニューロンの入力および出力接続の図を示す。
【0015】
図2】本発明の実施形態と関連して使用可能な、図1に示される生物学的ニューロンのモデルを示す。
【0016】
図3図2に示される生体神経モデルを組み込んだANNのモデルを示す。
【0017】
図4】本発明の実施形態と関連して使用可能な、知られている重み更新の方法論のブロック図を示す。
【0018】
図5】本発明の1つまたは複数の実施形態において使用可能な計算方法のブロック図を示す。
【0019】
図6】本発明の実施形態と関連して利用可能な、受動的な2端子メムリストラの動作を統制する既知の式を示す。
【0020】
図7】本発明の実施形態と関連して利用可能な、既知の2端子メモリスタのスイッチング特性と2端子RPUの非線形スイッチング特性との間のグラフによる比較を示す。
【0021】
図8】本発明の実施形態による2端子の非線性RPUデバイスのクロスバーアレイを、RPUの動作を示す電圧配列と共に示す。
【0022】
図9】本発明の1つまたは複数の実施形態による、ビットストリームにおいてビット位置を選択するためのアルゴリズムを示す。
【0023】
図10】本発明の1つまたは複数の実施形態によるグラフおよび乗算マップを示す。
【0024】
図11】本発明の1つまたは複数の実施形態によるグラフおよび乗算マップを示す。
【0025】
図12】本発明の1つまたは複数の実施形態によるグラフおよび乗算マップを示す。
【0026】
図13】本発明の1つまたは複数の実施形態による、クロスバーアレイを更新するためにパルスを生成するための方法のフローチャートを示す。
【0027】
図14】本明細書の教示の実践のための、処理システムの一例を示すブロック図を示す。
【0028】
本明細書で示される図は例示的である。本発明の趣旨から逸脱することなく、図面または本明細書において説明される動作に対する多くの変形が存在し得る。例えば、アクションを異なる順序において実行することもできるし、アクションは、追加、消去または修正することもできる。また、「結合される(coupled)」という用語およびその変形は、2つの要素間で通信経路を有することを説明し、要素同士の間に介在する要素/接続を伴わない、それらの間の直接接続を暗示しない。これらの変形の全てが本明細書の一部とみなされる。
【0029】
添付図面および本発明の実施形態の以下の詳細な説明において、図に示される様々な要素には2桁または3桁の参照符号が提供されている。わずかな例外を除き、各参照符号の最も左の桁は、その要素が最初に示されている図に対応する。
【発明を実施するための形態】
【0030】
本発明の様々な実施形態は、関連する図面を参照して本明細書で説明される。本発明の代替的な実施形態は、本発明の範囲から逸脱することなく考案することができる。以下の説明および図面における要素間で、様々な接続関係および位置関係(例えば、上方、下方、隣接など)が記載される。これらの接続もしくは位置関係またはその両方は、特に明記しない限り、直接的または間接的であり得て、本発明は、この点で限定することを意図するものではない。したがって、エンティティの結合は、直接的または間接的のいずれかの結合を指してよく、エンティティ間の位置関係は、直接的または間接的な位置関係であり得る。また、本明細書において説明される様々なタスクおよびプロセス段階は、追加の段階または本明細書において詳細に説明されていない機能を有するより包括的な手順またはプロセスに組み込むことができる。
【0031】
以下の定義および略語は、特許請求の範囲および明細書の解釈のために使用され得る。本明細書において使用されるとき、「comprises」、「comprising」、「includes」、「including」、「has」、「having」、「contains」、もしくは「containing」という用語、またはそれらの任意の他の変形は、非排他的包含を網羅することを意図している。例えば、要素のリストを含む組成物、混合物、プロセス、方法、物品、または装置は、必ずしもそれらの要素のみに限定されず、明示的に列挙されていない、またはそのような組成物、混合物、プロセス、方法、物品、または装置に固有の他の要素を含み得る。
【0032】
さらに、「例示的」という用語は、本明細書において、「一例、インスタンス、または例示として機能する」ことを意味するように使用される。「例示的」として本明細書に記載される本発明の任意の実施形態は、必ずしも、本発明の他の実施形態よりも好ましいまたは有利であるものとして解釈されるべきではない。「少なくとも1つ」および「1つまたは複数」という用語は、1より大きいまたはそれに等しい任意の整数、すなわち、1、2、3、4などを含むように理解され得る。「複数(a plurality)」という用語は、2より大きいまたはそれに等しい任意の整数、すなわち、2、3、4、5など含むと理解される。「接続」という用語は、間接的な「接続」および直接的な「接続」の両方を含み得る。
【0033】
「約」、「実質的に」、「およそ」という用語、およびそれらの変形は、本願の出願の時点で利用可能な機器に基づく特定の量の測定値に関連付けられる誤差の程度を含むことが意図される。例えば、「約」は、所与の値の±8%、または5%、または2%の範囲を含むことができる。
【0034】
簡潔さのために、本発明の態様の製造および使用に関する従来技術は、本明細書で詳細に説明される場合もあれば、されない場合もある。特に、コンピューティングシステム、および本明細書で説明される様々な技術的特徴を実装するための具体的なコンピュータプログラムの様々な態様は周知である。したがって、簡潔の目的で、多くの従来の実装の詳細は本明細書では簡潔にのみ言及されるか、あるいは、周知のシステムもしくはプロセスまたはその両方の詳細を提供することなく完全に省略される。
【0035】
ここで、本発明の態様により具体的に関連のある技術の概要に移ると、図1、2および3を参照して、典型的なANNがどのように動作するかの説明がここで提供される。本明細書において以前に述べたように、典型的なANNは、ニューロンと呼ばれる相互接続された約1000億個の細胞を含む人間の脳をモデル化する。図1は、示されるように構成および配置された、それを上流入力112、114、下流出力116、および下流の「他の」ニューロン118に接続する経路104、106、108、110を有する生物学的ニューロン102の簡易図を示す。各生物学的ニューロン102は、経路104、106、108、110を通じて電気インパルスを送信および受信する。これらの電気インパルスの性質およびそれらが生物学的ニューロン102においてどのように処理されるかが、脳の機能全体を主に担っている。生物学的ニューロン間の経路接続は強いかまたは弱い場合がある。所与のニューロンが入力インパルスを受信すると、ニューロンは、ニューロンの機能に応じて入力を処理し、機能の結果を、下流出力もしくは下流の「他の」ニューロンまたはその組み合わせに送信する。
【0036】
生物学的ニューロン102は、図2において、図2に示される式によって示される数学関数f(x)を有するノード202としてモデル化される。ノード202は、入力212、214から電気信号を取り込み、各入力212、214をそのそれぞれの接続経路204、206の強度で乗算し、入力の合計を取り込み、合計を関数f(x)に通し、結果216を生成し、これが、最終出力もしくは別のノードへの入力、またはその両方となり得る。本件の詳細な説明において、アスタリスク(*)は、乗算を表すために使用される。弱い入力信号は、非常に小さな接続強度の数値で乗算されるため、関数に対する弱い入力信号の影響は非常に低い。同様に、強い入力信号はより高い接続強度の数値で乗算されるため、関数に対する強い入力信号の影響はより大きくなる。関数f(x)は設計選択であり、様々な関数が使用され得る。f(x)の典型的な設計選択は、双曲線正接関数であり、これは、前の合計の関数を取り込み、-1~+1の数値を出力する。
【0037】
図3は、加重方向グラフとして編成された、簡略化されたANNモデル300を示し、人工ニューロンは、ノード(例えば、302、308、316)であり、加重方向のエッジ(例えば、m1~m20)がノードを接続する。ANNモデル300は、ノード302、304、306が入力層ノードであり、ノード308、310、312、314が隠れ層ノードであり、ノード316、318が出力層ノードであるように編成される。各ノードは、図3において、m1~m20の接続強度を有する方向矢印として示される接続経路によって、隣接する層における全てのノードと接続されている。1つの入力層、1つの隠れ層、および1つの出力層のみが示されているが、実践において、複数の入力層、隠れ層、および出力層が提供され得る。
【0038】
人間の脳の機能と同様に、ANN300の各入力層ノード302、304、306は、接続強度調整を有さず、かつノード総和を有さないソース(図示せず)から、入力x1、x2、x3を直接受信する。したがって、図3の最下部に列挙される式によって示されるように、y1=f(x1)、y2=f(x2)、およびy3=f(x3)となる。各隠れ層ノード308、310、312、314は、関連のある接続経路に関連付けられた接続強度によって、全ての入力層ノード302、304、306から入力を受信する。そうして、隠れ層ノード308において、y4=f(m1*y1+m5*y2+m9*y3)であり、*は乗算を表す。図3の最下部に示される関数y5~y9を定義する式によって示されるように、隠れ層ノード310、312、314および出力層ノード316、318に対して、同様の接続強度乗算およびノード総和が実行される。
【0039】
ANNモデル300は、データ記録を一度に1つずつ処理し、記録の初期の任意の分類を、記録の既知の実際の分類と比較することによってそれを「学習」する。「逆伝播」(すなわち、「誤差の逆方向伝播」)として知られる訓練技法を使用して、最初の記録の初期分類からの誤差がネットワークに戻され、2回目のネットワークの加重接続を修正するのに使用され、このフィードバック過程が多くの反復にわたって継続される。ANNの訓練フェーズにおいて、各記録の正確な分類は知られており、したがって、出力ノードには「正確な」値が割り当てられ得る。例えば、正確なクラスに対応するノードに対しては「1」(または0.9)のノード値が割り当てられ、その他のノードに対しては「0」(または0.1)のノード値が割り当てられ得る。そのため、出力ノードに対するネットワークの計算値をこれらの「正確な」値と比較し、各ノードに対する誤差項(すなわち、「デルタ」ルール)を計算することが可能である。これらの誤差項は、次に、隠れ層における重みを調整するために使用され得、それにより、次の反復において、出力値は「正確な」値により近くなる。
【0040】
消費電力が低くなることの潜在性にもかかわらず、典型的には、ANNモデルにおけるかなりの数の調整可能なパラメータ(例えば、重み)を、訓練データのための入出力ペアと一致させるように修正するために訓練中に必要であるため、オフライン訓練の実行は、困難かつリソース負荷が高くなり得る。図4は、典型的な読み出し-処理-書き込みの重み更新動作の簡略化された図を示し、ここで、CPU/GPUコア(すなわち、シミュレーションされた「ニューロン」)は、メモリ(すなわち、シミュレーションされた「シナプス」)を読み出し、重みの更新処理動作を実行し、次に、更新された重みをメモリに戻して書き込む。したがって、省電力を優先するためにANNアーキテクチャのクロスポイントデバイスを簡略化することで、オフライン学習技法は通常、訓練速度および訓練効率が最適化されていないことを意味する。
【0041】
確率計算は、ランダムビットのストリームによって連続値を表す技法の集合であり、複雑な計算は、ストリームに対する単純なビット演算によって計算され得る。具体的には、第1のストリームにおける「1」の確率はpであり、第2のストリームにおける「1」の確率はqである、確率数値と呼ばれる2つのランダムかつ独立のビットストリームS1、S2がある場合(すなわち、ベルヌーイ過程)、2つのストリームの論理ANDは、図5に示されるように取ることができる。出力ストリームにおける「1」の確率はpqである。十分な出力ビットを観測し、「1」の頻度を測定することによって、任意の精度でpqを推定することが可能である。少数の論理ゲート/トランジスタで実装され得る「乗算および積和」の演算の設計により、確率計算は、ニューラルネットワークのためのハードウェア設計において使用されることが多い。
【0042】
しかしながら、いくつかの確率的技術において、計算に必要な重みは、外部位置からシストリックアレイに供給され、重みに対する更新はアレイによって実行されない。これは、ニューラルネットワーク訓練中に高く使用されるベクトル-行列乗算または行列-行列乗算の演算の加速のみに対処する。しかしながら、重みは外部のメモリ位置に格納されているために、ローカルストレージを含まないシストリックアレイは並列して重み更新を実行することができない。重み更新の加速は、本明細書に記載される技法の実施形態によって提供される学習アルゴリズム全体を加速させるために必要である。
【0043】
また、ANNの訓練は、多くの計算が実行されることを必要とする。ノードの数が増加するにつれて、複雑性および計算の数が増加し、これにより、訓練速度および精度のさらなる非効率がもたらされ得る。重みを調整するために使用される外積を計算するためには、bパルスを送って外積を形成するのは非効率である(ここで、bはビットの数を表す)。
【0044】
ここで本発明の態様の概要に移ると、本発明の1つまたは複数の実施形態は、効率的なニューラルネットワーク訓練スキームを提供することによって、従来技術の上記欠点に対処する。本明細書に記載される本発明の実施形態の技法により、外積ベースの行列更新行列乗算において使用される各数値を表すのに使用されるパルスの数(またはビット長)が低減される。低減されたビット長により、外積ベースの行列更新の精度が決定される。しかしながら、この低減により、情報の損失がもたらされ得、これは最適化されなければならない。パルスの数の低減によりもたらされる外積ベースの更新内で実行される乗算における粒度は、ニューラルネットワークの精度に影響を及ぼし得る。したがって、パルスシーケンスにおけるパルスの選択された位置は非常に重要であり、値の真の乗算マップにおいて提示される輪郭を維持するために戦略的に選択されなければならない。
【0045】
数値を表すパルスシーケンスまたはビットストリームのビット選択は、ニューラルネットワークを訓練するために使用される外積にマッピングされる。本明細書に記載される本発明の実施形態の技術的効果および利益は、従来のニューラルネットワーク更新において実行されるビットごとの乗算の正確な表現を提供する。技術的効果および利益はまた、最小限の誤差を伴い、パルスシーケンスのb個のビットのみを使用する乗算を符号化する効率的な方法を提供する。乗算を最適化するために、本発明の態様によるアルゴリズムは、クロスバーアレイの1つまたは複数のメモリスタを更新するための外積を計算するのに十分な最小の表現を提供する。行列乗算に使用する値のためのパルス位置を生成するアルゴリズムを提供することにより、ANNアーキテクチャの訓練の速度および効率が加速され得、ANN全体の性能が向上し、広範なANNアプリケーションが可能となる。
【0046】
「メモリスタ」という用語は、受動的な2端子電気コンポーネントを説明するために使用され、デバイスの抵抗値は、以前にデバイスに印加された電圧の履歴に依存する。メモリスタの動作は、図6に示される式[1]および[2]によって決定され、ここで、iはデバイスを通る電流であり、vはデバイスに印加される電圧であり、gはデバイスのコンダクタンス値(これは抵抗の逆数である)であり、sは、コンダクタンス値を制御するデバイスの内部状態変数であり、fは、内部状態変数sの時間発展を示す関数である。
【0047】
本発明の実施形態によるクロスバーアレイのメモリスタ挙動は、図7に示される。理想的なメモリスタと、開示されるRPUを実装するのに使用され得る非理想的な非線形メモリスタとの相違点を示すために、図7は、理想的なメモリスタと、本発明の実施形態によるRPUとの電圧切り替え動作の比較を示すグラフである。グラフの縦軸は、特定の電圧におけるデバイスの状態変化を表し、グラフの横軸は、印加された電圧を表す。理想的なメモリスタ動作において、抵抗の変化は、デバイスに印加された電圧に対して線形的に比例している。そのため、メモリスタが何らかの電圧を受けるとすぐに、その抵抗状態が変化する。これは、状態の変化が低い電圧においても大幅なものであることを示す曲線702によって示されている。
【0048】
曲線704によって示されるような非線性RPUデバイスの場合、デバイスがその内部抵抗状態を変化させるために受ける必要がある十分に定義された設定電圧(VSET)が存在する。0.5VSETのバイアス電圧は内部抵抗状態を変化させない。本発明の実施形態において、RPUデバイスの非線形特性は、乗算をローカルに実行するために利用される。f1が小さい場合を想定して、デバイスは、たった0.5VSETが印加される場合にはその内部状態を変化させない。とりわけ、図7は、正電圧、およびRPUデバイスの抵抗状態に対する正の変化を示しているが、負電圧と負の抵抗変化との間にも同様の関係が存在する。
【0049】
ここで本発明の態様のより詳細な説明に移ると、図8は、本発明の実施形態による、前方行列乗算、後方行列乗算、および重み更新を実行する2次元(2D)のクロスバーアレイ800の図である。クロスバーアレイ800は、導電性行線802、804、806のセット、および、導電性行線802、804、806のセットと交差する導電性列線808、810、812、814のセットから形成されている。行線のセットと列線のセットとの共通部分はRPUによって分離されており、これは、図8において、σ11、σ21、σ31、σ41、σ12、σ22、σ32、σ42、σ13、σ23、σ33、およびσ43としてそれぞれ示されるそれ自体の調整可能/更新可能な抵抗重みを各々有する抵抗素子として示されている。例示を容易にするために、図8において、1つのRPU820のみが参照符号でラベル付けされている。前方行列乗算において、RPUの導通状態(すなわち、格納された重み)は、RPUにわたって電圧を印加し、RPUを通過する電流を測定することによって読み出すことができる。
【0050】
入力電圧V1、V2、V3は、それぞれ、行線802、804、806に印加される。各列線808、810、812、814は、特定の列線に沿った各RPUによって生成された電流I1、I2、I3、I4を合計する。例えば、図8に示されるように、列線814によって生成された電流I4は、式I4=V1σ41+V2σ42+V3σ43による。そうして、アレイ800は、RPUに格納された値を、電圧V1、V2、V3によって定義される行線入力で乗算することによって前方行列乗算を計算する。後方行列乗算は非常に類似している。後方行列乗算において、列線808、810、812、814に電圧が印加され、次に、行線802、804、806から読み出される。以下により詳細に説明される重み更新について、列線および行線に対して同時に電圧が印加され、関連のあるRPUデバイスに格納されたコンダクタンス値836は全て並列で更新される。したがって、重み更新を実行するのに必要な乗算および加算演算は、アレイ800の各RPU820において、RPUデバイス自体、およびアレイ800の関連のある行線または列線を使用して、ローカルに実行される。そうして、本発明の実施形態によれば、アレイ800において読み出し-更新-書き込みサイクル(図4に示される)は必要とされない。
【0051】
図8の図で続けると、本発明の1つまたは複数の実施形態によれば、RPU820の正の重み更新方法の動作、および導電性行線806と導電性列線812との共通部分におけるその対応する重みσ33がここで提供される。RPU820の非線形特性は、以下に記載する計算を使用して、RPU820において乗算演算をローカルに実行するために使用される。より具体的には、開示される方法論は、RPU820およびビットストリーム830、832の非線形スイッチング特性を使用して、他の回路素子を必要とすることなくRPU820において乗算演算および必要な重み更新をローカルに実行する。更新発生器回路(図示せず)がクロスバーアレイ800の周辺に提供され、2Dクロスバーアレイ800の全てのRPUに並列で印加されるビットストリーム(例えば、830、832)の形態で必要な電圧パルスを生成するために周辺「トランスレータ」として使用される。
【0052】
図7の図を簡潔に参照すると、図8に示されるRPU820のfが非常に小さい(例えば、f=0)ことが想定され、これは、RPU820がたった0.5VSETが印加されるときにはその内部状態を変更しないことを意味する。行線806に適用される行電圧配列またはビットストリーム830は、ゼロの電圧または+0.5VSETの電圧を有する重み更新を表す電圧パルスのシーケンスとして示されている。列線814に適用される列電圧配列またはビットストリーム832は、0の電圧または-0.5VSETの電圧のいずれかを有する重み更新も表す電圧パルスのシーケンスとして示されている。図8の例において、4/8は行電圧配列830によって符号化され、6/8は列電圧配列832によって符号化されている。例示的な電圧配列830、832は、重み更新の正の抵抗変化段階を表す。正の重み更新が実行された後、それぞれの電圧の極性が逆であるシーケンスの別のセットを使用して、そのような補正を必要とする重みに対して負方向で重みを更新することができる。
【0053】
電圧配列834は、行電圧配列830と列電圧配列832との差からもたらされる、RPU820に印加される電圧である。電圧配列834は、0V、0.5VSET、およびVSETにおいて3つの電圧ステップを有することになる。しかしながら、RPU820の抵抗σ43は、VSETに達するデバイス電圧に対してのみ変更されるため、列線または行線のいずれかを通じて送信された単一パルスは、RPU820の抵抗状態を変化させるのに十分ではない。列線が0.5VSETの電圧を送信し、行線が-0.5VSETの電圧を送信すると、関連のあるRPUに印加される結果的なVSETパルスにより、デバイスの抵抗における増分変化が引き起こされることになる。したがって、RPU820に印加される電圧パルスは、RPU820においてビットごとのAND演算(例えば、図5に示されるような)をローカルに実行するために、RPU820の非線形スイッチング特性を利用する。したがって、RPUの格納された重みにおいて結果として生じる変化(例えば、σ43)は、クロスバーアレイ800の周辺にある更新発生器回路によって「変換」された、2つの数値の積(4/8*6/8=3/8)に比例する。
【0054】
本発明の1つまたは複数の実施形態によれば、パルス同時計数を用いて乗算を実行するためのアルゴリズム900が図9に示されている。特に、アルゴリズム900は、δ値のためのパルスシーケンスにおけるパルス位置を生成して、クロスバーアレイを更新するための重みを最適化する。アルゴリズム900において使用される変数には、行列wにおける異なるxおよびδの値の数である変数bが含まれ、compressionは圧縮因子であり、εは許容誤差であり、tは1からmin(b,b/compression)までのカウンタ変数である。bビット分解がbに等しい場合に、非圧縮セットが実現される。b未満の任意の値は、ビットがどのように表されているかの圧縮に対応する(情報損失があるため)。アルゴリズム900は、最小量のペナルティで圧縮を実行することを対象とする。
【0055】
重み更新は、乗算演算と類似している重み行列に対してベクトル-ベクトル外積(上で示されたような)を計算することによって実行される。計算の後、更新された計算を使用して、各処理コンポーネントにおいて差分重み更新が適用される。上で記載された方法論は、行列wのδ値のためのパルスシーケンスにおけるパルス位置を決定する。x値の数を表す第1のパルスシーケンスは、δ値の数を表す第2のパルスシーケンスで乗算される。δ値のためのパルス位置は、グラフ1004などのグラフにおいて表され得る(図10を参照してさらに説明する)。アルゴリズム900からのパルスシーケンスを使用して、乗算が簡略化され、重み更新を実行するのに必要とされる計算の総数が低減される。
【0056】
図10は、本発明の1つまたは複数の実施形態による、クロスバーアレイを更新するためのパルス生成の例示的な実装のための一連のグラフおよびマップを示す。この非限定的な例において、b個のビンがあり、b個のビンは、重み行列wのxおよびδ値が各々、100の異なる値を取ることができることを示す。ここで、b個のビンは100であり、ビット長(BL)は100ビットである。従来、xおよびδの異なる数を表すために、要素ごとの乗算更新が各要素(xおよびδ)に対して実行されるため、ニューラルネットワークに使用される重みの更新を実行するためにbの数の計算が必要とされる。図9に記載される方法論を使用すると、圧縮により、bの数の計算が、要素ごとの乗算と同様の結果を呈するニューラルネットワークに対する重み更新を実行するためのbの数の計算に低減される。
【0057】
図10において、グラフ1002は、ニューラルネットワークに対する更新を実行するのに使用される重み行列におけるx値を表す。グラフ1002のx軸は、パルスシーケンスにおけるパルス位置またはビットストリームにおけるビット位置を表す。グラフ1002のy軸は、パルスシーケンスによって表されるx値の数を表す。パルスシーケンスまたはビットストリームは、一連の1および0を用いて表され得る。領域1020は1(ロジック高)を表し、領域1030は0(ロジック低)を表す。例えば、グラフ1002において、80のx値に対応する行は、x軸上に示される位置に提供されるパルスで表される数80のパルスシーケンスにおける位置を示す。別の例において、数0に対応するグラフ1002の最下部の行は、パルスシーケンスにおける100の0パルスで表され、1に対応する最上行は、パルスシーケンスにおける100の1によって表されている。
【0058】
x値およびδデルタ値にために生成されたパルスシーケンスはかなり異なる。したがって、δ値のパルスシーケンスは、x値のパルスシーケンスとは異なるように決定され、図9を参照して説明されるアルゴリズム900を使用して決定される。図10において、グラフ1004は、δ値のパルスシーケンスにおけるパルス位置を表す。グラフ1002と同様に、グラフ1004のx軸はパルス位置を表し、y軸は、重みの更新のための計算に使用されるδ値の数を表す。
【0059】
依然として図10を参照すると、乗算マップ1006は、重み行列wにおける全ての各要素(x,δ)に対して要素ごとの乗算が実行される真の乗算マップを表す。真の乗算マップ1006は、要素ごとの乗算に対応する輪郭を提供する。この例において、アナログクロスバーアレイの重みを更新するために行列乗算を実行するための各数を表すために、10,000パルス/ビットが使用され、ここで、x値は100ビットであり、δ値は100ビットである。ビットの数が増加するにつれて、計算の複雑性および数が素早く増加する。
【0060】
図10には、第1のパルスシーケンスによって表されるx値の数と第2のパルスシーケンスによって表されるδ値の数との外積を取ることによって生成されたヒートマップ1008も示され、ここで、δ値のための第2のパルスシーケンスは、図9に示されるアルゴリズムから決定された。ヒートマップ1008は、xおよびδの全ての各組み合わせの要素ごとの乗算に対する、第1のパルスシーケンスと第2のパルスシーケンスとの外積の近似を直感的に解析することを可能にする。
【0061】
ヒートマップ1008に示されるように、外積は、真の乗算が全ての各要素に対して実行されるときに、要素ごとの乗算の表現が、10,000ビットの代わりに、100ビットのみで表されることを可能にする。乗算マップ1006をヒートマップ1008と比較することにより、対応する値の間の差を取ることによって誤差を計算することができる。図10に示されるように、誤差マップ1010が計算され、表示され得る。ヒートマップ1008の輪郭は、乗算マップ1006に示される輪郭と類似しており、この類似性は、表現が、外積を使用するニューラルネットワークの効率的な更新および正確な分類を提供することを示す。
【0062】
真の乗算マップから表現の数が低減されると、ヒートマップ1006は、さらにより粒状になり、不正確な結果をもたらし得る。しかしながら、真の乗算マップを使用してニューラルネットワークに対する更新を実行したときのニューラルネットワークからの結果の完全性を維持するビット表現を取得するために、最適な低減が実行され得る。本発明の1つまたは複数の実施形態において、最適な低減は、BLがbに等しくなるように設定されたときに実現される。
【0063】
図11において、ビン100と、50のビット長を有する構成である。図10と同様に、グラフ1102は各x値のためのパルスシーケンスを表し、グラフ1104は、ニューラルネットワークの更新に使用される各δ値のためのパルスシーケンスを表す。図10と比較すると、BLは50であり、図10のそれより少ない。xおよびδのより多くの値がより短いBLを有する真の乗算マップ1006にマッピングされるため、表現の数が更新に使用されるBLを超えるにつれていくらかの粒度がヒートマップ1108にもたらされる。さらに、誤差マップ1110は、真の乗算マップ1006とヒートマップ1008との間のより大きい差を示している。
【0064】
図12を参照すると、重み行列wのxおよびδ値を表すのに使用されるBLは、図11と比較したときに、100のビンを維持しながら、10のBLへとさらに一層低減される。グラフ1202は各x値のためのパルスシーケンスを表し、グラフ1204は各δ値のためのパルスシーケンスを表す。真の乗算マップ1206をヒートマップ1208と比較することによって分かるように、ヒートマップ1208により高い粒度がもたらされ、これは、更新の精度の低減を示す。図12はさらに、各値を表すのに使用されるBLが減少するにつれて粒度が増加する一例を示す。
【0065】
図13は、本発明の1つまたは複数の実施形態による、クロスバーアレイを更新するためのパルス生成の方法1300のフローチャートを示す。方法1300は、図4に示されるもの、または図14を参照して説明されるプロセッサなどのプロセッサを使用して実行され得る。任意の他のコンピューティングデバイスが使用され得ることが理解されるべきである。方法1300は、ブロック1302で開始し、プロセッサによって、クロスバーアレイのためのパルス生成を使用して表す行列乗算に使用した数を受信することを提供するブロック1304に進む。ブロック1306は、数を表すビット長を受信する。プロセッサに提供されるビット長は、ニューラルネットワークから既知である。ブロック1308は、数を表すビット長を有するパルスシーケンスにおけるパルス位置を選択する。本発明の1つまたは複数の実施形態において、パルス位置は、図9に提供されるアルゴリズムを使用して決定される。δ値について、パルスシーケンスにおけるパルス位置が決定される。ブロック1310は、パルスシーケンスにおいて選択されたパルス位置を使用して計算を実行する。重み行列のδ値のための第1のパルスシーケンスおよびx値のための第2のパルスシーケンスについて外積が決定される。この結果は、増分の加算または減算のいずれかを行って、ニューラルネットワークを訓練するための重みを調整するために使用される。ブロック1312は、計算を使用してクロスバーアレイを更新する。本発明の1つまたは複数の実施形態において、結果は、クロスバーアレイにおける1つまたは複数のメモリスタのデバイスのコンダクタンスを調整するために使用される。方法1300はブロック1314で終了する。段階の異なる順番または追加の段階が方法1300に含まれてもよく、図13に示される段階によって限定することを意図するものではないことが理解されるべきである。
【0066】
図14を参照すると、本明細書に記載される教示による本発明の態様を実装するための処理システム1400が示されている。処理システムは、図4に示されるものなどのプロセッサ(CPU/GPUコア)において実装され得る。この実施形態において、システム1400は、1つまたは複数の中央処理装置(プロセッサ)1401a、1401b、1401cなど(まとめてまたは総称的にプロセッサ1401と称される)を有する。一実施形態において、各プロセッサ1401は、縮小命令セットコンピュータ(RISC)マイクロプロセッサを含み得る。プロセッサ1401は、システムバス1413を介してシステムメモリ1414および様々な他のコンポーネントに結合される。リードオンリメモリ(ROM)1402がシステムバス1413に結合され、システム1400の特定の基本機能を制御する基本入出力システム(BIOS)を含み得る。
【0067】
図14はさらに、システムバス1613に結合された入力/出力(I/O)アダプタ1407およびネットワークアダプタ1406を示す。I/Oアダプタ1407は、ハードディスク1403もしくはテープストレージドライブ1405またはその組み合わせ、または任意の他の同様のコンポーネントと通信するスモールコンピュータシステムインタフェース(SCSI)アダプタであり得る。I/Oアダプタ1407、ハードディスク1403、およびテープストレージデバイス1405は、本明細書においてマスストレージ1404とまとめて称される。処理システム1400上で実行するためのオペレーティングシステム1420は、マスストレージ1404に格納され得る。ネットワークアダプタ1406は、バス1413を外部ネットワーク1416に相互接続し、データ処理システム1400が他のそのようなシステムと通信することが可能になる。スクリーン(例えば、ディスプレイモニタ)1415は、グラフィックス重視のアプリケーションの性能を向上させるためのグラフィックスアダプタおよびビデオコントローラを含み得るディスプレイアダプタ1412によってシステムバス1413に接続されている。一実施形態において、アダプタ1407、1406および1412は、中間バスブリッジ(図示せず)を介してシステムバス1413に接続された1つまたは複数のI/Oバスに接続され得る。ハードディスクコントローラ、ネットワークアダプタ、およびグラフィックアダプタなどの周辺デバイスを接続するための好適なI/Oバスは通常、ペリフェラルコンポーネントインターコネクト(PCI)などの一般的なプロトコルを含む。追加の入力/出力デバイスは、ユーザインタフェースアダプタ1408およびディスプレイアダプタ1412を介してシステムバス1413に接続されるものとして示されている。キーボード1409、マウス1410、およびスピーカ1411は全て、例えば、複数のデバイスアダプタを単一の集積回路に統合したスーパーI/Oチップを含み得るユーザインタフェースアダプタ1408を介してバス1413と相互接続されている。
【0068】
例示的な実施形態において、処理システム1400は、グラフィックス処理ユニット1430を含む。グラフィックス処理ユニット1430は、ディスプレイに出力するように意図されたフレームバッファ内での画像の作成を加速するためにメモリを操作および変更するように設計された専用電子回路である。一般に、グラフィックス処理ユニット1430は、コンピュータグラフィックスおよび画像処理の操作において非常に効率的であり、大きなデータブロックの処理が並列で行われるアルゴリズムについて、汎用CPUよりも効果的にする高度に並列な構造を有する。
【0069】
そのため、図14のように構成されている場合、システム1400には、プロセッサ1401の形態の処理機能、システムメモリ1414およびマスストレージ1404を含むストレージ機能、キーボード1409およびマウス1410などの入力手段、ならびにスピーカ1411およびディスプレイ1415を含む出力機能が含まれる。一実施形態において、システムメモリ1414およびマスストレージ1404の一部は、図14において示されている様々なコンポーネントの機能を協働させるためにオペレーティングシステムを集合的に格納する。
【0070】
本明細書に記載される本発明の実施形態は、ニューラルネットワーク訓練のための乗算に使用される数の各々を表すビットストリーム内のビット位置を決定することによって、従来技術よりも向上している。また、本明細書に記載される技法の実施形態は、任意の重み更新を受信する前にニューラルネットワークの初期値を提供することにより、これらの方法論を使用したニューラルネットワークの訓練の加速を提供する。
【0071】
本発明は、任意の可能な技術詳細レベルで統合化されたシステム、方法、もしくはコンピュータプログラム製品、またはその組み合わせであり得る。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数のコンピュータ可読記憶媒体)を含み得る。
【0072】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるように命令を保持および格納することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、または前述したものの任意の好適な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、次のもの、すなわち、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピディスク、機械的にエンコードされたデバイス、例えば、パンチカードまたは命令を記録した溝内の隆起構造、および前述したものの任意の好適な組み合わせを含む。コンピュータ可読記憶媒体は、本明細書において使用される場合、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を通じて伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号などの一時的な信号それ自体とは解釈されるべきではない。
【0073】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされてもよく、あるいは、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、もしくは無線ネットワーク、またはその組み合わせを介して、外部コンピュータまたは外部ストレージデバイスにダウンロードされてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、もしくはエッジサーバ、またはその組み合わせを備え得る。各コンピューティング/処理デバイス内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【0074】
本発明の動作を実行するためのコンピュータ可読プログラム命令はアセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路に対する構成データ、または例えばSmalltalk(登録商標)、またはC++などのオブジェクト指向プログラミング言語、および例えば「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで書かれたソースコードもしくはオブジェクトコードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に実行されてもよいし、スタンドアロンソフトウェアパッケージとしてユーザのコンピュータ上で部分的に実行されてもよいし、部分的にユーザのコンピュータ上で、かつ、部分的にリモートコンピュータ上で実行されてもよいし、リモートコンピュータもしくはサーバ上で完全に実行されてもよい。後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続され得るか、または、接続は、(例えば、インターネットサービスプロバイダを使用してインターネットを通じて)外部コンピュータに行われ得る。いくつかの実施形態において、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズしてよい。
【0075】
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図もしくはブロック図またはその両方を参照して、説明されている。フローチャート図もしくはブロック図、またはその両方の各ブロック、ならびに、フローチャート図もしくはブロック図、またはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装することができることが理解されよう。
【0076】
これらのコンピュータ可読プログラム命令を汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供して機械を生成してよく、それにより、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャートもしくはブロック図、またはその両方の単数または複数のブロックで指定された機能/動作を実装する手段を作成するようになる。これらのコンピュータ可読プログラム命令はまた、命令が格納されているコンピュータ可読記憶媒体が、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックに指定される機能/作用の態様を実装するための命令を含む製造物品を備えるべく、コンピュータ、プログラマブルデータ処理装置、または他のデバイスあるいはその組み合わせに特定のやり方で機能するように指示することができるコンピュータ可読記憶媒体に格納されてもよい。
【0077】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブルデータ処理装置、または、他のデバイスにロードして、コンピュータ、他のプログラマブル装置、または、他のデバイス上で一連の動作段階を実行させることでコンピュータ実装プロセスを作ることもでき、これにより、コンピュータ、他のプログラマブル装置、または、他のデバイス上で実行される命令が、フローチャートもしくはブロック図の、またはこれらの両方の1つまたは複数のブロックで指定される機能/動作を実装するようになる。
【0078】
図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品の考えられる実装形態のアーキテクチャ、機能、および動作を示している。これに関して、フローチャートまたはブロック図における各ブロックは、指定される論理機能を実装する1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または部分を表し得る。いくつかの代替的な実装形態において、ブロックに記されている機能は、図面に記されている順序とは異なる順序で行われ得る。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行され得るか、または、関連する機能に応じてブロックが逆の順序で実行されることもあり得る。ブロック図もしくはフローチャート図、またはその両方の各ブロック、ならびにブロック図もしくはフローチャート図、またはその両方におけるブロックの組み合わせは、指定された機能もしくは動作を実行するか、または専用ハードウェアとコンピュータ命令との組み合わせを実行する専用ハードウェアベースのシステムによって実装することができることにも留意されたい。
【0079】
本発明の様々な実施形態の説明は、例示目的で提示されてきたが、包括的になること、または開示された実施形態に限定されることが意図されるものではない。説明された実施形態の範囲および趣旨から逸脱することなく、多くの修正および変形が、当業者には明らかであろう。本明細書において使用される専門用語は、実施形態の原理、市場で見られる技術の実用的な適用もしくはそれに対する技術的改善を最も良好に説明し、または、本明細書において説明される実施形態を他の当業者が理解することを可能にするように選択されている。
本明細書によれば、以下の各項目もまた開示される。
[項目1]
アナログクロスバーアレイを更新するためのパルス生成のコンピュータ実装方法であって、
プロセッサによって、クロスバーアレイのためのパルス生成を使用して表す行列乗算に使用した数を受信する段階と、
上記プロセッサによって、上記数を表すビット長を受信する段階と、
上記プロセッサによって、上記数を表す上記ビット長を有するパルスシーケンスにおけるパルス位置を選択する段階と、
上記プロセッサによって、上記パルスシーケンスにおける上記選択されたパルス位置を使用して計算を実行する段階と、
上記プロセッサによって、上記計算を使用して上記クロスバーアレイを更新する段階と
を備える、コンピュータ実装方法。
[項目2]
上記計算が、上記行列乗算において使用した上記数および上記行列乗算において使用した第2の数を用いて外積演算を実行することを含む、項目1に記載のコンピュータ実装方法。
[項目3]
上記パルスシーケンスにおける上記選択されたパルス位置は、上記ビット長に少なくとも部分的に基づいている、項目1または2に記載のコンピュータ実装方法。
[項目4]
上記ビット長が、重み行列の異なる要素の数に等しい、項目1から3のいずれか一項に記載のコンピュータ実装方法。
[項目5]
ヒートマップを生成する段階をさらに備え、上記生成されたヒートマップが、第1のパルスシーケンスと第2のパルスシーケンスとの間のパルス同時計数に少なくとも部分的に基づいており、上記第1のパルスシーケンスまたは上記第2のパルスシーケンスのうちの少なくとも1つが上記選択されたパルス位置を含む、項目1から4のいずれか一項に記載のコンピュータ実装方法。
[項目6]
上記少なくとも1つの第1のパルスシーケンスが上記数に対応し、上記第2のパルスシーケンスが第2の数に対応する、項目5に記載のコンピュータ実装方法。
[項目7]
上記選択されたパルス位置を使用して、真の乗算マップを上記生成されたヒートマップと比較する段階をさらに備え、上記真の乗算マップが、各要素に対して要素ごとの乗算を実行する、項目5または6に記載のコンピュータ実装方法。
[項目8]
上記真の乗算マップと上記生成されたヒートマップとの間の誤差を決定する段階と、
上記真の乗算マップと上記生成されたヒートマップとの間の上記誤差を表示する段階と
をさらに備える、項目7に記載のコンピュータ実装方法。
[項目9]
上記クロスバーアレイを更新する段階が、上記計算に少なくとも部分的に基づいて、上記クロスバーアレイの1つまたは複数のメモリスタのデバイスのコンダクタンス値を更新する段階を含む、項目1から8のいずれか一項に記載のコンピュータ実装方法。
[項目10]
クロスバーアレイを更新するためにパルス生成を実装するためのシステムであって、
1つまたは複数のメモリスタのデバイスを含むクロスバーアレイと、
上記クロスバーアレイのためのパルス生成を使用して表す行列乗算に使用した数を受信することと、
上記数を表すビット長を受信することと、
上記数を表す上記ビット長を有するパルスシーケンスにおけるパルス位置を選択することと、
上記パルスシーケンスにおける上記選択されたパルス位置を使用して計算を実行することと、
上記計算を使用して上記クロスバーアレイを更新することであって、上記クロスバーアレイを上記更新することにより、上記1つまたは複数のメモリスタのデバイスの重みが変更される、更新することと
を行うように構成されたプロセッサと
を備える、システム。
[項目11]
上記計算が、上記行列乗算において使用した上記数および上記行列乗算において使用した第2の数を用いて外積演算を実行することを含む、項目10に記載のシステム。
[項目12]
上記パルスシーケンスにおける上記選択されたパルス位置は、上記ビット長に少なくとも部分的に基づいている、項目10または11に記載のシステム。
[項目13]
上記ビット長が、重み行列の異なる要素の数に等しい、項目10から12のいずれか一項に記載のシステム。
[項目14]
上記計算が、ニューラルネットワークの第1のベクトルおよび第2のベクトルの外積を決定することを含む、項目10から13のいずれか一項に記載のシステム。
[項目15]
上記プロセッサが、ヒートマップを生成するようにさらに構成され、上記生成されたヒートマップが、第1のパルスシーケンスと第2のパルスシーケンスとの間のパルス同時計数に少なくとも部分的に基づいており、上記第1のパルスシーケンスまたは上記第2のパルスシーケンスのうちの少なくとも1つが上記選択されたパルス位置を含む、項目10から14のいずれか一項に記載のシステム。
[項目16]
上記プロセッサが、上記選択されたパルス位置を使用して、真の乗算マップを上記生成されたヒートマップと比較するようにさらに構成され、上記真の乗算マップが、各要素に対して要素ごとの乗算を実行する、項目15に記載のシステム。
[項目17]
上記プロセッサが、
上記真の乗算マップと上記生成されたヒートマップとの間の誤差を決定することと、
上記真の乗算マップと上記生成されたヒートマップとの間の上記誤差を表示することと
を行うようにさらに構成されている、項目16に記載のシステム。
[項目18]
上記クロスバーアレイを更新することが、上記計算に少なくとも部分的に基づいて、上記クロスバーアレイの1つまたは複数のメモリスタのデバイスのコンダクタンス値を更新することを含む、項目10から17のいずれか一項に記載のシステム。
[項目19]
アナログクロスバーアレイを更新するためのパルス生成のためのコンピュータプログラムであって、プロセッサに、
クロスバーアレイのためのパルス生成を使用して表す行列乗算に使用した数を受信する手順と、
上記数を表すビット長を受信する手順と、
上記数を表す上記ビット長を有するパルスシーケンスにおけるパルス位置を選択する手順と、
上記パルスシーケンスにおける上記選択されたパルス位置を使用して計算を実行する手順と、
上記計算を使用して上記クロスバーアレイを更新する手順であって、上記クロスバーアレイを上記更新する手順が、上記計算に少なくとも部分的に基づいて上記クロスバーアレイの1つまたは複数のメモリスタのデバイスのコンダクタンス値を更新する手順を含む、更新する手順と
を実行させるための、コンピュータプログラム。
[項目20]
上記計算が、上記行列乗算において使用した上記数および上記行列乗算において使用した第2の数を用いて外積演算を実行することを含む、項目19に記載のコンピュータプログラム。
[項目21]
上記ビット長が、重み行列の異なる要素の数に等しい、項目19に記載のコンピュータプログラム。
[項目22]
上記プロセッサに、ニューラルネットワークの第1のパルスシーケンスおよび第2のパルスシーケンスの外積を決定させる手順をさらに実行させる、項目19から21のいずれか一項に記載のコンピュータプログラム。
[項目23]
上記プロセッサに、ヒートマップを生成する手順をさらに実行させ、上記生成されたヒートマップが、第1のパルスシーケンスと第2のパルスシーケンスとの間のパルス同時計数に少なくとも部分的に基づいており、上記第1のパルスシーケンスまたは上記第2のパルスシーケンスのうちの少なくとも1つが上記選択されたパルス位置を含む、項目19から22のいずれか一項に記載のコンピュータプログラム。
[項目24]
上記プロセッサに、上記選択されたパルス位置を使用して、真の乗算マップを上記生成されたヒートマップと比較させる手順をさらに実行させ、上記真の乗算マップが、各要素に対して要素ごとの乗算を実行する、項目23に記載のコンピュータプログラム。
[項目25]
上記プロセッサに、
上記真の乗算マップと上記生成されたヒートマップとの間の誤差を決定する手順と、
上記真の乗算マップと上記生成されたヒートマップとの間の上記誤差を表示する手順と
をさらに実行させる、項目24に記載のコンピュータプログラム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14