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

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

Info

Publication number
JP6891626B2
JP6891626B2 JP2017096814A JP2017096814A JP6891626B2 JP 6891626 B2 JP6891626 B2 JP 6891626B2 JP 2017096814 A JP2017096814 A JP 2017096814A JP 2017096814 A JP2017096814 A JP 2017096814A JP 6891626 B2 JP6891626 B2 JP 6891626B2
Authority
JP
Japan
Prior art keywords
data
layer
memory
error
intermediate layer
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.)
Active
Application number
JP2017096814A
Other languages
English (en)
Other versions
JP2018194974A (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 JP2017096814A priority Critical patent/JP6891626B2/ja
Priority to US15/966,363 priority patent/US20180330229A1/en
Publication of JP2018194974A publication Critical patent/JP2018194974A/ja
Application granted granted Critical
Publication of JP6891626B2 publication Critical patent/JP6891626B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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

Landscapes

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

Description

本発明は、情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法に関する。
近年、多層構造のニューラルネットワークを用いた機械学習が注目されている。このような多層構造のニューラルネットワークを用いた機械学習は、ディープラーニング(深層学習)とも呼ばれる。ディープラーニングは、ニューラルネットワークの多階層化が進んでおり、多くの分野で有効性が確認されている。例えば、ディープラーニングは、画像・音声の認識において人間に匹敵するほど高い認識精度を発揮している。
特開2008−310524号公報 特開2009−80693号公報 特開2008−310700号公報
ディープラーニングでは、教師あり学習を行うことにより、ニューラルネットワークに自動的に特徴を学習させる。しかしながら、ディープラーニングは、ニューラルネットワークの多階層化により、使用メモリ量が大きくなっており、学習時に使用メモリ量がさらに増加する。例えば、教師あり学習で一般的に使用される誤差逆伝播法では、学習用のデータをニューラルネットワークに順伝播させて認識を行い、認識結果と正解とを比較して誤差を求める。そして、誤差逆伝播法では、認識結果と正解との誤差を認識時と逆方向にニューラルネットワークに伝播させ、ニューラルネットワークの各階層のパラメータを変更する。このため、学習時には、使用メモリ量が増加する。例えば、学習には、誤差の勾配を保存するため、認識のみの場合の2倍超にデータ量が増加し、使用メモリ量が2倍超に増加する場合もある。
一つの側面では、学習時におけるメモリ使用を効率化できる情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法を提供することを目的とする。
一つの態様では、情報処理装置は、メモリと認識制御部と学習制御部とを有する。認識制御部は、階層ニューラルネットワークにおける第1の中間層でありメモリ内の第1のメモリ領域を入力及び出力に共用可能である第1の中間層に対するバッファ領域としてメモリ内に第2のメモリ領域を確保し、第1の中間層への入力ニューロンデータの特性に応じた特性データを第2のメモリ領域に格納する認識処理を制御する。学習制御部は、第2のメモリ領域に格納された特性データを使用して、階層ニューラルネットワークにおける第1の中間層の誤差に関する計算を行う学習処理を制御する。
本発明の一つの実施態様によれば、学習時におけるメモリ使用を効率化できるという効果を奏する。
図1は、ディープラーニングの処理の流れの一例を模式的に示した図である。 図2Aは、畳み込み演算の一例を模式的に示した図である。 図2Bは、活性化関数の一例(ReLU)を模式的に示した図である。 図2Cは、間引きの一例を模式的に示した図である。 図2Dは、全結合の一例を模式的に示した図である。 図3は、インプレイス(in-place)処理を行う中間層を含むニューラルネットワークの計算の流れの一例を示す図である。 図4は、実施例1に係る情報処理装置の機能的な構成を概略的に示した図である。 図5は、実施例1における活性化関数と特性データとの関係を示す図である。 図6は、実施例1における入力配列と出力配列と特性データ配列との関係を示す図である。 図7は、実施例1におけるニューラルネットワークの計算の流れの一例を示す図である。 図8は、実施例1に係る情報処理方法の一例を示すフローチャートである。 図9は、実施例2におけるニューラルネットワークの計算の流れの一例を示す図である。 図10は、実施例2に係る情報処理方法の一例を示すフローチャートである。 図11は、実施例3におけるニューラルネットワークの計算の流れの一例を示す図である。 図12は、実施例3に係る情報処理方法の一例を示すフローチャートである。 図13は、情報処理プログラムを実行するコンピュータの構成の一例を示す図である。
以下に、本発明にかかる情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法の実施例を図面に基づいて詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下に示す実施例は、矛盾を起こさない範囲で適宜組み合わせてもよい。
[ディープラーニングの説明]
ディープラーニングについて説明する。図1は、ディープラーニングの処理の流れの一例を模式的に示した図である。
ディープラーニングでは、識別対象に関する教師あり学習を行うことにより、ニューラルネットワークに自動的に識別対象の特徴を学習する。ディープラーニングでは、特徴を学習したニューラルネットワークを用いて識別対象を識別する。例えば、ディープラーニングでは、識別対象が写った大量の画像を学習用の画像として教師あり学習を行うことにより、画像に写った識別対象の特徴をニューラルネットワークに自動的に学習する。ディープラーニングでは、このように特徴を学習したニューラルネットワークを用いることで画像に写った識別対象を識別できる。
脳には、多数のニューロン(神経細胞)が存在する。各ニューロンは、他のニューロンから信号を受け取り、他のニューロンへ信号を受け渡す。脳は、この信号の流れによって、様々な情報処理を行う。ニューラルネットワークは、このような脳の機能の特性を計算機上で実現したモデルである。ニューラルネットワークは、脳のニューロンを模したユニットを階層的に結合している。ユニットは、ノードとも呼ばれる。各ユニットは、他のユニットからデータを受け取り、データにパラメータ(重み)を適用して他のユニットへ受け渡す。ニューラルネットワークは、ユニットのパラメータを学習によって変化させて受け渡すデータを変化させることで様々な識別対象を識別(認識)できる。以下では、ニューラルネットワークで伝送されるデータをニューロンデータと呼ぶ。
図1には、ニューラルネットワークの一例として、画像の認識に用いられる畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)の一例が示されている。以下では、ニューラルネットワークとして、畳み込みニューラルネットワークにより画像の認識を行う場合を例に説明する。
ニューラルネットワークは、階層構造を持った階層ニューラルネットワークであり、入力層と出力層との間に複数の中間層を有し得る。複数の中間層は、例えば、畳み込み層、活性化関数層、プーリング層、全結合層、及びソフトマックス層を含む。各層の数及び位置は、図1に例示したものに限定されず、要求されるアーキテクチャに応じて随時変更され得る。すなわち、ニューラルネットワークの階層構造や各層の構成は、識別する対象などに応じて、設計者が予め定めることができる。
ニューラルネットワークでは、画像の識別を行う場合、図1に示すように、左から右へ各中間層の処理を行うことで画像に写った識別対象の特徴を抽出し、最後に出力層で画像に写った識別対象の識別(カテゴライズ)を行う。この処理をフォワード処理又は認識処理と呼ぶ。一方、ニューラルネットワークでは、画像の学習を行う場合、識別した結果と正解との誤差を求め、図1に示すように、右から左へニューラルネットワークに逆伝播させ、各中間層のパラメータ(重み)を変更する。この処理をバックワード処理又は学習処理と呼ぶ。
次に、各中間層の演算について説明する。畳み込み層では、入力したニューロンデータの畳み込み演算(畳み込み処理)を行い、入力ニューロンデータの特徴を抽出する。図2Aは、畳み込み演算の一例を模式的に示した図である。図2Aの例では、入力したN×Nピクセルの画像の畳み込み演算をする場合を示している。畳み込み層では、N×Nピクセルの画像の各画素の値をそれぞれニューロンデータとして、それぞれパラメータが設定されたm×mのサイズのフィルタと畳み込み(convolution)を計算することで、次層への出力用のニューロンデータを作成する。
活性化関数層では、畳み込み層で抽出された特徴を強調する。すなわち、活性化関数層では、活性化関数σに出力用のニューロンデータを通過させることで、発火(activation)をモデル化する。発火とは、ニューロンから出力される信号の値がある値を超えるときに出力される信号が他のニューロンに伝達される現象をいう。
例えば、畳み込み層(Conv1, Conv2)では、以下の式(1)に示すような畳み込み演算を行い、その演算結果に対して、活性化関数層(ReLU1, ReLU2)では、以下の式(2)に示すような活性化関数σの演算を行う。
Figure 0006891626
ここで、yL−1 (i+a)(j+b)は、入力となるニューロンデータであり、図2Aに示すN×Nピクセルの画像(層L−1)yL−1の(i+a,j+b)の画素のデータである。wabは、図2Aに示すm×mのフィルタwの重みを表す各パラメータである。x ijは、畳み込み演算された(i,j)の画素のデータである。y ijは、x ijに活性化関数σを適用し、所定のバイアスbを加えた結果としてユニットUi(層L)の出力となり、さらに次の層L+1の入力ともなるニューロンデータである。
活性化関数層(ReLU1, ReLU2)で用いる活性化関数σとしては、非線形な活性化関数を用いることができ、例えば、ReLU(Rectified Linear Unit:ランプ関数)を用いることができる。図2Bは、活性化関数σの一例(ReLU)を模式的に示した図である。図2Bの例では、入力xがゼロ未満の場合、出力yにはゼロが出力される。また、入力xがゼロを超えた場合、出力yには入力xの値が出力される。
プーリング層では、入力したニューロンデータの間引きを行う。図2Cは、間引きの一例を模式的に示した図である。例えば、N×Nピクセルの画像がニューロンデータとして入力される。プーリング層では、N×Nピクセルのニューロンデータから、(N/k)×(N/k)のニューロンデータに間引く。例えば、k×kの領域ごとに、最大値を取り出すMax-Poolingにより、間引きを行う。間引きは、その他、何れの手法で行ってもよい。例えば、k×kの領域の平均値を取り出すAverage-Poolingで、間引きを行ってもよい。また、プーリング層では、間引きを行うk×kの領域を一部重複させてもよく、重複させずに隣接させて間引きを行ってもよい。
例えば、プーリング層(Pool1, Pool2)では、以下の式(3)に示すようなMax-Poolingを行う。
Figure 0006891626
ここで、関数maxは、図2Cに示す(i,j)の画素からそれぞれk画素の範囲の領域内で最大値のニューロンデータを出力する関数である。y i,Jは、ユニットUiの出力となるニューロンデータである。
全結合層では、抽出された特徴を結合して特徴を示す変数を生成する。すなわち、全結合層では、識別を行う対象数に応じて、入力したニューロンデータを全結合した全結合の演算を行う。例えば、N×Nピクセルの画像がニューロンデータとして入力される。全結合層は、N×Nピクセルのニューロンデータ全てを、それぞれ重み(パラメータ)と掛け合わせることで、次層への出力用のニューロンデータを作成する。
ソフトマックス層は、全結合層で生成された変数を確率に変換する。すなわち、ソフトマックス層は、正規化するような活性化関数σに出力用のニューロンデータを通過させる演算を行うことで、発火をモデル化する。
図2Dは、全結合の一例を模式的に示した図である。図2Dの例は、識別を行う対象数をi個とした場合にj個のニューロンデータをそれぞれ全結合してi個のニューロンデータを得る場合の一例を示している。例えば、全結合層(Fully-conn1)では、以下の式(4)に示すような全結合の演算を行い、その演算結果に対して、ソフトマックス層(Softmax)では、以下の式(5)に示すような演算を行う。
Figure 0006891626
ここで、yL−1 は、ユニットUL−1の出力であり、ユニットUの入力となるニューロンデータである。wL−1 jiは、yL−1 とy に対応した重みを表すパラメータである。x は、重み付け演算されたデータである。y は、x に活性化関数σを適用し、所定のバイアスb を加えた結果のユニットUiの出力となるニューロンデータである。
ソフトマックス層(Softmax)で用いる活性化関数σとしては、非線形な活性化関数を用いることができ、例えば、Softmax関数を用いることができる。ニューラルネットワークによる演算結果のニューロンデータは、実数となる。ソフトマックス層は、結果の識別を行いやすいように演算結果のニューロンデータを正規化する。
例えば、ソフトマックス層(Softmax)は、Softmax関数などの活性化関数を用いて演算結果のニューロンデータを0〜1の範囲に正規化する。Softmax関数は、ロジスティック関数を一般化したものであり、任意の実数を持つn次元ベクトルxを、(0,1)区間の実数で和が1になるようなn次元ベクトルσ(x)に正規化する。例えば、出力層では、以下の式(6)に示すSoftmax関数の演算を行う。
Figure 0006891626
これにより、ニューラルネットワークによる演算結果のn個のニューロンデータxは、それぞれの認識対象iである確率σ(x)の確率分布に変換される。ソフトマックス層(Softmax)による演算結果のニューロンデータは、出力層に出力され、出力層で識別が行われる。
例えば、画像に写った識別対象が10種類の何れであるかの識別を行う場合、演算結果として10個のニューロンデータが全結合層からソフトマックス層を経由して出力層に出力される。出力層は、確率分布が最も大きいニューロンデータに対応する画像の種類を識別結果とする。また、学習を行う場合、出力層は、認識結果と正解とを比較して誤差を求める。例えば、出力層は、交差エントロピー誤差関数を利用して目的の確率分布(正解)との誤差を求める。例えば、出力層は、以下の式(7)に示す誤差関数の演算を行う。
Figure 0006891626
ここで、tは、目的の分布であり、認識対象iが正解である場合、1とし、その他の場合0とする。yは、ニューラルネットワークによる演算された認識対象iの確率σ(x)である。
ディープラーニングでは、教師あり学習を行うことにより、ニューラルネットワークに自動的に特徴を学習させる。例えば、教師あり学習で一般的に使用される誤差逆伝播法では、学習用のデータをニューラルネットワークに順伝播させて認識を行い、認識結果と正解とを比較して誤差を求める。そして、誤差逆伝播法では、認識結果と正解との誤差を認識時と逆方向にニューラルネットワークに伝播させ、ニューラルネットワークの各階層のパラメータを変更して最適解に近づけていく。
次に、誤差の計算の一例を説明する。例えば、誤差逆伝播法では、認識時におけるニューロンデータの誤差として、以下の式(8)に示す誤差関数の偏微分の演算を行う。
Figure 0006891626
誤差逆伝播法では、出力層(Output)におけるパラメータの誤差の勾配を以下の式(9)から計算する。なお、Softmax関数の演算を行うソフトマックス層(Softmax)では、式(8)の結果が式(9)の誤差の勾配となる。
Figure 0006891626
また、誤差逆伝播法では、出力層(Output)での誤差から入力への誤差の勾配を部分微分を用いて計算する。例えば、ReLUなどの活性化関数の演算を行う活性化関数層(ReLU1, ReLU2)では、以下の式(10−1)から入力の誤差の勾配を計算する。σ’(x)は、σ(x)をxで偏微分したものであり、以下の式(10−2)から求められる。xは、認識時で使用した値を用いる。σ’(x)を、式(10−1)に代入すると誤差の勾配(∂E/∂x )が求まる。
Figure 0006891626
また、誤差逆伝播法では、演算にパラメータ(重み)を有する層についてはパラメータの誤差の勾配を計算する。例えば、式(4)に示す全結合の演算では、以下の式(11−1)からパラメータの誤差の勾配を計算する。また、式(1)に示す畳み込み演算では、以下の式(11−2)からパラメータの誤差の勾配を計算する。なお、偏微分の連鎖律を用いて計算すると得られるy は、認識時に使用した値を用いる。
Figure 0006891626
また、誤差逆伝播法では、前の層(L−1層)への誤差の勾配を算出する。例えば、前の層が全結合の演算を行う層である場合は、以下の式(12−1)から前の層への誤差の勾配を算出する。また、前の層が畳み込み演算を行う層である場合は、以下の式(12−2)から前の層への誤差の勾配を算出する。なお、偏微分の連鎖律を用いて計算すると得られるw ijは、認識時に使用した値を用いる。また、前の層がMax-Poolingを行うプーリング層(Pool1, Pool2)である場合は、認識時にk×kの領域の最大値を取った場所に対して誤差の勾配(∂E/∂x )を加算する。なお、k×kの領域のその他の場所に対しては、何も行わない。
Figure 0006891626
誤差の計算では、ニューラルネットワークに逆伝播させ、ニューラルネットワークの最上位の層である入力層(Input)に到達するまで各中間層の誤差の勾配の計算を繰り返す。例えば、出力層(Output)での誤差から入力への誤差の勾配を式(10−1)を用いて計算する。例えば、式(10−1)に示す入力の誤差は、下層が出力層の場合、式(9)の誤差の勾配を代入して求める。また、式(10−1)に示す入力の誤差は、下層が出力層以外の場合、式(12−1)、(12−2)から算出される誤差の勾配を代入して求める。また、例えば、式(11−1)に示すパラメータの誤差の勾配は、式(10−1)から算出される誤差を代入して求める。また、例えば、式(12−1)に示す前の層への誤差は、式(10−1)から算出される誤差を代入して求める。そして、誤差の計算では、誤差に応じて全層のパラメータを更新する。
ニューラルネットワークは、図1、図2A〜図2Dに例示したような画像認識に用いられるほか、音声認識、言語認識などの様々な認識処理に適用され得る。この認識処理の高精度化を図るために、ニューラルネットワークの層数が増加されニューラルネットワークが巨大化されることがある。ニューラルネットワークが巨大化されると、ディープラーニングの計算量が膨大になりやすいが、GPU(Graphics Processing Unit)や専用チップなどのアクセラレータ(アクセラレータボード)で演算を行うことにより、処理を高速化できる。このとき、アクセラレータ(アクセラレータボード)をホスト(マザーボード)と通信可能に接続してホスト上のメモリ(ホストメモリ)を用いながらディープラーニングを行うと、処理の速度が通信路のデータ転送の速度により制約される。アクセラレータとホストとのデータ転送はアクセラレータ内のデータ転送に比べて低速であるため、アクセラレータ内のローカルメモリ上で処理する方が、処理を高速化できる。
アクセラレータ内のローカルメモリは、高い性能を出すために消費電力やチップ面積に限りがある。すなわち、アクセラレータ内のローカルメモリの記憶容量は、ホストメモリの記憶容量に比べて限られている。例えば、ホストメモリの記憶容量が数百GBであるのに対して、アクセラレータ内のローカルメモリの記憶容量は、16GBであり、可能なニューラルネットワークサイズが制限される。
それに対して、ニューラルネットワークにおける少なくとも一部の中間層に対して、インプレイス(in-place)処理を行うことで、メモリ使用量をある程度削減できる。インプレイス処理では、中間層が、同一のメモリ領域を入力及び出力に共用可能なように構成される。すなわち、インプレイス処理では、中間層に対する入力と出力とで同一のメモリ領域が割り当てられる。割り当てられたメモリ領域では、中間層への入力ニューロンデータが出力ニューロンデータで上書きされ得る。例えば、図3に示すように、ニューラルネットワークを構成できる。図3は、インプレイス処理を行う中間層を含むニューラルネットワークの計算の流れの一例を示す図である。
図3の例は、ニューラルネットワークとして、畳み込みニューラルネットワークの学習を行う際の各データと処理の順序を示している。ニューラルネットワークは、各層が順に並んだ階層構造とされている。ニューラルネットワークは、入力層(Input)、第1の畳み込み層(Conv1)、第1の活性化関数層(ReLU1)、第2の畳み込み層(Conv2)、第2の活性化関数層(ReLU2)、第1のプーリング層(Pool1)、第1の全結合層(Fully-conn1)、第3の活性化関数層(ReLU3)の各層を順に含む。ニューラルネットワークは、第2の全結合層(Fully-conn2)、ソフトマックス層(Softmax)、出力層(Output)の各層をさらに順に含む。図3では、インプレイス処理を行う中間層が活性化関数層(ReLU1, ReLU2, ReLU3)である場合が例示されている。
図3において、「data」は、各層のニューロンデータのデータサイズを示している。「param」は、各層のパラメータのデータサイズを示している。「gdata」は、各層のニューロンデータの誤差の勾配のデータサイズを示している。「gparam」は、各層のパラメータの誤差の勾配のデータサイズを示している。なお、矢印は、ニューラルネットワークの学習を行う際の処理の流れを示している。矢印に付した数字は、処理の順序を示している。
ニューラルネットワークの学習を行う場合、認識処理が行われ、その後、学習処理が行われる。認識処理では、学習対象の画像を識別する処理が行われる。すなわち、認識処理では、学習対象の画像に対して数字の「1」〜「9」の順に各層の処理が行われ、処理結果が出力される。
例えば、数字の「1」に示すように、入力層(Input)から受けたニューロンデータに対して第1の畳み込み層(Conv1)で畳み込み演算が行われ、演算結果にパラメータを適用して第1の活性化関数層(ReLU1)へ入力される。
数字の「2」に示すように、第1の活性化関数層(ReLU1)でインプレイス処理が行われる。すなわち、第1の活性化関数層(ReLU1)用に確保されたメモリ領域に入力ニューロンデータが格納され、その入力ニューロンデータに対して活性化関数を適用して出力ニューロンデータが求められる。出力ニューロンデータは、メモリ領域における入力ニューロンデータに上書きされるとともに、第2の畳み込み層(Conv2)へ出力される。
数字の「3」に示すように、第1の活性化関数層(ReLU1)の出力ニューロンデータが第2の畳み込み層(Conv2)へ入力されると、第2の畳み込み層(Conv2)で畳み込み演算が行われ、演算結果にパラメータを適用して第2の活性化関数層(ReLU2)へ入力される。
数字の「4」に示すように、第2の活性化関数層(ReLU2)でインプレイス処理が行われる。すなわち、第2の活性化関数層(ReLU2)用に確保されたメモリ領域に入力ニューロンデータが格納され、その入力ニューロンデータに対して活性化関数を適用して出力ニューロンデータが求められる。出力ニューロンデータは、メモリ領域における入力ニューロンデータに上書きされるとともに、第1のプーリング層(Pool1)へ出力される。
数字の「5」に示すように、第2の活性化関数層(ReLU2)の出力ニューロンデータが第1のプーリング層(Pool1)へ入力されると、第1のプーリング層(Pool1)で間引きが行われ、間引き結果が第1の全結合層(Fully-conn1)へ入力される。
数字の「6」に示すように、第1のプーリング層(Pool1)の出力ニューロンデータが第1の全結合層(Fully-conn1)へ入力されると、パラメータを適用しながら全結合の演算が行われ、演算結果が第3の活性化関数層(ReLU3)へ入力される。
数字の「7」に示すように、第3の活性化関数層(ReLU3)でインプレイス処理が行われる。すなわち、第3の活性化関数層(ReLU3)用に確保されたメモリ領域に入力ニューロンデータが格納され、その入力ニューロンデータに対して活性化関数を適用して出力ニューロンデータが求められる。出力ニューロンデータは、メモリ領域における入力ニューロンデータに上書きされるとともに、第2の全結合層(Fully-conn2)へ出力される。
数字の「8」に示すように、第3の活性化関数層(ReLU3)の出力ニューロンデータが第2の全結合層(Fully-conn2)へ入力されると、パラメータを適用しながら全結合の演算が行われ、演算結果がソフトマックス層(Softmax)へ入力される。
数字の「9」に示すように、ソフトマックス層(Softmax)でSoftmax関数などの活性化関数を用いた演算が行われ、演算結果が出力層(Output)へ入力される。
次に、認識処理の処理結果からパラメータを更新する学習処理が行われる。例えば、学習処理では、数字の「10」に示すように識別結果と正解とを比較して誤差を求める。Labelは、学習対象の画像の正解を示す。そして、学習処理では、認識結果と正解との誤差を、数字の「11」〜「21」の順に各層の誤差の勾配を算出する処理が行われる。そして、学習処理では、数字の「22」に示すように各階層のパラメータを変更する処理が行われる。なお、パラメータの変更は、各階層ごとに誤差の勾配が算出されたタイミングで行ってもよい。
ここで、インプレイス処理を行わない各中間層のニューロンデータの誤差の勾配(gdata)は、前の層の誤差の勾配(gdata)と、認識時のパラメータ(param)とから算出され得る。例えば、第2の全結合層(Fully-conn2)では、「11」に示すように、ソフトマックス層の誤差の勾配(gdata)と第2の全結合層のパラメータ(param)とからニューロンデータの誤差の勾配(gdata)が算出されている。インプレイス処理を行わない各中間層のパラメータの誤差の勾配(gparam)は、前の層の誤差の勾配(gdata)と、認識時のニューロンデータ(data)とから算出され得る。例えば、第2の全結合層では、「12」に示すように、ソフトマックス層の誤差の勾配(gdata)と、第3の活性化関数層のニューロンデータ(data)とからパラメータの誤差の勾配(gparam)が算出されている。
一方、インプレイス処理を行う各中間層のニューロンデータの誤差の勾配(gdata)は、前の層の誤差の勾配(gdata)と認識時のニューロンデータ(data)とから算出され、誤差の勾配(gdata)のメモリ領域に格納される。
例えば、第3の活性化関数層(ReLU3)では、「13」に示すように、「11」のメモリ領域に格納された第2の全結合層(Fully-conn2)の誤差の勾配(gdata)と認識時のニューロンデータ(data)とからニューロンデータの誤差の勾配(gdata)が算出される。そして、第3の活性化関数層(ReLU3)のニューロンデータの誤差の勾配(gdata)は、誤差の勾配(gdata)のメモリ領域に格納される。
例えば、第2の活性化関数層(ReLU2)では、「17」に示すように、「16」のメモリ領域に格納された第1のプーリング層(Pool1)の誤差の勾配(gdata)と認識時のニューロンデータ(data)とからニューロンデータの誤差の勾配(gdata)が算出される。そして、第2の活性化関数層(ReLU2)のニューロンデータの誤差の勾配(gdata)は、誤差の勾配(gdata)のメモリ領域に格納される。
例えば、第1の活性化関数層(ReLU1)では、「20」に示すように、「19」のメモリ領域に格納された第2の畳み込み層(Conv2)の誤差の勾配(gdata)と認識時のニューロンデータ(data)とからニューロンデータの誤差の勾配(gdata)が算出される。そして、第1の活性化関数層(ReLU1)のニューロンデータの誤差の勾配(gdata)は、誤差の勾配(gdata)のメモリ領域に格納される。
このように、ニューラルネットワークの学習では、認識時のパラメータおよびニューロンデータを使用する。このため、図3に示すディープラーニングでは、学習を行う場合、学習用の入力ニューロンデータを認識した際のニューロンデータ(data)とパラメータ(param)とを記憶する。また、図3に示すディープラーニングでは、学習を行う場合、ニューロンデータの誤差の勾配(gdata)とパラメータの誤差の勾配(gparam)も記憶する。このように、学習時には、使用メモリ量が増加する。
例えば、層ごとにメモリ量を解析して計算順序を工夫することにより学習時の使用メモリ量の削減を図る第1の方法を考える。第1の方法では、学習処理において、ニューロンデータおよびパラメータがメモリ領域に保持される層については、パラメータの誤差を算出したのち、ニューロンデータの誤差を算出する制御を行う。ニューラルネットワークに第1の方法が適用できれば、認識時のニューロンデータ記憶領域を上書しつつ処理できるため、使用メモリ量を削減できる。
しかし、図3に示すニューラルネットワークでは、インプレイス処理を行う中間層のニューロンデータを、第1の方法による使用メモリ量削減の対象とすることが困難である。例えば、活性化関数層(ReLU1, ReLU2, ReLU3)用に確保されたメモリ領域では、入力ニューロンデータが出力ニューロンデータで上書きされる。このため、第1の方法を適用するために、入力ニューロンデータを退避しておくメモリ領域を追加すると、使用メモリ量が増加してしまう。すなわち、入力ニューロンデータと同じサイズのメモリ領域を追加すると、インプレイス処理による使用メモリ量削減の効果が失われ得る。
あるいは、例えば、階層ニューラルネットワークの層間データを共有することにより学習時の使用メモリ量の削減を図る第2の方法を考える。第2の方法では、ニューロンデータとパラメータがメモリ領域に保持される層については、ニューロンデータとパラメータのうち、使用メモリ量の小さい方の誤差の勾配を算出してメモリ領域に保持する。そして、使用メモリ量の大きい方の誤差の勾配を算出して認識処理のデータを保持したメモリ領域に上書きする。ニューラルネットワークに第2の方法が適用できれば、学習時における使用メモリ量を削減できる。
しかし、図3に示すニューラルネットワークでは、インプレイス処理を行う中間層のニューロンデータを、第2の方法による使用メモリ量削減の対象とすることが困難である。例えば、活性化関数層(ReLU1, ReLU2, ReLU3)用に確保されたメモリ領域では、入力ニューロンデータが出力ニューロンデータで上書きされる。このため、第2の方法を適用するために、入力ニューロンデータを退避しておくメモリ領域を追加すると、使用メモリ量が増加してしまう。すなわち、入力ニューロンデータと同じサイズのメモリ領域を追加すると、インプレイス処理による使用メモリ量削減の効果が失われ得る。
そこで、実施例1では、インプレイス処理が可能な中間層への入力ニューロンデータの符号を示す特性データを認識処理時にバッファ領域に格納し、その特性データを用いて学習処理時に前段の中間層に関する誤差を計算する。すなわち、認識処理において、インプレイス処理が可能な中間層では、メモリ領域に格納された入力ニューロンデータを出力ニューロンデータで上書きせずに残しておく。そして、入力ニューロンデータの符号ビットに対応した容量で追加のバッファ領域を確保し、符号ビットを特性データとして追加のバッファ領域に格納しておく。学習処理において、インプレイス処理が可能な中間層では、入力ニューロンデータに特性データ(符号ビット)を掛けて出力ニューロンデータを生成して誤差に関する計算を行う。これにより、追加のメモリ使用量を抑制でき、メモリ使用を効率化できる。例えば、情報処理装置10を次のように構成する。
[情報処理装置の構成]
実施例1に係る情報処理装置10の構成について説明する。図4は、情報処理装置の機能的な構成を概略的に示した図である。情報処理装置10は、ディープラーニングを用いて各種の対象の認識を行う認識装置である。例えば、情報処理装置10は、サーバコンピュータなどのコンピュータである。情報処理装置10は、1台のコンピュータとして実装してもよく、また、複数台のコンピュータによるコンピュータシステムとして実装してもよい。すなわち、以下に説明するディープラーニングは、複数台のコンピュータによる情報処理システムで処理を分散して実行してもよい。なお、本実施例では、情報処理装置10を1台のコンピュータとした場合を例として説明する。本実施例では、情報処理装置10が、画像の認識を行う場合を例に説明する。
図4に示すように情報処理装置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(Serial ATA)、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に保持する。
このとき、インプレイス処理が可能な中間層について、認識制御部70は、中間層に対するバッファ領域としてメモリ60内に追加のメモリ領域を確保し、中間層への入力ニューロンデータの特性に応じた特性データを追加のメモリ領域に格納する。特性データは、例えば、入力ニューロンデータがfloat型のデータである場合、入力ニューロンデータの符号ビットとすることができる。認識制御部70は、ニューロンデータ用のメモリ領域における入力ニューロンデータをそのまま残しておく。
学習制御部71は、ニューラルネットワークの学習処理を制御する。例えば、学習制御部71は、認識処理による識別結果と正解との誤差を求め、処理順序に従い、誤差をニューラルネットワークに伝播させる学習処理を実行する。学習制御部71は、誤差からニューラルネットワークの各層の誤差の勾配を算出してパラメータを学習する。
このとき、インプレイス処理が可能な中間層について、学習制御部71は、バッファ領域(追加のメモリ領域)に格納された特性データを使用して、中間層に関する誤差を算出する。すなわち、学習制御部71は、インプレイス処理が可能な中間層のニューロンデータ用のメモリ領域から入力ニューロンデータを読み出し、バッファ領域から特性データ(符号ビット)を読み出す。学習制御部71は、入力ニューロンデータに特性データ(符号ビット)を掛けて出力ニューロンデータを生成し、生成された出力ニューロンデータを用いてその中間層の前段からの入力ニューロンデータに関する誤差(gdata, gparam)を計算する。
例えば、誤差の勾配の計算では、上記の式(9)、式(10−1)に示すように、活性化関数σ(x)をxで偏微分したσ’(x)が用いられる。σ’(x)の値は、図5に示すように、入力xの符号を示す符号ビットの値と一致させることができる。図5は、実施例1における活性化関数と特性データとの関係を示す図である。また、入力xに活性化関数σを適用した得られる出力yは、図6に示すように、入力xに符号ビットの値を掛けることによっても得られる。図6は、実施例1における入力配列と出力配列と特性データ配列との関係を示す図である。そのため、認識処理時に、入力ニューロンデータと符号ビットとを退避しておけば、学習処理時に、入力ニューロンデータと符号ビットとを掛けることで認識処理時の出力ニューロンデータを再現できることが分かる。
また、例えば、図6に示すように、入力ニューロンデータと出力ニューロンデータとがそれぞれfloat型の32ビットのデータであるのに対して、特性データ(符号ビット)をbool型の1ビットのデータにしてそのビット数を抑制できる。そのため、特性データ(符号ビット)を格納するメモリ領域として、例えば、フェイルビットマップを格納するメモリ領域を流用でき、情報処理装置10によるメモリ使用を効率化できる。例えば、特性データ配列(ビットマップ配列)のメモリ量は、入力配列・出力配列の各メモリ量の約1/32とすることができる。また、特性データは、フェイルビットマップを格納するメモリ領域に格納し得ることから、ビットマップデータとも呼ぶことができる。
例えば、情報処理装置10では、図7に示すように、以下の点で図3に示すニューラルネットワークの計算と異なる計算が行われる。図7は、実施例1におけるニューラルネットワークの計算の流れの一例を示す図である。図7では、インプレイス処理が可能な中間層が活性化関数層(ReLU1, ReLU2, ReLU3)である場合が例示されている。
図7において、「buff」は、インプレイス処理を行う中間層用のバッファ領域として確保される追加のメモリ領域に格納される特性データ(符号ビット)のデータサイズを示している。
ニューラルネットワークの学習を行う場合、認識制御部70は、学習対象の画像を識別する認識処理を実行する。図7に示すように、認識制御部70は、数字の「1」〜「10」の順に各層の処理を行い、処理結果を出力する。このとき、インプレイス処理が可能な中間層について、認識制御部70は、中間層に対するバッファ領域としてメモリ60内に追加のメモリ領域を確保し、中間層への入力ニューロンデータの特性に応じた特性データを追加のメモリ領域に格納する。
例えば、数字の「2」に示すように、第1の活性化関数層(ReLU1)のデータ用に確保されたメモリ領域に入力ニューロンデータ(data)が格納され、入力ニューロンデータの符号を示す特性データ(buff)がバッファ用のメモリ領域に格納される。特性データのデータサイズは1ビットに抑制できる。第1の活性化関数層(ReLU1)では、入力ニューロンデータに対して活性化関数を適用して出力ニューロンデータが求められ第2の畳み込み層(Conv2)へ出力される。
例えば、数字の「4」に示すように、第2の活性化関数層(ReLU2)のデータ用に確保されたメモリ領域に入力ニューロンデータ(data)が格納され、入力ニューロンデータの符号を示す特性データ(buff)がバッファ用のメモリ領域に格納される。特性データのデータサイズは1ビットに抑制できる。第2の活性化関数層(ReLU2)では、入力ニューロンデータに対して活性化関数を適用して出力ニューロンデータが求められ第1のプーリング層(Pool1)へ出力される。
例えば、数字の「7」に示すように、第3の活性化関数層(ReLU3)のデータ用に確保されたメモリ領域に入力ニューロンデータ(data)が格納され、入力ニューロンデータの符号を示す特性データ(buff)がバッファ用のメモリ領域に格納される。特性データのデータサイズは1ビットに抑制できる。第3の活性化関数層(ReLU3)では、入力ニューロンデータに対して活性化関数を適用して出力ニューロンデータが求められ第2の全結合層(Fully-conn2)へ出力される。
次に、学習制御部71が、認識処理の識別結果の誤差からパラメータを更新する学習処理を実行する。
ここで、インプレイス処理を行わない各中間層のニューロンデータの誤差の勾配(gdata)は、前の層の誤差の勾配(gdata)と、認識時のパラメータ(param)とから算出される。例えば、第2の全結合層(Fully-conn2)では、「11」に示すように、ソフトマックス層の誤差の勾配(gdata)と第2の全結合層のパラメータ(param)とからニューロンデータの誤差の勾配(gdata)が算出される。インプレイス処理を行わない各中間層のパラメータの誤差の勾配(gparam)は、前の層の誤差の勾配(gdata)と、認識時のニューロンデータ(data)とから算出され得る。例えば、第2の全結合層では、「12」に示すように、ソフトマックス層の誤差の勾配(gdata)と、第3の活性化関数層のニューロンデータ(data)とからパラメータの誤差の勾配(gparam)が算出されている。
一方、インプレイス処理が可能である各中間層のニューロンデータの誤差の勾配(gdata)は、前の層の誤差の勾配(gdata)と認識時のニューロンデータ(data)とから算出され、そのニューロンデータ(data)のメモリ領域に上書きで格納される。
例えば、第3の活性化関数層(ReLU3)では、「13」に示すように、第2の全結合層(Fully-conn2)の誤差の勾配(gdata)と認識時のニューロンデータ(data)とからニューロンデータの誤差の勾配(gdata)が算出される。第2の全結合層(Fully-conn2)の誤差の勾配(gdata)は、「11」で求められたものである。認識時のニューロンデータ(data)は、ニューロンデータ(data)のメモリ領域に格納された入力ニューロンデータとバッファ領域に格納された特性データ(buff)とから再現された出力ニューロンデータである。そして、第3の活性化関数層(ReLU3)のニューロンデータの誤差の勾配(gdata)は、そのニューロンデータ(data)のメモリ領域に上書きで格納される。
例えば、第2の活性化関数層(ReLU2)では、「17」に示すように、第1のプーリング層(Pool1)の誤差の勾配(gdata)と認識時のニューロンデータ(data)とからニューロンデータの誤差の勾配(gdata)が算出される。第1のプーリング層(Pool1)の誤差の勾配(gdata)は、「16」で求められたものである。認識時のニューロンデータ(data)は、ニューロンデータ(data)のメモリ領域に格納された入力ニューロンデータとバッファ領域に格納された特性データ(buff)とから再現された出力ニューロンデータである。そして、第2の活性化関数層(ReLU2)のニューロンデータの誤差の勾配(gdata)は、そのニューロンデータ(data)のメモリ領域に上書きで格納される。
例えば、第1の活性化関数層(ReLU1)では、「20」に示すように、第2の畳み込み層(Conv2)の誤差の勾配(gdata)と認識時のニューロンデータ(data)とからニューロンデータの誤差の勾配(gdata)が算出される。第2の畳み込み層(Conv2)の誤差の勾配(gdata)は、「19」で求められたものである。認識時のニューロンデータ(data)は、ニューロンデータ(data)のメモリ領域に格納された入力ニューロンデータとバッファ領域に格納された特性データ(buff)とから再現された出力ニューロンデータである。そして、第1の活性化関数層(ReLU1)のニューロンデータの誤差の勾配(gdata)は、そのニューロンデータ(data)のメモリ領域に上書きで格納される。
本実施例の学習処理では、図7に破線で示したメモリ領域を削減でき、学習時におけるメモリ使用を効率化できる。これにより、例えば、アクセラレータボード22で一度に実行可能なバッチサイズが増加する。これにより、本実施例で説明した学習時における使用メモリ量の削減を適用した場合、入力ニューロンデータの学習にかかる時間を短縮できる。
[処理の流れ]
次に、情報処理装置10が実行する情報処理方法における処理の流れについて説明する。図8は、実施例1に係る情報処理方法の一例を示すフローチャートである。この情報処理方法は、所定のタイミング、例えば、管理者から処理開始が指示されたタイミングで実行される。
例えば、活性化関数層(ReLU1, ReLU2, ReLU3)がいずれもパラメータを使用しない場合について例示的に説明する。
図8に示すように、全体制御部50は、定義情報41、パラメータ情報42を読み出す(S1)。全体制御部50は、定義情報41、パラメータ情報42に基づいて、ハイパーパラメータ(学習率、モーメンタム、バッチサイズ、最大反復回数など)を特定し(S2)、学習実行の繰り返し回数max_iterを取得する。そして、全体制御部50は、定義情報41、パラメータ情報42に基づいて、ニューラルネットワークの構成を特定し(S3)、層数nを取得する。
メモリ量計算部51は、定義情報41に基づいて、認識および学習の際にニューラルネットワークの各層で、ニューロンデータおよびパラメータの誤差の記憶に使用される使用メモリ量のデータサイズを算出する(S4)。すなわち、メモリ量計算部51は、層数をカウントするためのパラメータiを1に初期化し(S5)、i層目がインプレイス処理の中間層であるか否か判断する(S6)。
メモリ量計算部51は、i層目がインプレイス処理の中間層でない場合(S6でNo)、「x+w+Δx+Δw」をi層目に必要なメモリ量として確保する(S7)。「x」は、入力xのデータサイズを示し、「w」は、パラメータwのデータサイズを示し、「Δx」は、入力誤差Δxのデータサイズを示し、「Δw」は、パラメータ誤差Δwのデータサイズを示す。メモリ量計算部51は、i層目がインプレイス処理の中間層である場合(S6でYes)、「x+w+Δw+Δb」をi層目に必要なメモリ量として確保する(S8)。「x」は、入力xのデータサイズを示し、「w」は、パラメータwのデータサイズを示し、「Δw」は、パラメータ誤差Δwのデータサイズを示し、「Δb」は、入力xの符号ビットのデータサイズを示す。このとき、入力xの符号ビットのデータサイズは、入力誤差Δxのデータサイズより小さい(Δb<Δxが成り立つ)。なお、メモリ量計算部51は、i層目がパラメータを使用しない層である場合、パラメータwのデータサイズの計算や、パラメータ誤差Δwのデータサイズの計算を省略できる。
メモリ量計算部51は、パラメータiを1加算する(S9)。メモリ量計算部51は、パラメータiがニューラルネットワークの層数n以上になるまでS6〜S9の処理を繰り返す。
パラメータiがニューラルネットワークの層数n以上になると、全体制御部50は、アクセラレータボード22を制御して、算出されたデータサイズの記憶領域をメモリ60に確保する(S11)。また、全体制御部50は、学習実行の回数をカウントするためのパラメータiterを1に初期化する(S12)。
全体制御部50は、記憶部20から入力ニューロンデータ40を所定の件数ごとに分けて読み出す。そして、全体制御部50は、読み出したデータや認識処理、学習処理に関する情報をアクセラレータボード22にオフロードし、ニューラルネットワークの学習を開始し(S13)、認識処理(S14)と学習処理(S21)とを行う。
認識処理(S14)において、認識制御部70は、層数をカウントするためのパラメータiを1に初期化する(S15)。認識制御部70は、マザーボード21からオフロードされたデータから未処理の1件分のデータを読み出す。そして、認識制御部70は、読み出したデータをニューロンデータとし、ニューロンデータに対して、ニューラルネットワークの順にi層目の演算を行い、演算結果をメモリ60に保持する(S16)。認識制御部70は、i層目がインプレイス処理の中間層であるか否か判断する(S17)。認識制御部70は、i層目がインプレイス処理の中間層でない場合(S17でNo)、演算結果をニューロンデータ用のメモリ領域に格納して処理をS19へ進める。認識制御部70は、i層目がインプレイス処理の中間層である場合(S17でYes)、入力ニューロンデータの符号ビットをバッファ領域に格納する(S18)。認識制御部70は、パラメータiの値を1加算する(S19)。認識制御部70は、パラメータiがニューラルネットワークの層数n以上になるまでS16〜S19の処理を繰り返す。パラメータiがニューラルネットワークの層数n以上になると、認識処理(S14)から学習処理(S21)へ移行する。
学習処理(S21)において、学習制御部71は、ニューラルネットワークの最終層の識別結果と正解との誤差を算出する(S22)。学習制御部71は、i層目がインプレイス処理の中間層であるか否か判断する(S23)。学習制御部71は、i層目がインプレイス処理の中間層である場合(S23でYes)、バッファ領域に格納された符号ビットを用いてニューロンデータの誤差の勾配を計算し、ニューロンデータ用のメモリ領域に上書きで格納する(S24)。学習制御部71は、i層目がインプレイス処理の中間層でない場合(S23でNo)、パラメータの誤差の勾配を計算してメモリ60に保持する(S25)。なお、i層目がパラメータを使用しない層である場合、学習制御部71は、S25の処理を省略してもよい。そして、学習制御部71は、ニューロンデータの誤差の勾配を計算してメモリ60に保持する(S26)。学習制御部71は、パラメータiの値を1減算する(S27)。学習制御部71は、パラメータiが0以下になるまでS23〜S27の処理を繰り返す。パラメータiが0以下になると、学習制御部71は、ニューラルネットワークの全層について、各層ごとに、パラメータの誤差の勾配に基づいて、パラメータを更新し(S29)、学習処理(S21)を終了する。
全体制御部50は、パラメータiterが学習実行の繰り返し回数max_iter以上になるまで、パラメータiterを1加算(S31)しながら、S13〜S29の処理を繰り返す。全体制御部50は、パラメータiterが学習実行の繰り返し回数max_iter以上になると、処理結果をスナップショット情報43およびパラメータ情報42に保存し(S32)、処理を終了する。
[効果]
上述してきたように、本実施例に係る情報処理装置10は、インプレイス処理が可能な中間層への入力ニューロンデータの符号を示す特性データを認識処理時にバッファ領域に格納し、その特性データを用いて学習処理時に中間層に関する誤差を計算する。すなわち、認識処理において、インプレイス処理が可能な中間層では、メモリ領域に格納された入力ニューロンデータを出力ニューロンデータで上書きせずに残しておく。そして、入力ニューロンデータの符号ビットに対応した容量で追加のバッファ領域を確保し、符号ビットを特性データとして追加のバッファ領域に格納しておく。学習処理において、インプレイス処理が可能な中間層では、入力ニューロンデータに特性データ(符号ビット)を掛けて出力ニューロンデータを生成してその中間層の前段からの入力ニューロンデータに関する誤差(gdata)を計算する。これにより、追加のメモリ使用量を抑制でき、メモリ使用を効率化できる。
また、本実施例に係る情報処理装置10は、追加のバッファ領域の記憶容量については、ニューロンデータの入力及び出力で共用可能なメモリ領域の記憶容量より小さい。これにより、追加のメモリ使用量を抑制でき、メモリ使用を効率化できる。
また、本実施例に係る情報処理装置10は、追加のバッファ領域に格納される特性データは、入力ニューロンデータの符号ビットを含む。これにより、追加のバッファ領域の記憶容量を、ニューロンデータの入力及び出力で共用可能なメモリ領域の記憶容量より小さくできる。
次に、実施例2について説明する。実施例2に係る情報処理装置10の構成は、図4に示した実施例1に係る情報処理装置10の構成と略同様であるため、主に異なる部分について説明する。
例えば、活性化関数層(ReLU1, ReLU2, ReLU3)のうち、活性化関数層(ReLU1, ReLU2)がパラメータを使用せず、活性化関数層(ReLU3)がパラメータを使用する場合について例示的に説明する。
メモリ量計算部51は、インプレイス処理が可能な中間層への入力ニューロンデータのデータサイズがパラメータのデータサイズより大きいか否か判断する。メモリ量計算部51は、中間層への入力ニューロンデータのデータサイズがパラメータのデータサイズより大きい場合、その中間層に対してバッファ領域として追加のメモリ量を計算する。
認識制御部70は、インプレイス処理が可能な中間層への入力ニューロンデータのデータサイズがパラメータのデータサイズより大きい場合、その中間層に対するバッファ領域としてメモリ内に追加のメモリ領域を確保する。認識制御部70は、インプレイス処理が可能な中間層への入力ニューロンデータのデータサイズがパラメータのデータサイズ以下である場合、追加のメモリ領域を確保しない。
学習制御部71は、インプレイス処理が可能な中間層への入力ニューロンデータのデータサイズがパラメータのデータサイズより大きい場合、バッファ領域(追加のメモリ領域)に格納された特性データを使用して、中間層に関する誤差を算出する。学習制御部71は、インプレイス処理が可能な中間層への入力ニューロンデータのデータサイズがパラメータのデータサイズ以下である場合、ニューロンデータ用のメモリ領域に格納されたデータを使用して、中間層に関する誤差を算出する。
例えば、情報処理装置10では、図9に示すように、インプレイス処理が可能な中間層である活性化関数層(ReLU1, ReLU2)については、入力ニューロンデータのデータサイズがパラメータのデータサイズより大きいものとして、実施例1と同様の処理が行われる。図9は、実施例2におけるニューラルネットワークの計算の流れの一例を示す図である。一方、インプレイス処理が可能な中間層である活性化関数層(ReLU3)については、入力ニューロンデータのデータサイズがパラメータのデータサイズ以下であるとして、次の処理が行われる。すなわち、学習制御部71は、ニューロンデータとパラメータのうち、使用メモリ量の小さい方の誤差の勾配を算出してメモリ領域に保持する。そして、学習制御部71は、使用メモリ量の大きい方の誤差の勾配を算出して認識処理のデータを保持したメモリ領域に上書きする。
本実施例の学習処理では、図9に破線で示したメモリ領域を削減でき、学習時におけるメモリ使用を効率化できる。これにより、例えば、アクセラレータボード22で一度に実行可能なバッチサイズが増加する。これにより、本実施例で説明した学習時における使用メモリ量の削減を適用した場合、入力ニューロンデータの学習にかかる時間を短縮できる。
[処理の流れ]
次に、情報処理装置10が実行する情報処理方法における処理の流れについて説明する。図10は、実施例2に係る情報処理方法の一例を示すフローチャートである。実施例2における情報処理方法は、実施例1における情報処理方法に対して、基本的に同様であるが、以下の点で異なる処理が行われる。
使用メモリ量のデータサイズを算出する処理(S4)において、S5の後、i層目の入力ニューロンデータxのデータサイズがパラメータwのデータサイズより大きく且つi層目がインプレイス処理の中間層であるか否か判断する(S41)。メモリ量計算部51は、i層目の入力ニューロンデータxのデータサイズがパラメータwのデータサイズ以下であるか又はi層目がインプレイス処理の中間層でない場合(S41でNo)、S7の処理を行う。メモリ量計算部51は、i層目の入力ニューロンデータxのデータサイズがパラメータwのデータサイズより大きく且つi層目がインプレイス処理の中間層である場合(S41でYes)、S8の処理を行う。
認識処理(S14)において、認識制御部70は、S16の後、i層目の入力ニューロンデータxのデータサイズがパラメータwのデータサイズより大きく且つi層目がインプレイス処理の中間層であるか否か判断する(S42)。認識制御部70は、i層目の入力ニューロンデータxのデータサイズがパラメータwのデータサイズ以下であるか又はi層目がインプレイス処理の中間層でない場合(S42でNo)、演算結果をニューロンデータ用のメモリ領域に格納して処理をS19へ進める。認識制御部70は、i層目の入力ニューロンデータxのデータサイズがパラメータwのデータサイズより大きく且つi層目がインプレイス処理の中間層である場合(S42でYes)、入力ニューロンデータの符号ビットをバッファ領域に格納する(S18)。
学習処理(S21)において、学習制御部71は、S22の後、i層目の入力ニューロンデータxのデータサイズがパラメータwのデータサイズより大きいか否か判断する(S43)。学習制御部71は、i層目の入力ニューロンデータxのデータサイズがパラメータwのデータサイズ以下である場合(S43でNo)、ニューロンデータの誤差の勾配を計算してメモリ60に保持する(S44)。そして、学習制御部71は、パラメータの誤差の勾配を計算し、ニューラルネットワークのi層目のパラメータを記憶したメモリ60の記憶領域に上書き保存する(S45)。
一方、学習制御部71は、i層目の入力ニューロンデータxのデータサイズがパラメータwのデータサイズより大きい場合(S43でYes)、i層目がインプレイス処理の中間層であるか否か判断する(S23)。学習制御部71は、i層目がインプレイス処理の中間層でない場合(S23でNo)、パラメータの誤差の勾配を計算してメモリ60に保持する(S46)。なお、i層目がパラメータを使用しない層である場合、学習制御部71は、S46の処理を省略してもよい。そして、学習制御部71は、ニューロンデータの誤差の勾配を計算し、ニューラルネットワークのi層目のニューロンデータを記憶したメモリ60の記憶領域に上書き保存する(S47)。
[効果]
上述してきたように、本実施例に係る情報処理装置10は、インプレイス処理が可能な中間層の入力ニューロンデータxのデータサイズがパラメータwのデータサイズより大きいか否かで処理の内容を切り替える。すなわち、インプレイス処理が可能な中間層の入力ニューロンデータxのデータサイズがパラメータwのデータサイズより大きい場合、実施例1と同様の処理が行われる。一方、インプレイス処理が可能な中間層の入力ニューロンデータxのデータサイズがパラメータwのデータサイズ以下である場合には、次の処理が行われる。情報処理装置10は、学習処理において、ニューロンデータとパラメータのうち、使用メモリ量の小さい方の誤差の勾配を算出してメモリ領域に保持する。そして、情報処理装置10は、使用メモリ量の大きい方の誤差の勾配を算出して認識処理のデータを保持したメモリ領域に上書きする。これにより、情報処理装置10は、学習時における使用メモリ量をさらに削減できる。
次に、実施例3について説明する。実施例3に係る情報処理装置10の構成は、図4に示した実施例1に係る情報処理装置10の構成と略同様であるため、主に異なる部分について説明する。
学習制御部71は、メモリ量計算部51により算出された各層のパラメータの誤差の使用メモリ量のうち、使用メモリ量の最も大きい層の使用メモリ量を特定する。そして、学習制御部71は、学習処理を開始する際に、パラメータ誤差用の記憶領域として、特定した使用メモリ量に対応したメモリ領域を確保する。学習制御部71は、学習処理において、ニューロンデータおよびパラメータがメモリ領域に保持される層については、層ごとに、順に次の処理を行う。学習制御部71は、パラメータの誤差を算出してパラメータ誤差用の記憶領域に当該パラメータの誤差を上書して保持する。次に、学習制御部71は、ニューロンデータの誤差を算出して認識処理のニューロンデータを保持するメモリ領域に当該ニューロンデータの誤差を上書して保持する。次に、学習制御部71は、パラメータ誤差用の記憶領域に保持されたパラメータの誤差を用いて認識処理にて保持したパラメータを更新する。
例えば、情報処理装置10では、図11に示すように、各中間層については、実施例1と同様の処理に加えて、追加的な制御を行う。追加的な制御は、パラメータを使用する層ごとに、パラメータの誤差を算出してパラメータ誤差用の記憶領域90に当該パラメータの誤差を上書して保持する制御を含む。図11は、実施例3におけるニューラルネットワークの計算の流れの一例を示す図である。
例えば、学習制御部71は、活性化関数層(ReLU3)の場合、数字の「15」に示すように、パラメータの誤差を算出し、算出したパラメータの誤差をメモリ60のパラメータ誤差用の記憶領域90に保持させる。次に、学習制御部71は、数字の「16」に示すように、ニューロンデータの誤差を算出してメモリ60の認識処理のニューロンデータを保持するメモリ領域に当該ニューロンデータの誤差を上書して保持させる。次に、学習制御部71は、数字の「17」に示すように、パラメータ誤差用の記憶領域90に保持されたパラメータの誤差を用いて認識処理にて保持したパラメータを更新させる。これにより、図7に示したニューラルネットワークの計算と比較して、各中間層では、ニューロンデータの誤差の勾配を記憶するメモリ領域をさらに削減できる。
本実施例の学習処理では、図11に破線で示したメモリ領域を削減でき、学習時におけるメモリ使用を効率化できる。これにより、例えば、アクセラレータボード22で一度に実行可能なバッチサイズが増加する。これにより、本実施例で説明した学習時における使用メモリ量の削減を適用した場合、入力ニューロンデータの学習にかかる時間を短縮できる。
[処理の流れ]
次に、情報処理装置10が実行する情報処理方法における処理の流れについて説明する。図12は、実施例3に係る情報処理方法の一例を示すフローチャートである。実施例3における情報処理方法は、実施例1における情報処理方法に対して、基本的に同様であるが、以下の点で異なる処理が行われる。
例えば、活性化関数層(ReLU1, ReLU2, ReLU3)がいずれもパラメータを使用せず、他の各中間層がパラメータを使用する場合について例示的に説明する。
メモリ量計算部51は、パラメータiがニューラルネットワークの層数n以上になるまでS5〜S9の処理を繰り返す。パラメータiがニューラルネットワークの層数n以上になると、全体制御部50は、算出されたデータサイズの記憶領域をメモリ60に確保する(S51)。この際、全体制御部50は、算出された各層のパラメータの誤差の使用メモリ量のうち、使用メモリ量の最も大きい層の使用メモリ量を特定する。そして、全体制御部50は、パラメータ誤差用の記憶領域90として、特定した使用メモリ量に対応したメモリ領域を確保する。
学習処理(S21)において、学習制御部71は、i層目がインプレイス処理の中間層でない場合(S23でNo)、パラメータの誤差の勾配を計算してメモリ60のパラメータ誤差用の記憶領域90に保持する(S52)。なお、i層目がパラメータを使用しない層である場合、学習制御部71は、S52の処理を省略してもよい。そして、学習制御部71は、ニューロンデータの誤差の勾配を計算し、ニューラルネットワークのi層目のニューロンデータを記憶したメモリ60の記憶領域に上書き保存する(S53)。そして、学習制御部71は、パラメータ誤差用の記憶領域90に保持されたパラメータの誤差を用いて認識処理にて保持したi層目のパラメータを更新する(S54)。
[効果]
上述してきたように、本実施例に係る情報処理装置10は、ニューラルネットワークの各層のパラメータの誤差の使用メモリ量を計算する。情報処理装置10は、算出された各層の使用メモリ量のうち、使用メモリ量の最も大きい層の使用メモリ量に対応したメモリ領域を確保する。情報処理装置10は、学習処理において、ニューロンデータおよびパラメータがメモリ領域に保持される層については、層ごとに、以下の処理を順に行うように制御を行う。最初に、情報処理装置10は、パラメータの誤差を算出して確保したメモリ領域に当該パラメータの誤差を上書して保持する。次に、情報処理装置10は、ニューロンデータの誤差を算出して認識処理のニューロンデータを保持するメモリ領域に当該ニューロンデータの誤差を上書して保持する。次に、情報処理装置10は、確保したメモリ領域に保持されたパラメータの誤差を用いて認識処理にて保持したパラメータを更新する。これにより、情報処理装置10は、学習時における使用メモリ量をより削減できる。
なお、上記各実施例では、ニューラルネットワークにより画像に写った識別対象を識別する場合を例示した。しかしながら、これらに限定されるものではない。例えば、識別対象は、音声など、ニューラルネットワークが識別対象とするものであれば何れであってもよい。
また、上記各実施例では、ニューラルネットワークとして、畳み込みニューラルネットワーク(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にて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
[情報処理プログラム]
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、情報処理プログラムを実行するコンピュータシステムの一例を説明する。図13は、情報処理プログラムを実行するコンピュータの構成の一例を示す図である。
図13に示すように、コンピュータ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 (6)

  1. メモリと、
    階層ニューラルネットワークにおける第1の中間層であり前記メモリ内の第1のメモリ領域を入力及び出力に共用可能である前記第1の中間層に対するバッファ領域として前記メモリ内に第2のメモリ領域を確保し、前記第1の中間層への入力ニューロンデータの符号を示すビットを特性データとして前記第2のメモリ領域に格納する認識処理を制御する認識制御部と、
    前記第2のメモリ領域に格納された特性データを使用して、前記第1の中間層の誤差に関する計算を行う学習処理を制御する学習制御部と、
    を有することを特徴とする情報処理装置。
  2. 前記認識制御部は、前記第1の中間層への入力ニューロンデータのデータサイズがパラメータのデータサイズより大きい場合、前記第1の中間層に対するバッファ領域として前記メモリ内に前記第2のメモリ領域を確保する
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記第2のメモリ領域の記憶容量は、前記第1のメモリ領域の記憶容量より小さい
    ことを特徴とする請求項1又は2に記載の情報処理装置。
  4. 階層ニューラルネットワークにおける第1の中間層であり第1のメモリ領域を入力及び出力に共用可能である前記第1の中間層に対するバッファ領域として第2のメモリ領域を確保し、前記第1の中間層への入力ニューロンデータの符号を示すビットを特性データとして前記第2のメモリ領域に格納する認識処理を制御する認識制御部と、
    前記第2のメモリ領域に格納された特性データを使用して、前記第1の中間層の誤差に関する計算を行う学習処理を制御する学習制御部と、
    を有することを特徴とする情報処理システム。
  5. 認識処理において、階層ニューラルネットワークにおける第1の中間層であり第1のメモリ領域を入力及び出力に共用可能である前記第1の中間層に対するバッファ領域として第2のメモリ領域を確保し、
    前記認識処理において、前記第1の中間層への入力ニューロンデータの符号を示すビットを特性データとして前記第2のメモリ領域に格納し、
    学習処理において、前記第2のメモリ領域に格納された特性データを使用して、前記第1の中間層の誤差に関する計算を行う、
    処理をコンピュータに実行させることを特徴とする情報処理プログラム。
  6. 認識処理において、階層ニューラルネットワークにおける第1の中間層であり第1のメモリ領域を入力及び出力に共用可能である前記第1の中間層に対するバッファ領域として第2のメモリ領域を確保し、
    前記認識処理において、前記第1の中間層への入力ニューロンデータの符号を示すビットを特性データとして前記第2のメモリ領域に格納し、
    学習処理において、前記第2のメモリ領域に格納された特性データを使用して、前記第1の中間層の誤差に関する計算を行う、
    処理をコンピュータが実行することを特徴とする情報処理方法。
JP2017096814A 2017-05-15 2017-05-15 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法 Active JP6891626B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017096814A JP6891626B2 (ja) 2017-05-15 2017-05-15 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法
US15/966,363 US20180330229A1 (en) 2017-05-15 2018-04-30 Information processing apparatus, method and non-transitory computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017096814A JP6891626B2 (ja) 2017-05-15 2017-05-15 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法

Publications (2)

Publication Number Publication Date
JP2018194974A JP2018194974A (ja) 2018-12-06
JP6891626B2 true JP6891626B2 (ja) 2021-06-18

Family

ID=64096763

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017096814A Active JP6891626B2 (ja) 2017-05-15 2017-05-15 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法

Country Status (2)

Country Link
US (1) US20180330229A1 (ja)
JP (1) JP6891626B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
JP7211069B2 (ja) * 2018-12-25 2023-01-24 富士通株式会社 情報処理装置、情報処理プログラムおよび情報処理方法
US11507702B2 (en) 2019-11-05 2022-11-22 Apple Inc. Secure mode switching in neural processor circuit
US11521062B2 (en) 2019-12-05 2022-12-06 International Business Machines Corporation Neural network training using a data flow graph and dynamic memory management
KR20210092980A (ko) * 2020-01-17 2021-07-27 삼성전자주식회사 스토리지 컨트롤러, 이를 포함하는 스토리지 시스템 및 스토리지 컨트롤러의 동작 방법
CN112270412B (zh) * 2020-10-15 2023-10-27 北京百度网讯科技有限公司 网络算子处理方法、装置、电子设备及存储介质
CN113469344B (zh) * 2021-07-23 2024-04-16 成都数联云算科技有限公司 深度卷积神经网络模型改进方法及系统及装置及介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017073000A1 (ja) * 2015-10-29 2017-05-04 株式会社Preferred Networks 情報処理装置及び情報処理方法
US20170228646A1 (en) * 2016-02-04 2017-08-10 Qualcomm Incorporated Spiking multi-layer perceptron

Also Published As

Publication number Publication date
US20180330229A1 (en) 2018-11-15
JP2018194974A (ja) 2018-12-06

Similar Documents

Publication Publication Date Title
JP6891626B2 (ja) 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法
US10296804B2 (en) Image recognizing apparatus, computer-readable recording medium, image recognizing method, and recognition apparatus
JP6852365B2 (ja) 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法
JP6946572B2 (ja) 加速された量子化積和演算
WO2022042002A1 (zh) 一种半监督学习模型的训练方法、图像处理方法及设备
WO2021218517A1 (zh) 获取神经网络模型的方法、图像处理方法及装置
WO2022042713A1 (zh) 一种用于计算设备的深度学习训练方法和装置
JP7240657B2 (ja) ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム
CN114051615A (zh) 动态处理元件阵列扩展
TW202026858A (zh) 在深度神經網路中利用啟動稀疏性
TWI634488B (zh) 人造神經網路之簡化裝置和簡化方法以及應用於簡化人造神經網路之非暫態電腦可讀取儲存媒體
CN111465943B (zh) 一种集成电路和用于神经网络处理的方法
CN112789627B (zh) 一种神经网络处理器、数据处理方法及相关设备
WO2021042857A1 (zh) 图像分割模型的处理方法和处理装置
CN111738403B (zh) 一种神经网络的优化方法及相关设备
US11144291B1 (en) Loop-oriented neural network compilation
WO2023246819A1 (zh) 一种模型训练方法及相关设备
Hu et al. Quantized STDP-based online-learning spiking neural network
CN114925320B (zh) 一种数据处理方法及相关装置
CN113939801A (zh) 利用自我修正代码减少神经网络的计算量
Krithivasan et al. Dynamic spike bundling for energy-efficient spiking neural networks
US12079734B1 (en) Compilation time reduction for memory and compute bound neural networks
Huttunen Deep neural networks: A signal processing perspective
CN114026571A (zh) 用于并行执行的神经网络操作重新排序
JP7211069B2 (ja) 情報処理装置、情報処理プログラムおよび情報処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210326

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210510

R150 Certificate of patent or registration of utility model

Ref document number: 6891626

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150