(57)【要約】【課題】演算処理と学習処理とを並行に実行する。【解決手段】演算装置は、第１ニューラルネットワークと、第２ニューラルネットワークと、評価部と、係数更新部と、制御部とを備える。第１ニューラルネットワークは、第１モードにおいて演算を実行する。第２ニューラルネットワークは、第１モードとは異なる第２モードにおいて演算を実行し、第１ニューラルネットワークと同一の層構造である。評価部は、第１モードにおいて第１ニューラルネットワークによる演算の誤差を評価し、第２モードにおいて第２ニューラルネットワークによる演算の誤差を評価する。係数更新部は、第１モードにおいて、第２ニューラルネットワークに設定されている複数の係数を更新し、第２モードにおいて、第１ニューラルネットワークに設定されている複数の係数を更新する。制御部は、第１モードおよび第２モードを交互に切り換え制御する。【選択図】図１
2020149625.tif 000002
【特許請求の範囲】
【請求項１】
第１モードにおいて演算を実行する第１ニューラルネットワークと、
前記第１モードとは異なる第２モードにおいて演算を実行し、前記第１ニューラルネットワークと同一の層構造の第２ニューラルネットワークと、
前記第１モードにおいて前記第１ニューラルネットワークによる演算の誤差を評価し、前記第２モードにおいて前記第２ニューラルネットワークによる演算の誤差を評価する評価部と、
前記第１モードにおいて、前記第１ニューラルネットワークによる演算の誤差を評価した評価結果に基づき前記第２ニューラルネットワークに設定されている複数の係数を更新し、前記第２モードにおいて、前記第２ニューラルネットワークによる演算の誤差を評価した評価結果に基づき前記第１ニューラルネットワークに設定されている複数の係数を更新する係数更新部と、
を備える演算装置。
【請求項２】
前記第１モードおよび前記第２モードを交互に切り換え制御する制御部
をさらに請求項１に記載の演算装置。
【請求項３】
前記第１ニューラルネットワークおよび前記第２ニューラルネットワークのそれぞれは、Ｎ個（Ｎは、２以上の整数）の層を有し、
前記第１ニューラルネットワークおよび前記第２ニューラルネットワークのそれぞれは、前記Ｎ個の層のそれぞれから複数の中間出力値を出力し、
前記評価部は、
前記第１モードにおいて、前記第２ニューラルネットワークの前記Ｎ個の層のそれぞれに対応させて、前記第１ニューラルネットワークの前記Ｎ個の層のそれぞれから出力された前記複数の中間出力値の誤差を評価した複数の中間評価値を生成し、
前記第２モードにおいて、前記第１ニューラルネットワークの前記Ｎ個の層のそれぞれに対応させて、前記第２ニューラルネットワークの前記Ｎ個の層のそれぞれから出力された前記複数の中間出力値の誤差を評価した前記複数の中間評価値を生成する
請求項２に記載の演算装置。
【請求項４】
前記係数更新部は、
前記第１モードにおいて、前記第１ニューラルネットワークの前記Ｎ個の層のそれぞれに対応する前記複数の中間評価値に基づき、前記第２ニューラルネットワークの前記Ｎ個の層のそれぞれに設定されている複数の係数を更新し、
前記第２モードにおいて、前記第２ニューラルネットワークの前記Ｎ個の層のそれぞれに対応する前記複数の中間評価値に基づき、前記第１ニューラルネットワークの前記Ｎ個の層のそれぞれに設定されている複数の係数を更新する
請求項３に記載の演算装置。
【請求項５】
前記第１ニューラルネットワークおよび前記第２ニューラルネットワークにおける前記Ｎ個の層のそれぞれは、前段の層から出力された前記複数の中間出力値と、設定されている複数の係数とを行列乗算することにより複数の積和演算値を算出し、前記複数の積和演算値に対して、予め設定されている活性化関数演算を実行することにより前記複数の中間出力値を算出する
請求項３または４に記載の演算装置。
【請求項６】
前記評価部は、
前記第１モードにおいて、前記第１ニューラルネットワークの第Ｎ層から出力された前記複数の中間出力値のそれぞれにおける複数の目標値のそれぞれに対する誤差を評価した複数の出力評価値を生成し、前記第２モードにおいて、前記第２ニューラルネットワークの第Ｎ層から出力された前記複数の中間出力値のそれぞれにおける前記複数の目標値のそれぞれに対する誤差を評価した前記複数の出力評価値を生成する出力評価部と、
前記複数の出力評価値を伝播させて、前記Ｎ個の層のそれぞれに対応する前記複数の中間評価値を出力する逆伝播ニューラルネットワークと、
を有する
請求項５に記載の演算装置。
【請求項７】
前記逆伝播ニューラルネットワークは、
前記第１ニューラルネットワークおよび前記第２ニューラルネットワークにおける第２層から第Ｎ層に対応する（Ｎ−１）個の層を有し、
前記複数の出力評価値を、第Ｎ層から第２層へ向かう方向に伝播し、
前記（Ｎ−１）個の層のそれぞれにおいて、前記第１ニューラルネットワークおよび前記第２ニューラルネットワークにおける対応する層の行列乗算を転置させた行列乗算を実行して、前記複数の中間評価値を算出する
請求項６に記載の演算装置。
【請求項８】
前記逆伝播ニューラルネットワークは、
前記（Ｎ−１）個の層のそれぞれにより算出した前記複数の中間評価値を、前記第１ニューラルネットワークおよび前記第２ニューラルネットワークにおける前段の層に対応する前記複数の中間評価値として出力し、
第Ｎ層が取得した前記複数の出力評価値を、前記第１ニューラルネットワークおよび前記第２ニューラルネットワークにおける第Ｎ層に対応する前記複数の中間評価値として出力する
請求項７に記載の演算装置。
【請求項９】
前記係数更新部は、
前記第１モードにおいて、
前記Ｎ個の層のそれぞれに対応して、前記第１ニューラルネットワークの前段の層から出力された前記複数の中間出力値、前記第１ニューラルネットワークの対応する層で算出された前記複数の積和演算値、および、前記評価部により生成された対応する層についての前記複数の中間評価値を取得し、
前記Ｎ個の層のそれぞれに対応して取得した前記複数の中間出力値、前記複数の積和演算値および前記複数の中間評価値に基づき、前記第２ニューラルネットワークの前記Ｎ個の層のそれぞれに設定されている複数の係数を更新し、
前記第２モードにおいて、
前記Ｎ個の層のそれぞれに対応して、前記第２ニューラルネットワークの前段の層から出力された前記複数の中間出力値、前記第２ニューラルネットワークの対応する層で算出された前記複数の積和演算値、および、前記評価部により生成された対応する層についての前記複数の中間評価値を取得し、
前記Ｎ個の層のそれぞれに対応して取得した前記複数の中間出力値、前記複数の積和演算値および前記複数の中間評価値に基づき、前記第１ニューラルネットワークの前記Ｎ個の層のそれぞれに設定されている複数の係数を更新する
請求項５から８の何れか１項に記載の演算装置。
【請求項１０】
前記第１ニューラルネットワークおよび前記第２ニューラルネットワークにおいて、
第ｎ層（ｎは、１以上Ｎ以下の整数）は、第（ｎ−１）層から出力されたＩ個（Ｉは、２以上の整数）の中間出力値を取得し、
第ｎ層は、Ｊ個（Ｊは、２以上の整数）の中間出力値を出力し、
第ｎ層は、Ｉ個の列およびＪ個の行の行列に対応して配置された（Ｉ×Ｊ）個の係数が設定されている
請求項９に記載の演算装置。
【請求項１１】
前記第１ニューラルネットワークおよび前記第２ニューラルネットワークにおける第ｎ層が取得するｉ番目（ｉは、１以上Ｉ以下の整数）の中間出力値をｙ［ｎ−１］ｉと表し、
前記第１ニューラルネットワークおよび前記第２ニューラルネットワークにおける第ｎ層が算出するｊ番目（ｊは、１以上Ｊ以下の整数）の積和演算値をｖ［ｎ］ｊと表し、
前記第１ニューラルネットワークおよび前記第２ニューラルネットワークにおける第ｎ層に設定された第ｉ列および第ｊ行の係数をｗ［ｎ］ｉｊと表した場合、
前記第１ニューラルネットワークおよび前記第２ニューラルネットワークの第ｎ層は、下記の式（１）の行列乗算により、ｊ＝１〜ＪまでのＪ個の積和演算値を算出する
【数１】
2020149625.tif 000005
請求項１０に記載の演算装置。
【請求項１２】
前記第１ニューラルネットワークおよび前記第２ニューラルネットワークにおける第ｎ層が出力するｊ番目の中間出力値をｙ［ｎ］ｊと表し、
前記第１ニューラルネットワークおよび前記第２ニューラルネットワークにおける第ｎ層に設定された活性化関数をｆ［ｎ］（・）と表した場合、
前記第１ニューラルネットワークおよび前記第２ニューラルネットワークの第ｎ層は、下記の式（２）の活性化関数演算により、ｊ＝１〜ＪまでのＪ個の中間出力値を算出する
ｙ［ｎ］ｊ＝ｆ［ｎ］（ｖ［ｎ］ｊ）…（２）
請求項１１に記載の演算装置。
【請求項１３】
前記逆伝播ニューラルネットワークにおける第ｎ層が取得するｊ番目の中間評価値をｅ［ｎ］ｊと表し、
前記第１ニューラルネットワークおよび前記第２ニューラルネットワークにおける第ｎ層に設定された活性化関数の微分関数をｆ［ｎ］´（・）と表し、
係数の誤差を評価するための評価関数をＥと表し、
前記第１ニューラルネットワークおよび前記第２ニューラルネットワークの第ｎ層に設定された第ｉ行および第ｊ列の係数の誤差を評価するための前記評価関数の勾配を、∂Ｅ／∂ｗ［ｎ］ｉｊと表した場合、
前記係数更新部は、前記第１ニューラルネットワークおよび前記第２ニューラルネットワークの第ｎ層に設定された第ｉ行および第ｊ列の係数を、式（３）により算出した∂Ｅ／∂ｗ［ｎ］ｉｊに基づき更新する
∂Ｅ／∂ｗ［ｎ］ｉｊ＝ｙ［ｎ−１］ｉ×ｆ［ｎ］´（ｖ［ｎ］ｊ）×ｅ［ｎ］ｊ…（３）
請求項１２に記載の演算装置。
【請求項１４】
前記第１モードにおいて、複数の入力値を前記第１ニューラルネットワークの第１層に与え、前記第２モードにおいて、前記複数の入力値を前記第２ニューラルネットワークの第１層に与える入力部と、
前記第１モードにおいて、前記第１ニューラルネットワークの最終層から出力された複数の値を、複数の出力値として出力し、前記第２モードにおいて、前記第２ニューラルネットワークの最終層から出力された複数の値を、前記複数の出力値として出力する出力部と、
をさらに備える請求項１から１３の何れか１項に記載の演算装置。
【請求項１５】
前記第１ニューラルネットワークは、ハードウェア回路により実現され、
前記第２ニューラルネットワークは、ハードウェア回路により実現される
請求項１から１４の何れか１項に記載の演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、演算装置に関する。
【背景技術】
【０００２】
近年、ハードウェア化したニューラルネットワークを用いて、脳型プロセッサを実現する技術が提案されている。脳型プロセッサでは、内部で学習器がニューラルネットワークに誤差データを与えて、ニューラルネットワークに設定されている重み係数等を最適化する。
【０００３】
従来のニューラルネットワークは、通常の演算処理を停止した状態で学習処理を実行し、重み係数を最適化する。このため、従来のニューラルネットワークは、外部のプロセッサにより学習処理を実行させることができた。
【０００４】
しかし、脳型プロセッサを実現する場合、ニューラルネットワークは、演算処理と学習処理とを並行して実行しなければならない。従って、この場合、ニューラルネットワークは、外部装置から受信した演算対象データを順方向に伝播させる処理と、学習用の誤差データを逆方向に伝播させる処理とを並行して実行しなければならない。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】久保博隆、橋本周司、「ＢＰ学習アルゴリズムを模倣するニューラルネットワークの構築」、第６６回情報処理学会  全国大会論文集、Ｐ２−２２９〜Ｐ２−２３０、２００４年
【０００６】
【非特許文献２】S.R.  Nandakumr  et  al.，  “Mixed-precision  architecture  based  on  computational  memory  for  training  deep  neural  networks”,  2018  IEEE  International  Symposium  on  Circuits  and  Systems（ISCAS）,  27-30  May  2018
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする課題は、演算処理と学習処理とを並行に実行することができる演算装置を提供することにある。
【課題を解決するための手段】
【０００８】
実施形態に係る演算装置は、第１ニューラルネットワークと、第２ニューラルネットワークと、評価部と、係数更新部と、制御部とを備える。前記第１ニューラルネットワークは、第１モードにおいて演算を実行する。前記第２ニューラルネットワークは、前記第１モードとは異なる第２モードにおいて演算を実行し、前記第１ニューラルネットワークと同一の層構造である。前記評価部は、前記第１モードにおいて前記第１ニューラルネットワークによる演算の誤差を評価し、前記第２モードにおいて前記第２ニューラルネットワークによる演算の誤差を評価する。前記係数更新部は、前記第１モードにおいて、前記第１ニューラルネットワークによる演算の誤差を評価した評価結果に基づき前記第２ニューラルネットワークに設定されている複数の係数を更新し、前記第２モードにおいて、前記第２ニューラルネットワークによる演算の誤差を評価した評価結果に基づき前記第１ニューラルネットワークに設定されている複数の係数を更新する。前記制御部は、前記第１モードおよび前記第２モードを交互に切り換え制御する。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係る演算装置の構成図。
【図２】演算装置による処理の流れを示すフローチャート。
【図３】第１および第２のニューラルネットワークの構成図。
【図４】第１および第２のニューラルネットワークの第ｎ層の入出力値を示す図。
【図５】評価部の構成図。
【図６】逆伝播ニューラルネットワークの第ｍ層の入出力値を示す図。
【図７】第１モードにおける信号の入出力関係を示す図。
【図８】第２モードにおける信号の入出力関係を示す図。
【図９】第ｎの更新部の入出力値を示す図。
【図１０】演算装置の変形例の構成図。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら実施形態に係る演算装置１０について説明する。実施形態に係る演算装置１０は、ニューラルネットワークにおける演算処理と学習処理とを並行に実行することができる。
【００１１】
図１は、実施形態に係る演算装置１０の構成を示す図である。演算装置１０は、半導体チップ等に実現されたハードウェアである。演算装置１０は、基板上に形成された回路であってもよい。また、演算装置１０は、複数の半導体チップまたは複数の基板に形成された回路であってもよい。
【００１２】
演算装置１０は、第１ニューラルネットワーク２１と、第２ニューラルネットワーク２２と、入力部２４と、出力部２６と、評価部２８と、係数更新部３０と、制御部３２とを備える。
【００１３】
第１ニューラルネットワーク２１は、ハードウェア回路により実現される。第１ニューラルネットワーク２１は、複数の層のそれぞれに設定される複数の係数が、例えば、ＲｅＲＡＭ（resistive  random  access  memory）等に用いられる可変抵抗素子であってもよいし、可変キャパシタ等であってもよい。
【００１４】
第２ニューラルネットワーク２２は、ハードウェア回路により実現される。第２ニューラルネットワーク２２は、第１ニューラルネットワーク２１と同一の層構造である。第１ニューラルネットワーク２１および第２ニューラルネットワーク２２は、層の数、それぞれの層に入出力する値の数、それぞれの層の行列乗算回路、および、それぞれの層の活性化関数回路が同一である。ただし、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２は、設定されている係数の値が異なってもよい。
【００１５】
また、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２のそれぞれは、Ｎ個（Ｎは、２以上の整数）の層を有する。第１ニューラルネットワーク２１および第２ニューラルネットワーク２２のそれぞれは、Ｎ個の層のそれぞれから複数の中間出力値を出力する。
【００１６】
ここで、演算装置１０は、第１モードと第２モードとで、動作が切り替わる。第１ニューラルネットワーク２１は、第１モードにおいて演算を実行し、第２モードにおいて演算を実行しない。反対に、第２ニューラルネットワーク２２は、第２モードにおいて演算を実行し、第１モードにおいて演算を実行しない。
【００１７】
また、第１ニューラルネットワーク２１は、第２モードにおいて、内部に設定されている複数の係数が更新され、第１モードにおいて、内部に設定されている複数の係数が更新されない。反対に、第２ニューラルネットワーク２２は、第１モードにおいて、内部に設定されている複数の係数が更新され、第２モードにおいて、内部に設定されている複数の係数が更新されない。
【００１８】
入力部２４は、他の装置から演算対象となる複数の入力値を受け取る。入力部２４は、第１モードにおいて、複数の入力値を第１ニューラルネットワーク２１の最初の層（第１層）に与える。入力部２４は、第２モードにおいて、複数の入力値を第２ニューラルネットワーク２２の最初の層（第１層）に与える。
【００１９】
出力部２６は、第１モードにおいて、第１ニューラルネットワーク２１の最終層（第Ｎ層）から出力された複数の中間出力値を、複数の出力値として他の装置に出力する。また、出力部２６は、第２モードにおいて、第２ニューラルネットワーク２２の最終層（第Ｎ層）から出力された複数の中間出力値を、複数の出力値として他の装置に出力する。
【００２０】
評価部２８は、第１モードにおいて、第１ニューラルネットワーク２１による演算の誤差を評価する。また、評価部２８は、第２モードにおいて、第２ニューラルネットワーク２２による演算の誤差を評価する。
【００２１】
例えば、評価部２８は、第１モードにおいて、第２ニューラルネットワーク２２のＮ個の層のそれぞれに対応させて、第１ニューラルネットワーク２１のＮ個の層のそれぞれから出力された複数の中間出力値の誤差を評価した複数の中間評価値を生成する。また、評価部２８は、第２モードにおいて、第１ニューラルネットワーク２１のＮ個の層のそれぞれに対応させて、第２ニューラルネットワーク２２のＮ個の層のそれぞれから出力された複数の中間出力値の誤差を評価した複数の中間評価値を生成する。
【００２２】
なお、評価部２８は、ハードウェア回路により実現されてもよいし、プロセッサがプログラムを実行することにより実現されてもよい。評価部２８については、後述において詳細をさらに説明する。
【００２３】
係数更新部３０は、第１モードにおいて、第１ニューラルネットワーク２１による演算の誤差を評価した評価結果に基づき、第２ニューラルネットワーク２２に設定されている複数の係数を更新する。また、係数更新部３０は、第２モードにおいて、第２ニューラルネットワーク２２による演算の誤差を評価した評価結果に基づき、第１ニューラルネットワーク２１に設定されている複数の係数を更新する。
【００２４】
例えば、係数更新部３０は、第１モードにおいて、第１ニューラルネットワーク２１のＮ個の層のそれぞれに対応する複数の中間評価値に基づき、第２ニューラルネットワーク２２のＮ個の層のそれぞれに設定されている複数の係数を更新する。
【００２５】
また、係数更新部３０は、第２モードにおいて、第２ニューラルネットワーク２２のＮ個の層のそれぞれに対応する複数の中間評価値に基づき、第１ニューラルネットワーク２１のＮ個の層のそれぞれに設定されている複数の係数を更新する。
【００２６】
例えば、係数更新部３０は、Ｎ個の層のそれぞれについて、設定されている複数の係数の誤差の勾配を算出する。そして、係数更新部３０は、係数の誤差の勾配を０とする方向に、設定されている複数の係数を変更する。
【００２７】
係数更新部３０は、ハードウェア回路により実現されてもよいし、プロセッサがプログラムを実行することにより実現されてもよい。なお、係数更新部３０については、後述において詳細をさらに説明する。
【００２８】
制御部３２は、第１モードと第２モードとを交互に切り換える。制御部３２は、例えば、一定期間毎に、モードを切り換えてもよい。制御部３２は、入力値を所定回受け取る毎に、モードを切り換えてもよい。
【００２９】
図２は、演算装置１０による処理の流れを示すフローチャートである。まず、Ｓ１１において、演算装置１０は、第１モードに設定されているとする。
【００３０】
Ｓ１１において、演算装置１０は、モードの切り替えがされたか否かを判断する。すなわち、演算装置１０は、第２モードに切り替えがされたか否かを判断する。
【００３１】
モードの切り替えがされていない場合（Ｓ１１のＮｏ）、Ｓ１２において、演算装置１０は、複数の入力値を取得したか否かを判断する。複数の入力値を取得していない場合（Ｓ１２のＮｏ）、演算装置１０は、処理をＳ１１に戻す。演算装置１０は、複数の入力値を取得した場合（Ｓ１２のＹｅｓ）、処理をＳ１３に進める。また、演算装置１０は、モードの切り替えがされた場合（Ｓ１１のＹｅｓ）、処理をＳ１６に進める。
【００３２】
Ｓ１３において、演算装置１０は、取得した複数の入力値に対して、第１ニューラルネットワーク２１による演算を実行する。この結果、演算装置１０は、複数の出力値を出力することができる。続いて、Ｓ１４において、演算装置１０は、第１ニューラルネットワーク２１による演算の誤差を評価する。続いて、Ｓ１５において、演算装置１０は、第１ニューラルネットワーク２１による演算の誤差を評価した評価結果に基づき、第２ニューラルネットワーク２２に設定されている複数の係数を更新する。
【００３３】
演算装置１０は、Ｓ１５の後に、処理をＳ１１に戻す。そして、演算装置１０は、第１モードの期間中、Ｓ１１からＳ１５までの処理を繰り返す。
【００３４】
一方、Ｓ１６に進んだ場合、演算装置１０は、第２モードに設定された状態となる。Ｓ１６において、演算装置１０は、モードの切り替えがされたか否かを判断する。すなわち、演算装置１０は、第１モードに切り替えがされたか否かを判断する。
【００３５】
モードの切り替えがされていない場合（Ｓ１６のＮｏ）、Ｓ１７において、演算装置１０は、複数の入力値を取得したか否かを判断する。複数の入力値を取得していない場合（Ｓ１７のＮｏ）、演算装置１０は、処理をＳ１６に戻す。演算装置１０は、複数の入力値を取得した場合（Ｓ１７のＹｅｓ）、処理をＳ１８に進める。また、演算装置１０は、モードの切り替えがされた場合（Ｓ１６のＹｅｓ）、処理をＳ１１に戻す。
【００３６】
Ｓ１８において、演算装置１０は、取得した複数の入力値に対して、第２ニューラルネットワーク２２による演算を実行する。この結果、演算装置１０は、複数の出力値を出力することができる。続いて、Ｓ１９において、演算装置１０は、第２ニューラルネットワーク２２による演算の誤差を評価する。続いて、Ｓ２０において、演算装置１０は、第２ニューラルネットワーク２２による演算の誤差を評価した評価結果に基づき、第１ニューラルネットワーク２１に設定されている複数の係数を更新する。
【００３７】
演算装置１０は、Ｓ２０の後に、処理をＳ１６に戻す。そして、演算装置１０は、第２モードの期間中、Ｓ１６からＳ２０までの処理を繰り返す。
【００３８】
以上の処理により、演算装置１０は、第１モードにおいて第１ニューラルネットワーク２１により演算を実行し、第２モードにおいて第２ニューラルネットワーク２２により演算を実行することができる。さらに、演算装置１０は、第１モードにおいて、第２ニューラルネットワーク２２に設定されている複数の係数を更新し、第２モードにおいて、第１ニューラルネットワーク２１に設定されている複数の係数を更新することができる。従って、演算装置１０によれば、ニューラルネットワークにおける演算処理と学習処理とを並行に実行することができる。
【００３９】
また、演算装置１０は、第１モードと第２モードとが交互に切り換えられる。これにより、演算装置１０は、第１ニューラルネットワーク２１に設定されている複数の係数の更新、および、第２ニューラルネットワーク２２に複数の係数の更新を交互に進めることができる。これにより、演算装置１０は、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２の両者を適応化させることができる。
【００４０】
図３は、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２の構成を示す図である。第１ニューラルネットワーク２１および第２ニューラルネットワーク２２における、第１層から第Ｎ層までのＮ個の層のそれぞれは、次のような処理を行う。
【００４１】
第１層は、入力部２４から複数の入力値を取得する。複数の入力値のうちのｘ番目（ｘは１以上の整数）の入力値を、ｙ［０］ｘと表す。
【００４２】
なお、ｙの上付きの中カッコ内の数値は、層番号を表す。［０］は、入力部２４の番号を表す。また、ｙの下付きの数値は、層に入力または層から出力される複数の値の中での順番を表す。他の変数についても同様である。
【００４３】
Ｎ個の層のそれぞれは、複数の中間出力値を後段の層に出力する。Ｎ個の層のそれぞれから出力される中間出力値の数は、互いに異なってもよい。第ｎ層から出力される複数の中間出力値のうちのｘ番目の中間出力値を、ｙ［ｎ］ｘと表す。ｎは、１からＮまでの任意の整数である。
【００４４】
第２層から第Ｎ層のそれぞれは、前段の層から、複数の中間出力値を取得する。なお、第２層から第Ｎ層のそれぞれが取得する中間出力値の数は、前段の層から出力される中間出力値の数と同一である。
【００４５】
また、Ｎ個の層のそれぞれは、前段の層から出力された複数の中間出力値と、設定されている複数の係数とを行列乗算することにより、複数の積和演算値を算出する。第ｎ層において算出された複数の積和演算値のうち、ｘ番目の積和演算値をｖ［ｎ］ｘと表す。
【００４６】
さらに、Ｎ個の層のそれぞれは、複数の積和演算値に対して、予め設定されている活性化関数演算を実行することにより、複数の中間出力値を算出する。そして、Ｎ個の層のそれぞれは、算出した複数の中間出力値を出力する。Ｎ個の層のそれぞれに設定されている活性化関数は、他の層と異なってもよい。
【００４７】
第Ｎ層は、複数の中間出力値を出力部２６に出力する。出力部２６は、第Ｎ層から出力された複数の中間出力値を、演算装置１０から出力される複数の出力値として他の装置に与える。
【００４８】
また、Ｎ個の層のそれぞれは、算出した複数の積和演算値および複数の中間出力値を、複数の係数を更新するために、係数更新部３０に出力する。Ｎ個の層のそれぞれから出力される積和演算値の数は、複数の中間出力値の数と同一である。
【００４９】
図４は、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２の第ｎ層の入出力値、および、設定されている複数の係数を示す図である。第１ニューラルネットワーク２１および第２ニューラルネットワーク２２の第ｎ層は、次のような処理を行う。
【００５０】
第ｎ層は、前段の第（ｎ−１）層から出力されたＩ個の中間出力値を取得する。Ｉは、２以上の整数である。なお、ｎ＝１の場合、第ｎ層（すなわち、第１層）は、入力部２４から出力されたＩ個の入力値を、Ｉ個の中間出力値として取得する。第ｎ層が取得するＩ個の中間出力値のうち、ｉ番目（ｉは、１以上Ｉ以下の整数）の中間出力値を、ｙ［ｎ−１］ｉと表す。
【００５１】
第ｎ層は、Ｊ個の中間出力値を出力する。Ｊは、２以上の整数である。第ｎ層が出力するＪ個の中間出力値のうち、ｊ番目（ｊは、１以上Ｊ以下の整数）の中間出力値を、ｙ［ｎ］ｊと表す。
【００５２】
第ｎ層は、Ｉ個の列およびＪ個の行の行列に対応して配置された（Ｉ×Ｊ）個の係数が設定されている。第ｎ層に設定された（Ｉ×Ｊ）個の係数のうち、第ｉ列および第ｊ行に配置された係数を、ｗ［ｎ］ｉｊと表す。
【００５３】
第ｎ層は、Ｊ個の積和演算値を算出する。第ｎ層が算出するＪ個の積和演算値のうち、ｊ番目の積和演算値をｖ［ｎ］ｊと表す。
【００５４】
このような場合、第ｎ層は、下記の式（１）に示す行列乗算により、ｊ＝１〜ＪのＪ個の積和演算値を算出する。
【数１】
2020149625.tif 000003
【００５５】
また、第ｎ層には、活性化関数が設定されている。第ｎ層に設定された活性化関数をｆ［ｎ］（・）と表す。
【００５６】
そして、第ｎ層は、下記の式（２）に示す活性化関数演算により、ｊ＝１〜ＪのＪ個の中間出力値を算出する。
ｙ［ｎ］ｊ＝ｆ［ｎ］（ｖ［ｎ］ｊ）…（２）
【００５７】
第ｎ層は、算出したＪ個の中間出力値を（ｎ＋１）層に出力する。なお、ｎ＝Ｎである場合、第ｎ層（すなわち、第Ｎ層）は、算出したＪ個の中間出力値を出力部２６に与える。
【００５８】
また、第ｎ層は、算出したＪ個の積和演算値およびＪ個の中間出力値を、係数更新のために、係数更新部３０に出力する。
【００５９】
図５は、評価部２８の構成を示す図である。評価部２８は、出力評価部３６と、逆伝播ニューラルネットワーク４０とを有する。
【００６０】
出力評価部３６は、演算装置１０から出力される複数の出力値の目標（教師）となる複数の目標値を、他の装置から取得する。複数の目標値のうち、ｘ番目の目標値を、ｔｘと表す。
【００６１】
また、出力評価部３６は、第１モードにおいて、第１ニューラルネットワーク２１の第Ｎ層から出力された複数の中間出力値を取得する。そして、出力評価部３６は、第１モードにおいて、第１ニューラルネットワーク２１の第Ｎ層から出力された複数の中間出力値のそれぞれにおける複数の目標値のそれぞれに対する誤差を評価した複数の出力評価値を生成する。
【００６２】
また、出力評価部３６は、第２モードにおいて、第２ニューラルネットワーク２２の第Ｎ層から出力された複数の中間出力値を取得する。そして、出力評価部３６は、第２モードにおいて、第２ニューラルネットワーク２２の第Ｎ層から出力された複数の中間出力値のそれぞれにおける複数の目標値のそれぞれに対する誤差を評価した複数の出力評価値を生成する。
【００６３】
出力評価部３６は、例えば、プロセッサ回路により実現される場合、予め設定された損失関数に対して、第１ニューラルネットワーク２１または第２ニューラルネットワーク２２の第Ｎ層から出力された複数の中間出力値および複数の目標値を代入して、複数の出力評価値を生成してもよい。なお、出力評価部３６は、損失関数に相当する処理を実行可能なハードウェア回路を有してもよい。
【００６４】
出力評価部３６は、複数の出力評価値を逆伝播ニューラルネットワーク４０に与える。複数の出力評価値のうち、ｘ番目の出力評価値を、ｅ［Ｎ］ｘと表す。
【００６５】
逆伝播ニューラルネットワーク４０は、出力評価部３６から出力された複数の出力評価値を伝播させて、Ｎ個の層のそれぞれに対応する複数の中間評価値を出力する。
【００６６】
逆伝播ニューラルネットワーク４０は、ハードウェア回路により実現されたニューラルネットワークである。逆伝播ニューラルネットワーク４０は、複数の層のそれぞれに設定される複数の係数が、例えば、ＲｅＲＡＭ等に用いられる可変抵抗素子であってもよいし、可変キャパシタ等であってもよい。
【００６７】
逆伝播ニューラルネットワーク４０は、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２における第２層から第Ｎ層に対応する（Ｎ−１）個の層を有する。逆伝播ニューラルネットワーク４０は、出力評価部３６から受け取った複数の出力評価値を、第Ｎ層から第２層へ向かう方向に伝播する。
【００６８】
第Ｎ層は、出力評価部３６から複数の出力評価値を取得する。複数の入力値のうちのｘ番目の出力評価値を、ｅ［Ｎ］ｘと表す。
【００６９】
第２層から第（Ｎ−１）層のそれぞれは、後段の層から、複数の中間評価値を取得する。第ｍ層から出力される複数の中間評価値のうちのｘ番目の中間評価値を、ｅ［ｍ］ｘと表す。ｍは、２からＮまでの任意の整数である。
【００７０】
なお、（Ｎ−１）個の層のそれぞれが取得する中間評価値の数は、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２における対応する層が出力する中間出力値の数と同一である。
【００７１】
（Ｎ−１）個の層のそれぞれは、後段の層から出力された複数の中間評価値と、設定されている複数の係数とを行列乗算することにより複数の演算値を算出する。
【００７２】
ここで、（Ｎ−１）個の層のそれぞれは、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２における対応する層の行列乗算を転置させた行列乗算を実行することにより、複数の演算値を算出する。なお、（Ｎ−１）個の層のそれぞれは、設定されている複数の係数が、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２における対応する層に設定されている複数の係数と関連が無くてもよい。例えば、逆伝播ニューラルネットワーク４０における（Ｎ−１）個の層のそれぞれは、設定されている複数の係数が、ランダムな値であってもよい。
【００７３】
さらに、（Ｎ−１）個の層のそれぞれは、複数の演算値に対して、予め設定されている関数演算を実行することにより複数の中間評価値を算出する。なお、（Ｎ−１）個の層のそれぞれは、予め設定されている関数が、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２における対応する層に設定されている活性化関数と関連が無くてもよい。
【００７４】
そして、逆伝播ニューラルネットワーク４０は、（Ｎ−１）個の層のそれぞれにより算出した複数の中間評価値を、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２における前段の層に対応する複数の中間評価値として係数更新部３０に出力する。すなわち、逆伝播ニューラルネットワーク４０は、第ｍ層により算出した複数の中間評価値を、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２における第（ｍ−１）層に対応する複数の中間評価値として出力する。
【００７５】
さらに、逆伝播ニューラルネットワーク４０は、第Ｎ層が取得した複数の出力評価値を、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２における第Ｎ層に対応する中間評価値として出力する。
【００７６】
図６は、逆伝播ニューラルネットワーク４０の第ｍ層の入出力値、および、設定されている複数の係数を示す図である。逆伝播ニューラルネットワーク４０の第ｍ層は、次のような処理を行う。
【００７７】
第ｍ層は、後段の第（ｍ＋１）層から出力されたＪ個の出力評価値を取得する。なお、ｍ＝Ｎの場合、第ｍ層（すなわち、第Ｎ層）は、出力評価部３６から出力されたＪ個の出力評価値を、Ｊ個の中間評価値として取得する。第ｍ層が取得するＪ個の中間評価値のうち、ｊ番目の中間評価値を、ｅ［ｍ］ｊと表す。
【００７８】
第ｍ層は、Ｉ個の中間評価値を出力する。第ｍ層が出力するＩ個の中間評価値のうち、ｉ番目の中間評価値を、ｅ［ｍ−１］ｉと表す。
【００７９】
第ｍ層は、Ｊ個の列およびＩ個の行の行列に対応して配置された（Ｊ×Ｉ）個の係数が設定されている。第ｍ層に設定された（Ｊ×Ｉ）個の係数のうち、第ｊ列および第ｉ行に配置された係数を、α［ｍ］ｊｉと表す。
【００８０】
第ｍ層は、Ｉ個の演算値を算出する。第ｍ層が算出するＩ個の演算値のうち、ｉ番目の演算値をｓ［ｍ−１］ｉと表す。
【００８１】
このような場合、第ｍ層は、下記の式（３）に示す行列乗算により、ｉ＝１〜ＩのＩ個の演算値を算出する。
【数２】
2020149625.tif 000004
【００８２】
ここで、式（３）の行列乗算は、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２における第ｍ層の行列乗算を転置させた行列乗算である。
【００８３】
また、第ｍ層には、関数が設定されている。第ｍ層に設定された関数をｇ［ｍ］（・）と表す。このような場合、第ｍ層は、下記の式（４）に示す関数演算により、ｉ＝１〜ＩのＩ個の中間評価値を算出する。
ｅ［ｍ−１］ｉ＝ｇ［ｍ］（ｓ［ｍ−１］ｉ）…（４）
【００８４】
第ｍ層は、算出したＩ個の中間評価値を、逆伝播ニューラルネットワーク４０における（ｍ−１）層に出力する。ただし、ｍ＝２の場合、第ｍ層（すなわち、第２層）は、前段の層へＩ個の中間評価値を出力しない。
【００８５】
さらに、このような第ｍ層は、算出したＩ個の中間評価値を、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２における（ｍ−１）層に対応する複数の中間評価値として、係数更新部３０に出力する。
【００８６】
図７は、第１モードにおける演算装置１０内での信号の入出力関係を示す図である。本実施形態において、係数更新部３０は、第１から第ＮまでのＮ個の更新部４４−１〜４４−Ｎを有する。
【００８７】
第１モードにおいて、係数更新部３０は、第１〜第ＮまでのＮ個の層のそれぞれに対応して、第１ニューラルネットワーク２１の前段の層から出力された複数の中間出力値を取得する。例えば、第１モードにおいて、第ｎの更新部４４−ｎは、第１ニューラルネットワーク２１の第（ｎ−１）層から出力された複数の中間出力値を取得する。
【００８８】
ただし、第１モードにおいて、係数更新部３０は、第１層に対応する複数の中間出力値として、入力部２４から出力された複数の入力値を取得する。例えば、第１モードにおいて、ｎ＝１の場合には、第ｎの更新部４４−ｎ（すなわち、第１の更新部４４−１）は、入力部２４から出力された複数の入力値を、複数の中間出力値として取得する。
【００８９】
また、第１モードにおいて、係数更新部３０は、Ｎ個の層のそれぞれに対応して、第１ニューラルネットワーク２１の対応する層で算出された複数の積和演算値を取得する。例えば、第１モードにおいて、第ｎの更新部４４−ｎは、第１ニューラルネットワーク２１の第ｎ層により算出された複数の積和演算値を取得する。
【００９０】
また、第１モードにおいて、係数更新部３０は、Ｎ個の層のそれぞれに対応して、対応する層について算出された複数の中間評価値を評価部２８から取得する。例えば、第１モードにおいて、第ｎの更新部４４−ｎは、逆伝播ニューラルネットワーク４０における第（ｎ−１）層から出力された複数の中間評価値を取得する。ただし、第１モードにおいて、ｎ＝Ｎの場合、第ｎの更新部４４−ｎ（すなわち、第Ｎの更新部４４−Ｎ）は、出力評価部３６から出力された複数の出力評価値を、複数の中間評価値として取得する。
【００９１】
そして、第１モードにおいて、係数更新部３０は、Ｎ個の層のそれぞれに対応して取得した複数の中間出力値、複数の積和演算値および複数の中間評価値に基づき、第２ニューラルネットワーク２２のＮ個の層のそれぞれに設定されている複数の係数を更新する。例えば、第ｎの更新部４４−ｎは、第ｎ層に対応して取得した複数の中間出力値、複数の積和演算値および複数の中間評価値に基づき、第２ニューラルネットワーク２２の第ｎ層に設定されている複数の係数を更新する。
【００９２】
図８は、第２モードにおける演算装置１０内での信号の入出力関係を示す図である。
【００９３】
第２モードにおいて、係数更新部３０は、第１〜第ＮまでのＮ個の層のそれぞれに対応して、第２ニューラルネットワーク２２の前段の層から出力された複数の中間出力値を取得する。例えば、例えば、第２モードにおいて、第ｎの更新部４４−ｎは、第２ニューラルネットワーク２２の第（ｎ−１）層から出力された複数の中間出力値を取得する。
【００９４】
ただし、第２モードにおいて、係数更新部３０は、第１層に対応する複数の中間出力値として、入力部２４から出力された複数の入力値を取得する。例えば、第２モードにおいて、ｎ＝１の場合には、第ｎの更新部４４−ｎ（すなわち、第１の更新部４４−１）は、入力部２４から出力された複数の入力値を、複数の中間出力値として取得する。
【００９５】
また、第２モードにおいて、係数更新部３０は、Ｎ個の層のそれぞれに対応して、第２ニューラルネットワーク２２の対応する層で算出された複数の積和演算値を取得する。例えば、第２モードにおいて、第ｎの更新部４４−ｎは、第２ニューラルネットワーク２２の第ｎ層により算出された複数の積和演算値を取得する。
【００９６】
また、第２モードにおいて、係数更新部３０は、Ｎ個の層のそれぞれに対応して、対応する層について算出された複数の中間評価値を評価部２８から取得する。例えば、第２モードにおいて、第ｎの更新部４４−ｎは、逆伝播ニューラルネットワーク４０における第（ｎ−１）層から出力された複数の中間評価値を取得する。ただし、第２モードにおいて、ｎ＝Ｎの場合、第ｎの更新部４４−ｎ（すなわち、第Ｎの更新部４４−Ｎ）は、出力評価部３６から出力された複数の出力評価値を、複数の中間評価値として取得する。
【００９７】
そして、第２モードにおいて、係数更新部３０は、Ｎ個の層のそれぞれに対応して取得した複数の中間出力値、複数の積和演算値および複数の中間評価値に基づき、第１ニューラルネットワーク２１のＮ個の層のそれぞれに設定されている複数の係数を更新する。例えば、第ｎの更新部４４−ｎは、第ｎ層に対応して取得した複数の中間出力値、複数の積和演算値および複数の中間評価値に基づき、第１ニューラルネットワーク２１の第ｎ層に設定されている複数の係数を更新する。
【００９８】
図９は、第ｎの更新部４４−ｎの入出力値を示す図である。第ｎの更新部４４−ｎは、次のような処理を行う。
【００９９】
第ｎの更新部４４−ｎは、Ｉ個の中間出力値（ｙ［ｎ−１］１，…，ｙ［ｎ−１］ｉ，…ｙ［ｎ−１］Ｉ）を取得する。また、第ｎの更新部４４−ｎは、Ｊ個の積和演算値（ｖ［ｎ］１，…，ｖ［ｎ］ｊ，…ｙ［ｎ］Ｊ）を取得する。また、第ｎの更新部４４−ｎは、Ｊ個の中間評価値（ｅ［ｎ］１，…，ｅ［ｎ］ｊ，…ｅ［ｎ］Ｊ）を取得する。
【０１００】
そして、第ｎの更新部４４−ｎは、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２の第ｎ層に設定された（Ｉ×Ｊ）個の係数（ｗ［ｎ］１１，…，ｗ［ｎ］ｉｊ，…ｗ［ｎ］ＩＪ）を更新する。
【０１０１】
本実施形態においては、第ｎの更新部４４−ｎは、第ｎ層に設定された（Ｉ×Ｊ）個の係数のそれぞれについて、係数の誤差を評価するための評価関数の勾配を算出する。そして、第ｎの更新部４４−ｎは、勾配を小さくするように（例えば、０とするように）、第ｎ層に設定された（Ｉ×Ｊ）個の係数のそれぞれを変更する。
【０１０２】
例えば、第ｎ層に設定された（Ｉ×Ｊ）個の係数のうち、ｉ行ｊ列の係数をｗ［ｎ］ｉｊとする。この場合、第ｎの更新部４４−ｎは、ｉ行ｊ列の係数を下記の式（５）に示すように変更する。なお、Ｅは、評価関数を表す。∂Ｅ／∂ｗ［ｎ］ｉｊは、ｉ行ｊ列の係数についての評価関数の勾配を表す。
ｗ［ｎ］ｉｊ＝ｗ［ｎ］ｉｊ−∂Ｅ／∂ｗ［ｎ］ｉｊ…（５）
【０１０３】
また、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２における第ｎ層に設定された活性化関数の微分関数をｆ［ｎ］´（・）とした場合、第ｎの更新部４４−ｎは、勾配（∂Ｅ／∂ｗ［ｎ］ｉｊ）を、下記の式（６）により算出する。
∂Ｅ／∂ｗ［ｎ］ｉｊ＝ｙ［ｎ−１］ｉ×ｆ［ｎ］´（ｖ［ｎ］ｊ）×ｅ［ｎ］ｊ…（６）
【０１０４】
このような第ｎの更新部４４−ｎは、誤差逆伝播法に相当する演算を実行して、第１ニューラルネットワーク２１および第２ニューラルネットワーク２２における第ｎ層に設定された複数の係数を更新することができる。
【０１０５】
図１０は、演算装置１０の変形例の構成を示す図である。演算装置１０は、評価部２８および係数更新部３０に代えて、第１モード用の評価部２８−１と、第２モード用の評価部２８−２と、第１モード用の係数更新部３０−１と、第２モード用の係数更新部３０−２とを備えてもよい。
【０１０６】
第１モード用の評価部２８−１および第１モード用の評価部２８−２は、図１で示した評価部２８と同一の構成である。第１モード用の係数更新部３０−１および第１モード用の係数更新部３０−２は、図１で示した係数更新部３０と同一の構成である。
【０１０７】
制御部３２は、第１モードにおいて、第１モード用の評価部２８−１および係数更新部３０−１を動作させ、第２モード用の評価部２８−２および係数更新部３０−２の動作を停止させる。また、制御部３２は、第２モードにおいて、第１モード用の評価部２８−１および係数更新部３０−１の動作を停止させ、第２モード用の評価部２８−２および係数更新部３０−２を動作させる。
【０１０８】
このような構成により、演算装置１０は、第１ニューラルネットワーク２１の近傍に第２モード用の係数更新部３０−２を配置することができる。また、演算装置１０は、第２ニューラルネットワーク２２の近傍に第１モード用の係数更新部３０−１を配置することができる。これにより、演算装置１０は、物理的なスイッチ等を無くすことができ、また、係数更新のための配線等を短くすることができる。
【０１０９】
以上のように、演算装置１０は、ニューラルネットワークによる演算処理と、ニューラルネットワークの学習処理とを並行に実行することができる。これにより、演算装置１０によれば、演算処理を停止することなく、リアルタイムで学習処理を実行することができる。
【０１１０】
さらに、演算装置１０は、ニューラルネットワークにおける複数の層のそれぞれに設定された係数を学習するための複数の中間評価値を、逆伝播ニューラルネットワーク４０を用いて生成する。演算装置１０は、このような逆伝播ニューラルネットワーク４０を用いることにより、下記のような効果が生じる。
【０１１１】
ニューラルネットワークをハードウェアで実現する場合、例えば、係数は、抵抗値またはキャパシタの容量等により実現される。このため、ニューラルネットワークをハードウェアで実現する場合、学習装置は、係数を更新するために、比較的に長い時間を費やしてしまう。
【０１１２】
従来の誤差逆伝播法により係数を更新する場合、学習装置は、ある層の係数を更新するために、１つ後ろの層の係数の更新を完了していなければならない。このため、ハードウェアで実現されたニューラルネットワークを、従来の誤差逆伝播法により係数を更新した場合、学習装置は、ニューラルネットワークの全ての層について係数を更新するために、非常に多くの時間を必要としてしまう。
【０１１３】
これに対して、演算装置１０は、複数の層のそれぞれについて複数の中間評価値を、逆伝播ニューラルネットワーク４０を用いて算出する。このため、演算装置１０は、対象のニューラルネットワークの係数を更新せずに、複数の層のそれぞれについての複数の中間評価値を算出することができる。従って、演算装置１０によれば、高速に学習処理を実行することができる。なお、非特許文献１には、誤差逆伝播法を模倣するニューラルネットワークが学習に有効であることが記載されている。
【０１１４】
本発明の実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１５】
１０  演算装置
２１  第１ニューラルネットワーク
２２  第２ニューラルネットワーク
２４  入力部
２６  出力部
２８  評価部
３０  係数更新部
３２  制御部
３６  出力評価部
４０  逆伝播ニューラルネットワーク
【図１】
2020149625.tif 000006
【図２】
2020149625.tif 000007
【図３】
2020149625.tif 000008
【図４】
2020149625.tif 000009
【図５】
2020149625.tif 000010
【図６】
2020149625.tif 000011
【図７】
2020149625.tif 000012
【図８】
2020149625.tif 000013
【図９】
2020149625.tif 000014
【図１０】
2020149625.tif 000015