JP2018005420A - 情報処理装置、学習ネットワーク学習値算出プログラムおよび学習ネットワーク学習値算出方法 - Google Patents

情報処理装置、学習ネットワーク学習値算出プログラムおよび学習ネットワーク学習値算出方法 Download PDF

Info

Publication number
JP2018005420A
JP2018005420A JP2016129309A JP2016129309A JP2018005420A JP 2018005420 A JP2018005420 A JP 2018005420A JP 2016129309 A JP2016129309 A JP 2016129309A JP 2016129309 A JP2016129309 A JP 2016129309A JP 2018005420 A JP2018005420 A JP 2018005420A
Authority
JP
Japan
Prior art keywords
value
elements
region
layer
error gradient
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.)
Pending
Application number
JP2016129309A
Other languages
English (en)
Inventor
明彦 笠置
Akihiko Kasaoki
明彦 笠置
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 JP2016129309A priority Critical patent/JP2018005420A/ja
Priority to US15/496,361 priority patent/US20180005113A1/en
Publication of JP2018005420A publication Critical patent/JP2018005420A/ja
Pending legal-status Critical Current

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
    • 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
    • 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

Landscapes

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

Abstract

【課題】畳み込み層における演算量を削減すること。【解決手段】情報処理装置100は、Pooling層110bと、畳み込み層110aとを有する。Pooling層110bは、複数の層を有する学習ネットワークの学習値算出時において、上層から複数の要素を有する誤差勾配の情報を取得する。畳み込み層110aは、重み勾配に含まれる第1要素の値を算出する場合に、下層から取得した情報に含まれる複数の要素のうち、第1要素に対応する領域を特定し、特定した領域の要素を複数の部分領域に分割する。畳み込み層110aは、部分領域に含まれる要素の合計値と部分領域に対応する誤差勾配の要素の値とに基づく値を部分領域毎に算出し、算出した各値を加算することで、第1要素を算出する処理を実行する。【選択図】図4

Description

本発明は、情報処理装置等に関する。
CNN(Convolutional Neural Network)は、畳み込み演算を用いて画像の被写体を学習する多層のネットワークであり、処理内容が異なる層の組み合わせによってできている。図21および図22は、従来のCNNを説明するための図である。図21および図22に示すように、CNNは、畳み込み層10a、全結合層10b、シグモイド層10cを含む。
CNNは、画像を入力したときのネットワークの答えと正しい答えとの差分を反映させて、汎用的に正解を導出できるようにネットワークの学習を行う。ネットワークの学習では、順伝播と、逆伝播との二つのフェイズが存在し、順伝播と逆伝播とを繰り返し実行する。
図21を用いて、順伝播の処理について説明する。順伝播では、画像1a,2a,3a,4aをネットワークに入力し、各画像に対する確率ベクトル1b,2b,3b,4bを算出する。ネットワークの畳み込み層10aにて、カーネル5と畳み込み演算を実行することで、入力された画像1a〜4aから特徴量を抽出する。抽出された特徴量は、全結合層10bによって特徴量ベクトルに変換される。特徴量ベクトルは、シグモイド層10cによって、確率ベクトル1b〜4bに変換される。
図21に示す確率ベクトル1bは、画像1aが「0」である確率が100%であることを示している。確率ベクトル2bは、画像2aが「1」である確率が100%であることを示している。確率ベクトル3bは、画像3aが「3」である確率が100%であることを示している。確率ベクトル4bは、画像4aが「2」である確率が100%であることを示している。
図22を用いて、逆伝播の処理について説明する。逆伝播では、順伝播によってネットワークが出力した確率ベクトル1b〜4bと正解との誤差勾配を計算し、誤差勾配を順伝播とは逆順にネットワークを伝播させていく。畳み込み層10a、全結合層10b、シグモイド層10cでは、逆向きに次の層へ送るための誤差勾配の計算と、自身の層が正しい答えを導くための正しい重みとの重み勾配を計算する。
続いて、CNNの中からAverage-Poolingを行うPooling層と畳み込み層が連続している部分に着目する。図21,図22では説明を省略したが、Pooling層は、畳み込み層10aと全結合層10bとの間に存在する層である。図23は、従来のPooling層と畳み込み層との処理の一例を説明するための図である。図23において、data1は、図21で説明した画像1a〜4aに対応するデータである。誤差勾配diff1は、畳み込み層10aから出力される誤差勾配である。
重みw_data2は、畳み込み層10aで用いられる重みであり、カーネルに対応する。畳み込み層10aは、順伝播の処理において、重みw_data2を用いて畳み込み計算を行うことで、data1をdata2に変換し、Pooling層10dに出力する。
一方、畳み込み層10aは、逆伝播の処理において、Pooling層10dから誤差勾配diff2を取得し、誤差勾配diff2を基にして、重み勾配w_diff2を算出する。畳み込み層10aは、重みw_data2から重み勾配w_diff2を減算した値によって、重みw_data2を更新する。また、畳み込み層10aは、誤差勾配diff2と重み勾配w_diff2とを基にして、誤差勾配diff1を算出し、下層に出力する。
Pooling層10dは、順伝播の処理において、data2に対してAverage-Poolingを行うことで、data3を生成する。誤差勾配diff3は、Pooling層10dが、逆伝播の処理において、上層から取得する誤差勾配である。Pooling層10dは、誤差勾配diff3を、誤差勾配diff2に変換して、畳み込み層10aに出力する。
特開2015−210672号公報 特開2008−310524号公報 特開2015−52832号公報
しかしながら、上述した従来技術では、畳み込み層における演算量が大きいという問題がある。
1つの側面では、本発明は、畳み込み層における演算量を削減することができる情報処理装置、学習ネットワーク学習値算出プログラムおよび学習ネットワーク学習値算出方法を提供することを目的とする。
第1の案では、情報処理装置は、Pooling層と、畳み込み層とを有する。Pooling層は、複数の層を有する学習ネットワークの学習値算出時において、上層から複数の要素を有する誤差勾配の情報を取得する。畳み込み層は、下層から情報を取得した場合に、前記情報に含まれる複数の要素に対して横方向および縦方向の累積加算を実行することで前記情報を積分画像に変換する。畳み込み層は、重み勾配に含まれる第1要素の値を算出する場合に、積分画像に含まれる複数の要素のうち、第1要素に対応する領域を特定し、特定した領域の要素を複数の部分領域に分割する。畳み込み層は、積分画像の特徴を基にして、部分領域に含まれる要素の合計値を算出する。畳み込み層は、部分領域に含まれる要素の合計値と部分領域に対応する誤差勾配の要素の値とに基づく値を部分領域毎に算出し、算出した各値を加算することで、第1要素を算出する処理を実行する。
畳み込み層における演算量を削減することができる。
図1は、従来のCNNが重み勾配w_diff2を算出する処理の一例を説明するための図(1)である。 図2は、従来のCNNが重み勾配w_diff2を算出する処理の一例を説明するための図(2)である。 図3は、従来のCNNが重み勾配w_diff2を算出する処理手順を示すフローチャートである。 図4は、本実施例1に係る情報処理装置の構成を示す機能ブロック図である。 図5は、本実施例1に係る畳み込み層の処理を説明するための図である。 図6は、入力データを積分画像に変換する処理の一例を説明するための図である。 図7は、積分画像を用いて矩形領域の総和を算出する処理を説明するための図である。 図8は、積分画像の特性を利用した畳み込み層の処理を説明するための図である。 図9は、本実施例1に係る情報処理装置の処理手順を示すフローチャートである。 図10は、重み勾配w_diff2を求める計算量を説明するための図である。 図11は、従来のCNNが誤差勾配を算出する処理の一例を説明するための図である。 図12は、従来のCNNが誤差勾配diff2を算出する処理手順を示すフローチャートである。 図13は、本実施例2に係る情報処理装置の構成を示す機能ブロック図である。 図14は、本実施例2に係る畳み込み層の処理を説明するための図(1)である。 図15は、本実施例2に係る畳み込み層の処理を説明するための図(2)である。 図16は、矩形差分テーブルを説明するための図である。 図17は、本実施例2に係る畳み込み層が生成する矩形差分テーブルの一例を示す図である。 図18は、本実施例2に係る情報処理装置の処理手順を示すフローチャートである。 図19は、誤差勾配diff1を求める計算量を説明するための図である。 図20は、情報処理装置のハードウェア構成の一例を示す図である。 図21は、従来のCNNを説明するための図(1)である。 図22は、従来のCNNを説明するための図(2)である。 図23は、従来のPooling層と畳み込み層との処理の一例を説明するための図である。
以下に、本願の開示する情報処理装置、学習ネットワーク学習値算出プログラムおよび学習ネットワーク学習値算出方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
本実施例1の説明を行う前に、従来のCNNが重み勾配w_diff2を算出する処理の一例について説明する。図1および図2は、従来のCNNが重み勾配w_diff2を算出する処理の一例を説明するための図である。図1に示すように、Pooling層10dは、上層から誤差勾配diff3を取得すると、誤差勾配diff3を平均的に拡張することで、誤差勾配diff2を生成する。
図1に示す例では、誤差勾配diff3(2×2)が与えられ、Pooling層10dは、誤差勾配diff3を誤差勾配diff2(10×10)に拡張する。誤差勾配diff3の各要素をP1、P2、P3、P4とする。Pooling層10dは、各要素P1、P2、P3、P4を、5×5の領域となるdiff2-1、diff2-2、diff2-3、diff2-4へと拡張する。逆伝播のAverage-Poolingでは、各要素P1、P2、P3、P4の値を25で割った値を、領域diff2-1、diff2-2、diff2-3、diff2-4にそれぞれ格納する。
図2の説明に移行する。data1および誤差勾配diff2に示す各数値はインデックスである。畳み込み層10aは、data1をカーネルサイズ毎に切り出して、誤差勾配diff2の対応する値でスカラー倍する。図2に示す例では、カーネルサイズを3×3とする。tmp_mtは行列を示すものである。各行列tmp_mtに含まれるX[i]は、data1のインデックスiに対応する値を示す。z[i]は、data2のインデックスiに対応する値を示す。
例えば、畳み込み層10aは、重み勾配w_diff2に含まれるwd1〜wd9の値を下記のように算出する。
wd1=X[1]×z[1]+X[2]×z[2]+・・・+X[118]×z[100]
wd2=X[2]×z[1]+X[3]×z[2]+・・・+X[119]×z[100]
wd3=X[3]×z[1]+X[4]×z[2]+・・・+X[120]×z[100]
wd4=X[13]×z[1]+X[14]×z[2]+・・・+X[130]×z[100]
wd5=X[14]×z[1]+X[15]×z[2]+・・・+X[131]×z[100]
wd6=X[15]×z[1]+X[16]×z[2]+・・・+X[132]×z[100]
wd7=X[25]×z[1]+X[26]×z[2]+・・・+X[118]×z[100]
wd8=X[26]×z[1]+X[27]×z[2]+・・・+X[143]×z[100]
wd9=X[27]×z[1]+X[28]×z[2]+・・・+X[144]×z[100]
図2に示す例では、3×3の行列tmp_mtが100枚作成される。従来の畳み込み層10aは、100枚の行列tmp_mtをスカラー倍した後に、全て加算することで、重み勾配w_diff2を算出する。
続いて、従来のCNNが重み勾配w_diff2を算出する処理手順の一例について説明する。図3は、従来のCNNが重み勾配w_diff2を算出する処理手順を示すフローチャートである。図3に示すように、CNNのPooling層10dは、誤差勾配diff3を取得する(ステップS10)。Pooling層10dは、誤差勾配diff3の各要素を、誤差勾配diff2の要素数比率で割る(ステップS11)。Pooling層10dは、誤差勾配diff2の各領域にそれぞれ要素数比率で割った値を代入する(ステップS12)。
CNNの畳み込み層10aは、順伝播のdata1を取得する(ステップS13)。畳み込み層10aは、順伝播のdata1から矩形に切り取った行列tmp_mtの各要素X[i]を誤差勾配diff2の要素倍(z[i]倍)する(ステップS14)。畳み込み層10aは、誤差勾配diff2の要素数分の行列tmp_mtを作成したか否かを判定する(ステップS15)。
畳み込み層10aは、誤差勾配diff2の要素数分の行列tmp_mtを作成していない場合には(ステップS15,No)、ステップS14に移行する。一方、畳み込み層10aは、誤差勾配diff2の要素数分の行列tmp_mtを作成した場合には(ステップS15,Yes)、全ての行列tmp_mtを加算して、重み勾配w_diff2を算出する(ステップS16)。畳み込み層10aは、重み勾配w_diff2を出力する(ステップS17)。
従来のCNNが重み勾配w_diff2を算出する処理では、例えば、図3のステップS13〜S16に示した演算量が大きくなっている。
次に、本実施例1に係る情報処理装置の構成について説明する。図4は、本実施例1に係る情報処理装置の構成を示す機能ブロック図である。図4に示すように、この情報処理装置100は、入力部50aと、受付部50bと、CNN処理部110とを有する。
入力部50aは、CNN処理部110に、学習対象となる画像データを入力する処理部である。また、入力部50aは、入力した画像データに対する確率ベクトルの正解情報を、受付部50bに出力する。
受付部50bは、CNN処理部110から、入力部50aによって入力された画像データに対する確率ベクトルの情報を受け付ける処理部である。また、受付部50bは、CNN処理部110から受け付けた確率ベクトルと、正解情報との差分を算出することで、誤差勾配を求め、誤差勾配の情報を、CNN処理部110に出力する。
CNN処理部110は、画像データが入力されたときのネットワークの答えと正解情報との誤差勾配を反映させて、汎用的に正解を導出できるようにネットワークの学習を行う処理部である。CNN処理部110は、畳み込み層110a、Pooling層110b、全結合層110c、シグモイド層110dを有する。CNN処理部110は、例えば、ASIC(Application Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)などの集積装置に対応する。また、CNN処理部110は、例えば、CPUやMPU(Micro Processing Unit)等の電子回路に対応する。
CNN処理部110が実行するネットワークの学習では、順伝播と、逆伝播との二つのフェイズが存在し、順伝播と逆伝播とを繰り返し実行する。
CNN処理部110が実行する順伝播の処理について説明する。順伝播において、CNN処理部110は、画像データの入力を受け付けると、畳み込み層110aにて、カーネルと畳み込み演算を実行し、入力された画像データから特徴量を抽出する。抽出された特徴量は、Pooling層110bにより、Average-Poolingが実行された後、全結合層110cに入力される。全結合層110cは、特徴量を特徴量ベクトルに変換する。特徴量ベクトルは、シグモイド層110dによって、確率ベクトルに変換される。
CNN処理部110が実行する逆伝播の処理について説明する。CNN処理部110は、確率ベクトルと正解情報との誤差勾配の情報を受付部50bから取得し、誤差勾配を順伝播とは逆順にネットワークを伝播させていく。畳み込み層110a、全結合層110c、シグモイド層110dでは、逆向きに次の層へ送るための誤差勾配の計算と、自身の層が正しい答えを導くための正しい重みとの重み勾配を計算する。
ここで、本実施例1に係るCNN処理部110は、畳み込み層110aで重み勾配w_diff2を算出する手法が、従来のCNNと比較して異なるので、畳み込み層110aが、重み勾配w_diff2を算出する処理について説明する。
図5は、本実施例1に係る畳み込み層の処理を説明するための図である。図5に示すdata1、diff2の数値は、インデックスである。図5において、誤差勾配diff3は、Pooling層110bが上層から取得した誤差勾配である。また、Pooling層110bは、図1で説明したPooling層10dと同様にして、誤差勾配diff3を誤差勾配diff2(10×10)に拡張する。例えば、Pooling層110bは、各要素P1、P2、P3、P4を、5×5の領域となるdiff2-1、diff2-2、diff2-3、diff2-4へと拡張する。逆伝播のAverage-Poolingでは、各要素P1、P2、P3、P4の値を25で割った値を、領域diff2-1、diff2-2、diff2-3、diff2-4にそれぞれ格納する。なお、領域diff2-1、diff2-2、diff2-3、diff2-4の大きさがn×nである場合には、Pooling層110bは、各要素P1、P2、P3、P4の値をn×nで割った値を、領域diff2-1、diff2-2、diff2-3、diff2-4にそれぞれ格納する。
ここで、重み勾配w_diff2に含まれるwd1を算出する例について検討する。wd1は、式(1)によって算出される。
wd1=data1[1]*diff2[1]+data1[2]*diff2[1]+・・・+data1[117]*diff2[99]+data1[118]*diff2[100]・・・(1)
ここで、領域diff2-1、diff2-2、diff2-3、diff2-4に含まれる値は全て同じであることがわかっている。従って、上記の式(1)を下記の式(2)に変更することが可能である。
wd1=P1/25*sum(data1[1],data1[53])+P2/25*sum(data1[6],data1[58])+P3/25*sum(data1[61],data1[113])+P4/25*sum(data1[66],data1[118])・・・(2)
式(2)において、sum(a,b)は、a,bからなる矩形内の値の総和を意味する。例えば、sum(data1[1],data1[53])は、data1のインデックス1〜5、13〜17、25〜29、37〜41、49〜53の値を合計した値に対応する。
すなわち、畳み込み層110aは、式(1)に示す問題を、式(2)に示すような矩形の総和を求める問題に変換する。例えば、畳み込み層110aは、重み勾配w_diff2に含まれる要素wd1の値を算出する場合に、要素wd1に対応するdata1上の計算範囲A1を特定する。畳み込み層110aは、計算範囲A1を、誤差勾配diff3の要素数に応じた矩形に分割する。畳み込み層110aは、分割した矩形に含まれる値の合計値と、誤差勾配diff3の要素に対応した値とをそれぞれ乗算し、乗算した結果を合計することで、wd1の値を算出する。
同様に、畳み込み層110aは、要素wdiの値を計算する場合には、要素wdiに対応するdata1上の計算範囲Aiを特定する。畳み込み層110aは、計算範囲Aiを、誤差勾配diff3の要素数に応じた矩形に分割する。畳み込み層110aは、分割した矩形に含まれる値の合計値と、誤差勾配diff3の要素に対応した値とをそれぞれ乗算し、乗算した結果を合計することで、要素wdiの値を算出する。
ところで、畳み込み層110aは、data1を下層から取得した場合に、data1を積分画像に変換しておく。後述するように、積分画像を利用することで、畳み込み層110aは、重み勾配w_diff2を算出する場合の処理負荷を軽減することができる。まず、データを積分画像に変換する処理の一例について説明した後、積分画像を用いて重み勾配w_diff2を算出する処理について説明する。
図6は、入力データを積分画像に変換する処理の一例を説明する。ここでは説明のため、変換対象とする入力データをデータ20aとする。後述するように、Column-wise prefix-sum、Row-wise prefix-sumを順に実行することで、データ20aに対する積分画像20cが生成される。
畳み込み層110aは、データ20aの列方向について、Column-wise prefix-sumを実行する。Column-wise prefix-sumは、着目するセルの値と、着目するセルの一つ上のセルの値を加算する処理を、2行目のセルから下方向のセルに向かって順に実行する処理である。畳み込み層110aが、データ20aに対して、Column-wise prefix-sumを実行することで、データ20bが生成される。
続いて、畳み込み層110aは、データ20bの行方向について、Row-wise prefix-sumを実行する。Row-wise prefix-sumは、着目するセルの値と、着目するセルの一つ左のセルの値を加算する処理を、2行目のセルから右方向のセルに向かって順に実行する処理である。畳み込み層110aが、データ20bに対して、Row-wise prefix-sumを実行することで、積分画像20cが生成される。
積分画像を用いることで、任意の矩形領域の総和を容易に算出することが可能となる。図7は、積分画像を用いて矩形領域の総和を算出する処理を説明するための図である。例えば、データ20aの矩形領域21の総和を求める場合には、下記により算出することができる。
矩形領域21の総和=セル21dの値(66)−セル21cの値(19)−セル21bの値(21)+セル21aの値(4)=30
畳み込み層110aは、data1を下層から取得した場合に、上記のColumn-wise prefix-sum、Row-wise prefix-sumを実行することで、data1の積分画像を生成する。以下の説明では、data1の積分画像をdata1(SAT)と表記する。
上述した積分画像の特性を利用することで、式(2)を式(3)に変換することができる。図8は、積分画像の特性を利用した畳み込み層の処理を説明するための図である。式(3)において、SAT[i]は、積分画像に変換される前のdata1において、インデックス1を矩形の左上端、インデックスiを矩形の右下端とする矩形に含まれる値の合計値を示すものである。
wd1=P1/25*SAT[53]+P2/25*(SAT[58]-SAT[53])+P3/25*(SAT[113]-SAT[53])+P4/25*(SAT[118]-SAT[113]-SAT[58]+SAT[53])・・・(3)
ここでは、説明の便宜上、wd1を算出する場合について説明したが、wd2〜wd9についても同様に積分画像の特性を用いて算出することができる。
次に、本実施例1に係る情報処理装置の処理手順について説明する。図9は、本実施例1に係る情報処理装置の処理手順を示すフローチャートである。図9に示すように、情報処理装置100の畳み込み層110aは、Pooling層110bから誤差勾配diff3を取得する(ステップS101)。畳み込み層110aは、順伝播のdata1(SAT)を算出する(ステップS102)。
畳み込み層110aは、data1(SAT)から誤差勾配diff3に対応した矩形総和を取得する(ステップS103)。畳み込み層110aは、誤差勾配diff3の1要素と矩形総和とを乗算する(ステップS104)。畳み込み層110aは、矩形総和を要素数比率で割って加算する(ステップS105)。畳み込み層110aは、誤差勾配diff3の要素数回実行したか否かを判定する(ステップS106)。畳み込み層110aは、誤差勾配diff3の要素数回実行していない場合には(ステップS106,No)、ステップS103に移行する。
一方、畳み込み層110aは、誤差勾配diff3の要素数回実行した場合には(ステップS106,Yes)、重み勾配w_diff2の要素数回実行したか否かを判定する(ステップS107)。畳み込み層110aは、重み勾配w_diff2の要素数回実行してない場合には(ステップS107,No)、ステップS103に移行する。
一方、畳み込み層110aは、重み勾配w_diff2の要素数回実行した場合には(ステップS107,Yes)、重み勾配w_diff2を出力する(ステップS108)。
次に、本実施例1に係る情報処理装置100の効果について説明する。情報処理装置100の畳み込み層110aは、逆伝播の処理において、重み勾配w_diff2を算出する場合に、従来の計算問題を、data1の矩形の総和を求める計算問題に置き換えることにより、演算量を削減することができる。
ここで、従来の計算問題は、data1をカーネルサイズ毎に切り出し、誤差勾配diff2に対応する値でスカラー倍した後に、各行列の値を合計する計算問題である。一方、畳み込み層110aは、重み勾配w_diff2の要素に対応するdata1上の計算範囲を特定し、計算範囲を、誤差勾配diff3の要素数に応じた矩形に分割する。そして、畳み込み層110aは、分割した矩形に含まれる値の総和と、誤差勾配diff3の要素に対応した値とをそれぞれ乗算し、乗算した結果を合計することで、重み勾配w_diff2の各要素の値を算出する。
また、畳み込み層110aは、分割した矩形に含まれる値の総和を算出する場合に、積分画像の特性を用いて、矩形の総和を算出するため、更に演算量を削減することができる。
図10は、重み勾配w_diff2を求める計算量を説明するための図である。従来技術の計算量は、乗算部分についてはdk(N−k+1)+dpとなり、加算部分については、dk(N−k+1)となる。一方、本実施例1に係る情報処理装置100の計算量は、乗算部分についてはdk+dpとなり、加算部分については4dk+dp+2Nとなる。ここで、data1のサイズをN×N、重み勾配w_diff2のサイズをk×k、誤差勾配diff3のサイズをp×p、カーネル数をdとする。各記号の大小関係は、「N>>p,N>>k」となる。このため、Nの値が計算量に与える影響が大きいため、従来技術の計算量が、情報処理装置100の計算量よりも大きいことがわかる。
本実施例2の説明を行う前に、従来のCNNが誤差勾配diff1を算出する処理の一例を説明する。図11は、従来のCNNが誤差勾配を算出する処理の一例を説明するための図である。なお、従来のCNNでは、図1で説明したように、Pooling層10dが、上層から誤差勾配diff3を取得すると、誤差勾配diff3を平均的に拡張することで、誤差勾配diff2を生成する。
図11において、誤差勾配diff2および重み勾配w_diff2に示す各数値はインデックスである。各行列tmp_mtに含まれるw[i]は、重み勾配w_diff2のインデックスiに対応する値を示す。diff2[i]は、誤差勾配diff2のインデックスiに対応する値を示す。
誤差勾配diff2には、インデックス1〜100の要素が存在するため、畳み込み層10aは、重み勾配w_diff2を誤差勾配diff2の各要素でスカラー倍して、100枚の3×3の行列tmp_mtを作成する。畳み込み層10aは、100枚の3×3の行列tmp_mtを、誤差勾配diff1の対応する領域へ加算する処理を繰り返し実行する。
誤差勾配diff1の各インデックスの値の初期値は0となっている。畳み込み層10aは、重み(カーネル)w_data2の各値にdiff2[1]を乗算した値と、領域diff1-1の該当するインデックスの値とを加算した値によって、領域diff1-1の該当するインデックスの値を更新する。例えば、畳み込み層10aは、w[1]×diff2[1]と、diff1-1のインデックス1の値とを加算した値によって、diff1-1のインデックス1の値を更新する。畳み込み層10aは、w[2]×diff2[1]と、diff1-1のインデックス2の値とを加算した値によって、diff1-1のインデックス2の値を更新する。畳み込み層10aは、領域diff1-1の他のインデックス3,13,14,15,25,26,27の値についても同様に更新する。
畳み込み層10aは、重みw_data2の各値にdiff2[2]を乗算した値と、領域diff1-2の該当するインデックスの値とを加算した値によって、領域diff1-2の該当するインデックスの値を更新する。上記のように、畳み込み層10aは、w_data2×diff2[i]を変更しつつ、誤差勾配diff1の対象となる領域を移動させながら、上記処理を繰り返し実行することで、誤差勾配diff1のインデックスの値を更新していき、最終的な誤差勾配diff1を生成する。
続いて、従来のCNNが誤差勾配diff1を算出する処理手順の一例について説明する。図12は、従来のCNNが誤差勾配diff2を算出する処理手順を示すフローチャートである。図12に示すように、CNNのPooling層10dは、誤差勾配diff3を取得する(ステップS20)。Pooling層10dは、誤差勾配diff3の各要素を、誤差勾配diff2の要素数比率で割る(ステップS21)。Pooling層10dは、誤差勾配diff2の各領域にそれぞれ要素数比率で割った値を代入する(ステップS22)。
CNNの畳み込み層10aは、重み(カーネル)w_data2を取得する(ステップS23)。畳み込み層10aは、重みw_data2の各要素を誤差勾配diff2の各要素で乗算する(ステップS24)。畳み込み層10aは、誤差勾配diff2の要素数分の行列tmp_mtを作成したか否かを判定する(ステップS25)。畳み込み層10aは、誤差勾配diff2の要素数分の行列tmp_mtを作成していない場合には(ステップS25,No)、ステップS24に移行する。
畳み込み層10aは、誤差勾配diff2の要素数分の行列tmp_mtを作成した場合には(ステップS25,Yes)、行列tmp_mtの各値を誤差勾配diff1の対応するインデックスの値に加算する(ステップS26)。畳み込み層10aは、全ての行列tmp_mtに対して実行したか否かを判定する(ステップS27)。
畳み込み層10aは、全ての行列tmp_mtに対して実行していない場合には(ステップS27,No)、ステップS26に移行する。畳み込み層10aは、全ての行列tmp_mtに対して実行した場合には(ステップS27,Yes)、誤差勾配diff1を出力する(ステップS28)。
次に、本実施例2に係る情報処理装置の構成について説明する。図13は、本実施例2に係る情報処理装置の構成を示す機能ブロック図である。図13に示すように、この情報処理装置200は、入力部50aと、受付部50bと、CNN処理部210とを有する。
入力部50a、受付部50bに関する説明は、図4で説明した入力部50a、受付部50bに関する説明と同様であるため、ここでは説明を省略する。
CNN処理部210は、画像データが入力されたときのネットワークの答えと正解情報との誤差勾配を反映させて、汎用的に正解を導出できるようにネットワークの学習を行う処理部である。CNN処理部210は、畳み込み層210a、Pooling層110b、全結合層110c、シグモイド層110dを有する。CNN処理部210は、例えば、ASICや、FPGAなどの集積装置に対応する。また、CNN処理部210は、例えば、CPUやMPU等の電子回路に対応する。
CNN処理部210が実行するネットワークの学習では、順伝播と、逆伝播との二つのフェイズが存在し、順伝播と逆伝播とを繰り返し実行する。
CNN処理部210が実行する順伝播の処理について説明する。順伝播において、CNN処理部210は、画像データの入力を受け付けると、畳み込み層210aにて、カーネルと畳み込み演算を実行し、入力された画像データから特徴量を抽出する。抽出された特徴量は、Pooling層110bにより、Average-Poolingが実行された後、全結合層110cに入力される。全結合層110cは、特徴量を特徴量ベクトルに変換する。特徴量ベクトルは、シグモイド層110dによって、確率ベクトルに変換される。
CNN処理部210が実行する逆伝播の処理について説明する。CNN処理部210は、確率ベクトルと正解情報との誤差勾配の情報を受付部50bから取得し、誤差勾配を順伝播とは逆順にネットワークを伝播させていく。畳み込み層210a、全結合層110c、シグモイド層110dでは、逆向きに次の層へ送るための誤差勾配の計算と、自身の層が正しい答えを導くための正しい重みとの重み勾配を計算する。
ここで、本実施例2に係るCNN処理部210は、畳み込み層210aで誤差勾配diff1を算出する手法が、従来のCNNと比較して異なるので、畳み込み層210aが、誤差勾配diff1を算出する処理について説明する。
図14は、本実施例2に係る畳み込み層の処理を説明するための図(1)である。図14に示す誤差勾配diff1、diff2の数値は、インデックスである。誤差勾配diff3は、Pooling層110bが上層から取得した誤差勾配である。また、Pooling層110bは、図1で説明したPooling層10dと同様にして、誤差勾配diff3を誤差勾配diff2(10×10)に拡張する。例えば、Pooling層110bは、各要素P1、P2、P3、P4を、5×5の領域となるdiff2-1、diff2-2、diff2-3、diff2-4へと拡張する。逆伝播のAverage-Poolingでは、各要素P1、P2、P3、P4の値を25で割った値を、領域diff2-1、diff2-2、diff2-3、diff2-4にそれぞれ格納する。
このため、領域diff2-1の全てのインデックスの値は同じである。この特性により、重みw_data2の各値にdiff2[i]を乗算することで得られる行列は全て同じとなる(i=1〜5,11〜15,21〜25,31〜35,41〜45)。例えば、重みw_data2の各値をP1/25でスカラー倍した行列と同じになる。重みw_data2の各値をP1/25でスカラー倍した行列を、行列tmp_mt1と表記する。
領域diff2-2の全てのインデックスの値は同じである。この特性により、重みw_data2の各値にdiff2[i]を乗算することで得られる行列は全て同じとなる(i=6〜10,16〜20,26〜30,36〜40,46〜50)。例えば、重みw_data2の各値をP2/25でスカラー倍した行列と同じになる。重みw_data2の各値をP2/25でスカラー倍した行列を、行列tmp_mt2と表記する。
領域diff2-3の全てのインデックスの値は同じである。この特性により、重みw_data2の各値にdiff2[i]を乗算することで得られる行列は全て同じとなる(i=51〜55,61〜65,71〜75,81〜85,91〜95)。例えば、重みw_data2の各値をP3/25でスカラー倍した行列と同じになる。重みw_data2の各値をP3/25でスカラー倍した行列を、行列tmp_mt3と表記する。
領域diff2-4の全てのインデックスの値は同じである。この特性により、重みw_data2の各値にdiff2[i]を乗算することで得られる値は全て同じとなる(i=56〜60,66〜70,76〜80,86〜90,96〜100)。例えば、重みw_data2の各値をP4/25でスカラー倍した行列と同じになる。重みw_data2の各値をP4/25でスカラー倍した行列を、行列tmp_mt4と表記する。
ここで、畳み込み層210aは、行列tmp_mt1の値を、重みw_data2のサイズ毎に、領域diff1-1へ加算する処理を繰り返し実行する。領域diff1-1の左上端のインデックスは「1」、右下端のインデックスは「79」である。重みw_data2のサイズを3×3とすると、領域diff1-1のうち3×3のウィンドウ毎に、処理を行うことになる。誤差勾配diff1の各インデックスの値の初期値を0とする。
まず、畳み込み層210aは、3×3のウィンドウを領域diff1-1の1〜3,13〜15,25〜27に設定して下記の処理を行う。畳み込み層210aは、w[1]×P1/25の値と、diff1-1のインデックス1の値とを加算した値によって、diff1-1のインデックス1の値を更新する。続いて、畳み込み層210aは、w[2]×P1/25の値と、diff1-1のインデックス2の値とを加算した値によって、diff1-1のインデックス2の値を更新する。畳み込み層210aは、インデックス3,13〜15,25〜27についても同様にして値を更新する。
畳み込み層210aは、3×3のウィンドウを領域diff1-1の2〜4,14〜16,26〜28に設定して下記の処理を行う。畳み込み層210aは、w[1]×P1/25の値と、diff1-1のインデックス1の値とを加算した値によって、diff1-1のインデックス2の値を更新する。続いて、畳み込み層210aは、w[2]×P1/25の値と、diff1-1のインデックス3の値とを加算した値によって、diff1-1のインデックス3の値を更新する。畳み込み層210aは、インデックス4,14〜16,26〜28についても同様にして値を更新する。
畳み込み層210aは、上記の手順によって、ウィンドウをずらしながら、領域diff1-1のインデックスの値を更新する。誤差勾配diff2の要素は25個なので、畳み込み層210aは、ウィンドウをずらして、インデックスを更新する処理を25回繰り返す。
上述した領域diff1-1へ加算する処理と同様の処理により、畳み込み層210aは、行列tmp_mt2の値を、重みw_data2のサイズ毎に、領域diff1-2へ加算する処理を繰り返し実行する。領域diff1-2の左上端のインデックスは「6」、右下端のインデックスは「84」である。
上述した領域diff1-1へ加算する処理と同様の処理により、畳み込み層210aは、行列tmp_mt3の値を、重みw_data2のサイズ毎に、領域diff1-3へ加算する処理を繰り返し実行する。領域diff1-3の左上端のインデックスは「61」、右下端のインデックスは「139」である。
上述した領域diff1-1へ加算する処理と同様の処理により、畳み込み層210aは、行列tmp_mt4の値を、重みw_data2のサイズ毎に、領域diff1-4へ加算する処理を繰り返し実行する。領域diff1-4の左上端のインデックスは「66」、右下端のインデックスは「144」である。
ところで、図14で説明した畳み込み層210aの計算問題を、複数毎の同値の矩形領域を加算する計算問題に置き換えることで、演算量を削減することができる。図15は、本実施例2に係る畳み込み層の処理を説明するための図(2)である。例えば、3×3の行列tmp_mtを加算した後のdiff1-1の各要素を考えると、diff1-1の行列は、5×5の同値の行列を、重みw_data2の要素分だけ用意し、diff1-1に加算したものと等価である。
すなわち、図14で説明した処理では、領域diff1-1の各要素(インデックス)の値を算出する場合に、3×3の行列tmp_mt1を25枚用意して加算していたが、図15に示すように、5×5の行列を9枚用意して、加算していく処理に変換することができる。
5×5の行列は、行列tmp_nt1〜tmp_nt9となる。なお、図15において、行列tmp_nt3〜tmp_nt8の図示を省略する。行列mp_nt1の各要素には、w[1]をP1/25でスカラー倍した値が設定される。行列mp_nt2の各要素には、w[2]をP1/25でスカラー倍した値が設定される。行列mp_nt3の各要素には、w[3]をP1/25でスカラー倍した値が設定される。行列mp_nt4の各要素には、w[4]をP1/25でスカラー倍した値が設定される。行列mp_nt5の各要素には、w[5]をP1/25でスカラー倍した値が設定される。行列mp_nt6の各要素には、w[6]をP1/25でスカラー倍した値が設定される。行列mp_nt7の各要素には、w[7]をP1/25でスカラー倍した値が設定される。行列mp_nt8の各要素には、w[8]をP1/25でスカラー倍した値が設定される。行列mp_nt9の各要素には、w[9]をP1/25でスカラー倍した値が設定される。
畳み込み層210aは、5×5の行列tmp_nt1〜tmp_nt9を利用して、領域diff1-1の各要素の値を算出する場合には、矩形差分テーブルを作成し、この矩形差分テーブルを利用して、領域diff1-1の各要素の値を算出する。
図16は、矩形差分テーブルを説明するための図である。例えば、ステップS30に示すように、領域A1に加算する行列を行列tmp1とし、行列tmp1に設定される値を全て同値の「5」とする。領域A1に行列tmp1を加算することで、領域A1の各要素には5が設定されることになる。この結果を、畳み込み層210aは、後述する矩形差分テーブル30を用いて算出する。
畳み込み層210aは、この行列tmp1とこの行列tmp1を加算する領域A1との関係に基づき、矩形差分テーブル30を作成する(ステップS31)。
例えば、畳み込み層210aは、矩形差分テーブルの要素30a〜30dの位置を特定する。例えば、要素30aは、領域A1の左上端の要素となる。要素30bは、領域A1の右上端の1つ右隣の要素となる。要素30cは、領域A1の左下端の1つ下の要素となる。要素30dは、領域A1の右下端の要素に対して対角の要素となる。畳み込み層210aは、要素30a,30dに値「5」を設定し、要素30b,30cに値「−5」を設定することで、矩形差分テーブル30を作成する。なお、要素30a〜30d以外の要素の値は「0」となる。
畳み込み層210aは、矩形差分テーブル30に対して、縦方向の累積加算を実行することで、テーブル31を算出する(ステップS32)。畳み込み層210aは、テーブル31に対して横方向の累積加算を実行することで、テーブル32を算出する(ステップS33)。テーブル32の各要素の値は、領域A1に行列tmp1を加算したものに対応する。
続いて、ステップS40に示すように、領域A2に加算する行列をtmp2とし、行列tmp2の全ての要素の値を5とする。領域A3に加算する行列をtmp3とし、行列tmp3の全ての要素の値を4とする。領域A2に行列tmp2を加算し、領域A3に行列tmp3を加算することで、領域A2には5が設定され、領域A3には4が設定され、領域A2と領域A3とが重複する領域A4には、9が設定される。この結果を、畳み込み層210aは、後述する矩形差分テーブル40を用いて算出する。
例えば、畳み込み層210aは、矩形差分テーブルの要素40a〜40hの位置を特定する。例えば、要素40aは、領域A2の左上端の要素となる。要素40bは、領域A2の右上端の1つ右隣の要素となる。要素40cは、領域A2の左下端の1つ下の要素となる。要素40dは、領域A2の右下端の要素に対して対角の要素となる。
要素40eは、領域A3の左上端の要素となる。領域40fは、領域A3の右上端の1つ右隣の要素となる。領域40gは、領域A3の左下端の1つ下の要素となる。領域40hは、領域A3の右下端の要素に対して対角の要素となる。
畳み込み層210aは、要素40a,40dに値「5」を設定し、要素40b,40cに値「−5」を設定する。畳み込み層210aは、要素40e,40hに値「4」を設定し、要素40f,40gに値「−4」を設定する。このように、畳み込み層210aが、要素40a〜40hに値を設定し、その他の要素の値を0に設定することで、矩形差分テーブル40を作成する。
畳み込み層210aは、矩形差分テーブル40に対して、縦方向の累積加算を実行することで、テーブル41を算出する(ステップS42)。畳み込み層210aは、テーブル41に対して横方向の累積加算を実行することで、テーブル42を算出する(ステップS43)。テーブル42の各要素の値は、領域A2に行列tmp2を加算し、かつ、領域A3に行列tmp3を加算したものに対応する。
畳み込み層210aは、図16で説明した矩形差分テーブル40を用いて、領域diff1-1に各行列tmp_nt1〜tmp_nt9を加算する。畳み込み層210aは、行列の値と、行列を配置する領域との関係を基にして、矩形差分テーブルrect_diffを作成する。
図17は、本実施例2に係る畳み込み層が生成する矩形差分テーブルの一例を示す図である。各行列を加算するdiff上の領域「R、L」と表現する。Rは、領域の左上端のインデックスを示す。Lは、領域の右下端のインデックスを示す。また、矩形差分テーブルrect_diff上の左上からu行目v列目の要素を、要素「u,v」と表記する。
行列tmp_nt1の値は、領域「1、53」の要素に加算される。このため、畳み込み層210aは、要素「1,1」、「6,6」に値w[1]を設定し、要素「1,6」、「6,1」に値-w[1]を設定する。
行列tmp_nt2の値は、領域「2、54」の要素に加算される。このため、畳み込み層210aは、要素「1,2」、「6,7」に値w[2]を設定し、要素「1,7」、「6,2」に値-w[2]を設定する。
行列tmp_nt3の値は、領域「3、55」の要素に加算される。このため、畳み込み層210aは、要素「1,3」、「6,8」に値w[3]を設定し、要素「1,8」、「6,3」に値-w[3]を設定する。
行列tmp_nt4の値は、領域「13、65」の要素に加算される。このため、畳み込み層210aは、要素「2,1」、「7,6」に値w[4]を設定し、要素「2,6」、「7,1」に値-w[4]を設定する。
行列tmp_nt5の値は、領域「14、66」の要素に加算される。このため、畳み込み層210aは、要素「2,2」、「7,7」に値w[5]を設定し、要素「2,7」、「7,2」に値-w[5]を設定する。
行列tmp_nt6の値は、領域「15、67」の要素に加算される。このため、畳み込み層210aは、要素「2,3」、「7,8」に値w[6]を設定し、要素「2,8」、「7,3」に値-w[6]を設定する。
行列tmp_nt7の値は、領域「25、77」の要素に加算される。このため、畳み込み層210aは、要素「3,1」、「8,6」に値w[7]を設定し、要素「3,6」、「8,1」に値-w[7]を設定する。
行列tmp_nt8の値は、領域「26、78」の要素に加算される。このため、畳み込み層210aは、要素「3,2」、「8,7」に値w[8]を設定し、要素「3,7」、「8,2」に値-w[8]を設定する。
行列tmp_nt9の値は、領域「27、79」の要素に加算される。このため、畳み込み層210aは、要素「3,3」、「8,8」に値w[9]を設定し、要素「3,8」、「8,3」に値-w[9]を設定する。
畳み込み層210aは、上記処理を行うことで、diff1-1を算出するための矩形差分テーブルrect_diffを作成する。ここでは説明の便宜上、diff1-1を算出するための矩形差分テーブルrect_diffを作成する場合について説明したが、diff1-2〜diff4を算出するための矩形差分テーブルもdiff1-1と同様にして作成する。畳み込み層210aは、矩形差分テーブルrect_diffについて、縦方向の累積加算および横方向の累積加算を行うことで、diff1を算出することができる。矩形差分テーブルrect_diffを用いたdiff1の算出結果と、図14で説明したdiff1の算出結果とは同様の結果が得られるが、矩形差分テーブルrect_diffを用いることで、演算量を削減することが可能となる。
次に、本実施例2に係る情報処理装置の処理手順について説明する。図18は、本実施例2に係る情報処理装置の処理手順を示すフローチャートである。図18に示すように、情報処理装置200のPooling層110bは、誤差勾配diff3を取得する(ステップS201)。情報処理装置200の畳み込み層210aは、重み(カーネル)w_data2を取得する(ステップS202)。
畳み込み層210aは、重みw_data2の1要素と、要素比率で割られた誤差勾配diff3の値とを乗算する(ステップS203)。畳み込み層210aは、矩形差分テーブルrect_diffの4箇所に対して値を加算・減算する(ステップS204)。
畳み込み層210aは、重みw_data2の要素数分実行したか否かを判定する(ステップS205)。畳み込み層210aは、重みw_data2の要素数分実行していない場合には(ステップS205,No)、ステップS203に移行する。一方、畳み込み層210aは、重みw_data2の要素数分実行した場合には(ステップS205,Yes)、ステップS206に移行する。
畳み込み層210aは、誤差勾配diff3の要素数回実行したか否かを判定する(ステップS206)。畳み込み層210aは、誤差勾配diff3の要素数回実行していない場合には(ステップS206,No)、ステップS203に移行する。一方、畳み込み層210aは、誤差勾配diff3の要素数回実行した場合には(ステップS206,Yes)、ステップS207に移行する。
畳み込み層210aは、矩形差分テーブルrect_diffに縦と横の累積加算を実行することで、誤差勾配diff3を算出する(ステップS207)。畳み込み層210aは、誤差勾配diff1を出力する(ステップS208)。
次に、本実施例2に係る情報処理装置200の効果について説明する。情報処理装置200の畳み込み層210aは、逆伝播の処理において、下層に出力する誤差勾配diff1を算出する場合に、従来の計算問題を、複数枚の同値の矩形領域を加算する計算問題に置き換えることにより、演習量を削減することができる。
例えば、従来の計算問題は、図11で説明したように、重み(カーネル)のサイズ3×3の行列tmp_mtを100枚用意し、対象領域上に、各行列tmp_mtをずらしながら加算して行く計算問題である。一方、畳み込み層210aは、重みに含まれる要素の数だけ、全ての要素の値がカーネルの要素と同一となる行列を作成し、行列の値を誤差勾配diff3の要素の値に応じて更新する。そして、畳み込み層210aは、対象領域上に複数の行列をずらして配置し、対象領域で同一の要素に配置された各行列の要素の値を加算することで、対象領域に含まれる各要素の値を算出する。
また、畳み込み層210aは、複数の行列をずらして配置した場合に、行列の位置に応じて、矩形差分テーブルを作成する。畳み込み層210aは、矩形差分テーブルの横方向および縦方向の累積加算を実行することで、対象領域の各要素の値を算出する。このため、行列をずらしながら加算していく処理と比較して、演算量を削減することができる。
図19は、誤差勾配diff1を求める計算量を説明するための図である。従来技術の計算量は、乗算部分についてはdk(N−k+1)+dpとなり、加算部分については、dk(N−k+1)となる。一方、本実施例2に係る情報処理装置200の計算量は、乗算部分についてはdkとなり、加算部分については、4dk+2Nとなる。ここで、diff1のサイズをN×N、重みw_data2のサイズをk×k、誤差勾配diff3のサイズをp×p、カーネル数をdとする。各記号の大小関係は、「N>>p,N>>k」となる。このため、Nの値が計算量に与える影響が大きいため、従来技術の計算量が、情報処理装置200の計算量よりも大きいことがわかる。
ところで、上述した実施例1に示した畳み込み層110aの処理と、実施例2に示した畳み込み層210aの処理とを別々に説明したがこれに限定されるものではない。例えば、畳み込み層110a,210aの双方の処理を行う畳み込み層を、CNN処理部110,210に搭載させても良い。
次に、上記実施例に示した情報処理装置100のハードウェア構成の一例について説明する。図20は、情報処理装置のハードウェア構成の一例を示す図である。
図20に示すように、コンピュータ300は、各種演算処理を実行するCPU301と、利用者からのデータの入力を受け付ける入力装置302と、ディスプレイ303とを有する。また、コンピュータ300は、記憶媒体からプログラム等を読取る読み取り装置304と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインタフェース装置305とを有する。また、コンピュータ300は、各種情報を一時記憶するRAM306と、ハードディスク装置307とを有する。そして、各装置301〜307は、バス308に接続される。
ハードディスク装置307は、CNN処理プログラム307aを有する。CPU301は、CNN処理プログラム307aを読み出してRAM306に展開する。CNN処理プログラム307aは、CNN処理プロセス306aとして機能する。例えば、CNN処理プロセス306aの処理は、CNN処理部110、210の処理に対応する。
なお、CNN処理プログラム307aについては、必ずしも最初からハードディスク装置307に記憶させておかなくても良い。例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ300がこれらからCNN処理プログラム307aを読み出して実行するようにしてもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)複数の層を有する学習ネットワークの学習値算出時において、上層から複数の要素を有する誤差勾配の情報を取得するPooling層と、
下層から情報を取得した場合に、前記情報に含まれる複数の要素に対して横方向および縦方向の累積加算を実行することで前記情報を積分画像に変換し、
重み勾配に含まれる第1要素の値を算出する場合に、前記積分画像に含まれる複数の要素のうち、前記第1要素に対応する領域を特定し、特定した領域の要素を複数の部分領域に分割し、
前記積分画像の特徴を基にして、前記部分領域に含まれる要素の合計値を算出し、前記部分領域に含まれる要素の合計値と前記部分領域に対応する前記誤差勾配の要素の値とに基づく値を前記部分領域毎に算出し、算出した各値を加算することで、前記第1要素を算出する処理を実行する畳み込み層と
を有することを特徴とする情報処理装置。
(付記2)前記畳み込み層は、前記積分画像の特徴を基にして前記部分領域に含まれる要素の合計値を算出する場合に、前記部分領域に基づく第1要素、第2要素、第3要素、第4要素の値を抽出し、第1要素と第4要素との加算値から、第2要素の値と第3要素の値とを減算することで、前記合計値を算出することを特徴とする付記1に記載の情報処理装置。
(付記3)複数の層を有する学習ネットワークの学習値算出時において、上層から複数の要素を有する第1誤差勾配の情報を取得するPooling層と、
下層に出力するための第2誤差勾配の第1領域に含まれる各要素の値を算出する場合に、カーネルに含まれる要素の数だけ、全ての要素の値が前記カーネルの要素と同一となる行列を作成し、
前記行列の値を前記第1誤差勾配の要素の値に応じて更新し、
前記第1領域上に複数の行列をずらして配置し、前記第1領域上で同一の要素に配置された各行列の要素の値を加算することで、前記第1領域に含まれる各要素の値を算出する畳み込み層と
を有することを特徴とする情報処理装置。
(付記4)前記畳み込み層は、前記行列を配置した前記第1領域上において、前記行列が配置される位置に応じた第1要素、第2要素、第3要素、第4要素を特定し、前記第1要素および前記第4要素に前記行列と同じ値を設定し、前記第2要素および前記第3要素に前記行列の値にマイナス1を乗算した値を設定する処理を、行列毎に実行することで矩形差分テーブルを生成し、前記矩形差分テーブルに含まれる要素に対して横方向および縦方向の累積加算を実行することで、前記第1領域に含まれる各要素の値を算出することを特徴とする付記3に記載の情報処理装置。
(付記5)コンピュータに、
複数の層を有する学習ネットワークの学習値算出時において、上層から複数の要素を有する誤差勾配の情報を取得し、
下層から情報を取得した場合に、前記情報に含まれる複数の要素に対して横方向および縦方向の累積加算を実行することで前記情報を積分画像に変換し、
重み勾配に含まれる第1要素の値を算出する場合に、前記積分画像に含まれる複数の要素のうち、前記第1要素に対応する領域を特定し、特定した領域の要素を複数の部分領域に分割し、
前記積分画像の特徴を基にして、前記部分領域に含まれる要素の合計値を算出し、
前記部分領域に含まれる要素の合計値と前記部分領域に対応する前記誤差勾配の要素の値とに基づく値を前記部分領域毎に算出し、算出した各値を加算することで、前記第1要素を算出する処理を実行する
処理を実行させることを特徴とする学習ネットワーク学習値算出プログラム。
(付記6)前記積分画像の特徴を基にして、前記部分領域に含まれる要素の合計値を算出する処理は、前記部分領域に基づく第1要素、第2要素、第3要素、第4要素の値を抽出し、第1要素と第4要素との加算値から、第2要素の値と第3要素の値とを減算することで、前記合計値を算出することを特徴とする付記5に記載の学習ネットワーク学習値算出プログラム。
(付記7)コンピュータに、
複数の層を有する学習ネットワークの学習値算出時において、上層から複数の要素を有する第1誤差勾配の情報を取得し、
下層に出力するための第2誤差勾配の第1領域に含まれる各要素の値を算出する場合に、カーネルに含まれる要素の数だけ、全ての要素の値が前記カーネルの要素と同一となる行列を作成し、
前記行列の値を前記第1誤差勾配の要素の値に応じて更新し、
前記第1領域上に複数の行列をずらして配置し、前記第1領域上で同一の要素に配置された各行列の要素の値を加算することで、前記第1領域に含まれる各要素の値を算出する
処理を実行させることを特徴とする学習ネットワーク学習値算出プログラム。
(付記8)前記行列を配置した前記第1領域上において、前記行列が配置される位置に応じた第1要素、第2要素、第3要素、第4要素を特定し、前記第1要素および前記第4要素に前記行列と同じ値を設定し、前記第2要素および前記第3要素に前記行列の値にマイナス1を乗算した値を設定する処理を、行列毎に実行することで矩形差分テーブルを生成する処理を更に実行し、前記第1領域に含まれる各要素の値を算出する処理は、前記矩形差分テーブルに含まれる要素に対して横方向および縦方向の累積加算を実行することで、前記第1領域に含まれる各要素の値を算出することを特徴とする付記7に記載の学習ネットワーク学習値算出プログラム。
(付記9)コンピュータが実行する学習ネットワーク学習値算出方法であって、
複数の層を有する学習ネットワークの学習値算出時において、上層から複数の要素を有する誤差勾配の情報を取得し、
下層から情報を取得した場合に、前記情報に含まれる複数の要素に対して横方向および縦方向の累積加算を実行することで前記情報を積分画像に変換し、
重み勾配に含まれる第1要素の値を算出する場合に、前記積分画像に含まれる複数の要素のうち、前記第1要素に対応する領域を特定し、特定した領域の要素を複数の部分領域に分割し、
前記積分画像の特徴を基にして、前記部分領域に含まれる要素の合計値を算出し、
前記部分領域に含まれる要素の合計値と前記部分領域に対応する前記誤差勾配の要素の値とに基づく値を前記部分領域毎に算出し、算出した各値を加算することで、前記第1要素を算出する処理を実行する
処理を実行することを特徴とする学習ネットワーク学習値算出方法。
(付記10)前記積分画像の特徴を基にして、前記部分領域に含まれる要素の合計値を算出する処理は、前記部分領域に基づく第1要素、第2要素、第3要素、第4要素の値を抽出し、第1要素と第4要素との加算値から、第2要素の値と第3要素の値とを減算することで、前記合計値を算出することを特徴とする付記9に記載の学習ネットワーク学習値算出方法。
(付記11)コンピュータが実行する学習ネットワーク学習値算出方法であって、
複数の層を有する学習ネットワークの学習値算出時において、上層から複数の要素を有する第1誤差勾配の情報を取得し、
下層に出力するための第2誤差勾配の第1領域に含まれる各要素の値を算出する場合に、カーネルに含まれる要素の数だけ、全ての要素の値が前記カーネルの要素と同一となる行列を作成し、
前記行列の値を前記第1誤差勾配の要素の値に応じて更新し、
前記第1領域上に複数の行列をずらして配置し、前記第1領域上で同一の要素に配置された各行列の要素の値を加算することで、前記第1領域に含まれる各要素の値を算出する
処理を実行することを特徴とする学習ネットワーク学習値算出方法。
(付記12)前記行列を配置した前記第1領域上において、前記行列が配置される位置に応じた第1要素、第2要素、第3要素、第4要素を特定し、前記第1要素および前記第4要素に前記行列と同じ値を設定し、前記第2要素および前記第3要素に前記行列の値にマイナス1を乗算した値を設定する処理を、行列毎に実行することで矩形差分テーブルを生成する処理を更に実行し、前記第1領域に含まれる各要素の値を算出する処理は、前記矩形差分テーブルに含まれる要素に対して横方向および縦方向の累積加算を実行することで、前記第1領域に含まれる各要素の値を算出することを特徴とする付記11に記載の学習ネットワーク学習値算出方法。
50a 入力部
50b 受付部
100 情報処理装置
110,210 CNN処理部
110a,210a 畳み込み層
110b Pooling層
110c 全結合層
110d シグモイド層

Claims (8)

  1. 複数の層を有する学習ネットワークの学習値算出時において、上層から複数の要素を有する誤差勾配の情報を取得するPooling層と、
    下層から情報を取得した場合に、前記情報に含まれる複数の要素に対して横方向および縦方向の累積加算を実行することで前記情報を積分画像に変換し、
    重み勾配に含まれる第1要素の値を算出する場合に、前記積分画像に含まれる複数の要素のうち、前記第1要素に対応する領域を特定し、特定した領域の要素を複数の部分領域に分割し、
    前記積分画像の特徴を基にして、前記部分領域に含まれる要素の合計値を算出し、前記部分領域に含まれる要素の合計値と前記部分領域に対応する前記誤差勾配の要素の値とに基づく値を前記部分領域毎に算出し、算出した各値を加算することで、前記第1要素を算出する処理を実行する畳み込み層と
    を有することを特徴とする情報処理装置。
  2. 前記畳み込み層は、前記積分画像の特徴を基にして前記部分領域に含まれる要素の合計値を算出する場合に、前記部分領域に基づく第1要素、第2要素、第3要素、第4要素の値を抽出し、第1要素と第4要素との加算値から、第2要素の値と第3要素の値とを減算することで、前記合計値を算出することを特徴とする請求項1に記載の情報処理装置。
  3. 複数の層を有する学習ネットワークの学習値算出時において、上層から複数の要素を有する第1誤差勾配の情報を取得するPooling層と、
    下層に出力するための第2誤差勾配の第1領域に含まれる各要素の値を算出する場合に、カーネルに含まれる要素の数だけ、全ての要素の値が前記カーネルの要素と同一となる行列を作成し、
    前記行列の値を前記第1誤差勾配の要素の値に応じて更新し、
    前記第1領域上に複数の行列をずらして配置し、前記第1領域上で同一の要素に配置された各行列の要素の値を加算することで、前記第1領域に含まれる各要素の値を算出する畳み込み層と
    を有することを特徴とする情報処理装置。
  4. 前記畳み込み層は、前記行列を配置した前記第1領域上において、前記行列が配置される位置に応じた第1要素、第2要素、第3要素、第4要素を特定し、前記第1要素および前記第4要素に前記行列と同じ値を設定し、前記第2要素および前記第3要素に前記行列の値にマイナス1を乗算した値を設定する処理を、行列毎に実行することで矩形差分テーブルを生成し、前記矩形差分テーブルに含まれる要素に対して横方向および縦方向の累積加算を実行することで、前記第1領域に含まれる各要素の値を算出することを特徴とする請求項3に記載の情報処理装置。
  5. コンピュータに、
    複数の層を有する学習ネットワークの学習値算出時において、上層から複数の要素を有する誤差勾配の情報を取得し、
    下層から情報を取得した場合に、前記情報に含まれる複数の要素に対して横方向および縦方向の累積加算を実行することで前記情報を積分画像に変換し、
    重み勾配に含まれる第1要素の値を算出する場合に、前記積分画像に含まれる複数の要素のうち、前記第1要素に対応する領域を特定し、特定した領域の要素を複数の部分領域に分割し、
    前記積分画像の特徴を基にして、前記部分領域に含まれる要素の合計値を算出し、
    前記部分領域に含まれる要素の合計値と前記部分領域に対応する前記誤差勾配の要素の値とに基づく値を前記部分領域毎に算出し、算出した各値を加算することで、前記第1要素を算出する処理を実行する
    処理を実行させることを特徴とする学習ネットワーク学習値算出プログラム。
  6. コンピュータに、
    複数の層を有する学習ネットワークの学習値算出時において、上層から複数の要素を有する第1誤差勾配の情報を取得し、
    下層に出力するための第2誤差勾配の第1領域に含まれる各要素の値を算出する場合に、カーネルに含まれる要素の数だけ、全ての要素の値が前記カーネルの要素と同一となる行列を作成し、
    前記行列の値を前記第1誤差勾配の要素の値に応じて更新し、
    前記第1領域上に複数の行列をずらして配置し、前記第1領域上で同一の要素に配置された各行列の要素の値を加算することで、前記第1領域に含まれる各要素の値を算出する
    処理を実行させることを特徴とする学習ネットワーク学習値算出プログラム。
  7. コンピュータが実行する学習ネットワーク学習値算出方法であって、
    複数の層を有する学習ネットワークの学習値算出時において、上層から複数の要素を有する誤差勾配の情報を取得し、
    下層から情報を取得した場合に、前記情報に含まれる複数の要素に対して横方向および縦方向の累積加算を実行することで前記情報を積分画像に変換し、
    重み勾配に含まれる第1要素の値を算出する場合に、前記積分画像に含まれる複数の要素のうち、前記第1要素に対応する領域を特定し、特定した領域の要素を複数の部分領域に分割し、
    前記積分画像の特徴を基にして、前記部分領域に含まれる要素の合計値を算出し、
    前記部分領域に含まれる要素の合計値と前記部分領域に対応する前記誤差勾配の要素の値とに基づく値を前記部分領域毎に算出し、算出した各値を加算することで、前記第1要素を算出する処理を実行する
    処理を実行することを特徴とする学習ネットワーク学習値算出方法。
  8. コンピュータが実行する学習ネットワーク学習値算出方法であって、
    複数の層を有する学習ネットワークの学習値算出時において、上層から複数の要素を有する第1誤差勾配の情報を取得し、
    下層に出力するための第2誤差勾配の第1領域に含まれる各要素の値を算出する場合に、カーネルに含まれる要素の数だけ、全ての要素の値が前記カーネルの要素と同一となる行列を作成し、
    前記行列の値を前記第1誤差勾配の要素の値に応じて更新し、
    前記第1領域上に複数の行列をずらして配置し、前記第1領域上で同一の要素に配置された各行列の要素の値を加算することで、前記第1領域に含まれる各要素の値を算出する
    処理を実行することを特徴とする学習ネットワーク学習値算出方法。
JP2016129309A 2016-06-29 2016-06-29 情報処理装置、学習ネットワーク学習値算出プログラムおよび学習ネットワーク学習値算出方法 Pending JP2018005420A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016129309A JP2018005420A (ja) 2016-06-29 2016-06-29 情報処理装置、学習ネットワーク学習値算出プログラムおよび学習ネットワーク学習値算出方法
US15/496,361 US20180005113A1 (en) 2016-06-29 2017-04-25 Information processing apparatus, non-transitory computer-readable storage medium, and learning-network learning value computing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016129309A JP2018005420A (ja) 2016-06-29 2016-06-29 情報処理装置、学習ネットワーク学習値算出プログラムおよび学習ネットワーク学習値算出方法

Publications (1)

Publication Number Publication Date
JP2018005420A true JP2018005420A (ja) 2018-01-11

Family

ID=60807735

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016129309A Pending JP2018005420A (ja) 2016-06-29 2016-06-29 情報処理装置、学習ネットワーク学習値算出プログラムおよび学習ネットワーク学習値算出方法

Country Status (2)

Country Link
US (1) US20180005113A1 (ja)
JP (1) JP2018005420A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019211870A (ja) * 2018-05-31 2019-12-12 株式会社日立ソリューションズ東日本 在庫管理装置および在庫管理方法
KR20210099991A (ko) * 2020-02-05 2021-08-13 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 딥 러닝 처리 장치, 방법, 기기 및 저장 매체

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6832504B2 (ja) * 2016-08-08 2021-02-24 パナソニックIpマネジメント株式会社 物体追跡方法、物体追跡装置およびプログラム
CN108805285B (zh) * 2018-05-30 2022-03-29 山东浪潮科学研究院有限公司 一种卷积神经网络池化单元设计方法
CN109858482B (zh) * 2019-01-16 2020-04-14 创新奇智(重庆)科技有限公司 一种图像关键区域检测方法及其系统、终端设备

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019211870A (ja) * 2018-05-31 2019-12-12 株式会社日立ソリューションズ東日本 在庫管理装置および在庫管理方法
JP7096708B2 (ja) 2018-05-31 2022-07-06 株式会社日立ソリューションズ東日本 在庫管理装置および在庫管理方法
KR20210099991A (ko) * 2020-02-05 2021-08-13 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 딥 러닝 처리 장치, 방법, 기기 및 저장 매체
JP2021140733A (ja) * 2020-02-05 2021-09-16 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド 深層学習処理装置、方法、デバイス及び記憶媒体
JP7181264B2 (ja) 2020-02-05 2022-11-30 ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド 深層学習処理装置、方法、デバイス及び記憶媒体
KR102642849B1 (ko) * 2020-02-05 2024-03-04 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 딥 러닝 처리 장치, 방법, 기기 및 저장 매체

Also Published As

Publication number Publication date
US20180005113A1 (en) 2018-01-04

Similar Documents

Publication Publication Date Title
JP2018005420A (ja) 情報処理装置、学習ネットワーク学習値算出プログラムおよび学習ネットワーク学習値算出方法
US11704547B2 (en) Transposing neural network matrices in hardware
JP7000387B2 (ja) ニューラルネットワークプロセッサにおけるベクトル計算ユニット
KR102512936B1 (ko) 하드웨어에서의 커널 스트라이딩 수행
CN107301453B (zh) 支持离散数据表示的人工神经网络正向运算装置和方法
CN107301454B (zh) 支持离散数据表示的人工神经网络反向训练装置和方法
KR20180109619A (ko) 컨볼루션 신경망 처리 방법 및 장치
CN113095129A (zh) 姿态估计模型训练方法、姿态估计方法、装置和电子设备
Lee Bell-shaped proportional viscous damping models with adjustable frequency bandwidth
JP7435602B2 (ja) 演算装置および演算システム
CN116109481A (zh) 缩放方法、芯片、存储介质及电子设备
US20190114734A1 (en) Filter processing apparatus and control method thereof
CN112801868B (zh) 图像超分辨率重建的方法、电子设备及存储介质
US6141674A (en) Reducing the hardware cost of a bank of multipliers by combining shared terms
US20080130878A1 (en) Method for generating, operating, and using a sparse w-NAF key for encryption
JP2008269329A (ja) 連立一次方程式の解を反復的に決定する方法
JP7047617B2 (ja) 磁界シミュレーションプログラム、情報処理装置および磁界シミュレーション方法
CN111179175A (zh) 基于卷积神经网络的图像处理方法、装置及存储介质
CN112132274B (zh) 特征图全连接卷积方法、装置、可读存储介质及电子设备
CN114155366B (zh) 动态柜图像识别模型训练方法、装置、电子设备和介质
US20220366112A1 (en) Apparatus, Device, Method, and Computer Program for Generating a Register Transfer Level Representation of a Circuit
JP6994572B2 (ja) データ処理システムおよびデータ処理方法
JP3702475B2 (ja) 回路自動生成装置
RU2572423C2 (ru) Способ формирования s-блоков с минимальным количеством логических элементов
JP2004133617A (ja) 回路構成方法、その装置およびそのプログラムと、その演算回路