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

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

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

特許7663296アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成
<>
  • 特許-アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成 図1
  • 特許-アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成 図2
  • 特許-アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成 図3
  • 特許-アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成 図4
  • 特許-アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成 図5
  • 特許-アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成 図6
  • 特許-アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成 図7
  • 特許-アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成 図8
  • 特許-アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成 図9
  • 特許-アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成 図10
  • 特許-アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成 図11
  • 特許-アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成 図12
  • 特許-アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成 図13
  • 特許-アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成 図14
  • 特許-アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成 図15
  • 特許-アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-04-08
(45)【発行日】2025-04-16
(54)【発明の名称】アナログクロスバーアレイの更新のための疎な変更可能なビット長決定論的パルス生成
(51)【国際特許分類】
   G06N 3/065 20230101AFI20250409BHJP
   G06F 17/16 20060101ALI20250409BHJP
【FI】
G06N3/065
G06F17/16 K
【請求項の数】 20
(21)【出願番号】P 2023502843
(86)(22)【出願日】2021-06-29
(65)【公表番号】
(43)【公表日】2023-08-04
(86)【国際出願番号】 EP2021067846
(87)【国際公開番号】W WO2022012920
(87)【国際公開日】2022-01-20
【審査請求日】2023-11-14
(31)【優先権主張番号】16/929,172
(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)【参考文献】
【文献】特表2020-517002(JP,A)
【文献】特表2019-502970(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06F 17/16
(57)【特許請求の範囲】
【請求項1】
アナログクロスバーアレイを更新するためのパルス生成についてのコンピュータ実装方法であって、前記コンピュータ実装方法は、
プロセッサにより、クロスバーアレイについてのパルス生成を使用して表すための、行列乗算に使用する数値を受信する段階と、
前記プロセッサにより、前記数値を表すための第1のビット長を受信する段階であって、前記第1のビット長は、変更可能なビット長であって、前記第1のビット長は前記数値が取り得る値の数以下である、段階と、
前記プロセッサにより、前記数値を表すための前記第1のビット長を有するパルス配列におけるパルス位置を決定的に選択する段階と、
前記プロセッサにより、前記パルス配列における選択された前記パルス位置を使用して計算を実行する段階と、
前記プロセッサにより、前記計算を使用して前記クロスバーアレイを更新する段階と
を備える、コンピュータ実装方法。
【請求項2】
第2のビット長を選択する段階であって、前記第2のビット長は前記第1のビット長とは異なる、段階と、
前記数値を表す前記第2のビット長を有する更新されたパルス配列のためにパルス位置を決定的に選択する段階と、
前記更新されたパルス配列における前記選択されたパルス位置を使用して後続の計算を実行する段階と、
前記後続の計算を使用して前記クロスバーアレイを更新する段階であって、前記クロスバーアレイを更新する段階は、前記計算および前記後続の計算に少なくとも部分的に基づき、前記クロスバーアレイの1つまたは複数のメモリスタのデバイスのコンダクタンス値を更新する段階を含む、段階と
をさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項3】
ニューラルネットワークの訓練フェーズにおいて前記第1のビット長を第2のビット長に変更する段階をさらに備える、請求項1または2に記載のコンピュータ実装方法。
【請求項4】
前記計算は、前記行列乗算に使用する前記数値と前記行列乗算に使用する第2の数値との外積演算を実行する段階を備える、請求項1から3のいずれか一項に記載のコンピュータ実装方法。
【請求項5】
ヒートマップを生成する段階であって、生成された前記ヒートマップは、第1のパルス配列と第2のパルス配列との間のパルス同時計数に少なくとも部分的に基づき、前記第1のパルス配列または前記第2のパルス配列のうちの少なくとも1つは前記選択されたパルス位置を含み、少なくとも1つの第1のパルス配列は前記数値に対応し、前記第2のパルス配列は第2の数値に対応する、段階をさらに備える、請求項1から4のいずれか一項に記載のコンピュータ実装方法。
【請求項6】
前記選択されたパルス位置を使用して真の乗算マップと前記生成されたヒートマップとを比較する段階であって、前記真の乗算マップは各要素について要素ごとの乗算を実行する、段階をさらに備える、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記真の乗算マップと前記生成されたヒートマップとの間の誤差を判定する段階と、
前記真の乗算マップと前記生成されたヒートマップとの間の前記誤差を提示する段階と
をさらに備える、請求項6に記載のコンピュータ実装方法。
【請求項8】
クロスバーアレイを更新するためのパルス生成を実装するについてのシステムであって、前記システムは、
1つまたは複数のメモリスタのデバイスを有するクロスバーアレイと、
前記クロスバーアレイのためのパルス生成を使用して表すための、行列乗算に使用する数値を受信することと、
前記数値を表すためのビット長を受信することであって、前記ビット長は変更可能なビット長であって、前記ビット長は前記数値が取り得る値の数以下である、受信することと、
前記数値を表すための前記ビット長を有するパルス配列におけるパルス位置を決定的に選択することと、
前記パルス配列における前記選択されたパルス位置を使用して計算を実行することと、
前記計算を使用して前記クロスバーアレイを更新することであって、前記クロスバーアレイの更新は前記1つまたは複数のメモリスタのデバイスの重みを変化する、更新することと
を行うように構成されたプロセッサと
を備える、システム。
【請求項9】
前記プロセッサは、
第2のビット長を選択し、前記第2のビット長は前記ビット長とは異なり、
前記数値を表す前記第2のビット長を有する更新されたパルス配列のためにパルス位置を決定的に選択し、
前記更新されたパルス配列における前記選択されたパルス位置を使用して後続の計算を実行し、
前記後続の計算を使用して前記クロスバーアレイを更新し、前記クロスバーアレイの更新は、前記計算および前記後続の計算に少なくとも部分的に基づき、前記クロスバーアレイの1つまたは複数のメモリスタのデバイスのコンダクタンス値を更新する
ように構成されている、請求項8に記載のシステム。
【請求項10】
前記プロセッサは、ニューラルネットワークの訓練フェーズにおいて、前記ビット長を第2のビット長に変更するように構成されている、請求項8または9に記載のシステム。
【請求項11】
前記計算は、前記行列乗算に使用する数値と前記行列乗算に使用する第2の数値との外積演算を実行する段階を備える、請求項8から10のいずれか一項に記載のシステム。
【請求項12】
前記パルス配列における前記選択されたパルス位置は前記ビット長に少なくとも部分的に基づく、請求項8から11のいずれか一項に記載のシステム。
【請求項13】
前記プロセッサはさらに、ヒートマップを生成するように構成されており、前記生成されたヒートマップは、第1のパルス配列と第2のパルス配列との間のパルス同時計数に少なくとも部分的に基づき、前記第1のパルス配列または前記第2のパルス配列のうちの少なくとも1つは前記選択されたパルス位置を含む、請求項8から12のいずれか一項に記載のシステム。
【請求項14】
前記選択されたパルス位置を使用して、真の乗算マップを前記生成されたヒートマップに比較する段階であって、前記真の乗算マップは各要素のための要素ごとの乗算を実行する、段階と、
前記真の乗算マップと前記生成されたヒートマップとの間の誤差を判定する段階と、
前記真の乗算マップと前記生成されたヒートマップとの間の前記誤差を提示する段階と
をさらに備える、請求項13に記載のシステム。
【請求項15】
アナログクロスバーアレイを更新するためのパルス生成についてのコンピュータプログラムであって、
プロセッサに、
クロスバーアレイのためのパルス生成を使用して表すための、行列乗算に使用する数値を受信する手順と、
前記数値を表すためのビット長を受信する手順であって、前記ビット長は変更可能なビット長であって、前記ビット長は前記数値が取り得る値の数以下である、手順と、
前記数値を表すための前記ビット長を有するパルス配列におけるパルス位置を決定的に選択する手順と、
前記パルス配列における選択された前記パルス位置を使用して計算を実行する手順と、
前記計算を使用して前記クロスバーアレイを更新する手順であって、前記クロスバーアレイを更新する手順は、前記計算に少なくとも部分的に基づいて、前記クロスバーアレイの1つまたは複数のメモリスタのデバイスのコンダクタンス値を更新する手順を含む、手順と
を実行させる、コンピュータプログラム。
【請求項16】
前記プロセッサに、
第2のビット長を選択する手順であって、前記第2のビット長は前記ビット長とは異なる、手順と、
前記数値を表すための前記第2のビット長を有する更新されたパルス配列のためのパルス位置を決定的に選択する手順と、
前記更新されたパルス配列における前記選択されたパルス位置を使用して後続の計算を実行する手順と、
前記後続の計算を使用して前記クロスバーアレイを更新する手順であって、前記クロスバーアレイを更新する手順は、前記計算および前記後続の計算に少なくとも部分的に基づき、前記クロスバーアレイの1つまたは複数のメモリスタのデバイスのコンダクタンス値を更新する手順を含む、手順と
を実行させる、請求項15に記載のコンピュータプログラム。
【請求項17】
前記プロセッサに、ニューラルネットワークの訓練フェーズにおいて前記ビット長を第2のビット長に変更する手順をさらに実行させる、請求項15または16に記載のコンピュータプログラム。
【請求項18】
前記プロセッサに、ニューラルネットワークのための第1のパルス配列と第2のパルス配列との外積を判定する手順をさらに実行させる、請求項15から17のいずれか一項に記載のコンピュータプログラム。
【請求項19】
前記プロセッサに、ヒートマップを生成する手順であって、前記生成されたヒートマップは、第1のパルス配列と第2のパルス配列との間のパルス同時計数に少なくとも部分的に基づき、前記第1のパルス配列または前記第2のパルス配列のうちの少なくとも1つは前記選択されたパルス位置を含む、手順をさらに実行させる、請求項15から18のいずれか一項に記載のコンピュータプログラム。
【請求項20】
前記プロセッサに、
前記選択されたパルス位置を使用して真の乗算マップを前記生成されたヒートマップに比較する手順であって、前記真の乗算マップは各要素のための要素ごとの乗算を実行する手順と、
前記真の乗算マップと前記生成されたヒートマップとの間の誤差を判定する手順と、
前記真の乗算マップと前記生成されたヒートマップとの間の前記誤差を提示する手順と
を実行させる、請求項19に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は概してニューラルネットワークを実装するクロスバーアレイに関し、より具体的には、アナログクロスバーアレイを更新するための疎な変更可能なビット長決定論的パルス生成を使用する訓練ニューラルネットワークに関する。
【背景技術】
【0002】
人工ニューラルネットワーク(ANN:Artificial neural network)は、ニューロモーフィックおよびシナプトロニクシステムとも知られており、人間の脳などの生体神経系に類似した方法で電子システムとして本質的に機能することを許可する計算システムである。この詳細な説明において、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種類がある。フィードフォワードネットワークは、入力、出力、隠れ層を有する非再帰型ネットワークである。信号は一方向にのみに伝わることができる。入力データは、計算を行う処理要素の層に渡される。各処理要素は、その入力の加重和に基づいて計算を行う。次に、新たに計算された値は、次の層に与えられる新たな入力値になる。この処理は、全ての層を通過し、出力を判定するまで続けられる。出力層におけるニューロンの出力を定量化するために、閾値伝達関数が使用される場合がある。
【0007】
フィードバックネットワークは、フィードバック経路を含み、その信号はループを使用して両方向に移動することができることを意味する。ニューロンの間の全ての可能な接続は可能である。この種類のネットワークにはループが存在するため、ある操作の下では、平衡状態に達するまで連続的に変化する非線形力学系となり得る。フィードバックネットワークは、連想メモリおよび最適化問題でよく使用され、ネットワークは相互接続された要因の最適な配置を探す。
【0008】
ANNでは、スパイク生成関数は、一般に時間エンコーダまたはスパイク生成器と知られているコンポーネントによってモデル化することができる。したがって、これまで説明される生体神経系に関する知識を深め得る能力は、神経情報がスパイク型時間エンコーダの回帰型ネットワークでどのようにエンコードされるかをモデル化するANNの開発に依存する。時間エンコーダは、受信した信号を非同期に積分し、非同期パルス信号の後続のセットを生成することで、デジタルとアナログとの両方のエンコーディングに代わる情報を提供する。時間エンコーダネットワークのある構成では、ネットワークから出力されるパルスまたはスパイクのセットから、ネットワークに入力される信号のセットに関する情報を抽出することができる。
【発明の概要】
【0009】
本発明の実施形態は、クロスバーアレイを更新するための変更可能なビット長パルス生成のコンピュータ実装方法に向けられている。コンピュータ実装方法の非限定的な例は、クロスバーアレイのためのパルス生成を使用して、行列乗算に使用する、表される数値を受信することと、数値を表すための第1のビット長を受信し、ビット長が変更可能なビット長であることとを含む。コンピュータ実装方法は、数値を表すための第1のビット長を有するパルス配列におけるパルス位置を選択することと、プロセッサにより、パルス配列における選択されたパルス位置を使用して計算を実行することと、プロセッサにより、計算を使用してクロスバーアレイを更新することとも含む。
【0010】
本発明の実施形態は、クロスバーアレイを更新するための変更可能なビット長パルス生成についてのシステムに向けられている。システムの非限定的な例は、1つまたは複数のメモリスタのデバイスとプロセッサとを有するクロスバーアレイを備える。プロセッサは、クロスバーアレイのためのパルス生成を使用して、行列乗算に使用する、表される数値を受信することと、数値を表すためのビット長を受信し、ビット長が変更可能なビット長であることとを含むように構成されている。また、プロセッサは、数値を表すためのビット長を有するパルス配列におけるパルス位置を選択することと、パルス配列における選択されたパルス位置を使用して計算を実行することと、計算を使用してクロスバーアレイを更新し、クロスバーアレイを更新することが1つまたは複数のメモリスタのデバイスの重みを変化することとを含むように構成されている。
【0011】
本発明の実施形態は、クロスバーアレイを更新するための変更可能なビット長パルス生成のためのコンピュータプログラム製品に向けられ、コンピュータプログラム製品は、プログラム命令をその中に具現化したコンピュータ可読記憶媒体を含む。プログラム命令は、プロセッサに方法を実行させるためにプロセッサによって実行可能である。方法の非限定的な例は、クロスバーアレイのためのパルス生成を使用して、行列乗算に使用する、表される数値を受信することと、数値を表すための第1のビット長を受信し、ビット長が変更可能なビット長であることとを含む。方法は、数値を表すための第1のビット長を有するパルス配列におけるパルス位置を選択することと、プロセッサにより、パルス配列における選択されたパルス位置を使用して計算を実行することと、プロセッサにより、計算を使用してクロスバーアレイを更新することとも含む。
【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】RPUの動作を示す電圧配列とともに、本発明の実施形態に係る2端子、非線性RPUデバイスのクロスバーアレイを示す図である。
【0022】
図9】本発明の1つまたは複数の実施形態に係る例示的な2×2クロスバーアレイおよび重み行列を示す図である。
【0023】
図10】本発明の1つまたは複数の実施形態に係るニューラルネットワークの重みを更新するために、パルス同時計数で乗算することを示す図である。
【0024】
図11】本発明の1つまたは複数の実施形態に係る乗算マップおよび乗算表を示す図である。
【0025】
図12】本発明の1つまたは複数の実施形態に係る、ビット長を変更し、ビットストリームにおけるビット位置を選択するアルゴリズムを示す図である。
【0026】
図13】本発明の1つまたは複数の実施形態に係るグラフおよび乗算マップを示す図である。
【0027】
図14】本発明の1つまたは複数の実施形態に係るグラフおよび乗算マップを示す図である。
【0028】
図15】本発明の1つまたは複数の実施形態に係る、クロスバーアレイを更新するためのパルスを生成するための方法のフローチャートを示す図である。
【0029】
図16】本明細書の教示を実施するための処理システムの一例を示すブロック図である。
【0030】
ここで示される図は例示的である。本発明の趣旨から逸脱することなく、図面または本明細書において説明される動作に対する多くの変形が存在し得る。例えば、アクションを異なる順序において実行することもできるし、アクションは、追加、消去または修正することもできる。また、「結合される(coupled)」という用語およびその変形は、2つの要素間で通信経路を有することを記述し、要素同士の間に介在する要素/接続を伴わない、それらの間の直接接続を暗示しない。これらの変形の全てが本明細書の一部とみなされる。
【0031】
添付図面および本発明の実施形態の以下の詳細な説明において、図に示された様々な要素には2桁または3桁の参照符号が提供されている。わずかな例外を除き、各参照符号の左端の桁は、その要素が最初に示されている図に対応している。
【発明を実施するための形態】
【0032】
本発明の様々な実施形態は、関連する図面を参照して本明細書で説明される。本発明の代替的な実施形態は、本発明の範囲から逸脱することなく考案することができる。以下の説明および図面における要素間で、様々な接続関係および位置関係(例えば、上方、下方、隣接等)が記載される。これらの接続若しくは位置関係またはその両方は、特に明記しない限り、直接的または間接的であり得て、本発明は、この点で制限することを意図するものではない。したがって、エンティティ間の連結は、直接的または間接的な連結を指してよく、エンティティ間の位置関係は、直接的または間接的な位置関係であり得る。その上、本明細書において説明される様々なタスクおよびプロセス段階は、追加の段階または本明細書において詳細に説明されていない機能を有するより包括的な手順またはプロセスに組み込むことができる。
【0033】
以下の定義および略語は、特許請求の範囲および明細書の解釈のために使用され得る。本明細書で使用されるとき、「comprises」、「comprising」、「includes」、「including」、「has」、「having」、「contains」、若しくは「containing」という用語、またはそれらの任意の他の変形は、排他的でない包含を網羅することを意図している。例えば、要素のリストを含む組成物、混合物、プロセス、方法、物品、または装置は、必ずしもそれらの要素のみに限定されず、明示的に列挙されていない、またはそのような組成物、混合物、プロセス、方法、物品、または装置に固有の他の要素を含み得る。
【0034】
さらに、用語「例示的」は、本明細書において、「例、インスタンス、または図として機能する」ことを意味するために使用される。本明細書において「例示的」として説明される本発明の任意の実施形態は、必ずしも、本発明の他の実施形態よりも好ましいまたは有利であると解釈されるものではない。「少なくとも1つ」および「1つまたは複数」という用語は、1より大きいまたはそれに等しい任意の整数、すなわち1、2、3、4などを含むと理解することができる。「複数(a plurality)」という用語は、2つ以上の任意の整数、すなわち、2、3、4、5など含むと理解され得る。「接続」という用語は、間接的な「接続」および直接的な「接続」の両方を含み得る。
【0035】
「約」、「実質的に」、「およそ」という用語、およびそれらの変形は、本願の出願の時点で利用可能な機器に基づく特定の量の測定値に関連付けられる誤差の程度を含むことが意図される。例えば、「約」は、与えられた値の±8%、または5%、または2%の範囲を含むことができる。
【0036】
簡潔さのために、本発明の態様の製造および使用に関する従来技術は、本明細書で詳細に説明される場合もあれば、されない場合もある。具体的には、コンピューティングシステム、および本明細書で説明される様々な技術的特徴を実装するための具体的なコンピュータプログラムの様々な態様は周知である。したがって、簡潔の目的で、多くの従来の実装の詳細は本明細書では簡潔にのみ言及されるか、あるいは、周知のシステム、若しくはプロセスまたはその両方の詳細を提供することなく完全に省略される。
【0037】
ここで本発明の態様により具体的に関連のある技術の概要を見ると、典型的なANNがどのように動作するかの説明はここで図1図2および図3を参照して提供される。本明細書で上述したように、典型的なANNは人間の脳をモデル化しており、そこには約1000億個のニューロンと呼ばれる相互接続された細胞が含まれている。図1は、図示のように構成および配置された、上流入力112、114、下流出力116および下流「他の」ニューロン118に接続する経路104、106、108、110を有する生体ニューロン102の簡易図を示している。各生体ニューロン102は、経路104、106、108、110を介して電気インパルスを送信および受信する。これらの電気インパルスの性質およびそれらは生体ニューロン102においてどのように処理されるかは主に脳の機能全体に関与している。生体ニューロンの間を接続する経路は強い、または弱いであることができる。所与のニューロンが入力インパルスを受信する場合、ニューロンは、ニューロンの関数により入力を処理し、関数の結果を下流出力、若しくは下流「他の」ニューロン、またはその組み合わせに送信する。
【0038】
生体ニューロン102は、図2に示された方程式によって表現された数学関数f(x)を含むノード202として、図2においてモデル化される。ノード202は、入力212、214から電気信号を取り、各入力212、214にそれぞれの接続経路204、206の強度を乗算し、入力の合計を取り、合計を関数f(x)を通して渡し、最終出力または別のノードへの入力、またはその両方になり得る結果216を生成する。本件の詳細な説明において、アスタリスク(*)は乗算を表すことに使用される。弱い入力信号には非常に小さな接続強度の数値が乗算されるため、関数への弱い入力信号の影響は非常に小さい。同様に、強い入力信号にはより高い接続強度の数値が乗算されるため、関数への強い入力信号の影響はより大きい。関数f(x)は設計選択であり、様々な機能は使用され得る。f(x)に関する典型的な設計選択は双曲線正接関数であり、関数の以前の合計を取り、マイナス1とプラス1との間の数値を出力する。
【0039】
図3は、加重方向グラフとして編成された簡略化されたANNモデル300を示し、人工ニューロンはノード(例えば、302、308、316)であり、加重方向エッジ(例えば、m1~m20)がノードを接続する。ANNモデル300は、ノード302、304、306が入力層ノードであり、ノード308、310、312、314が隠れ層ノードであり、ノード316、318が出力層ノードであるように編成される。各ノードは、接続経路によって隣接する層における全てのノードに接続され、接続強度m1~m20を有する方向矢印として図3に示されている。1つの入力層、1つの隠れ層および1つの出力層のみが示されているが、実際に、複数の入力層、隠れ層および出力層が提供され得る。
【0040】
人間の脳の機能と同様に、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)であり、*は乗算を表す。隠れ層ノード310、312、314および出力層ノード316、318についても、図3の最下部に示された関数y5~y9を定義する方程式で示されるように、同様の接続強度乗算およびノード和算が行われる。
【0041】
ANNモデル300は、データ記録を一度に1つずつ処理し、当初任意に設定した記録の分類と既知の実際の記録の分類とを比較することにより「学習」する。「逆伝播」(すなわち、「誤差の逆方向伝搬」)と知られている訓練方法を使用すると、最初の記録の初期分類で生じた誤差がネットワークにフィードバックされ、2回目以降のネットワークの加重接続の変更に使用され、このフィードバック処理は何度も繰り返され続ける。ANNの訓練フェーズにおいて、各記録に関する正確な分類が既知であり、したがって、出力ノードには「正確な」値が割り当てられる。例えば、ノードに関する「1」(または0.9)であるノード値は正確なクラスに対応し、「0」(または0.1)であるノード値は他に対応する。したがって、各ノード(すなわち、「デルタ」ルール)に関する誤差項を計算するように、出力ノードに関するネットワークの計算値をこれらの「正確な」値に比較することができる。次に、次の反復において、出力値は「正確な」値により近くなるように、これらの誤差項は隠れ層における重みを調整するために使用される。
【0042】
消費電力が低くなる可能性はあるものの、オフライン訓練の実行は困難であり得、リソースの負荷が高い。なぜなら、一般的に、訓練中にANNモデルのかなりの数の調整可能なパラメータ(例えば、重み)を変更し、訓練データの入出力ペアに一致させる必要があるからである。図4は、CPU/GPUコア(すなわち、シミュレーションされた「ニューロン」)がメモリ(すなわち、シミュレーションされた「シナプス」)を読み出して重みの更新処理動作を行い、更新された重みをメモリに書き戻す、典型的な読み出し-処理-書き込みの重み更新動作を簡略化された図で示す図である。それに応じて、ANNアーキテクチャのクロスポイントデバイスを簡略化し、省電力、オフライン学習技術を優先させると、訓練速度および訓練効率が最適化されないのが一般的に意味されている。
【0043】
確率計算とは、連続値をランダムビットのストリームで表現し、複雑な計算はそのストリームに対する単純なビット演算で計算され得る技術の集合である。具体的には、確率数値(すなわちベルヌーイ処理)と呼ばれるランダムで独立な2つのビットストリームS1、S2があり、第1のストリームで「1」が得られる確率をp、第2のストリームで「1」が得られる確率をqとすると、図5に示すように、2つのストリームの論理ANDを取ることができる。出力ストリームに「1」が含まれる確率はpqである。出力ビットを十分に観測し、「1」の頻度を測定することで、pqを任意の精度で推定することが可能である。「乗算および積算」演算は少数の論理ゲート/トランジスタで実装できる設計になっているため、ニューラルネットワークのハードウェア設計には確率計算がよく使用される。
【0044】
しかしながら、いくつかの確率的技術の中には、計算に必要な重みは外部の場所からシストリックアレイに供給し、重みの更新はアレイで実行されないものもある。これは、ニューラルネットワーク訓練時に多用されるベクトル-行列乗算または行列-行列乗算の演算の加速にのみ対処するものである。しかしながら、ローカルストレージを有しないシストリックアレイは、重みが外部メモリ場所に格納されるため、重み更新を並列に実行することができない。本明細書に記載の技術の実施形態によって提供されるように、全体的な学習アルゴリズムを加速するために、重み更新を加速することが必要である。
【0045】
また、ANNの訓練には多くの計算が行われる必要である。ノードの数値が増加すれば増加するほど、計算の複雑性および回数が増加し、訓練速度および精度がさらに非効率につながる可能性がある。重みの調整に使用する外積を計算するために、b個のパルスを送信して外積を形成するのは非効率的であり、bはビット数を表す。
【0046】
ここで本発明の態様の概要を見ると、本発明の1つまたは複数の実施形態は、効率的なニューラルネットワーク訓練スキームを提供することによって従来技術の上記欠点に対処する。本明細書で説明される本発明の実施形態の技術により、ニューラルネットワークを訓練するために最適なビット長を選択することができる。また、ビット長は、ニューラルネットワーク訓練フェーズにおいて変更されることができる。また、本明細書に説明される本発明の実施形態の技術は、誤差を最小限に抑えながら正確な結果を取得することを保証するために、変更されたビット長に少なくとも部分的に基づいてパルス配列におけるパルス位置を選択する。外積ベースの更新における誤差は、パルス数の減少、若しくはパルス配列内のパルスの配置、またはその組み合わせによってもたらされる可能性がある。したがって、パルス配列内のパルスの選択された位置は非常に重要であり、ビット長が変更されても、値の真の乗算マップに示される輪郭を維持するように戦略的に選択する必要がある。
【0047】
本明細書で説明される本発明の実施形態の技術的効果および利点は、従来のニューラルネットワーク更新で行われる一致検出および更新を正確でコンパクトな表現を提供する。また、技術的効果および利点は、パルス配列のbビットのみを使用して乗算を最小限の誤差でエンコードする効率的な方法を提供する。乗算を最適化するために、本発明の態様によるアルゴリズムは、クロスバーアレイの1つまたは複数のメモリスタを更新するための外積を計算するのに十分な最小の表現を提供する。また、アルゴリズムは、bビット未満を使用して更新のための値をエンコードするように構成されている。行列乗算で使用される値のパルス位置を生成するアルゴリズムを提供することは、ANNアーキテクチャの訓練の速度および効率を加速させ、また、ANN全体の性能を向上させ、より幅広いANNアプリケーションを可能にすることができる。
【0048】
「メモリスタ」という用語は、受動的な2端子電気コンポーネントを説明するために使用され、デバイスの抵抗値は、デバイスに以前に印加された電圧の履歴に依存する。メモリスタの動作は、図6に示す方程式[1]および[2]によって支配され、iはデバイスを通過する電流、vはデバイスに印加される電圧、gはデバイスのコンダクタンス値(抵抗値の逆数)、sはコンダクタンス値を制御するデバイスの内部状態変数、fは内部状態変数sの時間発展を示す関数である。
【0049】
本発明の実施形態によるクロスバーアレイのメモリスタ挙動は、図7に示されている。理想的なメモリスタと、説明されるRPUを実装するために使用することができる非理想的な非線形メモリスタとの間の相違点を説明するために、図7は、理想的なメモリスタと本発明の実施形態によるRPUの電圧切り替え動作との間の比較を説明するグラフである。グラフの縦軸は、特定の電圧におけるデバイスの状態変化を表し、グラフの横軸は、印加された電圧を表す。理想的なメモリスタ動作では、抵抗値の変化は、デバイスに印加される電圧に線形に比例する。したがって、メモリスタに何らかの電圧がかかると同時に、その抵抗状態が変化する。これは曲線702で示され、低電圧でも状態変化が劇的であることを示している。
【0050】
曲線704で示されるような非線性RPUデバイスの場合、その内部抵抗状態を変化させるためにデバイスが経験する必要がある、十分に定義された設定電圧VSETが存在する。0.5VSETのバイアス電圧は、内部抵抗状態を変化させない。本発明の実施形態では、RPUデバイスのこの非線形特性を利用して、局所的に乗算を実行する。f1が小さいと想定すると、0.5VSETのみ印加しても、デバイスは内部状態を変化させない。とりわけ、図7は、正電圧およびRPUデバイスの抵抗状態への正の変化を示しているが、負電圧と負の抵抗変化との間にも同様の関係も存在することである。
【0051】
ここで本発明の態様のより詳細な説明を見ると、図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の導通状態(すなわち、格納された重み)を読み出すことができる。
【0052】
入力電圧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は、電圧V1、V2、V3によって定義される行線入力によってRPUに格納される値を乗算することによって、前方行列乗算を計算する。後方行列乗算は、非常に類似している。後方行列乗算では、電圧は列線808、810、812、814に印加され、次に行線802、804、806から読み出される。以下により詳細に説明される重み更新のために、電圧は列線および行線に同時に印加され、関連のあるRPUデバイスに記憶されたコンダクタンス値836は全て並列に更新される。それに応じて、重み更新を実行するために必要な乗算および加算演算は、RPUデバイス自体に加えてアレイ800の関連のある行線または列線を使用して、アレイ800の各RPU820において局所的に実行される。したがって、本発明の実施形態によれば、アレイ800において、読み出し-更新-書き込みサイクル(図4に示す)は不要である。
【0053】
図8の図を続けて、本発明の1つまたは複数の実施形態によれば、導電性行線806および導電性列線812の交差点におけるRPU820およびその対応する重みσ33に対する正の重み更新方法の動作が、ここで提供されるであろう。RPU820の非線形特性を使用し、後述するような計算を使用してRPU820で局所的に乗算演算を行う。より具体的には、記載される方法は、RPU820およびビットストリーム830、832の非線形スイッチング特性を使用して、他の回路素子を必要とせずにRPU820で局所的に乗算演算および必要な重み更新を実行する。更新発生器回路(図示せず)は、クロスバーアレイ800の周辺に提供され、2Dクロスバーアレイ800の全てのRPUに並行して適用されるであろうビットストリーム(例えば、830、832)の形態で必要な電圧パルスを生成するために、周辺の「トランスレータ」として使用される。
【0054】
図7の図を簡単に参照すると、図8に示すRPU820のfは非常に小さく(例えば、f=0)、これは、RPU820が、0.5VSETのみが印加されたときにその内部状態を変更しないことを意味するものと想定される。行線806に印加される行電圧配列またはビットストリーム830は、ゼロの電圧または+0.5VSETの電圧を有する重み更新を表す電圧パルスの配列として示されている。列線814に印加される列電圧配列またはビットストリーム832は、ゼロの電圧または-0.5VSETの電圧のいずれかを有する重み更新も表す電圧パルスの配列として示されている。図8の例では、4/8は行電圧配列830によってエンコードされ、6/8は列電圧配列832によってエンコードされる。例示的な電圧配列830,832は、重み更新の正の抵抗変化段階を表す。正の重み更新が行われた後、それぞれの電圧の極性を反転させた配列の別のセットを使用して、そのような補正が必要な重みに対して負方向に重みを更新することができる。
【0055】
電圧配列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)に比例している。
【0056】
ここで図9を参照すると、本発明の1つまたは複数の実施形態によるニューラルネットワークを更新するためのクロスバーアレイ900と対応する重み行列wの2次元表現が示されている。クロスバーアレイ900は、図9に示すように配置された4つの処理コンポーネント910を含む。重み行列wは、要素w、w、w、wを含む。ニューラルネットワーク訓練時に、処理コンポーネントに対応する重みの各々が更新され得る。また、図9には、重み行列wを更新するための方程式1が描かれている。方程式1に示すように、xとδとの外積演算が実行され、重み行列の重みが段階的に更新される。
【0057】
図10は、本発明の1つまたは複数の実施形態によるクロスバーアレイ1000を更新するためのパルス同時計数による乗算を示している。(後述の)アルゴリズム1200で判定されるx値、δ値のパルス配列をクロスバーアレイ1000に入力し、従来のネットワークの要素ごとの乗算を行うための乗算演算を近似的に行う。アルゴリズム1200は、乗算演算と、x値およびδ値に対するパルス配列内の選択されたパルス位置との間の正確な変換を定義する。
【0058】
図11は、真の乗算マップ(更新マップとも称される)と、真の乗算マップを近似した結果から生じる粒状のマップとを示す図である。本明細書で説明する乗算マップは、外積に基づく更新を指すと理解されたい。一般に、乗算は、前方/後方パス(すなわち、ベクトル行列乗算)に関連して言及されることが多いが、本明細書に記載される本発明の実施形態において、乗算は、特に外積に基づく更新を意味する。真の乗算マップ1110および真の乗算表は、2の解像度bを有する2×2クロスバーアレイについて生成されている。しかしながら、真の乗算マップおよびテーブルは、異なる解像度bを有する任意のクロスバーアレイに対して生成され得ることを理解されたい。マップ1130に示されるように、近似は、粒状の結果を提供するxおよびδの値について実行されている。粒状の結果は、xおよびδの値を表すパルス配列内のパルスの配置が正しくないことに起因し得る。この粒状近似はニューラルネットワーク訓練には不適切であり、分類性能の劣化につながる。
【0059】
図12は、真の乗算表のコンパクトな表現を提供することになるxおよびδの値について、パルス配列におけるパルス位置を判定する方法を提供するために、本発明の態様にしたがって構成および配置されたアルゴリズム1200を示している。また、アルゴリズム1200は、最小限の誤差を生成し、ニューラルネットワークの効率的な重み更新を実行するために必要な真の乗算演算の輪郭を維持することになる。また、アルゴリズム1200は、ニューラルネットワーク訓練中に更新され得る柔軟なビット長BL、x、δのための解像度bを提供する方法を含む。例えば、b=2であると、x、δは[0,1]である。しかしながら、b=4であると、x、δは[0,0.25,0.5,1]である。bの値は図示のみであり、bを限定することを意図するものではないことを理解されたい。
【0060】
本発明の態様にしたがって、アルゴリズム1200は、本発明の1つまたは複数の実施形態にしたがって、ニューラルネットワークを訓練するための変更可能なビット長を選択するためのスパースXORフラグ圧縮アルゴリズムである。圧縮は、乗算境界の配置を利用する。圧縮率>bの場合(bよりも小さいBLを持ち、ここで
【数1】
)、合計b個のスロットを使用するx、δ表現における1の数。これにより、ニューラルネットワーク回路を変更することなく、各ステップでビット長を決定することができる。また、アルゴリズム1200は、xおよびδの値が真の乗算マップの輪郭に近似するためのパルスストリームにおけるパルスの配置を保証する。
【0061】
図13は、本発明の1つまたは複数の実施形態による、クロスバーアレイを更新するためのスパースモディファイブルビット決定性パルス生成のための例示的な実装のための一連のグラフおよびマップを示す図である。この非限定的な例では、bビン(x、δの解像度)があり、bビンは、重み行列wのxおよびδの値がそれぞれ100個の異なる値を取り得ることを示す。解像度bは100、選択されたビット長(BL)は100ビットである。従来は、xおよびδの異なる数値を表すために、各要素(xおよびδ)に対して要素ごとの乗算更新を行うため、ニューラルネットワークで使用する重みの更新を行うことにbビット数が必要となる。図12で説明した方法を使用すると、要素ごとの乗算と同様の結果を維持しつつ、圧縮によりbビット数を削減することができる。図12の方法は、ニューラルネットワーク訓練中に解像度bを選択または変更することを可能にする。
【0062】
図13において、グラフ1302は、ニューラルネットワークのための更新を行う際に使用される重み行列のx値を表している。グラフ1302のx軸は、パルス配列におけるパルス位置、またはビットストリームにおけるビット位置を表している。グラフ1302のy軸は、パルス配列で表されるx値の数値を表している。パルス配列またはビットストリームは、一連の1と0で表すことができる。領域1320は1(ロジックハイ)を表し、領域1330は0(ロジックロー)を表す。例えば、グラフ1302において、x値80に対応する行は、x軸に示される位置に提供されたパルスで数値80が表されるパルス配列内の位置を示している。別の例においては、数値0に対応するグラフ1302の最下部の行は、パルス配列の100個の0パルスで表され、1に対応する最上行は、パルス配列の100個の1によって表される。
【0063】
x値およびδデルタ値で生成されるパルス配列はかなり異なる。したがって、δ値のためのパルス配列は、x値のためのパルス配列とは異なるように判定され、図12を参照して説明したアルゴリズム1200を使用して判定される。図13において、グラフ1304は、δ値に対するパルス配列におけるパルス位置を表している。グラフ1302と同様に、グラフ1304のx軸はパルス位置を表し、y軸は重みの更新のための計算で使用されるδ値の数値を表している。
【0064】
なお、図13を参照すると、乗算マップ1306は、図11に示すように、重み行列wの各要素(x,δ)に対して要素ごとの乗算が行われる真の乗算マップを表している。真の乗算マップ1306は、要素ごとの乗算に対応する輪郭を提供する。この例においては、アナログクロスバーアレイの重みを更新するための行列乗算を行うための各数値を、x値を100ビット、δ値を100ビットとして、10,000パルス/ビットを使用して表現している。ビット数が増加すると、計算の複雑性および回数が速くに増加する。
【0065】
また、図13に示すのは、第1のパルス配列が表すx値の数値と第2のパルス配列が表すδ値の数値とについて外積を取ることで生成されるヒートマップ1308であり、δ値の第2のパルス配列は図12に示すアルゴリズムから判定されたものである。ヒートマップ1308により、第1のパルス配列と第2のパルス配列との外積と、重み行列wの各要素の要素ごとの乗算との近似性を直感的に解析することができる。
【0066】
ヒートマップ1308に示すように、外積により、各要素に対して真の乗算をそれぞれ行う場合、要素ごとの乗算10,000ビットで表すところを、代わりに100ビットのみでコンパクトに表すことが可能となる。乗算マップ1306とヒートマップ1308を比較し、対応する値の間の差を取ることで誤差を計算することができる。図13に示すように、誤差マップ1310は計算され、提示されることができる。ヒートマップ1308の輪郭は、乗算マップ1306に示される輪郭と類似しており、その類似性は、外積を使用するニューラルネットワークに対して効率的な更新と正確な分類を提供する表現を示している。
【0067】
図14においては、本発明の1つまたは複数の実施形態によるスパースモディファイ可能な圧縮を示す様々なグラフおよびマップが示されている。この特定の構成では、解像度bは100で、ビット長は10である。図13と同様に、グラフ1402はx値ごとのパルス配列を表し、グラフ1404はニューラルネットワークの更新に使用されるδ値ごとのパルス配列を表している。領域1420、1440は1(ロジックハイ)を表し、領域1430、1450は0(ロジックロー)を表す。
【0068】
この例において、ビット長は削減された。本発明の1つまたは複数の実施形態において、BLは、訓練フェーズ中に図12のアルゴリズム1200にしたがって変更される。アルゴリズム1200にしたがってBLが選択される場合、ニューラルネットワークにおいて適切な重み更新が行われることになる。真の乗算マップのxおよびδの値が多いほどBLが短くなるため、ヒートマップにある程度の粒度を導入することができる。この例においては、10個のみの選択肢は提供されたが、ヒートマップの輪郭は類似で、誤差は最小であることが示されている。ビット長が100から10に減少したが、これは非限定的な例であり、本発明の1つまたは複数の実施形態にしたがって任意の他の値を使用できることを理解されたい。
【0069】
図15は、本発明の1つまたは複数の実施形態による、クロスバーアレイを更新するためのパルス生成のための方法1500のフローチャートを示している。方法1500は、図4に示すようなプロセッサ、または図16を参照して説明したプロセッサを使用して実施することができる。他の任意のコンピューティングデバイスを使用することができることを理解すべきである。方法1500は、ブロック1502で開始し、プロセッサによって、クロスバーアレイのためのパルス生成を使用することを表すために行列乗算に使用される数値を受信することを提供するブロック1504に進む。ブロック1506は、数値を表すビット長を受信し、ビット長は変更可能なビット長である。本発明の1つまたは複数の実施形態において、ビット長は、ニューラルネットワークの訓練フェーズにおいて更新される。後続の計算において、ビット長は増加または減少することができる。プロセッサに提供されるビット長はニューラルネットワークから知られる。本発明の他の実施形態において、ビット長は、ニューラルネットワークの訓練フェーズの任意のフェーズで、ユーザによって入力または変更されることができる。ブロック1508は、数値を表すビット長を有するパルス配列におけるパルス位置を選択する。本発明の1つまたは複数の実施形態において、パルス位置は図9に提供されるアルゴリズムを使用して判定される。パルス配列におけるパルス位置はδ値のために判定される。ブロック1510は、パルス配列における選択されたパルス位置を使用して計算を行う。外積は、重み行列のδ値に対する第1のパルス配列と、x値に対する第2のパルス配列とのために判定される。その結果をもとに、ニューラルネットワークを訓練させるための重みを調整するために、増分を追加または減算のいずれか一方に使用される。ブロック1512は、計算を使用してクロスバーアレイを更新する。本発明の1つまたは複数の実施形態では、その結果は、クロスバーアレイ内の1つまたは複数のメモリスタのデバイスのコンダクタンスを調整するために使用される。方法1500はブロック1514で終了する。異なるステップまたは追加のステップの順序が方法1500に含まれ得、図15に示されるステップによって限定されることを意図するものではないことを理解されたい。
【0070】
図16を参照すると、本明細書に記載される教示にしたがって本発明の態様を実施するための処理システム1600が示されている。処理システムは、図4に示されるもののようなプロセッサ(CPU/GPUコア)に実装され得る。本発明のこの実施形態では、システム1600は、1つまたは複数の中央処理装置(プロセッサ)1601a、1601b、1601cなど(総称的にまたは一般的にプロセッサ1601と称される)を有する。本発明のいくつかの実施形態においては、各プロセッサ1601は、縮小命令セットコンピュータ(RISC)マイクロプロセッサを含むことができる。プロセッサ1601は、システムバス1613を介してシステムメモリ1614および様々な他のコンポーネントに結合される。リードオンリメモリ(ROM)1602は、システムバス1613に結合され、システム1600の特定の基本機能を制御する基本入出力システム(BIOS)を含むことができる。
【0071】
図16はさらに、システムバス1613に結合された入力/出力(I/O)アダプタ1607およびネットワークアダプタ1606を示す。I/Oアダプタ1607は、ハードディスク1603若しくはテープストレージドライブ1605、またはその組み合わせ、または他の任意の同様のコンポーネントと通信するスモールコンピュータシステムインターフェース(SCSI:Small Computer System Interface)アダプタとすることができる。I/Oアダプタ1607、ハードディスク1603、およびテープ記憶デバイス1605は、本明細書においてマスストレージ1604と総称される。処理システム1600上で実行するためのオペレーティングシステム1620は、マスストレージ1604に格納することができる。ネットワークアダプタ1606は、バス1613を外部ネットワーク1616に相互接続し、データ処理システム1600が他のそのようなシステムと通信することが可能になる。スクリーン(例えば、ディスプレイモニタ)1615は、ディスプレイアダプタ1612によってシステムバス1613に接続され、これは、グラフィックス集約型アプリケーションの性能を改善するためのグラフィックスアダプタおよびビデオコントローラを含むことができる。本発明のいくつかの実施形態においては、アダプタ1607、1606、および1612は、中間バスブリッジ(図示せず)を介してシステムバス1613に接続される1つまたは複数のI/Oバスに接続することが可能である。ハードディスクコントローラ、ネットワークアダプタ、およびグラフィックスアダプタなどの周辺デバイスを接続するための適したI/Oバスは通常、ペリフェラルコンポーネントインターコネクト(PCI)などの共通プロトコルを含む。追加の入力/出力デバイスは、ユーザインターフェースアダプタ1608およびディスプレイアダプタ1612を介してシステムバス1613に接続されるものとして示されている。キーボード1609、マウス1610、およびスピーカ1611は全て、ユーザインターフェースアダプタ1608を介してバス1613に相互接続され、これは、例えば、複数のデバイスアダプタを単一の集積回路に統合したスーパーI/Oチップを含むことができる。
【0072】
本発明の例示的な実施形態においては、処理システム1600は、グラフィックス処理ユニット1630を含む。グラフィックス処理ユニット1630は、ディスプレイに出力するように意図されたフレームバッファ内での画像の作成を加速するためにメモリを操作および変更するように設計された特別な電子回路である。一般に、グラフィックス処理ユニット1630は、コンピュータグラフィックスの操作および画像処理に非常に効率的であり、並列性の高い構造を持つため、大きなデータブロックの処理を並行して行うアルゴリズムでは、汎用CPUよりも有効である。
【0073】
したがって、図16のように構成されている場合、システム1600には、プロセッサ1601の形態の処理能力、システムメモリ1614およびマスストレージ1604を含むストレージ機能、キーボード1609およびマウス1610などの入力手段、並びにスピーカ1611およびディスプレイ1615を含む出力機能が含まれる。本発明のいくつかの実施形態においては、システムメモリ1614およびマスストレージ1604の一部は、図16に示す様々なコンポーネントの機能を調整するためのオペレーティングシステムを一括して格納する。
【0074】
本明細書で説明する本発明の実施形態は、ニューラルネットワーク訓練のための乗算に使用される数値のそれぞれを表現するためのビットストリーム内のビット位置を判定することによって、従来技術よりも改善される。また、本明細書で説明する本発明の実施形態は、ニューラルネットワークの訓練フェーズにおいてBLを変更することを可能にすることによって、従来技術よりも改善される。BLは初期BLから増加または低減させることができる。また、本明細書に記載される本発明の実施形態は、任意の重み更新を受け取る前にニューラルネットワークの初期値を提供することによって、これらの方法を使用するニューラルネットワークの訓練を加速することを提供する。
【0075】
本発明は、任意の可能な技術詳細レベルで統合化されたシステム、方法、若しくはコンピュータプログラム製品、またはその組み合わせであり得る。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含み得る。
【0076】
コンピュータ可読記憶媒体は、命令実行デバイスにより使用される命令を保持および記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光学ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、または前述したものの任意の適した組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは、次のもの、すなわち、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピディスク、機械的にエンコードされたデバイス、例えば、パンチカードまたは命令を記録した溝内の隆起構造、および前述したものの任意の適した組み合わせを含む。コンピュータ可読記憶媒体は、本明細書において使用される場合、電波若しくは他の自由に伝搬する電磁波、導波路若しくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号等の一時的な信号それ自体とは解釈されるべきではない。
【0077】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされてもよく、あるいは、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、若しくは無線ネットワーク、またはその組合せを介して、外部コンピュータまたは外部ストレージデバイスにダウンロードされてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、若しくはエッジサーバ、またはその組合せを備え得る。各コンピューティング/処理デバイス内のネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【0078】
本発明の動作を実行するためのコンピュータ可読プログラム命令はアセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路に対する構成データ、または例えばSmalltalk(登録商標)、またはC++などのオブジェクト指向プログラミング言語、および例えば「C」プログラミング言語または類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書かれたソース・コード若しくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に実行されてもよいし、スタンドアロンソフトウェアパッケージとしてユーザのコンピュータ上で部分的に実行されてもよいし、部分的にユーザのコンピュータ上で、かつ、部分的にリモートコンピュータ上で実行されてもよいし、リモートコンピュータ若しくはサーバ上で完全に実行されてもよい。後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続され得るか、または、接続は、(例えば、インターネットサービスプロバイダを使用してインターネットを通じて)外部コンピュータに行われ得る。幾つかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズしてよい。
【0079】
本発明の態様は、本明細書において、本発明の実施形態に係る方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図若しくはブロック図またはその両方を参照して、説明されている。フローチャート図若しくはブロック図またはその両方の各ブロック、およびフローチャート図若しくはブロック図またはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
【0080】
これらのコンピュータ可読プログラム命令を汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供して機械を生成してよく、それにより、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート若しくはブロック図、またはその両方の単数または複数のブロックで指定された機能/動作を実装する手段を作成するようになる。これらのコンピュータ可読プログラム命令はまた、命令が記憶されているコンピュータ可読記憶媒体が、フローチャート若しくはブロック図またはその両方の1つまたは複数のブロックに指定される機能/作用の態様を実装するための命令を含む製造物品を備えるべく、コンピュータ、プログラマブルデータ処理装置、または他のデバイスあるいはその組み合わせに特定のやり方で機能するように指示することができるコンピュータ可読記憶媒体に記憶されてもよい。
【0081】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブルデータ処理装置、または、他のデバイスにロードして、コンピュータ、他のプログラマブル装置、または、他のデバイス上で一連の動作段階を実行させることでコンピュータ実装プロセスを作ることもでき、これにより、コンピュータ、他のプログラマブル装置、または、他のデバイス上で実行される命令が、フローチャート若しくはブロック図の、またはこれらの両方の1つまたは複数のブロックで指定される機能/動作を実装するようになる。
【0082】
図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態に係るシステム、方法、およびコンピュータプログラム製品の考えられる実装形態のアーキテクチャ、機能、および動作を示している。これに関して、フローチャートまたはブロック図における各ブロックは、指定される論理機能を実装する1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または部分を表し得る。いくつかの代替的な実装形態において、ブロックに記されている機能は、図面に記されている順序とは異なる順序で行われ得る。例えば、連続して示されている2つのブロックは、実際には、実質的に同時に実行されてもよいし、ブロックは、関与する機能に依存して逆の順序で実行される場合もあり得る。ブロック図若しくはフローチャート図、またはその両方の各ブロック、並びにブロック図若しくはフローチャート図、またはその両方におけるブロックの組み合わせは、指定された機能若しくは動作を実行するか、または専用ハードウェアとコンピュータ命令との組み合わせを実行する専用ハードウェアベースシステムによって実装することができることにも留意されたい。
【0083】
本開示の様々な実施形態の説明は、例示目的で提示されてきたが、包括的になること、または開示された実施形態に限定されることが意図されるものではない。説明される実施形態の範囲および趣旨から逸脱することなく、多くの修正および変形が、当業者には明らかであろう。本明細書において使用される専門用語は、実施形態の原理、市場で見られる技術の実用的な適用若しくはそれに対する技術的改善を最も良好に説明し、または、本明細書において説明される実施形態を他の当業者が理解することを可能にするように選択されている。
本明細書によれば、以下の各項目もまた開示される。
[項目1]
アナログクロスバーアレイを更新するためのパルス生成についてのコンピュータ実装方法であって、上記コンピュータ実装方法は、
プロセッサにより、クロスバーアレイについてのパルス生成を使用して表すための、行列乗算に使用する数値を受信する段階と、
上記プロセッサにより、上記数値を表すための第1のビット長を受信する段階であって、上記第1のビット長は、変更可能なビット長である、段階と、
上記プロセッサにより、上記数値を表すための上記第1のビット長を有するパルス配列におけるパルス位置を選択する段階と、
上記プロセッサにより、上記パルス配列における選択された上記パルス位置を使用して計算を実行する段階と、
上記プロセッサにより、上記計算を使用して上記クロスバーアレイを更新する段階と
を備える、コンピュータ実装方法。
[項目2]
第2のビット長を選択する段階であって、上記第2のビット長は上記第1のビット長とは異なる、段階と、
上記数値を表す上記第2のビット長を有する更新されたパルス配列のためにパルス位置を選択する段階と、
上記更新されたパルス配列における上記選択されたパルス位置を使用して後続の計算を実行する段階と、
上記後続の計算を使用して上記クロスバーアレイを更新する段階であって、上記クロスバーアレイを更新する段階は、上記計算および上記後続の計算に少なくとも部分的に基づき、上記クロスバーアレイの1つまたは複数のメモリスタのデバイスのコンダクタンス値を更新する段階を含む、段階と
をさらに備える、項目1に記載のコンピュータ実装方法。
[項目3]
ニューラルネットワークの訓練フェーズにおいて上記第1のビット長を第2のビット長に変更する段階をさらに備える、項目1または2に記載のコンピュータ実装方法。
[項目4]
上記計算は、上記行列乗算に使用する上記数値と上記行列乗算に使用する第2の数値との外積演算を実行する段階を備える、項目1から3のいずれか一項に記載のコンピュータ実装方法。
[項目5]
ヒートマップを生成する段階であって、生成された上記ヒートマップは、第1のパルス配列と第2のパルス配列との間のパルス同時計数に少なくとも部分的に基づき、上記第1のパルス配列または上記第2のパルス配列のうちの少なくとも1つは上記選択されたパルス位置を含み、少なくとも1つの第1のパルス配列は上記数値に対応し、上記第2のパルス配列は第2の数値に対応する、段階をさらに備える、項目1から4のいずれか一項に記載のコンピュータ実装方法。
[項目6]
上記選択されたパルス位置を使用して真の乗算マップと上記生成されたヒートマップとを比較する段階であって、上記真の乗算マップは各要素について要素ごとの乗算を実行する、段階をさらに備える、項目5に記載のコンピュータ実装方法。
[項目7]
真の乗算マップと生成されたヒートマップとの間の誤差を判定する段階と、
上記真の乗算マップと上記生成されたヒートマップとの間の上記誤差を提示する段階と
をさらに備える、項目1から6のいずれか一項に記載のコンピュータ実装方法。
[項目8]
クロスバーアレイを更新するためのパルス生成を実装するについてのシステムであって、上記システムは、
1つまたは複数のメモリスタのデバイスを有するクロスバーアレイと、
上記クロスバーアレイのためのパルス生成を使用して表すための、行列乗算に使用する数値を受信することと、
上記数値を表すためのビット長を受信することであって、上記ビット長は変更可能なビット長である、受信することと、
上記数値を表すための上記ビット長を有するパルス配列におけるパルス位置を選択することと、
上記パルス配列における上記選択されたパルス位置を使用して計算を実行することと、
上記計算を使用して上記クロスバーアレイを更新することであって、上記クロスバーアレイの更新は上記1つまたは複数のメモリスタのデバイスの重みを変化する、更新することと
を行うように構成されたプロセッサと
を備える、システム。
[項目9]
上記プロセッサは、
第2のビット長を選択し、上記第2のビット長は上記ビット長とは異なり、
上記数値を表す上記第2のビット長を有する更新されたパルス配列のためにパルス位置を選択し、
上記更新されたパルス配列における上記選択されたパルス位置を使用して後続の計算を実行し、
上記後続の計算を使用して上記クロスバーアレイを更新し、上記クロスバーアレイの更新は、上記計算および上記後続の計算に少なくとも部分的に基づき、上記クロスバーアレイの1つまたは複数のメモリスタのデバイスのコンダクタンス値を更新する
ように構成されている、項目8に記載のシステム。
[項目10]
上記プロセッサは、ニューラルネットワークの訓練フェーズにおいて、上記ビット長を第2のビット長に変更するように構成されている、項目8または9に記載のシステム。
[項目11]
上記計算は、上記行列乗算に使用する数値と上記行列乗算に使用する第2の数値との外積演算を実行する段階を備える、項目8から10のいずれか一項に記載のシステム。
[項目12]
上記パルス配列における上記選択されたパルス位置は上記ビット長に少なくとも部分的に基づく、項目8から11のいずれか一項に記載のシステム。
[項目13]
上記プロセッサはさらに、ヒートマップを生成するように構成されており、上記生成されたヒートマップは、第1のパルス配列と第2のパルス配列との間のパルス同時計数に少なくとも部分的に基づき、上記第1のパルス配列または上記第2のパルス配列のうちの少なくとも1つは上記選択されたパルス位置を含む、項目8から12のいずれか一項に記載のシステム。
[項目14]
上記選択されたパルス位置を使用して、真の乗算マップを上記生成されたヒートマップに比較する段階であって、上記真の乗算マップは各要素のための要素ごとの乗算を実行する、段階と、
上記真の乗算マップと上記生成されたヒートマップとの間の誤差を判定する段階と、
上記真の乗算マップと上記生成されたヒートマップとの間の上記誤差を提示する段階と
をさらに備える、項目13に記載のシステム。
[項目15]
アナログクロスバーアレイを更新するためのパルス生成についてのコンピュータプログラムであって、
プロセッサに、
クロスバーアレイのためのパルス生成を使用して表すための、行列乗算に使用する数値を受信する手順と、
上記数値を表すためのビット長を受信する手順であって、上記ビット長は変更可能なビット長である、手順と、
上記数値を表すための上記ビット長を有するパルス配列におけるパルス位置を選択する手順と、
上記パルス配列における選択された上記パルス位置を使用して計算を実行する手順と、
上記計算を使用して上記クロスバーアレイを更新する手順であって、上記クロスバーアレイを更新する手順は、上記計算に少なくとも部分的に基づいて、上記クロスバーアレイの1つまたは複数のメモリスタのデバイスのコンダクタンス値を更新する手順を含む、手順と
を実行させる、コンピュータプログラム。
[項目16]
上記プロセッサに、
第2のビット長を選択する手順であって、上記第2のビット長は上記ビット長とは異なる、手順と、
上記数値を表すための上記第2のビット長を有する更新されたパルス配列のためのパルス位置を選択する手順と、
上記更新されたパルス配列における上記選択されたパルス位置を使用して後続の計算を実行する手順と、
上記後続の計算を使用して上記クロスバーアレイを更新する手順であって、上記クロスバーアレイを更新する手順は、上記計算および上記後続の計算に少なくとも部分的に基づき、上記クロスバーアレイの1つまたは複数のメモリスタのデバイスのコンダクタンス値を更新する手順を含む、手順と
を実行させる、項目15に記載のコンピュータプログラム。
[項目17]
上記プロセッサに、ニューラルネットワークの訓練フェーズにおいて上記ビット長を第2のビット長に変更する手順をさらに実行させる、項目15または16に記載のコンピュータプログラム。
[項目18]
上記プロセッサに、ニューラルネットワークのための第1のパルス配列と第2のパルス配列との外積を判定する手順をさらに実行させる、項目15から17のいずれか一項に記載のコンピュータプログラム。
[項目19]
上記プロセッサに、ヒートマップを生成する手順であって、上記生成されたヒートマップは、第1のパルス配列と第2のパルス配列との間のパルス同時計数に少なくとも部分的に基づき、上記第1のパルス配列または上記第2のパルス配列のうちの少なくとも1つは上記選択されたパルス位置を含む、手順をさらに実行させる、項目15から18のいずれか一項に記載のコンピュータプログラム。
[項目20]
上記プロセッサに、
上記選択されたパルス位置を使用して真の乗算マップを生成されたヒートマップに比較する手順であって、上記真の乗算マップは各要素のための要素ごとの乗算を実行する手順と、
上記真の乗算マップと上記生成されたヒートマップとの間の誤差を判定する手順と、
上記真の乗算マップと上記生成されたヒートマップとの間の上記誤差を提示する手順と
を実行させる、項目15から19のいずれか一項に記載のコンピュータプログラム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16