畳み込みニューラルネットワークにおける順伝播・誤差逆伝播計算
宮本崇2017/4/7

1 はじめに
畳み込みニューラルネットワークにおける順伝播・逆伝播計算を，定義に基づいたテンソルの要素間の関係式として定式化する．
ここでは，空間方向に２次元，チャンネル方向に 1 次元の，３次元の入力データを仮定する．そのような入力データの例として，RGB の 3 チャンネルを有した 2 次元画像がある．
以下に，畳み込みニューラルネットワークに関して本稿で用いる記号の定義を表 1 にまとめる．

Symbols

Meaningsize

nchwk

ミニバッチに関する添字層への入力データのチャンネル数に関する添字層への入力データの高さに関する添字層への入力データの幅に関する添字層からの出力データのチャンネル数に関する添字NCHWKp層からの出力データの幅に関する添字P =⌈q

層からの出力データの高さに関する添字rsuv
phpw(l)
Z (l) = {Znchw }(l)
F (l) = {Fkcrs }カーネルの高さに関する添字
カーネルの幅に関する添字
高さ方向のストライド
幅方向のストライド
高さ方向のパディング
幅方向のパディング(l)∆(l) = {∆nchw =l 層への入力テンソル
l 層におけるカーネルテンソル

H − R + 1 + 2ph⌉u
W − S + 1 + 2pw
Q=⌈⌉v
RS−−−−N ×C ×H ×W
K ×C ×R×S}

l 層におけるデルタテンソル

N ×C ×H ×W

表1

畳み込みニューラルネットワークに関する記号の定義．

∂En(l)∂Znchw

1

2 畳み込みニューラルネットワーク
2.1 ニューラルネットワークにおける順伝播・逆伝播
多層パーセプトロンや畳み込みニューラルネットワークの順伝播・逆伝播の処理は，次のように考えることができる．

l 層への入力を Z (l) とおく．Z (l) は，ミニバッチや空間上の位置，特徴量次元を指定するための添字を有する，高階のテンソルとなる (図 1)．l 層での順伝播計算とは，このテンソルに対して何らかの操作を行い，Z (l+1) を出力して次の層へ渡す処理を意味する．このとき，l 層でのテンソルへの操作に関連するパラメタをまとめたテンソルを W (l) とすると，l 層での順伝播計算は形式的に次のように書くことができる．

Z (l+1) = f (Z (l) ; W (l) )

(1)
(l)

(l)

次に，n 番目のミニバッチに対する誤差関数 En を，Z (l) のある要素 Zn(·) で偏微分した値を ∆n(·) =∂En(l)∂Zn(·)(l)とおき，∆n(·) を要素に持つテンソルを ∆(l) とする．∆(l) は，Z (l) と同じ階数，サイズのテンソルである．

1 ∑(l)(l)(l)
En を W (l) のある要素 W(·) で偏微分した値を ∂W(·) とし，∂W(·) を要素に持つテンソル
N n=1N

また，E =を ∂W (l) とする．l 層における逆伝播計算とは，これらのテンソルを一つ先の層の ∆(l+1) から求めることであり，形式的に次のように書くことができる．

∆(l) = g(∆(l+1) )(2)∂W (l) = h(∆(l+1) )(3)

したがって，ニューラルネットワークにおける順伝播・逆伝播計算の定式化とは，式 (1) や (2)，(3) の具体的な形を求めることを意味している．以降では，畳み込み層やプーリング層といった層種ごとに，定式化を行っていく．以上のようなある層での処理を，図 2 に模式的に示す．

図1

入力テンソルのイメージ：2 次元画像の場合．図中の記号は表 1 に従う．

図2

l 層における順伝播・逆伝播処理．

2

2.2 畳み込み層■順伝播

畳み込み層は，入力テンソルに対して，空間サイズの小さなカーネルを移動させながら内積をとる

畳み込み操作を行うことによって，出力テンソルを得る層である (図 3)．入力テンソル，カーネル，ストライド，パディングなどの値を表 1 のように定めると，畳み込み層における順伝播計算は以下のように表される．
(l+1)

Znkpq =C ∑R ∑S
∑

(l)

(l)

Znchw · Fkcrs + b(l)(4)

c=1 r=1 s=1where
h = (p − 1) · u + r − phw = (q − 1) · v + s − pw
k は出力テンソルの特徴量の次元，p, q は空間次元でのカーネルの移動量を表す添字である．式 (4) は，特定の p, q に対してカーネルが図 4 の位置に移動し，同じ場所に位置する入力テンソルの要素との内積をとる操作を意味している．

図3

図4

畳み込み層の概要．

p, q に対するカーネルの移動位置．

3

■逆伝播

次に，畳み込み層の逆伝播計算を定式化する．まず，カーネルの要素およびバイアスによる誤差関数の偏微分は，定義に従って次のように計算される．

∂E(l)∂Fkcrs

QNNP∂Znkpq1 ∑ ∂En1 ∑ ∑ ∑ ∂En==·(l)(l+1)(l)
N n=1 ∂F
N n=1 p=1 q=1 ∂Z∂F(l+1)

kcrs

nkpq

=kcrs

QN ∑P ∑∑

1(l+1)(l)∆· Znchw
N n=1 p=1 q=1 nkpq

(5)

where
h = (p − 1) · u + r − phw = (q − 1) · v + s − pw
(l+1)
QNNP
∂Znkpq∂E1 ∑ ∂En
1 ∑ ∑ ∑ ∂En==·N n=1 ∂b(l)N n=1 p=1 q=1 ∂Z (l+1)
∂b(l)
∂b(l)
nkpq

=QN ∑P ∑∑1(l+1)∆·1
N n=1 p=1 q=1 nkpq

(6)

∑ ∑ ∂En∂Znkpq∂En(l)·=を適用する際は，Fkcrs や(l+1)
∂(·)
∂(·)
pq ∂Z
(l+1)

式 (5)，(6) において微分のチェインルール
(l)

bnkpq
(l+1)
が全ての p, q に対する Znkpq の計算に用いられていることを考慮し，p = 1...P, q = 1...Q に関する総和を取っている．
次に，入力テンソルの要素による誤差関数の偏微分は，次のように計算される．
(l)∆nchw =

∂En=(l)

∂Znchw
=K P∑
max
∑

Qmax
∑

(l+1)

∂En∂Znkpq

k=1 p=Pmin q=Qmin ∂Znkpq∂Znchw

K P∑max∑(l)Qmax∑·(l+1)(l+1)(l)∆nkpq · Fkcrs(7)

k=1 p=Pmin q=Qmin

wherer = h − (p − 1) · u + phs = w − (q − 1) · v + pw
h − R + ph+ 1⌉),
Pmin = max(1, ⌈uw − S + pw+ 1⌉),
Qmin = max(1, ⌈v
式 (7) において微分のチェインルール∂Enh − 1 + ph+ 1⌋)
uw − 1 + pw
Qmax = min(Q, ⌊+ 1⌋)v

Pmax = min(P, ⌊K ∑∑∑∂En(l)

(8)
(9)

(l+1)

·∂Znkpqを適用する際は，次のことに

(l+1)
(l)
∂Znchwq ∂Znkpq(l)(l+1)
注意する必要がある．ある特定の入力テンソルの要素 Znchw は，全ての p, q に対する Znkpq の計算に持ち∂Znchw k=1 p

いられるわけではなく，p, q の値に応じて移動するカーネルがこの要素に重なっている時のみ計算に用いられる．したがって，チェインルールを適用する際は，カーネルとこの要素が重なる p, q の範囲で総和を取る必要がある．式 (8)，(9) はそのような p, q の範囲を示しているものであるが，これは次のようにして求めることができる．
(l)

(l)

(l)

今，ある特定の Znchw に対して，p が変化しながらカーネル Fkcrs が移動する場合を考える．Fkcrs は 4 階のテンソルであるが，ここでは k, c を固定し，r, s のみが変化する 2 次元の行列であると考える．カーネルは，(l)p の値に応じて図 5 のように Znkhw と重なる場合と重ならない場合がある．今，カーネルの 1 列目の座標値

4

を (row1 , col)，R 列目の座標値を (rowR , col) とおくと，row1 ，rowR は図 4 を参照するとそれぞれ次のように表される．

row1 = (p − 1) · u + 1 − pw
rowR = (p − 1) · u + R − pw

(10)(11)(l)

このとき，カーネルが Znchw に重なるためには，図 5 のように row1 ≤ h ≤ rowR である必要があり，これを満たす p の条件は次のようになる．

h − R + phh − 1 + ph+1≤p≤+1uu(12)

p は，この条件を満たす 1 から P までの整数であることから，式 (8) が導かれる．また，q についても同様に考えることにより，式 (9) が得られる．

図5(l)p に応じたカーネルの移動と Znchw の重なり方.

2.3 マックスプーリング層■順伝播

マックスプーリング層は，畳み込み層のようにあるサイズのカーネルを空間方向に移動させながら，カーネルと重なる入力テンソルの要素のうち最大値を出力していく層である．畳み込み層と同様にカーネルサイズやストライド・パディングの記号を定めると，順伝播計算は次のように表される．プーリングにおいては，畳み込み層との操作と異なり特徴量次元 k, c の方向には縮約されないことに注意する．
(l+1)

(l)

Znkpq = max{Znkhw ; 1 ≤ r ≤ R, 1 ≤ s ≤ S}
r,swhereh = (p − 1) · u + r − phw = (q − 1) · v + s − pv

5(13)

(l)

■逆伝播

プーリング層には最適化の対象となるパラメタがないため，逆伝播計算には ∆nchw のみが定義され，次のように表される．
(l)∆nchw =

∂En=(l)∂Znchw=P∑max

Qmax
∑

(l+1)

∂En

∂Zncpqp=Pmin q=Qmin ∂Zncpq∂ZnchwP∑max(l)·(l+1)

Qmax
∑

(l)

∆(l+1)
ncpq · Bncpqhw(14)

p=Pmin q=Qmin

where{(l)Bncpqhw =(l+1)(l)

1 (Zncpq = Znchw )0 (otherwise)r = h − (p − 1) · u + phs = w − (q − 1) · v + pw
h − R + phh − 1 + phPmin = max(1, ⌈+ 1⌉), Pmax = min(P, ⌊+ 1⌋uuw − S + pww − 1 + pw
Qmin = max(1, ⌈+ 1⌉), Qmax = min(Q, ⌊+ 1⌋)vv
上式において，チェインルールの適用時における p, q の範囲は，畳み込み層と同様に考えることができる．
(l+1)∂Zncpq(l+1)(l)
また，の値は，Zncpq = Znchw のときに 1，それ以外の場合は 0 となる．
(l)∂Znchw

2.4 活性化層
多層パーセプトロンの定式化では，全結合層において前の層からの出力のアフィン変換と活性化関数の作用をまとめて一つの層の計算としていたが，ここではこれらの計算をそれぞれアフィン変換層，活性化層として個別の層に分離し，定式化を行う．
■順伝播

活性化層は，入力テンソルの個々の要素に活性化関数を作用させる働きを持つ層であり，順伝播計算は次のように表される．
(l+1)

(l)

Znkpq = ϕ{Znkpq }

(15)
(l)

■逆伝播

活性化層もまた最適化の対象となるパラメタがないため，逆伝播計算には ∆nchw のみが次のように定義される．
(l)∆nchw =

∂En(l)
∂Znchw=(l+1)∂En∂Znchw∂Znchw(l)∂Znhcw·(l+1)= ∆nchw · ϕ′ (Znchw )
(l+1)

(l)

(16)

2.5 アフィン変換層
畳み込みニューラルネットワークにおいて，アフィン変換層（全結合層）は通常，畳み込み層やプーリング層の階層によって特徴量が抽出された後，この特徴量に対する多層パーセプトロンとして配置される．前の層(l)までのように，入力テンソル Znchw の位置 (添字 h や w) やチャンネル数 (添字 c) に関係なく全ての要素が全(l)結合するため，これらの添字を区別しないこととして入力テンソルを Znj (1 ≤ j ≤ H · W · C) と表す．
■順伝播

アフィン変換層の順伝播計算は，多層パーセプトロンと同様に行列の線形変換であり，次のように表される．
(l+1)

Zni

=H·W
∑·C(l)(l)(l)

wij · Znj + bi

(17)

j=1

■逆伝播(l)(l)

アフィン変換層では，線形変換時の重み wij とバイアス bi が最適化の対象となるパラメタであり，誤差関数に対するこれらのパラメタによる偏微分は次のように表される．

∂E=(l)

∂wij

NNN
(l+1)
1 ∑ ∂En1 ∑ ∂En∂Zni
1 ∑ (l+1)(l)=·=∆· Znj(l)N n=1 ∂w(l)N n=1 ∂Z (l+1)
N n=1 ni∂wijni6ij(18)∂E=(l)∂bi

NNN(l+1)
1 ∑ ∂En1 ∑ ∂En∂Zni
1 ∑ (l+1)=·=∆·1(l)
N n=1 ∂b(l)N n=1 ∂Z (l+1)
N n=1 ni
∂bini

(19)

i

次に，入力テンソルの要素による誤差関数の偏微分は，次のように計算される．
(l)

∆nj =

∂En

=(l)

∂Znj

K·P
∑·Qi=1(l+1)∂En·(l+1)

∂Zni

7

∂Zni

(l)
∂Znj

=K·P
∑·Qi=1(l+1)∆ni(l)· wij(20)