(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-08
(45)【発行日】2023-12-18
(54)【発明の名称】メモリスタに基づくニューラルネットワークの並列加速方法およびプロセッサ、装置
(51)【国際特許分類】
G06G 7/60 20060101AFI20231211BHJP
G06N 3/063 20230101ALI20231211BHJP
G11C 11/54 20060101ALI20231211BHJP
G11C 13/00 20060101ALI20231211BHJP
G06G 7/16 20060101ALI20231211BHJP
G06G 7/14 20060101ALI20231211BHJP
H10B 63/00 20230101ALI20231211BHJP
H10B 63/10 20230101ALI20231211BHJP
【FI】
G06G7/60
G06N3/063
G11C11/54
G11C13/00 200
G06G7/16 510
G06G7/14
H10B63/00
H10B63/10
(21)【出願番号】P 2022526246
(86)(22)【出願日】2020-01-10
(86)【国際出願番号】 CN2020071424
(87)【国際公開番号】W WO2021088248
(87)【国際公開日】2021-05-14
【審査請求日】2022-05-06
(31)【優先権主張番号】201911082236.3
(32)【優先日】2019-11-07
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】502192546
【氏名又は名称】清華大学
【氏名又は名称原語表記】Tsinghua University
【住所又は居所原語表記】Tsinghua University,Haidian District,Beijing 100084,P.R.China
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】▲呉▼ ▲華▼▲強▼
(72)【発明者】
【氏名】姚 ▲鵬▼
(72)【発明者】
【氏名】高 ▲浜▼
(72)【発明者】
【氏名】▲銭▼ ▲鶴▼
【審査官】佐賀野 秀一
(56)【参考文献】
【文献】特開2018-200627(JP,A)
【文献】特開平02-266458(JP,A)
【文献】特開2019-153254(JP,A)
【文献】米国特許出願公開第2014/0180989(US,A1)
【文献】米国特許出願公開第2018/0157969(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06G 7/60
G06N 3/063
G11C 11/54
G11C 13/00
G06G 7/16
G06G 7/14
H10B 63/00
H10B 63/10
(57)【特許請求の範囲】
【請求項1】
メモリスタに基づくニューラルネットワークの並列加速方法であって、
前記ニューラルネットワークは、順次に設定された複数の機能層を含み、前記複数の機能層は、並列された複数の第1メモリスタアレイを含む第1機能層と、前記第1機能層の後に位置する第2機能層とを含み、前記複数の第1メモリスタアレイは、前記第1機能層の操作を並列して
独立に実行し、
前記操作
の複数の結果を前記第2機能層に
別々に出力するために用いられ、
前記ニューラルネットワークの重みパラメータは、前記第1機能層の複数の重みパラメータを含み、前記第1機能層の前記複数の重みパラメータがそれぞれ前記複数の第1メモリスタアレイに逐一対応して書き込まれることで、前記複数の第1メモリスタアレイのコンダクタンスが決定され、
前記並列加速方法は、
前記複数の第1メモリスタアレイを用いて前記第1機能層の操作を並列して
独立に実行し、前記操作
の前記複数の結果を前記第2機能層に
別々に出力するステップを含む、並列加速方法。
【請求項2】
前記複数の第1メモリスタアレイを用いて前記第1機能層の操作を並列して
独立に実行し、前記操作
の前記複数の結果を前記第2機能層に
別々に出力するステップは、
前記第1機能層により受信された入力データを前記複数の第1メモリスタアレイに逐一対応する複数のサブ入力データに分割するステップと、
前記複数の第1メモリス
タアレイを用いて前記複数のサブ入力データに対して前記第1機能層の操作を並列して実行して、複数のサブ操作結果を対応して生成するステップであって、前記操作
の前記複数の結果は複数のサブ操作結果を含むステップとを含む、請求項1に記載の並列加速方法。
【請求項3】
前記複数のサブ操作結果を接合して接合結果を取得し、前記第2機能層を用いて接合結果に対して前記第2機能層の操作を実行するステップをさらに含む、請求項2に記載の並列加速方法。
【請求項4】
前記複数のサブ入力データのサイズは、基本的に同じである、請求項2又は3に記載の並列加速方法。
【請求項5】
前記複数の第1メモリスタアレイを用いて前記第1機能層の操作を並列して
独立に実行し、前記操作
の前記複数の結果を前記第2機能層に
別々に出力するステップは、
前記第1機能層により受信された複数の入力データをそれぞれ前記複数の第1メモリスタアレイに提供するステップと、
前記複数の第1メモリス
タアレイの少なくとも一部を用いて、受信された前記複数の入力データに対して前記第1機能層の操作を並列して実行して、複数のサブ操作結果を対応して生成するステップであって、前記操作
の前記複数の結果は複数のサブ操作結果を含むステップとを含む、請求項1に記載の並列加速方法。
【請求項6】
前記第2機能層を用いて前記複数のサブ操作結果に対してそれぞれ前記第2機能層の操作を実行するステップをさらに含む、請求項5に記載の並列加速方法。
【請求項7】
前記複数の入力データは、互いに異なる、請求項5又は6に記載の並列加速方法。
【請求項8】
前記ニューラルネットワークは、畳み込みニューラルネットワークである、請求項1~7のいずれか一項に記載の並列加速方法。
【請求項9】
前記第1機能層は、前記ニューラルネットワークの初期畳み込み層である、請求項8に記載の並列加速方法。
【請求項10】
前記複数の機能層は、第3機能層をさらに含み、前記第3機能層の出力が前記第1機能層に提供される、請求項1~9のいずれか一項に記載の並列加速方法。
【請求項11】
前記ニューラルネットワークの重みパラメータは、オフチップトレーニングにより得られ
る、請求項1~10のいずれか一項に記載の並列加速方法。
【請求項12】
前記ニューラルネットワークの重みパラメータは、前記第1機能層以外の他の機能層の重みパラメータをさらに含み、前記他の機能層の重みパラメータが前記他の機能層に対応するメモリスタアレイに書き込まれることで、前記他の機能層に対応するメモリスタアレイのコンダクタンスが決定される、請求項11に記載の並列加速方法。
【請求項13】
メモリスタに基づくニューラルネットワークの並列加速プロセッサであって、
前記ニューラルネットワークは、順次に設定された複数の機能層を含み、前記複数の機能層は、第1機能層を含み、
前記並列加速プロセッサは、複数のメモリスタアレイ算出ユニットを含み、前記複数のメモリスタアレイ算出ユニットは、複数の第1メモリスタアレイ算出ユニットを含み
、前記複数の第1メモリスタアレイ算出ユニットは、前記第1機能層の操作に対応する演算を並列して
独立に実行するように構成され
、
前記ニューラルネットワークの重みパラメータは、前記第1機能層の複数の重みパラメータを含み、前記第1機能層の前記複数の重みパラメータがそれぞれ前記複数の第1メモリスタアレイ算出ユニットに逐一対応して書き込まれることで、前記複数の第1メモリスタアレイ算出ユニットのコンダクタンスが決定される、並列加速プロセッサ。
【請求項14】
メモリスタに基づくニューラルネットワークの並列加速装置であって、
請求項13に記載の並列加速プロセッサと、
前記並列加速プロセッサに接続された入力インタフェース及び出力インタフェースと、を含み、
前記入力インタフェースは、命令を受信して前記並列加速プロセッサの作動を制御するように構成され、前記出力インタフェースは、前記並列加速プロセッサの
前記作動
の複数の結果を出力するように構成される、並列加速装置。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2019年11月7日に提出され、名称が「メモリスタに基づくニューラルネットワークの並列加速方法およびプロセッサ、装置」であり、出願番号が201911082236.3である中国特許出願の優先権を主張し、ここで、全文に上記中国特許出願に開示されている内容を引用して本願の一部とする。
【0002】
本開示の実施例は、メモリスタに基づくニューラルネットワークの並列加速方法およびプロセッサ、装置に関する。
【背景技術】
【0003】
ディープニューラルネットワークアルゴリズムは、知能化の情報技術革命をもたらす。様々なディープニューラルネットワークアルゴリズムに基づいて、画像の認識及び分割と、物体検出と、音声及びテキストへの翻訳、生成などの処理を実現することができる。ディープニューラルネットワークアルゴリズムを使用して異なる動作負荷を処理することは、データを中心とする算出であり、当該アルゴリズムを実現するハードウェアプラットフォームは、高性能、低消費電力の処理能力を有する必要がある。しかしながら、当該アルゴリズムを実現する従来のハードウェアプラットフォームは、記憶及び算出が分離するノイマンアーキテクチャであり、このようなアーキテクチャにおいて、算出時にデータを記憶装置と算出装置との間で往復移動させる必要がある。それで、大量のパラメータを含むディープニューラルネットワークの算出過程において、当該アーキテクチャの効率が低い。このために、新規算出ハードウェアを開発してディープニューラルネットワークアルゴリズムを実行することは、現在早急に解決する必要がある問題となる。
【発明の概要】
【課題を解決するための手段】
【0004】
本開示の少なくとも一つの実施例は、メモリスタに基づくニューラルネットワークの並列加速方法を提供し、前記ニューラルネットワークは、順次に設定された複数の機能層を含み、前記複数の機能層は、並列された複数の第1メモリスタアレイを含む第1機能層と、前記第1機能層の後に位置する第2機能層とを含み、前記複数の第1メモリスタアレイは、前記第1機能層の操作を並列して実行し、操作結果を前記第2機能層に出力するために用いられ、前記並列加速方法は、前記複数の第1メモリスタアレイを用いて前記第1機能層の操作を並列して実行し、前記操作結果を前記第2機能層に出力するステップを含む。
【0005】
例えば、本開示のいくつかの実施例に係る並列加速方法において、前記複数の第1メモリスタアレイを用いて前記第1機能層の操作を並列して実行し、前記操作結果を前記第2機能層に出力するステップは、前記第1機能層により受信された入力データを前記複数の第1メモリスタアレイに逐一対応する複数のサブ入力データに分割するステップと、前記複数の第1メモリスタセルアレイを用いて前記複数のサブ入力データに対して前記第1機能層の操作を並列して実行して、複数のサブ操作結果を対応して生成するステップとを含む。
【0006】
例えば、本開示のいくつかの実施例に係る並列加速方法は、前記複数のサブ操作結果を接合し、前記第2機能層を用いて接合結果に対して前記第2機能層の操作を実行するステップをさらに含む。
【0007】
例えば、本開示のいくつかの実施例に係る並列加速方法において、前記複数のサブ入力データのサイズは、基本的に同じである。
【0008】
例えば、本開示のいくつかの実施例に係る並列加速方法において、前記複数の第1メモリスタアレイを用いて前記第1機能層の操作を並列して実行し、前記操作結果を前記第2機能層に出力するステップは、前記第1機能層により受信された複数の入力データをそれぞれ前記複数の第1メモリスタアレイに提供するステップと、前記複数の第1メモリスタセルアレイの少なくとも一部を用いて、受信された前記複数の入力データに対して前記第1機能層の操作を並列して実行して、複数のサブ操作結果を対応して生成するステップとを含む。
【0009】
例えば、本開示のいくつかの実施例に係る並列加速方法は、前記第2機能層を用いて前記複数のサブ操作結果に対してそれぞれ前記第2機能層の操作を実行するステップをさらに含む。
【0010】
例えば、本開示のいくつかの実施例に係る並列加速方法において、前記複数の入力データは、互いに異なる。
【0011】
例えば、本開示のいくつかの実施例に係る並列加速方法において、前記ニューラルネットワークは、畳み込みニューラルネットワークである。
【0012】
例えば、本開示のいくつかの実施例に係る並列加速方法において、前記第1機能層は、前記ニューラルネットワークの初期畳み込み層である。
【0013】
例えば、本開示のいくつかの実施例に係る並列加速方法において、前記複数の機能層は、第3機能層をさらに含み、前記第3機能層の出力が前記第1機能層に提供される。
【0014】
例えば、本開示のいくつかの実施例に係る並列加速方法において、前記ニューラルネットワークの重みパラメータは、オフチップトレーニング(off-chip training)により得られ、前記ニューラルネットワークの重みパラメータは、前記第1機能層の重みパラメータを含み、前記第1機能層の重みパラメータが前記複数の第1メモリスタアレイに書き込まれて、前記複数の第1メモリスタアレイのコンダクタンスが決定される。
【0015】
例えば、本開示のいくつかの実施例に係る並列加速方法において、前記ニューラルネットワークの重みパラメータは、前記第1機能層以外の他の機能層の重みパラメータをさらに含み、前記他の機能層の重みパラメータが前記他の機能層に対応するメモリスタアレイに書き込まれることで、前記他の機能層に対応するメモリスタアレイのコンダクタンスが決定される。
【0016】
本開示の少なくとも一つの実施例は、メモリスタに基づくニューラルネットワークの並列加速プロセッサをさらに提供し、前記ニューラルネットワークは、順次に設定された複数の機能層を含み、前記複数の機能層は、第1機能層を含み、前記並列加速プロセッサは、複数のメモリスタアレイ算出ユニットを含み、前記複数のメモリスタアレイ算出ユニットは、複数の第1メモリスタアレイ算出ユニットを含み、前記第1機能層の重みパラメータは、前記複数の第1メモリスタアレイ算出ユニットに書き込まれ、前記複数の第1メモリスタアレイ算出ユニットは、前記第1機能層の操作に対応する演算を並列して実行するように構成される。
【0017】
本開示の少なくとも一つの実施例は、メモリスタに基づくニューラルネットワークの並列加速装置をさらに提供し、本開示のいずれか一つの実施例に係る並列加速プロセッサと、前記並列加速プロセッサに接続された入力インタフェース及び出力インタフェースと、を含み、前記入力インタフェースは、命令を受信して前記並列加速プロセッサの作動を制御するように構成され、前記出力インタフェースは、前記並列加速プロセッサの作動結果を出力するように構成される。
【図面の簡単な説明】
【0018】
本開示の実施例の技術的解決手段をより明確に説明するために、実施例の図面を以下に簡単に紹介する。明らかに、以下の説明の図面は、本開示を限定するのではなく、本開示のいくつかの実施例にのみ関連している。
【
図1】
図1は、メモリスタユニット回路の模式図である。
【
図3】
図3は、畳み込みニューラルネットワークの模式図である。
【
図4】
図4は、畳み込みニューラルネットワークの動作過程模式図である。
【
図5A】
図5Aは、メモリスタアレイに基づく畳み込みニューラルネットワークの畳み込み算出の模式図である。
【
図5B】
図5Bは、メモリスタアレイに基づく畳み込みニューラルネットワークの完全接続算出の模式図である。
【
図6】
図6は、本開示のいくつかの実施例に係るニューラルネットワークの構造概略ブロック図である。
【
図7A】
図7Aは、
図6に示すニューラルネットワークの並列加速方法における第1機能層の並列処理方式である。
【
図7B】
図7Bは、
図6に示すニューラルネットワークの並列加速方法における第1機能層の別の並列処理方式である。
【
図8】
図8は、本開示のいくつかの実施例に係るニューラルネットワークのオフチップトレーニング方法のフローチャートである。
【
図9】
図9は、本開示のいくつかの実施例に係るメモリスタに基づくニューラルネットワークの並列加速プロセッサの模式図である。
【
図10】
図10は、
図9に示す並列加速プロセッサにおけるメモリスタアレイ算出ユニットの構造模式図である。
【
図11】
図11は、本開示のいくつかの実施例に係るメモリスタに基づくニューラルネットワークの並列加速装置の概略ブロック図である。
【発明を実施するための形態】
【0019】
本開示の目的、技術案及び利点をさらに明確に説明するために、以下、本開示の実施例の図面を参照して、本開示の実施例の技術案について明確で完全に説明する。明らかなように、記載された実施例は、本開示の一部の実施例であり、全ての実施例ではない。記載の本開示の実施例に基づいて、当業者が創造的な労働をせずに取得するその他の実施例は、いずれも本開示の保護範囲に含まれる。
【0020】
特に定義されない限り、本開示で使用される技術用語又は科学用語は、当業者が理解する通常の意味である。本開示で使用される「第1」、「第2」及び類似する語は、何らかの順序、数量又は重要性を示すものではなく、異なる構成部分を区別するためのものにすぎない。同様に、「一つ」、「一」又は、「当該」等の類似する語も数制限を示すものではなく、少なくとも一つ存在することを示す。「含む」や「含まれる」などの類似する語は、この語の前に出現した素子や物がこの語の後に挙げられる素子や物、及びそれらの均等物を含むことを意味するが、その他の素子や物を排除するものではない。「接続」や「互いに接続」などの類似する語は、物理的又は機械的な接続に限定されず、直接的か間接的かを問わず、電気的な接続を含んでもよい。「上」、「下」、「左」、「右」などは、相対位置関係を示すためのものにすぎず、説明対象の絶対位置が変わると、当該相対位置関係もそれに応じて変わる可能性がある。
【0021】
メモリスタ(抵抗変化メモリ、相変化メモリ、導電ブリッジメモリ等)は、外部励起を印加することにより、そのコンダクタンス状態を調整することができる不揮発性デバイスである。キルヒホッフ電流の法則(Kirchhoff’s current law)及びオームの法則(Ohm’s law)に基づいて、このようなデバイスで構成されたアレイは、積和演算(multiply-accumulate)を並列して完了することができ、かつ記憶及び算出は、いずれもアレイの各デバイスに発生する。このような算出アーキテクチャに基づいて、大量のデータの転送を必要としないインメモリコンピューティング(In-memory computing)を実現することができる。同時に、積和演算は、ニューラルネットワークの動作に必要なコア算出タスクである。したがって、アレイにおけるメモリスタ型デバイスのコンダクタンスを使用して重み値を表示し、このようなインメモリコンピューティングに基づいて効率が高いニューラルネットワーク演算を実現することができる。
【0022】
図1は、メモリスタユニット回路の模式図である。
図1に示すように、当該メモリスタユニット回路は、1T1R構造を採用し、すなわち当該メモリスタユニット回路は、一つのトランジスタM1及び一つのメモリスタR1を含む。
【0023】
なお、本開示の実施例で採用されたトランジスタは、いずれも薄膜トランジスタ又は電界効果トランジスタ(例えばMOS電界効果トランジスタ)又は他の特性が同じであるスイッチデバイスであってよい。ここで採用されたトランジスタのソース、ドレインは、構造的には対称であってよいため、そのソース、ドレインは、構造的に区別されていなくてよい。本開示の実施例において、トランジスタのゲート以外の二つの電極を区別するために、そのうちの一電極が第1電極であり、他の電極が第2電極であることを直接説明する。
【0024】
本開示の実施例は、採用されたトランジスタのタイプを限定せず、例えばトランジスタM1がN型トランジスタを採用する場合、そのゲートがワード線端WLに接続され、例えばワード線端WLがハイレベルを入力する時にトランジスタM1がオンにする。トランジスタM1の第1電極はソースであって、且つソース線端SLに接続されてもよく、例えばトランジスタM1は、ソース線端SLによりリセット電圧を受信することができる。トランジスタM1の第2電極はドレインであって、且つメモリスタR1の第2電極(例えば負極)に接続されてもよい。メモリスタR1の第1電極(例えば正極)がビット線端BLに接続され、例えばメモリスタR1は、ビット線端BLによりセット電圧を受信することができる。例えばトランジスタM1がP型トランジスタを採用する場合、そのゲートは、ワード線端WLに接続され、例えばワード線端WLがローレベルを入力する時にトランジスタM1がオンにする。トランジスタM1の第1電極はドレインであって、且つソース線端SLに接続されてもよく、例えばトランジスタM1は、ソース線端SLによりリセット電圧を受信することができる。トランジスタM1の第2電極はソースであって、且つメモリスタR1の第2極(例えば負極)に接続されてもよく、メモリスタR1の第1電極(例えば正極)は、ビット線端BLに接続され、例えばメモリスタR1は、ビット線端BLによりセット電圧を受信することができる。なお、抵抗変化メモリ構造は、メモリスタR1の第2電極がソース線端SLに接続された構造のような他の構造として実現されてもよく、本開示の実施例は、これを限定しない。以下の各実施例は、いずれもトランジスタM1がN型トランジスタを採用することを例として説明する。
【0025】
ワード線端WLの作用は、トランジスタM1のゲートに対応する電圧を印加し、それによりトランジスタM1のオン又はオフを制御することである。セット操作又はリセット操作を行うなどメモリスタR1を操作する場合には、いずれも、まずトランジスタM1をオンにする必要があり、すなわちワード線端WLによりトランジスタM1のゲートにオン電圧を印加する必要がある。トランジスタM1をオンにした後、例えば、ソース線端SLとビット線端BLにストレージR1に電圧を印加することにより、メモリスタR1の抵抗状態を変化させることができる。例えば、ビット線端BLによりセット電圧を印加することにより、当該メモリスタR1が低抵抗状態にある。また、例えば、ソース線端SLによりリセット電圧を印加することにより、当該メモリスタR1が高抵抗状態にある。
【0026】
なお、本開示の実施例において、ワード線端WL及びビット線端BLにより同時に電圧を印加することにより、メモリスタR1の抵抗値がますます小さくなり、すなわちメモリスタR1が高抵抗状態から低抵抗状態に変化し、メモリスタR1を高抵抗状態から低抵抗状態に変化させる操作をセット操作と呼ぶ。ワード線端WL及びソース線端SLにより同時に電圧を印加することにより、メモリスタR1の抵抗値がますます大きくなり、すなわちメモリスタR1が低抵抗状態から高抵抗状態に変化し、メモリスタR1を低抵抗状態から高抵抗状態に変化させる操作をリセット操作と呼ぶ。例えば、メモリスタR1が閾値電圧を有し、入力電圧振幅がメモリスタR1の閾値電圧より小さい時に、メモリスタR1の抵抗値(又は、コンダクタンス値)を変化させない。この場合、閾値電圧より小さい電圧を入力することにより、メモリスタR1の抵抗値(又はコンダクタンス値)を使用して算出することができる。閾値電圧より大きい電圧を入力することにより、メモリスタR1の抵抗値(又はコンダクタンス値)を変化させることができる。
【0027】
図2は、メモリスタアレイを示し、当該メモリスタアレイは、複数の
図1に示すメモリスタユニット回路で構成される。例えば、複数のメモリスタユニット回路は、m行n列のアレイを構成し、mが1より大きい整数であり、nが1以上の整数である。
図2においてBL<1>、BL<2>・・・BL<m>は、それぞれ第1行、第2行・・・第m行のビット線を示し、各行のメモリスタユニット回路におけるメモリスタは、当該行に対応するビット線に接続される。
図2におけるWL<1>、WL<2>・・・WL<n>は、それぞれ第1列、第2列・・・第n列のワード線を示し、各列のメモリスタセルユニット回路におけるトランジスタのゲートは、当該列に対応するワード線に接続される。
図2におけるSL<1>、SL<2>・・・SL<n>は、それぞれ第1列、第2列・・・第n列のソース線を示し、各列のメモリスタセルユニット回路におけるトランジスタのソースは、当該列に対応するソース線に接続される。
【0028】
図2に示すm行n列のメモリスタアレイは、サイズがm行n列であるニューラルネットワーク重み行列を表すことができる。例えば、第1層のニューロン層は、m個のニューロンノードを有し、且つ
図2に示すメモリスタセルアレイのm行のビット線に対応して接続される。第2層のニューロン層は、n個のニューロンノードを有し、
図2に示すメモリスタセルアレイのn列のソース線に対応して接続される。第1層のニューロン層に電圧励起を並列して入力することにより、第2層のニューロン層に電圧励起ベクトルとメモリスタアレイのコンダクタンス行列(コンダクタンスが抵抗の逆数である)を乗算して得られた出力電流を得ることができる。
【0029】
具体的には、キルヒホッフの法則に基づいて、メモリスタアレイの出力電流は、式1により得ることができ、
【数1】
ここで、j=1、…、nであり、k=1、…、mである。
【0030】
上記式において、vkは、第1層のニューロン層におけるニューロンノードkから入力した電圧励起を表し、ijは、第2層のニューロン層のニューロンノードjの出力電流を表し、gk,jは、メモリスタアレイのコンダクタンス行列を表す。
【0031】
キルヒホッフの法則から分かるように、メモリスタアレイは、積和演算を並列に完了することができる。
【0032】
なお、例えば一部の例において、ニューラルネットワーク重み行列の各重みは、二つのメモリスタを使用して実現されてもよい。すなわち、メモリスタセルアレイにおける二列のメモリスタにより一列の出力電流の出力を実現することができる。この場合、サイズがm行n列であるニューラルネットワーク重み行列を表すと、m行2n列のメモリスタアレイを必要とする。
【0033】
なお、メモリスタアレイから出力された電流は、アナログ電流であり、一部の例において、アナログデジタル変換回路(ADC)によりアナログ電流をデジタル電圧に変換して第2層のニューロン層に伝達することができ、それにより第2層のニューロン層は、デジタルアナログ変換回路(DAC)によりデジタル電圧をアナログ電圧に変換し、かつ他のメモリスタアレイを介して他の層のニューロン層に接続することができる。他の一部の例において、サンプルホールド回路によりアナログ電流をアナログ電圧に変換して第2層のニューロン層に伝送することができる。
【0034】
畳み込みニューラルネットワーク(Convolute Neural Network、CNN)は、主に二次元形状を識別するために用いられ、且つ画像の平行移動、スケーリング、傾斜又は他の形式の変形に対しては高度不変性を有する。CNNは、主に局所受容野と重み値共有によりニューラルネットワークモデルの複雑さを簡略化し、重みの数を減少させる。深層学習技術の発展に伴い、CNNの応用範囲は、画像認識の分野に限定されず、それが顔認識、文字認識、動物分類、画像処理などの分野に応用することができる。
【0035】
図3は、畳み込みニューラルネットワークの模式図を示す。例えば、当該畳み込みニューラルネットワークは、画像処理に用いることができ、且つ画像を入力及び出力として使用し、スカラー量の重みの代わりに畳み込みカーネル(convolution kernel)を使用する。
図3は、3層のニューロン層を有する畳み込みニューラルネットワークのみを示し、本開示の実施例は、これを限定しない。
図3に示すように、畳み込みニューラルネットワークは、3層のニューロン層を含み、それぞれ入力層101、隠れ層102及び出力層103である。入力層101は、4つの入力を有し、隠れ層102は、3つの出力を有し、出力層103は、2つの出力を有する。
【0036】
例えば、入力層101の4つの入力は、4枚の画像であってよく、又は、1枚の画像の四種の特徴マップであってよい。隠れ層102の3つの出力は、入力層101から入力された画像の特徴マップであってよい。
【0037】
例えば、
図3に示すように、畳み込み層は、重みW
k
ij及びバイアスb
k
iを有する。重みW
k
ijは、畳み込みカーネルを表し、バイアスb
k
iは、畳み込み層の出力に
重畳されたスカラー量であり、ここで、kは、入力層101を表すタグであり、i及びjは、それぞれ入力層101のユニットと隠れ層102のユニットのタグである。例えば、第1畳み込み層201は、第1組の畳み込みカーネル(
図3におけるW
1
ij)と第1組のバイアス(
図3におけるb
1
i)とを含む。第2畳み込み層202は、第2組の畳み込みカーネル(
図3のW
2
ij)と第2組のバイアス(
図3のb
2
i)とを含む。一般的には、各畳み込み層は、数十又は数百個の畳み込みカーネルを含み、畳み込みニューラルネットワークが深度畳み込みニューラルネットワークであれば、それは、少なくとも五層の畳み込み層を含むことができる。
【0038】
例えば、
図3に示すように、当該畳み込みニューラルネットワークは、第1活性化層203及び第2活性化層204をさらに含む。第1活性化層203は、第1畳み込み層201の後に位置し、第2活性化層204は、第2畳み込み層202の後に位置する。活性化層(例えば、第1活性化層203及び第2活性化層204)は、活性化関数を含み、活性化関数は、畳み込みニューラルネットワークに非線形因子を導入することに用いられることにより、畳み込みニューラルネットワークは、複雑な問題をよりよく解決することができる。活性化関数は、整流線形ユニット(ReLU)関数、S型関数(シグモイド関数)又は双曲線正接関数(tanh関数)などを含んでもよい。ReLU関数は、非飽和非線形関数であり、Sigmoid関数及びtanh関数は、飽和非線形関数である。例えば、活性化層は、単独で畳み込みニューラルネットワークの一層とすることができ、又は活性化層は、畳み込み層(例えば、第1畳み込み層201が第1活性化層203を含んでよく、第2畳み込み層202が第2活性化層204を含んでよく)に含まれてもよい。
【0039】
例えば、第1畳み込み層201において、まず、各入力に対して第1組の畳み込みカーネルのうちのいくつかの畳み込みカーネルW1
ijと第1組のバイアスのうちのいくつかのバイアスb1
iを応用して、第1畳み込み層201の出力を得て、次に、第1畳み込み層201の出力を第1活性化層203により処理することにより、第1活性化層203の出力を得る。第2畳み込み層202において、まず、入力された第1活性化層203における出力に対して第2組の畳み込みカーネルのうちのいくつかの畳み込みカーネルW2
ijと第2組のバイアスのうちのいくつかのバイアスb2
iを応用して、第2畳み込み層202の出力を得て、次に、第2畳み込み層202の出力を第2活性化層204により処理することにより、第2活性化層204の出力を得る。例えば、第1畳み込み層201の出力は、その入力に対して畳み込みカーネルW1
ijを応用した後にバイアスb1
iを加算した結果であってもよく、第2畳み込み層202の出力は、第1活性化層203の出力に対して畳み込みカーネルW2
ijを応用した後にバイアスb2
iを加算した結果であってもよい。
【0040】
畳み込みニューラルネットワークを利用して画像処理を行う前に、畳み込みニューラルネットワークをトレーニングする必要がある。トレーニングされた後、畳み込みニューラルネットワークの畳み込みカーネル及びバイアスは、画像処理期間に不変を保持する。トレーニング過程において、各畳み込みカーネル及びバイアスは、複数組の入力/出力例示画像及び最適化アルゴリズムにより調整することにより、最適化された畳み込みニューラルネットワークモデルを取得する。
【0041】
図4は、畳み込みニューラルネットワークの動作過程模式図を示す。例えば、
図4に示すように、入力画像を畳み込みニューラルネットワークに入力した後、順次いくつかの処理過程(
図4における畳み込み算出、ダウンサンプリング(すなわちdown-sampling)、ベクトル化、完全接続算出等)を行った後に対応する出力を得る。畳み込みニューラルネットワークの主な構成要素は、複数の畳み込み層、複数のダウンサンプリング層(すなわちdown-sampling layer)、平坦化層及び完全接続層を含むことができる。本開示において、理解すべきなのは、複数の畳み込み層、複数のダウンサンプリング層、平坦化層及び完全接続層などのこれらの層は、それぞれ対応する処理/操作を指し、すなわち畳込み処理/操作(
図4における畳み込み算出に示すとおりである)、ダウンサンプリング処理/操作(
図4におけるダウンサンプリングに示すとおりである)、平坦化処理/操作(
図4におけるベクトル化に示すとおりである)、完全接続処理/操作(
図4における完全接続算出に示すとおりである)等であり、後に繰り返して説明しない。なお、本開示において、これらの層は、対応する処理/操作を指す層を機能層と総称することにより、ニューロン層と区別するために用いられる。なお、機能層は、さらにアップサンプリング層(アップサンプル層)、標準化層等を含んでよく、本開示の実施例は、これを限定しない。
【0042】
畳み込み層は、畳み込みニューラルネットワークのコア層である。畳み込みニューラルネットワークの畳み込み層において、一つのニューロンは、一部の隣接する層のニューロンに接続される。畳み込み層は、入力画像にいくつかの畳み込みカーネル(フィルタとも呼ばれる)を応用して、入力画像の複数の種類の特徴を抽出することができる。各畳み込みカーネルは、一種類の特徴を抽出することができる。畳み込みカーネルは、一般的には、ランダム小数行列の形式で初期化され、畳み込みニューラルネットワークのトレーニング過程において畳み込みカーネルは、学習して合理的な重み値を得る。入力画像に対して一つの畳み込みカーネルを応用した後に得られた結果は、特徴マップ(feature map)と呼ばれ、特徴マップの数は、畳み込みカーネルの数と等しい。各特徴マップは、いくつかの矩形で配列されたニューロンで構成され、同一の特徴マップのニューロンは、重み値を共有し、ここで共有された重み値は、畳み込みカーネルである。一階層の畳み込み層から出力された特徴マップは、隣接する次階層の畳み込み層に入力されて再処理して新たな特徴マップを得ることができる。例えば、
図4に示すように、第1階層の畳み込み層は、第1特徴マップを出力することができ、当該第1特徴マップは、第2階層の畳み込み層に入力されて再び処理されて第2特徴マップを取得する。
【0043】
例えば、
図4に示すように、畳み込み層は、異なる畳み込みカーネルを使用して入力画像のある局所体験領域のデータに対して畳み込みを行うことができ、畳み込み結果は、活性化層に入力することができ、活性化層は、対応する活性化関数に基づいて算出して入力画像の特徴情報を取得する。
【0044】
例えば、
図4に示すように、ダウンサンプリング層は、隣接する畳み込み層の間に設置され、ダウンサンプリング層は、ダウンサンプリングの一つの形式である。一方では、ダウンサンプリング層は、入力画像の規模を低減し、算出の複雑さを簡略化し、ある程度でオーバートレーニング現象を減少させることに用いられる。他方では、ダウンサンプリング層は、特徴の圧縮を行い、入力画像の主要な特徴を抽出することができる。ダウンサンプリング層は、特徴マップのサイズを減少させることができるが、特徴マップの数を変更しない。例えば、一つのサイズが12×12である入力画像に対して、6×6の畳み込みカーネルによりサンプリングを行う場合、2×2の出力画像を得ることができ、これは、入力画像上の36個の画素が出力画像における1つの画素に統合することを意味する。最後のダウンサンプリング層の出力は、平坦化層に入力されて平坦化動作(Flatten)を行うことができる。平坦化層は、特徴マップ(二次元画像)をベクトル(一次元)に変換してもよい。当該平坦化操作は、
【数2】
のような方式で行うことができ、
ここで、vは、k個の要素を含むベクトルであり、fは、i行j列を有する行列である。
【0045】
次に、平坦化層の出力(すなわち一次元ベクトル)は、一つの完全接続層(FCN)に入力することができる。完全接続層は、
図3に示す畳み込みニューラルネットワークと類似する構造を有してよいが、異なる点は、完全接続層は、畳み込みカーネルの代わりに異なるスカラー量を使用することである。完全接続層は、抽出された全ての特徴を接続するために用いられる。完全接続層の出力は、一次元ベクトルであってもよい。
【0046】
畳み込みニューラルネットワークにおける畳み込み算出及び完全接続算出などの算出過程は、主に積和演算を含むため、畳み込み層及び完全接続層などの機能層は、メモリスタアレイにより実現することができる。例えば、畳み込み層と完全接続層の重みは、いずれもメモリスタアレイのアレイコンダクタンスで表すことができ、同時に畳み込み層と完全接続層の入力は、対応する電圧励起により表すことができる。それにより前述のキルヒホッフの法則に基づいてそれぞれ畳み込み算出と完全接続算出を実現することができる。
【0047】
図5Aは、メモリスタアレイに基づく畳み込みニューラルネットワークの畳み込み算出の模式図であり、
図5Bは、メモリスタアレイに基づく畳み込みニューラルネットワークの完全接続算出の模式図である。
【0048】
図5Aに示すように、一つのメモリスタアレイを用いて一つの畳み込み層の畳み込み算出を実現することができ、例えば入力画像(
図5Aにおけるデジタル画像「2」に示す)に対して畳み込み処理を行うことができる。例えば、一部の例において、当該畳み込み層は、複数の畳み込みカーネルを含み、当該メモリスタセルアレイの各行は、一つの畳み込みカーネルに対応し、かつ各行の複数のメモリスタは、それぞれ一つの畳み込みカーネルの各要素の値を表すために用いられる。例えば、一つの3×3の畳み込みカーネルに対しては、当該メモリスタアレイの各行は、9つのメモリスタを使用して当該畳み込みカーネルの9つの要素の値を表す。なお、上記メモリスタアレイを用いて畳み込み層を特徴付ける方式は、例示的なものであり、本開示の実施例は、これを含むがこれに限定されるものではない。
【0049】
理解すべきなのは、畳み込み層がその入力画像に対して畳み込み処理を行う場合、入力画像を複数の画像サブブロック(そのサイズが畳み込みカーネルのサイズと同じである)に分割する必要があり、次に畳み込みカーネルを使用して各画像サブブロックに対して畳み込み操作を行う。メモリスタアレイを用いて畳み込み層の畳み込み演算を実現する場合、複数の畳み込みカーネルは、各画像サブブロックを並列して処理することができるが、依然として各画像サブブロックのデータをバッチに分けて(すなわち一つずつの画像サブブロック)で当該メモリスタアレイに直列に入力する必要があり、入力画像全体に対する畳み込み処理を実現する。
【0050】
図5Bに示すように、一つのメモリスタアレイを用いて一つの完全接続層の完全接続算出を実現することができる。例えば、一部の例において、
図5Bに示すように、当該メモリスタアレイの各列は、完全接続層の入力を受信するために用いられ、各行は、完全接続層の出力を提供するために用いられ、各行の複数のメモリスタは、それぞれ当該行の出力に対応する各重みを示すために用いられる。なお、上記メモリスタアレイを用いて完全接続層を特徴付ける方式は、例示的なものであり、本開示の実施例は、これを含むがこれに限定されるものではない。
【0051】
理解すべきなのは、完全接続層の完全接続算出が一回で完了することができることである。畳み込み層の畳み込み算出は、バッチ直列完了を必要とし、かつ全てのバッチを処理した後、畳み込み層の畳み込み算出が完了する必要がある。したがって、畳み込み算出と完全接続接続との間に常に深刻な速度不整合(畳込み算出がかかる時間が、完全接続算出がかかる時間よりはるかに大きい)が存在する。したがって、メモリスタアレイに基づいて畳み込みニューラルネットワークを実現する場合、当該畳み込みニューラルネットワークの性能は、常に最も効率が低いメモリアレイ、例えば畳み込み層に対応するメモリスタアレイに制限される(効率ボトルネックと呼ばれる)。
【0052】
本開示の少なくとも一つの実施例は、メモリスタに基づくニューラルネットワークの並列加速方法を提供する。当該ニューラルネットワークは、順次に設定された複数の機能層を含み、当該複数の機能層は、並列された複数の第1メモリスタアレイを含む第1機能層と、第1機能層の後に位置する第2機能層とを含み、当該複数の第1メモリスタアレイは、前記第1機能層の操作を実行し、操作結果を第2機能層に出力するために用いられる。当該並列加速方法は、複数の第1メモリスタセルアレイを用いて第1機能層の操作を並列して実行し、操作結果を第2機能層に出力するステップを含む。
【0053】
本開示の少なくとも一つの実施例は、上記並列加速方法に対応するプロセッサ及び装置をさらに提供する。
【0054】
本開示の実施例に係るメモリスタに基づくニューラルネットワークの並列加速方法及びプロセッサ、装置は、第1機能層の操作を複数の第1メモリスタアレイにより並列して実行して、メモリスタに基づくニューラルネットワークの動作過程への加速を実現することができる。当該メモリスタに基づくニューラルネットワークのアーキテクチャ構想及び並列加速方法は、様々なディープニューラルネットワークモデル及び異なる種類のメモリスタに広く適用され、ディープニューラルネットワークモデルの速度ミスマッチの問題を解決することに役立つ。
【0055】
以下、図面を参照して本開示のいくつかの実施例及びその例示を詳細に説明する。
【0056】
本開示の少なくとも一つの実施例は、メモリスタに基づくニューラルネットワークの並列加速方法を提供する。
図6は、本開示のいくつかの実施例に係るニューラルネットワークの構造模式ブロック図を示し、
図7Aは、
図6に示すニューラルネットワークの並列加速方法における第1機能層の並列処理方式を示し、
図7Bは、
図6に示すニューラルネットワークの並列加速方法における第1機能層の他の並列処理方式を示す。
【0057】
図6に示すように、当該ニューラルネットワークは、順次に設定された複数の機能層を含む。例えば、
図6に示すように、当該複数の機能層は、第1機能層及び第1機能層の後に位置する第2機能層を含む。例えば、いくつかの実施例において、当該複数の機能層は、第1機能層及び第2機能層以外の他の機能層をさらに含むことができ、本開示は、これを限定しない。
【0058】
例えば、いくつかの実施例において、
図7A及び
図7Bに示すように、第1機能層は、並列された複数の第1メモリスタアレイを含み、第1機能層に対応する複数の第1メモリスタアレイは、第1機能層の操作を並列して実行し、操作結果を第2機能層に出力するために用いられ、ニューラルネットワークの動作過程に対する加速を実現する。例えば、いくつかの実施例において、第1機能層が一つの第1メモリスタアレイのみを含む場合、第1機能層は、当該ニューラルネットワークの動作性能を制限する効率ボトルネックであり、例えば第1機能層は、畳み込み層である。
【0059】
例えば、いくつかの実施例において、当該ニューラルネットワークは、複数の畳み込み層を含む畳み込みニューラルネットワークである。一般的には、ニューラルネットワークの入力画像に対して畳み込み処理を行うための初期畳み込み層(すなわち第1畳み込み層)の演算量が最大であり、かかる時間が最も長く、すなわち初期畳み込み層が一般的にニューラルネットワークの効率ボトルネックであるため、第1機能層は、一般的に当該初期畳み込み層を含むことができる。なお、本開示は、これを含むがこれに限定されない。例えば、他の実施例において、
図6に示すように、ニューラルネットワークの複数の機能層は、第1機能層の前に位置する第3機能層をさらに含んでよく、第3機能層の出力が第1機能層の入力として第1機能層に提供されるため、第1機能層は、ニューラルネットワークの初期畳み込み層以外の他の畳み込み層、例えば中間畳み込み層などであってもよい。
【0060】
理解すべきなのは、ニューラルネットワークは、複数の第1機能層(例えば、畳み込み層)を含むことができ、それにより各第1機能層に対応する複数の第1メモリスタアレイにより当該第1機能層の操作を並列して実行して、ニューラルネットワークの並列度を向上させることができ、さらにニューラルネットワークの動作過程に対するさらなる加速を実現することができる。例えば、各第1機能層に対応する第1メモリスタアレイの数は、同じであってもよく、異なってもよく、本開示の実施例は、これを限定しない。
【0061】
例えば、上記第2機能層は、畳み込み層、ダウンサンプリング層、平坦化層及び完全接続層などのうちの一つを含むことができる。例えば、上記第3機能層は、畳み込み層及びダウンサンプリング層などのうちの一つを含むことができる。なお、本開示の実施例は、これを限定するものではない。
【0062】
例えば、
図7A及び
図7Bは、いずれも、第1機能層が3つの第1メモリスタアレイを含む場合を例示的に示したが、本開示に対する制限と見なされるべきではない。すなわち、第1機能層に含まれる第1メモリスタアレイの数は、実際のニーズに応じて設定することができ、本開示の実施例は、これを限定しない。
【0063】
例えば、
図7A及び
図7Bに示すように、上記メモリスタに基づくニューラルネットワークの並列加速方法は、複数の第1メモリスタアレイを用いて第1機能層の操作を並列して実行し、操作結果を第2機能層(
図7A及び
図7Bに示されず)に出力するステップを含む。
【0064】
例えば、いくつかの実施例において、
図7Aに示すように、まず、第1機能層により受信された入力データ(
図7Aにおけるデジタル画像「2」に示す)を複数の第1メモリスタアレイに逐一対応する複数のサブ入力データ(
図7Aにおけるデジタル画像「2」から分割された三つの部分に示す)に分割することができる。次に、当該複数の第1メモリスタアレイを用いて当該複数のサブ入力データに対して第1機能層の操作を並列して実行して、複数のサブ操作結果を対応して生成する。次に、さらに当該複数のサブ操作結果を接合して第2機能層を用いて接合結果に対して第2機能層の操作を実行することができる。
【0065】
例えば、一部の例において、
図7Aに示すように、第1機能層は、畳み込み層であり、第1機能層に含まれる各第1メモリスタアレイは、いずれも
図5Aに示すような方式で第1機能層の畳み込み操作を実現することができる。
【0066】
例えば、一部の例において、入力画像(すなわち入力データ)を分割して得られた複数のサブ入力画像(すなわちサブ入力データ)において、隣接するサブ入力画像の間は、一般的に互いにオーバーラップしてよく、当然ながらオーバーラップしなくてよく、本開示の実施例は、これを限定しない。例えば、一部の例において、当該複数のサブ入力データのサイズは、基本的に同じであり、それにより、各サブ入力データは、対応する第1メモリスタアレイにより畳み込み処理を行うことにかかる時間が基本的に同じであり、さらに全体的には、第1機能層の処理速度を加速し、すなわちニューラルネットワークの処理速度を加速することができる。
【0067】
例えば、一部の例において、当該複数のサブ入力データは、任意の順序でそれぞれ当該複数の第1メモリスタアレイに提供することができ、この場合に、各第1メモリスタアレイは、いずれかのサブ入力データを処理することができる。例えば、他の一部の例において、当該複数のサブ入力データは、所定の順序でそれぞれ当該複数の第1メモリスタアレイに逐一対応して提供されるべきであり、この場合に、各第1記憶アレイは、それに対応するサブ入力データを処理することができる。
【0068】
例えば、一つの第1メモリセルアレイを用いて入力画像を処理する場合(
図5Aを参照する)、第1機能層の操作がかかる時間をtと記す。例えば三つの第1メモリスタアレイを用いて入力画像を分割して得られた三枚のサブ入力画像を並列処理する場合(
図7Aを参照する)、第1機能層の操作がかかる時間は、t/3までに減少する。これにより、
図7Aに示す並列加速方法は、ニューラルネットワークが単一の入力データを処理する動作過程の加速を実現することができる。
【0069】
例えば、一部の例において、第2機能層は、畳み込み層、ダウンサンプリング層、平坦化層及び完全接続層のうちの一つであってもよく、本開示の実施例は、これを限定しない。
【0070】
例えば、他の実施例において、
図7Bに示すように、まず、第1機能層により受信された複数の入力データ(
図7Bにおけるデジタル画像「2」、「1」、「4」に示す)をそれぞれ複数の第1メモリスタアレイに提供することができる。次に、当該複数の第1メモリスタアレイの少なくとも一部を用いて、受信された複数の入力データに対して第1機能層の操作を並列して実行して、複数のサブ操作結果を対応して生成する。次に、さらに第2機能層を用いてそれぞれ当該複数のサブ操作結果に対して第2機能層の操作を実行することができる。
【0071】
例えば、一部の例において、
図7Bに示すように、第1機能層は、畳み込み層であり、第1機能層に含まれる各第1メモリスタアレイは、いずれも
図5Aに示すような方式で第1機能層の畳み込み操作を実現することができる。例えば、当該複数の入力データは、任意の順序で当該複数の第1メモリスタアレイに割り当てられてもよく、この場合に、各第1メモリスタアレイは、いずれかの入力データを処理することができる。例えば、当該複数の入力データは、互いに異異なってよく、当然のことながら一部又は全部が同じであってもよく、本開示の実施例は、これを限定しない。
【0072】
例えば、一つの第1メモリスタアレイを用いて入力画像を処理する場合(
図5Aを参照する)、第1機能層の操作がかかる時間をt1と記し、後続の機能層の操作がかかる時間をt2と記し、t1>t2であれば、ニューラルネットワークを使用して三枚の入力画像を処理するために使用される時間は、少なくとも約3×t1+t2である(例えば、第1機能層が現在の一枚の入力画像のデータを処理する時、後続の機能層は、前の入力画像の関連データを処理することができる)。これに比べて、例えば三つの第1メモリスタアレイを用いて三枚の入力画像を並列処理する場合(
図7Bを参照する)、ニューラルネットワークを使用して三枚の入力画像を処理するために使用される時間は、約t1+3×t2である。それにより、節約した時間は、2×(t1-t2)である。すなわち、
図7Bに示す並列加速方法は、ニューラルネットワークが複数の入力データを処理する動作過程への加速を実現することができる。
【0073】
理解すべきなのは、
図7Aに示す並列加速方法及び
図7Bに示す並列加速方法は、同一のニューラルネットワーク(例えば、同一のニューラルネットワークの異なる第1機能層)に総合的に適用することができ、本開示の実施例は、これを限定しない。
【0074】
本開示の実施例に係るニューラルネットワークは、上記並列加速方法を採用してそれを動作させることができ、その動作過程において、第1機能層の操作を複数の第1メモリスタアレイにより並列的に実行して、ニューラルネットワークの動作過程に対する加速を実現することができる。当該ニューラルネットワークのアーキテクチャ構想及びその並列加速方法は、様々なディープニューラルネットワークモデル及び異なる種類のメモリスタに広く適用され、ディープニューラルネットワークモデルの速度ミスマッチの問題を解決することに役立つ。
【0075】
本開示の少なくとも一つの実施例は、メモリスタに基づくニューラルネットワークのオフチップトレーニング方法をさらに提供する。例えば、当該トレーニング方法は、前述の実施例に係るニューラルネットワークのパラメータを得るために用いられる。例えば、
図6、
図7A及び
図7Bに示すように、当該ニューラルネットワークは、順次に設定された複数の機能層を含み、当該複数の機能層は、第1機能層及び第1機能層の後に位置する第2機能層を含み、第1機能層は、並列された複数の第1メモリスタアレイを含み、当該複数の第1メモリスタアレイは、第1機能層の操作を実行し、操作結果を第2機能層に出力するために用いられる。
【0076】
理解すべきなのは、ニューラルネットワークのトレーニング方法は、一般的には、ニューラルネットワークを使用してトレーニング入力データを処理することにより、トレーニング出力データを得ることと、トレーニング出力データに基づいて、損失関数によりニューラルネットワークの損失値を算出することと、損失値に基づいてニューラルネットワークのパラメータを補正することと、ニューラルネットワークのトレーニングが所定の条件を満たすか否かを判断し、所定の条件を満たさない場合、上記トレーニング過程を繰り返し実行し、所定の条件を満たす場合、上記トレーニング過程を停止し、トレーニングされたニューラルネットワークを得ることと、を含む。当然のことながら、ニューラルネットワークをトレーニングする場合、一般的には、ニューラルネットワークのパラメータを初期化する必要がある。例えば、一般的にニューラルネットワークのパラメータを乱数に初期化することができ、例えば乱数がガウス分布に合致し、本開示の実施例は、これを限定しない。理解すべきなのは、本開示の実施例に係るニューラルネットワークのトレーニング方法も上記一般的なトレーニングステップ及び過程を参照することができることである。
【0077】
オフチップトレーニングにより各重みパラメータを取得した後、メモリスタアレイにおける各デバイスのコンダクタンスに対してセット及びリセット操作によりプログラミングを行い、対応する重みを実現する。具体的なプログラミング方法及びメモリスタ重みの組織方式は、限定されない。
【0078】
図8は、本開示のいくつかの実施例に係るニューラルネットワークのオフチップトレーニング方法のフローチャートである。例えば、
図8に示すように、当該オフチップトレーニング方法は、以下のステップS10~ステップS30を含むことができる。
【0079】
ステップS10、ニューラルネットワークの数学的モデルを構築する。
【0080】
例えば、一部の例において、ソフトウェア(例えば、プログラムコード等)を使用して本開示の実施例に係る数学的モデルを構築することができる。
【0081】
ステップS20、数学的モデルをトレーニングすることにより、トレーニングされた数学的モデルを得る。
【0082】
例えば、一部の例において、プロセッサ及びメモリスタなどに基づいて上記数学的モデルを実行しトレーニングすることができる。例えば、数学的モデルのトレーニングステップ及び過程は、一般的なトレーニングステップ及び過程を参照することができ、ここで繰り返して説明しない。
【0083】
ステップS30、トレーニングされた数学的モデルの重みパラメータをニューラルネットワークに対応するメモリスタアレイに書き込む。
【0084】
例えば、一部の例において、数学的モデルにおける第1機能層は、第1重みパラメータを含む。数学的モデルのトレーニング過程において、順方向に伝播する時、当該第1重みパラメータにより第1機能層のトレーニング入力データを処理する。逆方向に伝播する場合、当該第1重みパラメータを修正してトレーニングされた第1機能層の第1重みパラメータを取得する。この場合、トレーニングされた数学的モデルの重みパラメータをニューラルネットワークに対応するメモリスタアレイに書き込むステップ、すなわちステップS30は、トレーニングされた数学的モデルにおける第1機能層の当該第1重みパラメータを複数の第1メモリスタアレイにそれぞれ書き込むことを含む。このとき、第1機能層に対応する各第1メモリスタアレイは、同じコンダクタンス重み行列を含む。
【0085】
例えば、他の一部の例において、数学的モデルにおける第1機能層は、複数の第1重みパラメータを含む。数学的モデルのトレーニング過程において、順方向に伝播する場合、数学的モデルにおける第1機能層が受信したトレーニング入力データを当該複数の第1重みパラメータに逐一対応する複数のトレーニングサブ入力データに分割し、当該複数の第1重みパラメータを使用して当該複数のトレーニングサブ入力データに対して第1機能層の操作を並列して実行して、複数のトレーニングサブ操作結果を生成し、各第1重みパラメータに対応するトレーニングサブ操作結果及び当該トレーニングサブ操作結果に対応するトレーニング中間データに基づいて、当該第1重みパラメータのパラメータ値を更新する。オフチップトレーニングの具体的な方式の異なりに基づいて、各アレイに同じ重みパラメータを書き込んでよく、異なる重みパラメータを書き込んでよい。
【0086】
この場合、トレーニングされた数学的モデルの重みパラメータをニューラルネットワークに対応するメモリスタアレイに書き込むステップ、すなわちステップS30は、トレーニングされた数学的モデルにおける第1機能層の複数の第1重みパラメータをそれぞれ複数の第1メモリスタアレイに逐一対応して書き込むことを含む。この時、得られたニューラルネットワークは、
図7Aに示す並列加速方法を実行することに用いることができる。
【0087】
例えば、さらに一部の例において、数学的モデルにおける第1機能層は、複数の第1重みパラメータを含む。数学的モデルのトレーニング過程において、順方向に伝播する場合、数学的モデルにおける第1機能層が受信した複数のトレーニング入力データをそれぞれ当該複数の第1重みパラメータに提供し、当該複数の第1重みパラメータを使用して当該複数のトレーニング入力データの少なくとも一部に対して第1機能層の操作を並列して実行して、複数のトレーニングサブ操作結果を生成し、各第1重みパラメータに対応するトレーニングサブ操作結果及び当該トレーニングサブ操作結果に対応するトレーニング中間データに基づいて、当該第1重みパラメータのパラメータ値を更新する。
【0088】
この場合、トレーニングされた数学的モデルの重みパラメータをニューラルネットワークに対応するメモリスタアレイに書き込むステップ、すなわちステップS30は、トレーニングされた数学的モデルにおける第1機能層の複数の第1重みパラメータをそれぞれ複数の第1メモリスタアレイに逐一対応して書き込むことを含む。この時、取得されたニューラルネットワークは、
図7Bに示された並列加速方法を実行するために用いられてもよく、
図7Aに示された並列加速方法を実行するために用いられてもよい。
【0089】
したがって、本開示の他のいくつかの実施例に係るメモリスタに基づくニューラルネットワークの並列加速方法において、ニューラルネットワークの重みパラメータは、上記オフチップトレーニング方法により得られ、ニューラルネットワークの重みパラメータは、第1機能層の重みパラメータを含み、第1機能層の重みパラメータが複数の第1メモリスタアレイに書き込まれることで、複数の第1メモリスタアレイのコンダクタンスが決定される。また、理解すべきなのは、上記オフチップトレーニング方法により得られたニューラルネットワークの重みパラメータは、前記第1機能層以外の他の機能層の重みパラメータをさらに含み、前記他の機能層の重みパラメータが他の機能層に対応するメモリスタアレイに書き込まれることで、他の機能層に対応するメモリスタアレイのコンダクタンスが決定される。
【0090】
本開示の少なくとも一つの実施例は、メモリスタに基づくニューラルネットワークの並列加速プロセッサをさらに提供し、当該並列加速プロセッサは、前述の並列加速方法を実行するために用いられる。
図9は、本開示のいくつかの実施例に係るメモリスタに基づくニューラルネットワークの並列加速プロセッサの模式図である。
【0091】
例えば、
図6に示すように、当該ニューラルネットワークは、順次に設定された複数の機能層を含み、当該複数の機能層は、第1機能層を含む。例えば、
図9に示すように、当該並列加速プロセッサは、複数の算出コアを含み、各メモリスタの算出コアの間は、互いに通信することができる。同時に、各算出コアの内部は、さらに複数のメモリスタアレイ算出ユニットを含む。
【0092】
例えば、いくつかの実施例において、複数のメモリスタアレイ算出ユニットは、複数の第1メモリスタアレイ算出ユニットを含み、第1機能層の重みパラメータは、複数の第1メモリスタアレイ算出ユニットに書き込まれ、複数の第1メモリスタアレイ算出ユニットは、前記第1機能層の操作に対応する演算を並列して実行するように構成される。すなわち、ニューラルネットワークにおけるある機能層の重みを異なる算出コア又はメモリスタアレイ算出ユニットにプログラミングして書き込むことにより、複数のメモリスタアレイの当該機能層に対する操作に対する並列加速算出を実現することができる。例えば、複数の第1メモリスタアレイは、前述のいずれか一つの実施例に係る並列加速方法を採用して第1機能層の操作の並列加速算出を実現することができる。
【0093】
図10は、
図9に示す並列加速プロセッサにおけるメモリスタアレイ算出ユニットの構造模式図である。以下、
図9に示すメモリスタアレイ算出ユニットの構造を参照しながらメモリスタアレイ算出ユニットの動作原理を詳細に説明する。
【0094】
例えば、
図10に示すように、メモリスタアレイ算出ユニットは、メモリスタアレイ及び周辺回路を含む。
【0095】
例えば、一部の例において、
図10に示すように、メモリスタアレイは、128×128個のメモリスタを含み、本開示の実施例は、これを含むがこれに限定されない。例えば、一部の例において、
図10に示すように、周辺回路は、スイッチアレイ、マルチプレクサ、サンプルホールドモジュール(S&Hモジュール)、アナログデジタル変換モジュール(ADC)及びシフト&アキュムレータ(Sh&A)等を含む。
【0096】
例えば、一部の例において、
図10に示すように、メモリスタアレイ算出ユニットの入力は、複数の8ビット(8-bit)の入力データを含む。例えば、各入力データの各ビットは、一つの制御パルスに対応し、各制御パルスは、各ビットの値に応じて符号化を行い、具体的な符号化方式は、以下のとおりである。
【数3】
ここで、s=0、…、B-1であり、Bは、入力データのビット数(例えば、
図10に示すように、B=8)を表し、V
kは、第k行の入力データに対応する電圧励起を表し、V
Rは、一定の基準電圧(例えば、
図10に示された読み出し電圧)を表し、a
k,sは、[s]番目の制御パルスのレベルを表す。例えば、一部の例において、a
k,sは、8ビットの入力データa
kのバイナリコード(a
k,7、a
k,6、…、a
k,0)のうちの一つに対応することができる。a
k,s=1の場合、[s]番目の制御パルスがハイレベルであることを表し、それによりスイッチアレイにおける対応するスイッチをオンにすることができ、読み出し電圧V
Rをメモリスタアレイの第k行に提供する。a
k,s=0の場合、[s]番目の制御パルスがローレベルであることを表し、それによりスイッチアレイにおける対応するスイッチをオフにすることができ、同時に、スイッチアレイにおける他のスイッチをオンにし、接地レベルをメモリセルアレイのk行目に提供し、すなわちこの時にメモリアレイの第k行に信号を提供しない。
【0097】
理解すべきなのは、
図10に示すように、一方では、複数の入力データは、メモリスタアレイに並列して入力される。他方では、各入力データは、複数(例えば、8個)の制御パルスに対応して特徴付けられ、当該複数の制御パルスは、直列にメモリスタセルアレイに入力される。当然のことながら、異なる入力データに対応する同一順序の制御パルスは、並列にメモリスタセルアレイに入力される。
【0098】
キルヒホッフの法則に基づいて、メモリスタアレイの出力電流は、
【数4】
により得ることができ、
ここで、k=1、…、mであり、j=1、…、nであり、mは、メモリスタアレイの行数を示し、nは、メモリスタアレイの列数を示し、i
jは、全ての入力データに対応するメモリスタアレイの第j列の出力電流を示し、i
j,sは、全ての[s]番目の制御パルスに対応するメモリスタアレイの第j列のパルス出力電流を示し、g
k,jは、メモリスタアレイのコンダクタンス行列を示す。
【0099】
当該式から分かるように、全ての入力データに対応する全ての[s]番目の制御パルスがスイッチアレイに印加される場合、読出電圧V
Rは、高レベルの制御パルスの調整で並列にメモリスタアレイに印加することができ、それにより、メモリスタアレイは複数のパルス出力電流i
j,sを対応して出力し、ここで、i
j,sは以下の式(5)である。
【数5】
【0100】
なお、
図10に示す実施例において、上記式に基づいて各制御パルスに対応するパルス出力電流に重み付け(パルス出力電流i
j,sに対応する重み値が2sである)を加算して第j列の出力電流i
jを得るものではない。例えば、
図10に示すように、各パルス出力電流は、サンプルホールド(S&H)モジュールにより保持可能な電圧信号に変換され、次にアナログデジタル変換モジュールによりデジタル情報(例えば、バイナリデジタル情報)に量子化され、最後にシフト&アキュムレータにより各パルス出力電流に対応するバイナリデジタル情報をシフト積算する。例えば、パルス出力電流i
j,1に対応するバイナリデジタル情報は、パルス出力電流i
j,0に対応するバイナリデジタル情報に対して一つのビット(すなわち前者の最下位ビットが後者の最後から2番目の下位ビットに対応する)だけ前に移動し、パルス出力電流i
j,2に対応するバイナリデジタル情報は、パルス出力電流i
j,1に対応するバイナリデジタル情報に対して一つのビットだけ前に移動し、これによって類推する。
【0101】
例えば、いくつかの実施例において、
図10に示すように、メモリスタアレイの各列の出力は、二組のサンプルホールドモジュールにより交互に変換し、それによりハードウェア動作時の並列性を増加させることができる。同時に、プロセッサチップの消費電力及び面積を節約するために、アナログデジタル変換(ADC)モジュールは、時分割多重化方式で動作することができ、例えば4列の出力は、一つのアナログデジタル変換モジュールを共有する。メモリスタアレイ算出ユニットが動作する時、現在の時刻に[s]番目のビット(すなわち[s]番目の制御パルス)を算出ユニットの入力信号とし、信号を切り替えてスイッチアレイを制御することにより第1組のサンプルホールドモジュールをゲーティングし、列上のパルス出力電流を同時に対応する電圧に変換して出力する。同時に、アナログデジタル変換モジュールは、マルチプレクサにより補助されて、前の時刻(すなわち[s-1]番目の制御パルスに対応する時刻)のパルス出力電流を高速に量子化する。続いて、次の時刻に、[s+1]番目のビット(すなわち[s+1]番目の制御パルス)を算出ユニットの入力信号とし、信号を切り替えてスイッチアレイを制御することにより第2組のサンプルホールドモジュールをストローブし、同時にアナログデジタル変換モジュールは、前の第1組のサンプルホールドモジュールが保持した電圧値を量子化する。例えば、メモリスタアレイ算出ユニットの動作過程において、全てのスイッチ切り替え操作は、いずれもマルチプレクサを制御することにより実現することができる。
【0102】
なお、
図9に示す並列加速プロセッサと
図10に示すメモリスタアレイ算出ユニットは、いずれも例示的なものであり、本開示の実施例は、その具体的な実現形態及び細部をいずれも限定しない。
【0103】
本開示の実施例に係る並列加速プロセッサの技術的効果は、前述の実施例における並列加速方法に対応する説明を参照することができ、ここで説明を省略する。
【0104】
本開示の少なくとも一つの実施例は、メモリスタに基づくニューラルネットワークの並列加速装置をさらに提供する。
図11は、本開示のいくつかの実施例に係るメモリスタに基づくニューラルネットワークの並列加速装置の概略ブロック図である。例えば、
図11に示すように、当該並列加速装置は、上記実施例に係る並列加速プロセッサと、当該並列加速プロセッサに接続された入力インタフェース及び出力インタフェースとを含む。例えば、当該並列加速装置は、その中の並列加速プロセッサにより前述の並列加速方法を実行することができる。
【0105】
例えば、一部の例において、
図11に示すように、当該並列加速装置は、システムバスをさらに含み、並列加速プロセッサと入力インタフェース及び出力インタフェースとの間は、システムバスにより互いに通信することができる。例えば、入力インタフェースは、外部コンピュータ装置、ユーザ等から命令を受信して前記並列加速プロセッサの作動等を制御するように構成される。例えば、並列加速装置は、前記並列加速プロセッサの作動結果等を出力するように構成される。例えば、入力インタフェース及び出力インタフェースを介して並列加速装置と通信する外部装置は、いかなるタイプの、ユーザがそれと対話可能なユーザインタフェースを提供する環境に含まれてもよい。ユーザインタフェースの種類としては、例えば、グラフィカルユーザインタフェース、自然ユーザインタフェースなどが挙げられる。例えば、グラフィカルユーザインタフェースは、ユーザがキーボード、マウス、リモコンなどのような入力装置を採用する入力を受信し、かつディスプレイなどの出力装置に出力を提供することができる。また、自然ユーザインタフェースは、ユーザがキーボード、マウス、リモコンなどのような入力装置に強く制約される必要がない方式で並列加速装置と対話することができる。それに対して、自然ユーザインタフェースは、音声認識、タッチ及び指示ペン識別、スクリーン上及びスクリーン近傍のジェスチャ認識、エアジェスチャ、頭部及び眼追跡、音声及び音、視覚、タッチ、ジェスチャ、及び機器インテリジェント等に依存することができる。
また、並列加速装置は、
図11において単一のシステムとして示されるが、並列加速装置は、分散システムであってもよく、さらにクラウド施設(パブリックネットワーク又は、プライベートクラウドを含む)に配置されてもよい。したがって、例えば、複数の装置は、ネットワーク接続を介して通信することができかつ共同で並列加速装置により実行されると記述されるタスクを実行することができる。
【0106】
例えば、並列加速方法の実行過程は、上記並列加速方法の実施例における関連説明を参照することができ、これを重複して説明しない。
【0107】
なお、本開示の実施例に係る並列加速装置は、例示的なものでありであり、限定されるものではなく、実際の応用ニーズに応じて、当該並列加速装置は、さらに他の一般的な部品又は構造を含むことができ、例えば、並列加速装置の必要な機能を実現するために、当業者は、具体的な応用シーンに基づいて他の一般的な部品又は構造を設定することができ、本開示の実施例は、これを限定しない。
【0108】
本開示の実施例に係る並列加速装置の技術的効果は、前述の実施例における並列加速方法及び並列加速プロセッサに対応する説明を参照することができ、ここで説明を省略する。
【0109】
本開示に対しては、下記の点をさらに説明する必要がある。
(1)本開示の実施例の図面は、本開示の実施例の関する構造のみに関し、他の構造について通常の設計を参照することができる。
【0110】
(2)コンフリクトがない場合、本開示の同一の実施例及び異なる実施例における特徴は、互いに組み合わせることができる。
【0111】
上記は、本開示の具体的な実施形態にすぎないが、本開示の保護範囲はそれに限定されない。当業者によって、本開示に開示された技術的範囲内に容易に想像できるいかなる変更または置換は、本開示の保護範囲内にカバーされるべきである。したがって、本開示の保護範囲は、特許請求の範囲の保護範囲に従うべきである。