[go: up one dir, main page]

JP6852365B2 - 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法 - Google Patents

情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法 Download PDF

Info

Publication number
JP6852365B2
JP6852365B2 JP2016229386A JP2016229386A JP6852365B2 JP 6852365 B2 JP6852365 B2 JP 6852365B2 JP 2016229386 A JP2016229386 A JP 2016229386A JP 2016229386 A JP2016229386 A JP 2016229386A JP 6852365 B2 JP6852365 B2 JP 6852365B2
Authority
JP
Japan
Prior art keywords
layer
error
memory
data
neural network
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
JP2016229386A
Other languages
English (en)
Other versions
JP2018085063A (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.)
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 JP2016229386A priority Critical patent/JP6852365B2/ja
Priority to US15/722,270 priority patent/US11003990B2/en
Publication of JP2018085063A publication Critical patent/JP2018085063A/ja
Application granted granted Critical
Publication of JP6852365B2 publication Critical patent/JP6852365B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/09Supervised learning
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

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

Description

本発明は、情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法
に関する。
近年、多層構造のニューラルネットワークを用いた機械学習が注目されている。このような多層構造のニューラルネットワークを用いた機械学習は、ディープラーニング(深層学習)とも呼ばれる。ディープラーニングは、ニューラルネットワークの多階層化が進んでおり、多くの分野で有効性が確認されている。例えば、ディープラーニングは、画像・音声の認識において人間に匹敵するほど高い認識精度を発揮している。
特開2008−310700号公報
ディープラーニングでは、教師あり学習を行うことにより、ニューラルネットワークに自動的に特徴を学習する。しかしながら、ディープラーニングは、ニューラルネットワークの多階層化により、使用メモリ量が大きくなっており、学習時に使用メモリ量がさらに増加する。例えば、教師あり学習で一般的に使用される誤差逆伝播法では、学習用のデータをニューラルネットワークに順伝播させて認識を行い、認識結果と正解と比較して誤差を求める。そして、誤差逆伝播法では、認識結果と正解との誤差を認識時と逆方向にニューラルネットワークに伝播させ、ニューラルネットワークの各階層のパラメータを変更する。このため、学習時には、使用メモリ量が増加する。例えば、学習には、誤差の勾配を保存するため、認識のみの場合の2倍超にデータ量が増加し、使用メモリ量が2倍超に増加する場合もある。
一つの側面では、学習時におけるメモリ使用を効率化できる情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法を提供することを目的とする。
一つの態様では、情報処理装置は、認識制御部と、学習制御部とを有する。認識制御部は、入力したニューロンデータに対して、パラメータによる重み付け演算を含む階層型のニューラルネットワークの演算を行い、当該ニューラルネットワークの各層のニューロンデータおよびパラメータをそれぞれメモリ領域に保持する認識処理を制御する。学習制御部は、認識結果の誤差からニューラルネットワークの各層のパラメータを学習する学習処理において、ニューロンデータおよびパラメータがメモリ領域に保持される層については、パラメータの誤差を算出したのち、ニューロンデータの誤差を算出する制御を行う。
本発明の一の実施態様によれば、学習時におけるメモリ使用を効率化できるという効果を奏する。
図1は、ディープラーニングの処理の流れの一例を模式的に示した図である。 図2Aは、畳み込み演算の一例を模式的に示した図である。 図2Bは、ReLUの一例を模式的に示した図である。 図2Cは、間引きの一例を模式的に示した図である。 図2Dは、全結合の一例を模式的に示した図である。 図3は、従来のニューラルネットワークの計算の流れの一例を示す図である。 図4は、LeNetの処理の流れの一例を模式的に示した図である。 図5は、従来の使用メモリ量の一例を示す図である。 図6は、情報処理装置の機能的な構成を概略的に示した図である。 図7は、実施例1に係るニューラルネットワークの計算の流れの一例を示す図である。 図8は、実施例1に係る認識処理の手順の一例を示すフローチャートである。 図9は、実施例2に係るニューラルネットワークの計算の流れの一例を示す図である。 図10は、実施例2に係る認識処理の手順の一例を示すフローチャートである。 図11は、従来のモーメンタム法を用いたニューラルネットワークの計算の流れの一例を示す図である。 図12は、従来の使用メモリ量の一例を示す図である。 図13は、実施例1を適用したモーメンタム法を用いたニューラルネットワークの計算の流れの一例を示す図である。 図14は、実施例2を適用したモーメンタム法を用いたニューラルネットワークの計算の流れの一例を示す図である。 図15は、実施例2を適用したモーメンタム法を用いたニューラルネットワークによる使用メモリ量の一例を示す図である。 図16は、ニューラルネットワークの計算の流れの一例を示す図である。 図17は、情報処理プログラムを実行するコンピュータの構成の一例を示す図である。
以下に、本発明にかかる情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法の実施例を図面に基づいて詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下に示す実施例は、矛盾を起こさない範囲で適宜組み合わせてもよい。
[従来のディープラーニングの説明]
最初、従来のディープラーニングについて説明する。図1は、ディープラーニングの処理の流れの一例を模式的に示した図である。ディープラーニングでは、識別対象に関する教師あり学習を行うことにより、ニューラルネットワークに自動的に識別対象の特徴を学習する。ディープラーニングでは、特徴を学習したニューラルネットワークを用いて識別対象を識別する。例えば、ディープラーニングでは、識別対象が写った大量の画像を学習用の画像として教師あり学習を行うことにより、画像に写った識別対象の特徴をニューラルネットワークに自動的に学習する。ディープラーニングでは、このように特徴を学習したニューラルネットワークを用いることで画像に写った識別対象を識別できる。脳には、多数のニューロン(神経細胞)が存在する。各ニューロンは、他のニューロンから信号を受け取り、他のニューロンへ信号を受け渡す。脳は、この信号の流れによって、様々な情報処理を行う。ニューラルネットワークは、このような脳の機能の特性を計算機上で実現したモデルである。ニューラルネットワークは、脳のニューロンを模したユニットを階層的に結合している。ユニットは、ノードとも呼ばれる。各ユニットは、他のユニットからデータを受け取り、他のユニットへデータを受け渡す。ニューラルネットワークは、ユニットのパラメータを学習によって変化させて受け渡すデータを変化させることで様々な識別対象を識別(認識)できる。以下では、ニューラルネットワークを伝送されるデータをニューロンデータと呼ぶ。図1には、ニューラルネットワークの一例として、画像の認識に用いられる畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)の一例が示されている。以下では、ニューラルネットワークとして、畳み込みニューラルネットワークにより画像の認識を行う場合を例に説明する。ニューラルネットワークは、階層構造とされており、畳み込み(convolution)層とプーリング(sub-sampling)層と全結合(fully-connected)層とを有する。図1の例では、畳み込み層とプーリング層を交互に2回設けているが、さらに多く設けてもよい。また、全結合層は、複数設けられていてもよい。ニューラルネットワークの階層構造や各層の構成は、識別する対象などに応じて、設計者が予め定めている。
ニューラルネットワークでは、画像の識別を行う場合、図1に示すように、左から右へ畳み込み層とプーリング層とを交互に複数回繰り返すことで画像に写った識別対象の特徴を抽出し、最後に全結合層で画像に写った識別対象の識別(カテゴライズ)を行う。一方、ニューラルネットワークでは、画像の学習を行う場合、識別した結果と正解との誤差を求め、図1に示すように、右から左へニューラルネットワークに逆伝播させ、畳み込みニューラルネットワークの各階層のパラメータを変更する。
次に、各層の演算について説明する。畳み込み層では、入力したニューロンデータの畳み込み演算を行う。図2Aは、畳み込み演算の一例を模式的に示した図である。図2Aの例では、入力したN×Npixelの画像の畳み込み演算をする場合を示している。畳み込み層では、N×Npixelの画像の各画素の値をそれぞれニューロンデータとして、それぞれパラメータが設定されたm×mのサイズのフィルタと畳み込み(convolution)を計算することで、次層への出力用のニューロンデータを作成する。また、畳み込み層では、非線形活性化関数σに出力用のニューロンデータを通過させることで、発火(activation)をモデル化する。発火とは、ニューロンから出力される信号の値がある値を超えるときに出力される信号が他のニューロンに伝達される現象をいう。
例えば、畳み込み層では、以下の式(1)に示す畳み込み演算を行い、演算結果に対して、以下の式(2)に示す非線形活性化関数σの演算を行う。
Figure 0006852365
ここで、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 0006852365
ここで、関数maxは、図2Cに示す(i,j)の画素からそれぞれk画素の範囲の領域内で最大値のニューロンデータを出力する関数である。y iJは、ユニットUiの出力となるニューロンデータである。
全結合層では、識別を行う対象数に応じて、入力したニューロンデータを全結合した全結合の演算を行う。例えば、N×Npixelの画像がニューロンデータとして入力される。全結合層は、N×Npixelのニューロンデータ全てを、それぞれ重み(パラメータ)と掛け合わせることで、次層への出力用のニューロンデータを作成する。また、全結合層は、非線形活性化関数σに出力用のニューロンデータを通過させる演算を行うことで、発火をモデル化する。
図2Dは、全結合の一例を模式的に示した図である。図2Dの例は、識別を行う対象数をi個とした場合にj個のニューロンデータをそれぞれ全結合してi個のニューロンデータを得る場合の一例を示している。例えば、全結合層では、以下の式(4)に示す全結合の演算を行い、演算結果に対して以下の式(5)の演算を行う。
Figure 0006852365
ここで、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 0006852365
これにより、ニューラルネットワークによる演算結果のn個のニューロンデータxは、それぞれの認識対象iである確率σ(x)の確率分布に変換される。識別層は、確率分布が最も大きいニューロンデータに対応する画像の種類を識別結果とする。また、学習を行う場合、識別層は、認識結果と正解と比較して誤差を求める。例えば、識別層は、交差エントロピー誤差関数を利用して目的の確率分布(正解)との誤差を求める。例えば、識別層は、以下の式(7)に示す誤差関数の演算を行う。
Figure 0006852365
ここで、tは、目的の分布であり、認識対象iが正解である場合、1とし、その他の場合0とする。yは、ニューラルネットワークによる演算された認識対象iの確率σ(x)である。
ディープラーニングでは、教師あり学習を行うことにより、ニューラルネットワークに自動的に特徴を学習する。例えば、教師あり学習で一般的に使用される誤差逆伝播法では、学習用のデータをニューラルネットワークに順伝播させて認識を行い、認識結果と正解と比較して誤差を求める。そして、誤差逆伝播法では、認識結果と正解との誤差を認識時と逆方向にニューラルネットワークに伝播させ、ニューラルネットワークの各階層のパラメータを変更して最適解に近づけていく。
次に、誤差の計算の一例を説明する。例えば、誤差逆伝播法では、認識時とニューロンデータの誤差として、以下の式(8)に示す誤差関数の偏微分の演算を行う。
Figure 0006852365
誤差逆伝播法では、出力層Lにおけるパラメータの誤差の勾配を以下の式(9)から計算する。なお、Softmax関数の演算を行う識別層では、式(8)の結果が式(9)の誤差の勾配となる。
Figure 0006852365
また、誤差逆伝播法では、出力層Lでの誤差から入力への誤差の勾配を部分微分を用いて計算する。例えば、ReLUなどの活性化関数の演算を行う層では、以下の式(10−1)から入力の誤差の勾配を計算する。σ’(x)は、以下の式(10−2)から求める。xは、認識時で使用した値を用いる。σ’(x)を、式(10−1)に代入すると誤差の勾配(∂E/∂x )が求まる。活性化関数がない場合は式(10−1)、(10−2)の演算をスキップする。
Figure 0006852365
また、誤差逆伝播法では、演算にパラメータ(重み)を有する層についてはパラメータの誤差の勾配を計算する。例えば、式(4)に示す全結合の演算では、以下の式(11−1)からパラメータの誤差の勾配を計算する。また、式(1)に示す畳み込み演算では、以下の式(11−2)からパラメータの誤差の勾配を計算する。なお、偏微分の連鎖律を用いて計算すると得られるy は、認識時に使用した値を用いる。
Figure 0006852365
また、誤差逆伝播法では、前の層(L−1層)への誤差の勾配を算出する。例えば、前の層が全結合の演算を行う層である場合は、以下の式(12−1)から前の層への誤差の勾配を算出する。また、前の層が畳み込み演算を行う層である場合は、以下の式(12−2)から前の層への誤差の勾配を算出する。なお、偏微分の連鎖律を用いて計算すると得られるw ijは、認識時に使用した値を用いる。また、前の層がMax-Poolingを行う層である場合は、認識時にk×kの領域の最大値を取った場所に対して誤差の勾配(∂E/∂x )を加算する。なお、k×kの領域のその他の場所に対しては、何も行わない。
Figure 0006852365
誤差の計算では、ニューラルネットワークに逆伝播させ、ニューラルネットワークの最上位の層に到達するまで各層の誤差の勾配の計算を繰り返す。例えば、L層での誤差から入力への誤差の勾配を式(10−1)を用いて計算する。例えば、式(10−1)に示す入力の誤差は、下層が識別層の場合、式(9)の誤差の勾配を代入して求める。また、式(10−1)に示す入力の誤差は、下層が識別層以外の場合、式(12−1)、(12−2)から算出される誤差の勾配を代入して求める。また、例えば、式(11−1)に示すパラメータの誤差の勾配は、式(10−1)から算出される誤差を代入して求める。また、例えば、式(12−1)に示す前の層への誤差は、式(10−1)から算出される誤差を代入して求める。そして、誤差の計算では、誤差に応じて全層のパラメータを更新する。
ここで、従来のニューラルネットワークの計算の流れの一例を説明する。図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の全結合層では、「9」に示すように、識別層の誤差の勾配(gdata)と、第2の全結合層のパラメータ(param)とからニューロンデータの誤差の勾配(gdata)が算出されている。また、各層のパラメータの誤差の勾配(gparam)は、前の層の誤差の勾配(gdata)と、認識時のニューロンデータ(data)とから算出される。例えば、第2の全結合層では、「10」に示すように、識別層の誤差の勾配(gdata)と、第2の全結合層のニューロンデータ(data)とからパラメータの誤差の勾配(gparam)が算出されている。このように、ニューラルネットワークの学習では、認識時のパラメータおよびニューロンデータを使用する。このため、従来のディープラーニングでは、学習を行う場合、学習用の入力データを認識した際のニューロンデータ(data)とパラメータ(param)とを記憶する。また、従来のディープラーニングでは、学習を行う場合、ニューロンデータの誤差の勾配(gdata)とパラメータの誤差の勾配(gparam)も記憶する。このように、学習時には、使用メモリ量が増加する。
ディープラーニングでは、大量の画像を学習用の入力データとして学習を行う場合、全ての入力データを一度にまとめて反復学習処理させる方法がある。しかし、学習用の入力データは、データ数が非常に多い場合がある。例えば、学習用の入力データは、データ数が数万〜数百万件となる場合がある。ディープラーニングでは、入力データを一度にまとめて反復学習処理させた場合、全ての処理が完了して復帰するまでの時間が長くなる。また、ディープラーニングでは、入力データの1件ごとにニューラルネットワークの各層の演算結果が保持されるため、使用メモリ量が多くなる。そこで、入力データを所定の件数ごとに分けて、学習のバッチ処理を繰り返すミニバッチ法がある。ミニバッチ法では、例えば、入力データをM件ごとに分けて、確率的なバッチ反復を行う。この場合、例えば、以下の式(13)を用いてパラメータを更新する。
Figure 0006852365
ここで、Wは、更新前のパラメータの値である。Wt+1は、更新後のパラメータの値である。ηは、演算された誤差を更新前のパラメータに反映させる割合を示す学習率である。
ここで、従来の使用メモリ量の一例を説明する。例えば、LeCunらによるLeNetの構成のニューラルネットワークを用いた場合の使用メモリ量を説明する。図4は、LeNetの処理の流れの一例を模式的に示した図である。図4の例では、28×28pixelの画像がニューロンデータとして入力(Input)される。第1の畳み込み層(Convolution1)では、28×28pixelのニューロンデータに対して、5×5のサイズの20個のフィルタによりそれぞれ畳み込み演算を行って、24×24pixelの20個のニューロンデータを算出する。次に、第1のプーリング層(Pooling1)では、24×24pixelの20個のニューロンデータに対して、2×2の領域ごとに最大値を取り出すMax-Poolingを行い、12×12pixelの20個のニューロンデータを算出する。次に、第2の畳み込み層(Convolution2)では、12×12pixelの20個のニューロンデータに対して、5×5のサイズの50個のフィルタによりそれぞれ畳み込み演算を行って、8×8pixelの50個のニューロンデータを算出する。次に、第2のプーリング層(Pooling2)では、8×8pixelの50個のニューロンデータに対して、2×2の領域ごとに最大値を取り出すMax-Poolingを行い、4×4pixelの50個のニューロンデータを算出する。次に、第1の全結合層(Fully-Connected1)では、ニューラルネットワークでは、4×4pixelの50個のニューロンデータに対して、500個のユニットにそれぞれ全結合し、それぞれのユニットでReLUの演算を行って500個のニューロンデータを算出する。次に、第2の全結合層(Fully-Connected2)では、ニューラルネットワークでは、500個のニューロンデータに対して、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)Expressなどのバス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にニューラルネットワークの認識処理、学習処理を実行させる。
メモリ量計算部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は、ニューロンデータとパラメータがメモリ領域に保持される層については、パラメータの誤差を算出したのち、ニューロンデータの誤差を算出する。例えば、学習制御部71は、ニューロンデータおよびパラメータがメモリ領域に保持される層については、最初に、パラメータの誤差を算出する。学習制御部71は、算出したパラメータの誤差をメモリ60の新たなメモリ領域に保持する制御を行う。次に、学習制御部71は、ニューロンデータの誤差を算出する。学習制御部71は、算出したニューロンデータの誤差をメモリ60の認識処理のニューロンデータを保持するメモリ領域に上書して保持する制御を行う。
ここで、本実施例のニューラルネットワークの計算の流れの一例を説明する。図7は、実施例1に係るニューラルネットワークの計算の流れの一例を示す図である。図7は、図3と同様のニューラルネットワークの処理を本実施例の情報処理装置10により実施した場合の計算の流れを示している。ニューラルネットワークは、各層が順に並んだ階層構造とされている。ニューラルネットワークは、第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)する。例えば、第1の畳み込み層(Conv1)、第2の畳み込み層(Conv2)では、ニューロンデータとパラメータとに基づいてそれぞれ算出した畳み込み量をメモリ60にそれぞれ保持する処理を実行する。また、第1のプーリング層(Pool1)、第2のプーリング層(Pool2)では、メモリ60に保持された前の層の畳み込み量に対して間引き処理をそれぞれ行った間引き後の畳み込み量をメモリ60のメモリ領域にそれぞれ保持する処理を実行する。また、第1の全結合層(Fully-conn1)、第2の全結合層(Fully-conn2)では、メモリ60に保持された前の層の畳み込み量の全てに対して、メモリ60に保持した各層の重みをそれぞれ積算した出力結果をメモリ60にそれぞれ保持する処理を実行する。また、識別層(Softmax)では、メモリ60に保持された前の層の出力結果を正規化し、正規化した出力結果でメモリ60に保持する処理を実行する。
ニューラルネットワークの学習を行う場合、次に、学習制御部71が、認識処理の識別結果の誤差からパラメータを更新する学習処理を実行する。例えば、認識制御部70は、図3に示した従来のニューラルネットワークの計算と同様に、数字の「8」に示すように識別結果と正解と比較して誤差を求める。そして、認識制御部70は、数字の「9」〜「17」の順に各層の誤差の勾配を算出する。そして、認識制御部70は、数字の「18」に示すように各階層のパラメータを変更する。なお、各階層のパラメータの変更は、各層ごとに、誤差の勾配が算出された後のタイミングで行ってもよい。また、第1の畳み込み層(Conv1)は、入力側の最上位の層であり、パラメータの学習のために隣りの層へニューロンデータの誤差の勾配を伝達する必要がない。このため、第1の畳み込み層(Conv1)では、ニューロンデータの誤差の勾配を算出する処理を省略してもよい。図7の例では、第1の畳み込み層(Conv1)のニューロンデータの誤差の勾配を算出する処理を省略している。
例えば、学習制御部71は、メモリ60に保持した識別層(Softmax)の出力結果に基づき計算した出力結果の誤差の勾配を、メモリ60の識別層(Softmax)の出力結果を保持したメモリ領域に上書きして保持する。これにより、従来と比較して、識別層(Softmax)の誤差の勾配を記憶するメモリ領域を削減できる。
また、学習制御部71は、ニューロンデータとパラメータがメモリ領域に保持される層については、パラメータの誤差を算出し、算出したパラメータの誤差をメモリ60の新たなメモリ領域に保持する制御を行う。次に、学習制御部71は、ニューロンデータの誤差を算出する。学習制御部71は、算出したニューロンデータの誤差をメモリ60の認識処理のニューロンデータを保持するメモリ領域に上書して保持する制御を行う。図7の例では、第1の畳み込み層(Conv1)、第2の畳み込み層(Conv2)、第1の全結合層(Fully-conn1)、第2の全結合層(Fully-conn2)は、ニューロンデータとパラメータをメモリ領域に保持している。これらの層について、学習制御部71は、パラメータの誤差を算出してメモリ60の新たなメモリ領域に保持する。その後、学習制御部71は、ニューロンデータの誤差を算出してメモリ60の認識処理のニューロンデータを保持するメモリ領域に当該ニューロンデータの誤差を上書して保持する制御を行う。例えば、学習制御部71は、第2の全結合層(Fully-conn2)の場合、数字の「9」に示すように、識別層の誤差の勾配(gdata)と、第2の全結合層のニューロンデータ(data)とからパラメータの誤差を算出する。学習制御部71は、算出したパラメータの誤差をメモリ60の新たなメモリ領域に保持する制御を行う。次に、学習制御部71は、数字の「10」に示すように、識別層の誤差の勾配(gdata)と、第2の全結合層のパラメータ(param)とからニューロンデータの誤差を算出する。学習制御部71は、算出したニューロンデータの誤差をメモリ60の認識処理のニューロンデータを保持するメモリ領域に上書して保持する制御を行う。これにより、図3に示した従来のニューラルネットワークの計算と比較して、第2の畳み込み層(Conv2)、第1の全結合層(Fully-conn1)および第2の全結合層(Fully-conn2)では、ニューロンデータの誤差の勾配を記憶するメモリ領域を削減できる。
また、学習制御部71は、パラメータが無く、ニューロンデータがメモリ領域に保持される層については、ニューロンデータの誤差の勾配を算出する。そして、学習制御部71は、メモリ60に保持された認識処理のニューロンデータのメモリ領域に、算出したニューロンデータの誤差の勾配を上書きする制御を行う。図7の例では、第1のプーリング層(Pool1)および第2のプーリング層(Pool2)は、ニューロンデータをメモリ領域に保持している。学習制御部71は、第1のプーリング層(Pool1)および第2のプーリング層(Pool2)については、ニューロンデータの誤差の勾配を算出する。そして、学習制御部71は、数字の「13」、「16」に示すように、メモリ60に保持された認識処理のニューロンデータのメモリ領域に、ニューロンデータの誤差の勾配を上書きする。これにより、図3に示した従来のニューラルネットワークの計算と比較して、第1のプーリング層(Pool1)および第2のプーリング層(Pool2)では、ニューロンデータの誤差の勾配を記憶するメモリ領域を削減できる。
アクセラレータボード22は、一般的に、搭載されるメモリ60の記憶容量が小さい。アクセラレータボード22の一例として、NVIDIA社のGeForce GTX TITAN Xは、搭載されるメモリの記憶容量が12GBである。
ディープラーニングは、ニューラルネットワークの多階層化により、使用メモリ量が大きくなっており、学習時に使用メモリ量がさらに増加する。このため、ディープラーニングでは、ニューラルネットワークの計算の処理をアクセラレータボードで行う場合、アクセラレータボードのローカルメモリの記憶容量によって処理が制限される場合がある。例えば、ディープラーニングでは、1件の処理での使用メモリ量が多いほど、アクセラレータボードが一度のバッチで処理可能な件数が減少するため、入力データの学習にかかる時間が増加する。
そこで、アクセラレータボード22からマザーボード21にデータを退避しながら学習処理を実行することが考えられる。例えば、アクセラレータボード22からマザーボード21へ処理済みのデータを退避し、マザーボード21からアクセラレータボード22へ次の処理のデータを転送しつつ学習処理を実行することが考えられる。しかし、アクセラレータボード22とマザーボード21間のデータの転送に時間がかかり、入力データの学習にかかる時間が増加する。
一方、本実施例の学習処理は、学習時におけるメモリ使用を効率化できる。これにより、例えば、アクセラレータボード22で一度に実行可能なバッチサイズMが増加する。これにより、本実施例で説明した学習時における使用メモリ量の削減を適用した場合、入力データの学習にかかる時間を短縮できる。
[処理の流れ]
次に、実施例1に係る情報処理装置10が実行する認識処理の流れについて説明する。図8は、実施例1に係る認識処理の手順の一例を示すフローチャートである。この認識処理は、所定のタイミング、例えば、管理者から処理開始が指示されたタイミングで実行される。
図8に示すように、全体制御部50は、定義情報41、パラメータ情報42を読み出す(S10)。全体制御部50は、定義情報41、パラメータ情報42に基づいてニューラルネットワークの構成を特定する(S11)。メモリ量計算部51は、定義情報41に基づいて、認識および学習の際にニューラルネットワークの各層で、ニューロンデータおよびパラメータの誤差の記憶に使用される使用メモリ量のデータサイズを算出する(S12)。
全体制御部50は、アクセラレータボード22を制御して、算出されたデータサイズの記憶領域をメモリ60に確保する(S13)。
全体制御部50は、記憶部20から入力データ40を所定の件数ごとに分けて読み出す。そして、全体制御部50は、読み出したデータや認識処理、学習処理に関する情報をアクセラレータボード22にオフロードし、ニューラルネットワークの学習を開始する(S14)。
認識制御部70は、パラメータiを1に初期化する(S15)。認識制御部70は、マザーボード21からオフロードされたデータから未処理の1件分のデータを読み出す。そして、認識制御部70は、読み出したデータをニューロンデータとし、ニューロンデータに対して、ニューラルネットワークの順にi層目の演算を行い、演算結果をメモリ60に保持する(S16)。認識制御部70は、パラメータiの値を1加算する(S17)。
認識制御部70は、パラメータiの値がニューラルネットワークの層数n以下か否かを判定する(S18)。パラメータiの値がニューラルネットワークの層数n以下の場合(S18肯定)、上述したS16の処理へ移行する。
一方、パラメータiの値がニューラルネットワークの層数n以下では無い場合(S18否定)、学習制御部71は、ニューラルネットワークの最終層の識別結果と正解との誤差を算出する(S19)。
学習制御部71は、ニューラルネットワークのi層目の計算にパラメータが使用されているか判定する(S20)。例えば、図7の例では、第1の畳み込み層(Conv1)、第2の畳み込み層(Conv2)、第1の全結合層(Fully-conn1)、第2の全結合層(Fully-conn2)は、ニューロンデータとパラメータをメモリ領域に保持している。
ニューラルネットワークのi層目の計算にパラメータが使用されている場合(S20肯定)、学習制御部71は、パラメータの誤差の勾配を計算してメモリ60に保持する(S21)。そして、学習制御部71は、ニューロンデータの誤差の勾配を計算し、ニューラルネットワークのi層目のニューロンデータを記憶したメモリ60の記憶領域に上書き保存する(S22)。
一方、ニューラルネットワークのi層目の計算にパラメータが使用されていない場合(S20否定)、学習制御部71は、ニューロンデータの誤差の勾配を計算してメモリ60に保持する(S23)。
学習制御部71は、パラメータiの値から1減算する(S24)。認識制御部70は、パラメータiの値が1以上であるか否かを判定する(S25)。パラメータiの値が1以上である場合(S25肯定)、上述したS20の処理へ移行する。
一方、パラメータiの値が1以上では無い場合(S25否定)、学習制御部71は、ニューラルネットワークの全層について、各層ごとに、パラメータの誤差の勾配に基づいて、パラメータを更新する(S26)。
学習制御部71は、オフロードされたデータ全件の処理が完了したか否かを判定する(S27)。オフロードされたデータ全件の処理が完了していない場合(S27否定)、上述したS15の処理へ移行する。
一方、オフロードされたデータ全件の処理が完了した場合(S27肯定)、全体制御部50は、処理結果をスナップショット情報43およびパラメータ情報42に保存する(S28)。
全体制御部50は、入力データ40全件の学習が完了したか否かを判定する(S29)。入力データ40全件の処理が完了していない場合(S29否定)、上述したS14の処理へ移行する。
一方、入力データ40全件の処理が完了した場合(S29肯定)、処理を終了する。
[効果]
上述してきたように、本実施例に係る情報処理装置10は、入力したニューロンデータに対して、認識処理を制御する。例えば、情報処理装置10は、パラメータによる重み付け演算を含む階層型のニューラルネットワークの演算を行い、当該ニューラルネットワークの各層のニューロンデータおよびパラメータをそれぞれメモリ領域に保持する制御を行う。また、情報処理装置10は、認識結果の誤差からニューラルネットワークの各層のパラメータを学習する学習処理を制御する。例えば、情報処理装置10は、学習処理において、ニューロンデータおよびパラメータがメモリ領域に保持される層については、パラメータの誤差を算出したのち、ニューロンデータの誤差を算出する制御を行う。これにより、情報処理装置10は、認識時のニューロンデータ記憶領域を上書しつつ処理できるため、メモリ使用を効率化できる。
また、本実施例に係る情報処理装置10は、ニューロンデータおよびパラメータがメモリ領域に保持される層については、パラメータの誤差を算出して新たなメモリ領域に保持する。次に、情報処理装置10は、ニューロンデータおよびパラメータがメモリ領域に保持される層については、ニューロンデータの誤差を算出して認識処理のニューロンデータを保持するメモリ領域に当該ニューロンデータの誤差を上書して保持する制御を行う。これにより、情報処理装置10は、学習時における使用メモリ量を削減できる。
また、本実施例に係る情報処理装置10は、ニューロンデータおよびパラメータがメモリ領域に保持される層については、認識処理にて保持した当該層のニューロンデータおよび当該層の前層のニューロンデータからパラメータの誤差を算出する。また、情報処理装置10は、ニューロンデータおよびパラメータがメモリ領域に保持される層については、当該層のパラメータおよび当該層の前層のニューロンデータからニューロンデータの誤差を算出する。これにより、情報処理装置10は、ニューロンデータおよびパラメータがメモリ領域に保持される層のパラメータの誤差およびニューロンデータの誤差を算出できる。
次に、実施例2について説明する。実施例2に係る情報処理装置10の構成は、図6に示した実施例1に係る情報処理装置10の構成と略同様であるため、主に異なる部分について説明する。
メモリ量計算部51は、定義情報41に基づいて、ニューラルネットワークの各層で、ニューロンデータ、パラメータ、ニューロンデータの誤差およびパラメータの誤差の記憶に使用される使用メモリ量を算出する。
学習制御部71は、メモリ量計算部51により算出された各層のパラメータの誤差の使用メモリ量のうち、使用メモリ量の最も大きい層の使用メモリ量を特定する。そして、学習制御部71は、学習処理を開始する際に、パラメータ誤差用の記憶領域として、特定した使用メモリ量に対応したメモリ領域を確保する。学習制御部71は、学習処理において、ニューロンデータおよびパラメータがメモリ領域に保持される層については、層ごとに、順に次の処理を行う。学習制御部71は、パラメータの誤差を算出してパラメータ誤差用の記憶領域に当該パラメータの誤差を上書して保持する。次に、学習制御部71は、ニューロンデータの誤差を算出して認識処理のニューロンデータを保持するメモリ領域に当該ニューロンデータの誤差を上書して保持する。次に、学習制御部71は、パラメータ誤差用の記憶領域に保持されたパラメータの誤差を用いて認識処理にて保持したパラメータを更新する。
ここで、本実施例のニューラルネットワークの計算の流れの一例を説明する。図9は、実施例2に係るニューラルネットワークの計算の流れの一例を示す図である。図9は、図3および図7と同様のニューラルネットワークの処理を本実施例の情報処理装置10により実施した場合の計算の流れを示している。ニューラルネットワークは、図3および図7と同様の階層構造とされている。「data」は、各層のニューロンデータのデータサイズを示している。「param」は、各層のパラメータのデータサイズを示している。矢印は、ニューラルネットワークの学習を行う際の処理の流れを示している。矢印に付した数字は、処理の順序を示している。
ニューラルネットワークの学習を行う場合、認識制御部70は、学習対象の画像を識別する認識処理を実行する。例えば、認識制御部70は、図7に示した実施例1のニューラルネットワークの計算と同様に、数字の「1」〜「7」の順に各層の処理を行い、処理結果を出力(Output)する。
ニューラルネットワークの学習を行う場合、学習制御部71は、パラメータ誤差用の記憶領域90をメモリ60に確保する。そして、学習制御部71は、認識処理の識別結果の誤差からパラメータを更新する学習処理を実行する。この際、学習制御部71は、ニューロンデータおよびパラメータがメモリ領域に保持される層については、層ごとに、パラメータの誤差を算出してパラメータ誤差用の記憶領域90に当該パラメータの誤差を上書して保持する制御を行う。次に、学習制御部71は、ニューロンデータの誤差を算出して認識処理のニューロンデータを保持するメモリ領域に当該ニューロンデータの誤差を上書して保持する制御を行う。次に、学習制御部71は、パラメータ誤差用の記憶領域90に保持されたパラメータの誤差を用いて認識処理にて保持したパラメータを更新する制御を行う。
例えば、認識制御部70は、図7に示した実施例1のニューラルネットワークの計算と同様に、数字の「8」に示すように識別結果と正解と比較して誤差を求める。そして、認識制御部70は、数字の「9」〜「21」の順に、各層ごとに、パラメータの誤差の勾配を算出し、ニューロンデータの誤差の勾配を算出した後、パラメータを更新する。なお、第1の畳み込み層(Conv1)は、入力側の最上位の層であり、パラメータの学習のために隣りの層へニューロンデータの誤差の勾配を伝達する必要がない。このため、第1の畳み込み層(Conv1)では、ニューロンデータの誤差の勾配を算出する処理を省略してもよい。図9の例では、第1の畳み込み層(Conv1)のニューロンデータの誤差の勾配を算出する処理を省略している。
例えば、図7の例では、第1の畳み込み層(Conv1)、第2の畳み込み層(Conv2)、第1の全結合層(Fully-conn1)、第2の全結合層(Fully-conn2)は、ニューロンデータとパラメータをメモリ領域に保持している。これらの層について、学習制御部71は、層ごとに、パラメータの誤差を算出してパラメータ誤差用の記憶領域90に当該パラメータの誤差を上書して保持する制御を行う。例えば、学習制御部71は、第2の全結合層(Fully-conn2)の場合、数字の「9」に示すように、パラメータの誤差を算出し、算出したパラメータの誤差をメモリ60のパラメータ誤差用の記憶領域90に保持させる。次に、学習制御部71は、数字の「10」に示すように、ニューロンデータの誤差を算出してメモリ60の認識処理のニューロンデータを保持するメモリ領域に当該ニューロンデータの誤差を上書して保持させる。次に、学習制御部71は、数字の「11」に示すように、パラメータ誤差用の記憶領域90に保持されたパラメータの誤差を用いて認識処理にて保持したパラメータを更新させる。これにより、図3および図7に示したニューラルネットワークの計算と比較して、第2の畳み込み層(Conv2)、第1の全結合層(Fully-conn1)および第2の全結合層(Fully-conn2)では、ニューロンデータの誤差の勾配を記憶するメモリ領域をさらに削減できる。
[処理の流れ]
次に、実施例2に係る情報処理装置10が実行する認識処理の流れについて説明する。図10は、実施例2に係る認識処理の手順の一例を示すフローチャートである。実施例2に係る認識処理は、図7に示した認識処理と一部の処理が同一であるため、同一の処理については同一の符号を付し、異なる処理について新たな符号を付している。
全体制御部50は、アクセラレータボード22を制御して、算出されたデータサイズの記憶領域をメモリ60に確保する(S50)。この際、学習制御部71は、S12において算出された各層のパラメータの誤差の使用メモリ量のうち、使用メモリ量の最も大きい層の使用メモリ量を特定する。そして、学習制御部71は、パラメータ誤差用の記憶領域90として、特定した使用メモリ量に対応したメモリ領域を確保する。
また、ニューラルネットワークのi層目の計算にパラメータが使用されている場合(S20肯定)、学習制御部71は、パラメータの誤差の勾配を計算してメモリ60のパラメータ誤差用の記憶領域90に保持する(S51)。そして、学習制御部71は、ニューロンデータの誤差の勾配を計算し、ニューラルネットワークのi層目のニューロンデータを記憶したメモリ60の記憶領域に上書き保存する(S52)。そして、学習制御部71は、パラメータ誤差用の記憶領域90に保持されたパラメータの誤差を用いて認識処理にて保持したi層目のパラメータを更新する(S53)。
[効果]
上述してきたように、本実施例に係る情報処理装置10は、ニューラルネットワークの各層のパラメータの誤差の使用メモリ量を計算する。情報処理装置10は、算出された各層の使用メモリ量のうち、使用メモリ量の最も大きい層の使用メモリ量に対応したメモリ領域を確保する。情報処理装置10は、学習処理において、ニューロンデータおよびパラメータがメモリ領域に保持される層については、層ごとに、以下の処理を順に行うように制御を行う。最初に、情報処理装置10は、パラメータの誤差を算出して確保したメモリ領域に当該パラメータの誤差を上書して保持する。次に、情報処理装置10は、ニューロンデータの誤差を算出して認識処理のニューロンデータを保持するメモリ領域に当該ニューロンデータの誤差を上書して保持する。次に、情報処理装置10は、確保したメモリ領域に保持されたパラメータの誤差を用いて認識処理にて保持したパラメータを更新する。これにより、情報処理装置10は、学習時における使用メモリ量をより削減できる。
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてもよい。そこで、以下では、本発明に含まれる他の実施例を説明する。
例えば、情報処理装置10は、学習に、例えば、モーメンタム法等の確率的勾配降下法(SGT(stochastic gradient descent))など、その他手法を用いてもよい。例えば、モーメンタム法では、パラメータの値Wt+1を、誤差の勾配▽E(W)と前周のパラメータvの線形和により更新する。例えば、前周のパラメータvおよびWを用いて、以下の式(14−1)、(14−2)から、t+1周における更新後のパラメータvt+1およびWt+1を計算する。
Figure 0006852365
ここで、αは、学習率であり、誤差の勾配への重みづけ倍率である。μは、モーメンタムであり、前周に更新されたパラメータへの重みづけ倍率である。
ここで、従来のモーメンタム法を用いたニューラルネットワークの計算の流れの一例を説明する。図11は、従来のモーメンタム法を用いたニューラルネットワークの計算の流れの一例を示す図である。ニューラルネットワークは、図3および図7と同様の階層構造とされている。「data」は、各層のニューロンデータのデータサイズを示している。「param」は、各層のパラメータのデータサイズを示している。「gdata」は、各層のニューロンデータの誤差の勾配のデータサイズを示している。「gparam」は、各層のパラメータの誤差の勾配のデータサイズを示している。「history」は、前周の誤差情報のデータサイズを示している。なお、第1のプーリング層、第2のプーリング層および識別層は、演算にパラメータを用いないため、「param」、「gparam」が無い状態とされている。矢印は、ニューラルネットワークの学習を行う際の処理の流れを示している。矢印に付した数字は、処理の順序を示している。
ニューラルネットワークの学習を行う場合、最初に、学習対象の画像を識別する認識処理が行われる。例えば、認識処理では、学習対象の画像に対して数字の「1」〜「7」の順に各層の処理が行われ、処理結果が出力(Output)される。そして、ニューラルネットワークの学習を行う場合、次に、認識処理の処理結果からパラメータを更新する学習処理が行われる。例えば、学習処理では、数字の「8」に示すように識別結果と正解と比較して誤差を求める。Labelは、学習対象の画像の正解を示す。そして、学習処理では、認識結果と正解との誤差を、数字の「9」〜「17」の順に各層の誤差の勾配を算出する処理が行われる。そして、学習処理では、数字の「18」、「19」に示すように各階層のパラメータを変更する処理が行われる。
例えば、学習処理の際の各層で以下の式(15−1)からパラメータの誤差を計算する。
gw = bottom_x × top_gx ・・・(15−1)
そして、各層のパラメータの更新する差分を以下の式(15−2)、(15−3)から計算する。
v = momentum × v − lr × gw ・・・(15−2)
gw = v ・・・(15−3)
そして、以下の式(15−4)により各層のパラメータを更新してもよい。
w =w − gw ・・・(15−4)
ここで、wは、パラメータのデータである。
xは、ニューロンデータである。
gwは、パラメータの誤差データである。
gxは、ニューロンデータの誤差データである。
bottom_xは、下位層(出力側の隣りの層)のx(ニューロンデータ)である。
top_gxは、上位層(入力側の隣りの層)のgx(ニューロンデータの誤差データ)である。
momentumは、モーメンタムを表し、μに相当する。
lrは、学習率を表し、αに相当する。
なお、誤差の大きさが閾値を超える場合に、誤差を閾値以下に抑えて学習を行ってもよい。Clip Gradientsによる学習処理を行う場合、学習処理の際の各層で上述の式(15−1)からパラメータの誤差を計算する。そして、各層の誤差の二乗和を求め、誤差の二乗和を閾値以下に抑えて学習を行ってもよい。例えば、学習処理の最後に、各層で以下の式(16−1)から誤差の二乗和(l2_norm)を計算する。そして、以下の式(16−2)から更新用のパラメータの誤差データを算出してもよい。
l2_norm =Σ(gw × gw) ・・・(16−1)
if(l2_norm > clip_gradients){
scale_factor = clip_gradients / l2_norm
gw = gw × scale_factor
} ・・・(16−2)
ここで、clip_gradientsは、閾値である。
また、過学習を防ぐための制約を加えて学習を行ってもよい。制約には、例えば、L1正則化やL2正則化がある。例えば、学習処理の最後に、各層で以下の式(17−1)、(17−2)からパラメータの誤差データを計算してもよい。
ld = lambda × w ・・・(17−1)
gw = gw + ld ・・・(17−2)
図12は、従来の使用メモリ量の一例を示す図である。図12の例は、入力データを64件ごとに分けて(バッチサイズM=64)、図11に示したニューラルネットワークの処理を実行した場合の使用メモリ量を示している。図12の例では、階層ニューラルネットワークの学習時に合計使用メモリ量が2倍超に増加する。
このようなモーメンタム法を用いたニューラルネットワークの計算に、実施例1または実施例2を適用してもよい。
最初に、実施例1を適用したモーメンタム法を用いたニューラルネットワークの計算の流れの一例を説明する。図13は、実施例1を適用したモーメンタム法を用いたニューラルネットワークの計算の流れの一例を示す図である。図13は、図11と同様のモーメンタム法を用いたニューラルネットワークの処理を本実施例の情報処理装置10により実施した場合の計算の流れを示している。矢印は、ニューラルネットワークの学習を行う際の処理の流れを示している。矢印に付した数字は、処理の順序を示している。
ニューラルネットワークの学習を行う場合、認識制御部70は、学習対象の画像を識別する認識処理を実行する。例えば、認識制御部70は、図11に示した従来のニューラルネットワークの計算と同様に、数字の「1」〜「7」の順に各層の処理を行い、処理結果を出力(Output)する。そして、学習制御部71が、認識処理の識別結果の誤差からパラメータを更新する学習処理を実行する。例えば、認識制御部70は、数字の「8」に示すように識別結果と正解と比較して誤差を求める。そして、認識制御部70は、数字の「9」〜「18」に示すように、順に各層の誤差の勾配を算出しつつ、パラメータを変更する。
例えば、学習制御部71は、メモリ60に保持した識別層(Softmax)の出力結果に基づき計算した出力結果の誤差の勾配を、メモリ60の識別層(Softmax)の出力結果を保持したメモリ領域に上書きして保持する。これにより、従来と比較して、識別層(Softmax)の誤差の勾配を記憶するメモリ領域を削減できる。
また、学習制御部71は、ニューロンデータとパラメータがメモリ領域に保持される層については、パラメータの誤差を算出し、算出したパラメータの誤差をメモリ60の新たなメモリ領域に保持する制御を行う。次に、学習制御部71は、ニューロンデータの誤差を算出し、算出したニューロンデータの誤差をメモリ60の認識処理のニューロンデータを保持するメモリ領域に上書して保持する制御を行う。図13の例では、第1の畳み込み層(Conv1)、第2の畳み込み層(Conv2)、第1の全結合層(Fully-conn1)、第2の全結合層(Fully-conn2)は、ニューロンデータとパラメータをメモリ領域に保持している。これらの層について、学習制御部71は、パラメータの誤差を算出してメモリ60の新たなメモリ領域に保持する。その後、学習制御部71は、ニューロンデータの誤差を算出してメモリ60の認識処理のニューロンデータを保持するメモリ領域に当該ニューロンデータの誤差を上書して保持する制御を行う。例えば、学習制御部71は、第2の全結合層(Fully-conn2)の場合、数字の「9」に示すように、パラメータの誤差を算出する。学習制御部71は、算出したパラメータの誤差をメモリ60の新たなメモリ領域に保持する制御を行う。次に、学習制御部71は、数字の「10」に示すように、ニューロンデータの誤差を算出する。学習制御部71は、算出したニューロンデータの誤差をメモリ60の認識処理のニューロンデータを保持するメモリ領域に上書して保持する制御を行う。これにより、図11に示した従来のニューラルネットワークの計算と比較して、第1の畳み込み層、第2の畳み込み層、第1の全結合層、第2の全結合層でニューロンデータの誤差を記憶するメモリ領域を削減できる。
次に、実施例2を適用したモーメンタム法を用いたニューラルネットワークの計算の流れの一例を説明する。図14は、実施例2を適用したモーメンタム法を用いたニューラルネットワークの計算の流れの一例を示す図である。図14は、図11と同様のモーメンタム法を用いたニューラルネットワークの処理を本実施例の情報処理装置10により実施した場合の計算の流れを示している。矢印は、ニューラルネットワークの学習を行う際の処理の流れを示している。矢印に付した数字は、処理の順序を示している。
ニューラルネットワークの学習を行う場合、認識制御部70は、学習対象の画像を識別する認識処理を実行する。例えば、認識制御部70は、図11に示した従来のニューラルネットワークの計算と同様に、数字の「1」〜「7」の順に各層の処理を行い、処理結果を出力(Output)する。そして、学習制御部71が、認識処理の識別結果の誤差からパラメータを更新する学習処理を実行する。例えば、認識制御部70は、数字の「8」に示すように識別結果と正解と比較して誤差を求める。そして、認識制御部70は、数字の「9」〜「26」に示すように、層ごとに、順に各層の誤差の勾配を算出しつつ、パラメータを変更する。
例えば、学習制御部71は、メモリ60に保持した識別層(Softmax)の出力結果に基づき計算した出力結果の誤差の勾配を、メモリ60の識別層(Softmax)の出力結果を保持したメモリ領域に上書きして保持する。これにより、従来と比較して、識別層(Softmax)の誤差の勾配を記憶するメモリ領域を削減できる。
また、学習制御部71は、各層のパラメータの誤差の使用メモリ量のうち、使用メモリ量の最も大きい層の使用メモリ量のパラメータ誤差用の記憶領域90をメモリ60に確保する。そして、学習制御部71は、認識処理の識別結果の誤差からパラメータを更新する学習処理を実行する。この際、学習制御部71は、ニューロンデータおよびパラメータがメモリ領域に保持される層については、層ごとに、パラメータの誤差を算出してパラメータ誤差用の記憶領域90に当該パラメータの誤差を上書して保持する制御を行う。次に、学習制御部71は、ニューロンデータの誤差を算出して認識処理のニューロンデータを保持するメモリ領域に当該ニューロンデータの誤差を上書して保持する制御を行う。次に、学習制御部71は、パラメータ誤差用の記憶領域90に保持されたパラメータの誤差を用いて認識処理にて保持したパラメータを更新する制御を行う。図14の例では、第1の畳み込み層(Conv1)、第2の畳み込み層(Conv2)、第1の全結合層(Fully-conn1)、第2の全結合層(Fully-conn2)は、ニューロンデータとパラメータをメモリ領域に保持している。これらの層について、学習制御部71は、パラメータの誤差を算出してメモリ60の新たなメモリ領域に保持する。その後、学習制御部71は、ニューロンデータの誤差を算出してメモリ60の認識処理のニューロンデータを保持するメモリ領域に当該ニューロンデータの誤差を上書して保持する制御を行う。例えば、学習制御部71は、第2の全結合層(Fully-conn2)の場合、数字の「9」に示すように、パラメータの誤差を算出する。学習制御部71は、算出したパラメータの誤差をメモリ60のパラメータ誤差用の記憶領域90に保持させる。次に、学習制御部71は、数字の「10」に示すように、ニューロンデータの誤差を算出する。学習制御部71は、算出したニューロンデータの誤差をメモリ60の認識処理のニューロンデータを保持するメモリ領域に上書して保持させる。次に、学習制御部71は、数字の「11」、「12」に示すように、パラメータ誤差用の記憶領域90に保持されたパラメータの誤差および前周の誤差を用いて認識処理にて保持したパラメータを更新させる。これにより、情報処理装置10は、各層のパラメータの誤差を記憶する記憶領域を共用できるため、学習時におけるメモリ使用を効率化できる。この結果、情報処理装置10は、学習時における使用メモリ量を削減することができる。
実施例1、実施例2を適用したニューラルネットワークでは、学習処理の際の各層の処理で、パラメータの誤差を以下の式(18)から計算し、パラメータの値を更新してもよい。
w = w − lr × Σ(bottom_x × top_gx) ・・・(18)
また、パラメータの誤差を以下の式(19−1)から計算し、式(19−2)によりパラメータの値を更新してもよい。
v = momentum × v − lr × Σ(bottom_x × top_gx) ・(19−1)
w = w −v ・・・(19−2)
ここで、Σは、ミニバッチ数分の誤差に対してパラメータの更新を繰り返すことを表している。
効果の一例を説明する。例えば、図14に示した、実施例2を適用したモーメンタム法を用いたニューラルネットワークを計算した場合の効果の一例を説明する。図15は、実施例2を適用したモーメンタム法を用いたニューラルネットワークによる使用メモリ量の一例を示す図である。図15の例は、入力データを64件ごとに分けて(バッチサイズM=64)、図14に示したニューラルネットワークの処理を実行した場合の使用メモリ量を示している。図15に示すように、情報処理装置10は、学習時の使用メモリ量を大幅に削減する。例えば、図15の例は、全体として使用メモリ量が、図12の例と比較して、33.9%(=(15254448−10088224)/15254448)削減できる。
また、上記各実施例では、学習処理において、ニューロンデータおよびパラメータがメモリ領域に保持される層については、パラメータの誤差を算出したのち、ニューロンデータの誤差を算出する場合を例示した。しかしながら、これらに限定されるものではない。例えば、学習制御部71は、学習処理において、ニューロンデータとパラメータがメモリ領域に保持される層については、各層ごとに、次のように処理を行ってもよい。学習制御部71は、各層ごとに、ニューロンデータとパラメータのうち、使用メモリ量の小さい方の誤差の勾配を算出してメモリ領域に保持する。その後、学習制御部71は、使用メモリ量の大きい方の誤差の勾配を算出して認識処理のデータを保持したメモリ領域に上書きする制御を行ってもよい。すなわち、学習制御部71は、ニューロンサイズとパラメータサイズのうち、小さい方の誤差を先に計算し、後続の誤差計算結果を認識時のメモリ領域に上書することで、メモリ量を削減してもよい。学習制御部71は、このような学習処理において、各層のニューロンサイズとパラメータサイズの小さい方の誤差メモリ領域を利用し、それらの誤差メモリ領域のうち最大のものを学習用メモリ領域として確保するようにしてもよい。上記のニューラルネットワークの計算の流れの一例を説明する。図16は、ニューラルネットワークの計算の流れの一例を示す図である。図16は、ニューラルネットワークの処理を本実施例の情報処理装置10により実施した場合の計算の流れを示している。ニューラルネットワークは、図3および図7と同様の階層構造とされている。「data」は、各層のニューロンデータのデータサイズを示している。「param」は、各層のパラメータのデータサイズを示している。矢印は、ニューラルネットワークの学習を行う際の処理の流れを示している。矢印に付した数字は、処理の順序を示している。ニューラルネットワークの学習を行う場合、認識制御部70は、学習対象の画像を識別する認識処理を実行する。例えば、認識制御部70は、図7に示した実施例1のニューラルネットワークの計算と同様に、数字の「1」〜「7」の順に各層の処理を行い、処理結果を出力(Output)する。ニューラルネットワークの学習を行う場合、学習制御部71は、学習用の記憶領域91A、91Bをメモリ60に確保する。例えば、学習制御部71は、各層のニューロンデータとパラメータのうち、使用メモリ量がそれぞれ最も大きい使用メモリ量に対応した記憶領域91A、91Bを確保する。そして、学習制御部71は、認識処理の識別結果の誤差からパラメータを更新する学習処理を実行する。例えば、認識制御部70は、数字の「8」〜「21」の順に、各層ごとに、パラメータの誤差の勾配を算出し、ニューロンデータの誤差の勾配を算出した後、パラメータを更新するようにしてもよい。
また、上記各実施例では、ニューラルネットワークにより画像に写った識別対象を識別する場合を例示した。しかしながら、これらに限定されるものではない。例えば、識別対象は、音声など、ニューラルネットワークが識別対象とするものであれば何れであってもよい。
また、上記各実施例では、ニューラルネットワークとして、畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)を用いた場合を例示した。しかしながら、これらに限定されるものではない。例えば、ニューラルネットワークは、RNN(Recurrent Neural Network)などの時系列を学習・認識可能なニューラルネットワークであってもよい。RNNは、CNNの拡張であり、CNNと同じく誤差逆伝播を行うため、本実施例と同様の処理を適用できる。
また、上記各実施例では、1台の情報処理装置10で認識処理および学習処理を実行する場合を例示した。しかしながら、これらに限定されるものではない。例えば、複数台の情報処理装置10により認識処理および学習処理を実行する情報処理システムとして構成してもよい。例えば、入力データをミニバッチ法で処理する場合、情報処理システムは、入力データをM件ごとに分けて、別な情報処理装置10で認識処理および学習処理を実行し、それぞれで算出されたパラメータの誤差を収集してパラメータを更新するようにしてもよい。
また、上記各実施例では、マザーボード21の演算部31にメモリ量計算部51を設けた場合を例示した。しかしながら、これらに限定されるものではない。例えば、アクセラレータボード22の演算部61にメモリ量計算部51を設けてもよい。そして、アクセラレータボード22の演算部61のメモリ量計算部51が、ニューラルネットワークの各層で、ニューロンデータおよびパラメータの記憶に使用される使用メモリ量を算出してもよい。
また、上記各実施例では、識別処理の開始の前に、識別処理と学習処理で使用する使用メモリ量を計算する場合を例示した。しかしながら、これらに限定されるものではない。例えば、識別処理の開始の前に、識別処理で使用する使用メモリ量を計算し、識別処理の終了後、学習処理の開始の前に、学習処理で使用する使用メモリ量を計算してもよい。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、全体制御部50、メモリ量計算部51、認識制御部70および学習制御部71の各処理部が適宜統合されてもよい。また、各処理部の処理が適宜複数の処理部の処理に分離されてもよい。さらに、各処理部にて行なわれる各処理機能は、その全部又は任意の一部が、CPU及び該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
[情報処理プログラム]
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、情報処理プログラムを実行するコンピュータシステムの一例を説明する。図17は、情報処理プログラムを実行するコンピュータの構成の一例を示す図である。
図17に示すように、コンピュータ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 (5)

  1. 入力したニューロンデータに対して、パラメータによる重み付け演算を含む階層型のニューラルネットワークの演算を行い、当該ニューラルネットワークの各層のニューロンデータおよびパラメータをそれぞれメモリ領域に保持する認識処理を制御する認識制御部と、
    前記ニューラルネットワークの各層のパラメータの誤差の使用メモリ量を計算するメモリ量計算部と、
    前記メモリ量計算部により算出された各層の使用メモリ量のうち、使用メモリ量の最も大きい層の使用メモリ量に対応したメモリ領域を確保し、前記認識制御部による認識結果の誤差から前記ニューラルネットワークの各層のパラメータを学習する学習処理において、ニューロンデータおよびパラメータがメモリ領域に保持される層については、層ごとに、パラメータの誤差を算出して前記確保したメモリ領域に当該パラメータの誤差を上書して保持し、ニューロンデータの誤差を算出して前記認識処理のニューロンデータを保持するメモリ領域に当該ニューロンデータの誤差を上書して保持し、前記確保したメモリ領域に保持されたパラメータの誤差を用いて前記認識処理にて保持した前記パラメータを更新する制御を行う学習制御部と、
    を有することを特徴とする情報処理装置。
  2. 前記学習制御部は、前記ニューラルネットワークの入力層を第1層とし、出力層を第n層(1<n)とし、ニューロンデータおよびパラメータがメモリ領域に保持される層を第i層(1≦i<n)とした場合、前記第i層については、前記認識処理にて保持した前記第i層のニューロンデータおよび第i+1層の前層のニューロンデータの誤差から前記第i層の前記パラメータの誤差を算出し、前記第i層のパラメータおよび前記第i+1層のニューロンデータの誤差から前記第i層の前記ニューロンデータの誤差を算出する、
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 入力したニューロンデータに対して、パラメータによる重み付け演算を含む階層型のニューラルネットワークの演算を行い、当該ニューラルネットワークの各層のニューロンデータおよびパラメータをそれぞれメモリ領域に保持する認識処理を制御する認識制御部と、
    前記ニューラルネットワークの各層のパラメータの誤差の使用メモリ量を計算するメモリ量計算部と、
    前記メモリ量計算部により算出された各層の使用メモリ量のうち、使用メモリ量の最も大きい層の使用メモリ量に対応したメモリ領域を確保し、前記認識制御部による認識結果の誤差から前記ニューラルネットワークの各層のパラメータを学習する学習処理において、ニューロンデータおよびパラメータがメモリ領域に保持される層については、層ごとに、パラメータの誤差を算出して前記確保したメモリ領域に当該パラメータの誤差を上書して保持し、ニューロンデータの誤差を算出して前記認識処理のニューロンデータを保持するメモリ領域に当該ニューロンデータの誤差を上書して保持し、前記確保したメモリ領域に保持されたパラメータの誤差を用いて前記認識処理にて保持した前記パラメータを更新する制御を行う学習制御部と、
    を有することを特徴とする情報処理システム。
  4. 入力したニューロンデータに対して、パラメータによる重み付け演算を含む階層型のニューラルネットワークの演算を行い、当該ニューラルネットワークの各層のニューロンデータおよびパラメータをそれぞれメモリ領域に保持する認識処理を行い、
    前記ニューラルネットワークの各層のパラメータの誤差の使用メモリ量を計算し、
    算出された各層の使用メモリ量のうち、使用メモリ量の最も大きい層の使用メモリ量に対応したメモリ領域を確保し、認識結果の誤差から前記ニューラルネットワークの各層のパラメータを学習する学習処理において、ニューロンデータおよびパラメータがメモリ領域に保持される層については、層ごとに、パラメータの誤差を算出して前記確保したメモリ領域に当該パラメータの誤差を上書して保持し、ニューロンデータの誤差を算出して前記認識処理のニューロンデータを保持するメモリ領域に当該ニューロンデータの誤差を上書して保持し、前記確保したメモリ領域に保持されたパラメータの誤差を用いて前記認識処理にて保持した前記パラメータを更新する制御を行う、
    処理をコンピュータに実行させることを特徴とする情報処理プログラム。
  5. 入力したニューロンデータに対して、パラメータによる重み付け演算を含む階層型のニューラルネットワークの演算を行い、当該ニューラルネットワークの各層のニューロンデータおよびパラメータをそれぞれメモリ領域に保持する認識処理を行い、
    前記ニューラルネットワークの各層のパラメータの誤差の使用メモリ量を計算し、
    算出された各層の使用メモリ量のうち、使用メモリ量の最も大きい層の使用メモリ量に対応したメモリ領域を確保し、認識結果の誤差から前記ニューラルネットワークの各層のパラメータを学習する学習処理において、層ごとに、パラメータの誤差を算出して前記確保したメモリ領域に当該パラメータの誤差を上書して保持し、ニューロンデータの誤差を算出して前記認識処理のニューロンデータを保持するメモリ領域に当該ニューロンデータの誤差を上書して保持し、前記確保したメモリ領域に保持されたパラメータの誤差を用いて前記認識処理にて保持した前記パラメータを更新する制御を行う、
    処理をコンピュータが実行することを特徴とする情報処理方法。
JP2016229386A 2016-11-25 2016-11-25 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法 Expired - Fee Related JP6852365B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016229386A JP6852365B2 (ja) 2016-11-25 2016-11-25 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法
US15/722,270 US11003990B2 (en) 2016-11-25 2017-10-02 Controlling memory area for training a neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016229386A JP6852365B2 (ja) 2016-11-25 2016-11-25 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法

Publications (2)

Publication Number Publication Date
JP2018085063A JP2018085063A (ja) 2018-05-31
JP6852365B2 true JP6852365B2 (ja) 2021-03-31

Family

ID=62190184

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016229386A Expired - Fee Related JP6852365B2 (ja) 2016-11-25 2016-11-25 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法

Country Status (2)

Country Link
US (1) US11003990B2 (ja)
JP (1) JP6852365B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
US20200410365A1 (en) * 2018-02-26 2020-12-31 Google Llc Unsupervised neural network training using learned optimizers
WO2020118555A1 (zh) * 2018-12-12 2020-06-18 深圳鲲云信息科技有限公司 一种网络模型数据存取方法、装置及电子设备
US11748599B2 (en) * 2019-02-21 2023-09-05 Texas Instruments Incorporated Super-tiling in neural network processing to enable analytics at lower memory speed
JP7141977B2 (ja) * 2019-03-29 2022-09-26 株式会社デンソーテン 制御装置および制御方法
EP3994621A1 (en) * 2019-07-03 2022-05-11 Huaxia General Processor Technologies Inc. Instructions for operating accelerator circuit
KR102263622B1 (ko) * 2019-11-29 2021-06-10 울산과학기술원 메모리 사용 프로필에 기초하여 기계 학습 모델의 트레이닝을 위한 메모리 할당 방법 및 장치
JP7143546B2 (ja) * 2020-02-17 2022-09-28 三菱電機株式会社 モデル生成装置、車載装置、および、モデル生成方法
EP3965021B1 (en) * 2020-09-07 2023-12-20 Fujitsu Limited A method of using clustering-based regularization in training a deep neural network to classify images
US20220180192A1 (en) * 2020-12-08 2022-06-09 Electronics And Telecommunications Research Institute Method and apparatus for optimizing batch size for artificial neural network accelerator
JP7639410B2 (ja) * 2021-03-04 2025-03-05 富士通株式会社 プログラム,計算機及び学習方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5171118B2 (ja) * 2007-06-13 2013-03-27 キヤノン株式会社 演算処理装置及びその制御方法
JP5184824B2 (ja) 2007-06-15 2013-04-17 キヤノン株式会社 演算処理装置及び方法
CN107533459B (zh) * 2016-03-31 2020-11-20 慧与发展有限责任合伙企业 使用电阻存储器阵列的数据处理方法和单元
CN109313722B (zh) * 2016-05-20 2021-11-26 渊慧科技有限公司 存储器高效的基于时间的反向传播
US11907760B2 (en) * 2016-09-23 2024-02-20 Apple Inc. Systems and methods of memory allocation for neural networks

Also Published As

Publication number Publication date
US20180150745A1 (en) 2018-05-31
US11003990B2 (en) 2021-05-11
JP2018085063A (ja) 2018-05-31

Similar Documents

Publication Publication Date Title
JP6852365B2 (ja) 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法
JP6708044B2 (ja) 画像認識装置、画像認識プログラム、画像認識方法および認識装置
JP6891626B2 (ja) 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法
KR102796191B1 (ko) 신경망의 최적화 방법
TWI853083B (zh) 用於經由調整記憶體內計算陣列的列閾值來執行 xnor 等效運算的裝置、方法與電腦可讀取媒體
US11443514B2 (en) Recognizing minutes-long activities in videos
Rere et al. Simulated annealing algorithm for deep learning
CN113705769A (zh) 一种神经网络训练方法以及装置
US20160224903A1 (en) Hyper-parameter selection for deep convolutional networks
CN113837350B (zh) 神经形态设备和训练用于图像识别的神经网络的方法
US12206869B2 (en) Skip convolutions for efficient video processing
CN113868187B (zh) 处理神经网络的方法和电子装置
US12373691B1 (en) Executing sublayers of a fully-connected layer
JP7211069B2 (ja) 情報処理装置、情報処理プログラムおよび情報処理方法
CN118114734A (zh) 基于稀疏正则化理论的卷积神经网络优化方法及系统
CN108664986B (zh) 基于lp范数正则化的多任务学习图像分类方法及系统
Zeng et al. Convolutional neural network based multi-feature fusion for non-rigid 3D model retrieval
TW202427274A (zh) 機器學習編譯器優化中的節點對稱性
WO2023202484A1 (zh) 神经网络模型的修复方法和相关设备
Xia et al. Efficient synthesis of compact deep neural networks
US20240135708A1 (en) Permutation invariant convolution (pic) for recognizing long-range activities
Praveenkumar et al. Deep Convolutional Neural Network Based Extreme Learning Machine Image Classification
CN116630697B (zh) 一种基于有偏选择池化的图像分类方法
CN117593594B (zh) 基于一致性对齐的脑部mri图像分类方法、设备和介质
US20240303471A1 (en) Activation function for homomorphically-encrypted neural networks

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190807

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201203

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210222

R150 Certificate of patent or registration of utility model

Ref document number: 6852365

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees