(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-29
(45)【発行日】2023-10-10
(54)【発明の名称】記憶装置およびニューラルネットワーク装置
(51)【国際特許分類】
G06N 3/063 20230101AFI20231002BHJP
【FI】
G06N3/063
(21)【出願番号】P 2020141395
(22)【出願日】2020-08-25
【審査請求日】2022-08-25
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】丸亀 孝生
(72)【発明者】
【氏名】水島 公一
(72)【発明者】
【氏名】野村 久美子
(72)【発明者】
【氏名】西 義史
【審査官】稲葉 崇
(56)【参考文献】
【文献】特開2018-73103(JP,A)
【文献】特開平6-309479(JP,A)
【文献】特表2020-516991(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06F 18/00-18/40
G06F 17/00-17/18
(57)【特許請求の範囲】
【請求項1】
連続値である重みを記憶する記憶装置であって、
それぞれが情報を記憶する直列に並んだ複数のセルを含み、前記複数のセルのうちの前記情報を記憶したセルの位置を順方向および逆方向にセル単位でシフトさせることが可能であり、前記複数のセルのそれぞれの位置が前記重みに対応し、前記複数のセルのそれぞれに対応する前記重みが前記順方向の位置の変化に従って連続して増加または減少する、シフトレジスタと、
前記シフトレジスタに含まれる前記複数のセルのうちの、何れか1つのセルに前記情報を書き込む初期化回路と、
前記重みの更新量を受け取り、前記情報を記憶したセルの位置を前記更新量の符号に対応する方向に前記更新量の絶対値に対応するセル数分シフトさせる更新制御回路と、
前記複数のセルに記憶された前記情報を読み出し、前記情報を記憶したセルの位置に対応する前記重みに応じた出力値を出力する読出制御回路と、
を備える記憶装置。
【請求項2】
それぞれがシフトレジスタを有し、連続値である重みを記憶する複数の記憶回路と、
初期化回路と、
更新制御回路と、
読出制御回路と、
を備え、
前記シフトレジスタは、それぞれが情報を記憶する直列に並んだ複数のセルを含み、前記複数のセルのうちの前記情報を記憶したセルの位置を順方向および逆方向にセル単位でシフトさせることが可能であり、前記複数のセルのそれぞれの位置が前記重みに対応し、前記複数のセルのそれぞれに対応する前記重みが前記順方向の位置の変化に従って連続して増加または減少し、
前記初期化回路は、前記複数の記憶回路のそれぞれについて、前記シフトレジスタに含まれる前記複数のセルのうちの、何れか1つのセルに前記情報を書き込み、
前記更新制御回路は、前記複数の記憶回路のそれぞれについて、前記重みの更新量を受け取り、前記情報を記憶したセルの位置を前記更新量の符号に対応する方向に前記更新量の絶対値に対応するセル数分シフトさせ、
前記読出制御回路は、前記複数の記憶回路のそれぞれについて、前記複数のセルに記憶された前記情報を読み出し、前記情報を記憶したセルの位置に対応する前記重みに応じた出力値を出力する
記憶装置。
【請求項3】
前記複数の記憶回路のそれぞれは、前記複数のセルに対応して設けられる複数の書込回路をさらに含み、
前記複数の書込回路のそれぞれは、対応するセルに前記情報を書き込み、
前記初期化回路は、
前記複数の記憶回路のうち、書込対象の記憶回路を選択し、
前記書込対象の記憶回路に含まれる前記複数の書込回路のうち、前記重みの初期値に対応する位置のセルに対応する書込回路を選択し、選択した前記書込回路により前記情報を書き込ませる
請求項2に記載の記憶装置。
【請求項4】
前記初期化回路は、前記複数の記憶回路のそれぞれについて、前記シフトレジスタに含まれる前記複数のセルのうちの、ランダムに定まる前記何れか1つのセルに前記情報を書き込む
請求項2に記載の記憶装置。
【請求項5】
前記初期化回路は、前記複数の記憶回路のそれぞれについて、前記シフトレジスタに含まれる前記複数のセルに記憶された前記情報を消去した後、前記何れか1つのセルに前記情報を書き込む
請求項2から4の何れか1項に記載の記憶装置。
【請求項6】
前記複数の記憶回路のそれぞれは、
前記更新量の符号が設定され、前記シフトレジスタによる前記更新量の符号に対応する方向とは反対方向へのシフトを禁止する方向制御回路と、
前記更新量の絶対値が設定され、前記更新量の絶対値に対応するセル数を超えるシフトを禁止するセル数制御回路と、
をさらに含み、
前記更新制御回路は、
前記複数の記憶回路のそれぞれについて、前記更新量の符号を前記方向制御回路に設定し、前記更新量の絶対値を前記セル数制御回路に設定し、
前記複数の記憶回路に含まれる前記シフトレジスタを一括して、所定セル数分前記順方向または前記逆方向のうちの一方にシフトさせ、前記所定セル数分前記順方向または前記逆方向のうちの他方にシフトさせる
請求項2から5の何れか1項に記載の記憶装置。
【請求項7】
前記読出制御回路は、前記出力値として、前記情報を記憶したセルに対応する前記重みが、予め定められた基準値より大きいか否かを表す値を出力する
請求項2から6の何れか1項に記載の記憶装置。
【請求項8】
前記複数の記憶回路のそれぞれは、前記複数のセルに対応して設けられる複数の読出回路をさらに含み、
前記複数の読出回路のそれぞれは、対応するセルに前記情報が記憶されているか否かに応じた信号を出力し、
前記複数の記憶回路のそれぞれは、
含まれる前記複数の読出回路のうち前記基準値以上の重みに対応する正側セル群に対応する複数の読出回路から出力された信号に基づき、前記正側セル群のうちの少なくとも1つのセルに前記情報が記憶されているか、何れのセルにも前記情報が記憶されていないかを表す正側信号を出力し、
含まれる前記複数の読出回路のうち前記基準値より小さい重みに対応する負側セル群に対応する複数の読出回路から出力された信号に基づき、前記負側セル群のうちの少なくとも1つのセルに前記情報が記憶されているか、何れのセルにも前記情報が記憶されていないかを表す負側信号を出力し、
前記読出制御回路は、
前記複数の記憶回路のうちの読出対象の記憶回路を選択し、
選択した前記読出対象の記憶回路から出力された前記正側信号と前記負側信号との大きさを比較し、
選択した前記読出対象の記憶回路についての前記出力値として、前記正側信号と前記負側信号との比較結果を出力する
請求項7に記載の記憶装置。
【請求項9】
前記読出制御回路は、前記出力値として、前記情報を記憶したセルに対応する前記重みを出力する
請求項2から6の何れか1項に記載の記憶装置。
【請求項10】
前記シフトレジスタは、CCD(Charge Coupled Device)であり、前記複数のセルのそれぞれは、前記情報として電荷を蓄積する
請求項1から9の何れか1項に記載の記憶装置。
【請求項11】
前記シフトレジスタは、論理回路である
請求項1から9の何れか1項に記載の記憶装置。
【請求項12】
前記シフトレジスタは、ライン状のメモリスタであり、
前記メモリスタは、
抵抗値が変化した位置が、外部からの制御によりラインに沿った方向に移動可能であり、
ラインに沿った方向に所定の長さ毎に区切られた範囲が、セルを構成し、
前記複数のセルのそれぞれは、前記情報として前記抵抗値を記憶する
請求項1から9の何れか1項に記載の記憶装置。
【請求項13】
ニューラルネットワークに従った演算処理を実行する演算回路と、
前記演算回路による前記ニューラルネットワークに従った前記演算処理において用いられる複数の推論重みを記憶する推論重み記憶回路と、
前記ニューラルネットワークの学習処理において、前記複数の推論重みに対応する、連続値である複数の重みを記憶する学習重み記憶回路と、
前記学習処理において、前記演算回路による演算結果に基づき、前記学習重み記憶回路に記憶された前記複数の重みのそれぞれを更新させ、前記学習処理の後において、前記学習重み記憶回路に記憶された前記複数の重みに対応する複数の出力値を、前記複数の推論重みとして前記推論重み記憶回路に記憶させる学習制御回路と、
を備え、
前記学習重み記憶回路は、
それぞれがシフトレジスタを有し、連続値である重みを記憶する複数の記憶回路と、
初期化回路と、
更新制御回路と、
読出制御回路と、
を有し、
前記シフトレジスタは、それぞれが情報を記憶する直列に並んだ複数のセルを含み、前記複数のセルのうちの前記情報を記憶したセルの位置を順方向および逆方向にセル単位でシフトさせることが可能であり、前記複数のセルのそれぞれの位置が前記重みに対応し、前記複数のセルのそれぞれに対応する前記重みが前記順方向の位置の変化に従って連続して増加または減少し、
前記初期化回路は、前記複数の記憶回路のそれぞれについて、前記シフトレジスタに含まれる前記複数のセルのうちの、何れか1つのセルに前記情報を書き込み、
前記更新制御回路は、前記複数の記憶回路のそれぞれについて、前記重みの更新量を受け取り、前記情報を記憶したセルの位置を前記更新量の符号に対応する方向に前記更新量の絶対値に対応するセル数分シフトさせ、
前記読出制御回路は、前記複数の記憶回路のそれぞれについて、前記複数のセルに記憶された前記情報を読み出し、前記情報を記憶したセルの位置に対応する前記重みに応じた出力値を出力する
ニューラルネットワーク装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、記憶装置およびニューラルネットワーク装置に関する。
【背景技術】
【0002】
近年、ハードウェアで実現したニューラルネットワーク装置が研究されている。ハードウェアで実現したニューラルネットワークに含まれる各ユニットでは、電気回路により積和演算(乗累算)を実行する。すなわち、電気回路により実現されたユニットは、前段のユニットから受け取った複数の入力信号のそれぞれに対して重みを乗算し、重みを乗算した後の複数の入力信号を加算する。
【0003】
ところで、ハードウェアで実現したニューラルネットワーク装置において、推論で用いる重みは、2値でよい場合がある。しかし、推論で用いる重みが2値でよい場合であっても、学習処理において用いられる重みは、微小量で更新をしなければならないので、連続値(多値)でなければならない。例えば、学習時における重みは、1000階調程度、例えば、10ビット程度の精度が必要と考えられる。さらに、ハードウェアで実現したニューラルネットワーク装置は、学習時において、重みを高速に更新できることが好ましい。
【先行技術文献】
【特許文献】
【0004】
【文献】米国特許出願公開第2018/0336164号明細書
【文献】特開2018-067154号公報
【非特許文献】
【0005】
【文献】Jeongwoo Park, Juyun Lee, Dongsuk Jeon, "A 65nm 236.5nJ/Classification Neuromorphic Processor with 7.5% Energy Overhead On-Chip Learning Using Direct Spike-Only Feedback", 17-21 Feb. 2019, 2019 IEEE International Solid- State Circuits Conference(ISSCC)
【文献】A. J. AGRANAT, C. F. NEUGEBAUER, R. D. NELSON, AND A. YARIV, "The CCD Neural Processor: A Neural Network Integrated Circuit with 65536 Programmable Analog Synapses", 8 , Aug 1990, IEEE Transactions on Circuits and Systems (Volume: 37 , P.1073-1075)
【文献】Alice M. Chiang and Michael L. Chuang, "A CCD Programmable Image Processor and its Neural Network Applications", DECEMBER 1991, IEEE JOURNAL OF SOLID-STATE CIRCUITS, VOL. 26, NO. 12, P.1894-1901
【文献】C.F. Neugebaue and A. Yariv, "A parallel analog CCD/CMOS neural network IC ", IEEE, 1991
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明が解決しようとする課題は、連続値である重みを精度良く記憶し、記憶している重みを高速に更新することができる記憶装置およびニューラルネットワーク装置を提供することにある。
【課題を解決するための手段】
【0007】
実施形態に係る記憶装置は、連続値である重みを記憶する。前記記憶装置は、シフトレジスタと、初期化回路と、更新制御回路と、読出制御回路と、を備える。前記シフトレジスタは、それぞれが情報を記憶する直列に並んだ複数のセルを含む。前記シフトレジスタは、前記複数のセルのうちの前記情報を記憶したセルの位置を順方向および逆方向にセル単位でシフトさせることが可能である。前記シフトレジスタは、前記複数のセルのそれぞれの位置が前記重みに対応する。前記シフトレジスタは、前記複数のセルのそれぞれに対応する前記重みが前記順方向の位置の変化に従って連続して増加または減少する。前記初期化回路は、前記シフトレジスタに含まれる前記複数のセルのうちの、何れか1つのセルに前記情報を書き込む。前記更新制御回路は、前記重みの更新量を受け取り、前記情報を記憶したセルの位置を前記更新量の符号に対応する方向に前記更新量の絶対値に対応するセル数分シフトさせる。前記読出制御回路は、前記複数のセルに記憶された前記情報を読み出し、前記情報を記憶したセルの位置に対応する前記重みに応じた出力値を出力する。
【図面の簡単な説明】
【0008】
【
図1】実施形態に係るニューラルネットワーク装置の構成を示す図。
【
図2】ニューラルネットワークの1つのレイヤを説明するための図。
【
図5】学習重み記憶回路の動作の流れを示すフローチャート。
【
図6】初期化回路および初期化処理のための記憶回路の構成を示す図。
【
図7】初期化時における動作の流れを示すフローチャート。
【
図8】更新制御回路および更新処理のための記憶回路の構成の第1例を示す図。
【
図9】第1例での更新時における動作の流れを示すフローチャート。
【
図10】更新制御回路および更新処理のための記憶回路の構成を示す図。
【
図11】第2例での更新時における動作の流れを示すフローチャート。
【
図12】読出制御回路および読出処理のための記憶回路の構成を示す図。
【
図13】読出時における動作の流れを示すフローチャート。
【
図14】論理回路を含むシフトレジスタの構成を示す図。
【
図15】メモリスタを含むシフトレジスタの構成を示す図。
【
図17】x
i=+1およびw
i=+1の場合の演算動作の説明図。
【
図18】x
i=-1およびw
i=+1の場合の演算動作の説明図。
【
図19】x
i=+1およびw
i=-1の場合の演算動作の説明図。
【
図20】x
i=-1およびw
i=-1の場合の演算動作の説明図。
【発明を実施するための形態】
【0009】
以下、図面を参照しながら実施形態に係るニューラルネットワーク装置10について説明する。
【0010】
図1は、実施形態に係るニューラルネットワーク装置10の構成を示す図である。ニューラルネットワーク装置10は、演算回路14と、推論重み記憶回路16と、学習重み記憶回路20と、学習制御回路22とを備える。
【0011】
演算回路14は、ニューラルネットワークに従った演算処理を実行する。演算回路14は、アナログ回路を含む電気回路により実現される。例えば、演算回路14は、M個(Mは、2以上の整数)の入力信号(x1,…,xM)を受け取り、出力信号(z)を出力する。なお、演算回路14は、複数の出力信号を出力してもよい。
【0012】
推論重み記憶回路16は、演算回路14によるニューラルネットワークに従った演算処理において用いられる複数の推論重みを記憶する。推論重み記憶回路16は、例えば、L個(Lは、2以上の整数)の推論重み(w1,…,wL)を記憶する。複数の推論重みのそれぞれは、2値である。これにより、演算回路14は、それぞれが2値で表された複数の推論重みを用いて、アナログ回路によりニューラルネットワークに従った演算処理を高速に実行することができる。推論重み記憶回路16は、例えば、それぞれが2値の推論重みを記憶する複数のレジスタを含む。
【0013】
学習重み記憶回路20は、ニューラルネットワークの学習処理において、複数の推論重みに対応する複数の重みを記憶する。学習重み記憶回路20は、例えば、L個の推論重みに一対一で対応する、L個の重み(w1,…,wL)を記憶する。複数の重みのそれぞれは、連続値(多値)である。学習重み記憶回路20に記憶された複数の重みのそれぞれは、例えば、符号付の10ビットの精度で表される。
【0014】
学習制御回路22は、ニューラルネットワークの学習処理において、学習重み記憶回路20に複数の重みの初期値を記憶させる。続いて、学習制御回路22は、更新処理を複数回繰り返す。更新処理において、学習制御回路22は、演算回路14による演算結果に基づき複数の重みのそれぞれに対応する更新量(Δw1,…,ΔwL)を生成して学習重み記憶回路20に与え、学習重み記憶回路20に記憶された複数の重みのそれぞれを更新させる。なお、学習制御回路22は、更新処理を1回のみ実行してもよい。そして、学習制御回路22は、学習処理の後において、学習重み記憶回路20に記憶された複数の重みに対応する複数の出力値を、複数の推論重みとして推論重み記憶回路16に記憶させる。
【0015】
このように、学習制御回路22は、連続値で表された複数の重みを用いて、ニューラルネットワークの学習処理を実行する。これにより、学習制御回路22は、学習処理において、複数の重みのそれぞれを微小量ずつ増減させることができるので、ニューラルネットワークを精度良く学習させることができる。
【0016】
図2は、ニューラルネットワークの1つのレイヤを説明するための図である。ニューラルネットワークは、例えば、
図2に示すようなレイヤを1個または複数個含む。演算回路14は、
図2に示すようなレイヤに対応する演算を実行する回路を含む。
【0017】
演算回路14は、例えば、
図2に示すようなレイヤの演算を実行するために、N個(Nは、2以上の整数)の中間信号(y
1~y
N)に対応するN個の積和演算回路30(30-1~30-N)を有する。N個の積和演算回路30のうちのj番目(jは、1からNまでのうちの任意の整数)の積和演算回路30-jは、j番目の中間信号(y
j)に対応する。また、N個の積和演算回路30のそれぞれは、M個の入力信号(x
1~x
M)を受け取る。
【0018】
図3は、積和演算回路30による積和演算を説明する図である。N個の積和演算回路30のそれぞれは、推論重み記憶回路16から、M個の入力信号に対応するM個の推論重み(w
1j,w
2j,…,w
ij,…,w
Mj)が与えられる。
【0019】
N個の積和演算回路30のそれぞれは、M個の入力信号と、M個の推論重みとを積和演算した値を2値化した中間信号を出力する。例えば、j番目の中間信号に対応する積和演算回路30-jは、下記式(1)の演算をアナログ的に実行する。
【数1】
【0020】
式(1)において、yjは、j番目の中間信号を表す。xiは、i番目(iは、1以上、M以下の整数)の入力信号を表す。wijは、M個の推論重みのうちのi番目の入力信号に乗算される推論重みを表す。式(1)において、f(X)は、カッコ内の値Xを所定の閾値で二値化する関数を表す。
【0021】
図4は、学習重み記憶回路20の構成を示す図である。学習重み記憶回路20は、重み記憶回路40と、初期化回路42と、更新制御回路44と、読出制御回路46とを含む。
【0022】
重み記憶回路40は、学習重み記憶回路20が記憶する複数の重みに対して一対一で対応する複数の記憶回路50を含む。例えば、重み記憶回路40は、L個の記憶回路50を含む。
【0023】
複数の記憶回路50のそれぞれは、連続値である重みを記憶する。複数の記憶回路50のそれぞれは、連続値である重みを記憶するために、シフトレジスタ52を有する。
【0024】
シフトレジスタ52は、直列に並んだ複数のセル60を含む。複数のセル60のそれぞれは、1ビットの情報を記憶する。
【0025】
シフトレジスタ52は、外部からの転送制御信号に応じて、複数のセル60のうちの情報を記憶したセル60の位置を、順方向および逆方向に1つのセル単位でシフトさせることが可能である。ここで、順方向は、複数のセル60の配列方向のうちの一方の方向である。逆方向は、複数のセル60の配列方向のうち順方向とは反対の方向である。
【0026】
複数のセル60のそれぞれにおける配列方向の位置は、重みに対応する。複数のセル60のそれぞれに対応する重みは、順方向における位置の変化に従って連続して増加または減少する。
【0027】
例えば、重みが符号付の10ビット精度で表される場合、シフトレジスタ52は、1024個のセル60を含む。この場合、例えば、1024個のセル60のうちの一方の端部のセル60は、“-512”の重みが対応する。また、他方の端部のセル60は、“+511”の重みが対応する。“-512”が対応するセル60から“+511”が対応するセル60に向かう方向を順方向とする。そして、複数のセル60のそれぞれに対応する重みは、セル60の位置が1個分順方向に変化するに従い、“+1”増加する。本例においては、複数のセル60のうち、基準値である0より小さい負側の半数の重み(-512~-1)が対応付けられたセル群を負側セル群と呼び、基準値以上の正側の半数の重み(0~+511)が対応付けられたセル群を正側セル群と呼ぶ。なお、複数のセル60のそれぞれに対する重みの対応付け方法は、この例に限らず、他の例であってもよい。
【0028】
シフトレジスタ52は、例えば、CCD(Charge Coupled Device)である。CCDである場合、シフトレジスタ52に含まれる複数のセル60のそれぞれは、情報として電荷を蓄積する。また、シフトレジスタ52は、論理回路であってもよい。また、シフトレジスタ52は、ライン状のメモリスタであってもよい。また、シフトレジスタ52は、IGZOと呼ばれる、インジウム(In)、ガリウム(Ga)および亜鉛(Zn)を含む酸化物半導体であってもよい。
【0029】
初期化回路42は、複数の記憶回路50のそれぞれについて、シフトレジスタ52に含まれる複数のセル60のうちの、何れか1つのセル60に情報を書き込む。この場合において、初期化回路42は、書き込み対象となるセル60以外の他のセル60には情報が書き込まれないようにする。例えば、初期化回路42は、シフトレジスタ52に含まれる複数のセル60に記憶された情報を一旦全て消去した後に、何れか1つのセル60に情報を書き込む。
【0030】
初期化回路42は、例えば、複数の記憶回路50のそれぞれ毎に学習制御回路22から重みの初期値を受け取り、受け取った初期値に対応する位置のセル60に情報を書き込んでもよい。また、初期化回路42は、例えば、学習制御回路22から初期化指示を受け取った場合、複数の記憶回路50のそれぞれ毎にランダムに選択された位置のセル60に情報を書き込んでもよい。
【0031】
更新制御回路44は、複数の記憶回路50のそれぞれについて、学習制御回路22から重みの更新量を受け取る。更新量は、符号と、絶対値とを含む。符号は、重みを増加させるか、減少させるかを表す。絶対値は、重みの変化量を表す。更新制御回路44は、複数の記憶回路50のそれぞれについて、学習制御回路22から重みの更新量を受け取った場合、シフトレジスタ52に転送制御信号を与えて、情報を記憶したセル60の位置を、更新量の符号に対応する方向に、更新量の絶対値に対応するセル数分シフトさせる。
【0032】
読出制御回路46は、学習制御回路22から読出指示を受けた場合、複数の記憶回路50のそれぞれについて、複数のセル60に記憶された情報を読み出し、情報を記憶したセル60の位置に対応する重みに応じた出力値を出力する。例えば、読出制御回路46は、複数の記憶回路50のそれぞれについて、情報を記憶したセル60に対応する重みが、予め定められた基準値より大きいか否かを判定し、判断結果を表す2値の出力値を出力する。例えば、読出制御回路46は、情報を記憶したセル60が、正側セル群に含まれているか負側セル群に含まれているかを判定し、判定結果を表す2値の出力値を出力する。読出制御回路46は、学習処理が終了した後、複数の記憶回路50のそれぞれから読み出した2値の出力値を、複数の推論重みとして推論重み記憶回路16に与える。
【0033】
また、学習制御回路22は、学習処理の途中段階において、複数の記憶回路50に記憶された複数の重みを用いる場合がある。この場合、読出制御回路46は、複数の記憶回路50のそれぞれから読み出した2値の出力値を、学習制御回路22に与える。また、学習処理の途中段階において、学習制御回路22は、連続値で表された重みを用いる場合がある。この場合、読出制御回路46は、複数の記憶回路50のそれぞれ毎に、複数のセル60のそれぞれについて情報を記憶しているか否かを判定し、情報を記憶したセル60の位置を特定する。そして、読出制御回路46は、情報を記憶したセル60の位置に対応する重みを出力値として出力する。
【0034】
図5は、学習重み記憶回路20の動作の流れを示すフローチャートである。学習重み記憶回路20は、学習処理において、学習制御回路22からの指示に従い、
図5に示す流れで動作する。
【0035】
まず、S11において、学習重み記憶回路20は、学習制御回路22から初期化指示および複数の重みのそれぞれの初期値を受け取り、初期化処理を実行する。初期化処理において、学習重み記憶回路20は、複数の記憶回路50のそれぞれに対して、受け取った初期値に対応する位置のセル60に情報を書き込む。なお、学習重み記憶回路20は、初期化処理において、初期値を受け取らず、複数の記憶回路50のそれぞれ毎にランダムに選択された位置のセル60に情報を書き込んでもよい。
【0036】
続いて、S12において、学習重み記憶回路20は、学習制御回路22から更新指示および複数の重みのそれぞれの更新量を受け取り、更新処理を実行する。更新処理において、学習重み記憶回路20は、複数の記憶回路50のそれぞれに対して、シフトレジスタ52に転送制御信号を与えて、情報を記憶したセル60の位置を、更新量の符号に対応する方向に更新量の絶対値に対応するセル数分シフトさせる。これにより、学習重み記憶回路20は、複数の記憶回路50のそれぞれが記憶している重みを更新量分、増加または減少させることができる。
【0037】
続いて、S13において、学習重み記憶回路20は、学習制御回路22から読出指示を受け取った場合、読出処理を実行する。なお、学習重み記憶回路20は、学習制御回路22から読出指示を受け取らなかった場合、読出処理を実行しない。学習重み記憶回路20は、読出処理において、複数の記憶回路50のそれぞれ毎に、情報を記憶したセル60に対応する重みが、予め定められた基準値より大きいか否かを判定し、判定結果を表す出力値を学習制御回路22へと出力する。例えば、学習重み記憶回路20は、複数の記憶回路50のそれぞれ毎に、情報を記憶したセル60が、正側セル群に含まれているか負側セル群に含まれているかを判定し、判定結果に応じた2値の出力値を学習制御回路22へと出力する。
【0038】
なお、学習制御回路22は、学習処理において、連続値で表された重みを用いる場合がある。この場合、学習重み記憶回路20は、複数の記憶回路50のそれぞれ毎に、複数のセル60のそれぞれについて情報を記憶しているか否かを判定し、情報を記憶したセル60の位置を特定する。そして、読出制御回路46は、情報を記憶したセル60の位置に対応する重みを出力値として出力する。
【0039】
学習重み記憶回路20は、学習処理が終了するまで、S12およびS13の処理を繰り返す(S14のNo)。これにより、学習重み記憶回路20は、複数の重みが最適化される。そして、学習処理が終了した場合(S14のYes)、学習重み記憶回路20は、処理をS15に進める。
【0040】
S15において、学習重み記憶回路20は、学習制御回路22から転送指示を受け取り、転送処理を実行する。学習重み記憶回路20は、転送処理において、複数の記憶回路50のそれぞれ毎に、情報を記憶したセル60に対応する重みが、予め定められた基準値より大きいか否かを判定し、判定結果を表す出力値を推論重み記憶回路16へと出力する。例えば、学習重み記憶回路20は、複数の記憶回路50のそれぞれ毎に、情報を記憶したセル60が、正側セル群に含まれているか負側セル群に含まれているかを判定し、判定結果に応じた2値の出力値を推論重み記憶回路16へと出力する。
【0041】
学習重み記憶回路20は、S15の処理を終えると、本フローを終了する。
【0042】
図6は、初期化回路42の構成および初期化処理のための記憶回路50の構成の一例を示す図である。例えば、複数の記憶回路50のそれぞれは、初期化処理のために、複数の書込回路72をさらに含む。
【0043】
複数の書込回路72は、シフトレジスタ52に含まれる複数のセル60に対応する。例えば、複数の書込回路72は、複数のセル60に一対一で対応する。
【0044】
複数の書込回路72のそれぞれは、初期化回路42からの制御に応じて、対応するセル60に情報を書き込む。例えば、シフトレジスタ52がCCDである場合、対応するセル60に所定量の電荷を注入する。
【0045】
初期化回路42は、消去制御回路74と、書込選択回路76と、値選択回路78とを含む。
【0046】
消去制御回路74は、複数の記憶回路50のそれぞれについて、何れかのセル60への情報の書き込みに先だって、シフトレジスタ52に含まれる複数のセル60に記憶された情報を消去する。消去制御回路74は、例えば、複数の記憶回路50のそれぞれのシフトレジスタ52を、順方向または逆方向に全セル数分シフトさせることにより、複数のセル60の何れにも情報が記憶されていない状態とする。
【0047】
書込選択回路76は、学習制御回路22からの制御に応じて、複数の記憶回路50のうち、書込対象の記憶回路50を選択する。例えば、重み記憶回路40は、複数の記憶回路50に対応する複数の書込回路選択ライン76-1を含む。複数の書込回路選択ライン76-1のそれぞれは、対応する記憶回路50に含まれる複数の書込回路72の全てに接続される。例えば、書込選択回路76は、複数の書込回路選択ライン76-1のうちの、書込対象の記憶回路50に対応する書込回路選択ライン76-1に所定の電圧を印加する。これにより、書込選択回路76は、書込対象の記憶回路50を選択することができる。
【0048】
値選択回路78は、学習制御回路22からの制御に応じて、書込対象の記憶回路50に含まれる複数の書込回路72のうち、重みの初期値に対応する位置のセル60に対応する書込回路72を選択する。そして、値選択回路78は、選択した書込回路72により情報を書き込ませる。
【0049】
例えば、重み記憶回路40は、シフトレジスタ52に含まれる複数のセル60に対応する複数の書込セル選択ライン78-1を含む。複数の書込セル選択ライン78-1のそれぞれは、対応するセル60に対応する書込回路72に接続される。さらに、複数の書込セル選択ライン78-1のそれぞれは、複数の記憶回路50に含まれる同一位置のセル60に対応する複数の書込回路72に対して共通に接続される。例えば、値選択回路78は、複数の書込セル選択ライン78-1のうちの、重みの初期値に対応する位置のセル60に対応する書込セル選択ライン78-1に所定の電圧を印加する。これにより、値選択回路78は、重みの初期値に対応する位置のセル60に対応する書込回路72を選択することができる。
【0050】
そして、それぞれの書込回路72は、自身に接続された書込回路選択ライン76-1および書込セル選択ライン78-1の両方に所定の電圧が印加された場合、対応するセル60に対して電気的に情報を書き込む。これにより、値選択回路78は、書込対象の記憶回路50に含まれる複数の書込回路72のうち、重みの初期値に対応する位置のセル60に対応する書込回路72に情報を書き込ませることができる。
【0051】
なお、シフトレジスタ52が半導体装置に形成され、複数のセル60が半導体膜のある平面上に平行に形成されている場合、複数の書込回路72のそれぞれは、対応するセル60における半導体膜の垂直方向の直上に形成されてもよい。これにより、重み記憶回路40は、半導体装置に形成される場合、平面の面積を小さくすることができる。
【0052】
また、シフトレジスタ52がCCDである場合、複数の書込回路72は、対応するセル60に光を与えることにより、対応するセル60に電荷を蓄積させてもよい。
【0053】
また、複数の記憶回路50のそれぞれは、シフトレジスタ52に含まれる複数のセル60のうちの何れか1つの所定位置のセル60に対応する書込回路72のみを含んでもよい。この場合、値選択回路78は、所定位置のセル60に情報が書き込まれた後、シフトレジスタ52に転送制御信号を与えて、情報を記憶したセル60の位置をシフトさせることにより、重みの初期値に対応する位置のセル60に情報を記憶させる。
【0054】
また、学習制御回路22から受け取る初期値は、ランダムに決定された値であってもよい。また、値選択回路78は、学習制御回路22から初期化指示を受けた場合、ランダムに初期値を決定してもよい。
【0055】
図7は、初期化時における学習重み記憶回路20の動作の流れの一例を示すフローチャートである。初期化時において、学習重み記憶回路20は、例えば
図7に示す流れで処理を行う。
【0056】
まず、S21において、学習重み記憶回路20は、複数の記憶回路50のそれぞれのシフトレジスタ52に含まれる複数のセル60に記憶された情報を消去する。例えば、学習重み記憶回路20は、複数の記憶回路50のそれぞれのシフトレジスタ52を、順方向または逆方向に全セル数分シフトさせることにより、複数のセル60の何れにも情報が記憶されていない状態とする。
【0057】
続いて、S22とS26との間のループ処理において、学習重み記憶回路20は、複数の記憶回路50のそれぞれに対して、S23からS25の処理を実行する。
【0058】
S23において、学習重み記憶回路20は、複数の記憶回路50のうち、書込対象の記憶回路50を選択する。例えば、学習重み記憶回路20は、複数の書込回路選択ライン76-1のうちの、書込対象の記憶回路50に対応する書込回路選択ライン76-1に所定の電圧を印加する。
【0059】
続いて、S24において、学習重み記憶回路20は、書込対象の記憶回路50に含まれる複数の書込回路72のうち、重みの初期値に対応する位置のセル60に対応する書込回路72を選択する。例えば、学習重み記憶回路20は、複数の書込セル選択ライン78-1のうちの、重みの初期値に対応する位置のセル60に対応する書込セル選択ライン78-1に所定の電圧を印加する。なお、初期値は、ランダムに決定された値であってよい。
【0060】
続いて、S25において、学習重み記憶回路20は、書込対象の記憶回路50に含まれる複数の書込回路72のうち、選択した書込回路72により、対応するセル60へ情報を書き込ませる。例えば、所定電圧が印加された書込回路選択ライン76-1および所定電圧が印加された書込セル選択ライン78-1の両方に接続された書込回路72は、対応するセル60に情報を書き込む。
【0061】
学習重み記憶回路20は、複数の記憶回路50の全てについてS23からS25までの処理を実行した後、本フローを終了する。以上のような学習重み記憶回路20は、初期化処理において、複数の記憶回路50のそれぞれについて、シフトレジスタ52に含まれる複数のセル60のうちの、何れか1つのセル60に情報を書き込むことができる。
【0062】
図8は、第1例に係る更新制御回路44の構成および第1例に係る更新処理のための記憶回路50の構成を示す図である。第1例に係る更新制御回路44は、更新選択回路80と、シフト制御回路82とを含む。
【0063】
更新選択回路80は、学習制御回路22からの制御に応じて、複数の記憶回路50のうち、更新対象の記憶回路50を選択する。例えば、複数の記憶回路50のそれぞれは、イネーブル(EN)信号を受け取っている場合に、シフト動作し、イネーブル信号を受け取っていない場合には、シフト動作しない。この場合、更新選択回路80は、更新対象の記憶回路50に含まれるシフトレジスタ52に対してイネーブル信号を与え、他の記憶回路50に含まれるシフトレジスタ52に対してイネーブル信号を与えない。これにより、更新選択回路80は、更新対象の記憶回路50を選択することができる。
【0064】
シフト制御回路82は、学習制御回路22からの制御に応じて、更新対象の記憶回路50に含まれるシフトレジスタ52における情報を記憶したセル60の位置を、更新量の符号に応じた方向に、更新量の絶対値に応じたセル数分シフトさせる。例えば、シフト制御回路82は、複数の記憶回路50に含まれる複数のシフトレジスタ52を同時にシフトさせる転送制御信号を、複数のシフトレジスタ52に共通に与える。例えば、シフトレジスタ52がCCDである場合、シフト制御回路82は、3相の転送制御信号(Vφ1,Vφ2,Vφ3)を複数のシフトレジスタ52に共通に与える。なお、
図8には、3相の転送制御信号(Vφ1,Vφ2,Vφ3)を1つのセル60に与えている省略した図を示しているが、シフト制御回路82は、複数のセル60の全てに3相の転送制御信号(Vφ1,Vφ2,Vφ3)を与える。
【0065】
複数のシフトレジスタ52のうちイネーブル信号が与えられているシフトレジスタ52は、与えられた転送制御信号に応じて、情報を記憶しているセル60の位置をシフトさせる。しかし、複数のシフトレジスタ52のうちイネーブル信号が与えられていないシフトレジスタ52は、転送制御信号が与えられても、情報を記憶しているセル60の位置をシフトさせない。これにより、シフト制御回路82は、更新対象の記憶回路50に含まれるシフトレジスタ52における情報を記憶したセル60の位置を、更新量の符号に応じた方向に、更新量の絶対値に応じたセル数分シフトさせることできる。
【0066】
図9は、第1例での、更新時における学習重み記憶回路20の動作の流れを示すフローチャートである。更新時において、
図8に示した第1例に係る学習重み記憶回路20は、例えば
図9に示す流れで処理を行う。
【0067】
まず、S31とS35との間のループ処理において、学習重み記憶回路20は、複数の記憶回路50のそれぞれに対して、S32からS34の処理を実行する。
【0068】
S32において、更新選択回路80は、複数の記憶回路50のうち、更新対象の記憶回路50を選択する。例えば、更新選択回路80は、更新対象の記憶回路50に含まれるシフトレジスタ52に対してイネーブル信号を与え、他の記憶回路50に含まれるシフトレジスタ52に対してイネーブル信号を与えない。
【0069】
続いて、S33において、シフト制御回路82は、学習制御回路22から、更新対象の記憶回路50に記憶された重みの更新量の符号および絶対値を取得する。
【0070】
続いて、S34において、シフト制御回路82は、更新対象の記憶回路50に含まれるシフトレジスタ52における情報を記憶したセル60の位置を、更新量の符号に応じた方向に、更新量の絶対値に応じたセル数分シフトさせる。例えば、シフト制御回路82は、転送制御信号を制御して、シフトレジスタ52をシフトさせる。
【0071】
そして、S35において、学習重み記憶回路20は、複数の記憶回路50の全てについてS32からS34までの処理を実行した後、本フローを終了する。以上のような第1例に係る学習重み記憶回路20は、更新処理において、複数の記憶回路50のそれぞれについて、情報を記憶したセル60の位置を、更新量の符号に対応する方向に、更新量の絶対値に対応するセル数分シフトさせることができる。
【0072】
図10は、第2例に係る更新制御回路44の構成および第2例に係る更新処理のための記憶回路50の構成を示す図である。更新制御回路44および重み記憶回路40は、例えば、
図8に示した構成に代えて、
図10に示す第2例の構成であってもよい。
【0073】
第2例において、複数の記憶回路50のそれぞれは、例えば、更新処理のために、方向制御回路84と、セル数制御回路86とをさらに含む。
【0074】
方向制御回路84は、更新制御回路44により、対応する記憶回路50に記憶された重みを更新するための更新量の符号が設定される。そして、方向制御回路84は、設定された更新量の符号を記憶する。例えば、方向制御回路84は、更新量が正であれば、正の符号を記憶する。また、方向制御回路84は、更新量が負であれば、負の符号を記憶する。そして、方向制御回路84は、シフトレジスタ52による、設定された更新量の符号に対応する方向へのシフトを許可し、設定された更新量の符号に対応する方向とは反対方向へのシフトを禁止する。
【0075】
例えば、方向制御回路84は、シフト制御回路82から、シフトレジスタ52のシフト方向を示す方向信号を受け取る。方向制御回路84は、設定された更新量の符号と、方向信号に示されている方向に応じて、イネーブル信号をシフトレジスタ52に与えるか否かを制御する。例えば、方向制御回路84は、更新量の符号が正であり且つ方向信号が順方向を示す場合、および、更新量の符号が負であり且つ方向信号が逆方向を示す場合、イネーブル信号を与える。また、方向制御回路84は、更新量の符号が正であり且つ方向信号が逆方向を示す場合、および、更新量の符号が負であり且つ方向信号が順方向を示す場合、イネーブル信号を与えない。シフトレジスタ52は、方向制御回路84からイネーブル信号を受け取っていない場合には、シフト動作しない。これにより、方向制御回路84は、設定された更新量の符号に対応する方向へのシフトを許可し、シフトレジスタ52に対して、設定された更新量の符号に対応する方向とは反対方向へのシフトを禁止することができる。
【0076】
セル数制御回路86は、更新制御回路44により、対応する記憶回路50に記憶された重みを更新するための更新量の絶対値が設定される。セル数制御回路86は、設定された更新量の絶対値を記憶する。そして、セル数制御回路86は、シフトレジスタ52による、設定された更新量の絶対値に対応するセル数以下のシフトを許可し、設定された更新量の絶対値に対応するセル数を超えるシフトを禁止する。
【0077】
例えば、セル数制御回路86は、シフト制御回路82からカウント値を受け取る。カウント値は、順方向または逆方向にシフトを開始してからシフトされたセル数を表す。カウント値は、シフト開始時においては、0で1ずつ増加する。セル数制御回路86は、カウント値が更新量の絶対値以下の場合、イネーブル信号をシフトレジスタ52に与え、カウント値が更新量より大きくなった場合、イネーブル信号をシフトレジスタ52に与えない。シフトレジスタ52は、セル数制御回路86からイネーブル信号を受け取っていない場合には、シフト動作しない。これにより、セル数制御回路86は、シフトレジスタ52に対して、設定された更新量の絶対値に対応するセル数以下のシフトを許可し、設定された更新量の絶対値に対応するセル数を超えるシフトを禁止することができる。
【0078】
第2例において、更新制御回路44は、更新設定回路88と、シフト制御回路82とを含む。
【0079】
更新設定回路88は、学習制御回路22からの制御に応じて、複数の記憶回路50のそれぞれについて、記憶されている重みの更新量を受け取る。そして、更新設定回路88は、複数の記憶回路50のそれぞれの方向制御回路84に対して、対応する更新量の符号を設定する。また、更新設定回路88は、複数の記憶回路50のそれぞれのセル数制御回路86に対して、対応する更新量の絶対値を設定する。
【0080】
シフト制御回路82は、学習制御回路22からの制御に応じて、複数の記憶回路50に含まれるシフトレジスタ52を一括して、所定セル数分、順方向または前記逆方向のうちの一方にシフトさせる。続いて、シフト制御回路82は、複数の記憶回路50に含まれるシフトレジスタ52を一括して、所定セル数分、順方向または逆方向のうちの他方向にシフトさせる。
【0081】
例えば、シフト制御回路82は、複数の記憶回路50に含まれる複数のシフトレジスタ52を同時にシフトさせることができる転送制御信号を発生する。例えば、シフトレジスタ52がCCDである場合、シフト制御回路82は、3相の転送制御信号(Vφ1,Vφ2,Vφ3)を複数のシフトレジスタ52に共通に与える。
【0082】
この場合において、シフト制御回路82は、順方向にシフトさせているか、逆方向にシフトさせているかを示す方向信号を、複数の記憶回路50のそれぞれが含む方向制御回路84に与える。さらに、シフト制御回路82は、順方向へのシフトを開始してから所定セル数分のシフトしている間において、シフトさせたセル数を表すカウント値を、複数の記憶回路50のそれぞれが含むセル数制御回路86に与える。また、シフト制御回路82は、逆方向へのシフトを開始してから所定セル数分のシフトしている間において、シフトさせたセル数を表すカウント値を、複数の記憶回路50のそれぞれが含むセル数制御回路86に与える。
【0083】
複数の記憶回路50のそれぞれに記憶されたシフトレジスタ52は、方向制御回路84からイネーブル信号が与えられ、且つ、セル数制御回路86からイネーブル信号が与えられていることを条件として、与えられた転送制御信号に応じて、記憶している情報をシフトさせる。しかし、複数の記憶回路50のそれぞれに記憶されたシフトレジスタ52は、転送制御信号が与えられた場合であって、方向制御回路84またはセル数制御回路86の何れか一方からイネーブル信号が与えられない場合には、記憶している情報をシフトさせない。従って、複数の記憶回路50のそれぞれは、自身に設定されている更新量の符号に対応する方向に、自身に設定されている更新量の絶対値に対応するセル数分、シフトレジスタ52をシフトさせることができる。
【0084】
図11は、第2例での、更新時における学習重み記憶回路20の動作の流れを示すフローチャートである。更新時において、
図10に示した第2例に係る学習重み記憶回路20は、例えば
図11に示す流れで処理を行う。
【0085】
まず、S41において、更新設定回路88は、学習制御回路22から、複数の記憶回路50のそれぞれについて、記憶された重みの更新量の符号および絶対値を取得する。そして、更新設定回路88は、複数の記憶回路50のそれぞれについて、更新量の符号を方向制御回路84に設定し、更新量の絶対値をセル数制御回路86に設定する。
【0086】
続いて、S42において、シフト制御回路82は、複数の記憶回路50のそれぞれに含まれるシフトレジスタ52を一括して、所定セル数分順方向にシフトさせる。この場合において、シフト制御回路82は、順方向にシフトさせていることを示す方向信号を、複数の記憶回路50のそれぞれが含む方向制御回路84に与える。さらに、シフト制御回路82は、順方向へのシフトを開始してからシフトさせたセル数を表すカウント値を、複数の記憶回路50のそれぞれが含むセル数制御回路86に与える。これにより、複数の記憶回路50のそれぞれに含まれるシフトレジスタ52は、方向制御回路84に正符号が設定されている場合、セル数制御回路86に設定された絶対値に対応するセル数分、情報を記憶しているセル60の位置を順方向にシフトさせることができる。
【0087】
続いて、S43において、シフト制御回路82は、複数の記憶回路50のそれぞれに含まれるシフトレジスタ52を一括して、所定セル数分逆方向にシフトさせる。この場合において、シフト制御回路82は、逆方向にシフトさせていることを示す方向信号を、複数の記憶回路50のそれぞれが含む方向制御回路84に与える。さらに、シフト制御回路82は、逆方向へのシフトを開始してからシフトさせたセル数を表すカウント値を、複数の記憶回路50のそれぞれが含むセル数制御回路86に与える。これにより、複数の記憶回路50のそれぞれに含まれるシフトレジスタ52は、方向制御回路84に負符号が設定されている場合、セル数制御回路86に設定された絶対値に対応するセル数分、情報を記憶しているセル60の位置を逆方向にシフトさせることができる。
【0088】
学習重み記憶回路20は、S43の処理を実行した後、本フローを終了する。なお、学習重み記憶回路20は、S43を実行してから、S42を実行してもよい。
【0089】
また、S42およびS43における、一括してシフトさせる所定セル数は、シフトレジスタ52に含まれる全部のセル60の数であってもよい。また、学習制御回路22が出力する更新量の最大値および最小値が予め定められている場合がある。この場合、所定セル数は、更新制御回路44が学習制御回路22から受け取り可能な更新量の絶対値の最大値以上であればよい。すなわち、所定セル数は、受け取り可能な更新量の最大値の絶対値、または、受け取り可能な更新量の最小値の絶対値のうちの、大きい方の値以上であればよい。
【0090】
以上のような第2例に係る学習重み記憶回路20は、更新処理において、複数の記憶回路50のそれぞれについて、情報を記憶したセル60の位置を、更新量の符号に対応する方向に、更新量の絶対値に対応するセル数分シフトさせることができる。さらに、第2例に係る学習重み記憶回路20は、更新処理において、複数の記憶回路50に対して一括して、セル数分シフトさせることができる。
【0091】
図12は、読出制御回路46の構成および読出処理のための記憶回路50の構成を示す図である。
【0092】
複数の記憶回路50のそれぞれは、読出処理のために、例えば、複数の読出回路90と、グラウンドスイッチ92と、正側抵抗94と、正側スイッチ96と、負側抵抗98と、負側スイッチ100と、正側出力端子102と、負側出力端子104とをさらに含む。
【0093】
複数の読出回路90は、シフトレジスタ52に含まれる複数のセル60に対して、一対一で対応する。複数の読出回路90のそれぞれは、対応するセル60に情報が記憶されているか否かに応じた信号を出力する。
【0094】
本例においては、読出回路90は、MOSFET(Metal-Oxide-Semiconductor Field Effect Transistor)である。この場合、読出回路90は、ゲートが対応するセル60に接続され、ソースがグラウンドスイッチ92を介してグラウンドに接続される。また、正側セル群に対応する読出回路90のドレインは、正側出力端子102に接続される。負側セル群に対応する読出回路90のドレインは、負側出力端子104に接続される。
【0095】
グラウンドスイッチ92は、読出制御回路46による制御に応じて、複数の読出回路90の機能を有効にするか否かを切り替える。本例においては、グラウンドスイッチ92は、複数の読出回路90である複数のMOSFETのソースをグラウンドに接続するか否かを切り替える。グラウンドスイッチ92は、複数の読出回路90の機能を有効にする場合、オンとなることにより、複数のMOSFETの全てのソースをグラウンドに接続する。グラウンドスイッチ92は、複数の読出回路90の機能を無効にする場合、オフとなることにより、複数のMOSFETのソースとグラウンドとを切断する。
【0096】
正側抵抗94は、一方の端子が正側出力端子102に接続され、他方の端子が正側スイッチ96を介して電源電圧(VDD)に接続される。
【0097】
正側スイッチ96は、読出制御回路46による制御に応じて、この記憶回路50に含まれる複数の読出回路90のうち、正側セル群に対応する複数の読出回路90の機能を有効にするか否かを切り替える。正側セル群は、複数のセル60のうち、負側の半数の重み(例えば、0~+511)が対応付けられたセル群である。本例においては、正側スイッチ96は、正側抵抗94の正側出力端子102に接続されていない側の端子を、電源電圧(VDD)に接続するか否かを切り替える。正側スイッチ96は、正側セル群に対応する複数の読出回路90の機能を有効にする場合、オンとなることにより、正側抵抗94を電源電圧(VDD)に接続する。正側スイッチ96は、正側セル群に対応する複数の読出回路90の機能を無効にする場合、オフとなることにより、正側抵抗94と電源電圧(VDD)とを切断する。
【0098】
負側抵抗98は、一方の端子が負側出力端子104に接続され、他方の端子が負側スイッチ100を介して電源電圧(VDD)に接続される。
【0099】
負側スイッチ100は、読出制御回路46による制御に応じて、この記憶回路50に含まれる複数の読出回路90のうち、負側セル群に対応する複数の読出回路90の機能を有効にするか否かを切り替える。負側セル群は、複数のセル60のうち、負側の半数の重み(例えば、-512~-1)が対応付けられたセル群である。本例においては、負側スイッチ100は、負側抵抗98の負側出力端子104に接続されていない側の端子を、電源電圧(VDD)に接続するか否かを切り替える。負側スイッチ100は、負側セル群に対応する複数の読出回路90の機能を有効にする場合、オンとなることにより、負側抵抗98を電源電圧(VDD)に接続する。負側スイッチ100は、負側セル群に対応する複数の読出回路90の機能を無効にする場合、オフとなることにより、負側抵抗98と電源電圧(VDD)とを切断する。
【0100】
正側出力端子102は、正側のセル群に対応する複数の読出回路90から出力された電気信号に基づく正側信号を出力する。また、負側出力端子104は、負側セル群に対応する複数の読出回路90から出力された複数の電気信号に基づく負側信号を出力する。
【0101】
このような構成において、複数の読出回路90のそれぞれは、対応するセル60に情報が記憶されている場合、オンとなり、対応するセル60に情報が記憶されていない場合、オフとなる。正側セル群に対応する複数の読出回路90のそれぞれは、オンとなった場合、正側出力端子102とグラウンドと接続する。また、負側セル群に対応する複数の読出回路90のそれぞれは、オンとなった場合、負側出力端子104とグラウンドと接続する。
【0102】
従って、正側出力端子102から出力される正側信号は、正側セル群のうちの少なくとも1つのセル60に情報が記憶されている場合に、グラウンド電位となり、正側セル群の何れのセル60にも情報が記憶されていない場合、電源電位(VDD)となる。つまり、正側信号は、正側セル群のうちの少なくとも1つのセル60に情報が記憶されているか、何れのセル60にも情報が記憶されていないかを表す。
【0103】
また、負側出力端子104から出力される負側信号は、負側セル群のうちの少なくとも1つのセル60に情報が記憶されている場合に、グラウンド電位となり、負側セル群の何れのセル60にも情報が記憶されていない場合、電源電位(VDD)となる。つまり、負側信号は、負側セル群のうちの少なくとも1つのセル60に情報が記憶されているか、何れのセル60にも情報が記憶されていないかを表す。
【0104】
読出制御回路46は、読出対象選択回路112と、比較回路114とを含む。
【0105】
読出対象選択回路112は、学習制御回路22からの制御に応じて、複数の記憶回路50のうち、1つの読出対象の記憶回路50を選択する。本例においては、読出対象選択回路112は、読出対象の記憶回路50に含まれるグラウンドスイッチ92、正側スイッチ96および負側スイッチ100をオンとして、読出対象の記憶回路50に含まれる複数の読出回路90の機能を有効にする。
【0106】
比較回路114は、選択された読出対象の記憶回路50の正側出力端子102から出力された正側信号と、選択された読出対象の記憶回路50の負側出力端子104から出力された負側信号との大きさを比較する。ここで、シフトレジスタ52は、何れか1つのセル60に情報を記憶させ、他の全てのセル60には情報を記憶させない。従って、正側信号および負側信号のうちの一方は、何れのセル60にも情報が記憶されていないことを表すレベルとなり、他方は、少なくとも1つのセル60に情報を記憶させるレベルとなる。つまり、正側信号と負側信号とは、レベルが異なる。従って、比較回路114は、正側信号と負側信号との大きさを比較することができる。
【0107】
そして、比較回路114は、選択した読出対象の記憶回路50についての出力値として、正側信号と負側信号との比較結果を出力する。このような構成の読出制御回路46は、読出対象の記憶回路50に記憶された重みを、2値化した出力値を出力することができる。
【0108】
なお、読出制御回路46は、読出対象の記憶回路50に記憶された重みを、2値化せずに、連続値で出力してもよい。この場合、読出制御回路46は、選択した読出対象の記憶回路50に含まれる複数の読出回路90のそれぞれから出力された信号に基づき、シフトレジスタ52に含まれる複数のセル60のうちの情報を記憶したセル60を特定する。そして、読出制御回路46は、選択した読出対象の記憶回路50についての出力値として、特定したセル60の位置に対応する重みを出力する。
【0109】
図13は、読出時における学習重み記憶回路20の動作の流れを示すフローチャートである。読出時において、
図12に示した学習重み記憶回路20は、例えば
図13に示す流れで処理を行う。
【0110】
まず、S51とS55との間のループ処理において、学習重み記憶回路20は、複数の記憶回路50のそれぞれに対して、S52からS54の処理を実行する。
【0111】
S52において、読出対象選択回路112は、複数の記憶回路50のうち、読出対象の記憶回路50を選択する。例えば、読出対象選択回路112は、読出対象の記憶回路50に含まれるグラウンドスイッチ92、正側スイッチ96および負側スイッチ100をオンとする。
【0112】
続いて、S53において、比較回路114は、読出対象の記憶回路50から出力された正側信号と、読出対象の記憶回路50から出力された負側信号との大きさを比較する。すなわち、比較回路114は、正側セル群または負側セル群の何れの側に情報が記憶されているかを判断する。
【0113】
続いて、S54において、比較回路114は、正側信号と負側信号との比較結果を、2値で表された重みとして出力する。そして、S55において、学習重み記憶回路20は、複数の記憶回路50の全てについてS52からS54までの処理を実行した後、本フローを終了する。以上のような学習重み記憶回路20は、読出処理において、複数の記憶回路50のそれぞれについて、複数のセル60に記憶された情報を読み出し、情報を記憶したセル60の位置に対応する重みに応じた出力値を出力することができる。
【0114】
図14は、論理回路を含むシフトレジスタ52の構成を示す図である。シフトレジスタ52は、論理回路であってもよい。例えば、複数のセル60のそれぞれは、
図14に示すような構成であってもよい。
【0115】
すなわち、複数のセル60のそれぞれは、マルチプレクサ152と、Dフリップフロップ154とを含む。
【0116】
マルチプレクサ152は、2つの入力端子のうち、指定された入力端子に入力された値を出力する。
図14の例の場合、マルチプレクサ152は、第1入力端子(A)または第2入力端子(B)のうちの何れか一方から入力された値を出力する。
【0117】
Dフリップフロップ154は、クロック信号が与えられ、D端子から入力された値をクロック信号の1サイクル期間、記憶する。Dフリップフロップ154は、記憶している値をQ端子から出力する。
【0118】
Dフリップフロップ154のD端子は、マルチプレクサ152から出力された値を取得する。マルチプレクサ152の第1入力端子(A)は、1つ上位の位置のセル60に含まれるDフリップフロップ154のQ端子から出力される値を取得する。マルチプレクサ152の第2入力端子(B)は、1つ下位の位置のセル60に含まれるDフリップフロップ154のQ端子から出力される値を取得する。
【0119】
Dフリップフロップ154は、シフトレジスタ52がシフト動作をする場合に、クロック信号が与えられる。また、マルチプレクサ152は、順方向にシフトさせるか逆方向にシフトさせるかを示す方向信号が与えられ、順方向にシフトさせる場合には第2入力端子(B)が指定され、逆方向にシフトさせる場合には第1入力端子(A)が指定される。
【0120】
このような構成のシフトレジスタ52は、複数のセル60のうちの何れか1つに、情報(ビット)を記憶することができる。さらに、このような構成のシフトレジスタ52は、情報(ビット)を、順方向または逆方向に1セルずつシフトさせることができる。なお、論理回路を含むシフトレジスタ52は、
図14に示す構成に限らず、他の構成であってもよい。
【0121】
図15は、メモリスタを含むシフトレジスタ52の構成を示す図である。シフトレジスタ52は、メモリスタ162と、複数の制御ライン164とを含んでもよい。
【0122】
メモリスタ162は、例えば、所定の方向に延伸したライン状である。メモリスタ162は、抵抗値を情報として記憶することができる。
【0123】
メモリスタ162におけるラインに沿った方向の所定の長さ毎に区切られた範囲は、シフトレジスタ52のセル60として構成される。そして、ラインに沿った方向に並んで形成された複数のセル60のそれぞれは、情報として抵抗値を記憶する。
【0124】
メモリスタ162は、抵抗値が変化した位置が、複数の制御ライン164による外部からの制御によって、ラインに沿った方向に移動可能である。従って、メモリスタ162は、抵抗値が変化した位置を移動させることにより、情報が記憶された位置をラインに沿った方向に移動させることができる。
【0125】
このような構成のシフトレジスタ52は、メモリスタ162のラインに沿って形成された複数のセル60のうちの何れか1つに、情報(抵抗値)を記憶することができる。さらに、このような構成のシフトレジスタ52は、情報(抵抗値)を、順方向または逆方向に1セルずつシフトさせることができる。
【0126】
図16は、積和演算回路30のハードウェア構成を示す図である。なお、積和演算回路30は、
図16に示した構成に限らず、他の構成であってもよい。
【0127】
積和演算回路30は、M個の重み(w1~wM)と、M個の入力信号(x1~xM)とを積和演算する。なお、M個の重み(w1~wM)のそれぞれは、推論重み記憶回路16に記憶された複数の重みのうちの一部であり、2値である。また、M個の入力信号(x1~xM)のそれぞれは、2値である。
【0128】
積和演算回路30は、コンパレータ236と、第1抵抗232と、第2抵抗234と、M個のクロススイッチ238と、M個の係数回路240とを備える。
【0129】
第1抵抗232は、所定の電源電圧(Vdd)を発生する電圧源と第1比較端子242との間に接続される。第2抵抗234は、所定の電源電圧(Vdd)を発生する電圧源と第2比較端子244との間に接続される。第1抵抗232および第2抵抗234は、同一抵抗値である。
【0130】
コンパレータ236は、第1比較端子242に発生する第1電圧(V1)と、第2比較端子244に発生する第2電圧(V2)との比較結果に応じた値を表す出力信号(y)を出力する。本実施形態においては、コンパレータ236は、第2電圧(V2)から第1電圧(V1)を減じた電圧が0より小さい場合、-1を表す出力信号(y)を出力する。コンパレータ236は、第2電圧(V2)から第1電圧(V1)を減じた電圧が0以上である場合、+1を表す出力信号(y)を出力する。
【0131】
ここで、第1抵抗232に発生する電圧を、正側電圧(VP)と表す。また、第2抵抗234に発生する電圧を、負側電圧(VN)と表す。この場合、第1電圧(V1)は、Vdd-VPとなる。また、第2電圧(V2)は、Vdd-VNとなる。従って、本実施形態において、コンパレータ236は、正側電圧(VP)から負側電圧(VN)を減じた電圧が0より小さい場合、-1を表す出力信号(y)を出力する。また、本実施形態において、コンパレータ236は、正側電圧(VP)から負側電圧(VN)を減じた差電圧(Vd)が0以上である場合、+1を表す出力信号(y)を出力する。
【0132】
M個のクロススイッチ238は、M個の入力信号に対応して設けられる。本実施形態においては、積和演算回路30は、M個のクロススイッチ238として、第1クロススイッチ238-1~第Mクロススイッチ238-Mを備える。例えば、第1クロススイッチ238-1は、第1の入力信号(x1)に対応し、第2クロススイッチ238-2は、第2の入力信号(x2)に対応し、第Mクロススイッチ238-Mは、第Mの入力信号(xM)に対応する。
【0133】
M個のクロススイッチ238のそれぞれは、ポジティブ入力端子252と、ネガティブ入力端子254と、ポジティブ出力端子256と、ネガティブ出力端子258とを有する。
【0134】
M個のクロススイッチ238のそれぞれは、ポジティブ入力端子252が第1比較端子242に接続される。また、M個のクロススイッチ238のそれぞれは、ネガティブ入力端子254が第2比較端子244に接続される。
【0135】
M個のクロススイッチ238のそれぞれは、ポジティブ出力端子256を、ポジティブ入力端子252およびネガティブ入力端子254のうち何れか一方に接続する。また、M個のクロススイッチ238のそれぞれは、ネガティブ出力端子258を、ポジティブ入力端子252およびネガティブ入力端子254のうちポジティブ出力端子256が接続されていないもう一方に接続する。M個のクロススイッチ238のそれぞれは、対応する入力信号の値に応じて、ポジティブ出力端子256およびネガティブ出力端子258を、ポジティブ入力端子252またはネガティブ入力端子254の何れに接続するかを切り換える。
【0136】
すなわち、M個のクロススイッチ238のそれぞれは、対応する入力信号の値に応じて、ストレート状態とリバース状態とを切り替える。ストレート状態は、ポジティブ入力端子252とポジティブ出力端子256とを接続し、且つ、ネガティブ入力端子254とネガティブ出力端子258とを接続する状態である。リバース状態は、ポジティブ入力端子252とネガティブ出力端子258とを接続し、且つ、ネガティブ入力端子254とポジティブ出力端子256とを接続する状態である。
【0137】
本実施形態において、M個のクロススイッチ238のそれぞれは、対応する入力信号の値が+1である場合、ストレート状態とし、対応する入力信号の値が-1である場合、リバース状態とする。これに代えて、M個のクロススイッチ238のそれぞれは、対応する入力信号の値が+1である場合、リバース状態とし、対応する入力信号の値が-1である場合、ストレート状態としてもよい。
【0138】
M個の係数回路240は、M個の重みに対応して設けられる。本実施形態においては、積和演算回路30は、M個の係数回路240として、第1係数回路240-1~第M係数回路240-Mを有する。例えば、第1係数回路240-1は、第1の重み(w1)に対応し、第2係数回路240-2は、第2の重み(w2)に対応し、第M係数回路240-Mは、第Mの重み(wM)に対応する。
【0139】
なお、第1の重み(w1)は、第1の入力信号(x1)に対応し、第2の重み(w2)は、第2の入力信号(x2)に対応し、第Mの重み(wM)は、第Mの入力信号(xM)に対応する。従って、M個のクロススイッチ238とM個の係数回路240とは、一対一で対応する。例えば、第1係数回路240-1は、第1クロススイッチ238-1に対応し、第2係数回路240-2は、第2クロススイッチ238-2に対応し、第M係数回路240-Mは、第Mクロススイッチ238-Mに対応する。
【0140】
M個の係数回路240のそれぞれは、第1定電流源62と、第2定電流源64とを含む。第1定電流源62は、一方の端が対応するクロススイッチ238のポジティブ出力端子256に接続され、他方の端が基準電位(例えばグラウンド)に接続される。すなわち、第1定電流源62は、対応するクロススイッチ238のポジティブ出力端子256と基準電位との間に接続される。
【0141】
また、第2定電流源64は、一方の端が対応するクロススイッチ238のネガティブ出力端子258に接続され、他方の端が基準電位(例えばグラウンド)に接続される。すなわち、第2定電流源64は、対応するクロススイッチ238のネガティブ出力端子258と基準電位との間に接続される。
【0142】
第1定電流源62および第2定電流源64のそれぞれは、定電流源である。第1定電流源62および第2定電流源64は、対応する重みの値に応じて、電流差の正負が切り替えられる。例えば、積和演算回路30は、M個の入力信号の受け取りに先だって、M個の重みを受け取る。そして、積和演算回路30は、受け取ったM個の重みのそれぞれに応じて、対応する係数回路240に含まれる第1定電流源62および第2定電流源64のそれぞれの電流差の正負を設定する。
【0143】
M個の係数回路240のそれぞれは、対応する重みに応じて、第1状態と、第2状態とを切り替える。第1状態は、第1定電流源62が第1電流値(I1)の電流を流し、且つ、第2定電流源64が、第1電流値(I1)とは異なる第2電流値(I2)の電流を流す状態である。第2状態は、第1定電流源62が第2電流値(I2)の電流を流し、且つ、第2定電流源64が第1電流値(I1)の電流を流す状態である。
【0144】
なお、本実施形態において、第2電流値(I2)は、第1電流値(I1)より小さい。従って、本実施形態において、第1状態は、第1定電流源62に流れる電流が、第2定電流源64に流れる電流より大きい状態である。また、第2状態は、第1定電流源62に流れる電流が、第2定電流源64に流れる電流より小さい状態である。
【0145】
本実施形態において、複数の係数回路240のそれぞれは、対応する重みが+1である場合、第1状態とし、対応する重みが-1である場合、第2状態とする。これに代えて、複数の係数回路240のそれぞれは、対応する重みが+1である場合、第2状態とし、対応する重みが-1である場合、第1状態としてもよい。
【0146】
図17は、x
i=+1およびw
i=+1の場合の第iのクロススイッチ238-iおよび第iの係数回路240-iの演算動作を説明するための図である。
【0147】
第iの入力信号(xi)が+1である場合、第iクロススイッチ238-iは、ストレート状態とされる。第iの重み(wi)が+1である場合、第iの係数回路240-iは、第1状態とされる。すなわち、第iの重み(wi)が+1である場合、第1定電流源62は、第1電流値(I1)の電流を流すように設定され、第2定電流源64は、第2電流値(I2)の電流を流すように設定される。なお、I1>I2である。
【0148】
従って、第iの入力信号(xi)が+1であり且つ第iの重み(wi)が+1である場合、第iの係数回路240-iは、第1比較端子242から第1電流値(I1)の電流を吸い出し、第2比較端子244から第2電流値(I2)の電流を吸い出す。
【0149】
ここで、積和演算回路30において、第iの重み(wi)と第iの入力信号(xi)とを乗じた値(wi・xi)は、第1比較端子242から第iの係数回路240-iのポジティブ入力端子252へ流れる電流(IP_i)と、第2比較端子244から第iの係数回路240-iへ流れる電流(IN_i)との電流差(IP_i-IN_i)で表される。
【0150】
図17の例では、I
P_i=I
1、I
N_i=I
2となり、電流差(I
P_i-I
N_i)は、正の値となる。従って、x
i=+1、w
i=+1の場合、積和演算回路30は、第iの重み(w
i)と第iの入力信号(x
i)とを乗じた値(w
i・x
i)として、+1を算出することができる。
【0151】
図18は、x
i=-1およびw
i=+1の場合のクロススイッチ238-iおよび係数回路240-iの演算動作を説明するための図である。
【0152】
第iの入力信号(xi)が-1である場合、第iクロススイッチ238-iは、リバース状態とされる。第iの重み(wi)が+1である場合、第iの係数回路240-iは、第1状態とされる。すなわち、第iの重み(wi)が+1である場合、第1定電流源62は、第1電流値(I1)の電流を流すように設定され、第2定電流源64は、第2電流値(I2)の電流を流すように設定される。
【0153】
従って、第iの入力信号(xi)が-1であり且つ第iの重み(wi)が+1である場合、第iの係数回路240-iは、第1比較端子242から第2電流値(I2)の電流を吸い出し、第2比較端子244から第1電流値(I1)の電流を吸い出す。
【0154】
図18の例では、I
P_i=I
2、I
N_i=I
1となり、電流差(I
P_i-I
N_i)は、負の値となる。従って、x
i=-1、w
i=+1の場合、積和演算回路30は、第iの重み(w
i)と第iの入力信号(x
i)とを乗じた値(w
i・x
i)として、-1を算出することができる。
【0155】
図19は、x
i=+1およびw
i=-1の場合の第iのクロススイッチ238-iおよび第iの係数回路240-iの演算動作を説明するための図である。
【0156】
第iの入力信号(xi)が+1である場合、第iクロススイッチ238-iは、ストレート状態とされる。第iの重み(wi)が-1である場合、第iの係数回路240-iは、第2状態とされる。すなわち、第iの重み(wi)が-1である場合、第1定電流源62は、第2電流値(I2)の電流を流すように設定され、第2定電流源64は、第1電流値(I1)の電流を流すように設定される。
【0157】
従って、第iの入力信号(xi)が+1であり且つ第iの重み(wi)が-1である場合、第iの係数回路240-iは、第1比較端子242から第2電流値(I2)の電流を吸い出し、第2比較端子244から第1電流値(I1)の電流を吸い出す。
【0158】
図19の例では、I
P_i=I
2、I
N_i=I
1となり、電流差(I
P_i-I
N_i)は、負の値となる。従って、x
i=+1、w
i=-1の場合、積和演算回路30は、第iの重み(w
i)と第iの入力信号(x
i)とを乗じた値(w
i・x
i)として、-1を算出することができる。
【0159】
図20は、x
i=-1およびw
i=-1の場合の第iのクロススイッチ238-iおよび第iの係数回路240-iの演算動作を説明するための図である。
【0160】
第iの入力信号(xi)が-1である場合、第iクロススイッチ238-iは、リバース状態とされる。第iの重み(wi)が-1である場合、第iの係数回路240-iは、第2状態とされる。すなわち、第iの重み(wi)が-1である場合、第1定電流源62は、第2電流値(I2)の電流を流すように設定され、第2定電流源64は、第1電流値(I1)の電流を流すように設定される。
【0161】
従って、第iの入力信号(xi)が-1であり且つ第iの重み(wi)が-1である場合、第iの係数回路240-iは、第1比較端子242から第1電流値(I1)の電流を吸い出し、第2比較端子244から第2電流値(I2)の電流を吸い出す。
【0162】
図20の例では、I
P_i=I
1、I
N_i=I
2となり、電流差(I
P_i-I
N_i)は、正の値となる。従って、x
i=-1、w
i=-1の場合、積和演算回路30は、第iの重み(w
i)と第iの入力信号(x
i)とを乗じた値(w
i・x
i)として、+1を算出することができる。
【0163】
図21は、コンパレータ236の動作、および、第1抵抗232および第2抵抗234の電圧および電流を説明するための図である。
【0164】
本実施形態において、コンパレータ236は、第1抵抗232に発生する正側電圧(VP)から、第2抵抗234に発生する負側電圧(VN)を減じた差電圧(Vd)が0以上である場合、+1を表す出力信号(y)を出力する。また、本実施形態において、コンパレータ236は、差電圧(Vd)が0より小さい場合、-1を表す出力信号(y)を出力する。
【0165】
第1抵抗232および第2抵抗234の抵抗値をRとする。この場合、正側電圧(VP)は、Rと、正側電流(IP)とを乗じた電圧となる。また、負側電圧(VN)は、Rと、負側電流(IN)とを乗じた電圧となる。
【0166】
従って、差電圧(Vd)は、式(21)のように表すことができる。
【0167】
Vd=VP-VN=R×(IP-IN)…(21)
【0168】
正側電流(IP)は、第1比較端子242に流れる電流である。すなわち、正側電流(IP)は、M個のクロススイッチ238のポジティブ入力端子252に流れる電流の合計値である。従って、正側電流(IP)は、(IP_1+IP_2+…+IP_M)となる。
【0169】
負側電流(IN)は、第2比較端子244に流れる電流である。すなわち、負側電流(IN)は、M個のクロススイッチ238のネガティブ入力端子254に流れる電流の合計値である。従って、負側電流(IN)は、(IN_1+IN_2+…+IN_M)となる。
【0170】
従って、差電圧(Vd)は、式(22)のように表される。
【0171】
Vd=R×{(IP_1+IP_2+…+IP_M)-(IN_1+IN_2+…+IN_M)}
=R×{(IP_1-IN_1)+…+(IP_i-IN_i)+…+(IP_M-IN_M)}…(22)
【0172】
ここで、
図17~
図20で説明したように、電流差(I
P_i-I
N_i)は、第iの重み(w
i)と第iの入力信号(x
i)とを乗じた値(w
i・x
i)を表す。
【0173】
従って、差電圧(Vd)は、式(23)のように表すことができる。
【0174】
Vd∝{(w1・x1)+…+(wi・xi)+…+(wM・xM)}…(23)
【0175】
式(23)の右辺は、M個の入力信号とM個の重みとの積和演算(乗累算)値を表す。
【0176】
以上のように、差電圧(Vd)は、M個の入力信号とM個の重みとの積和演算(乗累算)値に比例する。出力信号(y)は、差電圧(Vd)が、0より小さいか、または、0以上であるか否かを表す2値信号である。従って、出力信号(y)は、M個の入力信号とM個の重みとの積和演算(乗累算)値が、0より小さいか、または、0以上であるか否かを表す。このように、本実施形態に係る積和演算回路30は、M個の入力信号とM個の重みとの積和演算(乗累算)をアナログ処理により実行することができる。
【0177】
以上のように本実施形態に係る学習重み記憶回路20は、シフトレジスタ52を用いることにより、連続値である重みを精度良く記憶することができる。さらに、学習重み記憶回路20は、シフトレジスタ52をシフトさせることにより重みを更新するので、重みを微小量ずつ精度良く増減させることができる。従って、本実施形態に係る学習重み記憶回路20は、ニューラルネットワークの学習時において、複数の重みのそれぞれを精度良く高速に学習させることができる。
【0178】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0179】
10 ニューラルネットワーク装置
14 演算回路
16 推論重み記憶回路
20 学習重み記憶回路
22 学習制御回路
40 重み記憶回路
42 初期化回路
44 更新制御回路
46 読出制御回路
50 記憶回路
52 シフトレジスタ
60 セル
72 書込回路
74 消去制御回路
76 書込選択回路
78 値選択回路
80 更新選択回路
82 シフト制御回路
84 方向制御回路
86 セル数制御回路
88 更新設定回路
90 読出回路
92 グラウンドスイッチ
94 正側抵抗
96 正側スイッチ
98 負側抵抗
100 負側スイッチ
102 正側出力端子
104 負側出力端子
114 比較回路
112 読出対象選択回路