(58)【調査した分野】(Int.Cl.,DB名)
前記第1ニューラルネットワークおよび前記第2ニューラルネットワークにおける前記N個の層のそれぞれは、前段の層から出力された前記複数の中間出力値と、設定されている複数の係数とを行列乗算することにより複数の積和演算値を算出し、前記複数の積和演算値に対して、予め設定されている活性化関数演算を実行することにより前記複数の中間出力値を算出する
請求項3または4に記載の演算装置。
前記第1モードにおいて、複数の入力値を前記第1ニューラルネットワークの第1層に与え、前記第2モードにおいて、前記複数の入力値を前記第2ニューラルネットワークの第1層に与える入力部と、
前記第1モードにおいて、前記第1ニューラルネットワークの最終層から出力された複数の値を、複数の出力値として出力し、前記第2モードにおいて、前記第2ニューラルネットワークの最終層から出力された複数の値を、前記複数の出力値として出力する出力部と、
をさらに備える請求項1から13の何れか1項に記載の演算装置。
【発明を実施するための形態】
【0010】
以下、図面を参照しながら実施形態に係る演算装置10について説明する。実施形態に係る演算装置10は、ニューラルネットワークにおける演算処理と学習処理とを並行に実行することができる。
【0011】
図1は、実施形態に係る演算装置10の構成を示す図である。演算装置10は、半導体チップ等に実現されたハードウェアである。演算装置10は、基板上に形成された回路であってもよい。また、演算装置10は、複数の半導体チップまたは複数の基板に形成された回路であってもよい。
【0012】
演算装置10は、第1ニューラルネットワーク21と、第2ニューラルネットワーク22と、入力部24と、出力部26と、評価部28と、係数更新部30と、制御部32とを備える。
【0013】
第1ニューラルネットワーク21は、ハードウェア回路により実現される。第1ニューラルネットワーク21は、複数の層のそれぞれに設定される複数の係数が、例えば、ReRAM(resistive random access memory)等に用いられる可変抵抗素子であってもよいし、可変キャパシタ等であってもよい。
【0014】
第2ニューラルネットワーク22は、ハードウェア回路により実現される。第2ニューラルネットワーク22は、第1ニューラルネットワーク21と同一の層構造である。第1ニューラルネットワーク21および第2ニューラルネットワーク22は、層の数、それぞれの層に入出力する値の数、それぞれの層の行列乗算回路、および、それぞれの層の活性化関数回路が同一である。ただし、第1ニューラルネットワーク21および第2ニューラルネットワーク22は、設定されている係数の値が異なってもよい。
【0015】
また、第1ニューラルネットワーク21および第2ニューラルネットワーク22のそれぞれは、N個(Nは、2以上の整数)の層を有する。第1ニューラルネットワーク21および第2ニューラルネットワーク22のそれぞれは、N個の層のそれぞれから複数の中間出力値を出力する。
【0016】
ここで、演算装置10は、第1モードと第2モードとで、動作が切り替わる。第1ニューラルネットワーク21は、第1モードにおいて演算を実行し、第2モードにおいて演算を実行しない。反対に、第2ニューラルネットワーク22は、第2モードにおいて演算を実行し、第1モードにおいて演算を実行しない。
【0017】
また、第1ニューラルネットワーク21は、第2モードにおいて、内部に設定されている複数の係数が更新され、第1モードにおいて、内部に設定されている複数の係数が更新されない。反対に、第2ニューラルネットワーク22は、第1モードにおいて、内部に設定されている複数の係数が更新され、第2モードにおいて、内部に設定されている複数の係数が更新されない。
【0018】
入力部24は、他の装置から演算対象となる複数の入力値を受け取る。入力部24は、第1モードにおいて、複数の入力値を第1ニューラルネットワーク21の最初の層(第1層)に与える。入力部24は、第2モードにおいて、複数の入力値を第2ニューラルネットワーク22の最初の層(第1層)に与える。
【0019】
出力部26は、第1モードにおいて、第1ニューラルネットワーク21の最終層(第N層)から出力された複数の中間出力値を、複数の出力値として他の装置に出力する。また、出力部26は、第2モードにおいて、第2ニューラルネットワーク22の最終層(第N層)から出力された複数の中間出力値を、複数の出力値として他の装置に出力する。
【0020】
評価部28は、第1モードにおいて、第1ニューラルネットワーク21による演算の誤差を評価する。また、評価部28は、第2モードにおいて、第2ニューラルネットワーク22による演算の誤差を評価する。
【0021】
例えば、評価部28は、第1モードにおいて、第2ニューラルネットワーク22のN個の層のそれぞれに対応させて、第1ニューラルネットワーク21のN個の層のそれぞれから出力された複数の中間出力値の誤差を評価した複数の中間評価値を生成する。また、評価部28は、第2モードにおいて、第1ニューラルネットワーク21のN個の層のそれぞれに対応させて、第2ニューラルネットワーク22のN個の層のそれぞれから出力された複数の中間出力値の誤差を評価した複数の中間評価値を生成する。
【0022】
なお、評価部28は、ハードウェア回路により実現されてもよいし、プロセッサがプログラムを実行することにより実現されてもよい。評価部28については、後述において詳細をさらに説明する。
【0023】
係数更新部30は、第1モードにおいて、第1ニューラルネットワーク21による演算の誤差を評価した評価結果に基づき、第2ニューラルネットワーク22に設定されている複数の係数を更新する。また、係数更新部30は、第2モードにおいて、第2ニューラルネットワーク22による演算の誤差を評価した評価結果に基づき、第1ニューラルネットワーク21に設定されている複数の係数を更新する。
【0024】
例えば、係数更新部30は、第1モードにおいて、第1ニューラルネットワーク21のN個の層のそれぞれに対応する複数の中間評価値に基づき、第2ニューラルネットワーク22のN個の層のそれぞれに設定されている複数の係数を更新する。
【0025】
また、係数更新部30は、第2モードにおいて、第2ニューラルネットワーク22のN個の層のそれぞれに対応する複数の中間評価値に基づき、第1ニューラルネットワーク21のN個の層のそれぞれに設定されている複数の係数を更新する。
【0026】
例えば、係数更新部30は、N個の層のそれぞれについて、設定されている複数の係数の誤差の勾配を算出する。そして、係数更新部30は、係数の誤差の勾配を0とする方向に、設定されている複数の係数を変更する。
【0027】
係数更新部30は、ハードウェア回路により実現されてもよいし、プロセッサがプログラムを実行することにより実現されてもよい。なお、係数更新部30については、後述において詳細をさらに説明する。
【0028】
制御部32は、第1モードと第2モードとを交互に切り換える。制御部32は、例えば、一定期間毎に、モードを切り換えてもよい。制御部32は、入力値を所定回受け取る毎に、モードを切り換えてもよい。
【0029】
図2は、演算装置10による処理の流れを示すフローチャートである。まず、S11において、演算装置10は、第1モードに設定されているとする。
【0030】
S11において、演算装置10は、モードの切り替えがされたか否かを判断する。すなわち、演算装置10は、第2モードに切り替えがされたか否かを判断する。
【0031】
モードの切り替えがされていない場合(S11のNo)、S12において、演算装置10は、複数の入力値を取得したか否かを判断する。複数の入力値を取得していない場合(S12のNo)、演算装置10は、処理をS11に戻す。演算装置10は、複数の入力値を取得した場合(S12のYes)、処理をS13に進める。また、演算装置10は、モードの切り替えがされた場合(S11のYes)、処理をS16に進める。
【0032】
S13において、演算装置10は、取得した複数の入力値に対して、第1ニューラルネットワーク21による演算を実行する。この結果、演算装置10は、複数の出力値を出力することができる。続いて、S14において、演算装置10は、第1ニューラルネットワーク21による演算の誤差を評価する。続いて、S15において、演算装置10は、第1ニューラルネットワーク21による演算の誤差を評価した評価結果に基づき、第2ニューラルネットワーク22に設定されている複数の係数を更新する。
【0033】
演算装置10は、S15の後に、処理をS11に戻す。そして、演算装置10は、第1モードの期間中、S11からS15までの処理を繰り返す。
【0034】
一方、S16に進んだ場合、演算装置10は、第2モードに設定された状態となる。S16において、演算装置10は、モードの切り替えがされたか否かを判断する。すなわち、演算装置10は、第1モードに切り替えがされたか否かを判断する。
【0035】
モードの切り替えがされていない場合(S16のNo)、S17において、演算装置10は、複数の入力値を取得したか否かを判断する。複数の入力値を取得していない場合(S17のNo)、演算装置10は、処理をS16に戻す。演算装置10は、複数の入力値を取得した場合(S17のYes)、処理をS18に進める。また、演算装置10は、モードの切り替えがされた場合(S16のYes)、処理をS11に戻す。
【0036】
S18において、演算装置10は、取得した複数の入力値に対して、第2ニューラルネットワーク22による演算を実行する。この結果、演算装置10は、複数の出力値を出力することができる。続いて、S19において、演算装置10は、第2ニューラルネットワーク22による演算の誤差を評価する。続いて、S20において、演算装置10は、第2ニューラルネットワーク22による演算の誤差を評価した評価結果に基づき、第1ニューラルネットワーク21に設定されている複数の係数を更新する。
【0037】
演算装置10は、S20の後に、処理をS16に戻す。そして、演算装置10は、第2モードの期間中、S16からS20までの処理を繰り返す。
【0038】
以上の処理により、演算装置10は、第1モードにおいて第1ニューラルネットワーク21により演算を実行し、第2モードにおいて第2ニューラルネットワーク22により演算を実行することができる。さらに、演算装置10は、第1モードにおいて、第2ニューラルネットワーク22に設定されている複数の係数を更新し、第2モードにおいて、第1ニューラルネットワーク21に設定されている複数の係数を更新することができる。従って、演算装置10によれば、ニューラルネットワークにおける演算処理と学習処理とを並行に実行することができる。
【0039】
また、演算装置10は、第1モードと第2モードとが交互に切り換えられる。これにより、演算装置10は、第1ニューラルネットワーク21に設定されている複数の係数の更新、および、第2ニューラルネットワーク22に複数の係数の更新を交互に進めることができる。これにより、演算装置10は、第1ニューラルネットワーク21および第2ニューラルネットワーク22の両者を適応化させることができる。
【0040】
図3は、第1ニューラルネットワーク21および第2ニューラルネットワーク22の構成を示す図である。第1ニューラルネットワーク21および第2ニューラルネットワーク22における、第1層から第N層までのN個の層のそれぞれは、次のような処理を行う。
【0041】
第1層は、入力部24から複数の入力値を取得する。複数の入力値のうちのx番目(xは1以上の整数)の入力値を、y
[0]xと表す。
【0042】
なお、yの上付きの中カッコ内の数値は、層番号を表す。[0]は、入力部24の番号を表す。また、yの下付きの数値は、層に入力または層から出力される複数の値の中での順番を表す。他の変数についても同様である。
【0043】
N個の層のそれぞれは、複数の中間出力値を後段の層に出力する。N個の層のそれぞれから出力される中間出力値の数は、互いに異なってもよい。第n層から出力される複数の中間出力値のうちのx番目の中間出力値を、y
[n]xと表す。nは、1からNまでの任意の整数である。
【0044】
第2層から第N層のそれぞれは、前段の層から、複数の中間出力値を取得する。なお、第2層から第N層のそれぞれが取得する中間出力値の数は、前段の層から出力される中間出力値の数と同一である。
【0045】
また、N個の層のそれぞれは、前段の層から出力された複数の中間出力値と、設定されている複数の係数とを行列乗算することにより、複数の積和演算値を算出する。第n層において算出された複数の積和演算値のうち、x番目の積和演算値をv
[n]xと表す。
【0046】
さらに、N個の層のそれぞれは、複数の積和演算値に対して、予め設定されている活性化関数演算を実行することにより、複数の中間出力値を算出する。そして、N個の層のそれぞれは、算出した複数の中間出力値を出力する。N個の層のそれぞれに設定されている活性化関数は、他の層と異なってもよい。
【0047】
第N層は、複数の中間出力値を出力部26に出力する。出力部26は、第N層から出力された複数の中間出力値を、演算装置10から出力される複数の出力値として他の装置に与える。
【0048】
また、N個の層のそれぞれは、算出した複数の積和演算値および複数の中間出力値を、複数の係数を更新するために、係数更新部30に出力する。N個の層のそれぞれから出力される積和演算値の数は、複数の中間出力値の数と同一である。
【0049】
図4は、第1ニューラルネットワーク21および第2ニューラルネットワーク22の第n層の入出力値、および、設定されている複数の係数を示す図である。第1ニューラルネットワーク21および第2ニューラルネットワーク22の第n層は、次のような処理を行う。
【0050】
第n層は、前段の第(n−1)層から出力されたI個の中間出力値を取得する。Iは、2以上の整数である。なお、n=1の場合、第n層(すなわち、第1層)は、入力部24から出力されたI個の入力値を、I個の中間出力値として取得する。第n層が取得するI個の中間出力値のうち、i番目(iは、1以上I以下の整数)の中間出力値を、y
[n−1]iと表す。
【0051】
第n層は、J個の中間出力値を出力する。Jは、2以上の整数である。第n層が出力するJ個の中間出力値のうち、j番目(jは、1以上J以下の整数)の中間出力値を、y
[n]jと表す。
【0052】
第n層は、I個の列およびJ個の行の行列に対応して配置された(I×J)個の係数が設定されている。第n層に設定された(I×J)個の係数のうち、第i列および第j行に配置された係数を、w
[n]ijと表す。
【0053】
第n層は、J個の積和演算値を算出する。第n層が算出するJ個の積和演算値のうち、j番目の積和演算値をv
[n]jと表す。
【0054】
このような場合、第n層は、下記の式(1)に示す行列乗算により、j=1〜JのJ個の積和演算値を算出する。
【数1】
【0055】
また、第n層には、活性化関数が設定されている。第n層に設定された活性化関数をf
[n](・)と表す。
【0056】
そして、第n層は、下記の式(2)に示す活性化関数演算により、j=1〜JのJ個の中間出力値を算出する。
y
[n]j=f
[n](v
[n]j)…(2)
【0057】
第n層は、算出したJ個の中間出力値を(n+1)層に出力する。なお、n=Nである場合、第n層(すなわち、第N層)は、算出したJ個の中間出力値を出力部26に与える。
【0058】
また、第n層は、算出したJ個の積和演算値およびJ個の中間出力値を、係数更新のために、係数更新部30に出力する。
【0059】
図5は、評価部28の構成を示す図である。評価部28は、出力評価部36と、逆伝播ニューラルネットワーク40とを有する。
【0060】
出力評価部36は、演算装置10から出力される複数の出力値の目標(教師)となる複数の目標値を、他の装置から取得する。複数の目標値のうち、x番目の目標値を、t
xと表す。
【0061】
また、出力評価部36は、第1モードにおいて、第1ニューラルネットワーク21の第N層から出力された複数の中間出力値を取得する。そして、出力評価部36は、第1モードにおいて、第1ニューラルネットワーク21の第N層から出力された複数の中間出力値のそれぞれにおける複数の目標値のそれぞれに対する誤差を評価した複数の出力評価値を生成する。
【0062】
また、出力評価部36は、第2モードにおいて、第2ニューラルネットワーク22の第N層から出力された複数の中間出力値を取得する。そして、出力評価部36は、第2モードにおいて、第2ニューラルネットワーク22の第N層から出力された複数の中間出力値のそれぞれにおける複数の目標値のそれぞれに対する誤差を評価した複数の出力評価値を生成する。
【0063】
出力評価部36は、例えば、プロセッサ回路により実現される場合、予め設定された損失関数に対して、第1ニューラルネットワーク21または第2ニューラルネットワーク22の第N層から出力された複数の中間出力値および複数の目標値を代入して、複数の出力評価値を生成してもよい。なお、出力評価部36は、損失関数に相当する処理を実行可能なハードウェア回路を有してもよい。
【0064】
出力評価部36は、複数の出力評価値を逆伝播ニューラルネットワーク40に与える。複数の出力評価値のうち、x番目の出力評価値を、e
[N]xと表す。
【0065】
逆伝播ニューラルネットワーク40は、出力評価部36から出力された複数の出力評価値を伝播させて、N個の層のそれぞれに対応する複数の中間評価値を出力する。
【0066】
逆伝播ニューラルネットワーク40は、ハードウェア回路により実現されたニューラルネットワークである。逆伝播ニューラルネットワーク40は、複数の層のそれぞれに設定される複数の係数が、例えば、ReRAM等に用いられる可変抵抗素子であってもよいし、可変キャパシタ等であってもよい。
【0067】
逆伝播ニューラルネットワーク40は、第1ニューラルネットワーク21および第2ニューラルネットワーク22における第2層から第N層に対応する(N−1)個の層を有する。逆伝播ニューラルネットワーク40は、出力評価部36から受け取った複数の出力評価値を、第N層から第2層へ向かう方向に伝播する。
【0068】
第N層は、出力評価部36から複数の出力評価値を取得する。複数の入力値のうちのx番目の出力評価値を、e
[N]xと表す。
【0069】
第2層から第(N−1)層のそれぞれは、後段の層から、複数の中間評価値を取得する。第m層から出力される複数の中間評価値のうちのx番目の中間評価値を、e
[m]xと表す。mは、2からNまでの任意の整数である。
【0070】
なお、(N−1)個の層のそれぞれが取得する中間評価値の数は、第1ニューラルネットワーク21および第2ニューラルネットワーク22における対応する層が出力する中間出力値の数と同一である。
【0071】
(N−1)個の層のそれぞれは、後段の層から出力された複数の中間評価値と、設定されている複数の係数とを行列乗算することにより複数の演算値を算出する。
【0072】
ここで、(N−1)個の層のそれぞれは、第1ニューラルネットワーク21および第2ニューラルネットワーク22における対応する層の行列乗算を転置させた行列乗算を実行することにより、複数の演算値を算出する。なお、(N−1)個の層のそれぞれは、設定されている複数の係数が、第1ニューラルネットワーク21および第2ニューラルネットワーク22における対応する層に設定されている複数の係数と関連が無くてもよい。例えば、逆伝播ニューラルネットワーク40における(N−1)個の層のそれぞれは、設定されている複数の係数が、ランダムな値であってもよい。
【0073】
さらに、(N−1)個の層のそれぞれは、複数の演算値に対して、予め設定されている関数演算を実行することにより複数の中間評価値を算出する。なお、(N−1)個の層のそれぞれは、予め設定されている関数が、第1ニューラルネットワーク21および第2ニューラルネットワーク22における対応する層に設定されている活性化関数と関連が無くてもよい。
【0074】
そして、逆伝播ニューラルネットワーク40は、(N−1)個の層のそれぞれにより算出した複数の中間評価値を、第1ニューラルネットワーク21および第2ニューラルネットワーク22における前段の層に対応する複数の中間評価値として係数更新部30に出力する。すなわち、逆伝播ニューラルネットワーク40は、第m層により算出した複数の中間評価値を、第1ニューラルネットワーク21および第2ニューラルネットワーク22における第(m−1)層に対応する複数の中間評価値として出力する。
【0075】
さらに、逆伝播ニューラルネットワーク40は、第N層が取得した複数の出力評価値を、第1ニューラルネットワーク21および第2ニューラルネットワーク22における第N層に対応する中間評価値として出力する。
【0076】
図6は、逆伝播ニューラルネットワーク40の第m層の入出力値、および、設定されている複数の係数を示す図である。逆伝播ニューラルネットワーク40の第m層は、次のような処理を行う。
【0077】
第m層は、後段の第(m+1)層から出力されたJ個の出力評価値を取得する。なお、m=Nの場合、第m層(すなわち、第N層)は、出力評価部36から出力されたJ個の出力評価値を、J個の中間評価値として取得する。第m層が取得するJ個の中間評価値のうち、j番目の中間評価値を、e
[m]jと表す。
【0078】
第m層は、I個の中間評価値を出力する。第m層が出力するI個の中間評価値のうち、i番目の中間評価値を、e
[m−1]iと表す。
【0079】
第m層は、J個の列およびI個の行の行列に対応して配置された(J×I)個の係数が設定されている。第m層に設定された(J×I)個の係数のうち、第j列および第i行に配置された係数を、α
[m]jiと表す。
【0080】
第m層は、I個の演算値を算出する。第m層が算出するI個の演算値のうち、i番目の演算値をs
[m−1]iと表す。
【0081】
このような場合、第m層は、下記の式(3)に示す行列乗算により、i=1〜IのI個の演算値を算出する。
【数2】
【0082】
ここで、式(3)の行列乗算は、第1ニューラルネットワーク21および第2ニューラルネットワーク22における第m層の行列乗算を転置させた行列乗算である。
【0083】
また、第m層には、関数が設定されている。第m層に設定された関数をg
[m](・)と表す。このような場合、第m層は、下記の式(4)に示す関数演算により、i=1〜IのI個の中間評価値を算出する。
e
[m−1]i=g
[m](s
[m−1]i)…(4)
【0084】
第m層は、算出したI個の中間評価値を、逆伝播ニューラルネットワーク40における(m−1)層に出力する。ただし、m=2の場合、第m層(すなわち、第2層)は、前段の層へI個の中間評価値を出力しない。
【0085】
さらに、このような第m層は、算出したI個の中間評価値を、第1ニューラルネットワーク21および第2ニューラルネットワーク22における(m−1)層に対応する複数の中間評価値として、係数更新部30に出力する。
【0086】
図7は、第1モードにおける演算装置10内での信号の入出力関係を示す図である。本実施形態において、係数更新部30は、第1から第NまでのN個の更新部44−1〜44−Nを有する。
【0087】
第1モードにおいて、係数更新部30は、第1〜第NまでのN個の層のそれぞれに対応して、第1ニューラルネットワーク21の前段の層から出力された複数の中間出力値を取得する。例えば、第1モードにおいて、第nの更新部44−nは、第1ニューラルネットワーク21の第(n−1)層から出力された複数の中間出力値を取得する。
【0088】
ただし、第1モードにおいて、係数更新部30は、第1層に対応する複数の中間出力値として、入力部24から出力された複数の入力値を取得する。例えば、第1モードにおいて、n=1の場合には、第nの更新部44−n(すなわち、第1の更新部44−1)は、入力部24から出力された複数の入力値を、複数の中間出力値として取得する。
【0089】
また、第1モードにおいて、係数更新部30は、N個の層のそれぞれに対応して、第1ニューラルネットワーク21の対応する層で算出された複数の積和演算値を取得する。例えば、第1モードにおいて、第nの更新部44−nは、第1ニューラルネットワーク21の第n層により算出された複数の積和演算値を取得する。
【0090】
また、第1モードにおいて、係数更新部30は、N個の層のそれぞれに対応して、対応する層について算出された複数の中間評価値を評価部28から取得する。例えば、第1モードにおいて、第nの更新部44−nは、逆伝播ニューラルネットワーク40における第(n−1)層から出力された複数の中間評価値を取得する。ただし、第1モードにおいて、n=Nの場合、第nの更新部44−n(すなわち、第Nの更新部44−N)は、出力評価部36から出力された複数の出力評価値を、複数の中間評価値として取得する。
【0091】
そして、第1モードにおいて、係数更新部30は、N個の層のそれぞれに対応して取得した複数の中間出力値、複数の積和演算値および複数の中間評価値に基づき、第2ニューラルネットワーク22のN個の層のそれぞれに設定されている複数の係数を更新する。例えば、第nの更新部44−nは、第n層に対応して取得した複数の中間出力値、複数の積和演算値および複数の中間評価値に基づき、第2ニューラルネットワーク22の第n層に設定されている複数の係数を更新する。
【0092】
図8は、第2モードにおける演算装置10内での信号の入出力関係を示す図である。
【0093】
第2モードにおいて、係数更新部30は、第1〜第NまでのN個の層のそれぞれに対応して、第2ニューラルネットワーク22の前段の層から出力された複数の中間出力値を取得する。例えば、例えば、第2モードにおいて、第nの更新部44−nは、第2ニューラルネットワーク22の第(n−1)層から出力された複数の中間出力値を取得する。
【0094】
ただし、第2モードにおいて、係数更新部30は、第1層に対応する複数の中間出力値として、入力部24から出力された複数の入力値を取得する。例えば、第2モードにおいて、n=1の場合には、第nの更新部44−n(すなわち、第1の更新部44−1)は、入力部24から出力された複数の入力値を、複数の中間出力値として取得する。
【0095】
また、第2モードにおいて、係数更新部30は、N個の層のそれぞれに対応して、第2ニューラルネットワーク22の対応する層で算出された複数の積和演算値を取得する。例えば、第2モードにおいて、第nの更新部44−nは、第2ニューラルネットワーク22の第n層により算出された複数の積和演算値を取得する。
【0096】
また、第2モードにおいて、係数更新部30は、N個の層のそれぞれに対応して、対応する層について算出された複数の中間評価値を評価部28から取得する。例えば、第2モードにおいて、第nの更新部44−nは、逆伝播ニューラルネットワーク40における第(n−1)層から出力された複数の中間評価値を取得する。ただし、第2モードにおいて、n=Nの場合、第nの更新部44−n(すなわち、第Nの更新部44−N)は、出力評価部36から出力された複数の出力評価値を、複数の中間評価値として取得する。
【0097】
そして、第2モードにおいて、係数更新部30は、N個の層のそれぞれに対応して取得した複数の中間出力値、複数の積和演算値および複数の中間評価値に基づき、第1ニューラルネットワーク21のN個の層のそれぞれに設定されている複数の係数を更新する。例えば、第nの更新部44−nは、第n層に対応して取得した複数の中間出力値、複数の積和演算値および複数の中間評価値に基づき、第1ニューラルネットワーク21の第n層に設定されている複数の係数を更新する。
【0098】
図9は、第nの更新部44−nの入出力値を示す図である。第nの更新部44−nは、次のような処理を行う。
【0099】
第nの更新部44−nは、I個の中間出力値(y
[n−1]1,…,y
[n−1]i,…y
[n−1]I)を取得する。また、第nの更新部44−nは、J個の積和演算値(v
[n]1,…,v
[n]j,…y
[n]J)を取得する。また、第nの更新部44−nは、J個の中間評価値(e
[n]1,…,e
[n]j,…e
[n]J)を取得する。
【0100】
そして、第nの更新部44−nは、第1ニューラルネットワーク21および第2ニューラルネットワーク22の第n層に設定された(I×J)個の係数(w
[n]11,…,w
[n]ij,…w
[n]IJ)を更新する。
【0101】
本実施形態においては、第nの更新部44−nは、第n層に設定された(I×J)個の係数のそれぞれについて、係数の誤差を評価するための評価関数の勾配を算出する。そして、第nの更新部44−nは、勾配を小さくするように(例えば、0とするように)、第n層に設定された(I×J)個の係数のそれぞれを変更する。
【0102】
例えば、第n層に設定された(I×J)個の係数のうち、i行j列の係数をw
[n]ijとする。この場合、第nの更新部44−nは、i行j列の係数を下記の式(5)に示すように変更する。なお、Eは、評価関数を表す。∂E/∂w
[n]ijは、i行j列の係数についての評価関数の勾配を表す。
w
[n]ij=w
[n]ij−∂E/∂w
[n]ij…(5)
【0103】
また、第1ニューラルネットワーク21および第2ニューラルネットワーク22における第n層に設定された活性化関数の微分関数をf
[n]´(・)とした場合、第nの更新部44−nは、勾配(∂E/∂w
[n]ij)を、下記の式(6)により算出する。
∂E/∂w
[n]ij=y
[n−1]i×f
[n]´(v
[n]j)×e
[n]j…(6)
【0104】
このような第nの更新部44−nは、誤差逆伝播法に相当する演算を実行して、第1ニューラルネットワーク21および第2ニューラルネットワーク22における第n層に設定された複数の係数を更新することができる。
【0105】
図10は、演算装置10の変形例の構成を示す図である。演算装置10は、評価部28および係数更新部30に代えて、第1モード用の評価部28−1と、第2モード用の評価部28−2と、第1モード用の係数更新部30−1と、第2モード用の係数更新部30−2とを備えてもよい。
【0106】
第1モード用の評価部28−1および第1モード用の評価部28−2は、
図1で示した評価部28と同一の構成である。第1モード用の係数更新部30−1および第1モード用の係数更新部30−2は、
図1で示した係数更新部30と同一の構成である。
【0107】
制御部32は、第1モードにおいて、第1モード用の評価部28−1および係数更新部30−1を動作させ、第2モード用の評価部28−2および係数更新部30−2の動作を停止させる。また、制御部32は、第2モードにおいて、第1モード用の評価部28−1および係数更新部30−1の動作を停止させ、第2モード用の評価部28−2および係数更新部30−2を動作させる。
【0108】
このような構成により、演算装置10は、第1ニューラルネットワーク21の近傍に第2モード用の係数更新部30−2を配置することができる。また、演算装置10は、第2ニューラルネットワーク22の近傍に第1モード用の係数更新部30−1を配置することができる。これにより、演算装置10は、物理的なスイッチ等を無くすことができ、また、係数更新のための配線等を短くすることができる。
【0109】
以上のように、演算装置10は、ニューラルネットワークによる演算処理と、ニューラルネットワークの学習処理とを並行に実行することができる。これにより、演算装置10によれば、演算処理を停止することなく、リアルタイムで学習処理を実行することができる。
【0110】
さらに、演算装置10は、ニューラルネットワークにおける複数の層のそれぞれに設定された係数を学習するための複数の中間評価値を、逆伝播ニューラルネットワーク40を用いて生成する。演算装置10は、このような逆伝播ニューラルネットワーク40を用いることにより、下記のような効果が生じる。
【0111】
ニューラルネットワークをハードウェアで実現する場合、例えば、係数は、抵抗値またはキャパシタの容量等により実現される。このため、ニューラルネットワークをハードウェアで実現する場合、学習装置は、係数を更新するために、比較的に長い時間を費やしてしまう。
【0112】
従来の誤差逆伝播法により係数を更新する場合、学習装置は、ある層の係数を更新するために、1つ後ろの層の係数の更新を完了していなければならない。このため、ハードウェアで実現されたニューラルネットワークを、従来の誤差逆伝播法により係数を更新した場合、学習装置は、ニューラルネットワークの全ての層について係数を更新するために、非常に多くの時間を必要としてしまう。
【0113】
これに対して、演算装置10は、複数の層のそれぞれについて複数の中間評価値を、逆伝播ニューラルネットワーク40を用いて算出する。このため、演算装置10は、対象のニューラルネットワークの係数を更新せずに、複数の層のそれぞれについての複数の中間評価値を算出することができる。従って、演算装置10によれば、高速に学習処理を実行することができる。なお、非特許文献1には、誤差逆伝播法を模倣するニューラルネットワークが学習に有効であることが記載されている。
【0114】
本発明の実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。