JP2019095860A - ニューラルネットワーク装置および演算装置 - Google Patents

ニューラルネットワーク装置および演算装置 Download PDF

Info

Publication number
JP2019095860A
JP2019095860A JP2017222258A JP2017222258A JP2019095860A JP 2019095860 A JP2019095860 A JP 2019095860A JP 2017222258 A JP2017222258 A JP 2017222258A JP 2017222258 A JP2017222258 A JP 2017222258A JP 2019095860 A JP2019095860 A JP 2019095860A
Authority
JP
Japan
Prior art keywords
values
multipliers
value
resistance change
row
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017222258A
Other languages
English (en)
Other versions
JP6786466B2 (ja
Inventor
孝生 丸亀
Takao Marugame
孝生 丸亀
久美子 野村
Kumiko Nomura
久美子 野村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2017222258A priority Critical patent/JP6786466B2/ja
Priority to US15/909,446 priority patent/US20190156181A1/en
Publication of JP2019095860A publication Critical patent/JP2019095860A/ja
Application granted granted Critical
Publication of JP6786466B2 publication Critical patent/JP6786466B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/388Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using other various devices such as electro-chemical, microwave, surface acoustic wave, neuristor, electron beam switching, resonant, e.g. parametric, ferro-resonant
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Amplifiers (AREA)

Abstract

【課題】順方向処理および逆方向処理を実行する。【解決手段】実施形態に係るニューラルネットワーク装置は、制御部と、行列演算部とを備える。制御部は、順方向処理において、それぞれが演算を実行する複数の層に対して複数の信号値を順方向に伝播させ、逆方向処理において、複数の層に対して複数の誤差値を逆方向に伝播させる。行列演算部は、複数の層における少なくとも一部の層間を伝播する複数の値に対して演算を実行する。複数の層は、第1層と、第1層に対して順方向に隣接する第2層とを含む。行列演算部は、(m×n)個の乗算器と、加算回路と、を有する。(m×n)個の乗算器は、m行およびn列(mおよびnは1以上の整数であり、一方が1の場合には他方は2以上)の係数行列に含まれる(m×n)個の係数に一対一に対応して設けられる。加算回路は、順方向処理と逆方向処理とで値を加算するパターンを切り換える。【選択図】図10

Description

本発明の実施形態は、ニューラルネットワーク装置および演算装置に関する。
ニューラルネットワークは、通常の演算時において、複数の層に対して、信号値を入力層から出力層に向かう方向(順方向)に伝播させる。また、ニューラルネットワークは、学習時において、複数の層に対して、誤差値を出力層から入力層へ向かう方向(逆方向)に伝播させる。
また、ニューラルネットワークは、隣接する2つの層の間で複数の信号値(または複数の誤差値)を伝播させる場合に、前段の層から出力された複数の信号値のそれぞれに対して係数(重み)を乗じ、係数が乗じられた複数の信号値を加算する。すなわち、ニューラルネットワークは、2つの層の間で複数の信号値(または複数の誤差値)を伝播させる場合、乗累算(積和演算)を実行する。
近年、ニューラルネットワークをハードウェアで実現した装置が提案されている。この装置は、通常の演算時の処理(順方向処理)を専用のハードウェアで実行する。しかし、この装置は、学習時における処理(逆方向処理)を、専用のハードウェアとは別個のプロセッサにより実行する。
ニューラルネットワークは、通常の演算時と学習時とで、同一の係数を用いて2つの層間の乗累算を実行する。しかし、通常の演算時と学習時とで別個のプロセッサ等により乗累算を実行した場合、通常の演算時に用いる係数と、学習時に用いる係数と間に誤差が生じ、学習精度が悪くなる可能性があった。
米国特許出願公開第2016/0336064号明細書 米国特許出願公開第2016/0284400号明細書 米国特許出願公開第2015/0088797号明細書
Geoffrey W. Burr, "Analog resistive neuromorphic hardware", IBM Research - Almaden., BioComp Summer School, 2017年6月30日
本発明が解決しようとする課題は、順方向処理および逆方向処理を実行するニューラルネットワーク装置および演算装置を提供することにある。
実施形態に係るニューラルネットワーク装置は、制御部と、行列演算部とを備える。前記制御部は、順方向処理において、それぞれが演算を実行する複数の層に対して複数の信号値を順方向に伝播させ、逆方向処理において、前記複数の層に対して複数の誤差値を逆方向に伝播させる。前記行列演算部は、前記複数の層における少なくとも一部の層間を伝播する複数の値に対して演算を実行する。前記複数の層は、第1層と、前記第1層に対して順方向に隣接する第2層とを含む。前記行列演算部は、(m×n)個の乗算器と、加算回路と、を有する。前記(m×n)個の乗算器は、m行およびn列(mおよびnは1以上の整数であり、一方が1の場合には他方は2以上)の係数行列に含まれる(m×n)個の係数に一対一に対応して設けられる。前記加算回路は、前記順方向処理と前記逆方向処理とで、前記(m×n)個の乗算器のそれぞれから出力された値を加算するパターンを切り換える。
実施形態に係るニューラルネットワーク装置の構成を示す図。 順方向処理の内容を示す図。 逆方向処理の内容を示す図。 複数の層に含まれる第1層および第2層を示す図。 第1層と第2層との間のリンクを示す図。 順方向処理において、行列演算部に入出力される値を示す図。 逆方向処理において、行列演算部に入出力される値を示す図。 順方向処理において、行列演算部および層演算部での演算内容を示す図。 逆方向処理において、行列演算部および層演算部での演算内容を示す図。 実施形態に係る行列演算部の構成を示す図。 順方向処理における行列演算部内の接続を示す図。 逆方向処理における行列演算部内の接続を示す図。 実施形態に係るニューラルネットワーク装置の処理の流れを示す図。 行列演算部の第1回路例であって、順方向処理での接続を示す図。 行列演算部の第1回路例であって、逆方向処理での接続を示す図。 行列演算部の第2回路例を示す図。 行列演算部の第3回路例を示す図。 行列演算部の第4回路例を示す図。
以下、図面を参照しながら実施形態に係るニューラルネットワーク装置10について説明する。実施形態に係るニューラルネットワーク装置10は、通常の演算時におけるデータ伝播処理(順方向処理)と学習時におけるデータ伝播処理(逆方向処理)とを共通のハードウェアを用いて実行する。
図1は、実施形態に係るニューラルネットワーク装置10の構成を示す図である。ニューラルネットワーク装置10は、プロセッサ12と、メモリ部14と、通信部16と、行列演算部20とを備える。プロセッサ12、メモリ部14、通信部16および行列演算部20は、例えばバスを介して接続される。プロセッサ12、メモリ部14、通信部16および行列演算部20は、1つの半導体装置内に実装されてもよいし、1つの基板上に設けられた複数の半導体装置に実装されていてもよいし、複数の基板に設けられた複数の半導体装置に実装されていてもよい。
ニューラルネットワーク装置10は、外部装置から1または複数の入力値を受信する。ニューラルネットワーク装置10は、取得した1または複数の入力値に対してニューラルネットワークを用いた演算処理を実行する。そして、ニューラルネットワーク装置10は、ニューラルネットワークを用いた演算処理の結果である1または複数の出力値を外部装置に送信する。
外部装置は、ニューラルネットワーク装置10と同一の半導体装置に実装された機能ブロックであってもよいし、同一の基板に設けられた他の半導体装置であってもよいし、異なる基板に設けられた半導体装置であってもよい。また、外部装置は、ニューラルネットワーク装置10とネットワークケーブルまたは無線伝送路等を介して接続された別個の装置であってもよい。
ニューラルネットワーク装置10は、通常の演算処理を実行する。ニューラルネットワーク装置10は、例えば、通常の演算処理として、パターン認識処理、データ解析処理および制御処理等の様々な情報処理を実行する。
さらに、ニューラルネットワーク装置10は、通常の演算処理と並行して、学習処理を実行する。ニューラルネットワーク装置10は、学習処理により、通常の演算処理をより適切に行うように、ニューラルネットワークに含まれる複数の係数(重み)を変更する。なお、ニューラルネットワーク装置10は、学習処理をした結果を外部装置へ送信してもしなくてもよい。
プロセッサ12は、例えば、CPU(Central Processing Unit)またはGPU(Graphics Processing Unit)等であって、プログラムを実行して所定の演算機能および制御機能等を実現する。プロセッサ12が実行するプログラムは、記憶媒体等に格納され、プロセッサ12が記録媒体から読み出して実行する。また、プロセッサ12が実行するプログラムは、ニューラルネットワーク装置10に組み込まれたROM(Read Only Memory)等に格納されていてもよい。また、プロセッサ12は、ニューラルネットワークを用いた演算処理のために特化した専用のハードウェアであってもよい。
プロセッサ12は、層演算部22、制御部24および学習部26の機能を実現する。層演算部22は、ニューラルネットワークに含まれる複数の層に対応する処理を実行する。
複数の層のそれぞれは、入力された1または複数の値に対して所定の演算および処理をする。そして、複数の層のそれぞれは、演算および処理の結果として、1または複数の値を出力する。具体的には、通常の演算時において、複数の層のそれぞれは、入力された1または複数の値(複数の信号値)に対して、活性化関数の演算等を実行する。学習時において、複数の層のそれぞれは、誤差関数(活性化関数の導関数)の演算等を実行する。
制御部24は、ニューラルネットワークに含まれる複数の層に対して、1または複数の値を伝播させる制御を行う。具体的には、通常の演算時において、制御部24は、複数の層のうちの入力層に、外部装置から受信した1または複数の入力値を与える。続いて、通常の演算時において、制御部24は、それぞれの層から出力された複数の信号値を、直後の層へと順方向に伝播させる順方向処理を実行する。そして、通常の演算時において、制御部24は、複数の層のうちの出力層から出力された1または複数の出力値を取得して、外部装置へと送信する。
また、学習時において、制御部24は、学習部26により生成された1または複数の誤差値を、複数の層のうちの出力層に与える。そして、学習時において、制御部24は、それぞれの層から出力された複数の誤差値を、直前の層へと逆方向に伝播させる逆方向処理を実行する。
学習部26は、通常の演算時において、出力層から出力された1または複数の出力値を取得する。そして、学習部26は、1または複数の出力値の誤差を表す1または複数の誤差値を算出する。
さらに、学習部26は、逆方向処理を実行した結果得られた値を層演算部22から取得し、逆方向処理においてそれぞれの層に伝播される1または複数の誤差値が小さくなるように、ニューラルネットワークに含まれる複数の係数(重み)を変更する。例えば、学習部26は、ニューラルネットワークに含まれる複数の係数のそれぞれについて、誤差値の勾配を算出する。そして、学習部26は、誤差値の勾配を例えば0とする方向に、複数の係数を変更する。
メモリ部14は、例えば、半導体記憶装置である。メモリ部14は、ネットワーク構成記憶部28、係数記憶部30、信号値記憶部32、乗累算値記憶部34および誤差値記憶部36として機能する。
ネットワーク構成記憶部28は、ニューラルネットワーク装置10により実現するニューラルネットワークの構成を表す情報を記憶する。例えば、ネットワーク構成記憶部28は、複数の層におけるそれぞれの層間(隣接する2つの層の間)のリンク関係を記憶する。また、ネットワーク構成記憶部28は、順方向処理において複数の層のそれぞれにおいて実行される活性化関数の種類、および、逆方向処理において複数の層のそれぞれにおいて実行される誤差関数の種類等を記憶する。制御部24は、ネットワーク構成記憶部28に記憶された情報を参照して、順方向処理および逆方向処理を実行する。また、層演算部22は、ネットワーク構成記憶部28に記憶された情報を参照して、各層に対応する演算および処理を実行する。
係数記憶部30は、ニューラルネットワークに含まれる複数の係数を記憶する。行列演算部20は、係数記憶部30から複数の値を取得する。なお、行列演算部20も、複数の係数を記憶してもよい。この場合、メモリ部14は、係数記憶部30として機能しなくてもよい。
信号値記憶部32は、順方向処理において複数の層のそれぞれから出力された複数の信号値を記憶する。乗累算値記憶部34は、順方向処理において複数の層のそれぞれに与えた複数の乗累算値を記憶する。誤差値記憶部36は、逆方向処理において複数の層のそれぞれから出力された複数の誤差値を記憶する。
通信部16は、外部装置と情報の送受信をする。具体的には、通信部16は、外部装置から、演算対象となる1または複数の入力値を受信する。また、通信部16は、外部装置へ、演算結果である1または複数の出力値を送信する。
行列演算部20は、係数行列を用いた行列乗算を実行する。本実施形態において、行列演算部20は、プロセッサ12とは異なるハードウェア回路である。
ニューラルネットワークは、複数の層におけるそれぞれの層間毎に、係数行列が設定されている。係数行列は、学習時において、適宜変更される。行列演算部20は、順方向処理および逆方向処理を実行する場合、それぞれの層間において、前段の層から出力された複数の値(複数の信号値または複数の誤差値)と、当該層間に対応して設定された係数行列とを行列乗算する。
また、行列演算部20は、同じ層間に対して、順方向処理と逆方向処理とで、共通の係数行列を用いて行列乗算を実行する。
なお、行列演算部20は、複数の層間の全てについて行列乗算を実行してもよいし、複数の層間のうちの一部の層間について行列乗算を実行してもよい。行列演算部20が複数の層間のうちの一部の層間について行列乗算を実行する場合、他の装置(例えば、プロセッサ12)が、他の層間について行列乗算を実行する。
また、行列演算部20は、複数のハードウェアに分割されていてもよい。例えば、行列演算部20は、層間毎に異なるハードウェアで実現されていてもよい。また、行列演算部20は、係数行列と複数の信号値(または複数の誤差値)との行列乗算に加えて、バイアス行列を加算する行列加算を実行してもよい。
図2は、順方向処理の内容を示す図である。ニューラルネットワークに含まれる複数の層のそれぞれは、複数のノードを含む。1つの層に含まれるノードの数は、層毎に異なってもよい。また、それぞれのノードには、活性化関数が設定されている。活性化関数は、層毎に異なってもよい。また、同一の層において、ノード毎に活性化関数が異なってもよい。
順方向処理において、制御部24は、入力層に1または複数の入力値を与える。続いて、順方向処理において、制御部24は、それぞれの層から出力された複数の信号値を、直後の層へと順方向に伝播させる。そして、順方向処理において、制御部24は、出力層から出力された1または複数の信号を、1または複数の出力値として外部装置へと送信する。
図3は、逆方向処理の内容を示す図である。それぞれのノードには、誤差関数が設定されている。誤差関数は、そのノードに設定されている活性化関数の導関数である。すなわち、誤差関数は、そのノードに設定されている活性化関数の微分である。なお、誤差関数は、活性化関数の導関数を近似した関数であってもよい。
学習部26は、順方向処理が終了した場合、順方向処理で出力された1または複数の出力値のそれぞれに対する誤差を表す1または複数の誤差値を算出する。続いて、逆方向処理において、制御部24は、学習部26により生成された1または複数の誤差値を出力層に与える。そして、逆方向処理において、制御部24は、それぞれの層から出力された複数の誤差値を、直前の層へと逆方向に伝播させる。
図4は、複数の層に含まれる第1層42および第2層44を示す図である。本実施形態において、ニューラルネットワークにおける複数の層のうち任意の層を第1層42とする。また、複数の層のうち、第1層42に対して順方向に隣接する層を第2層44とする。本実施形態において、複数の層は、このような第1層42と、第2層44とを含む。
図5は、第1層42と第2層44との間のリンクを示す図である。第1層42は、m個のノードを有する。また、第2層44は、n個のノードを有する。なお、mおよびnは1以上の整数である。ただし、mおよびnのうちの一方が1の場合、他方は2以上である。
第1層42と第2層44との間には、第1層42に含まれるm個のノードの全てと、第2層44に含まれるn個のノードの全てとの間を接続する(m×n)本のリンクが存在する。(m×n)本のリンクのそれぞれには、係数(重み)が設定されている。
本実施形態では、第1層42のi番目のノードと第2層44のj番目のノードとの間のリンクの係数を、Wijと表す。iは、1以上m以下の任意整数を表す。jは、1以上n以下の任意整数を表す。
第1層42と第2層44との間の(m×n)本のリンクに設定された(m×n)個の係数は、m行およびn列の係数行列として表される。係数行列は、下記の式(1)のように表される。
Figure 2019095860
図6は、順方向処理において、行列演算部20に入出力される値を示す図である。順方向処理において、第1層42は、係数行列におけるm個の行に一対一に対応付けられたm個の第1信号値を出力する。順方向処理において、制御部24は、第1層42から出力されたm個の第1信号値を行列演算部20に与える。
順方向処理において、行列演算部20は、第1層42から出力されたm個の第1信号値を取得する。順方向処理において、行列演算部20は、取得したm個の第1信号値と対象行列とを行列乗算して、係数行列におけるn個の列に一対一に対応付けられたn個の順方向乗累算値を出力する。順方向処理において、制御部24は、行列演算部20から出力されたn個の順方向乗累算値を第2層44に与える。そして、順方向処理において、第2層44は、行列演算部20から出力されたn個の順方向乗累算値を取得する。
本実施形態において、m個の第1信号値をy,…,y,…,yと表す。n個の順方向乗累算値をv,…,v,…,vと表す。この場合、順方向処理において、行列演算部20が実行する行列乗算は、下記の式(2)のように表すことができる。
Figure 2019095860
m個の第1信号値は、1行およびm列の行列(順方向第1行列)に相当する。また、n個の順方向乗累算値は、1行およびn列の行列(順方向第2行列)に相当する。
図7は、逆方向処理において、行列演算部20に入出力される値を示す図である。逆方向処理において、第2層44は、係数行列におけるn個の列に一対一に対応付けられたn個の第1誤差値を出力する。逆方向処理において、制御部24は、第2層44から出力されたn個の第1誤差値を行列演算部20に与える。
逆方向処理において、行列演算部20は、第2層44から出力されたn個の第1誤差値を取得する。逆方向処理において、行列演算部20は、対象行列と取得したn個の第1誤差値とを行列乗算して、係数行列におけるm個の行に一対一に対応付けられたm個の逆方向乗累算値を出力する。逆方向処理において、制御部24は、行列演算部20から出力されたm個の逆方向乗累算値を第1層42に与える。そして、逆方向処理において、第1層42は、行列演算部20から出力されたm個の逆方向乗累算値を取得する。
本実施形態において、n個の第1誤差値をe,…,e,…,eと表す。m個の逆方向乗累算値をu,…,u,…,uと表す。この場合、逆方向処理において、行列演算部20が実行する行列乗算は、下記の式(3)のように表すことができる。
Figure 2019095860
n個の第1誤差値は、n行および1列の行列(逆方向第1行列)に相当する。また、m個の逆方向乗累算値は、m行および1列の行列(逆方向第2行列)に相当する。
図8は、順方向処理において、行列演算部20および層演算部22で実行される演算内容を示す図である。
順方向処理において、行列演算部20は、下記の式(4)に示す演算を実行して、第j列に対応する順方向乗累算値(v)を算出する。
Figure 2019095860
すなわち、行列演算部20は、係数行列の第j列について、行毎に、係数と第1信号値とを乗算して、m個の乗算値(W1j・y,…,Wij・y,…,Wmj・y)を算出する。そして、行列演算部20は、係数行列の第j列について、算出したm個の乗算値を加算する。これにより、行列演算部20は、第j行に対応する順方向乗累算値(v)を算出することができる。
行列演算部20は、このような乗累算(積和演算)を、係数行列に含まれるn個の列のそれぞれについて実行する。これにより、行列演算部20は、n個の順方向乗累算値を算出することができる。
続いて、順方向処理において、第2層44は、下記の式(5)に示す演算を実行して、第j列に対応する第2信号値(y )を算出する。なお、第2層44における第j列に対応する活性化関数を、φ()と表す。
Figure 2019095860
すなわち、第2層44は、第j列に対応した順方向乗累算値(v)を、第j列に対応する活性化関数に与えて、第j列に対応する第2信号値(y )を算出する。
第2層44は、このような活性化関数の演算を、n個の列のそれぞれについて実行する。これにより、第2層44は、n個の第2信号値(y ,…,y ,…,y )を算出することができる。
図9は、逆方向処理において、行列演算部20および層演算部22で実行される演算内容を示す図である。
逆方向処理において、行列演算部20は、下記の式(6)に示す演算を実行して、第i行に対応する逆方向乗累算値(u)を算出する。
Figure 2019095860
すなわち、行列演算部20は、係数行列の第i行について、列毎に、係数と第1誤差値とを乗算して、n個の乗算値(e・Wi1,…,e・Wij,…,e・Win)を算出する。そして、行列演算部20は、係数行列の第i行について、算出したn個の乗算値を加算する。これにより、行列演算部20は、第i行に対応する逆方向乗累算値(u)を算出することができる。
行列演算部20は、このような乗累算(積和演算)を、係数行列に含まれるm個の行のそれぞれについて実行する。これにより、行列演算部20は、m個の逆方向乗累算値を算出することができる。
また、第1層42は、当該逆方向処理に対応する順方向処理において、行列演算部20からm個の前段乗累算値を受け取っている。m個の前段乗累算値は、順方向処理において、第1層42の前段の層から、第1層42へと複数の信号値を伝播する際に、行列演算部20により算出された値である。すなわち、m個の前段乗累算値は、順方向処理において、第1層42がm個の第1信号値(y,…,y,…,y)を算出するために活性化関数に与えたm個の値である。本実施形態において、m個の前段乗累算値を、v ,…,v ,…,v と表す。
続いて、逆方向処理において、第1層42は、下記の式(7)に示す演算を実行して、第i行に対応する第2誤差値(e )を算出する。なお、第1層42における第i行に対応する誤差関数を、φ´()と表す。
Figure 2019095860
すなわち、第1層42は、第i行に対応した前段乗累算値(v )を、第i行に対応する誤差関数に与えて、第i行に対応する逆変換値(φ´(v ))を算出する。さらに、第2層44は、第i行に対応する逆変換値(φ´(v ))と、第i行に対応する逆方向乗累算値(u)とを乗算して、第i行に対応する第2誤差値(e )を算出する。
第1層42は、このような誤差関数の演算を、m個の行のそれぞれについて実行する。これにより、第1層42は、m個の第2誤差値(e ,…,e ,…,e )を算出することができる。
図10は、実施形態に係る行列演算部20の構成を示す図である。行列演算部20は、ニューラルネットワークに含まれる複数の層のうち、第1層42および第2層44の層間における行列乗算を実行するための回路構成として、図10に示すような回路を含む。行列演算部20は、第1層42と第2層44との層間以外の1以上の層間のそれぞれについても、図10と同等の回路を含む。
行列演算部20は、取得回路52と、(m×n)個の乗算器54と、(m×n)個の係数メモリ56と、加算回路58と、デコーダ60とを有する。
順方向処理において、取得回路52は、層演算部22から、m個の第1信号値(y〜y)を取得する。m個の第1信号値(y〜y)は、係数行列におけるm個の行に一対一に対応付けられている。また、逆方向処理において、取得回路52は、層演算部22から、n個の第1誤差値(e〜e)を取得する。n個の第1誤差値(e〜e)は、係数行列におけるn個の列に一対一に対応付けられている。
(m×n)個の乗算器54は、係数行列に含まれる(m×n)個の係数に一対一に対応して設けられる。例えば、乗算器54−ijは、第i行および第j列の係数(Wij)に対応付けられている。
順方向処理において、(m×n)個の乗算器54のそれぞれは、m個の第1信号値のうちの当該乗算器54が対応付けられた行に対応する第1信号値と、係数行列に含まれる(m×n)個の係数のうちの当該乗算器54が対応付けられた係数とを乗算する。例えば、順方向処理において、第i行および第j列の係数(Wij)に対応付けられた乗算器54−ijは、係数行列における第i行に対応付けられた第1信号値(y)と、係数行列に含まれる第i行および第i列の係数(Wij)とを乗算する。
逆方向処理において、(m×n)個の乗算器54のそれぞれは、n個の第1誤差値のうちの当該乗算器54が対応付けられた列に対応する第1誤差値と、係数行列に含まれる(m×n)個の係数のうちの当該乗算器54が対応付けられた係数とを乗算する。例えば、逆方向処理において、第i行および第j列の係数(Wij)に対応付けられた乗算器54−ijは、係数行列における第j列に対応付けられた第1誤差値(e)と、係数行列に含まれる第i行および第i列の係数(Wij)とを乗算する。
(m×n)個の乗算器54のそれぞれは、ハードウェアにより実現される。乗算器54は、例えば、アナログ信号を乗算するアナログ乗算回路であってもよいし、デジタル信号を乗算するデジタル乗算回路であってもよい。
(m×n)個の係数メモリ56は、m行およびn列の係数行列に含まれる(m×n)個の係数に一対一に対応して設けられる。例えば、係数メモリ56−ijは、第i行および第j列の係数(Wij)に対応付けられている。
(m×n)個の係数メモリ56のそれぞれは、対応付けられている係数を記憶し、記憶している係数を対応する乗算器54に与える。例えば、係数メモリ56−ijは、第i行および第j列の係数(Wij)を記憶して、乗算器54−ijに与える。
(m×n)個の係数メモリ56のそれぞれは、学習部26により係数が書き込まれる。初期動作時(例えば工場出荷時等)には、(m×n)個の係数メモリ56のそれぞれは、予め定められた値の係数を記憶していてもよい。
なお、(m×n)個の乗算器54のそれぞれが係数を記憶する記憶機能を有してもよい。この場合、行列演算部20は、(m×n)個の係数メモリ56を有さない構成であってもよい。
例えば、乗算器54は、コンダクタンスが変更できる抵抗器であってもよい。この場合、乗算器54は、コンダクタンスが係数に設定され、係数を記憶することができる。このような乗算器54は、第1信号値(または第1誤差値)に応じた電圧が印加される。そして、このような乗算器54は、電流値を、第1誤差値(または第1誤差値)と係数とを乗算した乗算値として出力する。
また、乗算器54は、キャパシタンスが変更できる容量器であってもよい。この場合、乗算器54は、キャパシタンスが係数に設定され、係数を記憶することができる。このような乗算器54は、第1信号値(または第1誤差値)に応じた電圧が印加される。そして、このような乗算器54は、蓄積した電荷量を、第1信号値(または第1誤差値)と係数とを乗算した乗算値として出力する。
順方向処理において、加算回路58は、(m×n)個の乗算器54から出力された(m×n)個の乗算値を列毎に加算することにより、n個の順方向乗累算値(v〜v)を算出する。そして、順方向処理において、加算回路58は、算出したn個の順方向乗累算値(v〜v)を層演算部22に出力する。
逆方向処理において、加算回路58は、(m×n)個の乗算器54から出力された(m×n)個の乗算値を行毎に加算することにより、m個の逆方向乗累算値(u〜u)を算出する。そして、逆方向処理において、加算回路58は、算出したm個の逆方向乗累算値(u〜u)を層演算部22に出力する。
デコーダ60は、制御部24から、順方向処理および逆方向処理のうち何れの処理を実行するかの指示を受け付ける。デコーダ60は、順方向処理が指定された場合には、さらに、制御部24から、何れの列に対応する順方向乗累算値を出力するのかの指定を受け付けてもよい。また、デコーダ60は、逆方向処理が指定された場合には、さらに、制御部24から、何れの列に対応する逆方向乗累算値を出力するのかの指定を受け付けてもよい。
デコーダ60は、受け付けた指示に応じて取得回路52を制御して、(m×n)個の乗算器54のそれぞれに対して、何れの値を与えるかを切り換える。また、デコーダ60は、受け付けた指示に応じて加算回路58を制御して、(m×n)個の乗算器54から出力された(m×n)個の値を加算するパターンを切り換える。
図11は、順方向処理における行列演算部20内の接続を示す図である。順方向処理において、取得回路52は、m個の第1信号値(y〜y)のうち、第i行に対応する第1信号値(y)を、係数行列の第i行に含まれるn個の係数に対応付けられたn個の乗算器54−i1〜54−inに与える。
順方向処理において、加算回路58は、係数行列における第j列に含まれるm個の係数に対応付けられたm個の乗算器54−1j〜54−mjから出力されたm個の乗算値を加算して、第j列に対応する順方向乗累算値(v)を算出する。以上のような処理を実行することにより、順方向処理において、加算回路58は、(m×n)個の乗算器54から出力された(m×n)個の乗算値を列毎に加算して、n個の順方向乗累算値(v〜v)を算出することができる。
図12は、逆方向処理における行列演算部20内の接続を示す図である。逆方向処理において、取得回路52は、n個の第1誤差値(e〜e)のうち、第j列に対応する第1誤差値(e)を、係数行列の第j列に含まれるm個の係数に対応付けられたm個の乗算器54−1j〜54−mjに与える。
逆方向処理において、加算回路58は、係数行列における第i行に含まれるn個の係数に対応付けられたn個の乗算器54−i1〜54−inから出力されたn個の乗算値を加算して、第i列に対応する逆方向乗累算値(u)を算出する。以上のような処理を実行することにより、逆方向処理において、加算回路58は、(m×n)個の乗算器54から出力された(m×n)個の乗算値を行毎に加算して、m個の逆方向乗累算値(u〜u)を算出することができる。
図13は、実施形態に係るニューラルネットワーク装置10の処理の流れを示すフローチャートである。ニューラルネットワーク装置10は、図13に示すような流れで処理を実行する。
まず、S11において、通信部16は、外部装置から、1または複数の入力値を受信する。制御部24は、受信した1または複数の入力値をニューラルネットワークに含まれる複数の層における先頭の層に与える。なお、ここでは、ニューラルネットワークにおける先頭の層は、信号を取得するのみで演算処理をしないものとする。
続いて、S12において、制御部24は、層間を指定する変数xに1を代入する。そして、制御部24は、指定された層間における前段の層を第1層42とし、後段の層を第2層44として、続くS13〜S16の順方向処理を実行する。
S13において、制御部24は、第1層42から出力されたm個の第1信号値を行列演算部20に与える。行列演算部20は、与えられたm個の第1信号値と、指定された層間に対して設定されている係数行列とを行列乗算して、n個の順方向乗累算値を算出する。続いて、S14において、制御部24は、算出されたn個の順方向乗累算値を、層間を指定する番号(変数x)に対応させて、乗累算値記憶部34に記憶させる。
続いて、S15において、制御部24は、算出されたn個の順方向乗累算値を層演算部22に与える。層演算部22は、与えられたn個の順方向乗累算値のそれぞれを、第2層44に対して設定されている活性化関数に与えて、n個の第2信号値を算出する。続いて、S16において、制御部24は、算出されたn個の第2信号値を、層間を指定する番号(変数x)に対応させて、信号値記憶部32に記憶させる。
続いて、S17において、制御部24は、複数の層における末尾の層間まで処理が完了したか否かを判断する。
末尾の層間まで処理を完了していない場合(S17のNo)、制御部24は、処理をS18に進める。S18において、制御部24は、層間を指定する番号(変数x)に1を加算して、処理対象となる層間を順方向に1つ移動させる。そして、制御部24は、処理をS13に戻す。この場合において、制御部24は、順方向に移動させた後の層間における前段の層を第1層42とし、後段の層を第2層44とする。さらに、制御部24は、S15で算出したn個の第2信号値を、m個の第1信号値に置き換えて、続くS13〜S16の順方向処理を実行する。
末尾の層間まで処理を完了した場合(S17のYes)、制御部24は、処理をS19に進める。S19において、通信部16は、直前の層間の処理で算出したm個の第2信号値を1または複数の出力値として、外部装置に送信する。なお、ここでは、ニューラルネットワークにおける末尾の層は、信号を出力するのみで演算処理をしないものとする。
続いて、S20において、制御部24は、外部装置に送信した1または複数の出力値の誤差を表す1または複数の誤差値を取得する。制御部24は、学習部26に1または複数の誤差値を算出させてもよいし、ニューラルネットワーク装置10の外に設けられた情報処理装置から1または複数の誤差値を受信してもよい。
続いて、S21において、制御部24は、複数の層における、層間を指定する変数xに、ニューラルネットワークの層間の数を示すmaxを代入する。そして、制御部24は、指定した層間における前段の層を第1層42とし、後段の層を第2層44として、続くS22〜S25の逆方向処理を実行する。
S22において、制御部24は、第2層44から出力されたn個の第1誤差値を行列演算部20に与える。行列演算部20は、与えられたn個の第1誤差値と、指定された層間に対して設定されている係数行列とを行列乗算して、m個の逆方向乗累算値を算出する。そして、制御部24は、行列演算部20により算出されたm個の逆方向乗累算値を層演算部22に与える。
続いて、S23において、制御部24は、(x−1)により指定される層間(第1層42と、第1層42に対して順方向の前段の層との間)に対応付けて記憶されているm個の順方向乗累算値を、乗累算値記憶部34から読み出す。そして、制御部24は、読み出したm個の順方向乗累算値を層演算部22に与える。さらに、層演算部22は、与えられたm個の順方向乗累算値のそれぞれを、第1層42に対して設定されている誤差関数に与えて、m個の逆変換値を算出する。
続いて、S24において、層演算部22は、与えられたm個の逆方向乗累算値のそれぞれと、算出したm個の逆変換値のうち対応する行の逆変換値とを乗算する。これにより、層演算部22は、m個の第2誤差値を算出することができる。
続いて、S25において、制御部24は、算出されたm個の第2誤差値を、層間を指定する番号(変数x)に対応させて、誤差値記憶部36に記憶させる。
続いて、S26において、制御部24は、複数の層における先頭の層間まで処理が完了したか否かを判断する。
先頭の層間まで処理を完了していない場合(S26のNo)、制御部24は、処理をS27に進める。S27において、制御部24は、層間を指定する番号(変数x)から1を減算して、処理対象となる層間を逆方向に1つ移動させる。そして、制御部24は、処理をS22に戻す。この場合において、制御部24は、逆方向に移動させた後の層間における前段の層を第1層42とし、後段の層を第2層44とする。さらに、制御部24は、S25で算出したm個の第2誤差値を、n個の第1誤差値と置き換えて、続くS22〜S25の逆方向処理を実行する。
先頭の層間まで処理を完了した場合(S26のYes)、制御部24は、処理をS28に進める。S28において、学習部26は、係数行列に含まれる(m×n)個の係数のそれぞれについて、勾配を算出する。例えば、学習部26は、信号値記憶部32に記憶された層間毎の複数の信号値および誤差値記憶部36に記憶された層間毎の複数の誤差値に基づき、複数の係数のそれぞれに対する勾配を算出する。
続いて、S29において、学習部26は、算出した勾配に基づき、複数の係数を変更する。例えば、学習部26は、勾配が小さくなるように、複数の係数のそれぞれを変更する。例えば、学習部26は、係数記憶部30に記憶されている複数の係数を書き換える。また、学習部26は、係数記憶部30に変更後の複数の係数を記憶させる。
そして、制御部24は、学習部26がS29の処理を完了した後、本フローを終了する。
図14は、行列演算部20の第1回路例であって、順方向処理をする場合の接続を示す図である。図15は、行列演算部20の第1回路例であって、逆方向処理をする場合の接続を示す図である。行列演算部20は、例えば、図14および図15に示すような、第1回路例に示す構成であってもよい。
第1回路例に係る(m×n)個の乗算器54のそれぞれは、電圧発生部62と、抵抗変化メモリ64とを含む。第1回路例に係る加算回路58は、共通信号線66と、(m×n)個のスイッチ68と、電流検出部70とを含む。
電圧発生部62は、取得回路52から与えられた値に応じた電圧を発生する。抵抗変化メモリ64は、第1端が電圧発生部62の出力端に接続される。抵抗変化メモリ64は、第1端とは異なる第2端が、当該抵抗変化メモリ64を含む乗算器54に対応して設けられたスイッチ68を介して、共通信号線66に接続される。
共通信号線66は、所定電位(例えば、グランド電位またはコモン電位等)に接続されている。(m×n)個のスイッチ68は、(m×n)個の乗算器54に一対一で対応して設けられる。(m×n)個のスイッチ68のそれぞれは、対応する乗算器54に含まれる抵抗変化メモリ64と共通信号線66との間を、デコーダ60の制御に応じてオン(接続)またはオフ(切断)する。電流検出部70は、共通信号線66に流れる電流を検出する。
(m×n)個の乗算器54のそれぞれに含まれる抵抗変化メモリ64は、コンダクタンスが、対象行列における、当該乗算器54が対応付けられている係数に設定されている。例えば、乗算器54−ijに含まれる抵抗変化メモリ64は、コンダクタンスが第i行および第j列の係数(Wij)に設定されている。
図14に示すように、順方向処理において、第i行の乗算器54−i1,…,54−ij,…,54−inに含まれるn個の電圧発生部62には、第i行の第1信号値(y)が与えられる。順方向処理において、デコーダ60は、列毎に順方向乗累算値を出力させるように、(m×n)個のスイッチ68を切り換え制御する。例えば、第j列の順方向乗累算値を出力する場合、デコーダ60は、第j列の乗算器54−1j,54−2j,…,54−ij,…,54−mjに対応付けられたm個のスイッチ68をオンとし、それ以外の複数のスイッチ68をオフとする。
これにより、順方向処理において、第j列の順方向乗累算値を出力する場合、デコーダ60は、第j列に対応付けられたm個の乗算器54に含まれるm個の抵抗変化メモリ64に、第1信号値に応じた電圧を印加して電流を流させる。そして、デコーダ60は、第j列以外の列に対応付けられた複数の乗算器54に含まれる複数の抵抗変化メモリ64に流れる電流を0とする。
この結果、共通信号線66には、第j列に対応付けられたm個の乗算器54に含まれるm個の抵抗変化メモリ64に流れる電流の合計が流れる。従って、電流検出部70は、第j列に対応付けられたm個の乗算器54に含まれるm個の抵抗変化メモリ64に流れる電流の合計値を、第j列の順方向乗累算値(v)として出力することができる。
図15に示すように、逆方向処理において、第j列の乗算器54−1j,54−2j,…,54−ij,…,54−mjに含まれるm個の電圧発生部62には、第j列の第1誤差値(e)が与えられる。逆方向処理において、デコーダ60は、行毎に、逆方向乗累算値を出力させるように、(m×n)個のスイッチ68を切り換え制御する。例えば、第i行の逆方向乗累算値を出力する場合、デコーダ60は、第i行の乗算器54−i1,54−i2,…,54−ij,…,54−inに対応付けられたn個のスイッチ68をオンとし、それ以外の複数のスイッチ68をオフとする。
これにより、逆方向処理において、第i行の逆方向乗累算値を出力する場合、デコーダ60は、第i行に対応付けられたn個の乗算器54に含まれるn個の抵抗変化メモリ64に、第1誤差値に応じた電圧を印加して電流を流させる。さらに、デコーダ60は、第i行以外の行に対応付けられた複数の乗算器54に含まれる複数の抵抗変化メモリ64に流れる電流を0とする。
この結果、共通信号線66には、第i行に対応付けられたn個の乗算器54に含まれるn個の抵抗変化メモリ64に流れる電流の合計が流れる。従って、電流検出部70は、第i行に対応付けられたn個の乗算器54に含まれるn個の抵抗変化メモリ64に流れる電流の合計値を、第i行の逆方向乗累算値(u)として出力することができる。
図16は、行列演算部20の第2回路例を示す図である。第2回路例に係る行列演算部20は、第1回路例に係る行列演算部20と略同一の機能を有する部材を含む。略同一の機能を有する部材については、同一の符号(または同一符号とサブ符号との組から構成された符号)を付けて相違点を除き詳細な説明を省略する。
2値で表される信号値、2値で表される誤差値および2値で表される係数を用いるニューラルネットワークが知られている。このようなニューラルネットワークの演算をする場合、行列演算部20は、図16のような、第2回路例に示す構成であってよい。なお、本実施形態では、2値で表される信号として、H論理またはL論理を切り換える信号を用いた例を示す。しかし、2値で表される信号は、0または1を切り換える信号、−1または+1を切り換える信号、または、任意の第1値または任意の第2値を切り換える信号等であってもよい。
第2回路例に係る(m×n)個の乗算器54のそれぞれは、AND回路72と、抵抗変化メモリ64と、電圧スイッチ74とを含む。また、第2回路例に係る加算回路58は、共通信号線66と、電流検出部70とを含む。
AND回路72は、取得回路52から出力された信号値または誤差値と、デコーダ60から与えられたセレクト信号とをAND演算する。すなわち、AND回路72は、デコーダ60から与えられたセレクト信号がH論理の場合、取得回路52から出力された信号値または誤差値を出力し、セレクト信号がL論理の場合、信号値または誤差値に関わらず、常時、L論理を出力する。
電圧スイッチ74は、AND回路72の出力値がH論理の場合にオン(接続)、AND回路72の出力値がL論理の場合にオフする。電圧スイッチ74は、オンの場合に、第1電位(例えば、グランド電位またはコモン電位等)と、抵抗変化メモリ64の第1端との間を接続する。電圧スイッチ74は、オフの場合に、第1電位と、抵抗変化メモリ64の第1端との間を切断(オープン)する。
抵抗変化メモリ64は、第2端が共通信号線66に接続される。共通信号線66は、第1電位とは異なる第2電位(例えば、電源電位等)に接続されている。電流検出部70は、共通信号線66に流れる電流を検出する。
従って、抵抗変化メモリ64は、セレクト信号がH論理の場合、取得回路52から出力された信号値または誤差値に応じた電圧が印加されて、電流が流れる。また抵抗変化メモリ64は、セレクト信号がL論理の場合、取得回路52から出力された信号値または誤差値に関わらず、電圧が印加されず(すなわち、0の電圧が印加され)、電流が流れない。
(m×n)個の乗算器54のそれぞれに含まれる抵抗変化メモリ64は、コンダクタンスが、対象行列における、当該乗算器54が対応付けられている係数に応じた値に設定されている。
本回路例においては、係数は、2値で表される。例えば、係数がH論理の場合、抵抗変化メモリ64は、コンダクタンスが第1の値に設定される。また、係数がL論理の場合、抵抗変化メモリ64は、コンダクタンスが第1の値とは異なる第2の値に設定される。第2の値は、例えば、第1の値よりも小さい、例えば、0に非常に近い値である。
順方向処理において、第i行の乗算器54−i1,54−i2,…,54−ij,…,54−inに含まれるn個のAND回路72には、第i行の第1信号値(y)が与えられる。また、順方向処理において、デコーダ60は、列毎に順次に順方向乗累算値を出力させるように、(m×n)個のAND回路72のそれぞれにセレクト信号を与える。例えば、第j列の順方向乗累算値を出力させる場合には、デコーダ60は、第j列の乗算器54−1j,54−2j,…,54−ij,…,54−mjに含まれるm個のAND回路72にH論理を与え、それ以外のAND回路72にL論理を与える。
これにより、順方向処理において、第j列の順方向乗累算値を出力する場合、デコーダ60は、第j列に対応付けられたm個の乗算器54に含まれるm個の抵抗変化メモリ64に、第1信号値に応じた電圧を印加して電流を流させる。そして、デコーダ60は、第j列以外の列に対応付けられた複数の乗算器54に含まれる複数の抵抗変化メモリ64に流れる電流を0とする。
この結果、共通信号線66には、第j列に対応付けられたm個の乗算器54に含まれるm個の抵抗変化メモリ64に流れる電流の合計が流れる。従って、電流検出部70は、第j列に対応付けられたm個の乗算器54に含まれるm個の抵抗変化メモリ64に流れる電流の合計値を、第j列の順方向乗累算値(v)として出力することができる。
逆方向処理において、第j列の乗算器54−1j,54−2j,…,54−ij,…,54−mjに含まれるm個のAND回路72には、第j列の第1誤差値(e)が与えられる。逆方向処理において、デコーダ60は、行毎に順次に逆方向乗累算値を出力させるように、(m×n)個のAND回路72のそれぞれにセレクト信号を与える。例えば、第i行の逆方向乗累算値を出力させる場合には、デコーダ60は、第i行の乗算器54−i1,54−i2,…,54−ij,…,54−inに含まれるn個のAND回路72にH論理を与え、それ以外の複数のAND回路72にL論理を与える。
これにより、逆方向処理において、第i行の逆方向乗累算値を出力する場合、デコーダ60は、第i行に対応付けられたn個の乗算器54に含まれるn個の抵抗変化メモリ64に、第1誤差値に応じた電圧を印加して電流を流させる。さらに、デコーダ60は、第i行以外の行に対応付けられた複数の乗算器54に含まれる複数の抵抗変化メモリ64に流れる電流を0とする。
この結果、共通信号線66には、第i行に対応付けられたn個の乗算器54に含まれるn個の抵抗変化メモリ64に流れる電流の合計が流れる。従って、電流検出部70は、第i行に対応付けられたn個の乗算器54に含まれるn個の抵抗変化メモリ64に流れる電流の合計値を、第i行の逆方向乗累算値(u)として出力することができる。
図17は、行列演算部20の第3回路例を示す図である。第3回路例に係る行列演算部20は、第2回路例に係る行列演算部20と略同一の機能を有する部材を含む。略同一の機能を有する部材については、同一の符号(または同一符号とサブ符号との組から構成された符号)を付けて相違点を除き詳細な説明を省略する。
例えば、2値で表される信号値および2値で表される誤差値を用い、多値(例えば、4ビット、8ビット、16ビット等)で表される係数を用いるニューラルネットワークが知られている。ニューラルネットワーク装置10が、このようなニューラルネットワークの演算をする場合、行列演算部20は、図17のような、第3回路例に示す構成であってよい。
第3回路例に係る(m×n)個の乗算器54のそれぞれは、AND回路72と、L個の抵抗変化メモリ64(Lは、2以上の整数)と、L個の電圧スイッチ74とを含む。また、第3回路例に係る加算回路58は、L本の共通信号線66と、L個の電流検出部70と、L個の荷重乗算部82と、加算部84とを含む。
L個の抵抗変化メモリ64は、それぞれに異なる荷重が割り当てられる。本回路例においては、乗算器54は、2乗(=4)の荷重が割り当てられた第1の抵抗変化メモリ64−1と、2乗(=2)の荷重が割り当てられた第2の抵抗変化メモリ64−2と、2乗(=1)の荷重が割り当てられた第3の抵抗変化メモリ64−3とを含む。
L個の電圧スイッチ74は、L個の抵抗変化メモリ64に一対一で対応付けられている。例えば、第1の電圧スイッチ74−1は、第1の抵抗変化メモリ64−1に対応付けられている。第2の電圧スイッチ74−2は、第2の抵抗変化メモリ64−2に対応付けられている。第3の電圧スイッチ74−3は、第3の抵抗変化メモリ64−3に対応付けられている。
L個の電圧スイッチ74のそれぞれは、AND回路72の出力値がH論理の場合にオン(接続)、AND回路72の出力値がL論理の場合にオフ(オープン)する。L個の電圧スイッチ74のそれぞれは、オンの場合に、第1電位(例えば、グランド電位またはコモン電位等)と、対応付けられた抵抗変化メモリ64の第1端との間を接続する。また、L個の電圧スイッチ74のそれぞれは、オフの場合に、第1電位と、対応付けられた抵抗変化メモリ64の第1端との間を切断する。
従って、L個の抵抗変化メモリ64のそれぞれは、デコーダ60から与えられたセレクト信号がH論理の場合、取得回路52から出力された信号値または誤差値に応じた電圧が印加されて、電流が流れる。また、L個の抵抗変化メモリ64のそれぞれは、デコーダ60から与えられたセレクト信号がL論理の場合、取得回路52から出力された信号値または誤差値に関わらず、電圧が印加されず(0の電圧が印加され)、電流が流れない。
L個の抵抗変化メモリ64は、それぞれに割り当てられた荷重とコンダクタンスとを乗算した値の合計が、当該乗算器54に対応付けられた係数となるように、それぞれのコンダクタンスが設定されている。すなわち、L個の抵抗変化メモリ64のそれぞれについて割り当てられた荷重とコンダクタンスとの乗算値を算出し、算出したL個の乗算値を加算した値が、対象行列に含まれる当該乗算器54に対応する係数となる。
例えば、係数が3ビットの2進数で表される場合、第1の抵抗変化メモリ64−1のコンダクタンスは、係数の3ビット目の値に設定される。また、第2の抵抗変化メモリ64−2のコンダクタンスは、係数の2ビット目の値に設定される。また、第3の抵抗変化メモリ64−3のコンダクタンスは、係数の3ビット目の値に設定される。
L本の共通信号線66は、L個の抵抗変化メモリ64に一対一で対応付けられている。例えば、第1の共通信号線66−1は、第1の抵抗変化メモリ64−1に対応付けられている。第2の共通信号線66−2は、第2の抵抗変化メモリ64−2に対応付けられている。第3の共通信号線66−3は、第3の抵抗変化メモリ64−3に対応付けられている。
L個の抵抗変化メモリ64のそれぞれは、第2端が、対応する共通信号線66に接続される。L本の共通信号線66のそれぞれは、第1電位とは異なる第2電位(例えば、電源電位等)に接続されている。
L個の電流検出部70は、L本の共通信号線66に一対一で対応付けられている。L個の電流検出部70のそれぞれは、対応付けられている共通信号線66に流れる電流を検出する。例えば、第1の電流検出部70−1は、第1の共通信号線66−1に流れる電流を検出する。第2の電流検出部70−2は、第2の共通信号線66−2に流れる電流を検出する。第3の電流検出部70−3は、第3の共通信号線66−3に流れる電流を検出する。
L個の荷重乗算部82は、L個の電流検出部70に一対一で対応付けられている。L個の荷重乗算部82のそれぞれは、対応付けられている電流検出部70により検出された電流値に、対応する抵抗変化メモリ64に割り当てられた荷重を乗算する。例えば、第1の荷重乗算部82−1は、第1の抵抗変化メモリ64−1に割り当てられた2乗(=4)の荷重を、第1の電流検出部70−1により検出された電流値に乗算する。第2の荷重乗算部82−2は、第2の抵抗変化メモリ64−2に割り当てられた2乗(=2)の荷重を、第2の電流検出部70−2により検出された電流値に乗算する。第3の荷重乗算部82−3は、第3の抵抗変化メモリ64−3に割り当てられた2乗(=1)の荷重を、第3の電流検出部70−3により検出された電流値に乗算する。
加算部84は、L個の荷重乗算部82から出力された値を加算して、順方向乗累算値または逆方向乗累算値として出力する。
このような第3回路例では、順方向処理において、(m×n)個の乗算器54のそれぞれは、当該乗算器54が対応付けられた行に対応する第1信号値に応じた電圧が、L個の抵抗変化メモリ64のそれぞれに印加される。また、加算回路58は、L個の抵抗変化メモリ64のそれぞれに流れる電流と割り当てられた荷重とを乗算した値の合計を、係数行列における列毎に加算することにより、n個の順方向乗累算値を算出する。
また、このような第3回路例では、逆方向処理において、(m×n)個の乗算器54のそれぞれは、当該乗算器54が対応付けられた列に対応する第1誤差値に応じた電圧が、L個の抵抗変化メモリ64のそれぞれに印加される。また、加算回路58は、L個の抵抗変化メモリ64のそれぞれに流れる電流と割り当てられた荷重とを乗算した値の合計を、係数行列における行毎に加算することにより、m個の逆方向乗累算値を算出する。
これにより、このような構成の行列演算部20は、順方向処理において、2値で表されるm個の第1信号値と、多値で表される(m×n)個の係数を含む係数行列とを行列乗算して、多値で表されるn個の順方向乗累算値を出力することができる。また、このような構成の行列演算部20は、逆方向処理において、多値で表される(m×n)個の係数を含む係数行列と2値で表されるn個の第1誤差値とを行列乗算して、多値で表されるm個の逆方向乗累算値を出力することができる。
図18は、行列演算部20の第4回路例を示す図である。第4回路例に係る行列演算部20は、第1回路例に係る行列演算部20と略同一の機能を有する部材を含む。略同一の機能を有する部材については、同一の符号(または同一符号とサブ符号との組から構成された符号)を付けて相違点を除き詳細な説明を省略する。
第4回路例に係る(m×n)個の乗算器54のそれぞれは、差動電圧発生部86と、ポジ側抵抗変化メモリ64−pと、ネガ側抵抗変化メモリ64−nとを含む。また、第4回路例に係る加算回路58は、ポジ側共通信号線66−pと、ネガ側共通信号線66−nと、(m×n)個のポジ側スイッチ68−pと、(m×n)個のネガ側スイッチ68−nと、ポジ側電流検出部70−pと、ネガ側電流検出部70−nと、減算部88とを含む。
差動電圧発生部86は、取得回路52から与えられた値に応じた差動電圧を発生する。
ポジ側抵抗変化メモリ64−pは、第1端が差動電圧発生部86のポジ側出力端に接続される。ポジ側抵抗変化メモリ64−pは、第2端が、当該ポジ側抵抗変化メモリ64−pを含む乗算器54に対応して設けられたポジ側スイッチ68−pを介して、ポジ側共通信号線66−pに接続される。
ネガ側抵抗変化メモリ64−nは、第1端が差動電圧発生部86のネガ側出力端に接続される。ネガ側抵抗変化メモリ64−nは、第2端が、当該ネガ側抵抗変化メモリ64−nを含む乗算器54に対応して設けられたネガ側スイッチ68−nを介して、ネガ側共通信号線66−nに接続される。
ポジ側共通信号線66−pは、所定電位に接続されている。(m×n)個のポジ側スイッチ68−pは、(m×n)個の乗算器54に一対一で対応して設けられる。(m×n)個のポジ側スイッチ68−pのそれぞれは、対応する乗算器54に含まれるポジ側抵抗変化メモリ64−pとポジ側共通信号線66−pとの間を、デコーダ60の制御に応じてオン(接続)またはオフ(切断)する。ポジ側電流検出部70−pは、ポジ側共通信号線66−pに流れる電流を検出する。
ネガ側共通信号線66−nは、所定電位に接続されている。(m×n)個のネガ側スイッチ68−nは、(m×n)個の乗算器54に一対一で対応して設けられる。(m×n)個のネガ側スイッチ68−nのそれぞれは、対応する乗算器54に含まれるネガ側抵抗変化メモリ64−nとネガ側共通信号線66−nとの間を、デコーダ60の制御に応じてオン(接続)またはオフ(切断)する。ネガ側電流検出部70−nは、ネガ側共通信号線66−nに流れる電流を検出する。
減算部88は、ポジ側電流検出部70−pから出力された値と、ネガ側電流検出部70−nから出力された値とを減算して、順方向乗累算値または逆方向乗累算値として出力する。
(m×n)個の乗算器54のそれぞれに含まれるポジ側抵抗変化メモリ64−pおよびネガ側抵抗変化メモリ64−nは、コンダクタンスの差分値が、当該乗算器54に対応付けられた係数となるように、それぞれのコンダクタンスが設定されている。
このような第4回路例では、順方向処理において、(m×n)個の乗算器54のそれぞれは、当該乗算器54が対応付けられた列に対応する第1信号値に応じた差動電圧が、ポジ側抵抗変化メモリ64−pおよびネガ側抵抗変化メモリ64−nに印加される。そして、加算回路58は、ポジ側抵抗変化メモリ64−pに流れる電流とネガ側抵抗変化メモリ64−nとに流れる電流との差分値を、係数行列における列毎に加算することにより、n個の順方向乗累算値を算出する。
また、このような第4回路例では、逆方向処理において、(m×n)個の乗算器54のそれぞれは、当該乗算器54が対応付けられた行に対応する第1誤差値に応じた差動電圧が、ポジ側抵抗変化メモリ64−pおよびネガ側抵抗変化メモリ64−nに印加される。そして、加算回路58は、ポジ側抵抗変化メモリ64−pに流れる電流とネガ側抵抗変化メモリ64−nとに流れる電流との差分値を、係数行列における行毎に加算することにより、m個の逆方向乗累算値を算出する。
これにより、このような構成の行列演算部20は、順方向処理において、m個の第1信号値と係数行列とを差動信号を用いて行列乗算して、n個の順方向乗累算値を出力することができる。また、行列演算部20は、逆方向処理において、(m×n)個の係数を含む係数行列とn個の第1誤差値とを差動信号を用いて行列乗算して、m個の逆方向乗累算値を出力することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
また、実施形態において説明した行列演算部20は、ニューラルネットワーク以外のアプリケーションに適用することも可能である。例えば、行列演算部20は、行列演算を実行する演算装置として機能させることもできる。この場合、行列演算部20は、1行およびm列の順方向第1行列と、m行およびn列(mおよびnは1以上の整数であり、一方が1の場合には他方は2以上)の係数行列とを行列演算して1行およびn列の順方向第2行列を出力する。さらに、行列演算部20は、係数行列とn行および1列の逆方向第1行列とを行列演算してm行および1列の逆方向第2行列を出力する。
10 ニューラルネットワーク装置
12 プロセッサ
14 メモリ部
16 通信部
20 行列演算部
22 層演算部
24 制御部
26 学習部
28 ネットワーク構成記憶部
30 係数記憶部
32 信号値記憶部
34 乗累算値記憶部
36 誤差値記憶部
42 第1層
44 第2層
52 取得回路
54 乗算器
56 係数メモリ
58 加算回路
60 デコーダ
62 電圧発生部
64 抵抗変化メモリ
66 共通信号線
68 スイッチ
70 電流検出部
72 AND回路
74 電圧スイッチ
82 荷重乗算部
84 加算部
86 差動電圧発生部
88 減算部

Claims (17)

  1. それぞれが予め定められた演算および処理を実行する複数の層に対して複数の信号値を順方向に伝播させる順方向処理、および、前記複数の層に対して複数の誤差値を逆方向に伝播させる逆方向処理を実行させる制御部と、
    前記複数の層における少なくとも一部の層間を伝播する複数の値に対して演算を実行する行列演算部と、
    を備え、
    前記複数の層は、第1層と、前記第1層に対して順方向に隣接する第2層とを含み、
    前記行列演算部は、
    m行およびn列(mおよびnは1以上の整数であり、一方が1の場合には他方は2以上)の係数行列に含まれる(m×n)個の係数に一対一に対応して設けられた(m×n)個の乗算器と、
    前記順方向処理と前記逆方向処理とで、前記(m×n)個の乗算器のそれぞれから出力された値を加算するパターンを切り換える加算回路と、
    を有する
    ニューラルネットワーク装置。
  2. 前記順方向処理において、
    前記第1層は、前記係数行列におけるm個の行に一対一に対応付けられたm個の第1信号値を出力し、
    前記(m×n)個の乗算器のそれぞれは、前記m個の第1信号値のうちの当該乗算器が対応付けられた行に対応する第1信号値と、前記(m×n)個の係数のうちの当該乗算器が対応付けられた係数とを乗算し、
    前記加算回路は、前記(m×n)個の乗算器から出力された(m×n)個の乗算値を列毎に加算することにより、n個の順方向乗累算値を算出し、
    前記逆方向処理において、
    前記第2層は、前記係数行列におけるn個の列に一対一に対応付けられたn個の第1誤差値を出力し、
    前記(m×n)個の乗算器のそれぞれは、前記n個の第1誤差値のうちの当該乗算器が対応付けられた列に対応する第1誤差値と、前記(m×n)個の係数のうちの当該乗算器が対応付けられた係数とを乗算し、
    前記加算回路は、前記(m×n)個の乗算器から出力された(m×n)個の乗算値を行毎に加算することにより、m個の逆方向乗累算値を算出する
    請求項1に記載のニューラルネットワーク装置。
  3. 前記(m×n)個の乗算器のそれぞれは、ハードウェアにより実現される
    請求項2に記載のニューラルネットワーク装置。
  4. 第i行(iは1以上m以下の任意整数)および第j列(jは1以上n以下の任意整数)の係数に対応付けられた乗算器は、
    前記順方向処理において、前記係数行列における第i行に対応付けられた第1信号値と、前記係数行列に含まれる第i行および第i列の係数とを乗算し、
    前記逆方向処理において、前記係数行列に含まれる第i行および第i列の係数と、前記係数行列における第j列に対応付けられた第1誤差値とを乗算する
    請求項2または3に記載のニューラルネットワーク装置。
  5. 前記加算回路は、
    前記順方向処理において、前記係数行列における第j列に対応付けられたm個の乗算器から出力されたm個の乗算値を加算することにより、第i行の順方向乗累算値を算出し、
    前記逆方向処理において、前記係数行列における第i列に対応付けられたn個の乗算器から出力されたn個の乗算値を加算することにより、第j列の逆方向乗累算値を算出する
    請求項4に記載のニューラルネットワーク装置。
  6. 前記順方向処理において、前記第2層は、前記行列演算部により算出された前記n個の順方向乗累算値のそれぞれを活性化関数に与えて、n個の第2信号値を算出する
    請求項2から5の何れか1項に記載のニューラルネットワーク装置。
  7. 前記第1層は、m個の前段乗累算値のそれぞれを誤差関数に与えて、前記係数行列におけるm個の行に一対一に対応付けられたm個の逆変換値を算出し、
    前記逆方向処理において、前記第1層は、前記m個の逆方向乗累算値と前記m個の逆変換値とを行毎に乗算して、m個の第2誤差値を算出し、
    前記m個の前段乗累算値は、前記順方向処理において、前記第1層が前記m個の第1信号値を算出するために活性化関数に与えたm個の値である
    請求項2から6の何れか1項に記載のニューラルネットワーク装置。
  8. 第i行に対応付けられた逆変換値を算出するための誤差関数は、第i行に対応付けられた第1信号値を算出するための活性化関数の導関数である
    請求項7に記載のニューラルネットワーク装置。
  9. 前記係数行列に含まれる前記(m×n)個の係数を記憶する係数記憶部をさらに備える
    請求項2から8の何れか1項に記載のニューラルネットワーク装置。
  10. 前記(m×n)個の乗算器のそれぞれは、当該乗算器が対応付けられた係数に応じたコンダクタンスに設定された抵抗変化メモリを含む
    請求項2から9の何れか1項に記載のニューラルネットワーク装置。
  11. 前記順方向処理において、
    前記(m×n)個の乗算器のそれぞれは、当該乗算器が対応付けられた行に対応する第1信号値に応じた電圧が含んでいる抵抗変化メモリに印加され、
    前記加算回路は、前記(m×n)個の乗算器に含まれる(m×n)個の抵抗変化メモリに流れる電流を列毎に加算することにより、前記n個の順方向乗累算値を算出し、
    前記逆方向処理において、
    前記(m×n)個の乗算器のそれぞれは、当該乗算器が対応付けられた列に対応する第1誤差値に応じた電圧が含んでいる抵抗変化メモリに印加され、
    前記加算回路は、前記(m×n)個の乗算器に含まれる前記(m×n)個の抵抗変化メモリに流れる電流を行毎に加算することにより、前記m個の逆方向乗累算値を算出する
    請求項10に記載のニューラルネットワーク装置。
  12. 前記(m×n)個の乗算器に含まれる前記(m×n)個の抵抗変化メモリのそれぞれは、第1端に第1信号値または第1誤差値に応じた電圧が印加され、第2端が共通信号線を介して所定電位に接続され、
    前記加算回路は、前記共通信号線に流れる電流値を出力する
    請求項11に記載のニューラルネットワーク装置。
  13. 前記順方向処理または前記逆方向処理の指定、および、前記n個の順方向乗累算値のうちの何れを出力するか、または、前記m個の逆方向乗累算値のうちの何れを出力するかの指定を受け付けるデコーダをさらに備え、
    前記デコーダは、
    前記順方向処理において、第j列の順方向乗累算値を出力する場合、
    第j列に対応付けられたm個の乗算器に含まれるm個の抵抗変化メモリに、第1信号値に応じた電圧を印加して電流を流させ、第j列以外の列に対応付けられた複数の乗算器に含まれる複数の抵抗変化メモリに流れる電流を0とし、
    前記逆方向処理において、第i行の逆方向乗累算値を出力する場合、
    第i行に対応付けられたn個の乗算器に含まれるn個の抵抗変化メモリに、第1誤差値に応じた電圧を印加して電流を流させ、第i行以外の行に対応する複数の乗算器に含まれる複数の抵抗変化メモリに流れる電流を0とする
    請求項12に記載のニューラルネットワーク装置。
  14. 前記m個の第1信号値および前記n個の第1誤差値のそれぞれは、2値であり、
    第1信号値または第1誤差値に応じた電圧を印加する場合において、前記(m×n)個の乗算器のそれぞれは、与えられた第1信号値または与えられた第1誤差値が第1値の場合に含まれている抵抗変化メモリに所定の電圧を印加し、与えられた第1信号値または与えられた第1誤差値が第2値の場合に含まれている抵抗変化メモリに流れる電流を0とする
    請求項13に記載のニューラルネットワーク装置。
  15. 前記(m×n)個の乗算器のそれぞれは、それぞれに異なる荷重が割り当てられたL個(Lは2以上の整数)の抵抗変化メモリを含み、
    前記L個の抵抗変化メモリは、割り当てられた荷重とコンダクタンスとを乗算した値の合計が、当該乗算器に対応付けられた係数となるように、それぞれのコンダクタンスが設定され、
    前記順方向処理において、
    前記(m×n)個の乗算器のそれぞれは、当該乗算器が対応付けられた行に対応する第1信号値に応じた電圧が、前記L個の抵抗変化メモリのそれぞれに印加され、
    前記加算回路は、前記L個の抵抗変化メモリのそれぞれに流れる電流と割り当てられた荷重とを乗算した値の合計を、前記係数行列における列毎に加算することにより、前記n個の順方向乗累算値を算出し、
    前記逆方向処理において、
    前記(m×n)個の乗算器のそれぞれは、当該乗算器が対応付けられた列に対応する第1誤差値に応じた電圧が、前記L個の抵抗変化メモリのそれぞれに印加され、
    前記加算回路は、前記L個の抵抗変化メモリのそれぞれに流れる電流と割り当てられた荷重とを乗算した値の合計を、前記係数行列における行毎に加算することにより、前記m個の逆方向乗累算値を算出する
    請求項10から14の何れか1項に記載のニューラルネットワーク装置。
  16. 前記(m×n)個の乗算器のそれぞれは、ポジ側抵抗変化メモリと、ネガ側抵抗変化メモリとを含み、
    前記ポジ側抵抗変化メモリおよび前記ネガ側抵抗変化メモリは、コンダクタンスの差分値が、当該乗算器に対応付けられた係数となるように、それぞれのコンダクタンスが設定され、
    前記順方向処理において、
    前記(m×n)個の乗算器のそれぞれは、当該乗算器が対応付けられた列に対応する第1信号値に応じた差動電圧が、前記ポジ側抵抗変化メモリおよび前記ネガ側抵抗変化メモリに印加され、
    前記加算回路は、前記ポジ側抵抗変化メモリに流れる電流と前記ネガ側抵抗変化メモリとに流れる電流との差分値を、前記係数行列における列毎に加算することにより、前記n個の順方向乗累算値を算出し、
    前記逆方向処理において、
    前記(m×n)個の乗算器のそれぞれは、当該乗算器が対応付けられた行に対応する第1誤差値に応じた差動電圧が、前記ポジ側抵抗変化メモリおよび前記ネガ側抵抗変化メモリに印加され、
    前記加算回路は、前記ポジ側抵抗変化メモリに流れる電流と前記ネガ側抵抗変化メモリとに流れる電流との差分値を、前記係数行列における行毎に加算することにより、前記m個の逆方向乗累算値を算出する
    請求項10から14の何れか1項に記載のニューラルネットワーク装置。
  17. 1行およびm列の順方向第1行列と、m行およびn列(mおよびnは1以上の整数であり、一方が1の場合には他方は2以上)の係数行列とを行列演算して1行およびn列の順方向第2行列を出力する順方向処理、並びに、前記係数行列とn行および1列の逆方向第1行列とを行列演算してm行および1列の逆方向第2行列を出力する逆方向処理を実行する演算装置であって、
    前記係数行列に含まれる(m×n)個の係数に一対一に対応して設けられた(m×n)個の乗算器と、
    前記順方向処理と前記逆方向処理とで、前記(m×n)個の乗算器のそれぞれから出力された値を加算するパターンを切り換える加算回路と、
    を有する
    演算装置。
JP2017222258A 2017-11-17 2017-11-17 ニューラルネットワーク装置および演算装置 Active JP6786466B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017222258A JP6786466B2 (ja) 2017-11-17 2017-11-17 ニューラルネットワーク装置および演算装置
US15/909,446 US20190156181A1 (en) 2017-11-17 2018-03-01 Neural network device and computing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017222258A JP6786466B2 (ja) 2017-11-17 2017-11-17 ニューラルネットワーク装置および演算装置

Publications (2)

Publication Number Publication Date
JP2019095860A true JP2019095860A (ja) 2019-06-20
JP6786466B2 JP6786466B2 (ja) 2020-11-18

Family

ID=66533986

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017222258A Active JP6786466B2 (ja) 2017-11-17 2017-11-17 ニューラルネットワーク装置および演算装置

Country Status (2)

Country Link
US (1) US20190156181A1 (ja)
JP (1) JP6786466B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021152703A (ja) * 2020-03-24 2021-09-30 株式会社東芝 ニューラルネットワーク装置およびニューラルネットワークシステム
JP2022036131A (ja) * 2019-07-01 2022-03-04 株式会社アクセル 学習装置、推論装置、学習方法、推論方法、コンピュータシステムおよびプログラム
US11380375B2 (en) 2020-08-25 2022-07-05 Kabushiki Kaisha Toshiba Storage device and neural network apparatus
US11461075B2 (en) 2020-01-10 2022-10-04 Kabushiki Kaisha Toshiba Arithmetic device
US11526738B2 (en) 2019-09-17 2022-12-13 Kabushiki Kaisha Toshiba Processing apparatus and inference system
US11777006B2 (en) 2021-02-24 2023-10-03 Kabushiki Kaisha Toshiba Nonvolatile memory device

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11488664B2 (en) 2020-10-13 2022-11-01 International Business Machines Corporation Distributing device array currents across segment mirrors

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05346914A (ja) * 1992-06-16 1993-12-27 Matsushita Electron Corp ニューロプロセッサ
JP2010146514A (ja) * 2008-12-22 2010-07-01 Sharp Corp 情報処理装置及びこれを用いたニューラルネットワーク回路

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05346914A (ja) * 1992-06-16 1993-12-27 Matsushita Electron Corp ニューロプロセッサ
JP2010146514A (ja) * 2008-12-22 2010-07-01 Sharp Corp 情報処理装置及びこれを用いたニューラルネットワーク回路

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022036131A (ja) * 2019-07-01 2022-03-04 株式会社アクセル 学習装置、推論装置、学習方法、推論方法、コンピュータシステムおよびプログラム
JP7321579B2 (ja) 2019-07-01 2023-08-07 株式会社アクセル 学習装置、推論装置、学習方法、推論方法、コンピュータシステムおよびプログラム
US11526738B2 (en) 2019-09-17 2022-12-13 Kabushiki Kaisha Toshiba Processing apparatus and inference system
US11893476B2 (en) 2019-09-17 2024-02-06 Kabushiki Kaisha Toshiba Processing apparatus and inference system
US11461075B2 (en) 2020-01-10 2022-10-04 Kabushiki Kaisha Toshiba Arithmetic device
JP2021152703A (ja) * 2020-03-24 2021-09-30 株式会社東芝 ニューラルネットワーク装置およびニューラルネットワークシステム
US11380375B2 (en) 2020-08-25 2022-07-05 Kabushiki Kaisha Toshiba Storage device and neural network apparatus
US11777006B2 (en) 2021-02-24 2023-10-03 Kabushiki Kaisha Toshiba Nonvolatile memory device

Also Published As

Publication number Publication date
JP6786466B2 (ja) 2020-11-18
US20190156181A1 (en) 2019-05-23

Similar Documents

Publication Publication Date Title
JP2019095860A (ja) ニューラルネットワーク装置および演算装置
US20240152740A1 (en) Transposing neural network matrices in hardware
US10339202B2 (en) Resistive memory arrays for performing multiply-accumulate operations
CN108009640B (zh) 基于忆阻器的神经网络的训练装置及其训练方法
US11244225B2 (en) Neural network processor configurable using macro instructions
EP3298545B1 (en) Vector computation unit in a neural network processor
JP6773621B2 (ja) 演算装置
US10748064B2 (en) Deep neural network training with native devices
US11042715B2 (en) Electronic system for performing a multiplication of a matrix and vector
US10468098B2 (en) In-cell differential read-out circuitry for reading signed weight values in resistive processing unit architecture
KR102309013B1 (ko) 효율적인 음수 가중치 구현이 가능한 뉴로모픽 회로 시스템
JPH02193251A (ja) エラー後方伝ぱん法と神経網システム
CN112633486B (zh) 数据感测装置及其数据感测方法
WO2020178903A1 (ja) 積和演算器、ニューロモーフィックデバイスおよび積和演算方法
US20220101142A1 (en) Neural network accelerators resilient to conductance drift
CN115982092A (zh) 一种存算一体电路、芯片系统及电子设备
JP7023149B2 (ja) 半導体装置
JP7427617B2 (ja) ニューラルネットワーク装置、情報処理装置およびプログラム
Youssefi et al. Efficient mixed-signal synapse multipliers for multi-layer feed-forward neural networks

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190816

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200610

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200825

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200929

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201028

R151 Written notification of patent or utility model registration

Ref document number: 6786466

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151