JP2021076900A - データ処理装置及びその動作方法、プログラム - Google Patents

データ処理装置及びその動作方法、プログラム Download PDF

Info

Publication number
JP2021076900A
JP2021076900A JP2019200609A JP2019200609A JP2021076900A JP 2021076900 A JP2021076900 A JP 2021076900A JP 2019200609 A JP2019200609 A JP 2019200609A JP 2019200609 A JP2019200609 A JP 2019200609A JP 2021076900 A JP2021076900 A JP 2021076900A
Authority
JP
Japan
Prior art keywords
coefficient
input data
coefficient address
data processing
address
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
JP2019200609A
Other languages
English (en)
Other versions
JP7299134B2 (ja
Inventor
俊介 奥村
Shunsuke Okumura
俊介 奥村
浩一 野瀬
Koichi Nose
浩一 野瀬
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2019200609A priority Critical patent/JP7299134B2/ja
Priority to CN202011215662.2A priority patent/CN112784957A/zh
Priority to US17/090,534 priority patent/US20210132866A1/en
Publication of JP2021076900A publication Critical patent/JP2021076900A/ja
Application granted granted Critical
Publication of JP7299134B2 publication Critical patent/JP7299134B2/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/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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/217Validation; Performance evaluation; Active pattern learning techniques
    • G06F18/2193Validation; Performance evaluation; Active pattern learning techniques based on specific statistical tests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/50Adding; Subtracting
    • 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/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/041Abduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/95Hardware or software architectures specially adapted for image or video understanding structured as a network, e.g. client-server architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • 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/048Activation functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Human Computer Interaction (AREA)
  • Neurology (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Multimedia (AREA)
  • Mathematical Optimization (AREA)
  • Probability & Statistics with Applications (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)

Abstract

【課題】ニューラルネットワークの推論処理において、積和演算に要するメモリ容量を抑制しつつ高い認識精度を実現する。
【解決手段】データ処理装置は、バイナリ化された入力データの各々について、予め決められた値であるか否かを判定する入力データ判定部と、複数の係数と、複数の係数が格納される係数アドレスに関する情報を含む係数アドレス情報と、を格納する記憶部と、入力データ判定部の判定結果に基づいて、記憶部から係数アドレスを読み出し、係数アドレスに基づいて記憶部から係数を読み出す制御部と、制御部が取得した係数に関して演算を行う演算部と、を具備する。
【選択図】図2

Description

本発明はデータ処理装置及びその動作方法とプログラムに関し、例えばニューラルネットワークによる処理で、浮動小数点の重み係数を用いて積和演算を行うデータ処理装置及びその動作方法とプログラムに関する。
近年、組み込み機器において人工知能(Artificial Intelligence、AI)の推論処理を行わせるものがある。推論処理には、様々なニューラルネットワークが利用される。例えば、ニューラルネットワークには、ディープニューラルネットワーク(Deep Neural Network、DNN)、畳み込みニューラルネットワーク(Convolutional Neural Network、CNN)、多層パーセプトロン(Multi layer Perceptron)、リカレントニューラルネットワーク(Recurrent Neural Network)などがある。ニューラルネットワークによる推論処理では、大量の積和演算を実行するために、大容量のメモリや演算リソースが必要とされる。
演算リソースに関して、乗算器は加算器と比較して回路規模が大きく、演算時の消費電力も大きい。そこで、ニューラルネットワークの演算などで用いる積和演算行列の入力データをいくつかのバイナリデータの組み合わせにすることで、計算量が大きい浮動小数点積和演算を浮動小数点加算にする方法が提案されている。
一方、メモリ容量に関しては、重みパラメータが浮動小数点データであるため、重みパラメータを保存するために大きなメモリ容量が必要になるとの問題がある。特にメモリ容量に制約がある組み込み向けマイコンやSoC(System On Chip)では、大きな問題となる。
この点に関して、非特許文献1には、入力だけでなく重みパラメータについても、バイナリあるいは3値の基底行列と係数情報に分解することで、バイナリ化された入力データを基底行列の乗算(ビット演算)を行ってから係数情報を乗じる技術が開示されている。非特許文献1によれば、保存すべきメモリ量を削減できるとされる。
神谷龍司, 山下隆義, 安倍満, 佐藤育郎, 山内悠嗣, 藤吉弘亘, "Binaraized−DCNNによる識別計算の高速化とモデル圧縮", パターン認識・メディア理解研究会, 2016
非特許文献1によれば、基底情報1ビットに対して1つの係数情報を与える。そして、H個(Hは自然数)の各係数情報に対して、1、もしくは−1の値を掛けた値の総和を取ることで、元々の重みパラメータを近似する。そのため、表現できる重みパラメータは、H個の係数の+もしくは−の値の組み合わせの総和に限られてしまうという問題があった。例えば、基底情報の数がH個から2×H個へと2倍に増えても、取り得る係数情報は2倍にしか増加しない。また、表現できる重みパラメータは、H個の係数情報に+1を乗ずるか、−1を乗じたものの総和に限られるため、重みパラメータの取り得る値の分布は+側と−側で対称なものに限られる。特に歪んだ分布の入力値がニューラルネットワークに入力される場合には、積和演算の度に値の分布の歪みが蓄積し、推論処理における認識精度が低下するとの問題がある。
実施の形態の課題は、ニューラルネットワークをはじめとした機械学習の推論処理において、積和演算に要するメモリ容量を抑制しつつ高い認識精度を実現する点にある。その他の課題および新規な特徴は、本明細書の記述および図面の記載から明らかになるであろう。
一実施の形態に係るデータ処理装置は、バイナリ化された入力データの各々について、予め決められた値であるか否かを判定する入力データ判定部と、複数の係数と、複数の係数が格納される係数アドレスに関する情報を含む係数アドレス情報と、を格納する記憶部と、入力データ判定部の判定結果に基づいて、記憶部から係数アドレスを読み出し、係数アドレスに基づいて記憶部から係数を読み出す制御部と、制御部が取得した係数に関して演算を行う演算部と、を具備する。
他の実施の形態に係るデータ処理装置の動作方法は、演算部とメモリを具備するデータ処理装置の動作方法であって、バイナリ化された入力データが予め決められた値であるか否かを判定するステップと、複数の係数と、複数の係数が格納される係数アドレスに関する情報を含む係数アドレス情報と、をメモリに格納するステップと、判定するステップの判定結果に基づいて、メモリから係数アドレスを読み出すステップと、係数アドレスに基づいてメモリから係数を読み出すステップと、読み出された係数に基づいて演算部により演算するステップと、を含む。
他の実施の形態に係るプログラムは、CPUとメモリとを具備するデータ処理装置で実行されるニューラルネットワークモデルに関するプログラムであって、バイナリ化された入力データの各々が予め決められた値であるか否かを判定するステップと、複数の係数と、複数の係数が格納される係数アドレスに関する情報を含む係数アドレス情報と、をメモリに格納するステップと、メモリから係数アドレスを読み出すステップと、係数アドレスに基づいてメモリから係数を読み出すステップと、読み出された係数を累積加算するステップと、を実行させる。
一実施の形態によれば、データ処理装置は、ディープニューラルネットワークをはじめとした機械学習の推論処理において、メモリ容量を抑制しつつ高い認識精度を実現することができる。
図1は、実施の形態1に係るデータ処理装置の構成例を示すブロック図である。 図2は、実施の形態1に係るデータ処理装置の推論部と記憶装置の構成例を示す回路図である。 図3は、実施の形態1に係るデータ処理装置の入力データ保存部に格納されるバイナリ化された入力データを説明する図である。 図4は、実施の形態1に係るデータ処理装置の推論部が行うニューラルネットワークの処理の一例を示す図である。 図5は、実施の形態1に係るデータ処理装置による第1の入力データに対する積和演算の一例を示す図である。 図6は、実施の形態1に係るデータ処理装置による第2の入力データに対する積和演算の一例を示す図である。 図7は、実施の形態1に係るデータ処理装置による第3の入力データに対する積和演算の一例を示す図である。 図8は、実施の形態1に係るデータ処理装置による第4の入力データに対する積和演算の一例を示す図である。 図9は、実施の形態1に係るデータ処理装置が行う積和演算処理の一例を示す図である。 図10は、実施の形態1に係るデータ処理装置が行う積和演算処理の一例を示すフローチャートである。 図11は、実施の形態1に係る係数保存部が記憶する係数の一例を示す図である。 図12は、実施の形態1に係るデータ処理装置により、出力データの分布が改善される様子を示す図である。 図13は、実施の形態2に係るデータ処理装置の推論部と記憶装置の構成例を示す回路図である。 図14は、実施の形態2に係るデータ処理装置が行う積和演算処理の概要を説明する図である。 図15は、実施の形態3に係るデータ処理装置の推論部と記憶装置の構成例を示す回路図である。 図16は、実施の形態3に係るデータ処理装置が行う積和演算処理の概念を説明する図である。 図17は、実施の形態3に係るデータ処理装置が行う積和演算処理の一例を示すフローチャートである。 図18は、実施の形態4に係るデータ処理装置の推論部と記憶装置の構成例を示す回路図である。 図19は、実施の形態4に係る係数保存部が記憶する係数の一例を示す図である。 図20は、実施の形態4に係るデータ処理装置により、出力データの分布が改善される様子を示す図である。 図21は、実施の形態5に係るデータ処理装置の推論部と記憶装置の構成例を示す回路図である。 図22は、実施の形態5に係るデータ処理装置が最頻値係数アドレスに基づいて行う係数の調整を説明する図である。 図23は、実施の形態5に係るデータ処理装置が行う積和演算処理の一例を示すフローチャートである。 図24は、実施の形態6に関して、ニューラルネットワークの入力データを複数ビットに量子化する方法の一例を示す図である。 図25は、実施の形態6に係るデータ処理装置の推論部と記憶装置の構成例を示す回路図である。 図26は、実施の形態6に係るデータ処理装置が行う積和演算処理の概念を説明する図である。 図27は、実施の形態6に係るデータ処理装置が行う積和演算処理の一例を示すフローチャートである。 図28は、従来技術による場合の重みパラメータの分布を説明する図である。
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
[実施の形態1]
(構成)
図1は、実施の形態1に係るデータ処理装置1の構成例を示すブロック図である。図1に示されるように、データ処理装置1は、プロセッサ10と、ROM11と、バス12と、RAM13と、推論部(Inference unit)14と、を備える。例えば、データ処理装置1は、半導体装置として構成され得る。
プロセッサ10は、バス12を経由してROM11などから読み出されたプログラム(命令ストリーム)を実行して演算処理を行う処理回路である。例えば、プロセッサは、CPUやDSP(Digital Signal Processor)等である。
ROM11は、プロセッサ10に実行させるプログラムを格納する記憶装置である。例えば、ROM11には、ディープラーニングの機械学習を行わせて得たディープニューラルネットワークに係るプログラムや推論部14を制御するためのプログラムが格納されている。図1ではROM11はデータ処理装置1に内蔵されているが、データ処理装置1は、データ処理装置1の外部に備えられた記憶装置からプログラムを読み込み、処理を実行しても良い。また、プログラムを格納する記憶装置は、データ処理装置1に内蔵されたROM11及びデータ処理装置1の外部に備えられた記憶装置に両者であっても良い。
バス12は、プロセッサ10、ROM11、RAM13、及び推論部14間を接続し、データの授受を行うための信号経路である。プロセッサ10及び推論部14は、バス12を経由して、ROM11またはRAM13にアクセスする。
RAM13は、プロセッサ10及び推論部14が演算処理を行うためのデータを格納する記憶装置(記憶部)である。推論部14は、ニューラルネットワークの演算に必要な一時データ等をRAM13に記憶させることができる。
推論部(Inference Unit)14は、ニューラルネットワークを用いて推論処理を行う。また、推論部14が処理するニューラルネットワークの一例はディープニューラルネットワーク(DNN)であるが、これに限られない。例えば、ニューラルネットワークは、CNNやRNNであっても良い。
なお、図1には推論部14を備える構成例が示されているが、データ処理装置1の構成はこれに限られない。即ち、データ処理装置1は推論部14をソフトウェアとして実現してROM11にプログラムを格納するよう構成されても良い。また、推論部14は、ROM11及びRAM13とは別に、推論部14内にROMまたはRAMなどの記憶装置を具備しても良い。
図2は、実施の形態1に係る推論部14及びRAM13の構成例を示す図である。図2に示されるように、推論部14は、入力データ判定部140と、浮動小数演算部(Floating Point Unit、FPU)141と、制御部142と、を備える。また、RAM13は、入力データ保存部130と、係数アドレス情報保存部131と、係数保存部132と、を備える。図2では、係数アドレス情報保存部131及び係数保存部132がRAM13に備えられる構成が示されているが、係数アドレス情報保存部131及び係数保存部132の構成はこれに限られない。例えば、係数アドレス情報保存部131及び係数保存部132は、ROM11に備えられる構成であっても良い。
入力データ保存部130は、ニューラルネットワークで推論を行うためのバイナリ化された入力データを保存する記憶部である。ニューラルネットワークに入力されるデータは浮動小数点のデータである。入力された浮動小数点のデータは、図示しない量子化部で、1ビットのデジタル値に量子化され、バイナリ化された入力データとして入力データ保存部130に保存される。換言すると、ニューラルネットワークに入力された浮動小数点の入力データは、0または1のいずれかの値に量子化され、入力データ保存部130に保存される。図3は、浮動小数点の入力データを、バイナリ化された入力データに量子化する例を示す図である。図3に示される例では、入力値は0からmaxまでの値に分布している。図3に示される例では、0以上、かつ、th=max/2未満の値は0に、th=max/2以上かつ、max以下の値は1に量子化される。なお、図3に示される量子化の例では、バイナリ化するための閾値はth=max/2とされているが、バイナリ化された入力データに量子化する方法は、これに限られない。例えば、閾値をth=max/4として、入力データをバイナリデータに量子化することもできる。閾値をth=max/4とする場合、0以上、かつ、th=max/4未満の値は0に、th=max/4以上かつ、max以下の値は1に量子化される。
再び図2を参照して、係数アドレス情報保存部131は、ニューラルネットワークの係数が格納されているアドレスである係数アドレスに関する情報(以下、「係数アドレス情報」と呼ぶ)を保存する記憶部である。ここで、係数アドレスは、係数保存部132に格納されている係数のアドレス値である。係数アドレスが、Kビット(Kは自然数)で構成される場合、最大で2個の異なる係数を識別することができる。換言すれば、推論部14は、ニューラルネットワークの係数として最大で2個の異なる係数を用いることができる。一方、係数アドレス情報は、1または複数の係数アドレスを含み、1または複数の係数アドレスの使用順序(演算順序)に関する情報をも含む。換言すると、係数アドレス情報は、ニューラルネットワークに関する積和演算において、1または複数の入力データのそれぞれと、1または複数の重みパラメータのそれぞれと、を乗算することに対応して、1または複数の係数アドレスからなる情報を含む。したがって、係数アドレス情報は、1または複数の係数を、どの入力データに対して乗ずるかという情報を含んでいる。係数アドレス情報は、例えば、1または2以上の係数アドレスの配列として表現され得る。係数アドレス及び係数アドレス情報の具体例は、図5を用いて詳述する。
係数保存部132は、ニューラルネットワークの係数を保存する記憶部である。
入力データ判定部140は、バイナリ化された入力データが予め決められた値であるか否かを判定する。より具体的には、入力データ判定部140は、例えば、バイナリ化された入力データが予め決められた値である1であるか否かを判定する。
FPU141は、浮動小数点に関する演算を行う演算回路である。後述するように、FPU141は、係数保存部132から読み出される係数を累積加算することにより、入力データと係数との積和演算を実行する。
制御部142は、入力データ保存部130と、係数アドレス情報保存部131と、係数保存部132と、入力データ判定部140と、FPU141との間で、バイナリ化された入力データ、係数アドレス、及び係数の送受信制御を行う制御回路である。より具体的には、制御部142は、入力データ保存部からバイナリ化された入力データを読み出して、読み出された入力データを入力データ判定部140に送信する。また、制御部142は、入力データ判定部140による、入力データが1であるとの判定結果に基づいて、係数アドレス情報保存部131から係数アドレスを読み出す。更に、制御部142は、読み出された係数アドレスに基づいて、係数保存部132から係数を読み出し、FPU141に送信する。
制御部142は、全ての入力データを読み出し累積加算を行った後、FPU141における累積加算の結果を積和演算結果としてRAM13に保存する。
(動作)
実施の形態1に係るデータ処理装置1では、ニューラルネットワークによる推論処理に先立って学習データを用いて学習が行われ、最適な重みパラメータが求められる。実施の形態1に係るデータ処理装置1では、学習時に得られた重みパラメータの分布から代表的なL(Lは自然数)個の係数が選択される。選択されたL個の係数は、係数保存部132に保存される。ここで、L個の係数は、浮動小数点データである。また、実施の形態1に係るデータ処理装置1では、L個の係数の係数アドレスに関する情報である係数アドレス情報が係数アドレス情報保存部131に格納される。例えば、係数アドレスは、係数保存部132のベースアドレスに対する相対アドレスである。係数アドレスを相対アドレスの値とすることにより、より少ないビット数で、L個の係数アドレスを表現可能である。
実施の形態1に係るデータ処理装置1では、学習で得られた重みパラメータの分布から、代表的なK個の値が予め選択され、係数保存部132に保存される。このように、実施の形態1に係るデータ処理装置1では、浮動小数点データである重みパラメータは、係数保存部132に格納される係数と、係数アドレス情報保存部131に格納される係数アドレス情報の組み合わせを用いて表現される。
図4は、実施の形態1に係るデータ処理装置1が推論処理で用いる、ニューラルネットワークの一例を示す図である。図4に示されるニューラルネットワークは、推論部14で処理される推論処理を表している。図4に示されるように、出力データy1は、入力データと重みパラメータの積をとり、積の総和を計算して算出される。
Figure 2021076900
このように、ニューラルネットワークでは、浮動小数点で表される入力データと、浮動小数点で表される係数を用いた積和演算(以下、「浮動小数点による積和演算」と呼ぶ)が大量に実行され、出力データが計算される。推論処理では大量の浮動小数点による積和演算を実行するため、浮動小数点データを格納する大容量のメモリが必要になる。そこで、実施の形態1に係るデータ処理装置1は、浮動小数点による積和演算に代えて、バイナリ化された入力データに基づいて係数の累積加算を行う。換言すると、実施の形態1に係るデータ処理装置1は、バイナリ化された入力データに基づいて係数の累積加算を行うことで、浮動小数点による積和演算に相当する演算を行うことができる。
図5ないし図8は、実施の形態1に係るデータ処理装置1において、ニューラルネットワークにおいて必要となる積和演算の概念を示す図である。図5ないし図8にはバイナリ化された入力データの例として、(1 0 1 1)の4つのバイナリ化された入力データが示されている。また、図5ないし図8において、係数アドレスは、A0ないしA7である。これに対し、係数アドレス情報は、図5ないし図8において、(A0 A3 A2 A1)で表現される情報である。係数アドレスA0ないしA7のうち、図5ないし図8に示される積和演算で使用される係数アドレスは、A0、A1、A2、及びA3である。係数アドレス情報は、個別具体的な積和演算において使用される係数に対応する係数アドレスの組み合わせの情報を含んでいる。更に、係数アドレス情報は、積和演算における係数の演算順序に対応して、係数アドレスの読み出し順序に関する情報をも含んでいる。換言すると、係数アドレス情報が複数の係数アドレスを含む場合、係数アドレス情報に含まれる複数の係数アドレスは、予め定められた順序に従って読み出されるよう配列されている。
図5ないし図8を用いて、より具体的に、係数アドレス情報を説明する。図5ないし図8において、係数アドレスA0は、(1 0 1 1)の最左端の1(第1の入力データ)に対して乗算される係数を格納するアドレスである。係数アドレスA3は、(1 0 1 1)の左端から2番目の0(第2の入力データ)に対して乗算される係数を格納するアドレスである。係数アドレスA2は、(1 0 1 1)の左端から3番目の1(第3の入力データ)に対して乗算される係数を格納するアドレスである。係数アドレスA1は、(1 0 1 1)の左端から4番目の1(第4の入力データ)に対して乗算される係数を格納するアドレスである。(A0 A3 A2 A1)は、図4に示されるようなニューラルネットワークのモデルによって予め決められる。(1 0 1 1)及び(A0 A3 A2 A1)は、それぞれ、4個の要素を有する。以下、係数アドレス情報、即ち、係数アドレスの配列を行列と見立て、「係数アドレス行列」とも呼ぶ。例えば、(A0 A3 A2 A1)は1×4の係数アドレス行列である。なお、図5ないし図8では、係数アドレス行列の例として1×4の係数アドレス行列が示されているが、係数アドレス行列の成分数はこれに限られない。係数アドレス行列は、1×N(Nは自然数)の行列であっても良い。
4つのバイナリ化された入力データと係数の積和演算を行う場合、図5に示されるように、制御部142は、まず、(1 0 1 1)の最左端のバイナリ化された入力データである1を入力データ保存部130から読み出す。入力データ判定部140は、入力データ保存部130から読み出されたバイナリ化された入力データが、予め決められた値である1であると判定する。制御部142は、入力データ判定部140の判定結果に基づいて、係数アドレス情報保存部131から係数アドレスA0を読み出す。続いて、制御部142は、係数アドレスA0に基づいて、アドレスA0に対応する係数0.283を係数保存部132から読み出す。制御部によって係数保存部132から読み出された係数0.283は、制御部142によりFPU141に入力され、FPU141で累積加算される。
次に、図6に示されるように、制御部142は、(1 0 1 1)の左から2番目のバイナリ化された入力データである0を入力データ保存部130から読み出す。入力データ判定部140は、バイナリ化された入力データが、予め決められた値である1ではないと判定する。制御部142は、入力データ判定部140の判定結果に基づいて、係数アドレス情報保存部131から係数アドレス(A3)を読み出さないとの制御を行う。
続いて、図7に示されるように、制御部142は、(1 0 1 1)の左から3番目のバイナリ化された入力データである1を入力データ保存部130から読み出す。入力データ判定部140は、入力データ保存部130から読み出されたバイナリ化された入力データが、予め決められた値である1であると判定する。制御部142は、入力データ判定部140の判定結果に基づいて、係数アドレス情報保存部131から係数アドレスA2を読み出す。続いて、制御部142は、係数アドレスA2に基づいて、アドレスA2に対応する係数1.232を係数保存部132から読み出す。制御部142によって係数保存部132から読み出された係数1.232は、制御部142によりFPU141に入力され、FPU141で累積加算される。
最後に、図8に示されるように、制御部142は、(1 0 1 1)の左から4番目のバイナリ化された入力データである1を入力データ保存部130から読み出す。入力データ判定部140は、入力データ保存部130から読み出されたバイナリ化された入力データが、予め決められた値である1であると判定する。制御部142は、入力データ判定部140の判定結果に基づいて、係数アドレス情報保存部131から係数アドレスA1を読み出す。続いて、制御部142は、係数アドレスA1に基づいて、アドレスA1に対応する係数−0.332を係数保存部132から読み出す。制御部142によって係数保存部132から読み出された係数−0.332は、制御部142によりFPU141に入力され、FPU141で累積加算される。
図5ないし図8に示されるFPU141による累積加算により、浮動小数点の入力データと浮動小数点の重みパラメータの積和演算が代替される。
図5ないし図8には、4つのバイナリ化された入力データ(1 0 1 1)に関する積和演算の様子が示されている。ニューラルネットワークの推論処理において、データ処理装置1は、必要とされる数のバイナリ化された入力データを順次、入力データ保存部130から読み出し、上述した積和演算を繰り返す。
図9は、実施の形態1に係るデータ処理装置1が行う積和演算処理の一例を示す図である。図9を参照して、係数及び係数アドレス情報は、ニューラルネットワークの学習により得られた値であり、データ処理装置1による推論処理においては固定値である。入力データは、例えば、画像などの入力データである。入力データ判定部140は、入力データが予め決められた値である1ではないと判定すると、係数アドレス情報を取得しないため、入力データが0の場合、(入力データ)×(係数)の乗算結果は0と表されている。累積加算値は、FPU141による積和演算の経過及び結果を表している。図9に示される積和演算では、最終的な積和演算結果として0.468116が得られている。
図10は、実施の形態1に係るデータ処理装置1による積和演算処理の一例を示すフローチャートである。積和演算が開始されると、制御部142は、入力データ保存部130から、バイナリ化された入力データを読み出して、入力データ判定部140にバイナリ化された入力データを送信する(ステップS101)。
入力データ判定部140は、バイナリ化された入力データを受信すると、バイナリ化された入力データが予め決められた値(例えば1)であるか否かを判定する(ステップS102)。入力データ判定部140が、バイナリ化された入力データが0であると判定した場合(ステップS102:NO)、制御部142は、係数アドレス情報保存部131から係数アドレスを読み出さない。そして、制御部142は、次のバイナリ化された入力データを、入力データ保存部130から読み出す(ステップS101)。一方、入力データ判定部140が、バイナリ化された入力データが1であると判定した場合(ステップS102:YES)、制御部142は、係数アドレス情報保存部131から係数アドレスを取得する(ステップS103)。ここで、係数アドレスは、係数が格納されているアドレスに関する情報であり、整数のデータである。
続いて、制御部142は、係数アドレス情報保存部131から取得された係数アドレスに基づいて、係数保存部132にリードアクセスし、係数を取得する(ステップS104)。ここで、係数は浮動小数点のデータである。
ステップS104で取得された係数は、制御部142によって、FPU141に送信される。FPU141は係数が入力されると、浮動小数点データの累積加算を行う(ステップS105)。FPU141による係数の累積加算により、浮動小数点形式の入力データと浮動小数点形式の係数についての乗算処理および加算処理が代替される。
FPU141による係数の累積加算を行った後、制御部142は、入力データが最終の入力データであるか否かを判定する(ステップS106)。入力データが最終入力データである場合(ステップS106:YES)、積和演算処理は終了する。一方、入力データが最終入力データでない場合(ステップS106:NO)、制御部142は、入力データ保存部130から、次のバイナリ化された入力データをリードして、入力データ判定部140に、次のバイナリ化された入力データを送信する(ステップS101)。
(効果)
実施の形態1に係るデータ処理装置1は、係数アドレス情報保存部131と、係数保存部132と、入力データ判定部140と、FPU141とを有する。データ処理装置1は、入力データ判定部140の判定結果に基づいて、係数アドレス情報保存部131から係数アドレスを取得する。更に、データ処理装置1は、取得された係数アドレスに基づいて、係数保存部132から係数を取得する。そして、データ処理装置1は、FPU141により、取得された係数を累積加算することにより、浮動小数点データ同士の積和演算を代替できる。データ処理装置1は、Kビット(Kは自然数)の係数アドレスに基づいて2個の係数を参照することができるため、少ないメモリ容量を実現しつつ、ニューラルネットワークの推論処理において高い認識精度を実現することができる。
また、実施の形態1に係るデータ処理装置1では、表現可能な係数の分布が従来技術より多様になる。この点を、図28、図11、及び図12を使って説明する。
図28は、従来技術における重みパラメータの分布の様子を示す図である。また、図11は、実施の形態1に係るデータ処理装置1において実現可能な係数の分布の一例を示す図である。図28に示されるように、従来技術によれば、重みパラメータは1及び−1の2値を成分とする基底行列と、係数情報に分解される。そのため、実現される重みパラメータの分布は常に原点(0)に対して対称である。一方、図11に示されるように、実施の形態1に係るデータ処理装置1では、係数は、係数アドレスを媒介して参照される。図11に示されるように、実施の形態1に係るデータ処理装置1では、例えば、係数に一律に+0.3を加えることも可能である。そのため、実施の形態1に係るデータ処理装置1では、実現される重みパラメータの分布は原点(0)に対して非対称にできる。このように、実施の形態1に係るデータ処理装置1では、係数保存部132に格納される係数は個別にバイアス値を加えるなどの独立な設定が可能である。
図12は、図4に示されるようなニューラルネットワークに入力される入力値の分布と、重みパラメータの分布と、出力値の分布との関係を説明するための図である。図12の上側は従来技術に対応し、図12の下側は実施の形態1に対応する。図12の上側にあるように、歪んだ分布の入力値が入ってきた場合、重みパラメータが+側と−側で対称であると、出力値はより歪んだ分布となって出力される。出力値の分布がより歪む理由は、ニューラルネットワークでは積和演算を多数回行う必要があるため、積和演算の度に分布の歪みが大きくなるからである。その結果、分散が大きくなり、推論処理の精度劣化の原因となる。
一方、図12の下側にあるように、重みパラメータにバイアス値を加え、+側と−側で対称でない重みパラメータを表現する場合、出力値の分布の歪みを小さくすることができる。実施の形態1に係るデータ処理装置1では、係数にバイアス値を加えるなどの設定が可能だから、出力値の分散や平均値を補正するBatch Normalization処理も積和演算と同時に実行できる。
また、入力データ判定部140がバイナリ化された入力データが予め決められた値(例えば1)ではなく0であると判定した場合、データ処理装置1は、係数アドレス情報保存部131からの係数アドレスの取得、及び、係数保存部132からの係数の取得を行わない。したがって、不要なメモリアクセス、及び、浮動小数点演算を削減できる。換言すると、データ処理装置1は、ニューラルネットワークで必要とされる積和演算の高速化や低消費電力化を実現できる。
[実施の形態2]
次に実施の形態2について説明する。実施の形態2に係るデータ処理装置1は、実施の形態1に係るデータ処理装置1と比較して、積和演算の精度を上げるため、各入力データに対して乗じられる係数が1個からM個(Mは2以上の自然数)に拡張される点で異なる。各入力データに対して乗じられる係数が1個からM個(Mは2以上の自然数)に拡張されることに対応して、各入力データに対する係数アドレスも1個からM個に拡張される。1つのバイナリ化された入力データに対する係数アドレスの数が1個からM個に拡張される以外の構成および動作は、実施の形態1で説明したデータ処理装置1と同様であるので、同一の構成については同一の符号を付し、重複した説明は省略する。
(構成)
図13は、実施の形態2に係る推論部14及びRAM13Aの構成例を示す図である。図13に示されるように、実施の形態2に係るRAM13Aは、実施の形態1に係る係数アドレス情報保存部131に代えて、係数アドレス情報保存部131Aを具備する。
図14は、実施の形態2に係るデータ処理装置が行う積和演算処理の概要を説明する図である。図14に示されるように、実施の形態2に係るデータ処理装置1では、係数アドレス情報はM×Nの行列として表現され得る。図14を参照して、M×Nの行列の各列に含まれるM個の係数アドレスは、M個の係数アドレスにより参照されるM個の係数の和が、元の重みパラメータにもっとも近くなるように、推論処理に先立って予め決定される。行列の最左端(第1列)を参照して、(係数アドレスA0で参照される係数の値)+(係数アドレスA3で参照される係数の値)+(係数アドレスA0で参照される係数の値)+ … +(係数アドレスA1で参照される係数の値)は、量子化前の重みパラメータの第1成分(要素)とほぼ同等になるように調整されている。換言すると、量子化前の重みパラメータが、1または複数の係数の総和値とほぼ同等になるように分解されることに対応して、係数アドレス情報が定められる。係数アドレスの組み合わせの調整方法として、例えば、M個の係数アドレスの組み合わせから表現可能な重みパラメータの値のテーブルを予め生成し、元々の重みパラメータと最も近いテーブルの値が生成される係数アドレスM個の組み合わせを係数アドレス情報保存部131Aに保存しておくことができる。
(効果)
実施の形態2によれば、データ処理装置1は、1つのバイナリ化された入力データに対し、複数個の係数アドレスを係数アドレス情報保存部131に格納する。そのため、実施の形態1に係るデータ処理装置1と比較して、重みパラメータをより高精度に近似することができる。したがって、実施の形態2に係るデータ処理装置1は、ニューラルネットワークの推論処理において、より高い認識精度を実現できる。
[実施の形態3]
(構成)
図15は、実施の形態3に係るデータ処理装置1Bの推論部14B及びRAM13の構成例を示すブロック図である。実施の形態3に係るデータ処理装置1Bは、実施の形態2に係るデータ処理装置1Aと比較して、推論部14Bがアクセス回数蓄積部143を更に具備する点、及び、FPU141Bがアクセス回数蓄積部143の蓄積した係数アドレスのアクセス回数に基づいて積和演算を行う点で異なる。これ以外の構成および動作については、実施の形態1で説明したデータ処理装置1と同様であるので、同一の構成については同一の符号を付し、重複した説明は省略する。
図15を参照して、アクセス回数蓄積部143は、係数アドレス情報保存部131Aに格納される複数の係数アドレスの各々について、各係数アドレスが参照される回数をカウントする回路である。より具体的には、アクセス回数蓄積部143は、入力データ判定部140により各係数アドレスを取得すると判定された回数を、1つの出力データを計算する処理の間カウントする。換言すると、アクセス回数蓄積部143は、複数の係数アドレスの各々について、参照される回数をカウントする回路である。
(動作)
図16は、実施の形態3に係るデータ処理装置1Bにおいて、1つの出力データを得る場合のアクセス回数蓄積部143の動作の一例を示す図である。図16を参照して、バイナリ化された4個の入力データに対して、4×4個の係数アドレスを成分とする係数アドレス行列により重みパラメータが表現されている。
図16において、1番目のバイナリ化された入力データは、(1 0 1 1)の左端で示される1である。そのため、入力データ判定部140は、制御部142Bにより係数アドレス情報保存部131Aから係数アドレスを取得すると判定する。制御部142Bは、入力データ判定部140による判定結果に基づいて、係数アドレス情報保存部131Aから4×4の係数アドレス行列の第1列に含まれる係数アドレスA0、A3、A0、及びA1を順次取得する。制御部142Bは、取得した係数アドレスA0、A3、A0、及びA1を順次、アクセス回数蓄積部143に送信する。アクセス回数蓄積部143は、係数アドレスA0の参照回数として2回、係数アドレスA1の参照回数として1回、及び係数アドレスA3の参照回数として1回との情報をカウントし、記憶する。
続いて、2番目のバイナリ化された入力データは、(1 0 1 1)の左から2番目の0である。したがって、制御部142Bは、入力データ判定部140による判定結果に基づいて、係数アドレス情報保存部131Aにアクセスしないとの制御を行う。したがって、アクセス回数蓄積部143が記憶するカウント値は更新されない。
次に、3番目のバイナリ化された入力データは、(1 0 1 1)の左から3番目の1である。そのため、入力データ判定部140は、制御部142Bにより係数アドレス情報保存部131Aから係数アドレスを取得すると判定する。制御部142Bは、入力データ判定部140による判定結果に基づいて、係数アドレス情報保存部131Aから係数アドレスA2、A0、A2、及びA6を順次取得する。制御部142Bは、取得した係数アドレスA2、A0、A2、及びA6を順次、アクセス回数蓄積部143に送信する。アクセス回数蓄積部143は、係数アドレスA0の参照回数として3回、係数アドレスA1の参照回数として1回、係数アドレスA2の参照回数として2回、及び係数アドレスA3の参照回数として1回、及び係数アドレスA6の参照回数として1回との情報をカウントし、記憶する。
最後に、4番目のバイナリ化された入力データは、(1 0 1 1)の左から4番目の1である。そのため、入力データ判定部140は、制御部142Bにより係数アドレス情報保存部131Aから係数アドレスを取得すると判定する。
図16に示されるように、最終的に、アクセス回数蓄積部143は、係数アドレスA0の参照回数として3回、係数アドレスA1の参照回数として3回、係数アドレスA2の参照回数として2回、係数アドレスA3の参照回数として2回、係数アドレスA4の参照回数として0回、係数アドレスA5の参照回数として0回、係数アドレスA6の参照回数として1回、及び、係数アドレスA7の参照回数として1回、との情報をカウント結果として記憶する。
実施の形態3に係るFPU141Bは、アクセス回数蓄積部143の蓄積結果と、係数保存部132に保存された係数に基づいて、入力データ(1 0 1 1)に対する出力データを算出するための積和演算を行う。具体的には、出力データは、(係数アドレスA0の参照回数)×(係数アドレスA0に格納される係数)+(係数アドレスA1の参照回数)×(係数アドレスA1に格納される係数)+(係数アドレスA2の参照回数)×(係数アドレスA2に格納される係数)+(係数アドレスA3の参照回数)×(係数アドレスA3に格納される係数)+(係数アドレスA4の参照回数)×(係数アドレスA4に格納される係数)+(係数アドレスA5の参照回数)×(係数アドレスA5に格納される係数)+(係数アドレスA6の参照回数)×(係数アドレスA6に格納される係数)+(係数アドレスA7の参照回数)×(係数アドレスA7に格納される係数)を計算することにより算出される。図15の例では、出力データは、FPU141Bにより、3×0.283+3×(−0.332)+2×1.232+2×0.432+0×(−0.543)+0×0.123+1×(−1.121)+1×0.635を演算することにより算出される。
図17は、実施の形態3に係るデータ処理装置1Bによる積和演算処理の一例を示すフローチャートである。積和演算が開始されると、制御部142Bは、入力データ保存部130から、バイナリ化された入力データを読み出す。制御部142Bは、取得したバイナリ化された入力データを、入力データ判定部140に送信する(ステップS101)。
入力データ判定部140がバイナリ化された入力データを受信すると、入力データ判定部140は、バイナリ化された入力データが予め決められた値である1であるか否かを判定する(ステップS102)。入力データ判定部140が、バイナリ化された入力データが0であると判定した場合(ステップS102:NO)、制御部142Bは、係数アドレス情報保存部131Aから係数アドレスを読み出さない。そして、制御部142Bは、次のバイナリ化された入力データを入力データ保存部130から読み出す(ステップS101)。一方、入力データ判定部140が、バイナリ化された入力データが1であると判定した場合(ステップS102:YES)、制御部142Bは、係数アドレス情報保存部131Aから係数アドレスを取得する(ステップS103)。ここで、係数アドレスは、係数が格納されているアドレス値であり、整数のデータである。
制御部142Bは、係数アドレス情報保存部131Aから取得された係数アドレスをアクセス回数蓄積部143に送信する。アクセス回数蓄積部143は、受信した係数アドレスに基づいて、係数アドレスに係るカウント値を1だけカウントアップする(ステップS304)。アクセス回数蓄積部143でのカウント動作は整数の演算処理である。
ステップS304に続いて、制御部142は、バイナリ化された入力データが最終の入力データであるか否かを判定する(ステップS305)。入力データが最終入力データである場合(ステップS305:YES)、制御部142Bは、アクセス回数蓄積部143においてカウント値が1以上である係数を係数保存部132から取得する(ステップS306)。一方、バイナリ化された入力データが最終入力データでない場合(ステップS305:NO)、制御部142Bは、入力データ保存部130から、次のバイナリ化された入力データを読み出す(ステップS101)。
ステップS306で係数保存部132から取得された係数は、FPU141Bに送信される。ステップS306に続いて、FPU141Bは、アクセス回数蓄積部143がカウントした各係数の参照回数と、各係数との積を算出する(ステップS307)。更に、FPU141Bは、ステップS307で算出された積の総和計算を行う(ステップS308)。FPU141BによるステップS308の総和計算の完了により、積和演算が終了する。
(効果)
実施の形態3に係るデータ処理装置1Bは、実施の形態2に係るデータ処理装置1Aと比較して、アクセス回数蓄積部143を更に具備する。アクセス回数蓄積部143は、係数アドレス情報保存部131Aから読み出される係数アドレスについて、読み出しアクセスのあった回数をカウントする。換言すると、アクセス回数蓄積部143は、係数保存部132に格納される各係数を積和演算に使用する回数をカウントするため、FPU141Bで各係数を累積加算する回数を知ることができる。そのため、データ処理装置1Bは、係数アドレス情報保存部131Aから係数アドレスを取得する度に、係数アドレスに対応する係数を読み出すために係数保存部132にアクセスする必要がなくなる。即ち、データ処理装置1Bは、FPU141Bでの積和演算のために、各係数について1度だけ係数保存部132をアクセスすれば良い。通常、参照回数のカウントに要する電力よりメモリアクセスに要する電力の方が大きいため、実施の形態3に係るデータ処理装置1Bは、ニューラルネットワークによる推論処理に要する電力を抑制できる。ニューラルネットワークでは積和演算処理に用いられる重みパラメータの数が大規模となるため、実施の形態3に係るデータ処理装置1Bによる電力抑制効果は大きい。
(変形例)
実施の形態3では、実施の形態2に対して、アクセス回数蓄積部143を更に具備する実施例について説明したが、アクセス回数蓄積部143の適用は実施の形態2に限られない。即ち、実施の形態1の推論部14に、アクセス回数蓄積部143を更に具備することで、1×Nの係数アドレス行列を用いる場合についても、実施の形態3と同様の効果を得ることができる。
[実施の形態4]
実施の形態1ないし実施の形態3においては、バイナリ化された入力データが0または1であることを仮定していた。この仮定に基づいて、データ処理装置1及びデータ処理装置1Aは、係数アドレス情報保存部131から係数アドレスを取得するか否かを入力データ判定部140により判定していた。ニューラルネットワークでは、各出力データに対して、活性化関数(Activation Function)として主にReLU(Rectified Linear Unit)というランプ関数を積算し、その結果を次段の入力に用いることが多い。ここで、ReLUは、入力値が0以上であればその値を出力し、入力値が0未満であれば0を出力する関数である。そのため、入力データは0か正の値になるので、実施の形態1ないし実施の形態3において、バイナリ化された入力データは0か1であると仮定していた。
ところで、活性化関数としてReLU以外の関数を用いる場合もあり、その際には入力データが負の値になる場合もある。実施の形態4に係るデータ処理装置1は、このように入力データが正負の2つの値をとるものとしてバイナリ化されたデータである場合に好適な実施の形態である。
(構成)
図18は、実施の形態4に係る推論部14C及びRAM13Cの構成例を示す図である。実施の形態4に係る推論部14Cは、実施の形態1の制御部142に代えて、制御部142Cを具備する。また、実施の形態4に係るRAM13Cは、係数アドレス情報保存部131に代えて、係数アドレス情報保存部131Cを具備する。実施の形態4に係るRAM13Cは、更に、係数保存部132に代えて、係数保存部132Cを具備する。
図19は実施の形態4に係る係数アドレス情報保存部131C、及び、係数保存部132Cの構成例を示す図である。実施の形態4に係るデータ処理装置1は、バイナリ化された入力データが正の場合と負の場合に対応するため、それぞれに対して係数を係数保存部132Cに格納しておく点で実施の形態1及び実施の形態2と異なる。バイナリ化された入力データが正の場合と負の場合に応じて制御部142Cが取得する係数が異なるため、係数アドレス情報保存部131Cも、入力データが正の場合と負の場合に応じて異なる係数アドレスを格納する。これ以外の構成および動作については、実施の形態1及び実施の形態2で説明したデータ処理装置1と同様であるので、同一の構成については同一の符号を付し、重複した説明は省略する。
図19に示されるように、バイナリ化された入力データは、1及び−1という正負の2つの値をとり得る。入力データが1である場合、制御部142Cは、係数アドレスAn(nは0以上7以下の整数)に代えて、係数アドレスAn_1を取得する。一方、入力データが−1である場合、制御部142Cは、係数アドレスAn(nは0以上7以下の整数)に代えて、係数アドレスAn_−1を取得する。
(動作)
図19の例では、バイナリ化された入力データとして(1 −1 1 1)が、入力データ保存部130から順次、読み出される。1番目のバイナリ化された入力データは、(1 −1 1 1)の左端の1である。1番目のバイナリ化された入力データは正の値なので、制御部142Cは、4×4の係数アドレス行列の第1列に対応して、A0_1、A3_1、A0_1、及びA1_1の4つの係数アドレスを取得する。例えば、制御部142Cは、取得された係数アドレスA0_1に基づいて、係数0.283を取得する。
一方、2番目のバイナリ化された入力データは、(1 −1 1 1)の左から2番目の−1である。2番目のバイナリ化された入力データは負の値なので、制御部142Cは、4×4の係数アドレス行列の第2列に対応して、A0_−1、A1_−1、A0_−1、及びA2_−1の4つの係数アドレスを取得する。例えば、制御部142Cは、取得された係数アドレスA0_−1に基づいて、係数−0.332を取得する。
(効果)
図20には歪んだ分布の入力値がニューラルネットワークに入力された場合の出力値の分布の様子が例示されている。上述した通り、活性化関数としてReLU以外の関数を用いる場合があり、その際には入力データが負の値になる場合もある。このような場合、入力データと出力データが比例関係で良いのであれば、入力データの符号に応じて、参照された係数の正負の符号のみを変えるという方法でも対応可能である。しかし、図20の上図に示されるように、入力値の分布が歪んでおり、かつ、重みパラメータが入力値と比例関係にある場合、出力値の分布の発散が大きくなり、ニューラルネットワークによる推論精度が劣化する。
一方、図20の下図に示されるように、平均=1及び分散=1となるように重みパラメータやバイアス値を調整する処理(Batch Normalization)を行うことにより、入力値の分布の歪みを、出力値の分布では抑制できる。
実施の形態4に係る係数アドレス情報保存部131C及び係数保存部132Cは、バイナリ化された入力データの正負の符号に応じて、それぞれ係数アドレス情報及び係数を格納している。したがって、実施の形態4に係るデータ処理装置1Cでは、バイナリ化された入力データの正負に応じて異なる係数を累積加算できる。即ち、データ処理装置1Cは、累積加算と同時にBatch Normalizationを行うことができる。その結果、データ処理装置1Cは、ニューラルネットワークによる推論精度の劣化を抑制できる。
[実施の形態5]
(構成)
図21は、実施の形態5に係るデータ処理装置1Dの構成例を示すブロック図である。実施の形態5に係るデータ処理装置1Dは、実施の形態1に係るデータ処理装置1と比較して、最頻値インデックス判定部144を更に具備する点、制御部142Dが調整した係数をFPU141Dに出力する点、及び、制御部142DがFPU141Dに対してオフセット加算を行うよう制御する点、で異なる。これ以外の構成および動作については、実施の形態1で説明したデータ処理装置1と同様であるので、同一の構成については同一の符号を付し、重複した説明は省略する。
図21に示されるように、実施の形態5に係る推論部14Dは、入力データ判定部140と、最頻値インデックス判定部144と、FPU141Dと、制御部142Dとを備える。
実施の形態5において、係数アドレス情報に含まれる係数アドレスのうち、最も出現頻度の高い係数アドレスを「最頻値係数アドレス」と呼ぶ。最頻値インデックス判定部144は、制御部142Dにより読み出された係数アドレスが最頻値係数アドレスであるか否かを判定するため、最頻値係数アドレスを記憶する。最頻値係数アドレスの決定方法は、後述する。最頻値インデックス判定部144は、制御部142Dが入力データ判定部140の判定結果に基づいて係数アドレス情報保存部131から係数アドレスを読み出した際、読み出された係数アドレスが最頻値係数アドレスであるか否かを判定する。また、最頻値インデックス判定部144は、最も出現頻度の高い係数アドレスが読み出された回数を、カウンタ(図示しない)でカウントする。
制御部142Dは、FPU141Dに対して、最も出現頻度の高い係数アドレスに関するオフセット加算を行うよう制御する機能を更に有する点で、実施の形態1に係る制御部142と異なる。オフセット加算については図22及び図23を用いて後述する。
FPU141Dは、推論処理に先立ち予め調整された係数に基づいて累積加算を行う点、及び、上述したオフセット加算を行う点で、実施の形態1に係るFPU141と異なる。
(動作)
図22は、実施の形態5における係数の調整方法を説明する図である。図22に示される係数の調整は、推論処理に先立ち予め行われる。換言すると、図22に示される係数の調整は、積和演算に先立ち予め行われる。
係数を調整するため、まず、最頻値係数アドレスが決定される。制御部142Dは、積和演算に先立って、係数アドレス情報保存部131から係数アドレス情報を読み出し、最頻値インデックス判定部144に係数アドレス情報を送信する。最頻値インデックス判定部144は、係数アドレス情報保存部131から読み出された係数アドレス情報について、係数アドレスA0ないしA7が出現する頻度を、それぞれ、カウンタ(図示しない)によりカウントする。図22の例では、係数アドレスA3が162回取得されており、係数アドレスA3に格納された係数が最も多く積和演算で使用されることが分かる。したがって、最頻値インデックス判定部144は、最頻値係数アドレスは係数アドレスA3であると決定する。なお、ここでは最頻値インデックス判定部144が最頻値係数アドレスを決定する例を説明したが、最頻値係数アドレスを決定する方法は、これに限られない。例えば、データ処理装置1Dの外部にあるパーソナルコンピュータ(Personal Computer)及びプログラムを用いて最頻値係数アドレスを決定しても良い。この場合、例えば、プロセッサ10がプログラムを実行して、最頻値インデックス判定部144が有する最頻値係数アドレスを保持するレジスタ(図示しない)に、最頻値係数アドレスを書き込む。
最頻値係数アドレスが決定された後、係数を調整するため、制御部142Dは、係数アドレスA0ないしA7に基づいて、それぞれに格納されている係数を取得する。そして、最頻値インデックス判定部144から受信した係数アドレスA3が最頻値係数アドレスであるとの情報に基づいて、取得された係数の調整を行う。より具体的には、最も多く使用される係数の値を0となるように調整を行う。図22の例では、制御部142Dは、係数アドレスA3に格納されている係数−0.13を0.00に調整する。この調整に合わせて、制御部142Dは、係数アドレスA0に格納される係数−0.79を、−0.79+0.13=−0.66に調整する。同様に、係数アドレスA1に格納されている係数−0.46を、−0.46+0.13=−0.33に調整する。同様にして、制御部142Dは、係数アドレスA2、及び、A4ないしA7に格納される係数のそれぞれに対して、+0.13をして調整を行う。
次に、実施の形態5に係るデータ処理装置1Dが推論処理を行うに先立って決定されるオフセット値について説明する。上述したように、最頻値インデックス判定部144は、最頻値係数アドレスを決定するとともに、係数アドレス情報に含まれる最頻値係数アドレスの出現回数をカウンタ(図示しない)でカウントする。オフセット値は、(オフセット値)=(最頻値係数アドレスが読み出された回数)×(最も使用回数の多い係数)として算出され、係数保存部132に格納される。
推論処理が開始された後、実施の形態5に係るFPU141Dは、推論処理に先立ち予め調整されて係数保存部132に格納された調整後の係数に基づいて、積和演算のための累積加算を行う。FPU141Dは、調整後の係数に基づく累積加算に続いて、係数保存部132から読み出されたオフセット値を、上記の累積加算結果に加算する。
図23は、実施の形態5に係るデータ処理装置1Dによる積和演算処理の一例を示すフローチャートである。積和演算が開始されると、制御部142Dは、入力データ保存部130から、バイナリ化された入力データを読み出す。制御部142Dは、取得したバイナリ化された入力データを、入力データ判定部140に送信する(ステップS101)。
入力データ判定部140がバイナリ化された入力データを受信すると、入力データ判定部140は、バイナリ化された入力データが予め決められた値(例えば、1)であるか否かを判定する(ステップS102)。入力データ判定部140が、バイナリ化された入力データが0であると判定した場合(ステップS102:NO)、制御部142Dは、係数アドレス情報保存部131から係数アドレスを読み出さない。そして、制御部142Dは、次のバイナリ化された入力データを入力データ保存部130から読み出す(ステップS101)。一方、入力データ判定部140が、バイナリ化された入力データが1であると判定した場合(ステップS102:YES)、制御部142Dは、係数アドレス情報保存部131から係数アドレスを取得する(ステップS103)。
制御部142Dは、係数アドレス情報保存部131から取得された係数アドレスを最頻値インデックス判定部144に送信する。最頻値インデックス判定部144は、受信した係数アドレスが最頻値係数アドレスであるか否かを判定する(ステップS501)。受信した係数アドレスが最頻値係数アドレスでない場合(ステップS501:NO)、制御部142Dは、最頻値インデックス判定部144による判定結果に基づいて、係数保存部132から係数を読み出す(ステップS104)。一方、受信した係数アドレスが最頻値係数アドレスである場合(ステップS501:YES)、制御部142Dは、最頻値インデックス判定部144による判定結果に基づいて、係数保存部132から係数を読み出さず、次の入力データを読み込む(ステップS101)との制御を行う。
ステップS104で取得された係数は、制御部142Dによって、FPU141Dに送信される。FPU141Dは係数が入力されると、浮動小数点データの累積加算を行う(ステップS105)。FPU141Dによる係数の累積加算により、浮動小数点形式の入力データと浮動小数点形式の係数についての乗算処理および加算処理が代替される。
FPU141Dによる係数の累積加算を行った後、制御部142Dは、入力データが最終の入力データであるか否かを判定する(ステップS106)。入力データが最終入力データでない場合(ステップS106:NO)、制御部142Dは、入力データ保存部130から、次のバイナリ化された入力データをリードして、入力データ判定部140に、次のバイナリ化された入力データを送信する(ステップS101)。一方、入力データが最終入力データである場合(ステップS106:YES)、制御部142Dは、FPU141Dに対して、ステップS105で算出した累積加算結果にオフセット値を加算するよう制御を行う(ステップS502)。FPU141Dによりオフセット加算が行われると、1つの積和演算は終了する。
(効果)
実施の形態5に係るデータ処理装置1Dは、実施の形態1に係るデータ処理装置1と比較して、最頻値インデックス判定部144を更に具備する。最頻値インデックス判定部144は、積和演算時、係数アドレス情報保存部131から読み出された係数アドレスが最頻値係数アドレスか否かを判定する。FPU141Dは0に調整された係数について累積加算を省略できるので、累積加算に要する消費電力及び実行時間を削減できる。
[実施の形態6]
実施の形態1ないし実施の形態5では、入力データは0と1、または、1と−1のように、2値であった。実施の形態6は、入力データが複数ビットからなる場合の積和演算処理に関する。
図24は、入力データを複数ビットに量子化する方法の一例を示す図である。図24において、入力値は、(入力値の最大値(max)−0)を8等分した区間のいずれに属するかにより、000、001、010、011、100、101、110、または111に量子化される。
(構成)
図25は、実施の形態6に係るデータ処理装置1Eの推論部14EとRAM13の構成例を示す図である。実施の形態6に係るデータ処理装置1Eは、実施の形態1に係るデータ処理装置1と比較して、整数変換部145と、ビット抽出部146と、カウンタ147と、を更に具備する点で異なる。更に、実施の形態6に係るデータ処理装置1Eは、制御部142及びFPU141に代えて、それぞれ、制御部142E及びFPU141Eを具備する点で実施の形態1と異なる。これ以外の構成および動作については、実施の形態1で説明したデータ処理装置1と同様であるので、同一の構成については同一の符号を付し、重複した説明は省略する。
図24を参照して、整数変換部145は、浮動小数点データである入力データを予め決められたLビット(Lは自然数)の整数に変換する。
ビット抽出部146は、整数変換部145により量子化して得られた整数データから、カウンタ147で示されるビットを抜き出す。
カウンタ147は、整数データの何ビット目を処理するかを決めるための回路である。積和演算開始時はカウンタ147の値は0であり、予め決められたビット数に至るまで、順次、1ずつカウントアップする。図25において、カウンタ147は、J(0以上の整数)の値を1ずつカウントアップする。カウンタ147の示す値は、入力データ判定部140とビット抽出部146とに送信される。
(動作)
図26は、実施の形態6に係るデータ処理装置1Eによる積和演算の演算方法を概念的に示す図である。図26に示される積和演算の例では、3つの入力データ1.3、0.2、及び3.1が入力データ保存部130に格納されている。制御部142Eにより入力データ保存部130から読み出された浮動小数点のデータ1.3、0.2、及び3.1は、整数変換部145に送信される。整数変換部145は、入力データ1.3、0.2、及び3.1を、それぞれ100、001、及び110に量子化する。量子化された整数データ100、001、及び110から、それぞれのLSBである0ビット目に当たる0、1、及び0が、ビット抽出部146により抽出される。抽出された0、1、及び0は制御部142Eを介して、入力データ判定部140に順次送信される。
入力データ判定部140は、入力された0、1、及び0に基づいて、係数アドレス情報保存部131から係数アドレスを取得する。最初に、入力データ判定部140は、1.3を量子化して得た整数100の0ビット目が0であると判定する。制御部142Eは、入力データ判定部140の判定結果に応じて、係数アドレス情報保存部131からの係数アドレスの取得を省略する制御を行う。続いて、入力データ判定部140は、0.2を量子化して得た整数001の0ビット目が1であると判定する。制御部142Eは、入力データ判定部140の判定結果に応じて、係数アドレス情報保存部131から係数アドレスA0を取得する。制御部142Eは、取得された係数アドレスA0に基づいて係数0.283を係数保存部132から取得する。FPU141Eは、係数0.283を累積加算する。最後に、入力データ判定部140は、3.1を量子化して得た整数110の0ビット目が0であると判定する。制御部142Eは、入力データ判定部140の判定結果に応じて、係数アドレス情報保存部131からの係数アドレスの取得を省略する制御を行う。
0ビット目の処理が完了したとの制御部142Eからの情報に基づいて、カウンタ147は、Jの値を1だけカウントアップする。推論部14Eは、量子化された整数100、001、及び110の1ビット目である0、0、及び1について、処理を行う。この際、入力データの1ビット目の値は、0ビット目のデータの2倍の値であることに着目して、FPU141Eによる総和計算が行われる。より具体的には、制御部142Eは、カウンタ147の値に基づいて、Jビット目の累積加算の結果を、Jビット左シフト(2倍することと等価)した上で、FPU141Eに総和計算させるよう制御を行う。
推論部14Eは、(L−1)ビット目まで同様の処理を繰り返し行う。図26の例では、L=3であり、推論部14Eは、2ビット目まで同様の処理を繰り返し行う。これにより、推論部14Eは、複数ビットに量子化された入力データに対して積和演算を実行できる。
図27は、実施の形態6に係るデータ処理装置1Eによる積和演算処理の一例を示すフローチャートである。積和演算開始時、カウンタ147のカウント値Jは、例えば0に初期化される(ステップS600)。続いて、制御部142Eは、入力データ保存部130から、複数ビットに量子化された入力データのJビット目の値を、バイナリ化された入力データとして読み出す(ステップS601)。制御部142Eは、入力データ判定部140に、取得したJビット目の値を順次、バイナリ化された入力データとして送信する(ステップS602)。
入力データ判定部140は、バイナリ化された入力データを受信すると、バイナリ化された入力データが予め決められた値(例えば1)であるか否かを判定する(ステップS102)。入力データ判定部140が、バイナリ化された入力データが0であると判定した場合(ステップS102:NO)、制御部142Eは、係数アドレス情報保存部131から係数アドレスを読み出さない。そして、制御部142Eは、次のバイナリ化された入力データを、入力データ保存部130から読み出す(ステップS602)。一方、入力データ判定部140が、バイナリ化された入力データが1であると判定した場合(ステップS102:YES)、制御部142Eは、係数アドレス情報保存部131から係数アドレスを取得する(ステップS103)。
続いて、制御部142Eは、係数アドレス情報保存部131から取得された係数アドレスに基づいて、係数保存部132にリードアクセスし、係数を取得する(ステップS104)。
ステップS104で取得された係数は、制御部142Eによって、FPU141Eに送信される。FPU141Eは係数が入力されると、浮動小数点データの累積加算を行う(ステップS105)。FPU141による係数の累積加算により、浮動小数点形式の入力データと浮動小数点形式の係数についての乗算処理および加算処理が代替される。
FPU141Eによる係数の累積加算を行った後、制御部142Eは、入力データが最終の入力データであるか否かを判定する(ステップS106)。入力データが最終入力データでない場合(ステップS106:NO)、制御部142Eは、入力データ保存部130から、次のバイナリ化された入力データをリードして、入力データ判定部140に、次のバイナリ化された入力データを送信する(ステップS602)。一方、入力データが最終入力データである場合(ステップS106:YES)、Jビット目の積和演算処理は終了する。制御部142Eは、Jビット目の累積加算が終了する(ステップS106:YES)と、FPU141Eに対し、累積加算の結果をJビット左シフトする(2倍することと等価)よう指示する(ステップS607)。続いて、FPU141Eは、(J−1)ビット目までの総和計算結果に、Jビット目の累積加算結果を加算して、Jビット目までの総和計算結果を算出する(ステップS608)。Jビット目までの総和計算結果を算出する(ステップS608)と、カウンタ147は、Jの値を1だけインクリメントする(ステップS609)。インクリメント後のJの値がLより小さい場合(ステップS610:YES)、制御部142Eは、インクリメント後のJの値に基づいて、Jビット目の入力データを取り込む(ステップS601)。一方、インクリメント後のJの値がL以上の場合(ステップS610:NO)、制御部142Eは、複数ビットに量子化された入力データに対する積和演算を終了する。
上記の説明では、浮動小数点の入力データを整数に変換した上で積和演算を行う手法を、実施の形態1に対して適用する場合について説明したが、適用できる実施の形態は実施の形態1に限られない。即ち、浮動小数点の入力データを整数に変換した上で積和演算を行う手法は、実施の形態2ないし5のいずれに対しても適用できる。
以上、本発明によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更され得る。例えば、実施の形態4は、実施の形態3と組み合わせることが可能である。
1、1A、1B、1C、1D、1E データ処理装置
10 プロセッサ
11 ROM
12 バス
13、13A、13C RAM
14、14B、14C、14D、14E 推論部
130 入力データ保存部
131 係数アドレス情報保存部
132 係数保存部
140 入力データ判定部
141、141B、141D、141E FPU
142、142B、142C、142D、142E 制御部
143 アクセス回数蓄積部
144 最頻値インデックス判定部
145 整数変換部
146 ビット抽出部
147 カウンタ

Claims (20)

  1. バイナリ化された入力データの各々について、予め決められた値であるか否かを判定する入力データ判定部と、
    複数の係数と、前記複数の係数が格納される係数アドレスに関する情報を含む係数アドレス情報と、を格納する記憶部と、
    前記入力データ判定部の判定結果に基づいて、前記記憶部から前記係数アドレスを読み出し、前記係数アドレスに基づいて前記記憶部から前記係数を読み出す制御部と、
    前記制御部が取得した前記係数に関して演算を行う演算部と、
    を具備するデータ処理装置。
  2. 前記演算部は、前記制御部が取得した前記係数を累積加算する、
    請求項1に記載のデータ処理装置。
  3. 前記制御部は、前記入力データが前記予め決められた値であるとの前記入力データ判定部の判定結果に基づいて、前記係数アドレスを読み出す、
    請求項1に記載のデータ処理装置。
  4. 前記係数アドレス情報は、1×N(Nは、1より大きい自然数)個の前記係数アドレスを含む、
    請求項1に記載のデータ処理装置。
  5. 前記係数アドレス情報は、M×N個(M及びNは、1より大きい自然数)の前記係数アドレスを含む、
    請求項1に記載のデータ処理装置。
  6. 前記係数アドレスの各々が取得された回数をカウントするアクセス回数蓄積部を更に具備し、
    前記演算部は、前記アクセス回数蓄積部のカウント値と前記係数に基づいて積和演算を行う、
    請求項1に記載のデータ処理装置。
  7. 前記バイナリ化された入力データは、正の値と負の値の2値を含み、
    前記係数アドレス情報は、前記正の値に対応する第1の係数アドレスと、前記負の値に対応する第2の係数アドレスと、を含む、
    請求項1に記載のデータ処理装置。
  8. 前記バイナリ化された入力データが前記正の値である場合、前記制御部は、前記第1の係数アドレスを読み出し、
    前記バイナリ化された入力データが前記負の値である場合、前記制御部は、前記第2の係数アドレスを読み出す、
    請求項7に記載のデータ処理装置。
  9. 前記制御部は、前記係数アドレス情報に最も多く含まれる前記係数アドレスに基づいて、前記複数の係数の値を調整し、
    前記演算部は、前記調整された複数の係数に関して累積加算を行う、
    請求項1に記載のデータ処理装置。
  10. 演算部とメモリを具備するデータ処理装置の動作方法であって、
    バイナリ化された入力データが予め決められた値であるか否かを判定するステップと、
    複数の係数と、前記複数の係数が格納される係数アドレスに関する情報を含む係数アドレス情報と、を前記メモリに格納するステップと、
    前記判定するステップの判定結果に基づいて、前記メモリから前記係数アドレスを読み出すステップと、
    前記係数アドレスに基づいて前記メモリから前記係数を読み出すステップと、
    前記読み出された係数に基づいて前記演算部により演算するステップと、
    を含む、データ処理装置の動作方法。
  11. 前記係数アドレスを読み出すステップは、前記入力データが前記予め決められた値であるとの判定結果に基づいて、前記係数アドレスを読み出すステップを含み、
    前記演算するステップは、前記係数を読み出すステップにより取得される係数を累積加算するステップを更に含む、
    請求項10に記載のデータ処理装置の動作方法。
  12. 前記判定するステップは、N(Nは、1より大きい自然数)個のバイナリ化された入力データの各々について、前記予め決められた値であるか否かを判定するステップを更に含み、
    前記係数アドレスを読み出すステップは、1×N個の前記係数アドレスを読み出すステップを更に含む、
    請求項10に記載のデータ処理装置の動作方法。
  13. 前記係数アドレスを読み出すステップは、M×N個(Mは、1より大きい自然数)の前記係数アドレスを読み出すステップを更に含む、
    請求項10に記載のデータ処理装置の動作方法。
  14. 前記係数アドレスの各々が取得された回数をカウントするステップを更に具備し、
    前記演算するステップは、前記カウントするステップのカウント結果と前記複数の係数に基づいて積和演算を行うステップを更に含む、
    請求項10に記載のデータ処理装置の動作方法。
  15. 前記判定するステップは、正の値または負の値を有する前記バイナリ化された入力データについて、前記予め決められた値であるか否かを判定するステップを更に含み、
    前記係数アドレスを読み出すステップは、前記バイナリ化された入力データが前記正の値である場合に第1の係数アドレスを読み出すステップと、前記バイナリ化された入力データが前記負の値である場合に第2の係数アドレスを読み出すステップと、を更に含む、
    請求項10に記載のデータ処理装置の動作方法。
  16. 前記係数アドレス情報において最も多く含まれる係数アドレスに基づいて、前記複数の係数の値を調整するステップを更に含み、
    前記演算するステップは、前記調整された複数の係数に関して累積加算するステップを更に含む、
    請求項10に記載のデータ処理装置の動作方法。
  17. 前記演算するステップは、ニューラルネットワークの推論処理に要する積和演算を行うステップを更に含む、
    請求項10に記載のデータ処理装置の動作方法。
  18. 前記判定するステップは、複数ビットのデータを構成する複数の前記バイナリ化された入力データについて、各々の前記バイナリ化された入力データが予め決められた値であるか否かを判定するステップを更に含み、
    前記演算するステップは、前記複数ビットのデータ内での前記バイナリ化された入力データのビット位置に基づいて、前記演算するステップによる演算結果をシフトするステップを更に含む、
    請求項10に記載のデータ処理装置の動作方法。
  19. CPUとメモリとを具備するデータ処理装置で実行されるニューラルネットワークモデルに関するプログラムであって、
    バイナリ化された入力データの各々が予め決められた値であるか否かを判定するステップと、
    複数の係数と、前記複数の係数が格納されるアドレスを含む係数アドレスに関する情報を含む係数アドレス情報と、をメモリに格納するステップと、
    前記メモリから前記係数アドレスを読み出すステップと、
    前記係数アドレスに基づいて前記メモリから前記係数を読み出すステップと、
    前記読み出された係数を累積加算するステップと、
    を実行させる、プログラム。
  20. 前記係数アドレスを読み出すステップは、前記入力データが前記予め決められた値であるとの前記判定するステップの判定結果に基づいて、前記係数アドレスを読み出すステップを更に含む、
    請求項19に記載のプログラム。
JP2019200609A 2019-11-05 2019-11-05 データ処理装置及びその動作方法、プログラム Active JP7299134B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019200609A JP7299134B2 (ja) 2019-11-05 2019-11-05 データ処理装置及びその動作方法、プログラム
CN202011215662.2A CN112784957A (zh) 2019-11-05 2020-11-04 数据处理设备、其操作方法以及程序
US17/090,534 US20210132866A1 (en) 2019-11-05 2020-11-05 Data processing device, method of operating the same, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019200609A JP7299134B2 (ja) 2019-11-05 2019-11-05 データ処理装置及びその動作方法、プログラム

Publications (2)

Publication Number Publication Date
JP2021076900A true JP2021076900A (ja) 2021-05-20
JP7299134B2 JP7299134B2 (ja) 2023-06-27

Family

ID=75688980

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019200609A Active JP7299134B2 (ja) 2019-11-05 2019-11-05 データ処理装置及びその動作方法、プログラム

Country Status (3)

Country Link
US (1) US20210132866A1 (ja)
JP (1) JP7299134B2 (ja)
CN (1) CN112784957A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102023204651A1 (de) 2022-05-18 2023-11-23 Renesas Electronics Corporation Halbleitervorrichtung

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10134032A (ja) * 1996-09-04 1998-05-22 Seiko Epson Corp 情報処理回路、マイクロコンピュータ及び電子機器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6311601B2 (ja) * 2012-06-08 2018-04-18 日本電気株式会社 多段フィルタ処理装置及び方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10134032A (ja) * 1996-09-04 1998-05-22 Seiko Epson Corp 情報処理回路、マイクロコンピュータ及び電子機器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
神谷龍司, 山下隆義, 安倍満, 佐藤育郎, 山内悠嗣, 藤吉弘亘: "Binaraized−DCNNによる識別計算の高速化とモデル圧縮", 電子情報通信学会技術研究報告 パターン認識・メディア理解研究会, vol. vol.116, PRMU-366, JPN6023023242, 8 December 2016 (2016-12-08), JP, pages 47 - 52, ISSN: 0005076204 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102023204651A1 (de) 2022-05-18 2023-11-23 Renesas Electronics Corporation Halbleitervorrichtung

Also Published As

Publication number Publication date
US20210132866A1 (en) 2021-05-06
JP7299134B2 (ja) 2023-06-27
CN112784957A (zh) 2021-05-11

Similar Documents

Publication Publication Date Title
CN110555450B (zh) 人脸识别神经网络调整方法和装置
US11580719B2 (en) Dynamic quantization for deep neural network inference system and method
US20240104378A1 (en) Dynamic quantization of neural networks
CN110555508B (zh) 人工神经网络调整方法和装置
US10491239B1 (en) Large-scale computations using an adaptive numerical format
EP3242254B1 (en) Convolutional neural network hardware configuration
CN109670575B (zh) 用于同时执行激活和卷积运算的方法和装置及其学习方法和学习装置
JP6540841B1 (ja) 演算処理装置、情報処理装置、情報処理方法、およびプログラム
CN109670574B (zh) 用于同时执行激活和卷积运算的方法和装置及其学习方法和学习装置
CN114341892A (zh) 具有用于高效参数更新的降低精度参数分量的机器学习硬件
JP2021131876A (ja) 情報処理装置、情報処理方法およびプログラム
CN110826685A (zh) 神经网络卷积计算的方法和装置
CN111240746B (zh) 一种浮点数据反量化及量化的方法和设备
CN109978144B (zh) 一种模型压缩方法和系统
WO2022168604A1 (ja) ソフトマックス関数の近似計算装置、近似計算方法および近似計算プログラム
JP2021076900A (ja) データ処理装置及びその動作方法、プログラム
US8601039B2 (en) Computation apparatus and method, quantization apparatus and method, and program
CN113283591B (zh) 基于Winograd算法和近似乘法器的高效卷积实现方法及装置
CN112712164B (zh) 一种神经网络的非均匀量化方法
CN113313253A (zh) 神经网络压缩方法、数据处理方法、装置及计算机设备
JP7040771B2 (ja) ニューラルネットワーク処理装置、通信装置、ニューラルネットワーク処理方法、およびプログラム
CN114139678A (zh) 卷积神经网络量化方法、装置、电子设备和存储介质
CN111985604A (zh) 运算处理设备、用于控制运算处理设备的方法和存储介质
CN112308216B (zh) 数据块的处理方法、装置及存储介质
JP7120288B2 (ja) ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220408

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: 20230606

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230615

R150 Certificate of patent or registration of utility model

Ref document number: 7299134

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150