(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-28
(54)【発明の名称】ディープ・ニューラル・ネットワーク・トレーニング
(51)【国際特許分類】
G06N 3/065 20230101AFI20240321BHJP
【FI】
G06N3/065
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023558794
(86)(22)【出願日】2022-03-22
(85)【翻訳文提出日】2023-09-25
(86)【国際出願番号】 EP2022057494
(87)【国際公開番号】W WO2022214309
(87)【国際公開日】2022-10-13
(32)【優先日】2021-04-09
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ゴクメン、タイフン
(57)【要約】
ディープ・ニューラル・ネットワークをトレーニングする方法において、プロセッサがA行列の要素を初期化する。要素は抵抗型処理ユニットを含み得る。プロセッサは、重み行列からの活性化値および誤差値にチョッパ値を掛けたもので要素を更新することによって増分重み更新を求める。プロセッサは、要素から更新電圧を読み取る。プロセッサは、更新電圧にチョッパ値を掛けることによってチョッパ積を求める。プロセッサは隠れ行列の要素を記憶する。隠れ行列の要素は、チョッパ積の連続的反復の総和を含み得る。プロセッサは、しきい値状態に達する隠れ行列の要素に基づいて、重み行列の対応する要素を更新する。
【特許請求の範囲】
【請求項1】
ディープ・ニューラル・ネットワーク(DNN)をトレーニングする方法であって、
重み行列からの活性化値および誤差値にチョッパ値を掛けたものでA行列の要素を更新することによって増分重み更新を求めることであって、前記要素が抵抗型処理ユニットを含む、前記求めることと、
前記要素から更新電圧を読み取ることと、
前記更新電圧に前記チョッパ値を掛けることによってチョッパ積を求めることと、
隠れ行列の要素を記憶することであって、前記隠れ行列の前記要素が、前記チョッパ積の連続的反復の総和を含む、前記記憶することと、
しきい値状態に達する前記隠れ行列の前記要素に基づいて、重み行列の対応する要素を更新することと
を含む方法。
【請求項2】
前記チョッパ値が、正の1および負の1からなるグループから選択される状態を含む、請求項1に記載の方法。
【請求項3】
前記正の1の値と前記負の1の値との間で前記状態を反転する確率がユーザ定義される、請求項2に記載の方法。
【請求項4】
前記重み行列の前記対応する要素を更新することが、前記重み行列の導電性列ワイヤを通じて電圧パルスを送るのと同時に、前記重み行列の導電性行ワイヤを通じて前記隠れ行列の前記要素の符号情報を電圧パルスとして送ることを含む、請求項1に記載の方法。
【請求項5】
前記チョッパ値が、前記A行列の導電性列ワイヤに印加される、請求項1に記載の方法。
【請求項6】
前記チョッパ値が、前記A行列の導電性行ワイヤに印加される、請求項1に記載の方法。
【請求項7】
ディープ・ニューラル・ネットワークをトレーニングするためのコンピュータ実装方法であって、
隠れ行列の対応する要素内のA行列の要素についてのチョッパ積の総和を追跡することであって、前記チョッパ積が、前記A行列に適用する前および後に、重み行列の対応する要素からの活性化値および誤差値にチョッパ値を掛けたものを含む、前記追跡することと、
前記総和のうちの1つの前記総和がしきい値に達したとき、前記重み行列の前記対応する要素についての更新をトリガすることと
を含むコンピュータ実装方法。
【請求項8】
前記チョッパ値が、正の1および負の1からなるグループから選択される値を含む、請求項7に記載の方法。
【請求項9】
前記正の1の値と前記負の1の値との間で状態を反転する確率がユーザ定義される、請求項8に記載の方法。
【請求項10】
前記総和がデジタルに追跡される、請求項7に記載の方法。
【請求項11】
ディープ・ニューラル・ネットワーク(DNN)であって、
導電性行ワイヤと導電性列ワイヤとの間の交点を分離する抵抗型処理ユニット(RPU)デバイスを含むA行列であって、それによって前記RPUデバイスが、前記DNN内のニューロン間の重みつき接続についての処理済み勾配を含む、前記A行列と、
導電性行ワイヤと導電性列ワイヤとの間の交点を分離するRPUデバイスを含む重み行列であって、それによって前記RPUデバイスが、前記DNN内のニューロン間の重みつき接続を含む、前記重み行列と、
前記A行列に適用する前に前記重み行列からの活性化値および誤差値にチョッパ値を掛け、前記A行列からの出力ベクトルに前記チョッパ値を掛けてチョッパ積を生成するように構成されたチョッパと、
前記重み行列W内の各RPUデバイスについてのH値を含む隠れ行列を記憶するように構成されたコンピュータ・ストレージであって、前記H値が前記チョッパ積の総和を含む、前記コンピュータ・ストレージと
を備えるディープ・ニューラル・ネットワーク(DNN)。
【請求項12】
前記チョッパが、前記A行列の前記列ワイヤのうちの1つと、前記A行列の前記行ワイヤのうちの1つからなるグループから選択されたものに割り当てられる、請求項11に記載のDNN。
【請求項13】
前記チョッパ値が、ユーザ定義された確率で、正の1の値と負の1の値との間で反転する、請求項11に記載のDNN。
【請求項14】
アレイ内のバイアスを削減するためのコンピュータ・プログラム製品であって、
1つまたは複数のコンピュータ可読記憶媒体と、前記1つまたは複数のコンピュータ可読記憶媒体上に集合的に記憶されたプログラム命令であって、
A行列の要素を初期化するためのプログラム命令であって、前記要素が抵抗型処理ユニットを含む、前記プログラム命令と、
重み行列からの活性化値および誤差値にチョッパ値を掛けたもので前記要素を更新することによって増分重み更新を求めるためのプログラム命令と、
前記要素から更新電圧を読み取るためのプログラム命令と、
前記更新電圧に前記チョッパ値を掛けることによってチョッパ積を求めるためのプログラム命令と、
隠れ行列の要素を記憶するためのプログラム命令であって、前記隠れ行列の前記要素が、前記チョッパ積の連続的反復の総和を含む、前記プログラム命令と、
しきい値状態に達する前記隠れ行列の前記要素に基づいて、重み行列の対応する要素を更新するためのプログラム命令と
を含む前記プログラム命令と
を含むコンピュータ・プログラム製品。
【請求項15】
前記チョッパ値が、正の1および負の1からなるグループから選択される状態を含む、請求項14に記載のコンピュータ・プログラム製品。
【請求項16】
前記正の1の値と前記負の1の値との間で前記状態を反転する確率がユーザ定義される、請求項15に記載のコンピュータ・プログラム製品。
【請求項17】
前記重み行列の前記対応する要素を更新することが、前記重み行列の導電性列ワイヤを通じて電圧パルスを送るのと同時に、前記重み行列の導電性行ワイヤを通じて前記隠れ行列の前記要素の符号情報を電圧パルスとして送ることを含む、請求項14に記載のコンピュータ・プログラム製品。
【請求項18】
前記増分重み更新が、前記A行列に対して演算される出力ベクトルおよび入力ベクトルの行列乗算を含む、請求項14に記載のコンピュータ・プログラム製品。
【請求項19】
前記重み行列を更新するための命令が、前記重み行列の導電性列ワイヤを通じて電圧パルスを送るのと同時に、前記隠れ行列の前記要素がしきい値状態に達したとき、前記重み行列の導電性行ワイヤを通じて、前記しきい値状態に達した前記隠れ行列の前記要素の符号情報を電圧パルスとして送るための命令を含む、請求項14に記載のコンピュータ・プログラム製品。
【請求項20】
ディープ・ニューラル・ネットワーク(DNN)をトレーニングするためのコンピュータ実装方法であって、
A行列の導電性列ワイヤを通じて、入力ベクトルe
iにチョッパ値を掛けたものを電圧パルスとして送り、前記A行列の導電性行ワイヤから、得られる出力ベクトルy’を電流出力として読み取ることであって、前記A行列が、前記導電性列ワイヤと前記導電性行ワイヤとの間の交点を分離する抵抗型処理ユニット(RPU)デバイスを含む、前記読み取ることと、
前記出力ベクトルy’に前記チョッパ値を掛けることによって各RPUについてのチョッパ積を求めることと、
前記チョッパ積を反復的に加えることによって隠れ行列のH値を更新することであって、前記隠れ行列が各RPUについてのH値を含む、前記更新することと、
H値がしきい値に達した後、重み行列Wの前記導電性列ワイヤを通じて、前記入力ベクトルe
iを電圧パルスとして送るのと同時に、前記重み行列Wの前記導電性行ワイヤを通じて、しきい値に達した前記H値の符号情報を電圧パルスとして送ることと
を含むコンピュータ実装方法。
【請求項21】
前記入力ベクトルおよび前記誤差信号が、前記重み行列に対して演算される順方向サイクルおよび逆方向サイクルから導出された重み行列からの活性化値および誤差値を含む、請求項20に記載の方法。
【請求項22】
前記チョッパ値が、正の1および負の1からなるグループから選択される状態を含む、請求項20に記載の方法。
【請求項23】
前記正の1の値と前記負の1の値との間で前記状態を反転する確率がユーザ定義される、請求項20に記載の方法。
【請求項24】
前記重み行列の前記対応する要素を更新することが、前記重み行列の導電性列ワイヤを通じて電圧パルスを送るのと同時に、前記重み行列の導電性行ワイヤを通じて前記隠れ行列の前記要素の符号情報を電圧パルスとして送ることを含む、請求項20に記載の方法。
【請求項25】
前記入力ベクトルe
iが、ワン・ホット符号化ベクトルおよびアダマール行列からなるグループから選択されたものを含む、請求項20に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般にはディープ・ニューラル・ネットワーク(DNN)トレーニングに関し、より詳細には、抵抗型処理ユニット(RPU)デバイスのフィルタリング信号にチョッパ値を追加して雑音を低減するための技術に関する。
【背景技術】
【0002】
ディープ・ニューラル・ネットワーク(DNN)は、抵抗型処理ユニット(RPU)などの抵抗型デバイスのアナログ・クロスポイント・アレイで具体化され得る。RPUデバイスは一般に、第1の端子、第2の端子、および活性領域を含む。活性領域のコンダクタンス状態がRPUの重み値を特定し、RPUの重み値は、第1/第2の端子に対する信号の印加によって更新/調節され得る。
【0003】
DNNベースのモデルが、物体認識、音声認識、自然言語処理などの様々な異なる認知ベースのタスクのために使用されている。そのようなタスクを実施するときに高いレベルの精度を実現するために、DNNトレーニングが必要とされる。大規模なDNNをトレーニングすることは計算集約的なタスクである。逆伝播や確率的勾配降下法(SGD)などのDNNトレーニングの最も一般的な方法は、正確に機能するためにRPUが「対称」であることを必要とする。対称アナログ抵抗型デバイスは、正および負の電圧パルスがかけられるとき、コンダクタンスを対称的に変更する。しかしながら、実際には、RPUデバイスは非線形で非対称のスイッチング特性を示し得る。たとえば、重みを上方または下方に調節するために電圧パルスが印加されるとき、しばしばアップ調節とダウン調節との間に不均衡がある。
【発明の概要】
【0004】
本発明は、抵抗型処理ユニット(RPU)を使用して重み値を追跡および更新するディープ・ニューラル・ネットワーク(DNN)をトレーニングするための技術を提供する。本明細書で説明される技術は、RPUによって導入され得る雑音およびバイアスに伴う問題を克服する。具体的には、RPUによって導入される雑音が、低域フィルタのような働きをする隠れ行列を使用することによって対処され、バイアスが、チョッパを使用することによって対処される。
【0005】
方法またはコンピュータ・プログラム製品の態様では、プロセッサが、重み行列からの活性化値および誤差値にチョッパ値を掛けたものでA行列の要素を更新することによって増分重み更新を求める。要素は抵抗型処理ユニットを含み得る。プロセッサは要素から更新電圧を読み取る。プロセッサは、更新電圧にチョッパ値を掛けることによってチョッパ積を求める。プロセッサは隠れ行列の要素を記憶する。隠れ行列の要素は、チョッパ積の連続的反復の総和を含み得る。プロセッサは、しきい値状態に達する隠れ行列の要素に基づいて、重み行列の対応する要素を更新する。
【0006】
一実施形態では、プロセッサは、隠れ行列の対応する要素内のA行列の要素についてのチョッパ積の総和を追跡する。チョッパ積は、A行列に適用する前および後に、重み行列の対応する要素からの活性化値および誤差値にチョッパ値を掛けたものを含み得る。プロセッサは、総和のうちの1つの総和がしきい値に達したとき、重み行列の対応する要素についての更新をトリガする。
【0007】
一実施形態は、導電性行ワイヤと導電性列ワイヤとの間の交点を分離する抵抗型処理ユニット(RPU)デバイスを有するA行列を有するディープ・ニューラル・ネットワーク(DNN)を含み得る。RPUデバイスは、DNN内のニューロン間の重みつき接続についての処理済み勾配を含み得る。DNNは、導電性行ワイヤと導電性列ワイヤとの間の交点を分離するRPUデバイスを有する重み行列を含み得る。RPUデバイスは、DNN内のニューロン間の重みつき接続を含み得る。DNNは、A行列に適用する前に重み行列からの活性化値および誤差値にチョッパ値を掛け、A行列からの出力ベクトルにチョッパ値を掛けてチョッパ積を生成するように構成されたチョッパを含み得る。DNNは、重み行列W内の各RPUデバイスについてのH値を含む隠れ行列を記憶するように構成されたコンピュータ・ストレージを含み得る。H値はチョッパ積の総和を含み得る。
【0008】
一実施形態では、ディープ・ニューラル・ネットワーク(DNN)をトレーニングすることは、A行列の導電性列ワイヤを通じて、入力ベクトルeiにチョッパ値を掛けたものを電圧パルスとして送り、A行列の導電性行ワイヤから、得られる出力ベクトルy’を電流出力として読み取ることを含み得る。A行列は、導電性列ワイヤと導電性行ワイヤとの間の交点を分離する抵抗型処理ユニット(RPU)デバイスを含み得る。トレーニングは、出力ベクトルy’にチョッパ値を掛けることによって各RPUについてのチョッパ積を求めることを含み得る。トレーニングは、チョッパ積を反復的に加えることによって隠れ行列のH値を更新することを含み得、隠れ行列は各RPUについてのH値を含む。トレーニングは、H値がしきい値に達した後、重み行列Wの導電性列ワイヤを通じて、入力ベクトルeiを電圧パルスとして送るのと同時に、重み行列Wの導電性行ワイヤを通じて、しきい値に達したH値の符号情報を電圧パルスとして送ることを含み得る。
【0009】
本発明のより完全な理解、ならびに本発明のより詳しい特徴および利点が、以下の詳細な説明および図面を参照することによって得られることになる。
【図面の簡単な説明】
【0010】
【
図1A】重み行列W、A行列、および隠れ行列Hを有するディープ・ニューラル・ネットワーク(DNN)を示す概略図である。
【
図1B】本発明の一実施形態による、抵抗型処理ユニット(RPU)デバイスのアナログ・クロスポイント・アレイで具体化されたディープ・ニューラル・ネットワーク(DNN)を示す図である。
【
図2A】本発明の一実施形態による、線形で対称なRPUデバイスの理想的なスイッチング特性を示す図である。
【
図2B】本発明の一実施形態による、非線形で非対称なRPUデバイスの理想的ではないスイッチング特性を示す図である。
【
図3】本発明の一実施形態による、DNNをトレーニングするための例示的方法を示す図である。
【
図4】本発明の一実施形態による、行列Wと、行列Wのゼロ重み値に対応するコンダクタンス値でポピュレートされた基準アレイとに対応する2つの相互接続されたアレイ(すなわち、アレイWおよび基準アレイ)を示す図である。
【
図5】本発明の一実施形態による、順方向サイクルy=Wxが実施されることを示す図である。
【
図6】本発明の一実施形態による、逆方向サイクルz=WToが実施されることを示す図である。
【
図7】本発明の一実施形態による、順方向サイクルで伝播されるxと、逆方向サイクルで伝播されるδでアレイAが更新されることを示す図である。
【
図8】本発明の一実施形態による、順方向サイクルy’=Ae
iが重み行列に対して実施されることを示す図である。
【
図9】A行列の順方向サイクルで計算された値で隠れ行列Hが更新されることを示す図である。
【
図10】本発明の一実施形態による、隠れ行列H902が重み行列W1010に選択的に逆に適用される概略図である。
【
図11】本発明の一実施形態による、例示的ワン・ホット符号化ベクトルを示す図である。
【
図12】本発明の一実施形態による、2次の例示的アダマール行列を示す図である。
【
図13】本発明の一実施形態による、4次の例示的アダマール行列を示す図である。
【
図14】本発明の一実施形態による、本技術のうちの1つまたは複数を実施する際に利用され得る例示的装置を示す図である。
【発明を実施するための形態】
【0011】
非対称抵抗型処理ユニット(RPU)デバイスを用いるディープ・ニューラル・ネットワーク(DNN)トレーニング技術が本明細書で提供される。DNNを通過するデータ入力が、DNN内に供給されるトレーニング・データのセットに対するデータ出力と正確に一致するまで、パーセプトロンの層間で重み値を調節することによってDNNがトレーニングされる。こうした重み値はデジタルに記憶され得るが、本明細書で開示される実施形態では、重み値が、重み行列で具体化されたRPUデバイス内に記憶される。RPUデバイスの使用により、速度が改善され、DNNのリソース消費が削減されるが、多くのアナログ・システムに固有の雑音およびバイアスが導入され得る。アナログRPUデバイスの雑音およびバイアスを軽減するために、本明細書で開示される実施形態は、雑音を軽減するための低域フィルタのような働きをする隠れ行列と、バイアスを軽減する正または負のチョッパ値を導入するチョッパとを含む。
【0012】
ここで図を参照すると、
図1Aは、重み行列W102、A行列112、および隠れ行列H114を有するディープ・ニューラル・ネットワーク(DNN)100を示す概略図である。
図1Aに示される矢印の方向で示されるように、重み行列W102は、A行列112および隠れ行列114を使用して反復的にトレーニングされる。上記で強調したように、重み行列W102は、RPUのアナログ・クロスポイント・アレイで具体化され得る。たとえば、
図1Bに示される概略図を参照されたい。
【0013】
図1Bに示されるように、算術(アブストラクト)重み行列102の各パラメータ(重みwij)が、ハードウェア上の単一のRPUデバイス(RPUij)、すなわちRPUデバイスの物理クロスポイント・アレイ104にマッピングされる。クロスポイント・アレイ104は、一連の導電性行ワイヤ106と、導電性行ワイヤ106に直交する向きの、導電性行ワイヤ106と交差する一連の導電性列ワイヤ108とを含む。行ワイヤ106と列ワイヤ108との間の交点がRPU110によって分離され、RPUデバイスのクロスポイント・アレイ104が形成される。各RPU110は、第1の端子、第2の端子、および活性領域を含み得る。活性領域の伝導状態がRPU110の重み値を特定し、RPUの重み値は、第1/第2の端子に対する信号の印加によって更新/調節され得る。さらに、3端子(さらには4端子以上)デバイスが、余分な端子を制御することによって実質的に2端子抵抗型メモリ・デバイスとして働き得る。
【0014】
各RPU110(RPUij)は、クロスポイント・アレイ104の位置(すなわち、i行j列)に基づいて一意に識別される。たとえば、クロスポイント・アレイ104の上端から下端に、左側から右側に作業すると、第1の行ワイヤ106と第1の列ワイヤ108の交点のRPUはRPU11と指定され、第1の行ワイヤ106と第2の列ワイヤ108の交点のRPUはRPU12と指定され、以下同様である。さらに、重み行列102のパラメータの、クロスポイント・アレイ104のRPUへのマッピングは同じ規則に従う。たとえば、重み行列102の重みwi1が、クロスポイント・アレイ104のRPUi1にマッピングされ、重み行列102の重みwi2が、クロスポイント・アレイ104のRPUi2にマッピングされ、以下同様である。
【0015】
クロスポイント・アレイ104のRPU110は、実際にはDNN内のニューロン間の重みつき接続として機能する。RPU110の伝導状態(たとえば、抵抗)は、行ワイヤ106および列ワイヤ108の個々のワイヤ間に印加される電圧をそれぞれ制御することによって変更され得る。RPUの伝導状態の変更によってデータが記憶される。電圧を印加し、ターゲットRPU110を通過する電流を測定することによって、RPU110の伝導状態が読み取られる。重みに関する演算のすべては、RPU110によって完全に並列に実施される。
【0016】
機械学習および認知科学では、DNNベースのモデルは、動物の生物学的神経回路網、特に脳から着想を得た一群の統計的学習モデルである。こうしたモデルは、一般には未知である接続の多くの入力および重みに依存するシステムおよび認知機能を推定し、または近似するために使用され得る。DNNはしばしば、電子信号の形態で互いの間で「メッセージ」を交換する、シミュレートされた「ニューロン」として働く、相互接続されたプロセッサ要素のいわゆる「ニューロモルフィック」システムとして具体化される。シミュレートされたニューロン間で電子メッセージを搬送するDNN内の接続は、所与の接続の強さまたは弱さに対応する数値重みを備える。こうした数値重みは、経験に基づいて調節され、調整され得、DNNが入力に適応するようにされ、学習することができるようにされる。たとえば、手書き認識用のDNNは、入力イメージのピクセルによって活性化され得る入力ニューロンのセットによって定義される。ネットワークの設計者によって決定される機能によって重み付けされ、変換された後、こうした入力ニューロンの活性化が別の下流側ニューロンに渡される。出力ニューロンが活性化されるまで、このプロセスが反復される。活性化された出力ニューロンは、どの文字が読み取られたかを判定する。
【0017】
以下で詳細に説明されるように、隠れ行列114の要素(すなわち、Hij)がしきい値に達するまで、A行列112を通じて重み値Wijを更新し、次いで得られるA行列112からの出力を隠れ行列114内に加算することによって、
図1Aに示されるDNN100がトレーニングされる。しかしながら、A行列112内の重み値が更新される前および後に、チョッパ116が入力信号および出力信号にチョッパ値を掛ける。所与の時刻のチョッパ値は、正の1(+1)または負の1(-1)のどちらかに等しい。チョッパ116は各チョッパ値の間でランダムに反転し、それによって、トレーニング期間の一部では、反対の符号で更新がA行列114に適用される。チョッパ116によるこのランダムな符号反転は、A行列112による重み値に寄与する任意の「バイアス」がある場合、それがトレーニング時間のある期間では一方の符号(すなわち、正または負)を有し、トレーニング時間の他の期間では他方の符号(すなわち、負または正)を有することを意味する。バイアスは、DNN100で使用され得る理想的ではないRPUを含む、任意のアナログ・システムに固有のものであり得る。
【0018】
図2Aは、本発明の一実施形態による、線形で対称なRPUデバイスの理想的なスイッチング特性を示す図である。
図2Aに示されるように、理想的なRPUは、外部電圧刺激に線形かつ対称に応答する。トレーニングのために、そのような理想的なデバイスは、逆伝播および確率的勾配降下法(SGD)のDNNトレーニング・プロセスを完全に実装する。逆伝播は、順方向サイクル、逆方向サイクル、および重み更新サイクルという3つのサイクルで実施されるトレーニング・プロセスであり、この3つのサイクルが、収束基準が満たされるまで複数回反復される。確率的勾配降下法(SGD)は、逆伝播を使用して、各パラメータ(重みwij)の誤差勾配を計算する。
【0019】
逆伝播を実施するために、DNNベースのモデルは、複数のレベルの抽象化でデータの表現を学習する複数の処理層から構成される。N個の入力ニューロンがM個の出力ニューロンに接続される単一の処理層では、順方向サイクルは、ベクトル行列乗算(y=Wx)を計算することを含み、ただし長さNのベクトルxは入力ニューロンの活動を表し、サイズM×Nの行列Wは、入力ニューロンと出力ニューロンの各対の間の重み値を記憶する。得られる長さMのベクトルyが、抵抗型メモリ要素のそれぞれに対して非線形活性化を実施することによってさらに処理され、次いで次の層に渡される。
【0020】
情報が最終出力層に到達すると、逆方向サイクルが、誤差信号を計算し、DNNを通じて誤差信号を逆伝播させることを含む。単一層上の逆方向サイクルはまた、重み行列の転置(各行と対応する列とを交換すること)に関するベクトル行列乗算(z=WTδ)を含み、ただし長さMのベクトルδは、出力ニューロンによって計算される誤差を表し、長さNのベクトルzが、ニューロン非線形性の導関数を使用してさらに処理され、前の層に渡される。
【0021】
最後に、重み更新サイクルでは、順方向サイクルおよび逆方向サイクルで使用される2つのベクトルの外積を実施することによって重み行列Wが更新される。2つのベクトルのこの外積はしばしば、W←W+η(δxT)と表され、ただしηはグローバル学習率である。
【0022】
この逆伝播プロセス中に重み行列Wに対して実施される演算のすべては、対応する数のM行N列を有するRPU110のクロスポイント・アレイ104で実装され得、ただしクロスポイント・アレイ104内の記憶されるコンダクタンス値が行列Wを形成する。順方向サイクルでは、入力ベクトルxが、列ワイヤ108のそれぞれを通じて電圧パルスとして送られ、得られるベクトルyが、行ワイヤ106から電流出力として読み取られる。同様に、電圧パルスが、逆方向サイクルに対する入力として行ワイヤ106から供給されるとき、重み行列WTの転置に関してベクトル行列積が計算される。最後に、更新サイクルでは、ベクトルxおよびδを表す電圧パルスが、列ワイヤ108および行ワイヤ106から同時に供給される。この構成では、各RPU110が、対応する列ワイヤ108および行ワイヤ106から来る電圧パルスを処理することによって局所的乗算および総和演算を実施し、したがって増分重み更新を達成する。
【0023】
上記で強調したように、対称なRPU(
図2A参照)は逆伝播およびSGDを完全に実装する。すなわち、そのような理想的なRPUでは、w
ij←w
ij+ηΔw
ijであり、ただしw
ijは、クロスポイント・アレイ104のi行j列についての重み値である。
【0024】
一方、
図2Bは、本発明の一実施形態による、非線形で非対称なRPUデバイスの理想的ではないスイッチング特性を示す図である。
図2Bに示されるように、現実のRPUは、外部電圧刺激に対して非線形かつ非対称に応答し得る。すなわち、「アップ」時間枠202の間に、RPUに「アップ」パルスが与えられるとき、重み値204は、重み値が低いときよりも大きいステップ・サイズで変化する。すなわち、連続的「アップ」パルスがRPUに印加されるにつれて、重み値204は安定する。同様に「ダウン」時間枠206の間に、RPUに「ダウン」パルスが与えられるとき、重み値204は、重み値が高いときよりも大きいステップ・サイズで変化する。すなわち、連続的「ダウン」パルスがRPUに印加されるとき、重み値204はやはり安定する。
【0025】
図2Bはまた、RPUが単一の重み値(以下で詳細に説明されるゼロシフト技術からのゼロ重み値に対応する)を有することを示し、アップ調節とダウン調節は等しい強さであるが、それ以外は、重み範囲の残りの部分について不均衡である。時間枠208の間に、等しいアップ・パルスおよびダウン・パルスのシーケンスがRPUデバイスに与えられるとき、この不均衡は、デバイスが対称点210に向かって上方または下方に進む傾向を有することを意味する。このデバイス挙動は、RPUデバイスのコンダクタンス変化を支配するRPUデバイスの物理から生じている追加のエネルギー項(内部エネルギー)に変換され得る。したがって、逆伝播のために使用されるとき、理想的でないスイッチング特性を有するこうしたRPUは、理想的なケースとは非常に異なるもの、すなわちw
ij←w
ij+ηΔw
ijF(w
ij)-η|Δw
ij|G(w
ij)を実装し、ただし|Δw
ij|G(w
ij)は、RPUデバイスの非対称スイッチング特性のために現れる追加のエネルギー項(内部エネルギー)を表し、F(w
ij)は、スイッチング特性の非線形性のために現れる項である。
【0026】
RPU110などの抵抗型メモリ・デバイスでは、各デバイスについてのアップ・パルスおよびダウン・パルスの傾きが厳密に同じとなる単一の対称点が常に存在する。この対称点(それぞれの個々のRPUについて異なり得る)に重み値ゼロが割り当てられ得る。
【0027】
図2Bに示されるように、重みアレイ内のRPU110のすべてがそれ自体の対称点に集束するまで、重みアレイ内のRPU110に反復的な(第1、第2、第3など)アップ電圧パルスおよびダウン電圧パルスを印加することによって、クロスポイント・アレイ104内の各RPU110についての対称点210が求められ得る。たとえば、コンダクタンス範囲がGminからGmaxまでであり、1つの更新インシデントの平均デルタGがdGavgである場合、コンダクタンス範囲内の有効状態数は(Gmax-Gmin)/dGavgである。デバイスが端点にあり、交互アップ/ダウン・パルスが与えられるとき、デバイスは、中心点=(Gmax-Gmin)/dGavgに達するように更新数を取る。収束を保証するために、交互アップ/ダウン・パルスの余分なサイクル、たとえばn×(Gmax-Gmin)/dGavgを与え得、ただしn=1以上である。アップ電圧パルスおよびダウン電圧パルスは、RPU110にランダムに(すなわち、各パルスはランダムにアップ・パルスまたはダウン・パルスのどちらかである)、交互に(すなわち、先行するパルスがアップ・パルスである場合、次のパルスはダウン・パルスであり、逆も同様である)などで印加され得る。
【0028】
重みアレイ内のRPU110のすべてがそれ自体の対称点にすべて収束すると、(対称点での)重みアレイからの各RPU110についてのコンダクタンス値が、重みアレイと相互接続される別々の基準アレイにコピーされる。重みアレイ内のデバイスと基準アレイ内のデバイスとの間に1対1の相関があり、したがって、重みアレイ内の1つの対応するデバイスについて、基準アレイ内の各デバイスで固有ゼロ重み値が確立され得る。したがって、動作の間、重みアレイ内のRPU110の出力が、基準アレイ内に記憶された対応するデバイスからゼロ重み値だけシフトされる。たとえば、重みアレイと基準アレイのどちらにも同一の信号が供給され得る。次いで、重みアレイ内のRPU110からの出力(たとえば、I1、I2、I3など)が、(ゼロ重み値に設定される)基準アレイ内の対応するデバイスの出力からそうした値を差し引くことによってゼロシフトされ、ゼロシフトされた結果が達成され得る。しかしながら、実際には、基準アレイに対称点をコピーすることによって常に完全な表現が得られるわけではないことがある。対称点の不完全なコピーは、「バイアス」を導入することによってRPUアレイを使用する試みを複雑にし得る。すなわち、対称点が実際の対称点よりも高く、または低くコピーされるとき、バイアスがシステムに導入される。
【0029】
ゼロシフトされた結果を達成するためのこの初期設定の後、ゼロシフトを設定するときに導入され得るバイアスを補償するためにチョッパ値を使用しながら、DNNをトレーニングするために本技術が使用される。
図3は、本発明の一実施形態による、DNNをトレーニングするための例示的方法300を示す図である。トレーニングの間、重み更新が最初に行列上に累積される。A行列は、ゼロ点の周りの対称的挙動を有するRPUの行および列から構成されるハードウェア構成要素である。次いで、A行列からの重み更新が、選択的に重み行列Wに移動される。重み行列Wも、RPUの行および列から構成されるハードウェア構成要素である。トレーニング・プロセスは、DNNの精度を最大にするパラメータ(重みwij)のセットを反復的に求める。初期化中に、ゼロ重み値を有する基準アレイは、理想的にはゼロに対応するが、実際には対称点の不完全なコピーによって制限される値について、重みA行列内の各RPUがその平衡点にあることを保証する。一方、行列Wは、DNNトレーニングに対して適用される一般的な方法を用いて、ランダムに分布する値に初期化される。隠れ行列H(一般にデジタルに記憶されるが、ある実施形態はアナログ隠れ行列Hを使用する)がゼロに初期化される。
【0030】
トレーニングの間、重み更新がA行列に対して実行される。次いで、A行列によって処理された情報が隠れ行列H(低域フィルタを実質的に実施する別々の行列)内に累積される。次いで、更新しきい値に達する隠れ行列Hの値が、重み行列Wに適用される。更新しきい値は、A行列のハードウェア内で発生する雑音を実質的に最小限に抑える。しかしながら、要素からの各反復が、バイアスに基づくが、DNNをトレーニングすることに関連する重み更新に基づかない、一貫した更新(正または負のどちらか)を保持するので、バイアスで初期化されるA行列の要素について、尚早に更新しきい値に達することになる。チョッパ値は、一定の期間にわたってバイアスの符号を反転することによってバイアスを打ち消し、その期間に、バイアスが逆の符号で隠れ行列Hに加算される。具体的には、ある期間で、重み値と正のバイアスが隠れ行列Hに加算され、他の時間枠で、重み値と負のバイアスが隠れ行列Hに加算される。チョッパ値のランダムな反転は、正のバイアスを有する時間枠が、負のバイアスを有する時間枠と同じになる傾向があることを意味する。したがって、理想的でないRPUに関連するハードウェア・バイアスおよび雑音が許容され(またはH行列によって吸収され)、したがって標準SGD技術、隠れ行列Hのみ、または非対称デバイスを使用する他のトレーニング技術と比べて、より少ない数の状態であっても、少ないテスト誤差を与える。
【0031】
方法300は、A行列、隠れ行列H、および重み行列Wを初期化することによって始まる(ブロック302)。A行列を初期化することは、たとえば、A行列内の各RPUについて対称点を求めることと、対応するコンダクタンス値を基準アレイに記憶することとを含む。上記で与えられたように、RPUのすべてがそれ自体の対称点に収束するまで、反復的なアップ電圧パルスおよびダウン電圧パルスをRPUに(たとえば、ランダムに、交互に、など)印加することによって、各RPUデバイスについての対称点が求められ得る。アレイAおよび基準アレイは2つの相互接続されたアレイで具体化され得、その組合せがA行列を形成する。物理的コンダクタンスは負の量となることはできないので、アレイAおよび基準アレイ内のコンダクタンス値の差が、A行列についての論理的値を形成する。しかしながら、初期プログラミング・ステップの後、基準アレイは一定に保たれ、A行列が更新されるとき、更新中であるのはアレイAであるので、A行列およびアレイAを相互交換可能に参照する。しかしながら、A行列に対して実施されるベクトル行列乗算演算は常に、アレイAおよび基準アレイの差分読取りを使用する。同じ方法および演算原理が、行列WおよびアレイWにも当てはまる。
【0032】
図4は、本発明の一実施形態による、A行列と、A行列のゼロ重み値コンダクタンス値でポピュレートされた基準アレイとに対応する2つの相互接続されたアレイ(すなわち、物理アレイおよび基準アレイ)を示す図である。(A行列の重み値(wij)でポピュレートされた)RPU404のクロスポイント・アレイ402と、(基準行列の対応するゼロ重みコンダクタンス値(w0’)でポピュレートされた)RPU408のクロスポイント・アレイ406とが示されている。A行列内の1つの対応するRPUについて、基準行列内の各RPUで固有ゼロ重み値(w0’)が確立され得る。隠れ行列Hの初期化は、行列内の電流値をゼロにすること、または接続されたコンピューティング・デバイス上のデジタル記憶空間を割り振ることを含む。重み行列Wの初期化は、重み行列Wについてのトレーニング・プロセスが開始し得るように、重み行列Wにランダムな値をロードすることを含む。
【0033】
ゼロ重みコンダクタンス値が基準アレイ内に記憶されると、DNNのトレーニングが実施される。3つのサイクル(すなわち、順方向サイクル、逆方向サイクル、および重み更新サイクル)で逆伝播を使用して誤差勾配を計算するだけでなく、ここでは演算が、そのH値の反復的組合せがしきい値を超えて増加した後にのみ重み値を更新する隠れ行列Hによってフィルタリングされる。反復的組合せは、対称点が各RPU404についてマッピングされるとき、不完全なゼロシフトの結果として生じ得るバイアスを打ち消すように構成されたチョッパ値と組み合わされる。
【0034】
方法300は、重み行列Wを使用して順方向サイクルを実施することによって活性化値を求めることを含む(ブロック304)。
図5は、本発明の一実施形態による、順方向サイクルが実施されることを示す図である。順方向サイクルは、ベクトル行列乗算(y=Wx)を計算することを含み、入力ベクトルxとして具体化された活性化値は、入力ニューロンの活動を表し、重み行列Wは、入力ニューロンと出力ニューロンの各対の間の重み値を記憶する。
図5は、順方向サイクルのベクトル行列乗算演算がRPUデバイスのクロスポイント・アレイ502で実装されることを示し、クロスポイント・アレイ502内の記憶されたコンダクタンス値が行列を形成する。
【0035】
入力ベクトルxが、導電性列ワイヤ512のそれぞれを通じて電圧パルスとして送られ、得られる出力ベクトルyが、クロスポイント・アレイ502の導電性行ワイヤ510からの電流出力として読み取られる。クロスポイント・アレイ502からのアナログ出力ベクトル516をデジタル信号に変換するために、アナログ-デジタル変換器(ADC)513が利用される。基準行列406からコピーされたゼロ重みコンダクタンス値が、クロスポイント・アレイ502内のRPUデバイスの出力値をその対称点に対してシフトして、そのスイッチング挙動でのバイアスを補償し、負の論理行列値を符号化するために使用される。そのようにするために、クロスポイント・アレイ502に印加される電圧パルスが基準アレイにも印加される。次いで、クロスポイント・アレイ502の出力ベクトルyが基準アレイの出力ベクトルyから差し引きされる。
【0036】
方法300はまた、重み行列Wに対して逆方向サイクルを実施することによって誤差値を求めることを含む(ブロック306)。
図6は、本発明の一実施形態による、逆方向サイクルが実施されることを示す図である。一般に、逆方向サイクルは、誤差値δを計算することと、重み行列Wの転置に対するベクトル行列乗算を介して重み行列Wを通じて誤差値δを逆伝播すること(すなわち、z=WTδ)とを含み、ただしベクトルδは、出力ニューロンによって計算される誤差を表し、ベクトルzは、ニューロン非線形性の導関数を使用してさらに処理され、次いで前の層に渡される。
【0037】
図6は、逆方向サイクルのベクトル行列乗算演算がクロスポイント・アレイ502で実装されることを示す。誤差値δが導電性行ワイヤ510のそれぞれを通じて電圧パルスとして送られ、得られる出力ベクトルzが、クロスポイント・アレイ502の導電性列ワイヤ512からの電流出力として読み取られる。電圧パルスが逆方向サイクルに対する入力として行ワイヤ510から供給されるとき、ベクトル行列積が重み行列Wの転置に対して計算される。
【0038】
図6にさらに示されるように、ADC513は、クロスポイント・アレイ502からの(アナログ)出力ベクトル518をデジタル信号に変換するために利用される。前述の順方向サイクルの場合と同じく、ゼロ重みコンダクタンス値が、クロスポイント・アレイ502内のRPUデバイスの出力値をその対称点に対してシフトして、そのスイッチング挙動でのバイアスを補償し、負の論理行列値を符号化する。そのようにするために、クロスポイント・アレイ502に印加される電圧パルスが基準アレイにも印加される。次いで、クロスポイント・アレイ502の出力ベクトルzが基準アレイの出力ベクトルzから差し引きされる。
【0039】
方法300はまた、活性化値または誤差値あるいはその両方にチョッパ値を適用することを含む(ブロック308)。チョッパ値は、チョッパ(たとえば、
図1のチョッパ116)によって適用され得、チョッパは、A行列502内の行ワイヤごと、および列ワイヤごとに含まれる。いくつかの実施形態では、クロスポイント・アレイ502は、列ワイヤ506上にのみ、または行ワイヤ504上にのみチョッパを有し得る。チョッパ値が活性化値または誤差値あるいはその両方に適用された後、方法300はまた、活性化値、誤差値(入力ベクトルxおよびδ)、およびチョッパ値でA行列を更新することを含む(ブロック310)。
図7は、本発明の一実施形態による、順方向サイクルで伝播されるxと、逆方向サイクルで伝播されるδでアレイA502が更新されることを示す図である。各行および列は、それぞれのワイヤに印加されるチョッパ値550を有する。チョッパ値550の符号は、正のチョッパ値について「+」として表され(すなわち、活性化値または誤差値に対する変更なし)、または負のチョッパ値について「X」(すなわち、活性化値または誤差値に対する符号変更)として表される。更新は、導電性列ワイヤ506および導電性行ワイヤ504からそれぞれ同時に供給される、(順方向サイクルからの)ベクトルxおよび(逆方向サイクルからの)ベクトルδを表す電圧パルスを送ることによってクロスポイント・アレイ502で実装される。この構成では、クロスポイント・アレイ502内の各RPUは、対応する導電性列ワイヤ506および導電性行ワイヤ504から来る電圧パルスを処理することによって局所的乗算および総和演算を実施し、したがって増分重み更新を達成する。順方向サイクル(ブロック304)および逆方向サイクル(ブロック306)と、順方向サイクルおよび逆方向サイクルからの入力ベクトルでA行列を更新すること(ブロック3010)が、A行列の更新後の値を改善するために何回か反復され得る。
【0040】
方法300はまた、入力ベクトルeiおよびチョッパ値を使用してA行列に対して順方向サイクルを実施する(すなわち、y’=Aei)ことによってチョッパ積を読み取ることを含む(ブロック312)。各時間ステップで、新しい入力ベクトルeiが使用され、サブインデックスiは時間インデックスを示す。以下で詳細に説明されるように、例示的実施形態によれば、入力ベクトルeiはワン・ホット符号化ベクトルである。たとえば、当技術分野では周知のように、ワン・ホット符号化ベクトルは、単一の高(1)ビットを有し、他のすべてのビットが低(0)である組合せのみを有するビットのグループである。例示目的で単純で非限定的な例を用いるために、サイズ4×4の行列を仮定すると、ワン・ホット符号化ベクトルは以下のベクトルのうちの1つとなる:[1 0 0 0]、[0 1 0 0]、[00 1 0]、および[0 0 0 1]。各時間ステップで、新しいワン・ホット符号化ベクトルが使用され、サブインデックスiはその時間インデックスを示す。しかしながら、本明細書では入力ベクトルeiを選ぶための他の方法も企図されることは注目に値する。たとえば、その代わりに、アダマール行列、ランダムな行列などの列から入力ベクトルeiが選ばれ得る。
【0041】
図8は、本発明の一実施形態による、チョッパ値を用いてA行列に対して順方向サイクルy’=Ae
iを実施することによってチョッパ積を読み取ることを示す図である。入力ベクトルe
iが、導電性列ワイヤ506のそれぞれを通じて電圧パルスとして送られ、得られる出力ベクトルy’が、クロスポイント・アレイ502の導電性行ワイヤ504から電流出力として読み取られる。各列ワイヤ506および行ワイヤ504は、A行列がそれを用いて更新された同一のチョッパ値(すなわち、正または負)で読み取られる。たとえば、第1の列ワイヤ506i1が、
図7および
図8では正のチョッパ値(+)を有し、第2の列ワイヤ506i2が、
図7および
図8では負のチョッパ値(X)を有し、第1の行ワイヤ5041iが、
図7および
図8では負のチョッパ値(X)を有する。電圧パルスが、この順方向サイクルに対する入力として列ワイヤ506から供給されるとき、ベクトル行列積が計算される。
【0042】
方法300は、チョッパ積(すなわち、出力ベクトルy’および入力ベクトルe
iとチョッパ値の積)を使用して隠れ行列Hを更新することを含む(ブロック314)。
図9は、A行列904の順方向サイクルで計算された値で隠れ行列H902が更新されることを示す図である。隠れ行列H902は、ほとんどの場合、A行列内の各RPU(すなわち、各RPUがA
ijに配置される)についてのH値906(すなわち、H
ij)を記憶する(A行列および重み行列Wのような物理デバイスではなく)デジタル行列である。順方向サイクルが実施されるとき、出力ベクトルy’eiTが生成され、チョッパ値が掛けられてチョッパ積908が求められ、隠れ行列Hは、各H値906にチョッパ積908を加える。したがって、出力ベクトルが読み取られるごとに、隠れ行列H902は変化する。低雑音レベルのRPUでは、H値906は一貫して増加する。値の増加は、出力ベクトルy’e
i
Tの値に応じて正または負の方向であり得る。出力ベクトルy’e
i
Tが著しい雑音を含む場合、ある反復では正となり、別の反復では負となる可能性が高い。正および負の出力ベクトルy’e
i
T値のこの組合せは、H値906がよりゆっくりと、より一貫せずに増加することを意味する。
【0043】
方法300はまた、反転割合でチョッパ値の符号を反転することを含む(ブロック316)。いくつかの実施形態では、チョッパ積が隠れ行列Hに追加された後にのみ、チョッパ値が反転される。すなわち、チョッパ値は、活性化値および誤差値がA行列に書き込まれたときに1回と、順方向サイクルがA行列から読み取られたときに1回の、2回使用される。チョッパ積が計算される前に、チョッパ値は反転されるべきではない。反転割合は、ユーザ・プリファレンスとして定義され得、したがって各チョッパ積が隠れ行列Hに加えられた後、チョッパは、チョッパ値を反転する割合機会(percentage chance)を有する。たとえば、ユーザ・プリファレンスは50パーセントであり得、したがって時間の半分で、チョッパ積が計算された後に、チョッパ値は符号を変更する(すなわち、正から負、または負から正)機会を有する。
【0044】
H値906が増加するにつれて、方法300は、H値906がしきい値よりも大きくなったかどうかを追跡することを含む(ブロック318)。特定の場所(すなわち、Hij)でH値906がしきい値以下である場合(ブロック318の「いいえ」)、方法300は、順方向サイクル(ブロック304)を実施することから、隠れ行列Hを更新すること(ブロック314)、および潜在的にはチョッパ値を反転すること(ブロック316)を通じて反復する。H値906がしきい値より大きい場合(ブロック310の「はい」)、方法300は、重み行列Wに入力ベクトルe
iを送ることに進むが、特定のRPUについてのみである(ブロック320)。前述のように、H値906の増加は、正または負の方向であり得、したがってしきい値も正または負の値である。
図10は、本発明の一実施形態による、隠れ行列H902が重み行列W1010に選択的に逆に適用される概略図である。
図10は、しきい値に達し、重み行列W1010に送られている第1のH値1012および第2のH値1014を示す。第1のH値1012は正のしきい値に達しており、したがって入力ベクトル1016内のその行について正の1:「1」を保持する。第2のH値1014は負のしきい値に達しており、したがって入力ベクトル1016内のその行について負の1:「-1」を保持する。入力ベクトル1016内の行の残りの部分はゼロを保持する。そうした値(すなわち、H値906)はしきい値を超えて増加していないからである。しきい値は、隠れ行列Hに加えられているy’eiTよりもずっと大きいものであり得る。たとえば、しきい値は、y’eiTの予想強度の10倍または100倍であり得る。こうした高いしきい値により、重み行列Wに対して実施される更新の頻度が削減される。しかしながら、H行列によって実施されるフィルタリング機能は、ニューラル・ネットワークの目標関数の誤差を低減する。こうした更新は、多くのデータ例を処理した後にのみ生成され得、したがって更新の信頼レベルが向上する。この技術により、限られた数の状態のみを有する雑音の多いRPUデバイスを伴うニューラル・ネットワークのトレーニングが可能となる。H値が重み行列Wに適用された後、H値906がゼロにリセットされ、方法300の反復が続行される。
【0045】
重み行列Wがei1018で更新された後、方法300は、トレーニングが完了したかどうかを判定することによって続行される。トレーニングが完了していない場合、たとえば一定の収束基準が満たされていない場合(ブロック322の「いいえ」)、方法300は反復され、順方向サイクルy=Wxを実施することによって再び開始する。たとえば、単に例として、誤差信号に対する改善がもはや見られないとき、トレーニングは完了したと見なされ得る。トレーニングが完了した場合(ブロック322の「はい」)、方法300は終了する。
【0046】
上記で強調したように、例示的実施形態によれば、入力ベクトルe
iは、単一の高(1)ビットを有し、他のすべてのビットが低(0)である組合せのみを有するビットのグループであるワン・ホット符号化ベクトルである。たとえば
図11を参照されたい。
図11に示されるように、サイズ4×4の行列を仮定すると、ワン・ホット符号化ベクトルは以下のベクトルのうちの1つとなる:[1 0 0 0]、[0 1 0 0]、[00 1 0]、および[0 0 0 1]。各時間ステップで、その時間インデックスでのサブインデックスiによって示される、新しいワン・ホット符号化ベクトルが使用される。別の例示的実施形態によれば、入力ベクトルe
iは、アダマール行列の列から選ばれる。当技術分野では周知のように、アダマール行列は、エントリ±1を有する正方行列である。たとえば、
図12(2次のアダマール行列)および
図13(4次のアダマール行列)を参照されたい。本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体を含み得る。
【0047】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持および記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、たとえば、限定はしないが、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または上記の任意の適切な組合せであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピィ(R)・ディスク、命令が記録されたパンチ・カードや溝の中の隆起構造などの機械的に符号化されたデバイス、および上記の任意の適切な組合せが含まれる。本明細書では、コンピュータ可読記憶媒体は、電波または他の自由伝播電磁波、導波路または他の伝送媒体を通じて伝播する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、ワイヤを通じて伝送される電気信号など、本質的に一時的信号であると解釈されるべきではない。
【0048】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、たとえばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体内に記憶するためにコンピュータ可読プログラム命令を転送する。
【0049】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械語命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語と、「C」プログラミング言語や類似のプログラミング言語などの従来の手続型プログラミング言語とを含む1つまたは複数のプログラミング言語の何らかの組合せで書かれたソース・コードまたはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、スタンド・アロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ、および部分的にリモート・コンピュータ上で、または完全にリモート・コンピュータもしくはサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続され得、または接続が外部コンピュータに対して(たとえば、インターネット・サービス・プロバイダを使用してインターネットを通じて)行われ得る。いくつかの実施形態では、たとえばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによってコンピュータ可読プログラム命令を実行し得る。
【0050】
本発明の態様が、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書で説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、フローチャート図またはブロック図あるいはその両方の中のブロックの組合せが、コンピュータ可読プログラム命令によって実装され得ることを理解されよう。
【0051】
こうしたコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実装するための手段を生み出すように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに与えられ、マシンが作り出され得る。こうしたコンピュータ可読プログラム命令はまた、命令を記憶するコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作の態様を実装する命令を含む製品を含むように、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示し得るコンピュータ可読記憶媒体内に記憶され得る。
【0052】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実装するように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実施させて、コンピュータ実装プロセスが生成され得る。
【0053】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。この点で、フローチャートまたはブロック図の各ブロックは、指定の論理的機能を実装するための1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または部分を表し得る。いくつかの代替実装では、ブロック内に記載の機能は、図に記載されている以外の順序で行われ得る。たとえば、連続して示される2つのブロックは、実際にはほぼ同時に実行され得、またはブロックは、関係する機能に応じて、時には逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せが、指定の機能または動作を実施し、あるいは専用ハードウェアとコンピュータ命令の組合せを実施する専用ハードウェア・ベースのシステムによって実装され得ることにも留意されよう。
【0054】
次に
図14を参照すると、本明細書で提示される方法のうちの1つまたは複数を実装するための装置1400のブロック図が示されている。単に例として、装置1400は、アレイに印加される入力電圧パルスを制御し、かつ/またはアレイからの出力信号を処理するように構成され得る。
【0055】
装置1400は、コンピュータ・システム1410および取外し可能媒体1450を含む。コンピュータ・システム1410は、プロセッサ・デバイス1420、ネットワーク・インターフェース1425、メモリ1430、媒体インターフェース1435、および任意選択のディスプレイ1440を含む。ネットワーク・インターフェース1425により、コンピュータ・システム1410がネットワークに接続することが可能となり、媒体インターフェース1435により、コンピュータ・システム1410が、ハード・ドライブや取外し可能媒体1450などの媒体と対話することが可能となる。
【0056】
プロセッサ・デバイス1420は、本明細書で開示される方法、ステップ、および機能を実装するように構成され得る。メモリ1430は分散し、またはローカルであり得、プロセッサ・デバイス1420は分散し、または単一であり得る。メモリ1430は、電気的メモリ、磁気的メモリ、または光メモリ、あるいはこれらまたは他のタイプの記憶デバイスの任意の組合せとして実装され得る。さらに、「メモリ」という用語は、プロセッサ・デバイス1420によってアクセスされるアドレス指定可能な空間内のアドレスから読み取り、またはそれに書き込むことのできる任意の情報を包含するように十分に広く解釈されるべきである。この定義では、ネットワーク・インターフェース1425を通じてアクセス可能なネットワーク上の情報は、依然としてメモリ1430内にある。プロセッサ・デバイス1420は、ネットワークから情報を取り出すことができるからである。プロセッサ・デバイス1420を構成する各分散プロセッサは、一般にそれ自体のアドレス指定可能なメモリ空間を含むことに留意されたい。コンピュータ・システム1410の一部またはすべてが、特定用途向けまたは汎用集積回路内に組み込まれ得ることにも留意されたい。
【0057】
任意選択のディスプレイ1440は、装置1400の人間のユーザと対話するのに適した任意のタイプのディスプレイである。一般に、ディスプレイ1440は、コンピュータ・モニタまたは他の類似のディスプレイである。
【0058】
本発明の例示的実施形態が本明細書で説明されたが、本発明はそうした厳密な実施形態に限定されないこと、および本発明の範囲から逸脱することなく、当業者によって様々な他の変更および修正が行われ得ることを理解されたい。
【国際調査報告】