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

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

▶ 清華大学の特許一覧

特許7548598メモリスタに基づくニューラルネットワークのトレーニング方法及びそのトレーニング装置
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-02
(45)【発行日】2024-09-10
(54)【発明の名称】メモリスタに基づくニューラルネットワークのトレーニング方法及びそのトレーニング装置
(51)【国際特許分類】
   G06N 3/063 20230101AFI20240903BHJP
   G11C 11/54 20060101ALI20240903BHJP
   G06G 7/60 20060101ALI20240903BHJP
   G11C 13/00 20060101ALI20240903BHJP
【FI】
G06N3/063
G11C11/54
G06G7/60
G11C13/00 200
【請求項の数】 19
(21)【出願番号】P 2022525403
(86)(22)【出願日】2020-03-06
(65)【公表番号】
(43)【公表日】2023-01-18
(86)【国際出願番号】 CN2020078203
(87)【国際公開番号】W WO2021082325
(87)【国際公開日】2021-05-06
【審査請求日】2022-04-28
(31)【優先権主張番号】201911059194.1
(32)【優先日】2019-11-01
(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)【発明者】
【氏名】▲張▼ 清天
(72)【発明者】
【氏名】▲銭▼ ▲鶴▼
【審査官】坂東 博司
(56)【参考文献】
【文献】中国特許出願公開第109460817(CN,A)
【文献】中国特許出願公開第109800870(CN,A)
【文献】米国特許出願公開第2019/0318239(US,A1)
【文献】特表2021-518008(JP,A)
【文献】中国特許出願公開第109308692(CN,A)
【文献】特表2018-521400(JP,A)
【文献】特開2019-003547(JP,A)
【文献】特表2019-502970(JP,A)
【文献】Changju Yang et al.,A Neural Network Circuit Developoment via Software-Based Learning and Circuit-Based Fine Tuning,ResearchGate,ドイツ,ResearchGate,2017年05月,216-228,[online],[令和 5年12月28日検索],インターネット <URL:http://www.researchgate.net/publication/318134311_A_Neural_Network_Circuit_Devvelopment_via_Software-Based_Learning_and_Circuit-Based_Fine_Tuning>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/063
G11C 11/54
G06G 7/60
G11C 13/00
(57)【特許請求の範囲】
【請求項1】
メモリスタに基づくニューラルネットワークのトレーニング方法であって、前記ニューラルネットワークは、逐一接続された複数のニューロン層及び前記ニューロン層間の重みパラメータを含み、前記トレーニング方法は、
オフチップトレーニングユニットによって、前記ニューラルネットワークの重みパラメータをトレーニングし、トレーニングされた前記重みパラメータに基づいて、メモリスタアレイをプログラミングして、トレーニングされた前記重みパラメータを前記メモリスタアレイに書き込むステップと、
オンチップトレーニングユニットによって、前記メモリスタアレイの少なくとも一部のメモリスタのコンダクタンス値を調整して、前記ニューラルネットワークの一つの主要層又は複数の重要層の重みパラメータを更新するステップと、を含む、トレーニング方法。
【請求項2】
前記ニューラルネットワークの重みパラメータをトレーニングし、トレーニングされた前記重みパラメータに基づいて、メモリスタアレイをプログラミングして、トレーニングされた前記重みパラメータを前記メモリスタアレイに書き込むステップは、
前記ニューラルネットワークの重みパラメータをトレーニングするプロセスで、前記メモリスタアレイのコンダクタンス状態の制約に従って、前記ニューラルネットワークの量子化された重みパラメータを直接取得して、前記量子化された重みパラメータを前記メモリスタアレイに書き込むステップを含む、請求項1に記載のトレーニング方法。
【請求項3】
前記ニューラルネットワークの重みパラメータをトレーニングし、トレーニングされた前記重みパラメータに基づいて、メモリスタアレイをプログラミングして、トレーニングされた前記重みパラメータを前記メモリスタアレイに書き込むステップは、
前記メモリスタアレイのコンダクタンス状態の制約に基づいて、トレーニングされた前記重みパラメータに対して、量子化操作を行い、量子化された重みパラメータを取得するステップと、
前記量子化された重みパラメータを前記メモリスタアレイに書き込むステップと、を含む、請求項1に記載のトレーニング方法。
【請求項4】
前記量子化操作は、均一量子化及び不均一量子化を含む、請求項3に記載のトレーニング方法。
【請求項5】
前記量子化された重みパラメータを前記メモリスタアレイに書き込むステップは、
前記量子化された重みパラメータに基づいて、前記メモリスタアレイのコンダクタンス状態の目標区間を取得するステップと、
前記メモリスタアレイの各メモリスタのコンダクタンス状態が前記目標区間内にあるか否かを判断し、
前記目標区間内にない場合、前記メモリスタアレイの各メモリスタのコンダクタンス状態が前記目標区間を超えたか否かを判断し、
前記目標区間を超えた場合、リバースパルスを印加し、
前記目標区間を超えていない場合、フォワードパルスを印加し、
前記目標区間内にある場合、前記量子化された重みパラメータを前記メモリスタアレイに書き込むステップと、を含む、請求項2~4のいずれか一項に記載のトレーニング方法。
【請求項6】
前記メモリスタアレイにおける少なくとも一部のメモリスタのコンダクタンス値を調整して、前記ニューラルネットワークの一つの主要層又は複数の重要層の重みパラメータを更新するステップは、
前向き演算操作及び後向き演算操作に基づいて、前記メモリスタアレイをトレーニングするステップと、
前記前向き演算操作及び前記後向き演算操作の結果に基づいて、順方向電圧又は逆方向電圧を、前記メモリスタアレイの少なくとも一部のメモリスタに印加して、前記メモリスタアレイの少なくとも一部のメモリスタのコンダクタンスを更新するステップと、を含む、請求項1~5のいずれか一項に記載のトレーニング方法。
【請求項7】
前記メモリスタアレイの少なくとも一部のメモリスタに対してのみ、前記後向き演算操作を行う、請求項6に記載のトレーニング方法。
【請求項8】
前記メモリスタアレイは、複数行及び複数列のアレイに配置されたメモリスタを含み、前向き演算操作及び後向き演算操作に基づいて、前記メモリスタアレイをトレーニングするステップは、
前記メモリスタアレイの複数行及び複数列のメモリスタに対して、前記前向き演算操作及び前記後向き演算操作を、行ごとに、または列ごとに、または全体として並行して実行するステップを含む、請求項6又は7に記載のトレーニング方法。
【請求項9】
前記メモリスタアレイの少なくとも一部のメモリスタに対応する重みパラメータを、行ごと又は列ごとに更新する、請求項6に記載のトレーニング方法。
【請求項10】
前記前向き演算操作及び前記後向き演算操作では、トレーニングセットデータの一部のみを使用して、前記メモリスタアレイをトレーニングする、請求項6又は7に記載のトレーニング方法。
【請求項11】
前記メモリスタアレイの少なくとも一部のメモリスタのコンダクタンス値を調整して、前記ニューラルネットワークの一つの主要層又は複数の重要層の重みパラメータを更新するステップは、
前記ニューラルネットワークの最後の層又は最後の複数層の重みパラメータを更新するステップを含む、請求項1~10のいずれか一項に記載のトレーニング方法。
【請求項12】
前記メモリスタアレイは、更新された前記重みパラメータに基づいて、前記ニューラルネットワークの出力結果を出力するステップをさらに含む、請求項1~11のいずれか一項に記載のトレーニング方法。
【請求項13】
メモリスタに基づくニューラルネットワークのトレーニング装置であって、
前記ニューラルネットワークの重みパラメータをトレーニングし、トレーニングされた前記重みパラメータに基づいて、メモリスタアレイをプログラミングして、トレーニングされた前記重みパラメータを前記メモリスタアレイに書き込むように構成されるオフチップトレーニングユニットと、
前記メモリスタアレイの少なくとも一部のメモリスタのコンダクタンス値を調整して、前記ニューラルネットワークの一つの主要層又は複数の重要層の重みパラメータを更新するように構成されるオンチップトレーニングユニットと、を含む、トレーニング装置。
【請求項14】
前記オフチップトレーニングユニットは、入力ユニット及び読み書きユニットを含み、前記オンチップトレーニングユニットは、演算ユニット、更新ユニット及び出力ユニットを含み、
前記入力ユニットは、トレーニングされた重みパラメータを入力するように構成され、
前記読み書きユニットは、トレーニングされた前記重みパラメータを前記メモリスタアレイに書き込むように構成され、
前記演算ユニットは、前向き演算操作及び後向き演算操作に基づいて、前記メモリスタアレイをトレーニングするように構成され、
前記更新ユニットは、前記前向き演算操作及び前記後向き演算操作の結果に基づいて、順方向電圧又は逆方向電圧を、前記メモリスタアレイの少なくとも一部のメモリスタに印加して、前記メモリスタアレイの少なくとも一部のメモリスタに対応する重みパラメータを更新するように構成され、
前記出力ユニットは、更新された前記重みパラメータに基づいて、前記ニューラルネットワークの出力結果を算出するように構成される、請求項13に記載のトレーニング装置。
【請求項15】
前記オフチップトレーニングユニットは、量子化ユニットをさらに含み、前記量子化ユニットは、前記ニューラルネットワークの重みパラメータをトレーニングするプロセスで、前記メモリスタアレイのコンダクタンス状態の制約に従って、前記ニューラルネットワークの量子化された重みパラメータを直接取得して、前記量子化された重みパラメータを前記メモリスタアレイに書き込むように構成される、又は、前記メモリスタアレイのコンダクタンス状態の制約に基づいて、前記トレーニングされた重みパラメータに対して、量子化操作を行い、量子化された重みパラメータを取得するように構成される、請求項14に記載のトレーニング装置。
【請求項16】
前記演算ユニットは、前記メモリスタアレイの少なくとも一部のメモリスタに対してのみ、前記後向き演算操作を行うように構成される、請求項14又は15に記載のトレーニング装置。
【請求項17】
前記メモリスタアレイは、複数行及び複数列のアレイに配置されたメモリスタを含み、
前記演算ユニットは、前記メモリスタアレイの複数行及び複数列のメモリスタに対して、前記前向き演算操作及び前記後向き演算操作を、行ごとに、または列ごとに、または全体として並行して実行するように構成される、請求項14~16のいずれか一項に記載のトレーニング装置。
【請求項18】
前記更新ユニットは、前記メモリスタアレイの少なくとも一部のメモリスタに対応する重みパラメータを、行ごと又は列ごとに更新するように構成される、請求項14~17のいずれか一項に記載のトレーニング装置。
【請求項19】
前記オンチップトレーニングユニットは、前記ニューラルネットワークの最後の層又は最後の複数層の重みパラメータを更新するようにさらに構成される、請求項13~18のいずれか一項に記載のトレーニング装置。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2019年11月1日に提出された出願番号が第201911059194.1である中国特許出願の優先権を主張し、ここで、上記中国特許出願に開示されている内容の全体が本願の一部として援用される。
【0002】
本開示の実施例は、メモリスタ(Memristor)に基づくニューラルネットワークのトレーニング方法及びそのトレーニング装置に関する。
【背景技術】
【0003】
ディープニューラルネットワークアルゴリズムの台頭は、インテリジェントな情報技術革命をもたらした。様々なディープニューラルネットワークアルゴリズムに基づいて、画像の認識と分割、物体の検出を実現し、音声とテキストの翻訳、生成などの処理を完了できる。ディープニューラルネットワークアルゴリズムを使用して様々なワークロードを処理することは、データを中心とする算出の一種であり、当該アルゴリズムを実現するハードウェアプラットフォームには、高性能で低電力の処理能力が必要である。ただし、当該アルゴリズムを実現するための従来のハードウェアプラットフォームは、記憶と算出を分離したフォンノイマン型アーキテクチャに基づくものであり、このアーキテクチャでは、算出際に記憶素子と算出素子間でデータを前後に移動する必要がある。したがって、多数のパラメータを含むディープニューラルネットワークの算出において、当該アーキテクチャのエネルギー効率がより低い。したがって、ディープニューラルネットワークアルゴリズムを作動するための新しいタイプのコンピューティングハードウェアを開発することは、解決すべき緊急の問題になっている。
【発明の概要】
【0004】
本開示の少なくとも1つの実施例は、メモリスタに基づくニューラルネットワークのトレーニング方法を提供し、前記ニューラルネットワークは、逐一接続された複数のニューロン層及び前記ニューロン層間の重みパラメータを含み、前記トレーニング方法は、前記ニューラルネットワークの重みパラメータをトレーニングし、トレーニングされた前記重みパラメータに基づいて、メモリスタアレイをプログラミングして、トレーニングされた前記重みパラメータを前記メモリスタアレイに書き込むステップと、前記メモリスタアレイのコンダクタンス値の少なくとも一部を調整して、前記ニューラルネットワークの少なくとも1層の重みパラメータを更新するステップと、を含む。
【0005】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング方法において、前記ニューラルネットワークの重みパラメータをトレーニングし、トレーニングされた前記重みパラメータに基づいて、メモリスタアレイをプログラミングして、トレーニングされた前記重みパラメータを前記メモリスタアレイに書き込むステップは、前記ニューラルネットワークの重みパラメータをトレーニングするプロセスで、前記メモリスタアレイのコンダクタンス状態の制約に従って、前記ニューラルネットワークの量子化された重みパラメータを直接取得して、前記量子化された重みパラメータを前記メモリスタアレイに書き込むステップを含む。
【0006】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング方法において、前記ニューラルネットワークの重みパラメータをトレーニングし、トレーニングされた前記重みパラメータに基づいて、メモリスタアレイをプログラミングして、トレーニングされた前記重みパラメータを前記メモリスタアレイに書き込むステップは、前記メモリスタアレイのコンダクタンス状態の制約に基づいて、トレーニングされた前記重みパラメータに対して、量子化操作を行い、量子化された重みパラメータを取得するステップと、前記量子化された重みパラメータを前記メモリスタアレイに書き込むステップと、を含む。
【0007】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング方法において、前記量子化操作は、均一量子化及び不均一量子化を含む。
【0008】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング方法において、前記量子化された重みパラメータを前記メモリスタアレイに書き込むステップは、前記量子化された重みパラメータに基づいて、前記メモリスタアレイのコンダクタンス状態の目標区間を取得するステップと、前記メモリスタアレイの各メモリスタのコンダクタンス状態が前記目標区間内にあるか否かを判断し、前記目標区間内にない場合、前記メモリスタアレイの各メモリスタのコンダクタンス状態が前記目標区間を超えたか否かを判断し、前記目標区間を超えた場合、リバースパルス(reverse pulse、逆パルス)を印加し、前記目標区間を超えていない場合、フォワードパルス(forward pulse、順パルス)を印加し、前記目標区間内にある場合、前記量子化された重みパラメータを前記メモリスタアレイに書き込むステップと、を含む。
【0009】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング方法において、前記メモリスタアレイにおける一部のメモリスタのコンダクタンス値を調整して、前記ニューラルネットワークの少なくとも1層の重みパラメータを更新するステップは、前向き演算操作及び後向き演算操作に基づいて、前記メモリスタアレイをトレーニングするステップと、前記前向き演算操作及び前記後向き演算操作の結果に基づいて、順方向電圧又は逆方向電圧を、前記メモリスタアレイの一部のメモリスタに印加して、前記メモリスタアレイの一部のメモリスタのコンダクタンスを更新するステップと、を含む。
【0010】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング方法において、前記メモリスタアレイのメモリスタの少なくとも一部に対してのみ、前記後向き演算操作を行う。
【0011】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング方法において、前記メモリスタアレイは、複数行及び複数列のアレイに配置されたメモリスタを含み、前向き演算操作及び後向き演算操作に基づいて、前記メモリスタアレイをトレーニングするステップは、前記メモリスタアレイの複数行及び複数列のメモリスタに対して、前記前向き演算操作及び前記後向き演算操作を、行ごとに、または列ごとに、または全体として並行して実行する。
【0012】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング方法において、前記メモリスタアレイの少なくとも一部のメモリスタに対応する重みパラメータを行ごと又は列ごとに更新する。
【0013】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング方法において、前記前向き演算操作及び前記後向き演算操作では、トレーニングセットデータの一部のみを使用して、前記メモリスタアレイをトレーニングする。
【0014】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング方法において、前記メモリスタアレイのコンダクタンス値の少なくとも一部を調整して、前記ニューラルネットワークの少なくとも1層の重みパラメータを更新するステップは、前記ニューラルネットワークの最後の層又は最後の複数層の重みパラメータを更新するステップを含む。
【0015】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング方法は、更新された前記重みパラメータに基づいて、前記メモリスタアレイが前記ニューラルネットワークの出力結果を出力するステップをさらに含む。
【0016】
本開示の少なくとも1つの実施例は、メモリスタに基づくニューラルネットワークのトレーニング装置をさらに提供する。それは、前記ニューラルネットワークの重みパラメータをトレーニングし、トレーニングされた前記重みパラメータに基づいて、メモリスタアレイをプログラミングして、トレーニングされた前記重みパラメータを前記メモリスタアレイに書き込むように構成されるオフチップトレーニングユニットと、前記メモリスタアレイのコンダクタンス値の少なくとも一部を調整して、前記ニューラルネットワークの少なくとも1層の重みパラメータを更新するように構成されるオンチップトレーニングユニットと、を含む。
【0017】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング装置において、前記オフチップトレーニングユニットは、入力ユニット及び読み書きユニットを含み、前記オンチップトレーニングユニットは、演算ユニット、更新ユニット及び出力ユニットを含み、前記入力ユニットは、トレーニングされた重みパラメータを入力するように構成され、前記読み書きユニットは、トレーニングされた前記重みパラメータを前記メモリスタアレイに書き込むように構成され、前記演算ユニットは、前向き演算操作及び後向き演算操作に基づいて、前記メモリスタアレイをトレーニングするように構成され、前記更新ユニットは、前記前向き演算操作及び前記後向き演算操作の結果に基づいて、順方向電圧又は逆方向電圧を前記メモリスタアレイの少なくとも一部に印加して、前記メモリスタアレイの少なくとも一部に対応する重みパラメータを更新するように構成され、前記出力ユニットは、更新された前記重みパラメータに基づいて、前記ニューラルネットワークの出力結果を算出するように構成される。
【0018】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング装置において、前記オフチップトレーニングユニットは、量子化ユニットをさらに含む。前記量子化ユニットは、前記ニューラルネットワークの重みパラメータをトレーニングするプロセスで、前記メモリスタアレイのコンダクタンス状態の制約に従って、前記ニューラルネットワークの量子化された重みパラメータを直接取得して、前記量子化された重みパラメータを前記メモリスタアレイに書き込むように構成される、又は、前記メモリスタアレイのコンダクタンス状態の制約に基づいて、前記トレーニングされた重みパラメータに対して、量子化操作を行い、量子化された重みパラメータを取得するように構成される。
【0019】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング装置において、前記演算ユニットは、前記メモリスタアレイのメモリスタの少なくとも一部に対してのみ、前記後向き演算操作を行うように構成される。
【0020】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング装置において、前記メモリスタアレイは、複数行及び複数列のアレイに配置されたメモリスタを含み、前記演算ユニットは、前記メモリスタアレイの複数行及び複数列のメモリスタに対して、前記前向き演算操作及び前記後向き演算操作を、行ごとに、または列ごとに、または全体として並行して実行するように構成される。
【0021】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング装置において、前記更新ユニットは、前記メモリスタアレイの少なくとも一部のメモリスタに対応する重みパラメータを、行ごと又は列ごとに更新するように構成される。
【0022】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング装置において、前記オンチップトレーニングユニットは、前記ニューラルネットワークの最後の層又は最後の複数層の重みパラメータを更新するようにさらに構成される。
【0023】
本開示の実施例による技術的解決手段をより明確に説明するために、実施例の添付の図面を以下に簡単に紹介する。明らかに、以下の説明の図面は、本開示のいくつかの実施例にのみ関連し、本開示を限定するものではない。
【図面の簡単な説明】
【0024】
図1図1は、ニューラルネットワークの概略構造図である。
図2図2は、メモリスタアレイの概略構造図である。
図3図3は、本開示の少なくとも1つの実施例によって提供されるトレーニング方法のフローチャートである。
図4図4は、図3に記載のトレーニング方法の概略図である。
図5図5は、本開示の少なくとも1つの実施例によって提供されるトレーニング方法の一例のフローチャートである。
図6図6は、本開示の少なくとも1つの実施例によって提供される、32個のコンダクタンス状態におけるメモリスタの累積確率の概略図である。
図7図7は、本開示の少なくとも1つの実施例によって提供されるトレーニング方法の別の例のフローチャートである。
図8図8は、本開示の少なくとも1つの実施例によって提供される重みパラメータ分布の概略図である
図9図9は、本開示の少なくとも1つの実施例によって提供される、重みパラメータをメモリスタアレイに書き込むフローチャートである。
図10図10は、本開示の少なくとも1つの実施例によって提供されるトレーニング方法のさらに別の例のフローチャートである。
図11A図11Aは、本開示の少なくとも1つの実施例によって提供される前向き演算操作の概略図である。
図11B図11Bは、本開示の少なくとも1つの実施例によって提供される後向き演算操作の概略図である。
図11C図11Cは、本開示の少なくとも1つの実施例によって提供される更新操作の概略図である。
図12A図12Aは、本開示の少なくとも1つの実施例によって提供される前向き演算操作の例示的な方法の概略図である。
図12B図12Bは、本開示の少なくとも1つの実施例によって提供される前向き演算操作の例示的な方法の概略図である。
図12C図12Cは、本開示の少なくとも1つの実施例によって提供される前向き演算操作の例示的な方法の概略図である。
図12D図12Dは、本開示の少なくとも1つの実施例によって提供される前向き演算操作の例示的な方法の概略図である。
図13A図13Aは、本開示の少なくとも1つの実施例によって提供される後向き演算操作の例示的な方法の概略図である。
図13B図13Bは、本開示の少なくとも1つの実施例によって提供される後向き演算操作の例示的な方法の概略図である。
図13C図13Cは、本開示の少なくとも1つの実施例によって提供される後向き演算操作の例示的な方法の概略図である。
図13D図13Dは、本開示の少なくとも1つの実施例によって提供される後向き演算操作の例示的な方法の概略図である。
図14A図14Aは、本開示の少なくとも1つの実施例によって提供される更新操作の例示的な方法の概略図である。
図14B図14Bは、本開示の少なくとも1つの実施例によって提供される更新操作の例示的な方法の概略図である。
図14C図14Cは、本開示の少なくとも1つの実施例によって提供される更新操作の例示的な方法の概略図である。
図14D図14Dは、本開示の少なくとも1つの実施例によって提供される更新操作の例示的な方法の概略図である。
図15図15は、本開示の少なくとも1つの実施例によって提供されるニューラルネットワークのトレーニング装置の概略ブロック図である。
図16図16は、本開示の少なくとも1つの実施例によって提供されるトレーニング装置の一例の概略ブロック図である。
図17図17は、本開示の少なくとも1つの実施例によって提供されるトレーニング装置の別の例の概略ブロック図である。
【発明を実施するための形態】
【0025】
本開示の実施例の目的、技術的解決手段、及びメリットをさらに明確に説明するために、以下において本開示の実施例の図面を参照して、本開示の実施例の技術的解決手段を明確に、完全に説明する。記載した実施例は本発明の一部の実施例であり、全ての実施例でないことは言うまでもない。上記に記載の本発明の実施例に基づいて、当業者が創造的な労働を必要としない前提において得るその他の実施例は、いずれも本開示の保護範囲に属するものとなる。
【0026】
別段の定義がない限り、本開示で使用される技術用語又は科学用語は、本開示が属する分野の当業者によって理解される通常の意味を有するものとする。本開示で使用される「第1」、「第2」及び類似の単語は、順序、量、又は重要性を示すものではなく、異なる構成要素を区別するためにのみ使用される。同様に、「1つ」、「一」、「当該」などの類似の単語は、数量制限を意味するのではなく、少なくとも1つあることを意味する。「含む」又は「含有する」などの類似の単語は、当該単語の前に表示される要素又は物が、当該単語の後に挙げられる要素又は物及びそれらの同等物をカバーするが、他の要素又は物を除外しないことを意味する。「接続」又は「連結」などの類似の単語は、物理的接続又は機械的接続に限定されず、直接又は間接を問わず、電気的接続を含んでもよい。「上」、「下」、「左」、「右」などは、相対的な位置関係を示すためにのみ使用され、記載された対象の絶対位置が変化すると、それに応じて当該相対的な位置関係も変化する可能性がある。
【0027】
メモリスタタイプのデバイス(抵抗変化型メモリ、相変化メモリ、導電性ブリッジメモリなど)は、外部励起を印加することにより、そのコンダクタンス状態を調整できる不揮発性デバイスである。キルヒホッフの法則(Kirchhoff’s law)とオームの法則によれば、このようなデバイスで構成されるアレイは、積和演算(Multiply Accumulate)を並行して完成でき、記憶と算出の両方もアレイの各素子で発生する。このコンピューティングアーキテクチャに基づいて、大量のデータ移動を必要としないインメモリコンピューティング(In-memory computing)を実現できる。同時に、積和演算は、ニューラルネットワークを作動するために必要なコアコンピューティングタスクである。したがって、アレイ内のメモリスタタイプのデバイスのコンダクタンスを使用して重み値を表し、このインメモリコンピューティングに基づいて、エネルギー効率の高いニューラルネットワークの演算を実現できる。
【0028】
現在、インメモリコンピューティングに基づいて、ディープニューラルネットワークアルゴリズムを実現することには、主に2つの方法がある。1つは、オンチップトレーニング(insituトレーニング)方法であり、つまり、ニューラルネットワークのすべてのコンダクタンスの重みがinsituトレーニングに従って取得される。この方法では、実際のコンダクタンスの重みに基づいて、アルゴリズムの前向き演算と後向き演算を実現し、重みのコンダクタンス値を調整し、アルゴリズムが収束するまでトレーニングプロセス全体を継続的に繰り返す。もう1つはオフチップトレーニング方法であり、つまり、まず他のハードウェアでトレーニングしてネットワークの重み値を取得し、さらに重みの目標に基づいて、アレイ内のデバイスを、対応する重み値に対応するコンダクタンス状態にプログラミングする。
【0029】
メモリスタタイプのデバイスは、物理的なメカニズムや製造プロセスの偏差により、デバイス間の不均一性など、様々な非理想的な特性を備えている。同時に、ディープニューラルネットワークの重み規模が非常に大きいため、ディープニューラルネットワークの重みパラメータを完全にマッピングするのに、複数のメモリスタアレイが必要である。このように、異なるアレイ間及び同じアレイ内の異なるデバイス間にランダムな変動が存在するとともに、デバイスの歩留まりに起因するデバイスの故障やデバイスのコンダクタンス状態のドリフトなどの問題もある。インメモリコンピューティングに基づいて、ディープニューラルネットワークアルゴリズムを実現すると、これらのデバイスの非理想的な特性により、ターゲット認識の精度が低下するなど、システム機能が低下する。
【0030】
例えば、オンチップトレーニング(on-chip training)方法を使用してすべての重みパラメータを取得する場合、自己適応アルゴリズムで調整できるが、エンドツーエンド(end-to-end)で複数サイクルのトレーニングを繰り返す必要があり、プロセスが複雑になり(例えば、畳み込み層の残差逆転送アルゴリズムなどによって実現される)、必要なハードウェアコストが非常に高い。また、メモリスタタイプのデバイスの重み調整プロセスの非線形性と非対称性によって制限され、オンチップトレーニングによって、高性能(例えば、高い認識率)のディープニューラルネットワークを効率的に達成することは困難である。
【0031】
例えば、オフチップトレーニング方法(off-chip training method)を使用して、重みパラメータをトレーニングした後、トレーニングされた重みパラメータをメモリスタアレイにプログラミングし、即ち、メモリスタアレイ内の各素子のコンダクタンス値を使用して、ニューラルネットワークの重みパラメータを表し、インメモリコンピューティングのメモリスタアレイを使用して、ニューラルネットワークの推論算出機能を実現することができる。この方法では、既存のコンピューティングプラットフォームを使用して、トレーニングを完了することができるが、重みのプログラミングプロセス中に、デバイスの歩留まりの問題、不均一性、コンダクタンスドリフト、及びランダムな変動などの非理想的な特性の影響により、重みをデバイスのコンダクタンスに書き込むプロセスで必然的にエラーが発生し、当該ニューラルネットワークシステムのパフォーマンス低下につながる。
【0032】
本開示の少なくとも1つの実施例は、メモリスタに基づくニューラルネットワークのトレーニング方法を提供し、ニューラルネットワークが逐一接続された複数のニューロン層及びニューロン層間の重みパラメータを含み、当該トレーニング方法は、ニューラルネットワークの重みパラメータをトレーニングし、トレーニングされた重みパラメータに基づいて、メモリスタアレイをプログラミングして、トレーニングされた重みパラメータをメモリスタアレイに書き込むステップと、メモリスタアレイのコンダクタンス値の少なくとも一部を調整して、ニューラルネットワークの少なくとも1層の重みパラメータを更新するステップと、を含む。
【0033】
本開示の実施例は、上記トレーニング方法に対応するトレーニング装置をさらに提供する。
【0034】
本開示の実施例によって提供されるトレーニング方法及びそのトレーニング装置は、ニューラルネットワークシステムを、メモリスタアレイに基づくハードウェアシステムに配置する際に使用するオンチップトレーニング方法及びオフチップトレーニング方法の欠点を補い、ニューラルネットワークシステムの観点から、当該トレーニング方法及びそのトレーニング装置は、デバイスの変動など、様々な非理想的な特性によって引き起こされるニューラルネットワークシステムのパフォーマンス低下の問題を解決し、様々なニューラルネットワークを、メモリスタアレイに基づくハードウェアシステムに効率的かつ低コストで配置することができる。
【0035】
以下、添付の図面を参照して、本開示の実施例及びその例を詳しく説明する。
【0036】
図1に示すように、当該ニューラルネットワーク10は、入力層11、少なくとも1つの隠れ層12及び出力層13を含む。例えば、当該ニューラルネットワーク10は、逐一接続されたL(Lが3以上の整数)層のニューロン層を含む。例えば、入力層11は、第1層のニューロン層を含み、少なくとも1つの隠れ層12は、第2層乃至第L-1層のニューロン層を含み、出力層13は、第L層のニューロン層を含む。例えば、入力層11は、受信された入力データを少なくとも1つの隠れ層12に送信し、少なくとも1つの隠れ層12は、当該入力データを層ごとに算出及び変換し、出力層13に送信して、出力層13は、ニューラルネットワーク10の出力結果を出力する。例えば、図1に示すように、ニューラルネットワーク10の層と層との間は完全に接続されている。
【0037】
図1に示すように、入力層11、少なくとも1つの隠れ層12及び出力層13は、いずれも、複数のニューロンノード14を含み、各層のニューロンノード14の数は、様々な応用状況に応じて設定できる。例えば、M個(Mが1より大きい整数)の入力データがある場合、入力層11は、M個のニューロンノード14を有する。
【0038】
図1に示すように、ニューラルネットワーク10の2つの隣接するニューロン層の間は、重みパラメータネットワーク15を介して接続されている。例えば、重みパラメータネットワークは、図2に示すメモリスタアレイによって実現される。例えば、重みパラメータをメモリスタアレイのコンダクタンスに直接プログラミングすることができる。例えば、特定のルールに従って、重みパラメータをメモリスタアレイのコンダクタンスにマッピングすることができる。例えば、2つのメモリスタのコンダクタンスの差を使用して、重みパラメータを表すこともできる。本開示は、重みパラメータを、メモリスタアレイのコンダクタンスに直接プログラミングするか、又は、特定のルールに従って、重みパラメータをメモリスタアレイのコンダクタンスにマッピングすることによって、本開示の技術的解決手段を説明するが、それは単なる例示であり、本開示を制限するものではない。
【0039】
図2に示すように、メモリスタアレイは、アレイに配置された複数のメモリスタ(例えばメモリスタ1511)を含むことができる。例えば、キルヒホッフの法則によれば、メモリスタアレイの出力電流は、次の式に従って求めることができる。
【数1】
ここで、i=1、…、Mであり、j=1、…、nであり、n及びMはいずれも、1よりも大きい整数である。
【0040】
上記の式で、vは、入力層のニューロンノードiによつて入力された電圧励起を示し、iは、次の層(next layer)のニューロンノードjの出力電流を示し、gi、jは、メモリスタアレイのコンダクタンスマトリックスを示す。
【0041】
例えば、メモリスタアレイには、閾値電圧があり、入力電圧の大きさがメモリスタアレイの閾値電圧よりも小さい場合、メモリスタアレイのコンダクタンスは変更されない。この場合、閾値電圧よりも低い電圧を入力することにより、メモリスタのコンダクタンスを使用して算出でき、閾値電圧よりも高い電圧を入力することにより、メモリスタのコンダクタンス値を変更することができる。
【0042】
本開示の少なくとも1つの実施例は、メモリスタに基づくニューラルネットワークのトレーニング方法を提供する。図3は、当該トレーニング方法のフローチャートであり、図4は、当該トレーニング方法の概略図である。当該トレーニング方法は、ソフトウェア、ハードウェア、ファームウェア、又はそれらの任意の組み合わせで実現できる。以下、図3及び図4を参照して、本開示の実施例によって提供されるニューラルネットワークのトレーニング方法を詳しく説明する。図3に示すように、当該ニューラルネットワークのトレーニング方法は、ステップS110及びステップS120を含む。
【0043】
ステップS110:ニューラルネットワークの重みパラメータをトレーニングし、トレーニングされた重みパラメータに基づいて、メモリスタアレイをプログラミングして、トレーニングされた重みパラメータをメモリスタアレイに書き込む。
【0044】
ステップS120:メモリスタアレイのコンダクタンス値の少なくとも一部を調整することによって、ニューラルネットワークの少なくとも1層の重みパラメータを更新する。
【0045】
例えば、本開示の実施例において、当該トレーニング方法は、ハイブリッドトレーニング方法である。例えば、ステップS110は、オフチップトレーニングプロセス、即ち、重みパラメータがメモリスタアレイに書き込まれる前のトレーニングプロセスであり、ステップS120は、オンチップトレーニングプロセス、即ち、重みパラメータがメモリスタアレイに書き込まれた後のトレーニングプロセスである。従来のオンチップトレーニングプロセスでは、ニューラルネットワーク全体の重みパラメータを更新する必要があるが、本開示の実施例によって提供されるハイブリッドトレーニング方法では、例えば、図4に示すように、ニューラルネットワーク10の重みパラメータがステップS110でオフチップトレーニングされた後、トレーニングされた重みパラメータがメモリスタアレイに書き込まれ、ステップS120で記載のオンチップトレーニングプロセスでは、ニューラルネットワーク内の一つの主要層又は複数の重要層の重みパラメータを更新及び調整すればよい。即ち、すべてのメモリスタアレイのコンダクタンス値で表される重みパラメータの全部を更新する必要はない。これにより、デバイスの歩留まりの問題、不均一性、コンダクタンスドリフト、ランダムな変動などの非理想的な特性があるとともに、メモリスタニューラルネットワークシステムの複雑さを大幅に簡素化させ、ニューラルネットワークシステムのオーバーヘッドを削減し、ニューラルネットワークの実現コストを削減することができる。
【0046】
さらに、本開示の実施例によって提供されるニューラルネットワーク10の重みパラメータが、ステップS110でオフチップトレーニングされている際、メモリスタアレイに書き込むときの制約を考慮する必要はなく、即ち、当該オフチップトレーニングプロセスでは、基本的なアルゴリズムによって重みが取得される限り、メモリスタデバイスの非理想的な要素を考慮する必要がなく、ニューラルネットワークのオフチップトレーニングプロセスを簡素化することができる。当然ながら、メモリスタアレイに書き込むときの制約も考慮することができ、本開示の実施例は、これを制限しない。
【0047】
以下、当該ニューラルネットワークのハイブリッドトレーニングプロセスについては、詳しく説明する。
【0048】
ステップS110では、ニューラルネットワークをオフチップトレーニングして、当該ニューラルネットワークの重みパラメータを取得する。例えば、当該ステップは、使用されるメモリスタアレイのコンダクタンス状態の制約に従って、重みを量子化して、量子化された重みパラメータをメモリスタアレイにプログラミングするステップをさらに含む。当該オフチップトレーニングプロセスでは、メモリスタのパフォーマンスの制約が考慮されている場合、メモリスタの特性に準拠する量子化された重み値を直接取得できる。トレーニング中にメモリスタのパフォーマンスの制約が考慮されていない場合、メモリスタのコンダクタンス状態に応じてトレーニングされた重みパラメータを均一又は不均一に量子化する必要があり、そしてプログラミングに使用可能な目標重みパラメータを取得する。
【0049】
例えば、いくつかの例において、ニューラルネットワークの重みパラメータをトレーニングするプロセスで、メモリスタデバイスの特性を考慮することができる。例えば、メモリスタアレイ内の各メモリスタのコンダクタンス値の範囲に対する制約(即ち、メモリスタアレイのコンダクタンス状態の制約)を考慮することができる。即ち、ニューラルネットワークの重みパラメータをオフチップでトレーニングするプロセスでは、メモリスタアレイ内の各メモリスタのコンダクタンスの値の範囲に従って、重みパラメータを制約する。この場合、トレーニングされた重みパラメータは、スケーリングせずにメモリスタアレイに直接書き込むことができる。
【0050】
例えば、図5は、図3に示されるステップS110の少なくとも1つの例のフローチャートである。図5に示す例において、ステップS110は、ステップS111を含む。
【0051】
ステップS111:ニューラルネットワークの重みパラメータをトレーニングするプロセスで、メモリスタアレイのコンダクタンス状態の制約に従って、ニューラルネットワークの量子化された重みパラメータを直接取得して、量子化された重みパラメータをメモリスタアレイに書き込む。
【0052】
例えば、コンダクタンス状態は通常、固定された読み取り電圧下での対応する読み取り電流で表され、次の実施例でも同じであり、ここでは繰り返さない。例えば、いくつかの例において、ニューラルネットワークの重みパラメータがプログラミング可能なメモリスタアレイのコンダクタンスの値の範囲が(-3、-2、-1、0、1、2、3)であると仮定する。次に、ニューラルネットワークの重みパラメータをトレーニングするプロセスでは、メモリスタアレイのコンダクタンス状態の制約に従って、例えば、範囲が(-3、-2、-1、0、1、2、3)の量子化された重みパラメータを直接取得でき、当該量子化された重みパラメータを、スケーリングせずにメモリスタアレイに直接書き込むことができる。
【0053】
なお、メモリスタアレイのコンダクタンス状態の制約及びそれに対応する量子化された重みパラメータの値は、実際の状況に応じて決定され、本開示の実施例では、限定されていない。例えば、図6は、本開示の少なくとも1つの実施例によって提供される、32個のコンダクタンス状態でのメモリスタの累積確率の概略図である。図6に示すように、32個のコンダクタンス状態でのメモリスタの累積確率は、互いに重複せず、また各コンダクタンス状態での累積確率は、いずれも、99.9%以上に達することができる。当該トレーニング方法で得られたメモリスタアレイは、32個のコンダクタンス状態で良好な一貫性を持っていることを示す。
【0054】
例えば、別のいくつかの例において、ニューラルネットワークの重みパラメータをオフチップでトレーニングするプロセスでは、システムとデバイスの特性を考慮しなくてもよく、即ち、メモリスタアレイ内の各メモリスタのコンダクタンス値の範囲による制約特性を考慮しなくてもよい。
【0055】
この場合、メモリスタアレイのコンダクタンスの値の範囲に応じて、トレーニングされた重みパラメータをスケーリングする必要があり、例えば、量子化操作を行う。即ち、トレーニングされた重みパラメータを、メモリスタアレイのコンダクタンスの値の範囲と同じになるようにスケーリングして、トレーニングされた重みパラメータをメモリスタアレイに書き込む。
【0056】
例えば、図7は、図3に示されるステップS110の少なくとも別の例のフローチャートである。図7に示す例において、ステップS110は、ステップS112を含む。
【0057】
ステップS112:メモリスタアレイのコンダクタンス状態の制約に基づいて、トレーニングされた重みパラメータに対して、量子化操作を行い、量子化された重みパラメータを取得して、量子化された重みパラメータをメモリスタアレイに書き込む。
【0058】
例えば、コンダクタンス状態は通常固定された読み取り電圧での対応する読み取り電流で表される。例えば、この例において、ニューラルネットワークの重みパラメータがプログラミングされたメモリスタアレイのコンダクタンスの値の範囲(即ち、コンダクタンス状態の制約)は、(-3、-2、-1、0、1、2、3)であると仮定する。
【0059】
例えば、メモリスタの特性を考慮せずに、トレーニングされた重みパラメータは、例えば、浮動小数点数で表される-1から1までの連続値であり、メモリスタアレイのコンダクタンス状態の制約に基づいて、当該連続値の重みパラメータを、例えば、範囲が(-3、-2、-1、0、1、2、3)の重みパラメータに量子化するように、量子化操作を行い、当該量子化された重みパラメータを、メモリスタアレイに書き込む。
【0060】
なお、メモリスタアレイのコンダクタンス状態の制約及びそれに対応する量子化された重みパラメータの値は、実際の状況に従って決定され、本開示の実施例では、限定されていない。
【0061】
例えば、量子化操作は、均一量子化及び不均一量子化を含む。
【0062】
例えば、図8は、重みパラメータ分布の例を示す。図8に示す例において、トレーニングされた重みパラメータは、浮動小数点数で表される-1から1までの連続値である。均一量子化の場合、-1から1までの区間が、7つの区間に均等に分割される。例えば、量子化された重みパラメータが(-15、-10、-5、0、5、10、15)に均等に分割されるため、コンダクタンス状態の制約(-3、-2、-1、0、1、2、3)に対応する。例えば、量子化された各重みパラメータは、対応するコンダクタンス状態の制約の整数倍、例えば5倍であり、本開示の実施例では、制限されない。不均一量子化の場合、区間(-a、a)は、5つの区間に均等に分割され、(-2、-1、0、1、2)の量子化された重みパラメータに対応し、aは、0よりも大きくて1よりも小さい。例えば、区間(-1、-a)は、スケーリングされてコンダクタンス状態の制約の-3に対応し、区間(a、1)は、コンダクタンス状態の制約の3に対応する。量子化操作における区間分割、及び区間と重みパラメータとの間の対応する関係は、具体的な状況に従って設定することができ、本開示の実施例では、限定されていない。
【0063】
量子化された重みパラメータ(例えば、ステップS111及びS112で得られた、量子化された重みパラメータ)をより正確にメモリスタアレイに書き込むために、例えば、双方向の書き込み検証(bidirectional write verification)を使用することができる。
【0064】
図9は、本開示の少なくとも1つの実施例によって提供される、重みパラメータをメモリスタアレイに書き込むフローチャートである。図9に示すように、重みパラメータをメモリスタアレイに書き込むプロセスは、次のステップを含む。
【0065】
量子化された重みパラメータに基づいて、メモリスタアレイの各メモリスタデバイスのコンダクタンス状態の目標区間を取得し、例えば、通常、特定の固定電圧を印加することによって、当該メモリスタデバイスのコンダクタンス状態に対応する電流を取得する。当該コンダクタンス状態の目標区間は、(I-ΔI、I+ΔI)で表すことができ、ここで、Iは、当該特定の読み取り電圧の下でのコンダクタンス状態の電流値であり、ΔIは、当該コンダクタンス状態に対応する電流の許容誤差であり、
メモリスタアレイの各メモリスタデバイスのコンダクタンス状態Iが目標区間内にあるか否かを判断し、即ちI-ΔI≦I+ΔIを満たすか否かを判断し、
目標区間内にない場合、メモリスタアレイの各メモリスタデバイスのコンダクタンス状態が目標区間を超えたか否かを判断し、即ち、I>I+ΔIを満たすか否かを判断し、
目標区間を超えた場合、リバースパルス(RESETパルス)を印加し、
目標区間を超えていない場合、フォワードパルス(SETパルス)を印加し、
目標区間内にある場合、量子化された重みパラメータがメモリスタアレイに成功に書き込まれた。
【0066】
例えば、図9に示す双方向の書き込み検証プロセスでは、最大操作回数N(Nは0より大きい整数)を設定して、最大操作回数を制限することもできる。次のシステムでは、当該双方向の書き込み検証プロセスを説明する。
【0067】
例えば、まず、初期操作回数をr=0にし、当該コンダクタンス状態の目標区間を取得し、当該コンダクタンス状態の目標区間を(I-ΔI、I+ΔI)で表す。操作回数が最大操作回数Nに達するか否かを判断し、即ち、r(rは0以上でかつN以下)がNに等しいか否かを判断する。操作回数が最大操作回数Nに達して、メモリスタのコンダクタンス状態が目標区間にない場合、プログラミングが失敗したことを示し、操作回数が最大操作回数Nに達していない場合、現在のコンダクタンス状態が目標区間内にあるか否かを判断し、目標区間内にある場合、プログラミングが成功したことを示し、目標区間にない場合、現在のメモリスタのコンダクタンス値が目標区間を超えたか否かを判断し、目標区間を超えた場合、リバースパルス(RESETパルス)を印加し、目標区間を超えていない場合、フォワードパルス(SETパルス)を印加して、現在のメモリスタのコンダクタンス値を調整する。その後、操作回数が最大操作回数Nに達するか又はプログラミングが成功するまで、上記操作を繰り返す。ここまで、トレーニングされた重みパラメータをメモリスタアレイに書き込むことができる。
【0068】
例えば、オフチップトレーニングユニットを提供することができ、当該オフチップトレーニングユニットを介して、ニューラルネットワークの重みパラメータをトレーニングすることができる。例えば、中央処理装置(CPU)、フィールドプログラマブルゲートアレイ(FPGA)、又はデータ処理機能及び/又は命令実行機能を備えた他の形式の処理ユニット及び対応するコンピュータ命令を介して、当該オフチップトレーニングユニットを実現することができる。例えば、当該処理ユニットは、汎用プロセッサ又は専用プロセッサであってもよく、X86又はARMアーキテクチャに基づくプロセッサなどであってもよい。
【0069】
ステップS120の場合、例えば、重みパラメータが書き込まれているメモリスタアレイでインメモリコンピューティングを実行し、当該インメモリコンピューティングの結果に基づいて、メモリスタアレイ内の少なくとも一部のメモリスタのコンダクタンス値を調整して、ニューラルネットワークの少なくとも1層の重みパラメータを更新する。
【0070】
例えば、インメモリコンピューティングは、前向き演算操作及び後向き演算操作であってもよいが、本開示の実施例は、これに限定されない。
【0071】
例えば、更新操作は、順方向電圧又は逆方向電圧を、少なくとも1層の重みパラメータに印加することによって実現され、本開示の実施例は、これに限定されない。
【0072】
例えば、図10は、図3に示されるステップS120の少なくとも1つの例のフローチャートである。図10に示す例において、当該トレーニング方法は、ステップS121及びステップ122を含む。
【0073】
ステップS121:前向き演算操作及び後向き演算操作に基づいて、メモリスタアレイをトレーニングする。
【0074】
ステップS122:前向き演算操作及び後向き演算操作の結果に基づいて、順方向電圧又は逆方向電圧を、メモリスタアレイの一部のメモリスタに印加して、メモリスタアレイの一部のメモリスタのコンダクタンスを更新する。
【0075】
例えば、図10に示すように、トレーニングされた重みパラメータが書き込まれているメモリスタアレイに対して、前向き演算操作、後向き演算操作を行い、前向き演算操作及び後向き演算操作の結果に基づいて、メモリスタの少なくとも一部のコンダクタンス値を更新して、当該メモリスタの少なくとも一部に対応する重みパラメータを調整し、最後に収束するまでトレーニングの反復を複数サイクル行った後、デバイスの歩留まりの問題、不均一性、コンダクタンスドリフト、及びランダムな変動などの非理想的な特性について、適応的に互換性があり、認識精度の向上などのシステムパフォーマンスを復元できる。
【0076】
例えば、メモリスタには閾値電圧があり、入力電圧の大きさがメモリスタの閾値電圧よりも小さい場合、メモリスタアレイのコンダクタンスは変更されない。この場合、閾値電圧よりも小さい入力電圧を入力することによって、前向き演算操作及び後向き演算操作を実現し、閾値電圧よりも大きい入力電圧を入力することによって、更新動作を実現する。以下、添付の図面を参照して、本開示の少なくとも1つの実施例によって提供される前向き演算操作、後向き演算操作及び更新操作のプロセスを、詳細に説明する。
【0077】
図11Aは、本開示の少なくとも1つの実施例によって提供される前向き演算操作の概略図である。図11Aに示すように、メモリスタアレイに等価するコンダクタンス重みパラメータマトリックス(conductance weight parameter matrix)をWとし、メモリスタアレイの閾値電圧よりも小さい入力電圧をVとし、対応する出力電流をIとすると、対応するニューラルネットワークの前向き演算操作は、I=VWで表すことができる。
【0078】
図11Bは、本開示の少なくとも1つの実施例によって提供される後向き演算操作の概略図である。図11Bに示すように、メモリスタアレイに等価するコンダクタンス重みパラメータマトリックスをWとし、メモリスタアレイの閾値電圧よりも小さい電圧Vを入力し、対応的に電流Iを出力し、この場合、対応するニューラルネットワークの後向き演算操作は、I=VWで表すことができる。
【0079】
図11Cは、本開示の少なくとも1つの実施例によって提供される更新操作の概略図である。図11Cに示すように、メモリスタアレイに等価するコンダクタンス重みパラメータマトリックスをWとし、メモリスタアレイの閾値電圧よりも大きい入力電圧をV書き込みとし、対応するニューラルネットワークの更新操作は、W=Wで表すことができる。例えば、図11Cに示すV書き込み1及びV書き込み2のように、更新操作がメモリスタアレイの少なくとも1つのメモリスタのコンダクタンスを増加させることである場合、順方向電圧を、当該少なくとも1つのメモリスタの上下電極に印加し、例えば、図11Cに示すV書き込み1及びV書き込み2のように、更新操作がメモリスタアレイ内の少なくとも1つのメモリスタのコンダクタンスを減少することである場合、逆方向電圧を、当該少なくとも1つのメモリスタの上下電極に印加する。
【0080】
例えば、ステップS121において、ニューラルネットワークのすべてのメモリスタアレイに対して、前向き演算操作を行い、ニューラルネットワークのメモリスタアレイの少なくとも一部のメモリスタに対して、後向き演算操作を行う。ハイブリッドトレーニング方法の場合、オンチップトレーニングプロセス中に、ニューラルネットワーク内の一つの主要層又は複数の重要層の重みパラメータを調整すればよい、したがって、ニューラルネットワーク内の当該一つの主要層又は複数の重要層に対してのみ、後向き演算及び更新操作を行うだけで済み、システムのオーバーヘッドとシステムの実現コストを削減した。
【0081】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング方法において、メモリスタアレイに対して、前向き演算操作及び後向き演算操作を、行ごとに、列ごとに、または全体として並行して実行する。
【0082】
図12A~12Dは、本開示の少なくとも1つの実施例によって提供される前向き演算操作の例示的な方法の概略図である。図12Aは、前向き演算操作を行ごとに実行する例示的な方法を示す。この例において、メモリスタアレイに等価するコンダクタンス重みパラメータマトリックスがn×mマトリックスであり、メモリスタアレイの閾値電圧よりも小さい電圧V、V、V…Vを入力し、対応する電流I、I、I、…Iを行ごとに出力すると仮定する。図12Bは、前向き演算操作を列ごとに実行する例示的な方法を示す。この例において、メモリスタアレイに等価するコンダクタンス重みパラメータマトリックスがm×nマトリックスであり、メモリスタアレイの閾値電圧よりも小さい電圧V、V、V…Vを入力し、対応する電流I、I、I、…Iを列ごとに出力すると仮定する。図12Cは、前向き演算操作を全体として並行して実行する例示的な方法を示す。この例において、メモリスタアレイに等価するコンダクタンス重みパラメータマトリックスがn×mマトリックスであり、メモリスタアレイの閾値電圧よりも小さい電圧V、V、V…Vを入力し、各行を全体として対応する電流I、I、I、…Iを並行して出力すると仮定する。図12Dは、前向き演算操作を全体として並行して実行する例示的な方法を示す。この例において、メモリスタアレイに等価するコンダクタンス重みパラメータマトリックスがm×nマトリックスであり、メモリスタアレイの閾値電圧よりも小さい電圧V、V、V…Vを入力し、各列を全体として対応する電流I、I、I、…Iを出力すると仮定する。
【0083】
図13A~13Dは、本開示の少なくとも1つの実施例によって提供される後向き演算操作の例示的な方法の概略図である。図13Aは、後向き演算操作を列ごとに実行する例示的な方法を示す。この例において、メモリスタアレイに等価するコンダクタンス重みパラメータマトリックスがn×mマトリックスであり、メモリスタアレイの出力端でメモリスタアレイの閾値電圧よりも小さい電圧V、V、V…Vを入力し、対応する電流I、I、I、…Iを列ごとに出力すると仮定する。図13Bは、後向き演算操作を行ごとに実行する例示的な方法を示す。この例において、メモリスタアレイに等価するコンダクタンス重みパラメータマトリックスがm×nマトリックスであり、メモリスタアレイの閾値電圧よりも小さい電圧V、V、V…Vを入力し、対応する電流I、I、I、…Iを行ごとに出力すると仮定する。図13Cは、後向き演算操作を全体的に並行して実行する例示的な方法を示す。この例において、メモリスタアレイに等価するコンダクタンス重みパラメータマトリックスがn×mマトリックスであり、メモリスタアレイの閾値電圧よりも小さい電圧V、V、V…Vを入力し、各列が全体として対応する電流I、I、I、…Iを並行して出力すると仮定する。図13Dは、後向き演算操作を全体として並行して実行する例示的な方法を示す。この例において、メモリスタアレイに等価するコンダクタンス重みパラメータマトリックスがm×nマトリックスであり、メモリスタアレイの閾値電圧よりも小さい電圧V、V、V…Vを入力し、各行を全体として対応する電流I、I、I、…Iを並行して出力する。
【0084】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング方法において、メモリスタアレイの少なくとも一部のメモリスタに対応する重みパラメータを、行ごと又は列ごとに更新する。
【0085】
図14A~14Dは、本開示の少なくとも1つの実施例によって提供される更新操作の例示的な方法の概略図である。図14Aは、更新操作を行ごとに実行する例示的な方法を示す。この例において、メモリスタアレイに等価するコンダクタンス重みパラメータマトリックスがn×mマトリックスであると仮定し、当該n×m重みパラメータマトリックスを行ごとに更新し、当該n×m重みパラメータマトリックスの特定の行を更新するとき、例えば、特定の行における任意の2つの不連続なメモリスタのコンダクタンスを更新するとき、コンダクタンスを増加する必要のある当該行のメモリスタに対して、その上下電極にそれぞれ、VSET1及びVSET2(例えば、VSET1及びVSET2が順方向電圧)を印加し、コンダクタンスを減少する必要のある当該行のメモリスタに対して、その上下電極にそれぞれ、VRESET1及びVRESET2(例えば、VRESET1及びVRESET2が逆方向電圧)を印加する。図14Bは、更新操作を行ごとに実行する例示的な方法を示す。この例において、メモリスタアレイに等価するコンダクタンス重みパラメータマトリックスがm×nマトリックスであると仮定し、当該m×n重みパラメータマトリックスを行ごとに更新し、当該m×n重みパラメータマトリックスの特定の行を更新するとき、例えば、特定の行における任意の2つの連続するメモリスタのコンダクタンスを更新するとき、コンダクタンスを増加する必要のある当該行のメモリスタに対して、その上下電極にそれぞれ、VSET1及びVSET2(例えば、VSET1及びVSET2が順方向電圧)を印加し、コンダクタンスを減少する必要のある当該行のメモリスタに対して、その上下電極にそれぞれ、VRESET1及びVRESET2(例えば、VRESET1及びVRESET2が逆方向電圧)を印加する。図14Cは、更新操作を列ごとに更新する例示的な方法を示す。この例において、メモリスタアレイに等価するコンダクタンス重みパラメータマトリックスがn×mマトリックスであると仮定し、当該n×m重みパラメータマトリックスを列ごとに更新し、当該n×m重みパラメータマトリックスの特定の列を更新するとき、例えば、特定の列にある任意の2つのメモリスタ又は当該列の端点に位置する1つのメモリスタのコンダクタンスを更新するとき、コンダクタンスを増加する必要のある当該列のメモリスタに対して、その上下電極にそれぞれ、VSET1及びVSET2(例えば、VSET1及びVSET2が順方向電圧)を印加し、コンダクタンスを減少する必要のある当該列のメモリスタに対して、その上下電極にそれぞれ、VRESET1及びVRESET2(例えば、VRESET1及びVRESET2が逆方向電圧)を印加する。図14Dは、更新操作を列ごとに更新する例示的な方法を示す。この例において、メモリスタアレイに等価するコンダクタンス重みパラメータマトリックスがm×nマトリックスであると仮定し、当該m×n重みパラメータマトリックスを列ごとに更新し、当該m×n重みパラメータマトリックスの特定の列を更新するとき、例えば、特定の列にある任意の2つの不連続なメモリスタ又は当該列の中央位置に位置する1つのメモリスタのコンダクタンスを更新するとき、コンダクタンスを増加する必要のある当該列にあるメモリスタに対して、その上下電極にそれぞれ、VSET1及びVSET2(例えば、VSET1及びVSET2が順方向電圧)を印加し、コンダクタンスを減少する必要のある当該列にあるメモリスタに対して、その上下電極にそれぞれ、VRESET1及びVRESET2(例えば、VRESET1及びVRESET2が逆方向電圧)を印加する。
【0086】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング方法において、オンチップトレーニングプロセスでは、トレーニングセットデータの一部のみが使用されている。例えば、オフチップでトレーニングする場合、データセットAを使用し、オンチップでトレーニングする場合、データセットBを使用する。ここで、BがAのサブセットである。
【0087】
例えば、前向き演算操作及び後向き演算操作を通じて、メモリスタアレイをトレーニングするとき、トレーニングセットデータの一部のみを使用する。例えば、オフチップでトレーニングする場合、データセットAを使用し、前向き演算操作及び後向き演算操作を行う場合、データBを使用する。ここで、BがAのサブセットである。
【0088】
オンチップトレーニングプロセス(例えば、前向き演算操作及び後向き演算操作)でトレーニングセットの一部のみを使用すると、オンチップトレーニングプロセス(例えば、前向き演算操作及び後向き演算操作)の算出ワークロードを減らすことができ、システムの複雑さを簡素化し、システムのオーバーヘッドを削減する。
【0089】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング方法において、ニューラルネットワークの最後の層又は最後の複数層の重みパラメータを更新する。例えば、ステップS120において、メモリスタアレイのコンダクタンス値の少なくとも一部を調整して、ニューラルネットワークの最後の層又は最後の複数層の重みパラメータを更新する。例えば、ステップS122において、前向き演算操作及び後向き演算操作の結果に基づいて、順方向電圧又は逆方向電圧を、ニューラルネットワークの最後の層又は最後の複数層のメモリスタアレイの少なくとも一部のメモリスタに印加して、ニューラルネットワークの最後の層又は最後の複数層のメモリスタアレイの少なくとも一部のメモリスタに対応する重みパラメータを更新する。
【0090】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング方法は、更新された重みパラメータに基づいて、メモリスタアレイがニューラルネットワークの出力結果を算出して出力するステップをさらに含む。例えば、ハイブリッドトレーニングされたニューラルネットワークの入力層でデータを入力し、当該ハイブリッドトレーニングされたニューラルネットワークの出力層でニューラルネットワークの出力結果を出力する。例えば、当該データを出力する過程で、ハイブリッドトレーニングされたニューラルネットワークの出力データに対して、離散化処理操作を行い、すなわち、それをデジタル信号に変換する。
【0091】
例えば、オンチップトレーニングユニットを提供することができ、当該オンチップトレーニングユニットによって、メモリスタアレイのコンダクタンス値の少なくとも一部を調整して、ニューラルネットワークの少なくとも1層の重みパラメータを更新する。例えば、当該オンチップトレーニングユニットは、メモリスタアレイとして実現できる。
【0092】
なお、本開示の実施例において、当該トレーニング方法の流れには、順次又は並行して実行できる操作がより多くまたはより少なく含まれてもよい。上記のトレーニング方法の流れには、特定の順序で実行される複数の操作が含まれるが、複数の操作の順序が制限されないことを明確に理解する必要がある。上記のトレーニング方法は、1回実施することも、所定の条件に従って複数回実施することもできる。
【0093】
本開示の実施例によって提供されるトレーニング方法は、ニューラルネットワークシステムを、メモリスタアレイに基づくハードウェアシステムに配置する際に使用されるオンチップトレーニング方法及びオフチップトレーニング方法の欠点を補い、ニューラルネットワークシステムの観点から、当該トレーニング方法は、デバイスの変動など、様々な非理想的な特性によって引き起こされるニューラルネットワークシステムのパフォーマンス低下の問題を解決し、様々なニューラルネットワークを、メモリスタアレイに基づくハードウェアシステムに効率的かつ低コストで配置することができる。
【0094】
図15は、本開示の少なくとも1つの実施例によって提供されるニューラルネットワークのトレーニング装置の概略ブロック図である。例えば、図15に示すように、当該トレーニング装置200は、オフチップトレーニングユニット210及びオンチップトレーニングユニット220を含む。例えば、これらのユニットは、ハードウェア(例えば、回路)、ソフトウェア又はファームウェア、及びそれらの任意の組み合わせの形態で実現できる。
【0095】
当該オフチップトレーニングユニット210は、ニューラルネットワークの重みパラメータをトレーニングし、トレーニングされた重みパラメータに基づいて、メモリスタアレイをプログラミングして、トレーニングされた重みパラメータをメモリスタアレイに書き込むように構成される。例えば、当該オフチップトレーニングユニットは、ステップS110を実施することができ、その具体的な実施方法については、ステップS110の関連する説明を参照することができるが、ここでは繰り返さない。
【0096】
当該オンチップトレーニングユニット220は、メモリスタアレイのコンダクタンス値の少なくとも一部を調整して、ニューラルネットワークの少なくとも1層の重みパラメータを更新するように構成される。例えば、当該オンチップトレーニングユニットは、ステップS120を実施することができ、その具体的な実施方法については、ステップS120の関連する説明を参照することができるが、ここでは繰り返さない。
【0097】
図16は、図15に示すニューラルネットワークのトレーニング装置の一例の概略ブロック図である。例えば、図16に示すように、オフチップトレーニングユニット210は、入力ユニット211及び読み書きユニット212を含み、オンチップトレーニングユニット220は、演算ユニット221、更新ユニット222及び出力ユニット223を含む。例えば、これらのユニットは、ハードウェア(例えば、回路)、ソフトウェア又はファームウェア、及びそれらの任意の組み合わせの形で実現できる。
【0098】
当該入力ユニット211は、トレーニングされた重みパラメータを入力するように構成される。例えば、当該入力ユニット211は、ニューラルネットワーク10の入力層11と接続され、データ信号をニューラルネットワーク10に必要な入力データに処理する。例えば、当該入力ユニット211は、例えば、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせによって実現できる。
【0099】
当該読み書きユニット212は、トレーニングされた重みパラメータをメモリスタアレイに書き込むように構成される。例えば、当該読み書きユニットは、電圧(例えば、順方向電圧又は逆方向電圧)をメモリスタアレイに印加することにより、重みパラメータをメモリスタアレイに書き込む。例えば、当該読み書きユニットは、図9に示す双方向の書き込み検証を実施することができ、その具体的な実施方法は、図9に示す双方向の書き込み検証の関連する説明を参照することができ、ここでは繰り返さない。
【0100】
当該演算ユニット221は、前向き演算操作及び後向き演算操作に基づいて、メモリスタアレイをトレーニングするように構成される。例えば、当該演算ユニットは、ステップS121を実施することができ、その具体的な実施方法については、ステップS121の関連する説明を参照することができるが、ここでは繰り返さない。
【0101】
当該更新ユニット222は、前向き演算操作及び後向き演算操作の結果に基づいて、順方向電圧又は逆方向電圧を、メモリスタアレイの少なくとも一部に印加して、メモリスタアレイの少なくとも一部に対応する重みパラメータを更新するように構成される。例えば、当該演算ユニットは、ステップS122を実施することができ、その具体的な実施方法については、ステップS122の関連する説明を参照することができるが、ここでは繰り返さない。
【0102】
当該出力ユニット223は、更新された重みパラメータに基づいて、ニューラルネットワークの出力結果を算出するように構成される。例えば、当該出力ユニット223は、ニューラルネットワーク10の出力層13と接続され、ハイブリッドトレーニングされたニューラルネットワーク10の出力データを出力する。例えば、当該出力ユニット223は、例えば、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせによって実現できる。例えば、当該出力ユニット223は、ADC(アナログ-デジタル変換器)を介して、ハイブリッドトレーニングされたニューラルネットワーク10の出力データに対して、離散化処理操作を行うことができ、すなわち、それをデジタル信号に変換することができる。
【0103】
図17は、図16に示されるニューラルネットワークのトレーニング装置の一例の概略ブロック図である。例えば、図17に示すように、オフチップトレーニングユニット210は、量子化ユニット213をさらに含む。
【0104】
当該量子化ユニット213は、ニューラルネットワークの重みパラメータをトレーニングするプロセスで、メモリスタアレイのコンダクタンス状態の制約に従って、ニューラルネットワークの量子化された重みパラメータを直接取得して、量子化された重みパラメータをメモリスタアレイに書き込むように構成される、又は、メモリスタアレイのコンダクタンス状態の制約に基づいて、トレーニングされた重みパラメータに対して、量子化操作を行い、量子化された重みパラメータを取得するように構成される。例えば、当該量子化ユニットは、ステップS111を実施することができ、その具体的な実施方法は、ステップS111の関連する説明を参照することができ、ここでは繰り返さなく、又は、当該量子化ユニットはまた、ステップS112を実施することができ、その具体的な実施方法は、ステップS112の関連する説明を参照することができ、ここでは繰り返さない。
【0105】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング装置において、当該演算ユニット221は、メモリスタアレイ内の少なくとも一部のメモリスタに対してのみ、後向き演算操作を行い、その具体的な実現方法は上記の通りであり、ここでは繰り返さない。
【0106】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング装置において、当該演算ユニット221は、前向き演算操作、後向き演算操作を、行ごと又は列ごとに、又は全体として並行して実行し、その具体的な実施方法については、図12A~12D及び図13A~13Dの関連する説明を参照することができ、ここでは繰り返さない。
【0107】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング装置において、更新ユニットは、行ごと又は列ごとに更新操作を行い、その具体的な実施方法については、図14A~14Dの関連する説明を参照することができるが、ここでは繰り返さない。
【0108】
例えば、本開示の少なくとも1つの実施例によって提供されるトレーニング装置において、オンチップトレーニング装置は、ニューラルネットワークの最後の層又は最後の複数層の重みパラメータを更新するように構成され、その具体的な実施方法は上記の通りであり、ここでは繰り返さない。
【0109】
なお、明確さと簡潔さのために、本開示の実施例は、ニューラルネットワークのトレーニング装置200のすべての構成ユニットを提供するわけではない。トレーニング装置200の必要な機能を実現するために、当業者は、具体的な必要に応じて、他の示されていない構成ユニットを提供又は設定することができ、本開示の実施例は、これに限定されない。
【0110】
異なる実施例におけるトレーニング装置200の技術的効果に関して、本開示の実施例で提供されるニューラルネットワークのトレーニング方法の技術的効果を参照することができ、ここでは繰り返さない。
【0111】
次の点に注意する必要がある。
(1)本開示の実施例の図面は、本開示の実施例に関する構造のみに関連し、他の構造は、一般的な設計を参照することができる。
(2)矛盾しない限り、本開示の実施例及び実施例の特徴を互いに組み合わせて、新しい実施例を得ることができる。
【0112】
上記の説明は、本開示の例示的な実施方法にすぎず、本開示の保護範囲を限定することを意図するものではなく、本開示の保護範囲が添付の特許請求の範囲によって決定される。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11A
図11B
図11C
図12A
図12B
図12C
図12D
図13A
図13B
図13C
図13D
図14A
図14B
図14C
図14D
図15
図16
図17