JP2018018350A - 画像認識装置、画像認識プログラム、画像認識方法および認識装置 - Google Patents

画像認識装置、画像認識プログラム、画像認識方法および認識装置 Download PDF

Info

Publication number
JP2018018350A
JP2018018350A JP2016148965A JP2016148965A JP2018018350A JP 2018018350 A JP2018018350 A JP 2018018350A JP 2016148965 A JP2016148965 A JP 2016148965A JP 2016148965 A JP2016148965 A JP 2016148965A JP 2018018350 A JP2018018350 A JP 2018018350A
Authority
JP
Japan
Prior art keywords
layers
memory area
layer
memory
held
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
JP2016148965A
Other languages
English (en)
Other versions
JP6708044B2 (ja
Inventor
晃一 白幡
Koichi Shirahata
晃一 白幡
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016148965A priority Critical patent/JP6708044B2/ja
Priority to US15/628,105 priority patent/US10296804B2/en
Publication of JP2018018350A publication Critical patent/JP2018018350A/ja
Application granted granted Critical
Publication of JP6708044B2 publication Critical patent/JP6708044B2/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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Multimedia (AREA)
  • Medical Informatics (AREA)
  • Image Analysis (AREA)

Abstract

【課題】学習時における使用メモリ量を削減することができる画像認識装置、画像認識プログラム、画像認識方法および認識装置を提供する。
【解決手段】第1の全結合層(Fully-conn1)、第2の全結合層(Fully-conn2)は、認識処理でのニューロンデータサイズ(data)がパラメータサイズ(param)以下である。学習制御部は、ニューロンデータの誤差の勾配(gdata)をメモリに保存する。学習制御部は、パラメータの誤差の勾配(gparam)を計算して、認識処理のパラメータを保持するメモリ領域(param)にそれぞれ上書して保存する。
【選択図】図7

Description

本発明は、画像認識装置、画像認識プログラム、画像認識方法および認識装置に関する。
近年、多層構造のニューラルネットワークを用いた機械学習が注目されている。このような多層構造のニューラルネットワークを用いた機械学習は、ディープラーニング(深層学習)とも呼ばれる。ディープラーニングは、ニューラルネットワークの多階層化が進んでおり、多くの分野で有効性が確認されている。例えば、ディープラーニングは、画像・音声の認識において人間に匹敵するほど高い認識精度を発揮している。
特開2008−310524号公報
ディープラーニングでは、教師あり学習を行うことにより、ニューラルネットワークに自動的に特徴を学習する。しかしながら、ディープラーニングは、ニューラルネットワークの多階層化により、使用メモリ量が大きくなっており、学習時に使用メモリ量がさらに増加する。例えば、教師あり学習で一般的に使用される誤差逆伝播法では、学習用のデータをニューラルネットワークに順伝播させて認識を行い、認識結果と正解と比較して誤差を求める。そして、誤差逆伝播法では、認識結果と正解との誤差を認識時と逆方向にニューラルネットワークに伝播させ、ニューラルネットワークの各階層のパラメータを変更する。このため、学習時には、使用メモリ量が増加する。例えば、学習には、誤差の勾配を保存するため、認識のみの場合の2倍超にデータ量が増加し、使用メモリ量が2倍超に増加する場合もある。
一つの側面では、学習時における使用メモリ量を削減することができる画像認識装置、画像認識プログラム、画像認識方法および認識装置を提供することを目的とする。
第1の案では、画像認識装置は、認識制御部と、メモリ量計算部と、学習制御部とを有する。認識制御部は、第1の認識処理と、第2の認識処理とを制御する。第1の認識処理では、入力した画像のニューロンデータとパラメータとに基づいてそれぞれ算出した畳み込み量を各第1のメモリ領域にそれぞれ保持する処理と、各第1のメモリ領域に保持した畳み込み量に対して間引き処理をそれぞれ行った間引き後の畳み込み量を各第2のメモリ領域にそれぞれ保持する処理とを第1の複数層において行う。第2の認識処理では、第2のメモリ領域に保持し記間引き後の畳み込み量の全てに対して第3のメモリ領域に保持した重みをそれぞれ積算した出力結果を各第4のメモリ領域にそれぞれ保持する処理を第2の複数層において行う。メモリ量計算部は、第1の複数層と第2の複数層とに含まれる各層について、各ニューロンデータのサイズであるニューロンデータサイズと、各パラメータのサイズであるパラメータサイズとをそれぞれ計算する。学習制御部は、第2の複数層における第1の学習処理と、第1の複数層間における第2の学習処理とを制御する。第1の学習処理では、第2の複数層にいて、第4のメモリ領域に保持した出力結果に基づき計算した出力結果の誤差の勾配を第5のメモリ領域に保持する。また、第1の学習処理では、メモリ量計算部が計算した第2の複数層に含まれる各層のニューロンデータサイズとパラメータサイズと大小関係に基づき、第5のメモリ領域に保持した出力結果の誤差の勾配又は第2の複数層における前層の第6のメモリ領域に保持した誤差の勾配に基づいて計算した第2の複数層における次層への誤差の勾配を各第6のメモリ領域に保持する。また、第1の学習処理では、第2の複数層における次層へのパラメータの誤差の勾配を各第3のメモリ領域にそれぞれ保持する。第2の学習処理では、メモリ量計算部が計算した第1の複数層に含まれる各層のニューロンデータサイズとパラメータサイズとの大小関係に基づき、第2の複数層の最終層の第6のメモリ領域又は第1の複数層における前層の第7のメモリ領域に保持した誤差の勾配に基づいて計算した次層へのパラメータの誤差の勾配を各第7のメモリ領域に保持する。また、第2の学習処理では、第1の複数層における次層への誤差の勾配を各第2のメモリ領域にそれぞれ保持する。
本発明の一の実施態様によれば、学習時における使用メモリ量を削減することができるという効果を奏する。
図1は、ディープラーニングの処理の流れの一例を模式的に示した図である。 図2Aは、畳み込み演算の一例を模式的に示した図である。 図2Bは、ReLUの一例を模式的に示した図である。 図2Cは、間引きの一例を模式的に示した図である。 図2Dは、全結合の一例を模式的に示した図である。 図3は、従来のニューラルネットワークの計算の流れの一例を示す図である。 図4は、LeNetの処理の流れの一例を模式的に示した図である。 図5は、従来の使用メモリ量の一例を示す図である。 図6は、認識装置の機能的な構成を概略的に示した図である。 図7は、本実施例のニューラルネットワークの計算の流れの一例を示す図である。 図8は、本実施例に係る認識装置による使用メモリ量の一例を示す図である。 図9は、効果の一例を説明する図である。 図10Aは、画像認識処理の手順の一例を示すフローチャートである。 図10Bは、画像認識処理の手順の一例を示すフローチャートである。 図11は、従来のモーメンタム法を用いたニューラルネットワークの計算の流れの一例を示す図である。 図12は、従来の使用メモリ量の一例を示す図である。 図13は、本実施例のモーメンタム法を用いたニューラルネットワークの計算の流れの一例を示す図である。 図14は、本実施例に係る認識装置による使用メモリ量の一例を示す図である。 図15は、画像認識プログラムを実行するコンピュータの構成の一例を示す図である。
以下に、本発明にかかる画像認識装置、画像認識プログラム、画像認識方法および認識装置の実施例を図面に基づいて詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下に示す実施例は、矛盾を起こさない範囲で適宜組み合わせてもよい。
[従来のディープラーニングの説明]
最初、従来のディープラーニングについて説明する。図1は、ディープラーニングの処理の流れの一例を模式的に示した図である。ディープラーニングでは、識別対象が写った大量の画像を学習用の画像として教師あり学習を行うことにより、画像に写った識別対象の特徴をニューラルネットワークに自動的に学習する。ディープラーニングでは、このように特徴を学習したニューラルネットワークを用いることで画像の写った識別対象を識別できる。脳には、多数のニューロン(神経細胞)が存在する。各ニューロンは、他のニューロンから信号を受け取り、他のニューロンへ信号を受け渡す。脳は、この信号の流れによって、様々な情報処理を行う。ニューラルネットワークは、このような脳の機能の特性を計算機上で実現したモデルである。ニューラルネットワークは、脳のニューロンを模したユニットを階層的に結合している。ユニットは、ノードとも呼ばれる。各ユニットは、他のユニットからデータを受け取り、他のユニットへデータを受け渡す。ニューラルネットワークは、ユニットのパラメータを学習によって変化させて受け渡すデータを変化させることで様々な識別対象を識別(認識)できる。以下では、ニューラルネットワークを伝送されるデータをニューロンデータと呼ぶ。図1には、ニューラルネットワークの一例として、画像の認識に用いられる畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)の一例が示されている。以下では、ニューラルネットワークとして、畳み込みニューラルネットワークにより画像の認識を行う場合を例に説明する。ニューラルネットワークは、階層構造とされており、畳み込み(convolution)層とプーリング(サブサンプリング)層と全結合(fully-connected)層とを有する。図1の例では、畳み込み層とプーリング層を交互に2回設けているが、さらに多く設けてもよい。また、全結合層は、複数設けられていてもよい。ニューラルネットワークの階層構造や各層の構成は、識別する対象などに応じて、設計者が予め定めている。
ニューラルネットワークでは、画像の識別を行う場合、図1に示すように、左から右へ畳み込み層とプーリング層とを交互に複数回繰り返すことで画像に写った識別対象の特徴を抽出し、最後に全結合層で画像に写った識別対象の識別(カテゴライズ)を行う。一方、ニューラルネットワークでは、画像の学習を行う場合、識別した結果と正解との誤差を求め、図1に示すように、右から左へニューラルネットワークに逆伝播させ、畳み込みニューラルネットワークの各階層のパラメータを変更する。
次に、各層の演算について説明する。畳み込み層では、入力したニューロンデータの畳み込み演算を行う。図2Aは、畳み込み演算の一例を模式的に示した図である。図2Aの例では、入力したN×Npixelの画像の畳み込み演算をする場合を示している。畳み込み層では、N×Npixelの画像の各画素の値をそれぞれニューロンデータとして、それぞれパラメータが設定されたm×mのサイズのフィルタと畳み込み(convolution)を計算することで、次層への出力用のニューロンデータを作成する。また、畳み込み層では、非線形活性化関数σに出力用のニューロンデータを通過させることで、発火(activation)をモデル化する。発火とは、ニューロンから出力される信号の値がある値を超えるときに出力される信号が他のニューロンに伝達される現象をいう。
例えば、畳み込み層では、以下の式(1)に示す畳み込み演算を行い、演算結果に対して、以下の式(2)に示す非線形活性化関数σの演算を行う。
Figure 2018018350
ここで、yl−1 (i+a)(j+b)は、入力となるニューロンデータであり、図2Aに示すN×Npixelの画像yl−1の(i+a,j+b)の画素のデータである。wabは、図2Aに示すm×mのフィルタwの重みを表す各パラメータである。x ijは、畳み込み演算された(i,j)の画素のデータである。y ijは、x ijに非線形活性化関数σを適用し、所定のバイアスbを加えた結果としてユニットUiの出力となり、さらに次の層の入力ともなるニューロンデータである。
非線形活性化関数σとしては、例えば、ReLU(ランプ関数)を用いることができる。図2Bは、ReLUの一例を模式的に示した図である。図2Bの例では、入力Xがゼロ未満の場合、出力Yにはゼロが出力される。また、入力Xがゼロを超えた場合、出力Yには入力Xの値が出力される。
プーリング層では、入力したニューロンデータの間引きを行う。図2Cは、間引きの一例を模式的に示した図である。例えば、N×Npixelの画像がニューロンデータとして入力する。プーリング層では、N×Npixelのニューロンデータから、N/k×N/kのニューロンデータに間引く。例えば、k×kの領域ごとに、最大値を取り出すMax-Poolingにより、間引きを行う。間引きは、その他、何れの手法で行ってもよい。例えば、k×kの領域の平均値を取り出すAverage-Poolingで、間引きを行ってもよい。また、プーリング層では、間引きを行うk×kの領域を一部重複させてもよく、重複させずに隣接させて間引きを行ってもよい。
例えば、プーリング層では、以下の式(3)に示すMax-Poolingを行う。
Figure 2018018350
ここで、関数maxは、図2Cに示す(i,j)の画素からそれぞれk画素の範囲の領域内で最大値のニューロンデータを出力する関数である。y iJは、ユニットUiの出力となるニューロンデータである。
全結合層では、識別を行う対象数に応じて、入力したニューロンデータを全結合した全結合の演算を行う。例えば、N×Npixelの画像がニューロンデータとして入力する。全結合層では、N×Npixelのニューロンデータ全てを、それぞれ重み(パラメータ)と掛け合わせることで、次層への出力用のニューロンデータを作成する。また、全結合層では、非線形活性化関数σに出力用のニューロンデータを通過させることで、発火をモデル化する。
図2Dは、全結合の一例を模式的に示した図である。図2Dの例は、識別を行う対象数をi個とした場合にj個のニューロンデータをそれぞれ全結合してi個のニューロンデータを得る場合の一例を示している。例えば、全結合層では、以下の式(4)に示す全結合の演算を行い、演算結果に対して以下の式(5)の演算を行う。
Figure 2018018350
ここで、yl−1 は、ユニットUl−1の出力であり、ユニットUの入力なるニューロンデータである。wl−1 jiは、yl−1 とy に対応した重みを表すパラメータである。x は、重み付け演算されたデータである。y は、x に非線形活性化関数σを適用し、所定のバイアスb を加えた結果のユニットUiの出力となるニューロンデータである。
非線形活性化関数σとしては、例えば、ReLUを用いることができる。
ニューラルネットワークによる演算結果のニューロンデータは、識別層に出力され、識別層で識別が行われる。例えば、図1に示した畳み込みニューラルネットワークによる演算結果のニューロンデータは、識別層に出力され、識別層で画像の識別が行われる。例えば、画像に写った識別対象が10種類の何れであるかの識別を行う場合、全結合層では、演算結果として10個のニューロンデータを出力する。識別層では、最も大きいニューロンデータに対応する画像の種類を識別結果とする。また、学習を行う場合、認識結果と正解と比較して誤差を求める。
ところで、ニューラルネットワークによる演算結果のニューロンデータは、実数となる。識別層では、結果の識別を行いやすいように演算結果のニューロンデータを正規化する。例えば、識別層では、Softmax関数などの活性化関数を用いて演算結果のニューロンデータを0〜1の範囲に正規化する。Softmax関数は、ロジスティック関数を一般化したものであり、任意の実数を持つn次元ベクトルxを、(0,1)区間の実数で和が1になるようなn次元ベクトルσ(x)に正規化する。例えば、識別層では、以下の式(6)に示すSoftmax関数の演算を行う。
Figure 2018018350
これにより、ニューラルネットワークによる演算結果のn個のニューロンデータxは、それぞれの認識対象iである確率σ(x)の確率分布に変換される。識別層では、確率分布が最も大きいニューロンデータに対応する画像の種類を識別結果とする。また、学習を行う場合、識別層では、認識結果と正解と比較して誤差を求める。例えば、識別層では、交差エントロピー誤差関数を利用して目的の確率分布(正解)との誤差を求める。例えば、識別層では、以下の式(7)に示す誤差関数の演算を行う。
Figure 2018018350
ここで、tは、目的の分布であり、認識対象iが正解である場合、1とし、その他の場合0とする。yは、ニューラルネットワークによる演算された認識対象iの確率σ(x)である。
ディープラーニングでは、教師あり学習を行うことにより、ニューラルネットワークに自動的に特徴を学習する。例えば、教師あり学習で一般的に使用される誤差逆伝播法では、学習用のデータをニューラルネットワークに順伝播させて認識を行い、認識結果と正解と比較して誤差を求める。そして、誤差逆伝播法では、認識結果と正解との誤差を認識時と逆方向にニューラルネットワークに伝播させ、ニューラルネットワークの各階層のパラメータを変更して最適解に近づけていく。
次に、誤差の計算の一例を説明する。例えば、誤差逆伝播法では、以下の式(8)に示す誤差関数の偏微分の演算を行う。
Figure 2018018350
誤差逆伝播法では、出力層Lにおける誤差の勾配を以下の式(9)から計算する。なお、Softmax関数の演算を行う識別層では、式(8)の結果が式(9)の誤差の勾配となる。
Figure 2018018350
また、誤差逆伝播法では、出力層Lでの誤差から入力への誤差の勾配を部分微分を用いて計算する。例えば、ReLUなどの活性化関数の演算を行う層では、以下の式(10−1)から入力の誤差の勾配を計算する。σ’(x)は、以下の式(10−2)から求める。xは、認識時で使用した値を用いる。σ’(x)を、式(10−1)に代入すると誤差の勾配(∂E/∂x )が求まる。活性化関数がない場合は式(10−1)、(10−2)の演算をスキップする。
Figure 2018018350
また、誤差逆伝播法では、演算にパラメータ(重み)を有する層についてはパラメータの誤差の勾配を計算する。例えば、式(4)に示す全結合の演算では、以下の式(11−1)からパラメータの誤差の勾配を計算する。また、式(1)に示す畳み込み演算では、以下の式(11−2)からパラメータの誤差の勾配を計算する。なお、偏微分の連鎖律を用いて計算すると得られるy は、認識時に使用した値を用いる。
Figure 2018018350
また、誤差逆伝播法では、前の層(L−1層)への誤差の勾配を算出する。例えば、前の層が全結合の演算を行う層である場合は、以下の式(12−1)から前の層への誤差の勾配を算出する。また、前の層が畳み込み演算を行う層である場合は、以下の式(12−2)から前の層への誤差の勾配を算出する。なお、偏微分の連鎖律を用いて計算すると得られるw ijは、認識時に使用した値を用いる。また、前の層がMax-Poolingを行う層である場合は、認識時にk×kの領域の最大値を取った場所に対して誤差の勾配(∂E/∂x )を加算する。なお、k×kの領域のその他の場所に対しては、何も行わない。
Figure 2018018350
誤差の計算では、ニューラルネットワークに逆伝播させ、ニューラルネットワークの最上位の層に到達するまで各層の誤差の勾配の計算を繰り返す。例えば、L層での誤差から入力への誤差の勾配を式(10−1)を用いて計算する。例えば、式(10−1)に示す入力の誤差は、式(9)の誤差の勾配を代入して求める。また、式(10−1)に示す入力の誤差は、下層が識別層以外の場合、式(12−1)、(12−2)から算出される誤差の勾配を代入して求める。また、例えば、式(11−1)に示すパラメータの誤差の勾配は、式(10−1)から算出される誤差を代入して求める。また、例えば、式(12−1)に示す前の層への誤差は、式(10−1)から算出される誤差を代入して求める。そして、誤差の計算では、誤差を応じて全層のパラメータを更新する。
ここで、従来のニューラルネットワークの計算の流れの一例を説明する。図3は、従来のニューラルネットワークの計算の流れの一例を示す図である。図3の例は、ニューラルネットワークとして、畳み込みニューラルネットワークの学習を行う際の各データと処理の順序を示している。図3に示すニューラルネットワークは、第1の畳み込み層(conv1)、第1のプーリング層(Pool1)、第2の畳み込み層(conv2)、第2のプーリング層(Pool2)、第1の全結合層(Fully-conn1)、第2の全結合層(Fully-conn2)、識別層(Softmax)が順に並んだ階層構造とされている。「data」は、各層のニューロンデータのデータサイズを示している。「param」は、各層のパラメータのデータサイズを示している。「gdata」は、各層のニューロンデータの誤差の勾配のデータサイズを示している。「gparam」は、各層のパラメータの誤差の勾配のデータサイズを示している。なお、第1のプーリング層、第2のプーリング層および識別層は、演算にパラメータを用いないため、「param」、「gparam」が無い状態とされている。矢印は、ニューラルネットワークの学習を行う際の処理の流れを示している。矢印に付した数字は、処理の順序を示している。
ニューラルネットワークの学習を行う場合、最初に、学習対象の画像の識別が行われる。例えば、学習対象の画像に対して数字の「1」〜「7」の順に各層の処理が行われ、処理結果が出力(Output)される。そして、ニューラルネットワークの学習を行う場合、次に、識別結果に基づく学習が行われる。例えば、数字の「8」に示すように識別結果と正解と比較して誤差を求める。Labelは、学習対象の画像の正解を示す。そして、認識結果と正解との誤差を、数字の「9」〜「17」の順に各層の誤差の勾配を算出する処理が行われる。そして、数字の「18」に示すように各階層のパラメータを変更する処理が行われる。なお、パラメータの変更は、各階層ごとに誤差の勾配を算出されたタイミングで行ってもよい。
ここで、各層のニューロンデータの誤差の勾配(gdata)は、前の層の誤差の勾配(gdata)と、認識時のパラメータ(param)から算出される。例えば、第2の全結合層では、「10」に示すように、識別層の誤差の勾配(gdata)と、第2の全結合層のパラメータ(param)からニューロンデータの誤差の勾配(gdata)が算出されている。また、各層のパラメータの誤差の勾配(gparam)は、前の層の誤差の勾配(gdata)と、認識時のニューロンデータ(data)から算出される。例えば、第2の全結合層では、「9」に示すように、識別層の誤差の勾配(gdata)と、第2の全結合層のニューロンデータ(data)からパラメータの誤差の勾配(gparam)が算出されている。このため、従来のディープラーニングでは、学習を行う場合、学習用の入力データを認識した際のニューロンデータ(data)とパラメータ(param)を記憶する。また、従来のディープラーニングでは、学習を行う場合、ニューロンデータの誤差の勾配(gdata)とパラメータの誤差の勾配(gparam)も記憶する。このように、学習時には、使用メモリ量が増加する。
ディープラーニングでは、大量の画像を学習用の入力データとして学習を行う場合、全ての入力データを一度にまとめて反復学習処理させる方法がある。しかし、学習用の入力データは、データ数が非常に多い場合がある。例えば、学習用の入力データは、データ数が数万〜数百万件となる場合がある。ディープラーニングでは、入力データを一度にまとめて反復学習処理させた場合、全ての処理が完了して復帰するまでの時間が長くなる。また、ディープラーニングでは、入力データの1件ごとにニューラルネットワークの各層の演算結果が保持されるため、使用メモリ量が多くなる。そこで、入力データを所定の件数ごとに分けて、学習のバッチ処理を繰り返すミニバッチ法がある。ミニバッチ法では、例えば、入力データをM件ごとに分けて、確率的なバッチ反復を行う。この場合、例えば、以下の式(13)を用いてパラメータを更新する。
Figure 2018018350
ここで、Wは、更新前のパラメータの値である。Wt+1は、更新後のパラメータの値である。ηは、演算された誤差を更新前のパラメータに反映させる割合を示す学習率である。
ここで、従来の使用メモリ量の一例を説明する。例えば、LeCunらによるLeNetの構成のニューラルネットワークを用いた場合の使用メモリ量を説明する。図4は、LeNetの処理の流れの一例を模式的に示した図である。図4の例では、28×28pixelの画像がニューロンデータとして入力(Input)する。ニューラルネットワークでは、28×28pixelのニューロンデータに対して、第1の畳み込み層(Convolution1)として、5×5のサイズの20個のフィルタによりそれぞれ畳み込み演算を行って、24×24pixelの20個のニューロンデータを算出する。次に、ニューラルネットワークでは、24×24pixelの20個のニューロンデータに対して、第1のプーリング層(Pooling1)として、2×2の領域ごとに最大値を取り出すMax-Poolingを行い、12×12pixelの20個のニューロンデータを算出する。次に、ニューラルネットワークでは、12×12pixelの20個のニューロンデータに対して、第2の畳み込み層(Convolution2)として、5×5のサイズの50個のフィルタによりそれぞれ畳み込み演算を行って、8×8pixelの50個のニューロンデータを算出する。次に、ニューラルネットワークでは、8×8pixelの50個のニューロンデータに対して、第2のプーリング層(Pooling2)として、2×2の領域ごとに最大値を取り出すMax-Poolingを行い、4×4pixelの50個のニューロンデータを算出する。次に、ニューラルネットワークでは、4×4pixelの50個のニューロンデータに対して、第1の全結合層(Fully-Connected1)として、500個のユニットにそれぞれ全結合し、それぞれのユニットでReLUの演算を行って500個のニューロンデータを算出する。次に、ニューラルネットワークでは、500個のニューロンデータに対して、第2の全結合層(Fully-Connected2)として、10個のユニットにそれぞれ全結合し、Softmax関数の演算を行って10個のニューロンデータを算出する。
図5は、従来の使用メモリ量の一例を示す図である。図5の例は、入力データを64件ごとに分けて(バッチサイズM=64)、図4に示したニューラルネットワークの処理を実行した場合の使用メモリ量を示している。
例えば、画像の認識時、入力(Input)としては、ニューロンデータの記憶に50,176バイトのメモリが使用される。第1の畳み込み層(Convolution1)では、ニューロンデータの記憶に737,280バイトのメモリが使用され、パラメータの記憶に500バイトのメモリが使用される。第1のプーリング層(Pooling1)では、ニューロンデータの記憶に184,320バイトのメモリが使用される。第2の畳み込み層(Convolution2)では、ニューロンデータの記憶に204,800バイトのメモリが使用され、パラメータの記憶に25,000バイトのメモリが使用される。第2のプーリング層(Pooling2)では、ニューロンデータの記憶に51,200バイトのメモリが使用される。第1の全結合層(Fully-Connected1)では、ニューロンデータの記憶に32,000バイトのメモリが使用され、パラメータの記憶に400,000バイトのメモリが使用される。第2の全結合層(Fully-Connected2)では、ニューロンデータの記憶に640バイトのメモリが使用され、パラメータの記憶に5,000バイトのメモリが使用される。また、Softmax関数の処理では、ニューロンデータの記憶に640バイトのメモリが使用される。よって、画像の認識では、バッチサイズM=64である場合、それぞれを64倍(4バイトを乗算)した結果、合計、ニューロンデータの記憶に5.04Mバイトのメモリが使用され、パラメータの記憶に1.72Mバイトのメモリが使用される。
また、学習時には、画像の認識時と同様のサイズのメモリが使用される。すなわち、学習時にも、合計、ニューロンデータの記憶に5.04Mバイトのメモリが使用され、パラメータの記憶に1.72Mバイトのメモリが使用される。
実施例1では、このような学習時における使用メモリ量を削減してディープラーニングを行う認識装置を説明する。
[認識装置の構成]
実施例1に係る認識装置10の構成について説明する。図6は、認識装置の機能的な構成を概略的に示した図である。認識装置10は、ディープラーニングを用いて各種の対象の認識を行う装置である。例えば、認識装置10は、サーバコンピュータなどのコンピュータである。認識装置10は、1台のコンピュータとして実装してもよく、また、複数台のコンピュータにより実装してもよい。なお、本実施例では、認識装置10を1台のコンピュータとした場合を例として説明する。本実施例では、認識装置10が、画像の認識を行う場合を例に説明する。
図6に示すように認識装置10は、記憶部20と、マザーボード21と、アクセラレータボード22とを有する。なお、認識装置10は、上記の機器以外の他の機器を有してもよい。例えば、認識装置10は、各種の操作を受け付ける入力部や各種の情報を表示する表示部などを有してもよい。
記憶部20は、ハードディスク、SSD(Solid State Drive)などの記憶装置である。マザーボード21は、認識装置10の主機能を担う部品が装着された基板である。アクセラレータボード22は、認識装置10の処理能力を高めるために、追加して利用するハードウェアが搭載された基板である。アクセラレータボード22は、複数設けてもよい。なお、本実施例では、アクセラレータボード22を1つ設けた場合を例として説明する。
記憶部20とマザーボード21とアクセラレータボード22は、データを転送可能なバス23で接続されている。例えば、記憶部20とマザーボード21は、SATA(SerialATA)、SAS(Serial Attached SCSI)などのバス23Aで接続されている。また、マザーボード21とアクセラレータボード22は、PCI(Peripheral Component Interconnect)エクスプレスなどのバス23Bで接続されている。
ディープラーニングは、演算を大量に行う。このため、認識装置10では、GPU(Graphics Processing Unit)や専用チップなどのアクセラレータを用いたアクセラレータボード22で演算を行うことにより、処理の高速化を行っている。
記憶部20は、OS(Operating System)や、後述する各種の処理を実行する各種プログラムを記憶する。さらに、記憶部20は、各種情報を記憶する。例えば、記憶部20は、入力データ40と、定義情報41と、パラメータ情報42と、スナップショット情報43とを記憶する。なお、記憶部20は、その他の各種の情報を記憶してもよい。
入力データ40は、ニューラルネットワークへの入力対象とされたデータである。例えば、教師あり学習を行う場合、入力データ40は、学習用のデータである。例えば、画像に写った識別対象の特徴をニューラルネットワークに学習させる場合、入力データ40は、様々な識別対象が写った大量の画像と、識別対象が何であるかの正解を示すラベルを対応付けたデータである。また、ニューラルネットワークによる識別を行う場合、入力データ40は、識別対象とされたデータである。例えば、画像に写った識別対象を識別する場合、入力データ40は、識別対象とされた画像のデータである。
定義情報41は、ニューラルネットワークに関する情報を記憶したデータである。例えば、定義情報41には、ニューラルネットワークの階層構造や各階層のユニットの構成、ユニットの接続関係などのニューラルネットワークの構成を示す情報が記憶される。画像の認識を行う場合、定義情報41には、例えば、設計者等によって定められた畳み込みニューラルネットワークの構成を示す情報が記憶される。
パラメータ情報42は、ニューラルネットワークの各層の演算で用いられる重み値などのパラメータの値を記憶したデータである。パラメータ情報42に記憶されたパラメータの値は、初期状態では、所定の初期値とされ、学習に応じて更新される。
スナップショット情報43は、入力データを所定の件数ごとに分けて、学習のバッチ処理を繰り返す場合、途中の処理状態に関する情報を記憶したデータである。
マザーボード21は、メモリ30と、演算部31とを有する。
メモリ30は、例えば、RAM(Random Access Memory)などの半導体メモリである。メモリ30は、演算部31で実行される処理の情報や処理で使用される各種の情報を記憶する。
演算部31は、認識装置10全体を制御するデバイスである。演算部31としては、CPU(Central Processing Unit)、MPU(Micro Processing Unit)等の電子回路を採用できる。演算部31は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、演算部31は、全体制御部50と、メモリ量計算部51とを有する。
全体制御部50は、ディープラーニングに関する処理全体を制御する。全体制御部50は、ディープラーニングの処理開始の指示を受け付けると、記憶部20からディープラーニングに関する各種のプログラムや各種情報を読み出す。例えば、全体制御部50は、ディープラーニングの処理を制御する各種のプログラムを読み出す。また、全体制御部50は、定義情報41、パラメータ情報42を読み出す。全体制御部50は、定義情報41、パラメータ情報42に基づいてニューラルネットワークの構成を特定し、ニューラルネットワークの認識処理、学習処理の処理順序を決定する。なお、全体制御部50は、学習処理を開始するタイミングで学習処理の処理順序を決定してもよい。
全体制御部50は、記憶部20から入力データ40を所定の件数ごとに分けて読み出す。そして、全体制御部50は、読み出した入力データ40や認識処理、学習処理に関する情報をアクセラレータボード22にオフロードする。そして、全体制御部50は、アクセラレータボード22を制御して、アクセラレータボード22にニューラルネットワークの認識処理、学習処理を実行させる。また、全体制御部50は、メモリ量計算部51により算出されるメモリ量に基づいて、学習処理の処理順序を制御する。
メモリ量計算部51は、ディープラーニングでデータの記憶に使用される使用メモリ量を算出する。例えば、メモリ量計算部51は、定義情報41に基づいて、ニューラルネットワークの各層で、ニューロンデータおよびパラメータの記憶に使用される使用メモリ量を算出する。
アクセラレータボード22は、メモリ60と、演算部61とを有する。
メモリ60は、例えば、RAMなどの半導体メモリである。メモリ60は、演算部61で実行される処理の情報や処理で使用される各種の情報を記憶する。
演算部61は、アクセラレータボード22を制御するデバイスである。演算部61としては、GPU(Graphics Processing Unit)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)等の電子回路を採用できる。演算部61は、全体制御部50からの制御に応じて、各種のプログラムが動作することにより各種の処理部として機能する。例えば、演算部61は、認識制御部70と、学習制御部71とを有する。
認識制御部70は、ニューラルネットワークの認識処理を制御する。例えば、認識制御部70は、マザーボード21からオフロードされた入力データをニューロンデータとして、処理順序に従い認識処理を実行する。例えば、認識制御部70は、ニューロンデータに対して、ニューラルネットワークの各層の演算を行い、当該ニューラルネットワークの各層のニューロンデータとパラメータをそれぞれメモリ60に保持する。
学習制御部71は、ニューラルネットワークの学習処理を制御する。例えば、学習制御部71は、認識処理による識別結果と正解との誤差を求め、処理順序に従い、誤差をニューラルネットワークに伝播させる学習処理を実行する。例えば、学習制御部71は、誤差からニューラルネットワークの各層の誤差の勾配を算出してパラメータを学習する。この際、学習制御部71は、ニューロンデータとパラメータがメモリ領域に保持される層については、ニューロンデータとパラメータのうち、使用メモリ量の小さい方の誤差の勾配を算出し、算出した誤差の勾配をメモリ60に保持する。その後、学習制御部71は、使用メモリ量の大きい方の誤差の勾配を算出し、メモリ60に保持された認識処理のデータのメモリ領域に、算出した誤差の勾配を上書きする制御を行う。
ここで、本実施例のニューラルネットワークの計算の流れの一例を説明する。図7は、本実施例のニューラルネットワークの計算の流れの一例を示す図である。図7は、図3と同様のニューラルネットワークの処理を本実施例の認識装置10により実施した場合の計算の流れを示している。ニューラルネットワークは、図3と同様に、第1の畳み込み層(conv1)、第1のプーリング層(Pool1)、第2の畳み込み層(conv2)、第2のプーリング層(Pool2)、第1の全結合層(Fully-conn1)、第2の全結合層(Fully-conn2)、識別層(Softmax)が順に並んだ階層構造とされている。「data」は、各層のニューロンデータのデータサイズを示している。「param」は、各層のパラメータのデータサイズを示している。「gdata」は、各層のニューロンデータの誤差の勾配のデータサイズを示している。「gparam」は、各層のパラメータの誤差の勾配のデータサイズを示している。なお、第1のプーリング層、第2のプーリング層および識別層は、演算にパラメータを用いないため、「param」、「gparam」が無い状態とされている。矢印は、ニューラルネットワークの学習を行う際の処理の流れを示している。矢印に付した数字は、処理の順序を示している。
ニューラルネットワークの学習を行う場合、認識制御部70は、学習対象の画像の識別する認識処理を実行する。例えば、認識制御部70は、図3に示した従来のニューラルネットワークの計算と同様に、数字の「1」〜「7」の順に各層の処理を行い、処理結果を出力(Output)する。例えば、認識制御部70は、第1の畳み込み層(conv1)、第2の畳み込み層(conv2)では、ニューロンデータとパラメータとに基づいてそれぞれ算出した畳み込み量をメモリ60にそれぞれ保持する処理を実行する。また、認識制御部70は、第1のプーリング層(Pool1)、第2のプーリング層(Pool2)では、メモリ60に保持された前の層の畳み込み量に対して間引き処理をそれぞれ行った間引き後の畳み込み量をメモリ60のメモリ領域にそれぞれ保持する処理を実行する。また、認識制御部70は、第1の全結合層(Fully-conn1)、第2の全結合層(Fully-conn2)では、メモリ60に保持された前の層の畳み込み量の全てに対して、メモリ60に保持した各層の重みをそれぞれ積算した出力結果をメモリ60にそれぞれ保持する処理を実行する。また、認識制御部70は、識別層(Softmax)では、メモリ60に保持された前の層の出力結果を正規化し、正規化した出力結果でメモリ60に保持する処理を実行する。
ニューラルネットワークの学習を行う場合、次に、学習制御部71が、認識処理の識別結果の誤差からパラメータを更新する学習処理を実行する。例えば、認識制御部70は、図3に示した従来のニューラルネットワークの計算と同様に、数字の「8」に示すように識別結果と正解と比較して誤差を求める。そして、認識制御部70は、数字の「9」〜「17」の順に各層の誤差の勾配を算出する。そして、認識制御部70は、数字の「18」に示すように各階層のパラメータを変更する。なお、各階層のパラメータの変更は、各層ごとに、誤差の勾配が算出された後のタイミングで行ってもよい。
例えば、学習制御部71は、メモリ60に保持した識別層(Softmax)の出力結果に基づき計算した出力結果の誤差の勾配を、メモリ60の識別層(Softmax)の出力結果を保持したメモリ領域に上書きして保持する。これにより、従来と比較して、識別層(Softmax)の誤差の勾配を記憶するメモリ領域を削減される。
また、学習制御部71は、ニューロンデータとパラメータがメモリ領域に保持される層については、ニューロンデータとパラメータのうち、使用メモリ量の小さい方の誤差の勾配を算出し、算出した誤差の勾配をメモリ60に保持する。その後、学習制御部71は、使用メモリ量の大きい方の誤差の勾配を算出し、メモリ60に保持された認識処理のデータのメモリ領域に、算出した誤差の勾配を上書きする制御を行う。図7の例では、第1の畳み込み層(conv1)、第2の畳み込み層(conv2)、第1の全結合層(Fully-conn1)、第2の全結合層(Fully-conn2)は、ニューロンデータとパラメータをメモリ領域に保持している。学習制御部71は、ニューロンデータサイズがパラメータサイズ以下の場合、メモリ60に保持された前の層の誤差の勾配に基づいて計算した次層への誤差の勾配をメモリ60に保持する。その後、学習制御部71は、次層へのパラメータの誤差の勾配を、メモリ60の認識処理のパラメータを保持するメモリ領域にそれぞれ保存する。例えば、図7の例では、第1の全結合層(Fully-conn1)、第2の全結合層(Fully-conn2)は、認識処理でのニューロンデータサイズがパラメータサイズ以下である。このため、学習制御部71は、数字の「9」、「11」に示すように、ニューロンデータの誤差の勾配をメモリ60に保存する。そして、学習制御部71は、数字の「10」、「12」に示すように、パラメータの誤差の勾配を計算して、認識処理のパラメータを保持するメモリ領域にそれぞれ上書して保存する。これにより、図3に示した従来のニューラルネットワークの計算と比較して、第1の全結合層(Fully-conn1)、第2の全結合層(Fully-conn2)のパラメータの誤差の勾配を記憶するメモリ領域を削減される。また、学習制御部71は、ニューロンデータサイズがパラメータサイズよりも大きい場合、メモリ60に保持された誤差の勾配に基づいて計算した次層へのパラメータの誤差の勾配をメモリ60に保持する。その後、学習制御部71は、次層への誤差の勾配を、メモリ60の認識処理のニューロンデータを保持するメモリ領域にそれぞれ保存する。例えば、図7の例では、第2の畳み込み層(conv2)は、認識処理でのニューロンデータサイズがパラメータサイズよりも大きい。このため、学習制御部71は、数字の「14」に示すように、パラメータの誤差の勾配をメモリ60に保存する。そして、学習制御部71は、数字の「15」に示すように、ニューロンデータの誤差の勾配を計算して、認識処理のニューロンデータを保持するメモリ領域に上書して保存する。これにより、図3に示した従来のニューラルネットワークの計算と比較して、第2の畳み込み層(conv2)のニューロンデータの誤差の勾配を記憶するメモリ領域を削減される。
また、学習制御部71は、ニューロンデータがメモリ領域に保持される層については、ニューロンデータの誤差の勾配を算出する。そして、学習制御部71は、メモリ60に保持された認識処理のニューロンデータのメモリ領域に、算出したニューロンデータの誤差の勾配を上書きする制御を行う。図7の例では、第1のプーリング層(Pool1)および第2のプーリング層(Pool2)は、ニューロンデータをメモリ領域に保持している。学習制御部71は、第1のプーリング層(Pool1)および第2のプーリング層(Pool2)については、ニューロンデータの誤差の勾配を算出する。そして、学習制御部71は、数字の「13」、「16」に示すように、メモリ60に保持された認識処理のニューロンデータのメモリ領域に、ニューロンデータの誤差の勾配の勾配を上書きする。これにより、図3に示した従来のニューラルネットワークの計算と比較して、第1のプーリング層(Pool1)および第2のプーリング層(Pool2)のニューロンデータの誤差の勾配を記憶するメモリ領域を削減される。
ここで、本実施例に係る認識装置10による使用メモリ量の一例を説明する。図8は、本実施例に係る認識装置による使用メモリ量の一例を示す図である。図8の例は、入力データを64件ごとに分けて(バッチサイズM=64)、図7に示したニューラルネットワークの処理を実行した場合の使用メモリ量を示している。
画像の認識時には、図5と同様のサイズのメモリが使用される。
一方、学習時には、図5と比較して、第1の畳み込み層(Convolution1)では、ニューロンデータの誤差の勾配の記憶に追加で使用するメモリ領域がゼロに削減される。第2の畳み込み層(Convolution2)でも、ニューロンデータの誤差の勾配の記憶に追加で使用するメモリ領域がゼロに削減される。この第1の畳み込み層および第2の畳み込み層は、後述する画像認識処理においてグループAに分類される。また、第1の全結合層(Fully-Connected1)では、パラメータの誤差の勾配の記憶に追加で使用するメモリ領域がゼロに削減される。第2の全結合層(Fully-Connected2)でも、パラメータの誤差の勾配の記憶に追加で使用するメモリ領域がゼロに削減される。この第1の全結合層および第2の全結合層は、後述する画像認識処理においてグループBに分類される。また、Softmax関数の処理では、ニューロンデータの誤差の勾配の記憶に追加で使用するメモリ領域がゼロに削減される。また、第1のプーリング層(Pool1)および第2のプーリング層(Pool2)でも、ニューロンデータの誤差の勾配の記憶に追加で使用するメモリ領域がゼロに削減される。このSoftmax関数の処理、第1のプーリング層(Pool1)および第2のプーリング層(Pool2)は、後述する画像認識処理においてグループCに分類される。よって、学習の認識では、バッチサイズM=64である場合、それぞれを64倍して(4バイトを乗算)した結果、合計、ニューロンデータの使用メモリ量が13.04Kバイトに削減され、パラメータの使用メモリ量が1.02Mバイトに削減される。
アクセラレータボード22は、一般的に、搭載されるメモリ60の記憶容量が小さい。アクセラレータボード22の一例として、NVIDIA社のGeForce GTX TITAN Xは、搭載されるメモリの記憶容量が12GBである。
ディープラーニングは、ニューラルネットワークの多階層化により、使用メモリ量が大きくなっており、学習時に使用メモリ量がさらに増加する。このため、ディープラーニングでは、ニューラルネットワークの計算の処理をアクセラレータボードで行う場合、アクセラレータボードのローカルメモリの記憶容量によって処理が制限される場合がある。例えば、ディープラーニングでは、1件の処理での使用メモリ量が多いほど、アクセラレータボードが一度のバッチで処理可能な件数が減少するため、入力データの学習にかかる時間が増加する。
図9は、効果の一例を説明する図である。図9は、画像認識のコンテストILSVRC2014で使用されたニューラルネットワークであるVGGNetを対象に、実測値として各バッチサイズMを変えて、使用メモリ量と実行速度を評価した結果を示している。図9には、オリジナルのVGGNetをそのまま実行した場合と、本実施例で説明した学習時における使用メモリ量の削減を適用した場合の使用メモリ量と実行速度の変化が示されている。本実施例で説明した学習時における使用メモリ量の削減を適用した場合、学習時の使用メモリ量は、5〜35%と大幅に削減される。また、本実施例で説明した学習時における使用メモリ量の削減を適用した場合、バッチサイズMを増加することによる処理時間が低下しており、学習速度向上する。また、オリジナルのVGGNetをそのまま実行した場合、実行可能なバッチサイズMの上限は、24であった。本実施例で説明した学習時における使用メモリ量の削減を適用した場合、実行可能なバッチサイズの上限は、48であった。すなわち、本実施例で説明した学習時における使用メモリ量の削減を適用した場合、実行可能なバッチサイズが2倍に増加している。
[処理の流れ]
次に、本実施例に係る認識装置10が実行する画像認識処理の流れについて説明する。図10A、図10Bは、画像認識処理の手順の一例を示すフローチャートである。この画像認識処理は、所定のタイミング、例えば、管理者から処理開始が指示されたタイミングで実行される。
図10Aに示すように、全体制御部50は、定義情報41、パラメータ情報42を読み出す(S10)。全体制御部50は、定義情報41、パラメータ情報42に基づいてニューラルネットワークの構成を特定する(S11)。メモリ量計算部51は、定義情報41に基づいて、ニューラルネットワークの各層で、ニューロンデータおよびパラメータの記憶に使用される使用メモリ量を算出する(S12)。全体制御部50は、パラメータiを1に初期化する(S13)。
全体制御部50は、ニューラルネットワークのi層目を、計算順序別のグループA〜グループCに分類する。全体制御部50は、ニューラルネットワークのi層目にパラメータが存在するか判定する(S14)。ニューラルネットワークのi層目にパラメータが存在する場合(S14肯定)、全体制御部50は、ニューロンデータのデータサイズがパラメータのデータサイズよりも大きいか否かを判定する(S15)。ニューロンデータのデータサイズがパラメータのデータサイズよりも大きい場合(S15肯定)、全体制御部50は、i層目の学習の際に、パラメータの誤差の勾配を計算した後、ニューロンデータの誤差の勾配を計算するものと計算順序を決定する(S16)。この計算順序の層は、グループAとする。
一方、ニューロンデータのデータサイズがパラメータのデータサイズ以下の場合(S15否定)、全体制御部50は、i層目の学習の際に、ニューロンデータの誤差の勾配を計算した後、パラメータの誤差の勾配を計算するものと計算順序を決定する(S17)。この計算順序の層は、グループBとする。
一方、ニューラルネットワークのi層目にパラメータが存在しない場合(S14否定)、全体制御部50は、i層目の学習の際に、ニューロンデータの誤差の勾配を計算するものと計算順序を決定する(S18)。この計算順序の層は、グループCとする。
全体制御部50は、パラメータiの値を1加算する(S19)。全体制御部50は、パラメータiの値がニューラルネットワークの層数n以下か否かを判定する(S20)。パラメータiの値がニューラルネットワークの層数n以下の場合(S20肯定)、上述したS14の処理へ移行する。
一方、パラメータiの値がニューラルネットワークの層数n以下では無い場合(S20否定)、全体制御部50は、アクセラレータボード22を制御して、ニューラルネットワークの学習で使用されるデータサイズの記憶領域をメモリ60に確保する(S21)。
図10Bに示すように、全体制御部50は、記憶部20から入力データ40を所定の件数ごとに分けて読み出す。そして、全体制御部50は、読み出したデータや認識処理、学習処理に関する情報をアクセラレータボード22にオフロードし、ニューラルネットワークの学習を開始する(S22)。
認識制御部70は、パラメータiを1に初期化する(S23)。認識制御部70は、マザーボード21からオフロードされたデータから未処理の1件分のデータを読み出す。そして、認識制御部70は、読み出したデータをニューロンデータとし、ニューロンデータに対して、ニューラルネットワークの順にi層目の演算を行い、演算結果をメモリ60に保持する(S24)。認識制御部70は、パラメータiの値を1加算する(S25)。
認識制御部70は、パラメータiの値がニューラルネットワークの層数n以下か否かを判定する(S26)。パラメータiの値がニューラルネットワークの層数n以下の場合(S26肯定)、上述したS24の処理へ移行する。
一方、パラメータiの値がニューラルネットワークの層数n以下では無い場合(S26否定)、学習制御部71は、ニューラルネットワークの最終層の識別結果と正解との誤差を算出する(S27)。
学習制御部71は、ニューラルネットワークのi層目がグループA〜Cの何れであるか判定する(S28)。
ニューラルネットワークのi層目がグループAの場合、学習制御部71は、パラメータの誤差の勾配を計算してメモリ60に保持する(S29)。そして、学習制御部71は、ニューロンデータの誤差の勾配を計算し、ニューラルネットワークのi層目のニューロンデータを記憶したメモリ60の記憶領域に上書き保存する(S30)。学習制御部71は、ニューラルネットワークのi層目のパラメータの誤差の勾配に基づいて、ニューラルネットワークのi層目のパラメータを更新する(S31)。
一方、ニューラルネットワークのi層目がグループBの場合、学習制御部71は、ニューロンデータの誤差の勾配を計算してメモリ60に保持する(S32)。そして、学習制御部71は、パラメータの誤差の勾配を計算し、ニューラルネットワークのi層目のパラメータを記憶したメモリ60の記憶領域に上書き保存する(S33)。学習制御部71は、ニューラルネットワークのi層目のパラメータの誤差の勾配に基づいて、ニューラルネットワークのi層目のパラメータを更新する(S34)。
一方、ニューラルネットワークのi層目がグループCの場合、学習制御部71は、ニューロンデータの誤差の勾配を計算してメモリ60に保持する(S35)。
学習制御部71は、パラメータiの値から1減算する(S36)。認識制御部70は、パラメータiの値が1以上であるか否かを判定する(S37)。パラメータiの値が1以上である場合(S37肯定)、上述したS28の処理へ移行する。
一方、パラメータiの値が1以上では無い場合(S37否定)、学習制御部71は、オフロードされたデータ全件の処理が完了したか否かを判定する(S38)。オフロードされたデータ全件の処理が完了していない場合(S38否定)、上述したS23の処理へ移行する。
一方、オフロードされたデータ全件の処理が完了した場合(S38肯定)、全体制御部50は、処理結果をスナップショット情報43およびパラメータ情報42に保存する(S39)。
全体制御部50は、入力データ40全件の学習が完了したか否かを判定する(S40)。入力データ40全件の処理が完了していない場合(S40否定)、上述したS22の処理へ移行する。
一方、入力データ40全件の処理が完了した場合(S40肯定)、処理を終了する。
[効果]
上述してきたように、本実施例に係る認識装置10は、学習処理において、ニューロンデータとパラメータがメモリ領域に保持される層については、ニューロンデータとパラメータのうち、使用メモリ量の小さい方の誤差の勾配を算出してメモリ領域に保持する。そして、係る認識装置10は、使用メモリ量の大きい方の誤差の勾配を算出して認識処理のデータを保持したメモリ領域に上書きする。これにより、認識装置10は、学習時における使用メモリ量を削減することができる。
また、本実施例に係る認識装置10は、学習処理の正規化した出力結果から計算した出力結果の誤差の勾配を、正規化した出力結果を保持するメモリ領域に上書きして保持する。これにより、認識装置10は、学習時における使用メモリ量をさらに削減することができる。
また、本実施例に係る認識装置10は、学習処理で間引き処理を行った層については、次層への誤差の勾配を、学習処理での間引き後の畳み込み量を保持するメモリ領域に上書きして保持する。これにより、認識装置10は、学習時における使用メモリ量をさらに削減することができる。
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてもよい。そこで、以下では、本発明に含まれる他の実施例を説明する。
例えば、学習は、モーメンタム法など、その他手法を用いてもよい。例えば、モーメンタム法では、パラメータの値Wt+1を、誤差の勾配▽E(W)と前周のパラメータvの線形和により更新する。例えば、前周のパラメータvおよびWを用いて、以下の式(14−1)、(14−2)から、t+1周における更新後のパラメータvt+1およびWt+1を計算する。
Figure 2018018350
ここで、αは、学習率であり、誤差の勾配への重みづけ倍率である。μは、モーメンタムであり、前周に更新されたパラメータへの重みづけ倍率である。
ここで、従来のモーメンタム法を用いたニューラルネットワークの計算の流れの一例を説明する。図11は、従来のモーメンタム法を用いたニューラルネットワークの計算の流れの一例を示す図である。ニューラルネットワークは、第1の畳み込み層(conv1)、第1のプーリング層(Pool1)、第2の畳み込み層(conv2)、第2のプーリング層(Pool2)、第1の全結合層(Fully-conn1)、第2の全結合層(Fully-conn2)、識別層(Softmax)が順に並んだ階層構造とされている。「data」は、各層のニューロンデータのデータサイズを示している。「param」は、各層のパラメータのデータサイズを示している。「gdata」は、各層のニューロンデータの誤差の勾配のデータサイズを示している。「gparam」は、各層のパラメータの誤差の勾配のデータサイズを示している。「history」は、前周の誤差情報のデータサイズを示している。なお、第1のプーリング層、第2のプーリング層および識別層は、演算にパラメータを用いないため、「param」、「gparam」が無い状態とされている。矢印は、ニューラルネットワークの学習を行う際の処理の流れを示している。矢印に付した数字は、処理の順序を示している。
ニューラルネットワークの学習を行う場合、最初に、学習対象の画像の識別が行われる。例えば、学習対象の画像に対して数字の「1」〜「7」の順に各層の処理が行われ、処理結果が出力(Output)される。そして、ニューラルネットワークの学習を行う場合、次に、識別結果に基づく学習が行われる。例えば、数字の「8」に示すように識別結果と正解と比較して誤差を求める。Labelは、学習対象の画像の正解を示す。そして、認識結果と正解との誤差を、数字の「9」〜「17」の順に各層の誤差の勾配を算出する処理が行われる。そして、数字の「18」、「19」に示すように各階層のパラメータを変更する処理が行われる。
図12は、従来の使用メモリ量の一例を示す図である。図12の例は、入力データを64件ごとに分けて(バッチサイズM=64)、図11に示したニューラルネットワークの処理を実行した場合の使用メモリ量を示している。図12の例では、階層ニューラルネットワークの学習時に合計使用メモリ量が2倍超に増加する。
次に、本実施例のモーメンタム法を用いたニューラルネットワークの計算の流れの一例を説明する。図13は、本実施例のモーメンタム法を用いたニューラルネットワークの計算の流れの一例を示す図である。図13は、図11と同様のモーメンタム法を用いたニューラルネットワークの処理を本実施例の認識装置10により実施した場合の計算の流れを示している。矢印は、ニューラルネットワークの学習を行う際の処理の流れを示している。矢印に付した数字は、処理の順序を示している。
ニューラルネットワークの学習を行う場合、認識制御部70は、学習対象の画像の識別する認識処理を実行する。例えば、認識制御部70は、図11に示した従来のニューラルネットワークの計算と同様に、数字の「1」〜「7」の順に各層の処理を行い、処理結果を出力(Output)する。そして、学習制御部71が、認識処理の識別結果の誤差からパラメータを更新する学習処理を実行する。例えば、認識制御部70は、数字の「8」に示すように識別結果と正解と比較して誤差を求める。そして、認識制御部70は、数字の「9」〜「19」に示すように、順に各層の誤差の勾配を算出しつつ、パラメータを変更する。例えば、学習制御部71は、メモリ60に保持した識別層(Softmax)の出力結果に基づき計算した出力結果の誤差の勾配を、メモリ60の識別層(Softmax)の出力結果を保持したメモリ領域に上書きして保持する。これにより、従来と比較して、識別層(Softmax)の誤差の勾配を記憶するメモリ領域を削減される。例えば、学習制御部71は、数字の「9」、「11」に示すように、ニューロンデータの誤差の勾配をメモリ60に保存する。そして、学習制御部71は、数字の「10」、「12」に示すように、パラメータの誤差の勾配を計算して、前周の誤差情報を保持するメモリ領域にそれぞれ上書して保存する。これにより、図11に示した従来のニューラルネットワークの計算と比較して、第1の全結合層(Fully-conn1)、第2の全結合層(Fully-conn2)のパラメータの誤差の勾配を記憶するメモリ領域を削減される。また、学習制御部71は、数字の「14」に示すように、パラメータの誤差の勾配をメモリ60に保存する。そして、学習制御部71は、数字の「15」に示すように、ニューロンデータの誤差の勾配を計算して、前周の誤差情報を保持するメモリ領域に上書して保存する。これにより、図11に示した従来のニューラルネットワークの計算と比較して、第2の畳み込み層(conv2)のニューロンデータの誤差の勾配を記憶するメモリ領域を削減される。
図14は、本実施例に係る認識装置による使用メモリ量の一例を示す図である。図14の例は、入力データを64件ごとに分けて(バッチサイズM=64)、図13に示したニューラルネットワークの処理を実行した場合の使用メモリ量を示している。図14に示すように、認識装置10は、学習時の使用メモリ量を大幅に削減する。例えば、図14の例は、全体として使用メモリ量が、図12の例と比較して、42.8%(=8720784/15254448)削減される。
また、上記実施例では、ニューラルネットワークにより画像の写った識別対象を識別する場合を例示した。しかしながら、これらに限定されるものではない。例えば、識別対象は、音声など、ニューラルネットワークが識別対象とするものであれば何れであってもよい。
また、上記実施例では、ニューラルネットワークとして、畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)を用いた場合を例示した。しかしながら、これらに限定されるものではない。例えば、ニューラルネットワークは、RNN(Recurrent Neural Network)などの時系列を学習・認識可能なニューラルネットワークであってもよい。RNNは、CNNの拡張であり、CNNと同じく誤差逆伝播を行うため、本実施例と同様の処理を適用できる。
また、上記実施例では、マザーボード21の演算部31にメモリ量計算部51を設けた場合を例示した。しかしながら、これらに限定されるものではない。例えば、アクセラレータボード22の演算部61にメモリ量計算部51を設けて、アクセラレータボード22の演算部61のメモリ量計算部51が、ニューラルネットワークの各層で、ニューロンデータおよびパラメータの記憶に使用される使用メモリ量を算出してもよい。
また、上記実施例では、識別処理の開始の前に、識別処理と学習処理で使用する使用メモリ量を計算する場合を例示した。しかしながら、これらに限定されるものではない。例えば、識別処理の開始の前に、識別処理で使用する使用メモリ量を計算し、識別処理の終了後、学習処理の開始の前に、学習処理で使用する使用メモリ量を計算してもよい。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、全体制御部50、メモリ量計算部51、認識制御部70および学習制御部71の各処理部が適宜統合されてもよい。また、各処理部の処理が適宜複数の処理部の処理に分離されてもよい。さらに、各処理部にて行なわれる各処理機能は、その全部又は任意の一部が、CPU及び該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
[画像認識プログラム]
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、運行を支援する画像認識プログラムを実行するコンピュータシステムの一例を説明する。図15は、画像認識プログラムを実行するコンピュータの構成の一例を示す図である。
図15に示すように、コンピュータ400は、CPU(Central Processing Unit)410、HDD(Hard Disk Drive)420、RAM(Random Access Memory)440を有する。これら400〜440の各部は、バス500を介して接続される。
HDD420には上記の全体制御部50、メモリ量計算部51、認識制御部70および学習制御部71と同様の機能を発揮する画像認識プログラム420Aが予め記憶される。なお、画像認識プログラム420Aについては、適宜分離してもよい。
また、HDD420は、各種情報を記憶する。例えば、HDD420は、記憶部20と同様に、OSや各種プログラム、各種情報を記憶する。
そして、CPU410が、画像認識プログラム420AをHDD420から読み出して実行することで、実施例の各処理部と同様の動作を実行する。すなわち、画像認識プログラム420Aは、全体制御部50、メモリ量計算部51、認識制御部70および学習制御部71と同様の動作を実行する。
なお、上記した画像認識プログラム420Aについては、必ずしも最初からHDD420に記憶させることを要しない。また、例えば、画像認識プログラム420Aは、コンピュータ400に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に記憶させてもよい。そして、コンピュータ400がこれらからプログラムを読み出して実行するようにしてもよい。
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ400に接続される「他のコンピュータ(又はサーバ)」などにプログラムを記憶させておく。そして、コンピュータ400がこれらからプログラムを読み出して実行するようにしてもよい。
10 認識装置
20 記憶部
21 マザーボード
22 アクセラレータボード
30 メモリ
31 演算部
40 入力データ
41 定義情報
42 パラメータ情報
43 スナップショット情報
50 全体制御部
51 メモリ量計算部
60 メモリ
61 演算部
70 認識制御部
71 学習制御部

Claims (7)

  1. 入力した画像のニューロンデータとパラメータとに基づいてそれぞれ算出した畳み込み量を各第1のメモリ領域にそれぞれ保持する処理と、前記各第1のメモリ領域に保持した前記畳み込み量に対して間引き処理をそれぞれ行った間引き後の畳み込み量を各第2のメモリ領域にそれぞれ保持する処理とを第1の複数層において行う第1の認識処理と、前記第2のメモリ領域に保持した前記間引き後の畳み込み量の全てに対して第3のメモリ領域に保持した重みをそれぞれ積算した出力結果を各第4のメモリ領域にそれぞれ保持する処理を第2の複数層において行う第2の認識処理とを制御する認識制御部と、
    前記第1の複数層と前記第2の複数層とに含まれる各層について、各ニューロンデータのサイズであるニューロンデータサイズと、各パラメータのサイズであるパラメータサイズとをそれぞれ計算するメモリ量計算部と、
    前記第4のメモリ領域に保持した前記出力結果に基づき計算した前記出力結果の誤差の勾配を第5のメモリ領域に保持するとともに、前記メモリ量計算部が計算した前記第2の複数層に含まれる各層のニューロンデータサイズとパラメータサイズと大小関係に基づき、前記第5のメモリ領域に保持した前記出力結果の誤差の勾配又は前記第2の複数層における前層の第6のメモリ領域に保持した誤差の勾配に基づいて計算した前記第2の複数層における次層への誤差の勾配を各第6のメモリ領域に保持した後、前記第2の複数層における次層へのパラメータの誤差の勾配を前記各第3のメモリ領域にそれぞれ保持する前記第2の複数層における第1の学習処理と、前記メモリ量計算部が計算した前記第1の複数層に含まれる各層のニューロンデータサイズとパラメータサイズとの大小関係に基づき、前記第2の複数層の最終層の第6のメモリ領域又は前記第1の複数層における前層の第7のメモリ領域に保持した誤差の勾配に基づいて計算した次層へのパラメータの誤差の勾配を各第7のメモリ領域に保持した後、前記第1の複数層における次層への誤差の勾配を前記各第2のメモリ領域にそれぞれ保持する前記第1の複数層間における第2の学習処理とを制御する学習制御部と、
    を有することを特徴とする画像認識装置。
  2. 前記学習制御部は、ニューロンデータサイズがパラメータサイズよりも大きい場合、前記第2の学習処理を実行し、ニューロンデータサイズがパラメータサイズ以下の場合、前記第1の学習処理を実行する制御を行う
    ことを特徴とする請求項1に記載の画像認識装置。
  3. 前記認識制御部は、第4のメモリ領域に保持した前記出力結果を正規化し、正規化した出力結果を第8のメモリ領域に保持する処理を制御し、
    前記学習制御部は、前記第8のメモリ領域に保持した前記正規化した出力結果に基づき計算した前記出力結果の誤差の勾配を、前記第5のメモリ領域に代えて前記第8のメモリ領域に上書きして保持するとともに、前記メモリ量計算部が計算した前記第2の複数層に含まれる各層のニューロンデータサイズとパラメータサイズと大小関係に基づき、前記第8のメモリ領域に保持した前記正規化した出力結果の誤差の勾配又は前記第2の複数層における前層の第6のメモリ領域に保持した誤差の勾配に基づいて計算した前記第2の複数層における次層への誤差の勾配を各第6のメモリ領域に保持した後、前記第2の複数層における次層へのパラメータの誤差の勾配を前記各第3のメモリ領域にそれぞれ保持するよう前記第2の複数層における第1の学習処理を制御する
    ことを特徴とする請求項1または2に記載の画像認識装置。
  4. 前記学習制御部は、前記間引き処理を行った層については、次層への誤差の勾配を前記第2のメモリ領域に上書きして保持する
    ことを特徴とする請求項1〜3の何れか1つに記載の画像認識装置。
  5. 入力した画像のニューロンデータとパラメータとに基づいてそれぞれ算出した畳み込み量を各第1のメモリ領域にそれぞれ保持する処理と、前記各第1のメモリ領域に保持した前記畳み込み量に対して間引き処理をそれぞれ行った間引き後の畳み込み量を各第2のメモリ領域にそれぞれ保持する処理とを第1の複数層において行う第1の認識処理と、前記第2のメモリ領域に保持した前記間引き後の畳み込み量の全てに対して第3のメモリ領域に保持した重みをそれぞれ積算した出力結果を各第4のメモリ領域にそれぞれ保持する処理を第2の複数層において行う第2の認識処理とを制御し、
    前記第1の複数層と前記第2の複数層とに含まれる各層について、各ニューロンデータのサイズであるニューロンデータサイズと、各パラメータのサイズであるパラメータサイズとをそれぞれ計算し、
    前記第4のメモリ領域に保持した前記出力結果に基づき計算した前記出力結果の誤差の勾配を第5のメモリ領域に保持するとともに、計算した前記第2の複数層に含まれる各層のニューロンデータサイズとパラメータサイズと大小関係に基づき、前記第5のメモリ領域に保持した前記出力結果の誤差の勾配又は前記第2の複数層における前層の第6のメモリ領域に保持した誤差の勾配に基づいて計算した前記第2の複数層における次層への誤差の勾配を各第6のメモリ領域に保持した後、前記第2の複数層における次層へのパラメータの誤差の勾配を前記各第3のメモリ領域にそれぞれ保持する前記第2の複数層における第1の学習処理と、計算した前記第1の複数層に含まれる各層のニューロンデータサイズとパラメータサイズとの大小関係に基づき、前記第2の複数層の最終層の第6のメモリ領域又は前記第1の複数層における前層の第7のメモリ領域に保持した誤差の勾配に基づいて計算した次層へのパラメータの誤差の勾配を各第7のメモリ領域に保持した後、前記第1の複数層における次層への誤差の勾配を前記各第2のメモリ領域にそれぞれ保持する前記第1の複数層間における第2の学習処理とを制御する、
    処理をコンピュータに実行させることを特徴とする画像認識プログラム。
  6. 入力した画像のニューロンデータとパラメータとに基づいてそれぞれ算出した畳み込み量を各第1のメモリ領域にそれぞれ保持する処理と、前記各第1のメモリ領域に保持した前記畳み込み量に対して間引き処理をそれぞれ行った間引き後の畳み込み量を各第2のメモリ領域にそれぞれ保持する処理とを第1の複数層において行う第1の認識処理と、前記第2のメモリ領域に保持した前記間引き後の畳み込み量の全てに対して第3のメモリ領域に保持した重みをそれぞれ積算した出力結果を各第4のメモリ領域にそれぞれ保持する処理を第2の複数層において行う第2の認識処理とを制御し、
    前記第1の複数層と前記第2の複数層とに含まれる各層について、各ニューロンデータのサイズであるニューロンデータサイズと、各パラメータのサイズであるパラメータサイズとをそれぞれ計算し、
    前記第4のメモリ領域に保持した前記出力結果に基づき計算した前記出力結果の誤差の勾配を第5のメモリ領域に保持するとともに、計算した前記第2の複数層に含まれる各層のニューロンデータサイズとパラメータサイズと大小関係に基づき、前記第5のメモリ領域に保持した前記出力結果の誤差の勾配又は前記第2の複数層における前層の第6のメモリ領域に保持した誤差の勾配に基づいて計算した前記第2の複数層における次層への誤差の勾配を各第6のメモリ領域に保持した後、前記第2の複数層における次層へのパラメータの誤差の勾配を前記各第3のメモリ領域にそれぞれ保持する前記第2の複数層における第1の学習処理と、計算した前記第1の複数層に含まれる各層のニューロンデータサイズとパラメータサイズとの大小関係に基づき、前記第2の複数層の最終層の第6のメモリ領域又は前記第1の複数層における前層の第7のメモリ領域に保持した誤差の勾配に基づいて計算した次層へのパラメータの誤差の勾配を各第7のメモリ領域に保持した後、前記第1の複数層における次層への誤差の勾配を前記各第2のメモリ領域にそれぞれ保持する前記第1の複数層間における第2の学習処理とを制御する、
    処理をコンピュータが実行することを特徴とする画像認識方法。
  7. 入力したニューロンデータに対して、パラメータによる重み付け演算を含む階層型のニューラルネットワークの演算を行い、当該ニューラルネットワークの各層のニューロンデータとパラメータをそれぞれメモリ領域に保持する認識処理を制御する認識制御部と、
    前記ニューラルネットワークの各層のニューロンデータの使用メモリ量とパラメータの使用メモリ量をそれぞれ計算するメモリ量計算部と、
    前記認識制御部による認識結果の誤差から前記ニューラルネットワークの各層の誤差の勾配を算出してパラメータを学習する学習処理において、ニューロンデータとパラメータがメモリ領域に保持される層については、ニューロンデータとパラメータのうち、使用メモリ量の小さい方の誤差の勾配を算出してメモリ領域に保持したのち、使用メモリ量の大きい方の誤差の勾配を算出して認識処理のデータを保持したメモリ領域に上書きする制御を行う学習制御部と、
    を有することを特徴とする認識装置。
JP2016148965A 2016-07-28 2016-07-28 画像認識装置、画像認識プログラム、画像認識方法および認識装置 Active JP6708044B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016148965A JP6708044B2 (ja) 2016-07-28 2016-07-28 画像認識装置、画像認識プログラム、画像認識方法および認識装置
US15/628,105 US10296804B2 (en) 2016-07-28 2017-06-20 Image recognizing apparatus, computer-readable recording medium, image recognizing method, and recognition apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016148965A JP6708044B2 (ja) 2016-07-28 2016-07-28 画像認識装置、画像認識プログラム、画像認識方法および認識装置

Publications (2)

Publication Number Publication Date
JP2018018350A true JP2018018350A (ja) 2018-02-01
JP6708044B2 JP6708044B2 (ja) 2020-06-10

Family

ID=61009778

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016148965A Active JP6708044B2 (ja) 2016-07-28 2016-07-28 画像認識装置、画像認識プログラム、画像認識方法および認識装置

Country Status (2)

Country Link
US (1) US10296804B2 (ja)
JP (1) JP6708044B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6559382B1 (ja) * 2018-12-21 2019-08-14 三菱電機株式会社 音源方向推定装置、音源方向推定方法、及び音源方向推定プログラム
JP2020052975A (ja) * 2018-09-28 2020-04-02 光吉 俊二 演算処理システムおよび補助装置
JP2020119151A (ja) * 2019-01-22 2020-08-06 株式会社東芝 学習装置、学習方法およびプログラム
US10754920B2 (en) 2018-03-19 2020-08-25 Kabushiki Kaisha Toshiba Arithmetic processing device
US10936912B2 (en) 2018-11-01 2021-03-02 International Business Machines Corporation Image classification using a mask image and neural networks
WO2021100818A1 (ja) * 2019-11-19 2021-05-27 学校法人関西学院 水増しを用いた学習方法及び学習装置
JP2021533493A (ja) * 2019-04-03 2021-12-02 平安科技(深▲せん▼)有限公司Ping An Technology (Shenzhen) Co., Ltd. 指静脈照合方法、装置、コンピュータ機器、及び記憶媒体

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180027887A (ko) * 2016-09-07 2018-03-15 삼성전자주식회사 뉴럴 네트워크에 기초한 인식 장치 및 뉴럴 네트워크의 트레이닝 방법
US10366302B2 (en) * 2016-10-10 2019-07-30 Gyrfalcon Technology Inc. Hierarchical category classification scheme using multiple sets of fully-connected networks with a CNN based integrated circuit as feature extractor
US11102225B2 (en) 2017-04-17 2021-08-24 Splunk Inc. Detecting fraud by correlating user behavior biometrics with other data sources
US11372956B2 (en) * 2017-04-17 2022-06-28 Splunk Inc. Multiple input neural networks for detecting fraud
US11315010B2 (en) 2017-04-17 2022-04-26 Splunk Inc. Neural networks for detecting fraud based on user behavior biometrics
US11461579B2 (en) 2018-02-08 2022-10-04 Western Digital Technologies, Inc. Configurable neural network engine for convolutional filter sizes
US11741346B2 (en) 2018-02-08 2023-08-29 Western Digital Technologies, Inc. Systolic neural network engine with crossover connection optimization
US11620528B2 (en) * 2018-06-12 2023-04-04 Ciena Corporation Pattern detection in time-series data
JPWO2020031948A1 (ja) * 2018-08-06 2021-08-10 国立大学法人 東京大学 レーザ加工システムに用いられる機械学習方法、シミュレーション装置、レーザ加工システム並びにプログラム
US11783176B2 (en) 2019-03-25 2023-10-10 Western Digital Technologies, Inc. Enhanced storage device memory architecture for machine learning
US11861452B1 (en) * 2019-06-17 2024-01-02 Cadence Design Systems, Inc. Quantized softmax layer for neural networks

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008310524A (ja) * 2007-06-13 2008-12-25 Canon Inc 演算処理装置及びその制御方法
US20150347820A1 (en) * 2014-05-27 2015-12-03 Beijing Kuangshi Technology Co., Ltd. Learning Deep Face Representation

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6236296B2 (ja) * 2013-11-14 2017-11-22 株式会社デンソーアイティーラボラトリ 学習装置、学習プログラム、及び学習方法
GB2532075A (en) * 2014-11-10 2016-05-11 Lego As System and method for toy recognition and detection based on convolutional neural networks
CN107251059A (zh) * 2015-03-24 2017-10-13 赫尔实验室有限公司 用于深度学习的稀疏推理模块
US10410096B2 (en) * 2015-07-09 2019-09-10 Qualcomm Incorporated Context-based priors for object detection in images
US9805305B2 (en) * 2015-08-07 2017-10-31 Yahoo Holdings, Inc. Boosted deep convolutional neural networks (CNNs)
US10474627B2 (en) * 2015-10-08 2019-11-12 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural memory and array of neural processing units that collectively shift row of data received from neural memory
US10497089B2 (en) * 2016-01-29 2019-12-03 Fotonation Limited Convolutional neural network
AU2016203619A1 (en) * 2016-05-31 2017-12-14 Canon Kabushiki Kaisha Layer-based operations scheduling to optimise memory for CNN applications
US10303977B2 (en) * 2016-06-28 2019-05-28 Conduent Business Services, Llc System and method for expanding and training convolutional neural networks for large size input images
US10089577B2 (en) * 2016-08-05 2018-10-02 Xilinx, Inc. Binary neural networks on progammable integrated circuits

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008310524A (ja) * 2007-06-13 2008-12-25 Canon Inc 演算処理装置及びその制御方法
US20150347820A1 (en) * 2014-05-27 2015-12-03 Beijing Kuangshi Technology Co., Ltd. Learning Deep Face Representation

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KOICHI SHIRAHATA ET AL.: "MEMORY REDUCATION METHOD FOR DEEP NEURAL NETWORK TRAINING", 2016 IEEE 26TH INERNATIONAL WORKSHOP ON MACHINE LEARNING FOR SIGNAL PROCESSING (MLSP), JPN6020014303, 13 September 2016 (2016-09-13), US, ISSN: 0004254685 *
MU LI ET AL.: "Scaling Distributed Machine Learning with the Parameter Server", PROCEEDINGS OF THE 11TH USENIX SYMPOSIUM ON OPERATING SYSTEMS DESIGN AND IMPLEMENTATION, JPN6019015633, 8 October 2014 (2014-10-08), US, pages 583 - 598, XP061024674, ISSN: 0004254684, DOI: 10.1145/2640087.2644155 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10754920B2 (en) 2018-03-19 2020-08-25 Kabushiki Kaisha Toshiba Arithmetic processing device
JP2020052975A (ja) * 2018-09-28 2020-04-02 光吉 俊二 演算処理システムおよび補助装置
JP7087252B2 (ja) 2018-09-28 2022-06-21 俊二 光吉 演算処理システムおよび補助装置
US11586851B2 (en) 2018-11-01 2023-02-21 International Business Machines Corporation Image classification using a mask image and neural networks
US10936912B2 (en) 2018-11-01 2021-03-02 International Business Machines Corporation Image classification using a mask image and neural networks
JP6559382B1 (ja) * 2018-12-21 2019-08-14 三菱電機株式会社 音源方向推定装置、音源方向推定方法、及び音源方向推定プログラム
WO2020129231A1 (ja) * 2018-12-21 2020-06-25 三菱電機株式会社 音源方向推定装置、音源方向推定方法、及び音源方向推定プログラム
JP7021132B2 (ja) 2019-01-22 2022-02-16 株式会社東芝 学習装置、学習方法およびプログラム
JP2020119151A (ja) * 2019-01-22 2020-08-06 株式会社東芝 学習装置、学習方法およびプログラム
JP2021533493A (ja) * 2019-04-03 2021-12-02 平安科技(深▲せん▼)有限公司Ping An Technology (Shenzhen) Co., Ltd. 指静脈照合方法、装置、コンピュータ機器、及び記憶媒体
JP7141518B2 (ja) 2019-04-03 2022-09-22 平安科技(深▲せん▼)有限公司 指静脈照合方法、装置、コンピュータ機器、及び記憶媒体
US11893773B2 (en) 2019-04-03 2024-02-06 Ping An Technology (Shenzhen) Co., Ltd. Finger vein comparison method, computer equipment, and storage medium
JPWO2021100818A1 (ja) * 2019-11-19 2021-05-27
WO2021100818A1 (ja) * 2019-11-19 2021-05-27 学校法人関西学院 水増しを用いた学習方法及び学習装置
JP7160416B2 (ja) 2019-11-19 2022-10-25 学校法人関西学院 水増しを用いた学習方法及び学習装置

Also Published As

Publication number Publication date
JP6708044B2 (ja) 2020-06-10
US10296804B2 (en) 2019-05-21
US20180032835A1 (en) 2018-02-01

Similar Documents

Publication Publication Date Title
JP6708044B2 (ja) 画像認識装置、画像認識プログラム、画像認識方法および認識装置
JP6852365B2 (ja) 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法
Yeom et al. Pruning by explaining: A novel criterion for deep neural network pruning
Rere et al. Simulated annealing algorithm for deep learning
US20230102087A1 (en) Method and apparatus with neural network
Yu et al. Mixed pooling for convolutional neural networks
JP6891626B2 (ja) 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法
CN109754078A (zh) 用于优化神经网络的方法
US11443514B2 (en) Recognizing minutes-long activities in videos
US20150317557A1 (en) Temporal spike encoding for temporal learning
Gaspar et al. An optimized Kernel Extreme Learning Machine for the classification of the autism spectrum disorder by using gaze tracking images
Lawrence et al. Comparing TensorFlow deep learning performance using CPUs, GPUs, local PCs and cloud
CN110766127A (zh) 神经网络计算专用电路及其相关计算平台与实现方法
Zheng et al. Hardware-friendly actor-critic reinforcement learning through modulation of spike-timing-dependent plasticity
Gavrilov et al. Convolutional neural networks: Estimating relations in the ising model on overfitting
Haque et al. Image-based identification of maydis leaf blight disease of maize (Zea mays) using deep learning
Gao et al. Deep learning for sequence pattern recognition
San Kong et al. A systematic evaluation of domain adaptation in facial expression recognition
Deshpande et al. Detection of plant leaf disease by generative adversarial and deep convolutional neural network
Kajkamhaeng et al. SE-SqueezeNet: SqueezeNet extension with squeeze-and-excitation block
Kulkarni et al. Learning and real-time classification of hand-written digits with spiking neural networks
CN113490955A (zh) 用于产生金字塔层的架构的系统和方法
JP7211069B2 (ja) 情報処理装置、情報処理プログラムおよび情報処理方法
Palit et al. Biomedical image segmentation using fully convolutional networks on TrueNorth
CN116992937A (zh) 神经网络模型的修复方法和相关设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190409

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200319

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200504

R150 Certificate of patent or registration of utility model

Ref document number: 6708044

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150