JP6738296B2 - 畳込みニューラルネットワークによる処理方法、畳込みニューラルネットワークの学習方法、および畳込みニューラルネットワークを備える処理装置 - Google Patents

畳込みニューラルネットワークによる処理方法、畳込みニューラルネットワークの学習方法、および畳込みニューラルネットワークを備える処理装置 Download PDF

Info

Publication number
JP6738296B2
JP6738296B2 JP2017056780A JP2017056780A JP6738296B2 JP 6738296 B2 JP6738296 B2 JP 6738296B2 JP 2017056780 A JP2017056780 A JP 2017056780A JP 2017056780 A JP2017056780 A JP 2017056780A JP 6738296 B2 JP6738296 B2 JP 6738296B2
Authority
JP
Japan
Prior art keywords
data
matrix
vector
neural network
convolutional neural
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.)
Expired - Fee Related
Application number
JP2017056780A
Other languages
English (en)
Other versions
JP2018160086A (ja
Inventor
徹 本谷
徹 本谷
豪一 小野
豪一 小野
豊田 英弘
英弘 豊田
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2017056780A priority Critical patent/JP6738296B2/ja
Priority to US15/886,428 priority patent/US20180276527A1/en
Publication of JP2018160086A publication Critical patent/JP2018160086A/ja
Application granted granted Critical
Publication of JP6738296B2 publication Critical patent/JP6738296B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/216Parsing using statistical methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/96Management of image or video recognition tasks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Databases & Information Systems (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Medical Informatics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)

Description

本発明は、情報処理装置、特に畳込みニューラルネットワークに係る技術に関する。
近年,一般画像認識といった難易度の高い機械学習のタスクに,畳込みニューラルネットワークを用いることで,高い認識率を達成可能であることがわかった。一般画像認識とは,例えば,一枚の画像に写った物体の種類を識別するタスクである。畳込みニューラルネットワークとは,パーセプトロンを多層に組合せて特徴量抽出を複数回にわたって実行し,入力の認識を行う技術である。
畳込みニューラルネットワークの技術が発展した背景には,計算機の性能向上が挙げられる。畳込みニューラルネットワークは認識時に多量の行列演算を実行する必要があり,それら行列パラメータの訓練には近年のマルチコア技術やGPGPU(General-purpose computing on graphics processing units)技術が必要不可欠である。したがって畳込みニューラルネットワークを用いて一般画像認識や音声認識などの機械学習のタスクを高速に実行するには,多量の計算資源を必要とする。
このため畳込みニューラルネットワークを組込み機器などで実行するために,畳込みニューラルネットワークの演算時間や消費電力を削減するための技術開発が盛んに行われている。畳込みニューラルネットワークの消費電力を削減するための技術には,たとえば一例を挙げるならば,非特許文献1で開示されている技術がある。非特許文献1で開示されている技術では,畳込みニューラルネットワークの畳込み層における行列ベクトル積を,符号のみの演算に近似することで消費電力を低減する。
しかしながら,非特許文献1の技術では,近似演算の結果を受けて,絞り込んだ領域において通常の畳込み演算をやり直していた。したがって,畳込み演算の近似に用いた演算結果は,再利用されない。
Ujiie, Takayuki, Masayuki Hiromoto, and Takashi Sato. "Approximated Prediction Strategy for Reducing Power Consumption of Convolutional Neural Network Processor." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshops. 2016.
非特許文献1で開示されている技術では,総合的に見れば演算量を低減することができるが,畳込み演算の近似に用いた演算結果を再利用できず,消費電力の低減効果に限界があった。そこで本発明の目的は,畳込み演算の近似に用いた演算データを再利用することで演算量と消費電力を低減することが可能な技術を提供することである。
本発明の一側面は,畳込みニューラルネットワークによる処理方法であって,ニューラルネットワークは,行列ベクトル積による畳込み演算を行う畳込み演算部と,最大値サンプリング演算を行うプーリング演算部を具備する。畳込み演算部で行われる畳込み演算のための行列データはしきい値が設定され,行列データはしきい値を基準に前半部分と後半部分に2分割されており,行列データの前半部分は行列データの主要項を比較的多く含み,また,行列データの後半部分は行列データの主要項を比較的少なく含む。畳込み演算部は,前半部分の行列データによる前半部分の畳込み演算と,後半部分の行列データによる後半部分の畳込み演算とを2分割して実行する。前半部分の畳込み演算は,プーリング演算部の最大値サンプリング演算に用いられる第1の演算データを生成するための演算を実行する。プーリング演算部は,最大値サンプリング演算に伴って,後半部分の畳込み演算で,行列ベクトル積の畳込み演算を適用すべきベクトルデータを選択する。後半部分の畳込み演算は,プーリング演算部で選択されたベクトルデータに対して,畳込み演算を実行して第2の演算データを生成する。プーリング演算部の最大値サンプリング演算の結果と,第2の演算データを,全部または部分的に加算することで,畳込みニューラルネットワークの中間層データを得る。
本発明の他の一側面は、畳込みニューラルネットワークの畳込み演算の行列データの演算パラメータを決定するための,畳込みニューラルネットワーク学習方法である。畳込みニューラルネットワークは,行列ベクトル積による畳込み演算を行う畳込み演算部と,最大値サンプリング演算を行うプーリング演算部を具備するものである。また,畳込み演算に用いる行列データを格納する行列保存領域を具備するものである。行列保存領域に格納される行列データは,しきい値に基づいて前半部分と後半部分に2分割されている。畳込み演算部は前半部分の行列データによる第1の畳込み演算と,後半部分の行列データによる第2の畳込み演算とを個別に実行する。第1の畳込み演算は,プーリング演算部の最大値サンプリング演算に用いられる第1の演算データを生成する。プーリング演算部は,第1の演算データを用いた最大値サンプリング演算に伴って,第2の畳込み演算を行うべきベクトルデータを選択する。第2の畳込み演算は,プーリング演算部で選択されたベクトルデータに対して,後半部分の行列データによる畳込み演算を実行して第2の演算データを得る。プーリング演算部の最大値サンプリングの演算結果と,第2の演算データを,全部または部分的に加算することで,畳込みニューラルネットワークの中間層データを得るものである。このような畳込みニューラルネットワークの学習において,2分割された行列データを準備するために,認識精度の目標値を設定可能とし,しきい値を変更しながら当該しきい値に応じて分割された行列データを用いて畳込みニューラルネットワークを構成し,テストデータを用いて認識精度を取得し,認識精度の目標値を満足する,しきい値を決定する。
本発明の他の一側面は、畳込みニューラルネットワークを備える処理装置である。ニューラルネットワークは,行列ベクトル積による畳込み演算を行う畳込み演算部と,最大値サンプリング演算を行うプーリング演算部を具備し,畳込み演算に用いる行列データを格納する行列保存領域を具備する。行列保存領域に格納される行列データは,前半部分と後半部分に2分割されており,畳込み演算部は前半部分の行列データによる第1の畳込み演算と,後半部分の行列データによる第2の畳込み演算とを個別に実行する。第1の畳込み演算は,プーリング演算部の最大値サンプリング演算に用いられる第1の演算データを生成する。プーリング演算部は,第1の演算データを用いた最大値サンプリング演算に伴って,第2の畳込み演算を行うべきベクトルデータを選択する。第2の畳込み演算は,プーリング演算部で選択されたベクトルデータに対して,後半部分の行列データによる畳込み演算を実行して第2の演算データを得,プーリング演算部の最大値サンプリングの演算結果と,第2の演算データを全部または部分的に加算することで,畳込みニューラルネットワークの中間層データを得る。
本発明によれば,畳込みニューラルネットワークの畳込み演算の演算量と消費電力が,効率的に低減可能となる。前述した以外の課題,構成及び効果は,以下の実施の形態により明らかになる。
実施例における畳込みニューラルネットワークの構成の全体像を示す概念図。 実施例における畳込み演算とプーリング演算の組合せの詳細を説明する概念図。 実施例の畳込み演算の行列ベクトル積で用いられる行列データの概念図。 実施例の畳込み演算とプーリング演算を演算する装置の装置構成を示すブロック図。 実施例の演算ユニット部分の詳細を示したブロック図。 実施例における画像認識の処理フローを示す流れ図。 実施例における畳込み演算とプーリング演算の組合せの処理を示すフロー図。 実施例における畳込み演算とプーリング演算の組合せの下位の処理を示すフロー図。 実施例における各バッファにデータを保存する処理を示すフロー図。 実施例におけるベクトルF をバッファF 164に保存する処理を示すフロー図。 実施例における,畳込み演算とプーリング演算のタイミングを示すチャート図。 他の実施例における畳込みニューラルネットワークの構成の全体像を示す概念図。 実施例の画像認識処理装置を構成するまでの処理を示すフロー図。 図13の処理の一部を詳細に説明する画像認識装置開発の処理を示すフロー図。 畳込みニューラルネットワークのネットワークパラメータを得るための処理を示すフロー図。
以下,実施例を図面に基づいて説明する。なお,実施例を説明する全図において,同一の機能を有する部材には同一の符号を付し,その繰り返しの説明は特に必要な場合を除き省略する。
同一あるいは同様な機能を有する要素が複数ある場合には,同一の符号に異なる添字を付して説明する場合がある。ただし、複数の要素を区別する必要がない場合には,添字を省略して説明する場合がある。
本明細書等における「第1」、「第2」、「第3」などの表記は,構成要素を識別するために付するものであり,必ずしも,数,順序,もしくはその内容を限定するものではない。また,構成要素の識別のための番号は文脈毎に用いられ,一つの文脈で用いた番号が,他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が,他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。
図面等において示す各構成の位置,大きさ,形状,範囲などは,発明の理解を容易にするため,実際の位置,大きさ、形状、範囲などを表していない場合がある。このため,本発明は,必ずしも,図面等に開示された位置,大きさ,形状,範囲などに限定されない。
以下の実施例の概要の一例を挙げるならば,畳込み層のあとにプーリング層を持つ畳込みニューラルネットワークであり,畳込み層の行列を前半部分と後半部分に分割して保持してある。行列の前半部分は行列の主要項を多く含むようにし,行列の後半部分は行列の誤差項を多く含むようにする。このために行列を特異値分解し,しきい値となる特異値より大きい(あるいは以上の)特異値に対応する行列成分を前半部分に割り当て,しきい値より小さい(あるいは以下の)特異値に対応する行列成分を後半部分に割り当てる。この畳込みニューラルネットワークの畳込み演算は,行列前半部分に対応する畳込み演算と行列後半部分に対応する畳込み演算の2つに分割される。行列前半部分の畳込み演算は,プーリング演算でどのデータをサンプリングするかの予測に用いられる。予測されたデータ領域のみに大して後半部分の畳込み演算を実行し,前半部分の畳込み演算結果に加算することで演算精度を確保する。
図1に,本実施例における畳込みニューラルネットワークの構成の全体像を示す。入力データである画像データ(入力層)100に対して第1の畳込み演算conv1 200を適用することで中間層101を得る。中間層101にプーリング演算pool1 201を適用することで中間層102を得る。中間層102に畳込み演算conv2 202を適用することで中間層103を得る。中間層103にプーリング演算pool2 203を適用することで中間層104を得る。
中間層104に全結合演算ip1 204を適用することで中間層105を得る。中間層105に活性化演算relu1 205を適用することで中間層106を得る。中間層106に全結合演算ip2 202を適用することで中間層107を得る。中間層107の出力に基づいて,例えば画像の認識結果Mを得ることができる。
本実施例では,画像データ(入力層)100に畳込み演算conv1 200とプーリング演算pool1 201を適用し中間層102を適用する部分108を,従来と一部変更する。わかりやすさのために,従来の一般的構成及び本実施例の畳込みニューラルネットワークのconv1とpool1の組合せ108を対比して説明する。本実施例で行う演算は,従来の演算の近似演算であるため,従来と同等の演算結果を出力することを目標として構成される。
まずは従来の畳込みニューラルネットワークにおけるconv1とpool1の組合せ108aについて説明する。従来の畳込みニューラルネットワークでは,まず畳込み演算conv1 200aの演算を行い,つぎにプーリング演算pool1 201aを行う。従来の畳込み演算conv1 200aでは,画像データ(入力層)100の一部のベクトルデータ110に行列ベクトル積を適用することで,中間層101aの一部のベクトルデータ111aを生成する。従来のプーリング演算201aでは,中間層101aの一部のベクトルデータ112aからそれぞれ最大値をサンプリングし,次の中間層102のベクトルデータ113とする。
図2は、図1の畳込みニューラルネットワークのうち,畳込み演算conv1とプーリング演算pool1の組合せ108bの詳細を説明する概念図である。図1と図2の双方に本実施例の畳込みニューラルネットワークのconv1とpool1の組合せ108bを示している。
図1と図2を参照して,本実施例の畳込み演算conv1とプーリング演算pool1の組合せ108bについて説明する。本実施例では,畳込み演算conv1は,前半部分200b-1と後半部分200b-2の2つに分割される。まず前半部分の畳込み演算conv1 200b-1を行い,つぎにプーリング演算pool1 201bを行い,最後に後半部分の畳込み演算conv1 200b-2を行う。
本実施例の前半部分の畳込み演算conv1 200b-1では,画像データ100の一部のベクトルデータ110に前半の行列ベクトル積を適用することで,中間層101bの一部のベクトルデータ111bを生成する。前半部分の畳込み演算conv1 200b-1は,いわば行列の主要項のみを演算しており,このあとに続く本実施例のプーリング演算pool1 201bで最大値を正しく検出できる程度の精度を確保できればよい。
図2の符号を参照して説明すると,本実施例のプーリング演算pool1 201bでは,中間層101bの一部のベクトルデータ112bからそれぞれ最大値をサンプリングし,次の中間層102b-1のベクトルデータ113b-1とする。このとき,本実施例のプーリング演算pool1 201bでは,ベクトルデータ112b内部の複数(例えば4つ)のベクトルデータ111bのなかでどのベクトルデータ111bの値が最もサンプリングされたかを集計し,そのサンプリングされた数が最も多いベクトルデータ111bに対応する画像データ(入力層)100のベクトルデータ110を検出する。
本実施例のプーリング演算pool1 201bで検出された入力層100のベクトルデータ110に対して本実施例の後半部分の畳込み演算conv1 200b-2を適用し,演算の結果得られたベクトルデータ113b-2を中間層102b-1のベクトルデータ113b-1に加算する。この後半部分の畳込み演算conv1 200b-1は,前半部分の畳込み演算conv1 200b-1で不足していた演算精度を補うことを目的としている。
図3は,本実施例の画像認識装置の畳込み演算conv1 108bの行列ベクトル積で用いられる行列データを概念的に示す図である。まず,従来の畳込み演算conv1 108aの行列ベクトル積で用いられる行列データA 131を,n行m列の短形行列であるとする。本実施例では畳込み演算conv1 200bを2分割するため,行列データも2分割する。その基準となるのが,行列データA 131の特異値である。
本実施例では,この行列データA 131を特異値分解により数学的に等価な3つの行列の積に分解する。特異値分解自体は,数学的に知られた手法である。3つの行列とはすなわち,n行n列の左直交行列U 132と,n行n列の対角行列S 133と,n行m列の右直交行列VT 134である。対角行列行列S 133の対角成分には,行列A 131の特異値が降順に並ぶ。そこで,特異値の大きさに基準値を設け,基準値を基準に行列を分割する。たとえば,その基準値よりも大きい特異値に対応した行列を前半部分とし,その基準値以下の特異値に対応した行列が後半部分とする。
本実施例では基準値をk番目の特異値skとする。したがって大きい順にk個の特異値を並べた特異値行列をk行k列の前半部分の対角行列Sk 137とし,残りの特異値を並べた特異値行列を(n-k)行(n-k)列の後半部分の対角行列S(n-k)138とする。左直交行列U 132および右直交行列VT 134も,特異値を基準に前後半に分割する。
前半部分の対角行列Sk 137に対応した前半k列のn行k列の部分行列Uk 135を左直交行列U 132の前半部分とし,それ以外の後半(n-k)列のn行(n-k)列の部分行列U(n-k)136を左直交行列U 132の後半部分とする。同様に,前半部分の対角行列Sk 137に対応した前半k行のk行m列の部分行列VkT 139を右直交行列VT 134の前半部分とし,それ以外の後半(n-k)行の(n-k)行m列の部分行列V(n-k)T140を右直交行列VT 134の後半部分とする。左直交行列の前半部分Uk 135と対角行列の前半部分Sk 137と右直交行列の前半部分VkT 139の積である(UkSkVkT) 141を前半部分の畳込み演算conv1 200b-1で用いる行列データとし,左直交行列の後半部分U(n-k) 136と対角行列の後半部分S(n-k) 138と右直交行列の後半部分V(n-k)T 140の積である(U(n-k)S(n-k)V(n-k)T) 142を後半部分の畳込み演算conv1 200b-2で用いる行列データとする。当然ながら,行列の前半部分(UkSkVkT) 141と(U(n-k)S(n-k)V(n-k)T) 142の和は,行列A 131に等しい。
本実施例では,まず前半部分の行列に対して畳込み演算を行い,最大値を求める。次に,後半部分の行列のうち,最大値を出力する限定された領域に対して,畳込み演算を行う。そして,前半部分の演算結果に,後半部分の演算結果を加算する。数理的には,前半部分の大きな特異値に対応する部分が,その行列の主要項であり,後半部分の小さい特異値に対応する部分が,その行列の誤差項となる。このため,最大値の判定には主要項だけを用いて演算結果を用いている。
前半部分と後半部分をどこで切り分けるかは,用途や要求精度によって決めればよいが,基本的には,精度と処理負荷(装置規模、消費電力、計算時間等)のトレードオフになる。すなわち,前半部分の割合を大きくすれば,精度が向上するが,処理負荷も増大する。前半部分の割合を小さくすれば,精度が低下するが,処理負荷も低下する。後の実施例6は,前半部分と後半部分の切断点の決定手法について説明するものである。
図4は,本実施例の畳込み演算conv1とプーリング演算pool1を演算する装置の装置構成を示すブロック図である。このような装置構成は,例えばプロセッサとメモリと入力装置と出力装置を備える,通常のコンピュータ(例えばサーバ)によって実現することができる。サーバで構成する場合には,各演算ユニット155,157,163等はメモリに格納されたソフトウエアをプロセッサが実行することにより構成される。また,データを格納する各バッファ154,156等は、メモリを利用して記憶される。画像データ等の処理対象となるデータは,入力装置から入力され,結果は出力装置により例えば画像出力装置にて表示される。以上の構成は,単体のコンピュータで構成してもよいし,あるいは,入力装置,出力装置,プロセッサ,メモリの任意の部分が,ネットワークで接続された他のコンピュータで構成されてもよい。
また,他の構成例としては,ソフトウエアで構成した機能と同等の機能は、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)などのハードウエアでも実現できる。例えば,図4と等価な構成は,FPGAの論理ブロックをプログラムすることによって実現することができる。このようなFPGAは,畳込みニューラルネットワークの演算を行う専用の1チップのデバイスとして構成することもできる。この場合,FPGAは例えば上位コントローラである汎用のプロセッサに全体を制御され,処理すべきデータは必要に応じて上位コントローラから提供し,結果を上位コントローラに返すように構成することができる。あるいは、自分を制御するための簡単なコントローラを,自デバイス内に備えても良い。
図5は,図4の装置のうち演算ユニット部分の詳細を示したブロック図である。
まず図4について説明する。メモリロードユニット153は,畳込みニューラルネットワークの入力層100のデータを保存しているメモリ(図示せず)から,その一部のベクトルデータ110をロードしバッファA 154に保存するユニットである。
バッファA 154は4本の記憶領域を持ち,4種類のベクトルデータ110を保持する。これは本実施例のプーリング演算pool1 201aが4つのデータから1つの最大値を検出することに対応している。なお,この例では構成を簡単に説明するため,4つのバッファを用いているが、その数は任意であり,特に4個に限定するものではない。
メモリロードユニット153の処理が完了すると,つぎに行列前半部分の行列ベクトル積演算ユニット155が行列ベクトル積の演算を実行する。行列ベクトル積演算ユニット155は,行列保存領域150の中の前半部分の畳込み演算conv1のための行列保存領域151に保存されている前半部分の行列データ(UkSkVkT) 141と,バッファA 154に保存されているうち1本のベクトルデータ110を用いて行列ベクトル積を実行し,バッファB 156に演算結果を保存する。
ここでバッファB 156に保存された演算結果は中間層101bの一部のベクトルデータ111bである。行列ベクトル積演算ユニット155は,4つのベクトルデータ110に対して行列ベクトル積を演算し,4つのベクトルデータ111bを出力する。
プーリング演算実行ユニット157は,プーリング演算の最大値検出を実行するユニットである。詳細は次の図5で説明する。プーリング演算実行ユニット157は,セレクト信号線158を通じてセレクト信号を出力するほか,バッファC 160,バッファD 161と接続し演算結果を出力し保存する。
プーリング演算実行ユニット157の演算が終了すると,行列後半部分の行列ベクトル積演算ユニット159が行列ベクトル積の演算を実行する。後半部分の行列ベクトル積演算ユニット159は,行列保存領域150の中の後半部分の畳込み演算conv1のための行列保存領域152に保存されている後半部分の行列データ(U(n-k)S(n-k)V(n-k)T) 142と,バッファA 154に保存されている4本のベクトルデータ110の中からセレクト信号線158によって選択される1本のベクトルデータ110との行列ベクトル積を実行し,その演算結果をバッファE 162に保存する。
ベクトル和演算ユニット163はベクトルの和を演算するユニットである。詳細は次の図5で説明する。ベクトル和演算ユニット163の演算結果はバッファF 164に保存される。バッファF 164に保存された演算結果は中間層102の一部のベクトルデータ113であり,メモリストアユニット165によって畳込みニューラルネットワークの中間層102のデータを保持するメモリ(図示せず)にストアされる。
図5を用いてプーリング演算実行ユニット157とベクトル和演算ユニット163について説明する。プーリング演算実行ユニット157は最大値検出・最大点検出ユニット170とバッファG 171と最大点計数ユニット172と比較ユニット173によって構成される。
最大値検出・最大点検出ユニット170は,バッファB 156に保存されている4本のベクトルデータ111bの各要素を比較し,最大値からなる最大値ベクトルDをバッファD 161に保存する最大値サンプリングを行う。また最大値検出・最大点検出ユニット170は同時に,最大値となったベクトルデータがバッファB1〜B4のうち,それぞれどの番号のバッファから選択されたかを検出し,最大点ベクトルGとしてバッファG 171に保存する。
最大点計数ユニット172は最大点を最も多く出力したベクトルデータの番号を検出し,セレクト信号としてセレクト信号線158により出力する。セレクト信号線158は,行列ベクトル積演算ユニット(後半部分)159に入力されるベクトルデータを,バッファA1〜A4から選択する。最大点計数ユニット172の演算が終了すると,比較ユニット173が演算を開始する。
比較ユニット173はバッファGに保存されている最大点ベクトルGのデータとセレクト信号線158から出力される最大点データを比較し,一致する要素は「1」とし一致しない要素は「0」として,比較結果ベクトルCを生成しバッファC 160に保存する。この「0」「1」のデータは,バッファDに格納された最大値ベクトルDの各要素が,セレクト信号線158でバッファA1〜A4から選択されるバッファのベクトルデータに基づくものか,そうでないかを識別する。
比較ユニット173がバッファG 171に保存されている最大点ベクトルGのすべての要素に対して比較演算を終了し,比較結果ベクトルCとしてバッファC 160に演算結果を保存すると,プーリング演算実行ユニット157の演算は終了しベクトル和演算ユニット163の演算が開始する。
ベクトル和演算ユニットはバッファC 160,バッファD 161,そしてバッファE 162に保存されているベクトルデータを参照し要素ごとに演算を行い,演算結果をバッファF 164に保存する。もしバッファC 160に保存されたデータが「1」ならばバッファD 161とバッファE 162の和を演算しその結果をバッファF 164に保存する。もしバッファC 160に保存されたデータが「0」ならばバッファD 161のデータをバッファF 164に保存する。
図6は,図1に示した本実施例における画像認識の処理フローを示す図である。処理108bの演算は,図4および図5に示した構成により実行する。他の各演算は,従来と同様の処理で良く,それぞれ専用の演算ユニットで実行することができる。なお、畳込み演算やプール演算は,基本的に同様の行列演算なので,同じ演算ユニットを異なる層の演算で共通に使用することもできる。
ステップ300: 画像認識の処理フローを開始する。
ステップ301: 画像を畳込みニューラルネットワークの入力層100に入力する。
ステップ108b: 本実施例の畳込み演算conv1とプーリング演算pool1の組合せ108bにより,入力層100から中間層データ102を出力する。詳細は図7と図8で説明する。
ステップ202: 畳込み演算conv2により,中間層データ102から中間層データ103を出力する。
ステップ203: プーリング演算pool2により,中間層データ103から中間層データ104を出力する。
ステップ204: 全結合演算ip1により,中間層データ104から中間層データ105を出力する。
ステップ205: 活性化演算relu1により,中間層データ105から中間層データ106を出力する。
ステップ206: 全結合演算ip2により,中間層データ106から中間層データ107を出力する。
ステップ302: 中間層データ107の最大値を検出することで,画像の認識結果を出力する。
ステップ303: 画像認識の処理フローを終了する。
図7は本実施例における畳込み演算conv1とプーリング演算pool1の組合せ108bの処理フローを示す図である。
ステップ304: 畳込み演算conv1とプーリング演算pool1の組合せ108bの処理フローを開始する。
ステップ305: メモリロードユニット153が,この処理フローの下位の処理フローで用いられる次の4本の部分的なベクトルデータ110を入力層100から抜粋し用意する。
ステップ306: 畳込み演算conv1とプーリング演算pool1の組合せ108bの下位の処理フローである。詳細は図8で説明する。
ステップ307: 入力層100の全ての部分のベクトルデータ110を処理完了したならばステップ308に進み,そうでないならばステップ305に進む。
ステップ308: 畳込み演算conv1とプーリング演算pool1の組合せ108bの処理フローを終了する。
図8は本実施例における畳込み演算conv1とプーリング演算pool1の組合せ108bの下位の処理フロー306を示す図である。図2乃至図5を参照しつつ処理を説明する。
ステップ180: 畳込み演算conv1とプーリング演算pool1の組合せ108bの下位の処理フローを開始する。
ステップ181: iを1で初期化する。
ステップ182: メモリロードユニット153が,i本目のベクトルAi 110を,i本目のバッファAi 154にロードする。図4の例ではバッファAは4列あるため,処理182から185は4回繰り返し行われることになる。もっとも,先に述べたようにこの数は任意である。
ステップ183: 行列前半部分の行列ベクトル積演算ユニット155が,行列前半部分(UkSkVkT) 141とi本目のバッファAi 154に保存されているi本目のベクトルAi 110との行列ベクトル積の演算を実行し,演算結果としてベクトルBi 111bを得る。ベクトルBi 111bはi本目のバッファBi 156に保存される。
ステップ184: iを(i+1)で更新する。
ステップ185: iが4より大きければステップ186に進み,そうでなければステップ182に進む。以上の処理で,行列前半部分(UkSkVkT) 141を用いた演算結果が,バッファBi 156に格納される。
ステップ186: プーリング演算実行ユニット157が{1,2,3,4}の中から最大点を選びjとして保存する。同時に,比較結果ベクトルCをバッファC 160に保存し,最大値ベクトルDをバッファD 161に保存する。詳細は図9で説明する。
ステップ187: 行列後半部分の行列ベクトル積演算ユニット159が,行列後半部分(U(n-k)S(n-k)V(n-k)T) 142とバッファAj 154に保存されているj本目のベクトルAj 110との行列ベクトル積の演算を実行し,演算結果としてベクトルEを得る。ベクトルEはバッファE 162に保存される。本実施例では,行列後半部分を用いた演算は,バッファA 154に格納される4つのベクトルのうち,一つに対してだけ行えば良いので,演算量を低減することができる。
ステップ188: ベクトル和演算ユニット163が,バッファD 161の最大値ベクトルDとバッファE 162のベクトルEを部分的に加算し,演算結果としてベクトルFを得る。ベクトルF 113はバッファF 164に保存する。詳細は,図10で説明する。
ステップ189: メモリストアユニット165が,バッファF 164に保存されたベクトルF 113をメモリ(図示せず)にストアする。
ステップ190: 畳込み演算conv1とプーリング演算pool1の組合せ108bの下位の処理フローを終了する。
図9は本実施例におけるプーリング演算実行ユニット157が,{1,2,3,4}の中から最大点を選びjとして保存すると同時に,比較結果ベクトルCをバッファC 160に保存し最大値ベクトルDをバッファD 161に保存する処理フローを示す図である。
ステップ210: プーリング演算実行ユニット157が,{1,2,3,4}の中から最大点を選びjとして保存すると同時に,比較結果ベクトルCをバッファC 160に保存し最大値ベクトルDをバッファD 161に保存する処理フローを開始する。
ステップ211: スカラー値iを0で初期化し,ベクトル値countを{0,0,0,0}で初期化する。
ステップ212: 最大値検出・最大点検出ユニット170は,ベクトルB1[i],ベクトルB2[i],ベクトルB3[i],ベクトルB4[i]の最大点を検出する処理を実行し,その結果を最大点ベクトルG[i]とする。すなわち,最大点ベクトルG[i] ← maxarg(ベクトルB1[i],ベクトルB2[i],ベクトルB3[i],ベクトルB4[i])とする。
ステップ213: 最大点計数ユニット172は,選択された最大点をカウントする。すなわち,count[最大点ベクトルG[i]-1]←count[最大点ベクトルG[i]-1]とする。その後,最大点ベクトルG[i]をバッファG 171に保存する。
ステップ214: 最大値検出・最大点検出ユニット170は,ベクトルB1[i],ベクトルB2[i],ベクトルB3[i],ベクトルB4[i]の最大値を検出する処理を実行し,その結果を最大値ベクトルD[i]とする。すなわち,最大値ベクトルD[i] ← max(ベクトルB1[i],ベクトルB2[i],ベクトルB3[i],ベクトルB4[i])とする。その後,最大値ベクトルD[i]をバッファD 161に保存する。
ステップ215: iを(i+1)で更新する。
ステップ216: iがベクトルBの要素数より少なければステップ212へと進み,そうでないならステップ217へと進む。
ステップ217: 最大点計数ユニット172 は,(カウントされた最大点)+1をjとする。すなわち,j ←1+max(count[0], count[1], count[2], count[3])とする。
ステップ218: kを0で初期化する。
ステップ219: 比較ユニット173は,ベクトルF[k]と最大点jを比較する。等しければステップ220へと進み,等しくなければステップ221へと進む。
ステップ220: 比較結果ベクトルC[k]を「1」とし,バッファC 160に保存する。
ステップ221: 比較結果ベクトルC[k]を「0」とし,バッファC 160に保存する。
ステップ222: kを(k+1)で更新する。
ステップ223: kが比較結果ベクトルCの要素数より少なければステップ219へと進み,そうでないならステップ224へと進む。
ステップ224: プーリング演算実行ユニット157{1,2,3,4}の中から最大点を選びjとして保存すると同時に,比較結果ベクトルCをバッファC 160に保存し最大値ベクトルDをバッファD 161に保存する処理フローを終了する。
図10は,ベクトル和演算ユニット163が,バッファD 161の最大値ベクトルDとバッファE 162のベクトルEを部分的に加算し,演算結果としてベクトルFを得,またベクトルF 113はバッファF 164に保存する処理フローを示す図である。
ステップ230: ベクトル和演算ユニット163が,バッファD 161の最大値ベクトルDとバッファE 162のベクトルEを部分的に加算し,演算結果としてベクトルFを得,またベクトルF 113はバッファF 164に保存する処理フローを開始する。
ステップ231: iを0で初期化する。
ステップ232: 比較結果ベクトルC[i]が1と等しいか比較する。等しいならステップ233に進み,等しくないならステップ234に進む。
ステップ233: 最大値ベクトルD[i]とベクトルE[i]の和を取り,その演算結果をベクトルF[i]とする。
ステップ234: 最大値ベクトルD[i]をベクトルF[i]とする。
ステップ235: iを(i+1)で更新する。
ステップ236: iが最大値ベクトルDの要素数より少なければステップ232へと進み,そうでないならステップ237へと進む。
ステップ237: ベクトルF 113をバッファF 164に保存する。
ステップ238: ベクトル和演算ユニット163が,バッファD 161の最大値ベクトルDとバッファE 162のベクトルEを部分的に加算し,演算結果としてベクトルFを得,またベクトルF 113はバッファF 164に保存する処理フローを終了する。
図11は,本実施例における,本実施例の畳込み演算conv1とプーリング演算pool1を演算する装置のタイミングチャートを示す図である。本実施例の演算装置の各ユニットはそれぞれ独立しているため,それぞれの演算装置で必要とするデータが全て揃った段階で演算を開始することができる。本タイミングチャートでは,各ユニットの演算実行タイミングを示す。まずメモリロードユニット153は,4本のベクトルデータ110をバッファA 154にロードする。
演算240: メモリロードユニット153は,1本目のベクトルデータA-1 110をバッファA-1 154にロードする。
演算241: メモリロードユニット153は,2本目のベクトルデータA-2 110をバッファA-2 154にロードする。
演算242: メモリロードユニット153は,2本目のベクトルデータA-3 110をバッファA-3 154にロードする。
演算243: メモリロードユニット153は,2本目のベクトルデータA-4 110をバッファA-4 154にロードする。
演算244: 演算240が完了した段階で開始可能となる。前半部分の行列ベクトル積演算ユニット155が,1本目のベクトルデータA-1 110を用いて前半部分の行列ベクトル積を演算し,1つ目の演算結果であるベクトルデータB-1 111bをバッファB-1 156に保存する。
演算245: 演算241が完了した段階で開始可能となる。前半部分の行列ベクトル積演算ユニット155が,1本目のベクトルデータA-2 110を用いて行列ベクトル積を演算し,2つ目の演算結果であるベクトルデータB-2 111bをバッファB-2 156に保存する。
演算246: 演算242が完了した段階で開始可能となる。前半部分の行列ベクトル積演算ユニット155が,1本目のベクトルデータA-3 110を用いて行列ベクトル積を演算し,3つ目の演算結果であるベクトルデータB-3 111bをバッファB-3 156に保存する。
演算247: 演算243が完了した段階で開始可能となる。前半部分の行列ベクトル積演算ユニット155が,1本目のベクトルデータA-4 110を用いて行列ベクトル積を演算し,4つ目の演算結果であるベクトルデータB-4 111bをバッファB-4 156に保存する。
演算248: 演算244, 演算245,演算246,演算247が完了した段階で開始可能となる。プーリング演算実行ユニット157がバッファB 156に保存されているベクトルデータB 111bを用いて,セレクト信号線158,バッファC 160,およびバッファ161に演算結果を出力する。
演算249: 演算248が完了した時点で開始可能となる。後半部分の行列ベクトル積演算ユニット159が,選択されたベクトルデータA-j 110を用いて後半部分の行列ベクトル積を演算し,ベクトルデータをバッファE 162に保存する。後半部分の行列ベクトル積演算ユニットが実行すべき演算249が1回で済むことが演算量と消費電力の低減につながり,本実施例の効果となる。
演算250: 演算248と演算249が完了した時点で開始可能となる。ベクトル和演算ユニット163がバッファC 160,バッファD 161,バッファE 162に保存されているベクトルデータを用いて演算を実行し,得られたベクトルデータF 113をバッファF 164に保存する。
演算251: 演算250が完了した時点で開始可能となる。メモリストアユニット165がベクトルデータF 113をバッファF 164からメモリにストアする。
本実施例では,実施例1とは畳込みニューラルネットワークの層構成に若干の変更がある例について説明する。
図12に本実施例の畳込みニューラルネットワークの層構成を示す。入力データである画像データ400に対して第1の畳込み演算conv1 500を適用することで中間層401を得る。中間層401に活性化演算relu1 501を適用することで,中間層402を得る。中間層402にプーリング演算pool1 502を適用することで中間層403を得る。中間層403に畳込み演算conv2 503を適用することで中間層404を得る。中間層404にプーリング演算pool2 504を適用することで中間層405を得る。中間層405に全結合演算ip1 505を適用することで中間層406を得る。中間層406に活性化演算relu1 506を適用することで中間層407を得る。中間層407に全結合演算ip2 507を適用することで中間層408を得る。実施例1では畳込み演算conv1とプーリング演算pool1の組合せ108に対して変更を施したが,本実施例では畳込み演算conv1 500と活性化演算 501とプーリング演算 502の組合せ409に対して変更を施す。
従来の畳込み演算conv1と活性化演算relu1とプーリング演算pool1の組合せ409aでは,まず畳込み演算conv1 500aにおいて入力される画像データ400の一部のベクトルデータ410に対して行列ベクトル積を適用し,中間層401aの一部のベクトルデータ411を得る。つぎに活性化演算relu1 501aにおいて中間層401aの一部のベクトルデータ412の負の要素を全て0にすることで中間層402aの一部のベクトルデータ413を得る。さいごにプーリング演算pool1 502aにおいて中間層402aの一部のベクトルデータ414から最大値をサンプリングし,中間層403aの一部のベクトルデータ415を得る。
本実施例の畳込み演算conv1と活性化演算relu1とプーリング演算pool1の組合せ409bでは,従来の畳込み演算conv1と活性化演算relu1とプーリング演算pool1の組合せ409aと等価な演算を保持しつつも順番を入れ替えることで演算量を低減する。まず前半部分の畳込み演算conv1 500b-1を演算したのちにプーリング演算502bを演算し,さらにそのあと後半部分の畳込み演算conv1 500b-2を演算し,最後に活性化演算relu1 501bを演算する。活性化演算relu 501bを最後にしたとしても従来と同じ内容の演算を実現でき,さらにこのことで畳込み演算conv1とプーリング演算pool1を連接させ畳込み演算conv1を前後半に2分割することで実施例1と同様に畳込み演算conv1とプーリング演算pool1の組合せによる演算量と消費電力の低減が可能となる。
本実施例での畳込み演算conv1と活性化演算relu1とプーリング演算pool1の組合せでは,まず前半部分の畳込み演算conv1 500b-1において入力される画像データ400の一部のベクトルデータ420に前半部分の行列ベクトル積を適用することで中間層401bの一部のベクトルデータ421を得る。
前半部分の畳込み演算conv1 500b-1の行列ベクトル積はいわば主要項のみを演算しており,つぎのプーリング演算502bにおいて最大値を正しく検出できればよい。次にプーリング演算 502bにおいて中間層401bの一部のベクトルデータ422から最大値をサンプリングすることで中間層402bの一部のベクトルデータ423を得る。このとき最大値を最も出力したベクトルデータ421を検出し,そのベクトルデータ421に対応する画像データ400のベクトルデータ420を選択する。
後半部分の畳込み演算conv1 500b-2はこのベクトルデータ420に行列ベクトル積の演算を適用し,中間層402bの一部のベクトルデータに加算することで演算精度を回復する。活性化演算relu1 501bは中間層402bの一部のベクトルデータ423の負の要素を検出し0とすることで中間層402bの一部のベクトルデータ424を得る。本実施例では活性化演算relu1 501bの適用するベクトルデータの量が減ったことで,畳込み演算conv1 500の演算量と消費電力の低減に加えて活性化演算relu1 501bの演算量と消費電力も低減している。
実施例1、実施例2の変形例について説明する。本発明の実施例では畳込み演算とプーリング演算を組合せることで,畳込み演算の行列ベクトル積を2分割可能であれば適用できる。したがって,実施例1、実施例2に対する変化例として,図1の畳込み演算conv2 202とプーリング演算pool2 203の組合せに対してさらに適用し,畳込み演算conv2の行列ベクトル積を2分割してもよい。こうすることで,実施例1よりも更に演算量と消費電力の低減効果を期待できる。あるいは,図1の畳込み演算conv2 202とプーリング演算pool2 203の組合せだけについて,行列ベクトル積を2分割してもよい。
畳込み演算の行列A 131が正方行列である場合,すなわちn=mである場合は,特異値分解でなく固有値分解してもよい。この場合は固有値の大きさを基準として行列を前半部分と後半部分に分割する。固有値分解が正方行列に対してのみ適用できるのに対し、同様の行列分解の手法である特異値分解は,任意の矩形行列に対して適用が可能である。
実施例1、実施例2では,画像認識処理を適用対象の例として説明した。ただし,適用対象となるデータは,画像データに限られるものではない。例えば,畳込みニューラルネットワークが認識する対象として,画像ではなく音声としてもよい。あるいは,畳込みニューラルネットワークが認識する対象として,画像ではなく自然言語としてもよい。あるいは,畳込みニューラルネットワークが認識する対象として,画像ではなくセンサデータから得られる気温や湿度や流体の流量などの環境データとしてもよい。
本実施例は,上記の実施例で説明した畳込みニューラルネットワークにおいて、行列の前半部分と後半部分の切断点の決定手法および,それを応用した画像認識処理装置の学習方法について説明する。
図13は,本実施例における,畳込みニューラルネットワークを用いた画像認識処理装置を構成するまでの処理を示す図である。図中実線は処理の流れを、点線はデータの流れを示す。画像認識処理装置の具体的な例としては,図4で説明した構成をとるものとする。
従来行われているように,画像認識などのための畳込みニューラルネットワークでは,行列演算のために用いる行列データを,目的に合わせて最適化する学習処理が行われる。そのため,まず訓練データ用の画像データセット600を用いて,畳込みニューラルネットワークの学習装置にて畳込みニューラルネットワークの学習アルゴリズムを稼働させる。これにより,畳込みニューラルネットワークの学習処理602を実行し,畳込みニューラルネットワークのネットワークパラメータ603を得る。
学習装置は,通常のサーバで良く,訓練データ用画像データセット600を画像認識処理装置で処理させて結果を得,所望の結果が得られるように行列データ603を調整する。そのため,メモリに格納されたプログラムをプロセッサが実行することで各種の処理を行う。また,各種データ600、601、603、605も,サーバの記憶装置に格納しておくことにする。処理の際には,サーバと画像認識処理装置を接続して,必要なデータを画像認識処理装置に提供して処理させる。
畳込みニューラルネットワークのネットワークパラメータ603を得たことで従来の画像認識装置は構成可能となるが,本実施例ではこの畳込みニューラルネットワークのネットワークパラメータ603に行列データの分割処理604による加工を行うことで,更に演算量と消費電力の低い画像認識装置を提供可能となる。即ち,行列データ603を準備した後,準備された行列を分割する。この処理604も,処理602と同じサーバで実行して良い。
行列データの分割処理604の処理内容については,図14と図15で説明する。畳込み行列データの分割処理604はテストデータ用の画像データセット601と畳込みニューラルネットワークのネットワークパラメータ603を用いて処理を行い,行列データが分解された畳込みニューラルネットワークのネットワークパラメータ605を得る。
得られたネットワークパラメータ605を画像認識装置に搭載する。具体的には,図4の行列保存領域150に,行列データの前半部分と後半部分に分けて格納する。画像認識装置がFPGAで構成されている場合には,論理回路をプログラムする。これにより,従来と比べて演算量と消費電力の低い画像認識装置を提供することが可能となる。
図14は,図13の処理の一部を詳細に説明する画像認識装置開発の処理フローを示す図である。
ステップ430: 画像認識装置開発(あるいは製造)の処理フローを開始する。
ステップ431: 畳込みニューラルネットワークの学習装置が,訓練データ用の画像データセット600を用いて畳込みニューラルネットワークのネットワークパラメータ603を得る。
ステップ432: 畳込みニューラルネットワークの後処理装置(ステップ431の学習装置と同じ装置でよい)が,畳込み演算conv1 200の行列データA 131を前半部分141と後半部分142に分割し,行列データが分解された畳込みニューラルネットワークのネットワークパラメータ605を得る。この処理内容については,図15で詳細に説明する。
ステップ433: 行列データが分解された畳込みニューラルネットワークのネットワークパラメータ605を搭載可能な,畳込み演算conv1とプーリング演算pool1の組合せを処理可能な演算装置を構成する。具体的には,画像認識装置に前半部分141と後半部分142に分割したデータを送信し,図4の行列保存領域150に,行列データの前半部分と後半部分に分けて格納する。画像認識装置がFPGAで構成されている場合には,論理回路をプログラムする。
ステップ434: ステップ433で構成した部分以外で画像認識装置に必要な部品を開発あるいは実装する。これは従来の画像認識装置と同様に実行する。
ステップ435: 画像認識装置開発の処理フローを終了する。
図15は,畳込みニューラルネットワークの後処理装置が,畳込み演算conv1の行列データAを前半部分と後半部分に分割し,行列データが分解された畳込みニューラルネットワークのネットワークパラメータを得るための処理フローを示す図である。
ステップ440: 畳込みニューラルネットワークの後処理装置が,畳込み演算conv1の行列データAを前半部分と後半部分に分割し,行列データが分解された畳込みニューラルネットワークのネットワークパラメータを得るための処理フローを開始する。
ステップ441: 畳込み演算conv1 200の行列ベクトル積で用いる行列データA 131を特異値分解することで,左直交行列U 132と対角行列S 133と右直交行列VT 134の組を得る。
ステップ442: 行列データの特異値の数をnとする。特異値の数は対角行列Sの非零対角要素の数である。
ステップ443: iを(n-1)で初期化する。
ステップ444: i番目までの特異値までに対応する部分行列(UiSiViT)を行列データの前半部分とし,それ以降の特異値に対応する部分行列(U(n-i)S(n-i)V(n-i)T)を行列データの後半部分とする。
ステップ445: ステップ444で得られた行列データの前半部分と後半部分を用いて本実施例の画像認識装置を試作し,テストデータ用の画像データセット601を用いて認識精度を取得する。
ステップ446: ステップ445で得られた認識精度が目標認識精度を満足できればステップ447に進み,満足できなければステップ448に進む。
ステップ447: iを(i-1)で更新する。
ステップ448: kを(i+1)とする。
ステップ449: k番目までの特異値までに対応する部分行列(UkSkVkT)を行列データの前半部分141とし,それ以降の特異値に対応する部分行列(U(n-k)S(n-k)V(n-k)T)を行列データの後半部分142とする。
ステップ450: (UkSkVkT)を前半部分の畳込み演算conv1 200b-1の行列データとし, (U(n-k)S(n-k)V(n-k)T)を後半部分の畳込み演算conv1 200b-2の行列データとする。
ステップ451: 畳込みニューラルネットワークの後処理装置が,畳込み演算conv1の行列データAを前半部分と後半部分に分割し,行列データが分解された畳込みニューラルネットワークのネットワークパラメータを得るための処理フローを開始する。
なお,実施例6では,従来どおりに行列データを学習してから前半と後半に分割する例を示したが,前半と後半に分割してから学習をおこなってもよい。あるいは,実施例6同様に,行列データを学習してから前半と後半に分割し,さらに再学習をおこなってもよい。
以上説明したように本実施例では,畳込みニューラルネットワークの畳込み演算に用いられる行列ベクトル積を前半部分と後半部分に分割する。前半部分はプーリング層のサンプリングの予測に用い,後半部分は予測結果の演算精度の回復に用いる。前半部分は行列の主要項を多く含むようにし,後半部分は行列の誤差項を多く含むようにする。このために,行列を特異値分解し,ある特異値をしきい値とし,しきい値より大きい特異値に対応する行列成分を前半部分に割り当て,しきい値より小さい特異値に対応する行列を後半部分に割り当てる。これにより,畳込みニューラルネットワークの畳込み演算の消費電力と演算量を削減する。
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の実施例の構成の追加・削除・置換をすることが可能である。

Claims (15)

  1. 畳込みニューラルネットワークによる処理方法であって,
    前記ニューラルネットワークは,行列ベクトル積による畳込み演算を行う畳込み演算部と,最大値サンプリング演算を行うプーリング演算部を具備し,
    前記畳込み演算部で行われる畳込み演算のための行列データはしきい値が設定され,
    前記行列データは前記しきい値を基準に前半部分と後半部分に2分割されており,
    前記行列データの前半部分は前記行列データの主要項を比較的多く含み,また,前記行列データの後半部分は前記行列データの主要項を比較的少なく含み,
    前記畳込み演算部は,前記前半部分の行列データによる前半部分の畳込み演算と,前記後半部分の行列データによる後半部分の畳込み演算とを2分割して実行し,
    前記前半部分の畳込み演算は,前記プーリング演算部の前記最大値サンプリング演算に用いられる第1の演算データを生成するための演算を実行し,
    前記プーリング演算部は,前記最大値サンプリング演算に伴って,前記後半部分の畳込み演算で,前記行列ベクトル積の畳込み演算を適用すべきベクトルデータを選択し,
    前記後半部分の畳込み演算は,前記プーリング演算部で選択された前記ベクトルデータに対して,畳込み演算を実行して第2の演算データを生成し,
    前記プーリング演算部の前記最大値サンプリング演算の結果と,前記第2の演算データを,全部または部分的に加算することで,畳込みニューラルネットワークの中間層データを得ることを特徴とする,
    畳込みニューラルネットワークによる処理方法。
  2. 前記行列データは特異値分解されていることを特徴とし,
    前記しきい値は前記行列データの特異値分解によって得られた特異値によって特徴付けられ,
    前記行列データの前半部分と後半部分を前記しきい値を基準として,比較的大きい特異値データに対応する部分行列と,比較的小さい特異値データに対応する部分行列に分割することを特徴とする
    請求項1の畳込みニューラルネットワークによる処理方法。
  3. 前記行列データは固有値分解されていることを特徴とし,
    前記しきい値は前記行列データの固有値分解によって得られた固有値によって特徴付けられ,
    前記行列データの前半部分と後半部分を前記しきい値を基準として,比較的大きい固有値データに対応する部分行列と,比較的小さい固有値データに対応する部分行列に分割することを特徴とする
    請求項1の畳込みニューラルネットワークによる処理方法。
  4. 画像認識を行うことを特徴とする,
    請求項1の畳込みニューラルネットワークによる処理方法。
  5. 音声認識を行うことを特徴とする,
    請求項1の畳込みニューラルネットワークによる処理方法。
  6. 自然言語処理を行うことを特徴とする,
    請求項1の畳込みニューラルネットワークによる処理方法。
  7. 温度や湿度や流体の流量を認識することで周辺環境の認識を行うことを特徴とする,
    請求項1の畳込みニューラルネットワークによる処理方法。
  8. 畳込みニューラルネットワークの畳込み演算の行列データの演算パラメータを決定するための,畳込みニューラルネットワーク学習方法であって,
    前記畳込みニューラルネットワークは,
    行列ベクトル積による畳込み演算を行う畳込み演算部と,最大値サンプリング演算を行うプーリング演算部を具備し,
    前記畳込み演算に用いる行列データを格納する行列保存領域を具備し,
    前記行列保存領域に格納される前記行列データは,しきい値に基づいて前半部分と後半部分に2分割されており,
    前記畳込み演算部は前記前半部分の行列データによる第1の畳込み演算と,前記後半部分の行列データによる第2の畳込み演算とを個別に実行し,
    前記第1の畳込み演算は,前記プーリング演算部の最大値サンプリング演算に用いられる第1の演算データを生成し,
    前記プーリング演算部は,前記第1の演算データを用いた前記最大値サンプリング演算に伴って,前記第2の畳込み演算を行うべきベクトルデータを選択し,
    前記第2の畳込み演算は,前記プーリング演算部で選択された前記ベクトルデータに対して,前記後半部分の行列データによる畳込み演算を実行して第2の演算データを得,
    前記プーリング演算部の最大値サンプリングの演算結果と,前記第2の演算データを,全部または部分的に加算することで,畳込みニューラルネットワークの中間層データを得るものであって,
    前記2分割された行列データを準備するために,
    認識精度の目標値を設定可能とし,
    前記しきい値を変更しながら当該しきい値に応じて分割された前記行列データを用いて前記畳込みニューラルネットワークを構成し,テストデータを用いて認識精度を取得し,
    前記認識精度の目標値を満足する,前記しきい値を決定する,
    畳込みニューラルネットワークの学習方法。
  9. 前記行列データを特異値分解し,前記しきい値と比較して大きい特異値データに対応する部分行列を前半部分とし,前記しきい値と比較して小さい特異値データに対応する部分行列を後半部分とすることを特徴とする
    請求項8の畳込みニューラルネットワークの学習方法。
  10. 前記行列データを固有値分解し,前記しきい値と比較して大きい固有値データに対応する部分行列を前半部分とし,前記しきい値と比較して小さい固有値データに対応する部分行列を後半部分とすることを特徴とする
    請求項8の畳込みニューラルネットワークの学習方法。
  11. 畳込みニューラルネットワークを備える処理装置であって,
    前記ニューラルネットワークは,行列ベクトル積による畳込み演算を行う畳込み演算部と,最大値サンプリング演算を行うプーリング演算部を具備し,
    前記畳込み演算に用いる行列データを格納する行列保存領域を具備し,
    前記行列保存領域に格納される前記行列データは,前半部分と後半部分に2分割されており,
    前記畳込み演算部は前記前半部分の行列データによる第1の畳込み演算と,前記後半部分の行列データによる第2の畳込み演算とを個別に実行し,
    前記第1の畳込み演算は,前記プーリング演算部の最大値サンプリング演算に用いられる第1の演算データを生成し,
    前記プーリング演算部は,前記第1の演算データを用いた前記最大値サンプリング演算に伴って,前記第2の畳込み演算を行うべきベクトルデータを選択し,
    前記第2の畳込み演算は,前記プーリング演算部で選択された前記ベクトルデータに対して,前記後半部分の行列データによる畳込み演算を実行して第2の演算データを得,
    前記プーリング演算部の最大値サンプリングの演算結果と,前記第2の演算データを全部または部分的に加算することで,畳込みニューラルネットワークの中間層データを得ることを特徴とする,
    畳込みニューラルネットワークを備える処理装置。
  12. 前記畳込み演算部で行われる畳込み演算の行列データはしきい値が設定され,
    前記行列データは前記しきい値を基準に前半部分と後半部分に2分割されており,
    前記行列データの前半部分は前記行列データの主要項を比較的多く含み,また,前記行列データの後半部分は前記行列データの主要項を比較的少なく含む,
    請求項11記載の畳込みニューラルネットワークを備える処理装置。
  13. 前記プーリング演算部は,複数設けられたバッファから,複数のベクトルデータからなる前記第1の演算データを受信し,
    前記プーリング演算部は,前記最大値サンプリングにより,前記複数のベクトルデータから最大値ベクトルを生成し,
    前記プーリング演算部は,前記最大値ベクトルを生成するための値を,前記複数のベクトルデータのいずれから採用したかを最大点ベクトルとして記憶し,
    最も採用が多かったベクトルデータを,前記第2の畳込み演算を行うべきベクトルデータとして選択する,
    請求項11記載の畳込みニューラルネットワークを備える処理装置。
  14. 前記プーリング演算部の最大値サンプリングの演算結果と,前記第2の演算データを全部または部分的に加算するベクトル和演算ユニットを備え,
    前記ベクトル和演算ユニットは,前記最大値サンプリングの演算結果と,前記第2の演算データを全部または部分的に加算する際に,前記最大値ベクトルを生成するための値を,前記第2の畳込み演算を行うべきベクトルデータとして選択したベクトルデータから採用している場合に,当該値に関する前記第2の演算データを加算する,
    請求項13記載の畳込みニューラルネットワークを備える処理装置。
  15. 前記畳込み演算に用いる行列データを格納する行列保存領域は,前記行列データの,前半部分と後半部分のそれぞれのために,前半保存領域と後半保存領域を備え,
    前記畳込み演算部は,前記前半部分の行列データによる第1の畳込み演算を行う第1の演算部と,前記後半部分の行列データによる第2の畳込み演算とを行う第2の演算部を備え,
    前記第1の演算部は,前記複数のベクトルデータの全てを入力とするとともに,前記前半保存領域から前記前半部分の行列データを入力とし、
    前記第2の演算部は,前記複数のベクトルデータの一つを入力とするとともに,前記後半保存領域から前記後半部分の行列データを入力とする、
    請求項13記載の畳込みニューラルネットワークを備える処理装置。
JP2017056780A 2017-03-23 2017-03-23 畳込みニューラルネットワークによる処理方法、畳込みニューラルネットワークの学習方法、および畳込みニューラルネットワークを備える処理装置 Expired - Fee Related JP6738296B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017056780A JP6738296B2 (ja) 2017-03-23 2017-03-23 畳込みニューラルネットワークによる処理方法、畳込みニューラルネットワークの学習方法、および畳込みニューラルネットワークを備える処理装置
US15/886,428 US20180276527A1 (en) 2017-03-23 2018-02-01 Processing Method Using Convolutional Neural Network, Convolutional Neural Network Learning Method, and Processing Device Including Convolutional Neural Network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017056780A JP6738296B2 (ja) 2017-03-23 2017-03-23 畳込みニューラルネットワークによる処理方法、畳込みニューラルネットワークの学習方法、および畳込みニューラルネットワークを備える処理装置

Publications (2)

Publication Number Publication Date
JP2018160086A JP2018160086A (ja) 2018-10-11
JP6738296B2 true JP6738296B2 (ja) 2020-08-12

Family

ID=63582776

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017056780A Expired - Fee Related JP6738296B2 (ja) 2017-03-23 2017-03-23 畳込みニューラルネットワークによる処理方法、畳込みニューラルネットワークの学習方法、および畳込みニューラルネットワークを備える処理装置

Country Status (2)

Country Link
US (1) US20180276527A1 (ja)
JP (1) JP6738296B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
US11074317B2 (en) * 2018-11-07 2021-07-27 Samsung Electronics Co., Ltd. System and method for cached convolution calculation
CN111382602A (zh) * 2018-12-28 2020-07-07 深圳光启空间技术有限公司 一种跨域人脸识别算法、存储介质及处理器
CN109886390B (zh) * 2019-01-10 2023-11-24 平安科技(深圳)有限公司 卷积神经网络模型优化方法、装置、计算机设备及存储介质
JP7152107B2 (ja) * 2019-01-30 2022-10-12 Necプラットフォームズ株式会社 演算処理装置、演算処理方法及びプログラム
CN110163409B (zh) * 2019-04-08 2021-05-18 华中科技大学 一种应用于置换流水车间的卷积神经网络调度方法
CN110222823B (zh) * 2019-05-31 2022-12-30 甘肃省祁连山水源涵养林研究院 一种水文流量波动情势识别方法及其系统
CN110533022B (zh) * 2019-06-11 2023-12-19 广州海昇教育科技有限责任公司 一种目标检测方法、系统、装置及存储介质
CN112308217A (zh) * 2019-07-31 2021-02-02 北京欣奕华科技有限公司 一种卷积神经网络加速方法及系统
CN111222465B (zh) * 2019-11-07 2023-06-13 深圳云天励飞技术股份有限公司 基于卷积神经网络的图像分析方法及相关设备
KR20210061839A (ko) * 2019-11-20 2021-05-28 삼성전자주식회사 전자 장치 및 그 제어 방법
CN111539526B (zh) * 2020-04-24 2022-12-06 苏州浪潮智能科技有限公司 一种神经网络卷积的方法和设备
CN111860771B (zh) * 2020-06-19 2022-11-25 苏州浪潮智能科技有限公司 一种应用于边缘计算的卷积神经网络计算方法
CN111914213B (zh) * 2020-07-31 2023-11-10 中国原子能科学研究院 一种稀疏矩阵向量乘运算时间预测方法及系统
CN113469337B (zh) * 2021-06-29 2024-04-05 上海寒武纪信息科技有限公司 用于优化神经网络模型的编译方法及其相关产品

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3374476B2 (ja) * 1993-10-22 2003-02-04 株式会社デンソー ニューラルネットワーク構築方法
US10460230B2 (en) * 2015-06-04 2019-10-29 Samsung Electronics Co., Ltd. Reducing computations in a neural network

Also Published As

Publication number Publication date
US20180276527A1 (en) 2018-09-27
JP2018160086A (ja) 2018-10-11

Similar Documents

Publication Publication Date Title
JP6738296B2 (ja) 畳込みニューラルネットワークによる処理方法、畳込みニューラルネットワークの学習方法、および畳込みニューラルネットワークを備える処理装置
US10032463B1 (en) Speech processing with learned representation of user interaction history
JP7037143B2 (ja) ニューラルネットワークのための方法及び電子装置
US11403516B2 (en) Apparatus and method for processing convolution operation of neural network
US11158305B2 (en) Online verification of custom wake word
CN107622303B (zh) 用于神经网络的方法和执行该方法的设备
US20180121377A1 (en) Exploiting input data sparsity in neural network compute units
KR20180070103A (ko) 인식 방법 및 인식 장치
CN109919312B (zh) 卷积神经网络的运算方法、装置及dpu
US20180300610A1 (en) Select one of plurality of neural networks
CN110690930B (zh) 信源数量检测方法及装置
US20180349096A1 (en) Merge sort accelerator
US10996976B2 (en) Systems and methods for scheduling neural networks by varying batch sizes
KR102396447B1 (ko) 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치
KR20200073269A (ko) 인공 신경망의 자동 생성을 위한 방법 및 장치
CN110647974A (zh) 深度神经网络中的网络层运算方法及装置
US11501037B2 (en) Microstructures using generative adversarial networks
TW202307739A (zh) 基於記憶體內計算的機器學習加速器架構
US20210065010A1 (en) Compressing a deep neural network
CN114254686A (zh) 对抗样本的识别方法及装置
CN114127689A (zh) 用于与硬件加速器接口的方法
CN112732638B (zh) 基于ctpn网络的异构加速系统及方法
KR20230069763A (ko) 신경망 네트워크의 셀프 어텐션 연산을 가속하는 장치
JP7107797B2 (ja) 情報処理方法及び情報処理システム
CN110610211A (zh) 一种自适应正则项系数的模型参数估计方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190620

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200529

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200717

R150 Certificate of patent or registration of utility model

Ref document number: 6738296

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees