(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-27
(45)【発行日】2023-10-05
(54)【発明の名称】RPUアレイのためのノイズおよび信号管理
(51)【国際特許分類】
G06N 20/00 20190101AFI20230928BHJP
G06N 3/02 20060101ALI20230928BHJP
【FI】
G06N20/00
G06N3/02
(21)【出願番号】P 2021569493
(86)(22)【出願日】2020-04-09
(86)【国際出願番号】 IB2020053407
(87)【国際公開番号】W WO2020240288
(87)【国際公開日】2020-12-03
【審査請求日】2022-09-22
(32)【優先日】2019-05-31
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ラッシュ、マルテ ヨハネス
(72)【発明者】
【氏名】ゴクメン、タイフン
【審査官】児玉 崇晶
(56)【参考文献】
【文献】米国特許出願公開第2018/0293208(US,A1)
【文献】特表2019-502970(JP,A)
【文献】特開2017-010232(JP,A)
【文献】特表2020-514886(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 20/00
G06N 3/02
(57)【特許請求の範囲】
【請求項1】
ノイズおよび信号管理を伴う人工ニューラル・ネットワーク(ANN)のトレーニングのための方法であって、
抵抗処理ユニット(RPU)デバイスのアレイに、前記アレイへの入力ベクトルxのn個の要素のサイズgの集合群を処理するように構成された事前正規化器、および前記アレイからの出力ベクトルyのm個の要素のサイズgの集合群を処理するように構成された事後正規化器を提供するステップであって、前記アレイがm行n列を有する前記ANNの重み行列Wを表し、重み行列Wの重み値wが前記RPUデバイスの抵抗値として記憶される、前記提供するステップと、
前記事前正規化器のそれぞれの前記集合群に属する前記入力ベクトルxのすべての要素の平均μおよび標準偏差σをN個のベクトルにわたって計算し、前記事前正規化器に対する現在の平均μおよび標準偏差σの値を生成するステップであって、前記平均μおよび前記標準偏差σがN×g個の入力値に対して計算される、前記生成するステップと、
前記事前正規化器に対する前回記憶された平均μおよび標準偏差σの値を割引係数αならびに前記事前正規化器に対する前記現在の平均μおよび標準偏差σの値で更新し、前記事前正規化器に対する更新され記憶された平均μおよび標準偏差σの値を生成するステップと、
前記事前正規化器に対する前記更新され記憶された平均μおよび標準偏差σの値を使用して前記N×g個の入力値を事前正規化し、すべての前記事前正規化器からN個の正規化された入力ベクトルx
normを生成して、前記アレイを通る順方向サイクル・パスにおいてアナログ・ノイズを伴うW*x
normを計算するステップと、
前記事後正規化器のそれぞれの前記集合群に属する前記出力ベクトルyのすべての要素の前記平均μおよび前記標準偏差σを前記N個のベクトルにわたって計算し、前記事後正規化器に対する現在の平均μおよび標準偏差σの値を生成するステップであって、前記平均μおよび前記標準偏差σがN×g個の出力値に対して計算される、前記生成するステップと、
前記事後正規化器に対する前回記憶された平均μおよび標準偏差σの値を前記割引係数αならびに前記事後正規化器に対する前記現在の平均μおよび標準偏差σの値で更新し、前記事後正規化器に対する更新され記憶された平均μおよび標準偏差σの値を生成するステップと、
前記事後正規化器に対する前記更新され記憶された平均μおよび標準偏差σの値を使用して前記N×g個の出力値を事後正規化し、すべての前記事後正規化器からN個の正規化された出力ベクトルy
normを生成するステップと、
前記前回の標準偏差σを使用してN個の入力ベクトルdを変換し、N個の変換された入力ベクトルd
normを生成して、前記アレイを通る逆方向サイクル・パスにおいてアナログ・ノイズを伴うW
T*d
normを計算するステップと、
前記事前正規化器に対する前記前回の標準偏差σを使用してN個の出力ベクトルd’を変換して、N個の変換された出力ベクトルd’
normを生成するステップと
を含む、方法。
【請求項2】
前記事前正規化器および前記事後正規化器のそれぞれを初期化して、記憶された平均値を0に設定し、記憶された標準偏差値を1に設定するステップをさらに含む、請求項1に記載の方法。
【請求項3】
更新サイクル・パスにおいて、前記順方向サイクル・パスからのx
normおよび前記逆方向サイクル・パスからのd
normを用いて前記アレイを更新するステップをさらに含む、請求項1に記載の方法。
【請求項4】
前記割引係数αを使用して、前記事前正規化器に対する前記前回記憶された平均μおよび標準偏差σの値を(1-α)*ν
old+α*ν
newとして更新するステップであって、ν
oldが前記事前正規化器に対する前記前回の平均および標準偏差であり、ν
newが前記入力ベクトルxの前記要素に対して計算された前記平均および標準偏差である、前記更新するステップをさらに含む、請求項1に記載の方法。
【請求項5】
最初に前記割引係数αを0よりも大きく1よりも小さい値に設定するステップをさらに含む、請求項4に記載の方法。
【請求項6】
前記割引係数αを使用して、前記事後正規化器に対する前記前回記憶された平均μおよび標準偏差σの値を(1-α)*ν
old+α*ν
newとして更新するステップであって、ν
oldが前記事後正規化器に対する前記前回の平均および標準偏差であり、ν
newが前記出力ベクトルyの前記要素に対して計算された前記平均および標準偏差である、前記更新するステップをさらに含む、請求項1に記載の方法。
【請求項7】
最初に前記割引係数αを0よりも大きく1よりも小さい値に設定するステップをさらに含む、請求項6に記載の方法。
【請求項8】
前記事前正規化するステップが、
前記事前正規化器のそれぞれについて、前記N×g個の値を前記事前正規化器の前記前回の平均μで減算して結果を得るステップと、
前記結果を前記事前正規化器の前記前回の標準偏差σで除算するステップと
を含む、請求項1に記載の方法。
【請求項9】
前記N個の正規化された入力ベクトルd
normをアナログ・パルス幅に変換するステップと、
前記アレイを使用してアナログ・ノイズを伴うW
T*d
normを計算するステップと、
前記アレイからの前記出力ベクトルyをデジタルで表すステップと
をさらに含む、請求項1に記載の方法。
【請求項10】
前記N個の正規化された入力ベクトルx
normをアナログ・パルス幅に変換するステップと、
前記アレイを使用してアナログ・ノイズを伴うW*x
normを計算するステップと、
前記アレイからの前記N個の出力ベクトルd’をデジタルで表すステップと
をさらに含む、請求項1に記載の方法。
【請求項11】
前記N個の入力ベクトルdを変換する前記ステップが、前記N個の入力ベクトルdを前記事後正規化器に対する前記前回の標準偏差σで除算して、前記N個の変換された入力ベクトルd
normを生成するステップを含む、請求項1に記載の方法。
【請求項12】
前記事前正規化器および事後正規化器のそれぞれを初期化して、記憶された値νを0に設定し、記憶された値Δを1に設定するステップをさらに含む、請求項1に記載の方法。
【請求項13】
前記N個の入力ベクトルdを変換する前記ステップが、
前記事後正規化器を介して、前記N個の入力ベクトルdの前記N×g個の出力値の前記平均μとして、νを計算するステップと、
前記事後正規化器を介して、前記N個の入力ベクトルdの前記N×g個の出力値と、前記順方向サイクル・パスからの前記出力ベクトルyの値との相互相関Δを計算するステップと、
前記事後正規化器を介して、前記N個の入力ベクトルdの前記N×g個の出力値のそれぞれを、α×νとして計算された第1項で減算し、次いで、α×Δ×前記順方向サイクル・パスからの前記出力ベクトルyの前記値として計算された第2項で減算するステップと、
前記N個の入力ベクトルdを前記事後正規化器に対する前記前回の標準偏差σで除算して、前記N個の変換された入力ベクトルd
normを生成するステップと
を含む、請求項12に記載の方法。
【請求項14】
前記逆方向サイクル・パスの前記N個の出力ベクトルd’を変換する前記ステップが、前記N個の入力ベクトルdを前記事後正規化器に対する前記前回の標準偏差σで除算して、前記N個の変換された入力ベクトルd
normを生成するステップを含む、請求項11に記載の方法。
【請求項15】
前記N個の出力ベクトルd’を変換する前記ステップが、
前記事後正規化器を介して、前記N個の入力ベクトルdの前記N×g個の出力値の前記平均μとして、νを計算するステップと、
前記事後正規化器を介して、前記N個の入力ベクトルdの前記N×g個の出力値と、前記順方向サイクル・パスからの前記出力ベクトルyの値との相互相関Δを計算するステップと、
前記事後正規化器を介して、前記N個の入力ベクトルdの前記N×g個の出力値のそれぞれを、α×νとして計算された前記第1項で減算し、次いで、α×Δ×前記順方向サイクル・パスからの前記出力ベクトルyの前記値として計算された前記第2項で減算するステップと、
前記N個の入力ベクトルdを前記事後正規化器に対する前記前回の標準偏差σで除算して、前記N個の変換された入力ベクトルd
normを生成するステップと
を含む、請求項13に記載の方法。
【請求項16】
コンピュータ・プログラムであって、請求項1ないし15のいずれか1項に記載の方法の各ステップをコンピュータに実行させるための、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、抵抗処理ユニット(RPU)デバイスのアナログ・クロスポイント・アレイを有する人工ニューラル・ネットワーク(ANN)のトレーニングに関し、より詳細には、ANNのトレーニング中のRPUアレイのための高度なノイズおよび信号管理技術に関する。
【背景技術】
【0002】
人工ニューラル・ネットワーク(ANN)は、Gokmenらによる「Resistive Processing Unit」と題された米国特許出願公開第2017/0109628号に記載されている抵抗処理ユニット(RPU)などの抵抗デバイスのアナログ・クロスポイント・アレイで具現化することができる。本文献に記載されているように、各RPUは、第1の端子、第2の端子、および活性領域を含む。活性領域のコンダクタンス状態は、第1/第2の端子に信号を印加することによって更新/調整することができるRPUの重み値を識別する。
【0003】
ANNベースのモデルは、物体および音声の認識ならびに自然言語処理などの、様々な異なる認知ベースのタスクに使用されてきた。例えば、Gokmenらの「Training Deep Convolutional Neural Networks with Resistive Cross-point Devices」、Frontiers in Neuroscience、vol.11、article 538(October 2017)(13 pages)を参照されたい。ニューラル・ネットワークのトレーニングは、このようなタスクを実行するときに高レベルの精度を提供するために必要とされる。
【0004】
しかしながら、RPUアレイで実行されるベクトル-行列乗算演算は、本質的にアナログであるため、様々なノイズ源となりやすい。RPUアレイへの入力値が小さい場合(逆方向サイクル・パスなど)、出力信号yがノイズに埋もれてしまい、誤った結果が生成される可能性がある(すなわち、y=W.δ+「ノイズ」、W.δ≪「ノイズ」)。例えば、Gokmenらによる「Noise and Bound Management for RPU Array」と題された米国特許出願公開第2018/0293209号を参照されたい。アナログ・ノイズが要因となって、このようなアナログのRPUアレイを用いた正確なANNのトレーニングは、困難である。
【0005】
したがって、ANNのトレーニング中のアナログ・ノイズの影響を最小限に抑えるための技術が望ましい。
【発明の概要】
【0006】
本発明は、人工ニューラル・ネットワーク(ANN)のトレーニング中の抵抗処理ユニット(RPU)アレイのための高度なノイズおよび信号管理技術を提供する。本発明の一態様では、ノイズおよび信号管理を伴うANNのトレーニングのための方法が提供される。本方法は、RPUデバイスのアレイに、アレイへの入力ベクトルxのn個の要素のサイズgの集合群を処理するように構成された事前正規化器、およびアレイからの出力ベクトルyのm個の要素のサイズgの集合群を処理するように構成された事後正規化器を提供することであって、アレイがm行n列を有するANNの重み行列Wを表し、重み行列Wの重み値wがRPUデバイスの抵抗値として記憶される、提供することと、事前正規化器のそれぞれの集合群に属する入力ベクトルxのすべての要素の平均μおよび標準偏差σをN個のベクトルにわたって計算し、事前正規化器に対する現在の平均μおよび標準偏差σの値を生成することであって、平均μおよび標準偏差σがN×g個の入力値に対して計算される、生成することと、事前正規化器に対する前回記憶された平均μおよび標準偏差σの値を割引係数αならびに事前正規化器に対する現在の平均μおよび標準偏差σの値で更新し、事前正規化器に対する更新され記憶された平均μおよび標準偏差σの値を生成することと、事前正規化器に対する更新され記憶された平均μおよび標準偏差σの値を使用してN×g個の入力値を事前正規化し、すべての事前正規化器からN個の正規化された入力ベクトルxnormを生成して、アレイを通る順方向サイクル・パスにおいてアナログ・ノイズを伴うW*xnormを計算することと、事後正規化器のそれぞれの集合群に属する出力ベクトルyのすべての要素の平均μおよび標準偏差σをN個のベクトルにわたって計算し、事後正規化器に対する現在の平均μおよび標準偏差σの値を生成することであって、平均μおよび標準偏差σがN×g個の出力値に対して計算される、生成することと、事後正規化器に対する前回記憶された平均μおよび標準偏差σの値を割引係数αならびに事後正規化器に対する現在の平均μおよび標準偏差σの値で更新し、事後正規化器に対する更新され記憶された平均μおよび標準偏差σの値を生成することと、事後正規化器に対する更新され記憶された平均μおよび標準偏差σの値を使用してN×g個の出力値を事後正規化し、すべての事後正規化器からN個の正規化された出力ベクトルynormを生成することと、前回の標準偏差σを使用してN個の入力ベクトルdを変換し、N個の変換された入力ベクトルdnormを生成して、アレイを通る逆方向サイクル・パスにおいてアナログ・ノイズを伴うWT*dnormを計算することと、事前正規化器に対する前回の標準偏差σを使用してN個の出力ベクトルd’を変換して、N個の変換された出力ベクトルd’normを生成することとを含む。
【0007】
本発明のより完全な理解、ならびに本発明のさらなる特徴および利点は、以下の詳細な説明および図面を参照することによって得られるであろう。
【図面の簡単な説明】
【0008】
【
図1】本発明の実施形態による、抵抗処理ユニット(RPU)デバイスのアナログ・クロスポイント・アレイで具現化された人工ニューラル・ネットワーク(ANN)を示す図である。
【
図2A】本発明の実施形態による、ノイズおよび信号管理を伴うANNのトレーニングのための例示的な方法200の初期化フェーズと、トレーニング・フェーズの順方向サイクル・パスとを示す図である。
【
図2B】(
図2Aから続く)本発明の実施形態による例示的な方法200のトレーニング・フェーズの逆方向サイクル・パスを示す図である。
【
図2C】(
図2Bから続く)本発明の実施形態による例示的な方法200のトレーニング・フェーズの逆方向サイクル・パスの続きと、更新パスとを示す図である。
【
図3】本発明の実施形態に従って方法200を実施することができる、事前正規化器および事後正規化器を有する例示的なRPUアレイを示す図である。
【
図4】本発明の実施形態による本技術の1つまたは複数を実行する際に用いることができる例示的な装置を示す図である。
【発明を実施するための形態】
【0009】
上で強調したように、アナログ抵抗処理ユニット(RPU)アレイなどのアナログ抵抗クロスバー・アレイを用いた人工ニューラル・ネットワーク(ANN)のトレーニングは、アナログ・ノイズのために困難である。さらに、トレーニング・プロセスは、アレイに使用されるアナログ・デジタル変換器(ADC)およびデジタル・アナログ変換器(DAC)の有界範囲によって制限される。すなわち、以下で詳細に説明するように、DACおよびADCは、RPUへのデジタル入力をアナログ信号に変換し、RPUからの出力を変換してデジタル信号に戻すためにそれぞれ使用される。
【0010】
有利には、本明細書では、これらのノイズおよび信号限界の制限を克服するために、入力および出力をそれに応じて正規化するための技術が提供される。例えば、以下で詳細に説明するように、RPUアレイへの入力の正規化(すなわち、平均および分散をゼロにすること)は、複数の入力値または入力値の集合あるいはその両方にわたって平均および分散を計算し記憶して、移動平均方式で平均および分散を更新することによって実行される。
【0011】
上述したように、ANNは、RPUデバイスのアナログ・クロスポイント・アレイで具現化することができる。例えば、
図1を参照されたい。
図1に示すように、アルゴリズム的な(抽象的な)重み行列100の各パラメータ(重みw
ij)は、ハードウェア上の単一のRPUデバイス(RPU
ij)、すなわち、RPUデバイスの物理的なクロスポイント・アレイ102にマッピングされる。クロスポイント・アレイ102は、一連の導電性行ワイヤ104と、導電性行ワイヤ104に直交し、交差するように配向された一連の導電性列ワイヤ106とを有する。導電性行ワイヤ104と列ワイヤ106との交点は、RPUデバイス108によって分離され、RPUデバイス108のクロスポイント・アレイ102を形成する。米国特許出願公開第2017/0109628号に記載されているように、各RPUデバイス108は、第1の端子、第2の端子、および活性領域を含むことができる。活性領域の導通状態は、RPUデバイス108の重み値を識別し、この重み値が、第1/第2の端子に信号を印加することによって更新/調整され得る。さらに、3端子(またはさらに多くの端子)デバイスは、余分な端子を制御することによって、2端子抵抗メモリ・デバイスとして効果的に機能することができる。3端子RPUデバイスの説明については、例えば、Kimらの「Analog CMOS-based Resistive Processing Unit for Deep Neural Network Training」、2017 IEEE 60th International Midwest Symposium on Circuits and Systems (MWACAS)、(August 2017)(4 pages)を参照されたい。
【0012】
各RPUデバイス108(RPUij)は、クロスポイント・アレイ102のその位置(すなわち、i番目の行およびj番目の列)に基づいて一意に識別される。例えば、クロスポイント・アレイ102の上から下へ、そして左から右へと進んで、第1の導電性行ワイヤ104と第1の導電性列ワイヤ106との交点にあるRPUデバイス108は、RPU11として示され、第1の導電性行ワイヤ104と第2の導電性列ワイヤ106との交点にあるRPUデバイス108は、RPU12として示され、以下同様である。クロスポイント・アレイ102のRPUデバイス108への重み行列100の重みパラメータのマッピングは、同じ規則に従う。例えば、重み行列100の重みwi1は、クロスポイント・アレイ102のRPUi1にマッピングされ、重み行列100の重みwi2は、クロスポイント・アレイ102のRPUi2にマッピングされ、以下同様である。
【0013】
クロスポイント・アレイ102のRPUデバイス108は、ANNのニューロン間の重み付けされた接続として機能する。RPUデバイス108の抵抗は、個々の導電性行ワイヤ104と列ワイヤ106との間に印加される電圧を制御することによって変更することができる。抵抗を変更することは、例えば、高抵抗状態または低抵抗状態に基づいて、RPUデバイス108にデータをどのように記憶するかである。RPUデバイス108の抵抗状態は、電圧を印加して、ターゲットRPUデバイス108を通過する電流を測定することによって読み取られる。重みに関わるすべての操作は、RPUデバイス108によって完全に並列に実行される。
【0014】
機械学習および認知科学では、ANNベースのモデルは、動物、特に脳の生物学的ニューラル・ネットワークに着想を得た統計的学習モデルのファミリである。これらのモデルを使用して、一般に未知である多数の入力および接続の重みに依存するシステムならびに認知機能を推定または近似することができる。ANNは、しばしば、電子信号の形態で相互に「メッセージ」を交換するシミュレートされた「ニューロン」として働く相互接続されたプロセッサ要素のいわゆる「ニューロモーフィック」システムとして具現化される。シミュレートされたニューロン間で電子メッセージを伝達するANNの接続には、所与の接続の強弱に対応した数値重みが与えられる。これらの数値重みは、経験に基づいて調整およびチューニングすることができ、ANNを入力に適応させ、学習可能にする。例えば、手書き認識用のANNは、入力画像のピクセルによって活性化され得る入力ニューロンのセットによって定義される。ネットワークの設計者によって決定された関数によって重み付けおよび変換された後、これらの入力ニューロンの活性化は、他の下流ニューロンに渡される。このプロセスは、出力ニューロンが活性化されるまで繰り返される。活性化された出力ニューロンは、どの文字が読み取られたかを決定する。
【0015】
以下でさらに詳細に説明するように、ANNは、増分勾配降下法または確率的勾配降下法(SGD)プロセスを用いてトレーニングすることができ、本プロセスでは、各パラメータ(重みwij)の誤差勾配が逆伝播を使用して計算される。例えば、Rumelhartらの「Learning representations by back-propagating errors」、Nature 323、pp.533-536(October 1986)を参照されたい。逆伝播は、順方向サイクル、逆方向サイクル、および重み更新サイクルの3つのサイクルで実行され、これらのサイクルは、収束基準が満たされるまで複数回繰り返される。
【0016】
ANNベースのモデルは、複数の処理層で構成され、複数の抽象度でデータの表現を学習する。例えば、LeCunらの、「Deep Learning」、Nature 521、pp.436-444 (May 2015)を参照されたい。N個の入力ニューロンがM個の出力ニューロンに接続されている単一の処理層の場合、順方向サイクルは、ベクトル-行列乗算(y=Wx)を計算することを含み、長さNのベクトルxが入力ニューロンの活動を表し、サイズM×Nの行列Wが入力ニューロンと出力ニューロンの各ペア間の重み値を記憶する。結果として得られる長さMのベクトルyは、抵抗メモリ素子のそれぞれに対して非線形活性化を行うことによってさらに処理され、次いで次の層に渡される。
【0017】
情報が最終出力層に到達すると、逆方向サイクルは、誤差信号を計算し、ANNを通して誤差信号を逆伝播することを含む。単一層での逆方向サイクルはまた、重み行列の(各行と対応する列を入れ替える)転置に対するベクトル-行列乗算(z=WTδ)を含み、長さMのベクトルδは、出力ニューロンによって計算された誤差を表し、長さNのベクトルzは、ニューロンの非線形性の微分を使用してさらに処理された後、前の層に渡される。
【0018】
最後に、重み更新サイクルにおいて、重み行列Wが、順方向サイクルおよび逆方向サイクルで使用された2つのベクトルの外積を実行することによって更新される。2つのベクトルのこの外積は、しばしば、W←W+η(δxT)として表され、ここで、ηはグローバルな学習率である。
【0019】
この逆伝播プロセス中に重み行列Wに対して実行される演算のすべては、対応する数のm行n列を有するRPUデバイス108のクロスポイント・アレイ102を用いて実施することができ、クロスポイント・アレイ102内の記憶されたコンダクタンス値が行列Wを形成する。順方向サイクルでは、入力ベクトルxが導電性列ワイヤ106のそれぞれを通して電圧パルスとして伝達され、結果として得られるベクトルyが導電性行ワイヤ104からの電流出力として読み取られる。同様に、電圧パルスが逆方向サイクルへの入力として導電性行ワイヤ104から供給されると、重み行列の転置WTに対してベクトル-行列乗算が計算される。最後に、更新サイクルにおいて、ベクトルxおよびδを表す電圧パルスが、導電性列ワイヤ106および導電性行ワイヤ104から同時に供給される。このように、各RPUデバイス108は、対応する導電性列ワイヤ106および導電性行ワイヤ104から来る電圧パルスを処理することによって局所的な乗算および加算演算を実行し、これにより、増分的な重み更新を達成する。
【0020】
上述したように、RPUアレイで実行される演算は、本質的にアナログであるため、様々なノイズ源となりやすい。例えば、Gokmenらによる「Noise and Bound Management for RPU Array」と題された米国特許出願公開第2018/0293209号を参照されたい。
【0021】
米国特許出願公開第2018/0293209号に記載されているようなノイズ管理手法では、出力ノイズ振幅はσmax(|(xi)|)のオーダであり、ここで、σ(シグマ)は、RPUアレイのアナログ・ノイズの標準偏差である。RPUアレイのさらなる詳細については、例えば、Gokmenに交付された「Convolutional Neural Networks Using Resistive Processing Unit Array」と題された米国特許第9,646,243号を参照されたい。
【0022】
RPUアレイ計算の信号対雑音比(SNR)は、近似的に以下の通りである。
【数1】
なぜならば、||y||∝||W|| ||x||であるからである。したがって、確率的勾配降下法プロセスによってSNRを改善する仕方は、ANN学習中に(出力限界または重み限界に達するまで)重みを増加させることである。
【0023】
しかしながら、このようにして重みを増加させることには、いくつかの顕著な欠点がある。例えば、RPUデバイス自体、ANNのトレーニングに使用することができる重み範囲が限られている。すなわち、RPUデバイスの重み範囲(抵抗値)は、限定された有限の状態分解能を有する有界範囲に制限される。RPUデバイスでは、(ゲインを単にコード化するための)状態の数も制限されている。さらに、多くの更新が必要になる場合があり、そうすると、ドリフトが望ましくないほど加速する可能性がある。特に重みがゼロに減衰/ドリフトする場合、大きな重みを維持することに関連した高いコストも(必要な更新の回数という点で)かかる。
【0024】
また、畳み込みニューラル・ネットワークでは、重み行列の複数の行が異なる出力特徴(チャネル)をコード化し、1つの行(入力)が複数の入力チャネルを含む。出力チャネルi当たりのSNRは、以下の通りである。
【数2】
したがって、(逆方向サイクル・パスの場合など)出力信号が小さな|y
i|である場合、(すべての入力に対して絶対最大値で単に除算する)ノイズ管理は、高振幅入力チャネルの方に偏る可能性があり、ほとんどの低振幅入力は、抑制され、ノイズ・フロアに埋もれてしまう。
【0025】
有利なことに、本技術は、複数の入力値または入力値の集合あるいはその両方にわたって平均および分散を計算して記憶し、移動平均方式で平均および分散を更新して、RPUアレイへの入力を正規化する(例えば、平均および分散をゼロにする)ことによって、これらのノイズおよび信号限界の制限を克服する。例えば、ノイズおよび信号管理を伴うANNのトレーニングについては、
図2A~
図2Cの方法200を参照されたい。
【0026】
図2A~
図2Cに示すように、方法200は、初期化フェーズと、それに続く順方向サイクル・パス、逆方向サイクル・パス、および重み更新パスを有するトレーニング・フェーズとを有する。RPUアレイは、m行n列を有するANNの重み行列Wを表すために使用される。例えば、
図3のRPUアレイ300を参照されたい。上記の
図1の説明に関連して説明したように、重み行列Wの重み値wは、アレイ300内のRPUデバイス(「RPU」とラベル付けされている)の抵抗値として記憶される。
図3に示すように、正規化器は、アレイ300への各入力に対して(「各入力に対する正規化器」とラベル付けされて)提供され、本明細書では「事前正規化器」とも呼ばれ、同様にアレイ300からの各出力に対して(「各出力に対する正規化器」とラベル付けされて)提供され、本明細書では「事後正規化器」とも呼ばれる。例示的な実施形態によると、事前正規化器および事後正規化器は、RPUアレイの外部のハードウェア、例えば、以下の
図4の説明に関連して説明される装置400などによって制御され、これにより、事前正規化器および事後正規化器は、データを交換することができる。
【0027】
一般に、各入力信号の事前正規化は、以下のように表すことができる。
【数3】
また、各出力信号の事後正規化は、以下のように表すことができる。
【数4】
上で強調したように、また以下で詳細に説明するように、(事前/事後)正規化器iの平均μ
i(ミュー)および分散(すなわち、標準偏差)σ
i(シグマ)の値は、入力
【数5】
(tは現在の反復/バッチである)の何らかの(リーキー(leaky)な)移動平均によって推定され、ここで、
【数6】
は、以下の1)、2)または3)あるいはその組合せのいずれかである。1)単一の現在の入力。
【数7】
ここで、整数a≦0である。2)単一の入力からの値のバッチであるが、先行する時間ステップを含む。
【数8】
ここで整数a≦0かつb≦aである。3)μ
i、σ
iが入力群によって共有されている場合、
【数9】
は、共有された入力群の入力バッチのすべてを含み、例えば、
【数10】
であり、これは、入力1および2がグルーピングされている場合である。上記の式10~12において、事後正規化器のμおよびσに対しては、xがy’に置き換えられる。
【0028】
各パラメータμ
iは、
【数11】
に従って、周期的に(例えば、a-b時間ステップごとに1回)更新され、ここで、
【数12】
は
【数13】
の平均を示す。量σ
iも、同じデータ集合
【数14】
を使用するが、
【数15】
および
【数16】
(ここでε≧0)を計算して周期的に(例えば、a-b時間ステップごとに1回)更新される。αおよびβは、事前正規化器側および事後正規化器側のすべての正規化器間で共有されるパラメータであるが、事前正規化器と事後正規化器とでは異なる可能性がある。特に断らない限り、βは、1-αで与えられる。
【0029】
方法200を参照すると、
図2Aに示すように、初期化フェーズは、ステップ202において、n
pre(0とn個の入力値との間の整数)個の事前正規化器(
図3を参照)をすべて初期化して、それらのそれぞれの記憶されたμ(ミュー)値を0に設定し、それらのそれぞれの記憶されたσ(シグマ)値を1に設定し、m
post(0とm個の出力値との間の整数)個の事後正規化器(
図3を参照)をすべて初期化して、それらのそれぞれの記憶されたμ値を0に設定し、それらのそれぞれの記憶されたσ値を1に設定することによって開始する。
【0030】
任意選択で、ステップ204において、事前正規化器をすべて初期化して、それらのそれぞれの記憶された(移動平均係数)ν(ニュー)値を0に設定し、それらのそれぞれの記憶された(相互相関係数)Δ(デルタ)値を1に設定し、事後正規化器をすべて初期化して、それらのそれぞれの記憶されたν値を0に設定し、それらのそれぞれの記憶されたΔ値を1に設定する。ステップ204は、逆方向サイクル・パス・タイプa)またはb)のどちらが選択されるかに依存するため、任意選択である(以下参照)。例えば、事前正規化器および事後正規化器におけるνおよびΔの初期化は、逆方向サイクル・パス・タイプb)が選択されている場合にのみ必要である。
【0031】
各事前正規化器は、アレイ300への入力ベクトルのn個の要素群を処理するように構成され、各事前正規化器によって処理されるn個の要素群は、以降固定される。同様に、事後正規化器のそれぞれは、アレイ300からの出力ベクトルのm個の要素群を処理するように構成され、各事後正規化器によって処理されるm個の要素群は、以降固定される。
【0032】
ステップ206において、割引係数α(アルファ)(上記参照)を0よりも大きく1よりも小さい値に設定する。この値は、一方の側のすべての正規化器(例えば、事前正規化器)では同じであるが、事前正規化器と事後正規化器に対して別々に選択されてもよい。特に断らない限り、βは、1-αで与えられる。ここで、(ステップ202~206で実行される)初期化フェーズが完了することになる。例示的な実施形態によると、初期化フェーズまたはトレーニング・フェーズあるいはその両方の1つもしくは複数のステップは、RPUアレイ・ハードウェアの外部で、例えば、以下の
図4の説明に関連して説明される装置400などの装置によって実行されることに留意されたい。
【0033】
図2Aに示すように、方法200の次のフェーズは、トレーニング・フェーズである。上述したように、ANNのトレーニングは、逆伝播を伴うSGDプロセスを含むことができる。一般に、逆伝播は、順方向サイクル、逆方向サイクル、および重み更新サイクルの3つのサイクルで実行され、これらのサイクルは、収束基準が満たされるまで複数回繰り返される(複数回の反復)。逆伝播中に使用されるサイクルの一般的な説明については、例えば、「DNN Training with Asymmetric RPU Devices」と題されたTayfun Gokmenによる米国特許出願第16/400,674号を参照されたい。
【0034】
図2に示すように、トレーニング・フェーズは、順方向サイクル・パスで開始する。本技術によると、順方向サイクル・パスの各反復iにおいて、N個の入力ベクトルx(例えば、ミニバッチ)が、例えば、ランダム・アクセス・メモリを有するデジタル・ハードウェアに記憶される。各入力ベクトルxは、n個の要素を有する。ステップ208において、現在の入力ベクトルxが事前正規化器に提供される(
図3の「現在の入力x」参照、各円302は、RPUアレイ300への別個の入力ベクトルxを表す)。上で強調したように、プロセスの複数の反復が実行される。反復の内側ループでは、現在の入力ベクトルxがプロセスへの最初の入力である(以下参照)。反復の外側ループ(例えば、ミニバッチに対する)では、前回記憶された値が割引方式で更新される(以下参照)。
【0035】
すなわち、ステップ210において、各事前正規化器は、その集合群に属する現在の入力ベクトルxのすべての要素nの平均μおよび標準偏差σの現在の値を、N個のベクトルすべてにわたって計算する。その集合群のサイズがgである場合、平均μおよび標準偏差σは、N×g個の入力値に対して計算される。Nおよびgが1の場合、移動平均および標準偏差は、前回記憶された平均μおよび標準偏差σの値を使用して計算される。
【0036】
次いで、N×g個の入力値は、割引係数αによって割り引かれた、事前正規化器に対して記憶された平均μおよび標準偏差σを使用して事前正規化される。例えば、例示的な実施形態によると、ステップ212において、各事前正規化器は、最後(前回)の反復iからの前回記憶されたμおよびσがあれば、これらを(ステップ210からの)割引係数α(アルファ)を用いた割引方式で新たに計算された値によって更新し、すなわち、古い(前回記憶された)値νoldの1マイナスα倍に、新しい値νnewのα倍を加えたもの、すなわち、(1-α)*νold+α*νnewを取り、更新された結果を記憶する。ステップ214において、各事前正規化器は、N×g個の入力値すべてを、その記憶されたμで減算し、その結果を、その記憶されたσで除算する。例えば、上記の式8を参照されたい。事前正規化器はともに、N個の正規化された入力ベクトルxnormを生成する。
【0037】
N個の正規化された入力ベクトルx
norm(
図3の「正規化された入力x’」参照)のそれぞれについて、行列-ベクトル乗算がアレイ300を用いて実行され、アナログ・ノイズを伴うW*x
normが計算される。ステップ216を参照されたい。例示的な実施形態によると、ステップ216は、i)N個の正規化された入力ベクトルx
normを(例えば、デジタル・アナログ変換器(DAC)(図示せず)を使用して)アナログ・パルス幅に変換することと、ii)アレイ300を介してアナログ・ノイズを伴うW*x
normを計算することと(アナログ計算は常にノイズが多い)、iii)アレイ300からの出力ベクトルyを(例えば、アナログ・デジタル変換器(ADC)(図示せず)を使用して)デジタルで表すこととを含む。ここで、N個の出力ベクトルyすべてがyベクトルとしてデジタル形式で記憶されることになる。デジタルで記憶されるベクトルの場合、DACおよびADCが一般的に必要である。しかしながら、N*g=1の場合は、アナログおよびデジタル変換なしで済ませることが可能である。
【0038】
ステップ218において、各事後正規化器は、その集合群に属する現在の出力ベクトルy(例えば、
図3の「現在の出力y’」を参照)のすべての要素の平均μおよび標準偏差σの現在の値を、すべてのN個のベクトルにわたって計算する。その集合群のサイズがgである場合、平均μおよび標準偏差σは、N×g個の出力値に対して計算される。Nおよびgが1である場合、移動平均および標準偏差は、前回記憶された平均μおよび標準偏差σの値を使用して計算される。
【0039】
次いで、N×g個の出力値は、割引係数αによって割り引かれた、事後正規化器に対して記憶された平均μおよび標準偏差σを使用して事後正規化される。例えば、例示的な実施形態によると、ステップ220において、各事後正規化器は、最後(前回)の反復iからの前回記憶されたμおよびσがあれば、これらを(ステップ218からの)割引係数α(アルファ)を用いた割引方式で新たに計算された値によって更新し、すなわち、上記したように、古い(前回記憶された)値νoldの1マイナスα倍に、新しい値νnewのα倍を加えたもの、すなわち、(1-α)*νold+α*νnewを取り、更新された結果を記憶する。ステップ222において、各事後正規化器は、N×g個の出力値すべてを、その記憶されたμで減算し、その結果を、その記憶されたσで除算する。例えば、上記の式9を参照されたい。
【0040】
事後正規化器はともに、N個の正規化された出力ベクトルynormを生成する。これらの正規化された出力ベクトルynormは、(1つのANN層に対する)RPUアレイ300ハードウェアの最終出力を表し、例えば、活性化関数または別の層が次に計算されることがある。
【0041】
(
図2Aから続く)
図2Bに示すように、トレーニング・フェーズは、次に逆方向サイクル・パスを含む。逆方向サイクル・パスの各反復iにおいて、N個の入力ベクトルdが記憶される(例えば、ハードウェアのデジタル部分に、すぐ上位の層から戻される)。各入力ベクトルdは、m個の要素を有する。
【0042】
一般に、逆方向サイクル・パスでは、x’がすでに正規化された入力であり、d’が勾配入力である場合、逆方向サイクル・パスの出力dは、以下のいずれかである。
【数17】
【数18】
ここで、順序付けされた入力
【数19】
および
【数20】
の集合は、上記で
【数21】
について説明したように(同一の順序で)構成されているが、代わりに正規化された入力x’
tおよび勾配入力d’
tから構成されている。αは、上記の順方向パスについて説明したものと同じ割引係数である。パラメータν
iは、
【数22】
として周期的に更新および計算され、ここで、β*およびα*は、固定パラメータであり、例えば、β*=0およびα*=1であり、デフォルトでは、1-αおよびαにそれぞれ等しい。量γ
iは、
【数23】
として周期的に更新および計算され、ここで、積は、2つの順序付けされた集合において互いに対応するx’とdのペアに沿ったものだけであることを意味する。同様に、事後正規化のステップでは、x’およびd’の代わりに、正規化された出力信号yおよび対応する勾配入力が取られる。
【0043】
上で強調したように、本技術によると、2つの異なるタイプの逆方向サイクル・パスが企図され、本明細書では、逆方向サイクル・パス・タイプa)およびタイプb)と呼ばれる。各シナリオでは、最後の事後正規化の反復からの事後正規化器に対する前回の標準偏差σを使用して、逆方向サイクル・パスの入力ベクトルdを変換し、N個の変換された入力ベクトルdnormを生成することを含む。すなわち、例示的な一実施形態では、逆方向サイクル・パス・タイプa)は、ステップ224で開始し、各事後正規化器は、対応する要素グルーピングを使用して、dベクトルの要素のN×d個すべてを、(最後の事後正規化の反復からの、割り引かれた)前回記憶されたσで除算し、それによって、事後正規化器はともに、N個の変換された入力ベクトルdnormを生成する。
【0044】
代替として、別の例示的な実施形態では、逆方向サイクル・パス・タイプb)は、ステップ226で開始し、各事後正規化器は、ベクトルdの対応するN×g個の出力値の平均μを計算し、μをν(ニュー)として記憶し、それによって、νの古い値を割引係数αで割り引く。N×g個の出力値が1である場合、移動平均は、(最後の事後正規化の反復からの、割り引かれた)νの前回の値を使用して計算される。ステップ228において、ベクトルdのN×g個の出力値と、順方向サイクル・パス中の出力ベクトルyの対応する値との相互相関が計算される。これは、Δデルタとして記憶され、それによって、Δの古い値が割引係数αで割り引かれる。N×g個の出力値が1の場合、実行中の相互相関は、(最後の事後正規化の反復からの、割り引かれた)前回のΔの値を使用して計算される。ステップ230において、ベクトルdのN×g個の出力値のそれぞれは、アルファ×ニューとして計算された第1項で減算され、次いで、アルファ×デルタ×順方向パスからのyベクトルの対応する要素値として計算された第2項で減算される。最後に、ステップ232において、各事後正規化器は、対応する要素グルーピングを使用して、dベクトルの要素のN×d個すべてを(最後の事後正規化の反復からの、割り引かれた)前回記憶されたσで除算し、それによって、事後正規化器はともに、N個の変換された入力ベクトルdnormを生成する。
【0045】
逆方向サイクル・パス・タイプa)またはタイプb)のいずれかを用いて、N個の変換された入力ベクトルdnormのそれぞれについて、アレイ300を用いて、転置行列-ベクトル乗算を実行して、アナログ・ノイズを伴うWT*dnormを計算する。ステップ234を参照されたい。例示的な実施形態によると、ステップ234は、i)N個の変換された入力ベクトルdnormを(例えば、デジタル・アナログ変換器(DAC)(図示せず)を使用して)アナログ・パルス幅に変換することと、ii)アレイ300を介してアナログ・ノイズを伴うWT*dnormを計算することと、iii)アレイ300からの出力ベクトルd’を(例えば、アナログ・デジタル変換器(ADC)(図示せず)を使用して)デジタルに戻すこととを含む。ここで、N個の出力ベクトルd’すべてがデジタル形式で記憶されることになる。
【0046】
転置行列-ベクトル乗算に続いて、事前正規化器の動作は、逆方向サイクル・パス・タイプa)またはタイプb)のどちらが選択されたかによって再び異なる。逆方向サイクル・パス・タイプa)がステップ224で選択された場合、プロセスは、タイプa)の逆方向サイクル・パスを使用して同じやり方で進む。逆に、逆方向サイクル・パス・タイプb)がステップ226~232で選択された場合、プロセスは、タイプb)の逆方向サイクル・パスを使用して同じやり方で進む。各シナリオでは、最後の事前正規化反復からの事前正規化器に対する前回の標準偏差σを使用して、逆方向サイクル・パスの出力ベクトルd’を変換して、N個の変換された出力ベクトルd’
normを生成することを含む。すべての事前正規化器はともに、N個の変換された出力ベクトルd’
normを生成し、これは、逆方向サイクル・パス中の(1つのANN層に対する)RPUハードウェアの最終出力を表す。(
図2Bから続く)
図2Cを参照されたい。すなわち、例示的な一実施形態では、逆方向サイクル・パス・タイプa)は、ステップ236に進み、各事前正規化器は、対応する要素グルーピングを使用して、d’ベクトルの要素のN×g個すべてを、(最後の事前正規化の反復からの、割り引かれた)前回記憶されたσによって除算し、それによって、事前正規化器はともに、N個の変換された出力ベクトルd’
normを生成する。
【0047】
代替として、別の例示的な実施形態では、逆方向サイクル・パス・タイプb)は、ステップ238に進み、各事前正規化器は、ベクトルd’の対応するN×g個の出力値の平均μを計算し、μをν(ニュー)として記憶し、それによって、νの古い値を割引係数αで割り引く。N×g個の出力値が1である場合、移動平均は、(最後の事後正規化の反復からの、割り引かれた)νの前回の値を使用して計算される。ステップ240において、順方向サイクル・パス中にベクトルd’のN×g個の出力値と入力ベクトルxの対応する値との相互相関が計算される。これは、Δとして記憶され、それによって、Δの古い値を割引係数αで割り引く。N×g個の出力値が1である場合、実行中の相互相関は、(最後の事前正規化の反復からの、割り引かれた)前回のΔの値を使用して計算される。ステップ242において、ベクトルd’のN×g個の出力値のそれぞれは、アルファ×ニューとして計算された第1項で減算され、次いで、アルファ×デルタ×順方向パスからのxベクトルの対応する要素値として計算された第2項で減算される。最後に、ステップ244において、各事前正規化器は、対応する要素グルーピングを使用して、d’ベクトルの要素のN×d個すべてを(最後の事前正規化の反復からの、割り引かれた)前回記憶されたσで除算し、それによって、事後正規化器はともにN個の変換された入力ベクトルd’normを生成する。
【0048】
図2Cに示すように、トレーニング・フェーズは、次に、重み更新サイクル・パスを含む。すなわち、RPUアレイ300は、順方向サイクルおよび逆方向サイクルのパス中にそれぞれ計算されたx
normおよびd’
normベクトルで更新される。トレーニング・フェーズが完了した後、システムは、推論モードで動作することもできる。このモードでは、更新フェーズまたは逆方向フェーズは行われない。代わりに、上述したように順方向パスのみが計算される。ただし、すべての事前正規化器または事後正規化器の記憶された値はすべて、もはや更新されず、前回のトレーニング・フェーズからの事前正規化器および事後正規化器の記憶された値のみが正規化ステップに使用される。
【0049】
本発明は、任意の可能な技術的詳細レベルの統合において、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。
【0050】
コンピュータ可読記憶媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形のデバイスとすることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述の任意の適切な組合せであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチ・カードまたは命令が記録された溝内の隆起構造などの機械的に符号化されたデバイス、および前述の任意の適切な組合せが含まれる。コンピュータ可読記憶媒体は、本明細書で使用される場合、電波もしくは他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を通して伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通して送信される電気信号などの、それ自体一過性の信号であると解釈されるべきではない。
【0051】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークまたはワイヤレス・ネットワークあるいはその組合せを介して、外部コンピュータもしくは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを含むことができる。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
【0052】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の構成データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで記述されたソースコードあるいはオブジェクトコードのいずれかであってもよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、一部はユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、一部はユーザのコンピュータ上で、一部はリモート・コンピュータ上で、または完全にリモート・コンピュータまたはサーバ上で実行されてもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてもよい。一部の実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行することができる。
【0053】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照して本明細書に記載されている。流れ図またはブロック図あるいはその両方の各ブロック、ならびに流れ図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実施することができることを理解されよう。
【0054】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為を実施するための手段を作成するように、コンピュータのプロセッサまたは他のプログラム可能なデータ処理装置に提供されて、機械を生成することができる。これらのコンピュータ可読プログラム命令はまた、内部に命令が記憶されたコンピュータ可読記憶媒体が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為の態様を実施する命令を含む製品を構成するように、コンピュータ、プログラム可能なデータ処理装置、または他の装置あるいはその組合せに特定のやり方で機能するように指示することができるコンピュータ可読記憶媒体に記憶されてもよい。
【0055】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能な装置、または他のデバイス上で実行される命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為を実施するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされ、一連の動作ステップをコンピュータ、他のプログラム可能な装置、または他のデバイス上で実行させて、コンピュータ実装プロセスを生成することができる。
【0056】
図中の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能、および動作を示す。これに関して、流れ図またはブロック図の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を構成する、モジュール、セグメント、または命令の一部を表すことができる。一部の代替の実施態様では、ブロックに示されている機能は、図に示されている順序とは異なる順序で行われてもよい。例えば、連続して示される2つのブロックは、実際には、1つのステップとして達成されてもよく、同時に、実質的に同時に、部分的または全体的に時間的に重複して実行されてもよく、あるいはブロックは、関与する機能に応じて逆の順序で実行されることがあってもよい。ブロック図または流れ図あるいはその両方の各ブロック、およびブロック図または流れ図あるいはその両方のブロックの組合せは、指定された機能もしくは行為を実行する、または専用のハードウェアおよびコンピュータ命令の組合せを実行する専用のハードウェア・ベースのシステムによって実施することができることにも留意されたい。
【0057】
ここで
図4に目を向けると、本明細書に提示された方法のうちの1つまたは複数を実施するための装置400のブロック図が示されている。単なる例として、装置400は、
図2A~
図2Cの方法200の1つまたは複数のステップを実行するように構成することができる。
【0058】
装置400は、コンピュータ・システム410およびリムーバブル媒体450を含む。コンピュータ・システム410は、プロセッサ・デバイス420、ネットワーク・インターフェース425、メモリ430、媒体インターフェース435、および任意選択のディスプレイ440を含む。ネットワーク・インターフェース425は、コンピュータ・システム410がネットワークに接続することを可能にし、一方、媒体インターフェース435は、コンピュータ・システム410が、ハード・ドライブまたはリムーバブル媒体450などの媒体と対話することを可能にする。
【0059】
プロセッサ・デバイス420は、本明細書に開示された方法、ステップ、および機能を実施するように構成することができる。メモリ430は分散型であってもローカル型であってもよく、プロセッサ・デバイス420は、分散型であっても単一型であってもよい。メモリ430は、電気的、磁気的、または光学的メモリ、あるいはこれらまたは他のタイプのストレージ・デバイスの任意の組合せとして実装することができる。さらに、「メモリ」という用語は、プロセッサ・デバイス420によってアクセスされるアドレス指定可能な空間内のアドレスから読み取ることができる、またはアドレスに書き込むことができる任意の情報を包含するのに十分広く解釈されるべきである。この定義では、ネットワーク・インターフェース425を介してアクセス可能なネットワーク上の情報は、プロセッサ・デバイス420がネットワークから情報を取り出すことができるため、依然としてメモリ430内にある。プロセッサ・デバイス420を構成する各分散プロセッサは、一般に、独自のアドレス指定可能なメモリ空間を含むことに留意されたい。コンピュータ・システム410の一部またはすべては、特定用途向け集積回路または汎用集積回路に組み込むことができることにも留意されたい。
【0060】
任意選択のディスプレイ440は、装置400の人間のユーザと対話するのに適した任意のタイプのディスプレイである。一般に、ディスプレイ440は、コンピュータ・モニタまたは他の同様のディスプレイである。
【0061】
本発明の例示的な実施形態を本明細書で説明してきたが、本発明は、それらの正確な実施形態に限定されず、本発明の範囲から逸脱することなく当業者によって様々な他の変更および修正を行うことができることを理解されたい。
【0062】
本発明の一例では、ノイズおよび信号管理を伴うANNのトレーニングのための方法が提供され、本方法は、RPUデバイスのアレイに、アレイへの入力ベクトルxのn個の要素のサイズgの集合群を処理するように構成された事前正規化器、およびアレイからの出力ベクトルyのm個の要素のサイズgの集合群を処理するように構成された事後正規化器を提供するステップであって、アレイがm行n列を有するANNの重み行列を表し、重み行列の重み値がRPUデバイスの抵抗値として記憶される、提供するステップと、事前正規化器のそれぞれの集合群に属する入力ベクトルxのすべての要素の平均および標準偏差をN個のベクトルにわたって計算し、事前正規化器に対する現在の平均および標準偏差の値を生成するステップであって、平均および標準偏差が複数個の入力値に対して計算される、生成するステップと、事前正規化器に対する前回記憶された平均および標準偏差の値を割引係数ならびに事前正規化器に対する現在の平均および標準偏差の値で更新し、事前正規化器に対する更新され記憶された平均および標準偏差の値を生成するステップと、事前正規化器に対する更新され記憶された平均および標準偏差の値を使用して複数個の入力値を事前正規化し、すべての事前正規化器から正規化された入力ベクトルを生成して、アレイを通る順方向サイクル・パスにおいてアナログ・ノイズを伴って計算するステップと、事後正規化器のそれぞれの集合群に属する出力ベクトルyのすべての要素の平均および標準偏差をN個のベクトルにわたって計算し、事後正規化器に対する現在の平均および標準偏差の値を生成するステップであって、平均および標準偏差が複数個の出力値に対して計算される、生成するステップと、事後正規化器に対する前回記憶された平均および標準偏差の値を割引係数ならびに事後正規化器に対する現在の平均および標準偏差の値で更新し、事後正規化器に対する更新され記憶された平均および標準偏差の値を生成するステップと、事後正規化器に対する更新され記憶された平均および標準偏差の値を使用して複数個の出力値を事後正規化し、すべての事後正規化器から正規化された出力ベクトルを生成するステップと、N個の入力ベクトルを事後正規化器に対する前回の標準偏差で除算して変換された入力ベクトルを生成することによって、前回の標準偏差を使用してN個の入力ベクトルを変換し、変換された入力ベクトルを生成して、アレイを通る逆方向サイクル・パスにおいてアナログ・ノイズを伴って計算するステップと、N個の入力ベクトルを事後正規化器に対する前回の標準偏差で除算して変換された入力ベクトルを生成することによって、事前正規化器に対する前回の標準偏差を使用してN個の出力ベクトルを変換して、変換された出力ベクトルを生成するステップとを含む。
【0063】
好ましくは、本方法は、正規化された入力ベクトルをアナログ・パルス幅に変換するステップと、アレイを使用してアナログ・ノイズを伴って計算するステップと、アレイからの出力ベクトルyをデジタルで表すステップとをさらに含む。
【0064】
好ましくは、本方法は、正規化された入力ベクトルをアナログ・パルス幅に変換するステップと、アレイを使用してアナログ・ノイズを伴って計算するステップと、アレイからのN個の出力ベクトルをデジタルで表すステップとをさらに含む。
【0065】
本発明の一例では、ノイズおよび信号管理を伴うANNのトレーニングのための方法が提供され、本方法は、RPUデバイスのアレイに、アレイへの入力ベクトルxのn個の要素のサイズgの集合群を処理するように構成された事前正規化器、およびアレイからの出力ベクトルyのm個の要素のサイズgの集合群を処理するように構成された事後正規化器を提供するステップであって、アレイがm行n列を有するANNの重み行列を表し、重み行列の重み値がRPUデバイスの抵抗値として記憶される、提供するステップと、事前正規化器および事後正規化器のそれぞれを初期化して、記憶された値を0に設定し、記憶された値を1に設定するステップと、事前正規化器のそれぞれの集合群に属する入力ベクトルxのすべての要素の平均および標準偏差をN個のベクトルにわたって計算し、事前正規化器に対する現在の平均および標準偏差の値を生成するステップであって、平均および標準偏差が複数個の入力値に対して計算される、生成するステップと、事前正規化器に対する前回記憶された平均および標準偏差の値を割引係数ならびに事前正規化器に対する現在の平均および標準偏差の値で更新し、事前正規化器に対する更新され記憶された平均および標準偏差の値を生成するステップと、事前正規化器に対する更新され記憶された平均および標準偏差の値を使用して複数個の入力値を事前正規化し、すべての事前正規化器から正規化された入力ベクトルを生成して、アレイを通る順方向サイクル・パスにおいてアナログ・ノイズを伴って計算するステップと、事後正規化器のそれぞれの集合群に属する出力ベクトルyのすべての要素の平均および標準偏差をN個のベクトルにわたって計算し、事後正規化器に対する現在の平均および標準偏差の値を生成するステップであって、平均および標準偏差が複数個の出力値に対して計算される、生成するステップと、事後正規化器に対する前回記憶された平均および標準偏差の値を割引係数ならびに事後正規化器に対する現在の平均および標準偏差の値で更新し、事後正規化器に対する更新され記憶された平均および標準偏差の値を生成するステップと、事後正規化器に対する更新され記憶された平均および標準偏差の値を使用して複数個の出力値を事後正規化し、すべての事後正規化器から正規化された出力ベクトルを生成するステップと、i)N個の入力ベクトルの複数個の出力値の平均を計算し、N個の入力ベクトルの複数個の出力値と順方向サイクル・パスからの出力ベクトルの値との相互相関を計算し、N個の入力ベクトルの複数個の出力値のそれぞれをアルファ×ニューとして計算された第1項で減算し、次いで、アルファ×デルタ×順方向サイクル・パスからの出力ベクトルの値として計算された第2項で減算し、N個の入力ベクトルを事後正規化器に対する前回の標準偏差で除算して変換された入力ベクトルを生成することによって、前回の標準偏差を使用してN個の入力ベクトルを変換し、変換された入力ベクトルを生成して、アレイを通る逆方向サイクル・パスにおいてアナログ・ノイズを伴って計算するステップと、N個の入力ベクトルの複数個の出力値の平均を計算し、N個の入力ベクトルの複数個の出力値と順方向サイクル・パスからの出力ベクトルの値との相互相関を計算し、N個の入力ベクトルの複数個の出力値のそれぞれをアルファ×ニューとして計算された第1項で減算し、次いで、アルファ×デルタ×順方向サイクル・パスからの出力ベクトルの値として計算された第2項で減算し、N個の入力ベクトルを事後正規化器に対する前回の標準偏差で除算して変換された入力ベクトルを生成することによって、事前正規化器に対する前回の標準偏差を使用してN個の出力ベクトルを変換して、変換された出力ベクトルを生成するステップとを含む。
【0066】
好ましくは、本方法は、正規化された入力ベクトルをアナログ・パルス幅に変換するステップと、アレイを使用してアナログ・ノイズを伴って計算するステップと、アレイからの出力ベクトルyをデジタルで表すステップとをさらに含む。
【0067】
好ましくは、本方法は、正規化された入力ベクトルをアナログ・パルス幅に変換するステップと、アレイを使用してアナログ・ノイズを伴って計算するステップと、アレイからのN個の出力ベクトルをデジタルで表すステップとをさらに含む。