(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-26
(45)【発行日】2024-02-05
(54)【発明の名称】ニューラルネットワーク装置、情報処理装置およびプログラム
(51)【国際特許分類】
G06N 3/063 20230101AFI20240129BHJP
G06N 3/08 20230101ALI20240129BHJP
【FI】
G06N3/063
G06N3/08
(21)【出願番号】P 2021011226
(22)【出願日】2021-01-27
【審査請求日】2023-02-07
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】丸亀 孝生
(72)【発明者】
【氏名】水島 公一
(72)【発明者】
【氏名】野村 久美子
(72)【発明者】
【氏名】西 義史
【審査官】山本 俊介
(56)【参考文献】
【文献】特開2019-200553(JP,A)
【文献】特開2019-53563(JP,A)
【文献】特開2019-28746(JP,A)
【文献】特開平4-216162(JP,A)
【文献】米国特許出願公開第2020/0160159(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
それぞれが第1分解能の値で表される複数の重み、および、それぞれがターナリの値で表される複数のバイアスを用いたニューラルネットワークに従った演算処理を実行する演算回路と、
前記ニューラルネットワークの学習時において、前記演算回路による前記ニューラルネットワークに従った演算処理の結果に基づき、前記複数の重みのそれぞれおよび前記複数のバイアスのそれぞれを更新する学習処理を複数回繰り返す学習制御回路と、
それぞれの回の前記学習処理において、前記複数のバイアスのうちの予め設定された第1確率でランダムに選択されたバイアスを、前記ターナリにおける中央値にリセットするバイアスリセット回路と、
を備えるニューラルネットワーク装置。
【請求項2】
前記複数の重みに一対一で対応し、それぞれが前記第1分解能より高い第2分解能で表される複数の学習重みを記憶する学習重み記憶回路と、
前記複数のバイアスに一対一で対応し、それぞれが前記ターナリより高い第3分解能で表される複数の学習バイアスを記憶する学習バイアス記憶回路と、
前記複数の重みのそれぞれは、前記複数の学習重みのうちの対応する学習重みを前記第1分解能の値に変換した値であり、
前記複数のバイアスのそれぞれは、前記複数の学習バイアスのうちの対応する学習バイアスを前記ターナリに変換した値である
請求項1に記載のニューラルネットワーク装置。
【請求項3】
それぞれの前記学習処理において、前記学習制御回路は、
前記複数の重みおよび前記複数のバイアスを用いて前記ニューラルネットワークに従った演算処理の演算結果と、教師情報との誤差情報を、前記ニューラルネットワークに対して逆伝播させることにより前記複数の重みのそれぞれおよび前記複数のバイアスのそれぞれについての誤差値を算出し、
前記学習重み記憶回路に記憶された前記複数の学習重みのそれぞれに、対応する前記誤差値を加算し、
前記学習バイアス記憶回路に記憶された前記複数の学習バイアスのそれぞれに、対応する前記誤差値を加算する
請求項2に記載のニューラルネットワーク装置。
【請求項4】
それぞれの前記学習処理において、前記バイアスリセット回路は、前記複数のバイアスのうちの前記第1確率でランダムに選択されたバイアスについて、前記誤差値が加算された後の学習バイアスを、前記ターナリにおける中央値に変換される値にリセットする
請求項3に記載のニューラルネットワーク装置。
【請求項5】
前記複数の重みのそれぞれは、バイナリで表される
請求項1から4の何れか1項に記載のニューラルネットワーク装置。
【請求項6】
前記演算回路は、複数の演算入力値を取得し、取得した前記複数の演算入力値を前記ニューラルネットワークに与えて、1個または複数の演算結果値を算出し、算出した前記1個または複数の演算結果値を出力する
請求項1から5の何れか1項に記載のニューラルネットワーク装置。
【請求項7】
前記複数の演算入力値のそれぞれは、バイナリで表され、
請求項6に記載のニューラルネットワーク装置。
【請求項8】
前記1個または複数の演算結果値のそれぞれは、バイナリで表される
請求項6または7に記載のニューラルネットワーク装置。
【請求項9】
前記演算回路は、複数の積和演算回路を含み、
前記複数の積和演算回路のそれぞれは、前記ニューラルネットワークに含まれる何れかの積和演算処理を実行し、
前記複数の積和演算回路のうちの何れかの積和演算回路は、
M個(Mは2以上の整数)の入力値が入力され、前記複数の重みのうちの対応するM個の重みおよび前記複数のバイアスのうちの対応する所定個のバイアスが設定され、
前記M個の入力値と前記M個の重みとを積和演算した積和演算値と、前記所定個のバイアスとを加算した出力値を出力する
請求項6から8の何れか1項に記載のニューラルネットワーク装置。
【請求項10】
前記M個の重みのそれぞれは、-1または+1を表し、
前記所定個のバイアスのそれぞれは、-1、0または+1を表し、
前記複数の積和演算回路のそれぞれは、
前記M個の重みのそれぞれと前記M個の入力値のうちの対応する入力値とを乗算することにより生成されるM個の乗算値、および、前記所定個のバイアスのうち、正となる値群を合計した値の絶対値を表す正側信号を生成する正側回路と、
前記M個の乗算値および前記所定個のバイアスのうち、負となる値群を合計した値の絶対値を表す負側信号を生成する負側回路と、
前記正側信号と前記負側信号との大小を比較し、比較結果を前記出力値として出力するコンパレータ回路と、
を有する請求項9に記載のニューラルネットワーク装置。
【請求項11】
それぞれが第1分解能の値で表される複数の重み、および、それぞれがターナリの値で表される複数のバイアスを用いたニューラルネットワークを学習させる情報処理装置であって、
プロセッサを備え、
前記プロセッサは、
前記ニューラルネットワークの学習時において、前記ニューラルネットワークに従った演算処理の結果に基づき、前記複数の重みのそれぞれおよび前記複数のバイアスのそれぞれを更新する学習処理を複数回繰り返し、
それぞれの回の前記学習処理において、前記複数のバイアスのうちの予め設定された第1確率でランダムに選択されたバイアスを、前記ターナリにおける中央値にリセットする
情報処理装置。
【請求項12】
コンピュータを、それぞれが第1分解能の値で表される複数の重み、および、それぞれがターナリの値で表される複数のバイアスを用いたニューラルネットワークを学習させる情報処理装置として機能させるためのプログラムであって、
前記情報処理装置に、
前記ニューラルネットワークの学習時において、前記ニューラルネットワークに従った演算処理の結果に基づき、前記複数の重みのそれぞれおよび前記複数のバイアスのそれぞれを更新する学習処理を複数回繰り返させ、
それぞれの回の前記学習処理において、前記複数のバイアスのうちの予め設定された第1確率でランダムに選択されたバイアスを、前記ターナリにおける中央値にリセットさせる
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、ニューラルネットワーク装置、情報処理装置およびプログラムに関する。
【背景技術】
【0002】
近年、ハードウェアで実現したニューラルネットワーク装置が研究されている。ハードウェアで実現したニューラルネットワーク装置に含まれる各ユニットは、電気回路により実現される。電気回路により実現されるユニットは、積和演算(乗累算)およびバイアスの加算を実行する。すなわち、電気回路により実現されたユニットは、前段のユニットから受け取った複数の入力値のそれぞれに対して重みを乗算し、重みを乗算した後の複数の乗算値とバイアスとを加算する。
【0003】
また、ハードウェアで実現したニューラルネットワーク装置は、2値で表された重みを用いることができる。これにより、ニューラルネットワーク装置は、推論を高速に実行することができる。
【0004】
しかし、推論で用いる重みが2値でよい場合であっても、学習処理において用いられる重みは、精度を高くするために、微小量で更新をしなければならない。従って、学習処理において用いられる重みは、連続値(多値)であることが好ましい。例えば、学習時における重みは、1000階調程度、例えば、10ビット程度の精度が必要と考えられる。
【0005】
また、ニューラルネットワークの学習装置は、学習させたい入力データを順方向処理して出力値を算出する。続いて、学習装置は、順方向処理により算出した出力値と教師値との誤差値を算出し、誤差値を逆方向処理して、複数の重みのそれぞれおよび複数のバイアスのそれぞれの更新値を算出する。そして、学習装置は、複数の重みのそれぞれおよび複数のバイアスのそれぞれに、対応する更新値を加算する。学習装置は、複数の入力データについて、このような学習処理を繰り返して実行する。
【0006】
学習装置は、出力値と教師値との誤差を評価関数に与えて、複数の入力データの全体について誤差の大きさを評価する。ニューラルネットワーク装置は、誤差が小さくなるほど、推論の正答率が高くなる。誤差がゼロまたは誤差がゼロに近くなることを、学習が収束するという。学習装置は、学習が収束するまで、学習処理を繰り返して実行する。
【0007】
ところで、学習装置は、より短い時間で学習を収束させることが好ましい。すなわち、学習装置は、より少ない学習回数で学習が収束するように、学習処理を実行することが好ましい。
【先行技術文献】
【特許文献】
【0008】
【文献】特許第6183980号
【文献】米国特許出願公開2018/0232634号明細書
【文献】特開2017-211972公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明が解決しようとする課題は、少ない学習回数で精度良く学習させることができるニューラルネットワーク装置、情報処理装置およびプログラムを提供することにある。
【課題を解決するための手段】
【0010】
実施形態に係るニューラルネットワーク装置は、演算回路と、学習制御回路と、バイアスリセット回路と、を備える。前記演算回路は、それぞれが第1分解能の値で表される複数の重み、および、それぞれがターナリの値で表される複数のバイアスを用いたニューラルネットワークに従った演算処理を実行する。前記学習制御回路は、前記ニューラルネットワークの学習時において、前記演算回路による前記ニューラルネットワークに従った演算処理の結果に基づき、前記複数の重みのそれぞれおよび前記複数のバイアスのそれぞれを更新する学習処理を複数回繰り返す。前記バイアスリセット回路は、それぞれの回の前記学習処理において、前記複数のバイアスのうちの予め設定された第1確率でランダムに選択されたバイアスを、前記ターナリにおける中央値にリセットする。
【図面の簡単な説明】
【0011】
【
図1】実施形態に係るニューラルネットワーク装置の構成を示す図。
【
図2】ニューラルネットワークの1つのレイヤを説明するための図。
【
図5】学習処理の回数に対する誤差値の積分値の第1例を示す図。
【
図6】学習処理の回数に対する誤差値の積分値の第2例を示す図。
【
図7】リセット確率に対する収束回数の第1例を示す図。
【
図8】リセット確率に対する収束回数の第2例を示す図。
【
図9】リセット確率に対する収束回数の第3例を示す図。
【
図11】x
i=+1およびw
i=+1の場合の演算動作の説明図。
【
図12】x
i=-1およびw
i=+1の場合の演算動作の説明図。
【
図13】x
i=+1およびw
i=-1の場合の演算動作の説明図。
【
図14】x
i=-1およびw
i=-1の場合の演算動作の説明図。
【
図17】実施形態に係るコンピュータのハードウェア構成の一例を示す図。
【発明を実施するための形態】
【0012】
以下、図面を参照しながら実施形態に係るニューラルネットワーク装置10について説明する。
【0013】
図1は、実施形態に係るニューラルネットワーク装置10の構成を示す図である。ニューラルネットワーク装置10は、演算回路12と、推論重み記憶回路14と、推論バイアス記憶回路16と、学習重み記憶回路22と、学習バイアス記憶回路24と、学習制御回路26と、バイアスリセット回路28とを備える。
【0014】
演算回路12は、複数の重みおよび複数のバイアスを用いたニューラルネットワークに従った演算処理を実行する。演算回路12は、演算対象である複数の演算入力値を受け取り、受け取った複数の演算入力値に対して演算処理を実行して、演算結果値を出力する。なお、演算回路12は、複数の演算結果値を出力してもよい。本実施形態において、演算回路12は、アナログ回路を含む電気回路により実現される。
【0015】
推論重み記憶回路14は、演算回路12によるニューラルネットワークに従った演算処理において用いられる複数の重みを記憶する。推論重み記憶回路14は、例えば、L個(Lは、2以上の整数)の重み(w1,…,wL)を記憶する。複数の重みのそれぞれは、第1分解能の値で表される。第1分解能は、2以上の整数で表される分解能である。本実施形態において、複数の重みのそれぞれは、バイナリ(2値)で表される。例えば、本実施形態において、複数の重みのそれぞれは、-1または+1の何れかの値となる。これにより、演算回路12は、それぞれがバイナリで表された複数の重みを用いて、アナログ回路によりニューラルネットワークに従った演算処理を高速に実行することができる。
【0016】
推論バイアス記憶回路16は、演算回路12によるニューラルネットワークに従った演算処理において用いられる複数のバイアスを記憶する。推論バイアス記憶回路16は、例えば、H個(Hは、2以上の整数)のバイアス(b1,…,bH)を記憶する。複数のバイアスのそれぞれは、ターナリ(3値)の値で表される。本実施形態において、複数のバイアスのそれぞれは、-1、0または+1の何れかの値となる。これにより、演算回路12は、それぞれがターナリで表された複数のバイアスを用いて、アナログ回路によりニューラルネットワークに従った演算処理を高速に実行することができる。
【0017】
なお、ターナリにおける最も小さい値(本実施形態において-1)は、バイナリにおける小さい方の値(本実施形態において-1)と同一のレベルを表す。また、ターナリにおける最も大きい値(本実施形態において+1)は、バイナリにおける大きい方の値(本実施形態において+1)と同一のレベルを表す。そして、ターナリにおける中央値(本実施形態において0)は、バイナリにおける小さい方の値(本実施形態において-1)と、大きい方の値(本実施形態において+1)との中間値、または、バイナリにおける値が無効であることを表す。
【0018】
学習重み記憶回路22は、ニューラルネットワークの学習処理において用いられる複数の学習重みを記憶する。複数の学習重みは、複数の重みに一対一で対応する。複数の学習重みのそれぞれは、第1分解能より高い第2分解能で表される。学習重み記憶回路22は、例えば、L個の重みに一対一で対応する、L個の学習重み(w1,…,wL)を記憶する。学習重み記憶回路22に記憶された複数の学習重みのそれぞれは、例えば、符号付の10ビットの精度で表される。
【0019】
学習バイアス記憶回路24は、ニューラルネットワークの学習処理において用いられる複数の学習バイアスを記憶する。複数の学習バイアスは、複数のバイアスに一対一で対応する。複数の学習バイアスは、それぞれがターナリより高い第3分解能で表される。なお、第3分解能は、第2分解能と同一であってもよい。学習バイアス記憶回路24は、例えば、H個のバイアスに一対一で対応する、H個の学習バイアス(b1,…,bH)を記憶する。学習バイアス記憶回路24に記憶された複数の学習バイアスのそれぞれは、例えば、符号付の10ビットの精度で表される。
【0020】
学習制御回路26は、ニューラルネットワークの学習時の処理を制御する。学習制御回路26は、学習開始時において、学習重み記憶回路22に記憶された複数の学習重みおよび学習バイアス記憶回路24に記憶された複数の学習バイアスを初期化させる。
【0021】
また、学習制御回路26は、学習重み記憶回路22に対して、記憶している複数の学習重みのそれぞれを2値化した複数の重みを、推論重み記憶回路14へと転送させる。これにより、推論重み記憶回路14は、複数の学習重みのそれぞれを2値化した複数の重みを記憶することができる。さらに、学習制御回路26は、学習バイアス記憶回路24に対して、記憶している複数の学習バイアスのそれぞれを3値化した複数のバイアスを、推論バイアス記憶回路16へと転送させる。これにより、推論バイアス記憶回路16は、複数の学習バイアスのそれぞれを3値化した複数のバイアスを記憶することができる。
【0022】
また、学習制御回路26は、演算回路12によるニューラルネットワークに従った演算処理の演算結果に基づき、複数の重みのそれぞれおよび複数のバイアスのそれぞれを更新する学習処理を複数回繰り返す。
【0023】
それぞれの学習処理において、学習制御回路26は、複数の重みおよび複数のバイアスを用いたニューラルネットワークに従った演算処理の演算結果と教師情報との誤差情報を算出する。さらに、学習制御回路26は、算出した誤差情報をニューラルネットワークに対して逆伝播させることにより複数の重みのそれぞれおよび複数のバイアスのそれぞれについての誤差値を算出する。複数の重みのそれぞれの誤差値は、学習重みの分解能である第2分解能(例えば符号付の10ビット)で表される。また、複数のバイアスのそれぞれの誤差値は、学習バイアスの分解能である第3分解能(例えば符号付の10ビット)で表される。
【0024】
続いて、学習制御回路26は、学習重み記憶回路22に記憶された複数の学習重みのそれぞれに、対応する誤差値を加算する。また、学習制御回路26は、学習バイアス記憶回路24に記憶された複数の学習バイアスのそれぞれに、対応する誤差値を加算する。そして、学習制御回路26は、学習重み記憶回路22に記憶された複数の学習重みのそれぞれを2値化した複数の重みを、推論重み記憶回路14に記憶させる。また、学習制御回路26は、学習バイアス記憶回路24に記憶された複数の学習バイアスのそれぞれを3値化した複数のバイアスを推論バイアス記憶回路16に記憶させる。そして、学習制御回路26は、新たな複数の重みおよび新たな複数のバイアスを用いて、次の回の学習処理を実行する。
【0025】
学習制御回路26は、以上の学習処理を学習が収束するまで繰り返す。これにより、学習制御回路26は、複数の学習重みのそれぞれおよび複数の学習バイアスのそれぞれを微小量ずつ増減させて、ニューラルネットワークを精度良く学習させることができる。
【0026】
バイアスリセット回路28は、複数回繰り返される学習処理におけるそれぞれの回において、複数のバイアスのうちの予め設定された第1確率で選択されたバイアスを、ターナリにおける中央値にリセットする。本実施形態においては、バイアスリセット回路28は、複数のバイアスのうちの選択されたバイアスを、0にリセットする。
【0027】
例えば、それぞれの学習処理において、バイアスリセット回路28は、学習バイアス記憶回路24から推論バイアス記憶回路16へと3値化した複数のバイアスを転送する前に、複数のバイアスのうちの第1確率で選択されたバイアスについて、誤差値が加算された後の学習バイアスを、ターナリにおける中央値に変換される値にリセットする。本実施形態においては、バイアスリセット回路28は、選択されたバイアスに対応する学習バイアスを、ターナリにした場合に0に変換される値にリセットする。
【0028】
なお、バイアスリセット回路28は、複数のバイアスを均等の確率でリセットする。バイアスリセット回路28は、複数のバイアスを均等の確率でリセットすることができれば、それぞれの学習処理において、2個以上のバイアスが同時にリセットされる場合があっても、何れのバイアスもリセットされない場合があってもよい。
【0029】
また、第1確率は、例えば、0.01%から0.1%といった微小の確率である。例えば、第1確率が0.1%である場合、バイアスリセット回路28は、複数のバイアスのそれぞれを、1000回に1回の確率でランダムに0にリセットしてもよい。また、第1確率が0.1%であり、ニューラルネットワークが1000個のバイアスを用いる場合、バイアスリセット回路28は、それぞれの学習処理において、1000個のうちの1個の確率でバイアスをランダムに選択し、選択したバイアスを0にリセットしてもよい。また、第1確率が0.1%であり、ニューラルネットワークが100個のバイアスを用いる場合、バイアスリセット回路28は、10回の学習処理において1個の確率でバイアスをランダムに選択し、選択したバイアスを0にリセットしてもよい。
【0030】
バイアスリセット回路28は、学習時において、このような処理を実行することにより、学習が収束するまでの学習回数を少なくすることができる。
【0031】
そして、推論時において、演算回路12は、学習が完了した後のそれぞれがバイナリで表された複数の重みおよびそれぞれがターナリで表された複数のバイアスを用いたニューラルネットワークに従った演算処理を実行する。これにより、推論時において、演算回路12は、高速で精度良い演算処理を実行することができる。
【0032】
図2は、ニューラルネットワークの1つのレイヤを説明するための図である。ニューラルネットワークは、例えば、
図2に示すようなレイヤを1個または複数個含む。演算回路12は、
図2に示すようなレイヤに対応する演算を実行する回路を含む。
【0033】
図2に示すレイヤは、M個(Mは2以上の整数)の入力値(x
1~x
M)を受け取り、N個(Nは2以上の整数)の出力値(y
1~y
N)を出力する。演算回路12は、例えば、
図2に示すようなレイヤの演算を実行するために、N個の出力値(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)を受け取る。
【0034】
図3は、第1の積和演算回路30-1による積和演算を説明する図である。演算回路12は、複数の積和演算回路30を含む。複数の積和演算回路30のそれぞれは、ニューラルネットワークに含まれる何れかの積和演算処理を実行する。
【0035】
複数の積和演算回路30のうちの第1の積和演算回路30-1は、M個の入力値(x
1,x
2,…,x
M)が入力される。また、第1の積和演算回路30-1は、推論重み記憶回路14に記憶された複数の重みのうちの、M個の入力値に対応するM個の重み(w
1,w
2,…,w
M)が設定される。第1の積和演算回路30-1は、推論バイアス記憶回路16に記憶された複数のバイアスのうちの、第1の積和演算回路30-1に対応する所定個のバイアス(b)が設定される。なお、
図3の例において、第1の積和演算回路30-1は、1個のバイアスが設定されているが、2個以上のバイアスが設定されてもよい。
【0036】
第1の積和演算回路30-1は、M個の入力値とM個の重みとを積和演算した積和演算値と、所定個のバイアスとを加算した値を、2値化した出力値を出力する。より具体的には、例えば、第1の積和演算回路30-1は、下記式(1)の演算を実行する。
【数1】
【0037】
式(1)において、yは、第1の積和演算回路30-1の出力値を表す。xiは、M個の入力値のうちのi番目(iは、1以上、M以下の整数)の入力値を表す。wiは、M個の重みのうちのi番目の入力値に乗算される重みを表す。式(1)において、μは、M個の入力値とM個の重みとを積和演算した積和演算値と、所定個のバイアスとを加算した値を表す。式(1)において、f(μ)は、カッコ内の値であるμを所定の閾値で二値化する関数を表す。
【0038】
なお、式(1)は、第1の積和演算回路30-1に1個のバイアスが設定されている例を示している。複数個のバイアスが設定されている場合、式(1)のμは、1個のbを加算する項に代えて、複数個のbを加算する項が含まれる。
【0039】
図4は、実施形態に係るニューラルネットワーク装置10の学習時の処理の流れを示すフローチャートである。ニューラルネットワーク装置10は、学習時において、
図4に示す流れで処理を実行する。
【0040】
まず、S11において、学習制御回路26は、学習重み記憶回路22に記憶された複数の学習重みおよび学習バイアス記憶回路24に記憶された複数の学習バイアスを初期化させる。例えば、学習制御回路26は、10ビット精度で表された複数の学習重みのそれぞれ、および、複数の学習バイアスのそれぞれをランダムな値に設定する。
【0041】
続いて、S12において、学習制御回路26は、推論重み記憶回路14に、それぞれがバイナリで表された複数の重みを設定する。これとともに、学習制御回路26は、推論バイアス記憶回路16に、それぞれがターナリで表された複数のバイアスを設定する。より具体的には、学習制御回路26は、学習重み記憶回路22に記憶された複数の学習重みのそれぞれを2値化した複数の重みを、推論重み記憶回路14に転送させる。また、学習制御回路26は、学習バイアス記憶回路24に記憶された複数の学習バイアスのそれぞれを3値化した複数のバイアスを、推論バイアス記憶回路16に転送させる。
【0042】
続いて、S13において、学習制御回路26は、学習用の演算入力値を表す学習用入力情報、および、正解の演算結果値を表す教師情報のペアを取得する。なお、学習制御回路26は、S13において、複数の学習用入力情報と、教師情報とを含むデータセットを取得してもよい。
【0043】
続いて、S14において、学習制御回路26は、学習用入力情報を演算回路12に与えて、演算回路12に、推論重み記憶回路14に記憶された複数の重みおよび推論バイアス記憶回路16に記憶された複数のバイアスを用いてニューラルネットワークに従った順方向の演算処理を実行させる。
【0044】
続いて、S15において、学習制御回路26は、S14の演算処理の演算結果と対応する教師情報との誤差情報を、ニューラルネットワークに対して逆伝播させることにより、複数の重みのそれぞれおよび複数のバイアスのそれぞれの誤差値を算出する。すなわち、学習制御回路26は、誤差逆伝播法を用いて、複数の重みのそれぞれおよび複数のバイアスのそれぞれの誤差値を算出する。なお、S13で複数の学習用入力情報を含むデータセットを取得した場合、学習制御回路26は、複数の学習用入力情報のそれぞれについて、S14およびS15の処理を実行する。
【0045】
続いて、S16において、学習制御回路26は、学習が収束したか否かを判断する。例えば、学習制御回路26は、複数の重みおよび複数のバイアスの誤差値を合計した積分値を算出し、算出した積分値が0または予め定められた値以下となった場合に学習が収束したと判断する。なお、S13で複数の学習用入力情報を含むデータセットを取得した場合、学習制御回路26は、複数の学習用入力情報について算出した複数の誤差値の全てを合計した積分値を算出し、算出した積分値が0または予め定められた値以下となった場合に学習が収束したと判断する。
【0046】
学習制御回路26は、学習が収束した場合(S16のYes)、本フローを終了する。学習制御回路26は、学習が収束していない場合(S16のNo)、処理をS17に進める。
【0047】
続いて、S17において、学習制御回路26は、学習重み記憶回路22に記憶されている複数の学習重みのそれぞれを、対応する重みの誤差値に基づき更新する。例えば、学習制御回路26は、学習重み記憶回路22に記憶された複数の学習重みのそれぞれに、対応する重みの誤差値を加算する。さらに、学習制御回路26は、学習バイアス記憶回路24に記憶されている複数の学習バイアスのそれぞれを、対応するバイアスの誤差値に基づき更新する。例えば、学習制御回路26は、学習バイアス記憶回路24に記憶された複数の学習バイアスのそれぞれに、対応するバイアスの誤差値を加算する。
【0048】
続いて、S18において、バイアスリセット回路28は、複数のバイアスのうちの予め設定された第1確率でリセット対象のバイアスを選択する。そして、バイアスリセット回路28は、選択したバイアスに対応する学習バイアスを、ターナリにおける中央値に変換される値にリセットする。例えば、バイアスリセット回路28は、選択したバイアスに対応する学習バイアスを、ターナリにした場合に0に変換される値にリセットする。
【0049】
そして、学習制御回路26は、S18の処理を終えると、処理をS12に戻し、次の学習処理を実行する。
【0050】
以上の処理を実行することにより、学習制御回路26は、演算回路12によるニューラルネットワークに従った演算処理の演算結果に基づき、複数の重みのそれぞれおよび複数のバイアスのそれぞれを更新する学習処理を複数回繰り返すことができる。さらに、バイアスリセット回路28は、複数回繰り返される学習処理におけるそれぞれの回において、複数のバイアスのうちの予め設定された第1確率で選択されたバイアスを、ターナリにおける中央値にリセットすることができる。
【0051】
図5および
図6は、バイアスをリセットしなかった場合およびバイアスをリセットした場合における、学習処理の回数に対する誤差値の積分値を表すシミュレーション結果を示す図である。
図5および
図6は、横軸に学習処理の回数を表し、縦軸に誤差値の積分値を表す。
【0052】
図5および
図6のシミュレーションにおいて用いた対象ニューラルネットワークは、入力レイヤと、中間レイヤと、出力レイヤとの3レイヤ構成である。
【0053】
入力レイヤは、16個の演算入力値を取得する。16個の演算入力値のそれぞれは、-1または+1の何れかをとる。ただし、入力レイヤは、演算入力値をそのまま出力する。従って、対象ニューラルネットワークは、実質的に2レイヤ構成である。
【0054】
中間レイヤは、31個のノードを有する。中間レイヤの31個のノードのそれぞれは、入力レイヤから出力された16個の値を、16個の入力値として取得する。中間レイヤの31個のノードのそれぞれは、16個の入力値のそれぞれと対応する重みとを乗算した乗算値を算出し、さらに、16個の乗算値と、ノードに対応するバイアスとを加算した中間値を出力する。それぞれの重みは、-1または+1を取る。それぞれのバイアスは、-1、0または+1をとる。
【0055】
さらに、31個のノードのそれぞれは、中間値を2値化した出力値を出力する。31個のノードのそれぞれは、中間値が0以上である場合、出力値を+1とし、中間値が0より小さい場合には、出力値を-1とする。
【0056】
出力レイヤは、16個のノードを有する。出力レイヤの16個のノードのそれぞれは、中間レイヤから出力された31個の値を、31個の入力値として取得する。出力レイヤの31個のノードのそれぞれは、31個の入力値のそれぞれと対応する重みとを乗算した乗算値を算出し、さらに、31個の乗算値と、ノードに対応するバイアスとを加算した中間値を出力する。出力レイヤの31個のノードのそれぞれは、他の点については、中間レイヤに含まれるノードと同一である。そして、出力レイヤは、16個のノードから出力された値を、16個の演算結果値として出力する。
【0057】
対象ニューラルネットワークの学習は、対象ニューラルネットワークにおいて用いられる複数の重みに一対一で対応する複数の学習重み、および、複数のバイアスに一対一に対応する複数の学習バイアスを用いる。複数の学習重みのそれぞれおよび複数の学習重みのそれぞれは、-1から+1の範囲を表す符号付の10ビット精度の値であり、浮動小数点で表される。
【0058】
対象ニューラルネットワークの学習は、誤差逆伝播法に従って、複数の学習重みおよび複数の学習バイアスを更新することにより行われる。学習において、複数の重みのそれぞれは、複数の学習重みのうちの対応する学習重みを2値化した値に設定される。また、学習において、複数のバイアスのそれぞれは、複数の学習バイアスのうちの対応する学習バイアスを3値化した値に設定される。
【0059】
対象ニューラルネットワークの学習は、誤差逆伝播法に従って、複数の学習重みのそれぞれの誤差値および複数の学習バイアスのそれぞれの誤差値が算出され、算出された誤差値を対応する学習重みまたは対応する学習バイアスに加算する。学習において用いる微分関数は、ハイパボリックタンジェントの微分関数である。誤差値は、学習重みおよび学習バイアスと同一の精度で表される。
【0060】
上述のような対象ニューラルネットワークを上述のような学習方法で学習させた場合、
図5および
図6に示すように、バイアスをリセットした場合の方が、バイアスをリセットしない場合よりも、少ない学習回数で学習が収束する。なお、
図5および
図6は、バイアスを0.02%の確率でリセットした例を示している。
【0061】
なお、
図5および
図6の違いは、複数の重みおよび複数のバイアスに設定される初期値の相違である。他の条件および設定は、
図5および
図6で同一である。
【0062】
図7、
図8および
図9は、第1確率(バイアスをリセットする確率)に対する収束までの学習処理の回数を示すシミュレーション結果を示す図である。対象ニューラルネットワークおよび学習方法は、
図5および
図6の場合と同一である。
【0063】
図7、
図8および
図9の違いは、複数の重みおよび複数のバイアスに設定される初期値の相違である。
図7、
図8および
図9の楕円で囲った領域で、収束するまでの学習処理の回数が少なくなっていることが分かる。従って、シミュレーションをした対象ニューラルネットワークおよび学習方法において、第1確率は、0.01%以上0.1%以下の範囲で設定することが好ましい。
【0064】
以上のように、本実施形態に係るニューラルネットワーク装置10は、それぞれの回の学習処理において、複数のバイアスのうちの予め設定された第1確率でランダムに選択されたバイアスを、ターナリにおける中央値にリセットする。これにより、本実施形態に係るニューラルネットワーク装置10によれば、少ない学習回数で精度良く学習させることができる。
【0065】
図10は、積和演算回路20のハードウェア構成を示す図である。積和演算回路20は、正側電流源32と、負側電流源34と、比較部36と、(M+1)個のクロススイッチ38と、クランプ回路40と、記憶回路42とを備える。
【0066】
正側電流源32は、正側端子46を有する。正側電流源32は、正側端子46から電流を出力する。さらに、正側電流源32は、正側端子46から出力した電流の1/B(Bは2以上の整数)の値に応じた第1電圧を出力する。正側電流源32は、正側回路の一例である。また、第1電圧は、正側信号の一例である。
【0067】
例えば、正側電流源32は、正側端子46から出力した電流の1/Bの値に比例した第1電圧を出力する。本実施形態においてはB=(M+1)である。しかし、Bは、(M+1)と同一でなくてもよい。なお、
図10には、複数の正側端子46が記載されている。しかし、
図10に記載された複数の正側端子46は、電気的に接続されている。
【0068】
例えば、正側電流源32は、B個の第1FET48を有する。B個の第1FET48のそれぞれは、同一の特性を有する電界効果トランジスタである。本実施形態においては、B個の第1FET48のそれぞれは、同一の特性を有するpMOSトランジスタである。
【0069】
B個の第1FET48は、ゲートが共通に接続され、ソースが第2基準電位に接続され、ドレインがゲートおよび正側端子46に接続される。第2基準電位は、例えば、正側の電源電圧(VDD)である。すなわち、B個の第1FET48のそれぞれは、ダイオード接続され、ソースが第2基準電位(例えばVDD)に接続され、ゲートおよびドレインが正側端子46に接続される。そして、正側電流源32は、正側端子46の電圧(第1FET48のゲートの電圧)を、第1電圧として出力する。
【0070】
このような正側電流源32は、M個の重みのそれぞれとM個の入力値のうちの対応する入力値とを乗算することにより生成されるM個の乗算値、および、所定個のバイアスのうち、正となる値群を合計した値の絶対値を表す正側信号を生成する。
【0071】
負側電流源34は、負側端子50を有する。負側電流源34は、負側端子50から電流を出力する。さらに、負側電流源34は、負側端子50から出力した電流の1/Bの値に応じた第2電圧を出力する。負側電流源34は、負側回路の一例である。また、第2電圧は、負側信号の一例である。
【0072】
例えば、負側電流源34は、負側端子50から出力した電流の1/Bの値に比例した第2電圧を出力する。なお、
図10には、複数の負側端子50が記載されている。しかし、複数の負側端子50は、電気的に接続されている。
【0073】
例えば、負側電流源34は、B個の第2FET52を有する。B個の第2FET52のそれぞれは、第1FET48と同一の特性を有する電界効果トランジスタである。本実施形態においては、B個の第2FET52のそれぞれは、第1FET48と同一の特性を有するpMOSトランジスタである。
【0074】
B個の第2FET52は、ゲートが共通に接続され、ソースが第2基準電位に接続され、ドレインがゲートおよび負側端子50に接続される。すなわち、B個の第2FET52のそれぞれは、ダイオード接続され、ソースが第2基準電位(例えばVDD)に接続され、ゲートおよびドレインが負側端子50に接続される。そして、負側電流源34は、負側端子50の電圧(第2FET52のゲートの電圧)を、第2電圧として出力する。
【0075】
このような負側電流源34は、M個の重みのそれぞれとM個の入力値のうちの対応する入力値とを乗算することにより生成されるM個の乗算値、および、所定個のバイアスのうち、負となる値群を合計した値の絶対値を表す負側信号を生成する。
【0076】
比較部36は、コンパレータ回路の一例である。比較部36は、正側電流源32から出力された第1電圧と、負側電流源34から出力された第2電圧との大小を比較する。そして、比較部36は、第1電圧と第2電圧との比較結果に応じた出力値(y)を出力する。比較部36は、第1電圧が第2電圧より小さい場合、第1論理(例えば、-1)の出力値を出力し、第1電圧が第2電圧以上の場合、第2論理(例えば、+1)の出力値を出力する。なお、比較部36は、第1電圧が第2電圧より小さい場合、第2論理(例えば、+1)の出力値を出力し、第1電圧が第2電圧以上の場合、第1論理(例えば、-1)の出力値を出力してもよい。
【0077】
(M+1)個のクロススイッチ38は、M個の入力値に対応するM個のクロススイッチ38-1~38-Mと、1個のバイアスに対応する1個のクロススイッチ38-(M+1)とを含む。本実施形態においては、積和演算回路20は、M個の入力値に対応するM個のクロススイッチ38として、第1クロススイッチ38-1~第Mクロススイッチ38-Mを備える。例えば、第1クロススイッチ38-1は、第1の入力値(x1)に対応し、第2クロススイッチ38-2は、第2の入力値(x2)に対応し、第Mクロススイッチ38-Mは、第Mの入力値(xM)に対応する。また、本実施形態においては、積和演算回路20は、バイアスに対応するクロススイッチ38として、第(M+1)クロススイッチ38-(M+1)を備える。
【0078】
(M+1)個のクロススイッチ38のそれぞれは、正側流入端子56と、負側流入端子58と、第1端子60と、第2端子62とを有する。
【0079】
(M+1)個のクロススイッチ38のそれぞれは、第1端子60を、正側流入端子56および負側流入端子58のうち何れか一方に接続する。また、(M+1)個のクロススイッチ38のそれぞれは、第2端子62を、正側流入端子56および負側流入端子58のうち第1端子60が接続されていないもう一方に接続する。M個の入力値に対応するM個のクロススイッチ38のそれぞれは、対応する入力値に応じて、第1端子60および第2端子62を、正側流入端子56または負側流入端子58の何れに接続するかを切り換える。また、バイアスに対応するクロススイッチ38は、予め固定された値(例えば、+1)に応じて、第1端子60および第2端子62を、正側流入端子56または負側流入端子58の何れかに接続する。
【0080】
クランプ回路40は、(M+1)個のクロススイッチ38に対応する(M+1)個の正側FETスイッチ66を有する。本実施形態においては、クランプ回路40は、(M+1)個の正側FETスイッチ66として、第1正側FETスイッチ66-1~第(M+1)正側FETスイッチ66-(M+1)を有する。例えば、第1正側FETスイッチ66-1は、第1クロススイッチ38-1に対応し、第2正側FETスイッチ66-2は、第2クロススイッチ38-2に対応し、第(M+1)正側FETスイッチ66-Mは、第(M+1)クロススイッチ38-(M+1)に対応する。
【0081】
(M+1)個の正側FETスイッチ66のそれぞれは、ゲートがクランプ電位(Vclmp)に接続され、ソースが正側端子46に接続され、ドレインが対応するクロススイッチ38の正側流入端子56に接続される。(M+1)個の正側FETスイッチ66のそれぞれは、動作中において、ソース-ドレイン間がオンとなる。従って、(M+1)個のクロススイッチ38のそれぞれの正側流入端子56は、動作中において、正側電流源32の正側端子46に接続され、電圧がクランプ電位(Vclmp)に固定される。
【0082】
さらに、クランプ回路40は、(M+1)個のクロススイッチ38に対応する(M+1)個の負側FETスイッチ68を有する。本実施形態においては、クランプ回路40は、(M+1)個の負側FETスイッチ68として、第1負側FETスイッチ68-1~第(M+1)負側FETスイッチ68-(M+1)を有する。例えば、第1負側FETスイッチ68-1は、第1クロススイッチ38-1に対応し、第2負側FETスイッチ68-2は、第2クロススイッチ38-2に対応し、第(M+1)負側FETスイッチ68-(M+1)は、第(M+1)クロススイッチ38-(M+1)に対応する。
【0083】
(M+1)個の負側FETスイッチ68のそれぞれは、ゲートがクランプ電位(Vclmp)に接続され、ソースが負側端子50に接続され、ドレインが対応するクロススイッチ38の負側流入端子58に接続される。(M+1)個の負側FETスイッチ68のそれぞれは、動作中において、ソース-ドレイン間がオンとなる。従って、(M+1)個のクロススイッチ38のそれぞれの負側流入端子58は、動作中において、負側電流源34の負側端子50に接続され、電圧がクランプ電位(Vclmp)に固定される。
【0084】
記憶回路42は、(M+1)個のセル72を有する。(M+1)個のセル72は、M個の重みに対応するM個のセル72と、1個のバイアスに対応する1個のセル72とを含む。本実施形態においては、記憶回路42は、M個の重みに対応するM個のセル72として、第1セル72-1~第Mセル72-Mを有する。例えば、第1セル72-1は、第1の重み(w1)に対応し、第2セル72-2は、第2の重み(w2)に対応し、第Mセル72-Mは、第Mの重み(wM)に対応する。なお、第1の重み(w1)は、第1の入力値(x1)に対応し、第2の重み(w2)は、第2の入力値(x2)に対応し、第Mの重み(wM)は、第Mの入力値(xM)に対応する。従って、例えば、第1セル72-1は、第1クロススイッチ38-1に対応し、第2セル72-2は、第2クロススイッチ38-2に対応し、第Mセル72-Mは、第Mクロススイッチ38-Mに対応する。また、本実施形態においては、記憶回路42は、バイアスに対応するセル72として、第(M+1)セル72-(M+1)を有する。従って、第(M+1)セル72-(M+1)は、第(M+1)セル72-(M+1)に対応する。
【0085】
(M+1)個のセル72のそれぞれは、第1抵抗74と、第2抵抗76とを含む。第1抵抗74は、一方の端が対応するクロススイッチ38の第1端子60に接続され、他方の端が第1基準電位に接続される。第1基準電位は、例えば、グランドである。第2抵抗76は、一方の端が対応するクロススイッチ38の第2端子62に接続され、他方の端が第1基準電位に接続される。
【0086】
第1抵抗74および第2抵抗76のそれぞれは、例えばメモリスタである。また、第1抵抗74および第2抵抗76は、他の可変抵抗であってもよい。第1抵抗74および第2抵抗76は、対応する重みまたはバイアスに応じて、抵抗値の大小関係が切り替えられる。例えば、記憶回路42は、M個の入力値の受け取りに先だって、M個の重みを受け取る。そして、記憶回路42は、受け取ったM個の重みのそれぞれに応じて、対応するセル72に含まれる第1抵抗74および第2抵抗76の抵抗値の大小関係を設定する。また、バイアスがターナリにおける中央値である場合(例えば、バイアスが0である場合)、記憶回路42は、第1抵抗74と第2抵抗76とを同一の抵抗値に設定する。
【0087】
例えば、(M+1)個のセル72のそれぞれは、対応する重みまたはバイアスが+1である場合、第1抵抗74が第1抵抗値に設定され、第2抵抗76が、第1抵抗値とは異なる第2抵抗値に設定される。また、(M+1)個のセル72のそれぞれは、対応する重みまたはバイアスが-1である場合、第1抵抗74が第2抵抗値に設定され、第2抵抗76が第1抵抗値に設定される。また、バイアスがターナリにおける中央値である場合(例えば、バイアスが0である場合)、第(M+1)セル72-(M+1)は、第1抵抗74と第2抵抗76とを同一の抵抗値に設定する。
【0088】
また、(M+1)個のセル72のそれぞれは、第1抵抗74または第2抵抗76の一方が固定抵抗であり、他方が可変抵抗であってもよい。また、(M+1)個のセル72のそれぞれは、第1抵抗74または第2抵抗76の両方が可変抵抗であってもよい。この場合、(M+1)個のセル72のそれぞれは、対応する重みが+1である場合と、-1である場合とで、第1抵抗74と第2抵抗76との抵抗差の正負が反転するように、可変抵抗の抵抗値が変更される。また、この場合、第(M+1)セル72-(M+1)は、バイアスが0である場合、第1抵抗74と第2抵抗76との抵抗差が0となるように、可変抵抗の抵抗値が変更される。
【0089】
そして、(M+1)個のクロススイッチ38のうちのM個の入力値に対応するM個のクロススイッチ38のそれぞれは、対応する入力値の値に応じて、第1端子60および第2端子62を、正側端子46(正側流入端子56)および負側端子50(負側流入端子58)に対して、ストレート接続するかリバース接続するかを切り換える。
【0090】
例えば、M個の入力値に対応するM個のクロススイッチ38のそれぞれは、ストレート接続する場合、第1端子60と正側端子46(正側流入端子56)とを接続し、且つ、第2端子62と負側端子50(負側流入端子58)とを接続する。また、M個の入力値に対応するM個のクロススイッチ38のそれぞれは、リバース接続する場合、第1端子60と負側端子50(負側流入端子58)とを接続し、且つ、第2端子62と正側端子46(正側流入端子56)とを接続する。
【0091】
例えば、M個の入力値に対応するM個のクロススイッチ38のそれぞれは、対応する入力値の値が+1である場合、ストレート接続し、対応する入力値の値が-1である場合、リバース接続する。これに代えて、M個の入力値に対応するM個のクロススイッチ38のそれぞれは、対応する入力値の値が+1である場合、リバース接続し、対応する入力値の値が-1である場合、ストレート接続してもよい。
【0092】
なお、バイアスに対応するクロススイッチ38は、ストレート接続またはリバース接続の何れか一方に固定されている。例えば、バイアスに対応するクロススイッチ38は、+1が固定して入力され、ストレート接続に固定される。
【0093】
図11は、w
i=+1、x
i=+1の場合の積和演算回路20の演算動作を説明するための図である。第iの重み(w
i)が+1である場合、第iセル72-iの第1抵抗74は、第1コンダクタンス(G
1=1/R
1)に設定される。第iの重み(w
i)が+1である場合、第iセル72-iの第2抵抗76は、第2コンダクタンス(G
2=1/R
2)に設定される。この場合、第1抵抗74には、第1電流値(I
1)の電流が流れる。また、第2抵抗76には、第2電流値(I
2)の電流が流れる。なお、G
1>G
2であるとする。従って、I
1>I
2である。
【0094】
また、第iの入力値(xi)が+1である場合、第iクロススイッチ38-iは、ストレート接続される。従って、正側電流源32の正側端子46は、第iセル72-iの第1抵抗74へ電流を供給する。また、負側電流源34の負側端子50は、第iセル72-iの第2抵抗76へ、電流を供給する。
【0095】
ここで、積和演算回路20は、第iの重み(wi)に第iの入力値(xi)を乗じた値(wi・xi)の算出結果を、正側端子46から第iセル72-iへ流れる電流(IP_i)と、負側端子50から第iセル72-iへ流れる電流(IN_i)との電流差(IP_i-IN_i)で表す。
【0096】
このため、
図11の例では、I
P_i=I
1、I
N_i=I
2となり、電流差(I
P_i-I
N_i)は、正の値となる。従って、w
i=+1、x
i=+1の場合、積和演算回路20は、第iの重み(w
i)に第iの入力値(x
i)を乗じた値(w
i・x
i)として、+1を算出することができる。
【0097】
図12は、w
i=+1、x
i=-1の場合の積和演算回路20の演算動作を説明するための図である。第iの重み(w
i)が+1である場合、第iセル72-iの第1抵抗74は、第1コンダクタンス(G
1)に設定される。第iの重み(w
i)が+1である場合、第iセル72-iの第2抵抗76は、第2コンダクタンス(G
2)に設定される。この場合、第1抵抗74には、第1電流値(I
1)の電流が流れる。また、第2抵抗76には、第2電流値(I
2)の電流が流れる。
【0098】
また、第iの入力値(xi)が-1である場合、第iクロススイッチ38-iは、リバース接続される。従って、正側電流源32の正側端子46は、第iセル72-iの第2抵抗76へ電流を供給する。また、負側電流源34の負側端子50は、第iセル72-iの第1抵抗74へ電流を供給する。
【0099】
このため、
図12の例では、I
P_i=I
2、I
N_i=I
1となり、電流差(I
P_i-I
N_i)は、負の値となる。従って、w
i=+1、x
i=-1の場合、積和演算回路20は、第iの重み(w
i)に第iの入力値(x
i)を乗じた値(w
i・x
i)として、-1を算出することができる。
【0100】
なお、バイアス(b)が-1であり、クロススイッチ38に入力される値が+1で固定されている場合も、積和演算回路20は、同様に、バイアス(b)に固定入力値(+1)を乗じた値(b)として、-1を算出することができる。
【0101】
図13は、w
i=-1、x
i=+1の場合の積和演算回路20の演算動作を説明するための図である。第iの重み(w
i)が-1である場合、第iセル72-iの第1抵抗74は、第2コンダクタンス(G
2)に設定される。第iの重み(w
i)が-1である場合、第iセル72-iの第2抵抗76は、第1コンダクタンス(G
1)に設定される。従って、この場合、第1抵抗74には、第2電流値(I
2)の電流が流れる。また、第2抵抗76には、第1電流値(I
1)の電流が流れる。
【0102】
また、第iの入力値(xi)が+1である場合、第iクロススイッチ38-iは、ストレート接続される。従って、正側電流源32の正側端子46は、第iセル72-iの第1抵抗74へ電流を供給する。また、負側電流源34の負側端子50は、第iセル72-iの第2抵抗76へ電流を供給する。
【0103】
このため、
図13の例では、I
P_i=I
2、I
N_i=I
1となり、電流差(I
P_i-I
N_i)は、負の値となる。従って、w
i=-1、x
i=+1の場合、積和演算回路20は、第iの重み(w
i)に第iの入力値(x
i)を乗じた値(w
i・x
i)は、-1を算出することができる。
【0104】
図14は、w
i=-1、x
i=-1の場合の積和演算回路20の演算動作を説明するための図である。第iの重み(w
i)が-1である場合、第iセル72-iの第1抵抗74は、第2コンダクタンス(G
2)に設定される。第iの重み(w
i)が-1である場合、第iセル72-iの第2抵抗76は、第1コンダクタンス(G
1)に設定される。従って、この場合、第1抵抗74には、第2電流値(I
2)の電流が流れる。また、第2抵抗76には、第1電流値(I
1)の電流が流れる。
【0105】
また、第iの入力値(xi)が-1である場合、第iクロススイッチ38-iは、リバース接続される。従って、正側電流源32の正側端子46は、第iセル72-iの第2抵抗76へ電流を供給する。また、負側電流源34の負側端子50は、第iセル72-iの第1抵抗74へ電流を供給する。
【0106】
このため、
図14の例では、I
P_i=I
1、I
N_i=I
2となり、電流差(I
P_i-I
N_i)は、正の値となる。従って、w
i=-1、x
i=-1の場合、積和演算回路20は、第iの重み(w
i)に第iの入力値(x
i)を乗じた値(w
i・x
i)として、+1を算出することができる。
【0107】
図15は、b=0の場合の積和演算回路20の演算動作を説明するための図である。バイアス(b)が0である場合、第(M+1)セル72-(M+1)の第1抵抗74は、第1コンダクタンス(G
1)に設定される。バイアス(b)が0である場合、第(M+1)セル72-(M+1)の第2抵抗76は、第1コンダクタンス(G
1)に設定される。従って、この場合、第1抵抗74には、第1電流値(I
1)の電流が流れる。また、第2抵抗76には、第1電流値(I
1)の電流が流れる。
【0108】
また、第(M+1)クロススイッチ38-(M+1)は、固定値である+1が入力され、ストレート接続される。従って、正側電流源32の正側端子46は、第(M+1)セル72-(M+1)の第1抵抗74へ電流を供給する。また、負側電流源34の負側端子50は、第(M+1)セル72-(M+1)の第2抵抗76へ電流を供給する。
【0109】
このため、
図15の例では、I
P_(M+1)=I
1、I
N_(M+1)=I
1となり、電流差(I
P_(M+1)-I
N_(M+1))は、0となる。従って、b=0の場合、積和演算回路20は、バイアス(b)として、0を算出することができる。
【0110】
なお、バイアス(b)が0である場合、第(M+1)セル72-(M+1)の第1抵抗74および第2抵抗76は、第2コンダクタンス(G2)に設定されてもよい。この場合、第1抵抗74および第2抵抗76は、第2電流値(I2)の電流が流れる。この場合にも、電流差(IP_(M+1)-IN_(M+1))は、0となり、積和演算回路20は、バイアス(b)として、0を算出することができる。
【0111】
以上のように、正側端子46から第iセル72-iへと出力される電流(IP_i)と、負側端子50から第iセル72-iへと出力される電流(IN_i)との差(IP_i-IN_i)は、第iの重み(wi)と第iの入力値(xi)との乗算値(wi・xi)を表す。また、正側端子46から第(M+1)セル72-(M+1)へと出力される電流(IP_(M+1))と、負側端子50から第(M+1)セル72-(M+1)へと出力される電流(IN_(M+1))との差(IP_(M+1)-IN_(M+1))は、バイアス(b)を表す。
【0112】
従って、正側電流源32の正側端子46から出力される合計の電流(IP_1+IP_2+…+IP_(M+1))と、負側電流源34の負側端子50から出力される合計の電流(IN_1+IN_2+…+IN_(M+1))との差分値{(IP_1+IP_2+…+IP_(M+1))-(IN_1+IN_2+…+IN_(M+1))}は、M個の入力値とM個の重みとの積和演算(乗累算)結果と、バイアス(b)とを加算した値を表す。
【0113】
図16は、正側電流源32、負側電流源34および比較部36の動作を説明するための図である。
【0114】
正側電流源32は、第1セル72-1に対して、IP_1の電流を出力する。また、正側電流源32は、第2セル72-2に対して、IP_2の電流を出力する。そして、正側電流源32は、第(M+1)セル72-(M+1)に対して、IP_(M+1)の電流を出力する。従って、正側電流源32は、正側端子46から、IP_1+IP_2+…+IP_(M+1)の電流を出力する。すなわち、正側電流源32は、M個の重みのそれぞれとM個の入力値のうちの対応する入力値とを乗算することにより生成されるM個の乗算値、および、所定個のバイアスのうち、正となる値群を合計した値の絶対値を表す電流を、正側端子46から出力する。
【0115】
また、正側電流源32は、B個の第1FET48を有する。B個の第1FET48は、同一の特性を有し、同一の接続関係となっている。従って、B個の第1FET48は、同一のドレイン電流(Id1)を流す。
【0116】
また、B個の第1FET48のドレイン電流(Id1)の合計は、B×Id1である。B個の第1FET48のドレイン電流(Id1)は、全て正側端子46に供給される。従って、B×Id1=(IP_1+IP_2+…+IP_(M+1))となる。つまり、B個の第1FET48のそれぞれのドレイン電流(Id1)は、(IP_1+IP_2+…+IP_(M+1))/Bとなる。
【0117】
負側電流源34は、第1セル72-1に対して、IN_1の電流を出力する。また、負側電流源34は、第2セル72-2に対して、IN_2の電流を出力する。そして、負側電流源34は、第Mセル72-Mに対して、IN_(M+1)の電流を出力する。従って、負側電流源34は、負側端子50から、IN_1+IN_2+…+IN_(M+1)の電流を出力する。すなわち、負側電流源34は、M個の重みのそれぞれとM個の入力値のうちの対応する入力値とを乗算することにより生成されるM個の乗算値、および、所定個のバイアスのうち、負となる値群を合計した値の絶対値を表す電流を、負側端子50から出力する。
【0118】
負側電流源34は、B個の第2FET52を有する。B個の第2FET52は、同一の特性を有し、同一の接続関係となっている。従って、B個の第2FET52は、同一のドレイン電流(Id2)を流す。
【0119】
また、B個の第2FET52のドレイン電流(Id2)の合計は、B×Id2である。B個の第2FET52のドレイン電流(Id2)は、全て負側端子50に供給される。従って、B×Id2=(IN_1+IN_2+…+IN_(M+1))となる。つまり、B個の第2FET52のそれぞれのドレイン電流(Id2)は、(IN_1+IN_2+…+IN_(M+1))/Bとなる。
【0120】
正側電流源32は、第1電圧として、正側端子46に発生する電圧を出力する。正側端子46に発生する電圧は、第2基準電位(例えば、VDD)から、第1FET48のゲート-ソース間電圧(VGS1)を減じた電位である。
【0121】
また、負側電流源34は、第2電圧として、負側端子50に発生する電圧を出力する。負側端子50に発生する電圧は、第2基準電位(例えば、VDD)から、第2FET52のゲート-ソース間電圧(VGS2)を減じた電位である。
【0122】
比較部36は、第1電圧と第2電圧との差(Vd)が0より小さいか、0以上であるかを判定する。例えば、比較部36は、第1電圧と第2電圧との差(Vd)が0より小さい場合、第1論理(例えば-1)を出力し、0以上である場合、第2論理(例えば+1)を出力する。
【0123】
ここで、第1電圧と第2電圧との差(Vd)は、第1FET48のゲート-ソース間電圧(VGS1)から、第2FET52のゲート-ソース間電圧(VGS2)を減じた電圧に等しい。
【0124】
第1FET48のゲート-ソース間電圧(VGS1)は、第1FET48のドレイン電流(Id1)に比例した値である。また、第2FET52のゲート-ソース間電圧(VGS2)は、第2FET52のドレイン電流(Id2)に比例した値である。また、第1FET48と第2FET52とは、同一の特性である。従って、第1電圧と第2電圧との差(Vd)は、第1FET48のドレイン電流((IP_1+IP_2+…+IP_(M+1)/B)から、第2FET52のドレイン電流((IN_1+IN_2+…+IN_(M+1)/B)を減じた電流に比例する。
【0125】
以上から、出力値(y)は、第1FET48のドレイン電流((IP_1+IP_2+…+IP_(M+1))/B)から、第2FET52のドレイン電流((IN_1+IN_2+…+IN_(M+1))/B)を減じた電流が、0より小さいか、または、0以上であるか否かを表す。
【0126】
ここで、正側電流源32が有する第1FET48の個数(B)と、負側電流源34が有する第2FET52の個数(B)は、同一である。また、比較部36は、0を閾値として、値を反転させている。第1FET48のドレイン電流((IP_1+IP_2+…+IP_(M+1))/B)から、第2FET52のドレイン電流((IN_1+IN_2+…+IN_(M+1))/B)を減じた電流の0クロス点と、正側端子46から出力される合計の電流(IP_1+IP_2+…+IP_(M+1))から、負側端子50から出力される合計の電流(IN_1+IN_2+…+IN_(M+1))を減じた電流の0クロス点とは、同一である。従って、出力値(y)は、正側端子46から出力される合計の電流(IP_1+IP_2+…+IP_(M+1))から、負側端子50から出力される合計の電流(IN_1+IN_2+…+IN_(M+1))を減じた電流が、0より小さいか、0以上であるか否かを表す。
【0127】
正側端子46から第iセル72-iへと出力される電流(IP_i)と、負側端子50から第iセル72-iへと出力される電流(IN_i)との差(IP_i-IN_i)は、第iの重み(wi)と第iの入力値(xi)との乗算値(wi・xi)を表す。また、正側端子46から第(M+1)セル72-(M+1)へと出力される電流(IP_(M+1))と、負側端子50から第(M+1)セル72-(M+1)へと出力される電流(IN_(M+1))との差(IP_(M+1)-IN_(M+1))は、バイアス(b)を表す。そして、正側端子46から出力される合計の電流(IP_1+IP_2+…+IP_(M+1))から、負側端子50から出力される合計の電流(IN_1+IN_2+…+IN_(M+1))を減じた電流は、M個の入力値とM個の重みとの積和演算(乗累算)値と、バイアス(b)とを加算した値を表す。
【0128】
従って、出力値(y)は、M個の入力値とM個の重みとの積和演算(乗累算)値と、バイアス(b)とを加算した値が、0より小さいか、または、0以上であるか否かを表す。
【0129】
このように、積和演算回路20は、M個の入力値とM個の重みとの積和値と、バイアスとを加算する演算処理をアナログ処理により実行することができる。そして、積和演算回路20は、積和演算値を2値化した出力値を生成することができる。
【0130】
図17は、情報処理装置のハードウェア構成の一例を示す図である。ニューラルネットワーク装置10は、プログラムと協働して動作することにより、例えば
図17に示すようなハードウェア構成の情報処理装置により実現することも可能である。また、ニューラルネットワーク装置10は、
図17に示す構成に限らず、サーバまたは複数のコンピュータにより実現されるクラウド等により実現することも可能である。
【0131】
情報処理装置は、CPU(Central Processing Unit)301と、RAM(Random Access Memory)302と、ROM(Read Only Memory)303と、操作入力装置304と、表示装置305と、記憶装置306と、通信装置307とを備える。そして、これらの各部は、バスにより接続される。なお、情報処理装置は、操作入力装置304および表示装置305を備えない構成であってもよい。
【0132】
CPU301は、プログラムに従って演算処理および制御処理等を実行するプロセッサである。CPU301は、RAM302の所定領域を作業領域として、ROM303および記憶装置306等に記憶されたプログラムとの協働により各種処理を実行する。
【0133】
RAM302は、SDRAM(Synchronous Dynamic Random Access Memory)等のメモリである。RAM302は、CPU301の作業領域として機能する。ROM303は、プログラムおよび各種情報を書き換え不可能に記憶するメモリである。
【0134】
操作入力装置304は、マウスおよびキーボード等の入力デバイスである。操作入力装置304は、ユーザから操作入力された情報を指示信号として受け付け、指示信号をCPU301に出力する。
【0135】
表示装置305は、LCD(Liquid Crystal Display)等の表示デバイスである。表示装置305は、CPU301からの表示信号に基づいて、各種情報を表示する。
【0136】
記憶装置306は、フラッシュメモリ等の半導体による記憶媒体、または、磁気的若しくは光学的に記録可能な記憶媒体等にデータを書き込みおよび読み出しをする装置である。記憶装置306は、CPU301からの制御に応じて、記憶媒体にデータの書き込みおよび読み出しをする。通信装置307は、CPU301からの制御に応じて外部の機器とネットワークを介して通信する。
【0137】
情報処理装置をニューラルネットワーク装置10として機能させるためのプログラムは、演算モジュールと、学習制御モジュールと、バイアスリセットモジュールとを含む。このプログラムは、CPU301(プロセッサ)によりRAM302上に展開して実行されることにより、情報処理装置を、演算部、学習制御部およびバイアスリセット部として機能させる。演算部は、演算回路12と同一の処理を実行する。学習制御部は、学習制御回路26と同一の処理を実行する。バイアスリセット部は、バイアスリセット回路28と同一の処理を実行する。また、このプログラムは、CPU301(プロセッサ)によりRAM302上に展開して実行されることにより、RAM302または記憶装置306を、推論重み記憶回路14、推論バイアス記憶回路16、学習重み記憶回路22および学習バイアス記憶回路24として機能させる。
【0138】
また、情報処理装置で実行されるプログラムは、コンピュータにインストール可能な形式または実行可能な形式のファイルで、CD-ROM、フレキシブルディスク、CD-R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【0139】
また、情報処理装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、情報処理装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。また、情報処理装置で実行されるプログラムを、ROM303等に予め組み込んで提供するように構成してもよい。
【0140】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0141】
10 ニューラルネットワーク装置
12 演算回路
14 推論重み記憶回路
16 推論バイアス記憶回路
22 学習重み記憶回路
24 学習バイアス記憶回路
26 学習制御回路
28 バイアスリセット回路
30 積和演算回路