逆誤差伝播諸公式メモ
大邦将猛
2019 年 5 月 19 日
1 順伝播の式
a
(l+1)
i =
n∑
j=1
W
(l+1)
ij z
(l)
j (i = 1, 2, 3, ..., m l = 1, 2, 3, ..., N − 1) (1.1)
z
(l)
i = ReLUα(a
(l)
i ) (i = 1, 2, 3, ..., n l = 1, 2, 3, ..., N − 1) (1.2)
z
(N)
i =
ea
(N)
i
∑c
k=1 ea
(N)
k
(i = 1, 2, 3, ..., c) (1.3)
y = ReLUα(x) =
{
x (x ≥ 0)
αx (x < 0 0 ≤ α < 1)
(1.4)
2 順伝播の式から得られる偏微分
式 (1.1) から
∂a
(l)
i
∂z
(l−1)
j
= W
(l)
ij (l = 2, 3, ..., N) (2.1)
∂a
(l)
i
∂W
(l)
jk
=
{
z
(l−1)
k (i = j)
0 (i ̸= j)
(l = 2, 3, ..., N) (2.2)
式 (1.2) から
∂z
(l)
i
∂a
(l)
j
=



1 (i = j x ≥ 0)
α (i = j x < 0)
0 (i ̸= j)
(l = 1, 2, 3, ..., N − 1) (2.3)
式 (1.3) から
∂z
(N)
i
∂a
(N)
j
が求められるがやや複雑なので場合分けして求める
まず η を次式のようにおき、a
(N)
1 , a
(N)
2 , a
(N)
3 , ..., a
(N)
c の変数に依存する関数とみなす。
η = f(a
(N)
1 , a
(N)
2 , a
(N)
3 , ..., a(N)
c ) =
c∑
k=1
ea
(N)
k (2.4)
1
(i ̸= j) のとき、式 (1.3) の分子 ea
(N)
i は a
(N)
j
に依存しないから、
∂z
(N)
i
∂a
(N)
j
=
∂
∂a
(N)
j
(
ea
(N)
i
η
) = ea
(N)
i
∂
∂a
(N)
j
(
1
η
) = ea
(N)
i
∂η
∂a
(N)
j
∂
∂η
(
1
η
) = ea
(N)
i
∂η
∂a
(N)
j
(
−1
η2
) (2.5)
ところで ∂η
∂a
(N)
j
は単純に
∂η
∂a
(N)
j
= ea
(N)
j (2.6)
なので式 (2.5) は結局
∂z
(N)
i
∂a
(N)
j
= (
−ea
(N)
i ea
(N)
j
η2
) (2.7)
(i = j) のとき、今度は分子 ea
(N)
i は a
(N)
i に依存するので、
∂z
(N)
i
∂a
(N)
i
=
∂
∂a
(N)
i
(
ea
(N)
i
η
) = (
∂
∂a
(N)
i
ea
(N)
i )
1
η
+ ea
(N)
i (
∂
∂a
(N)
i
1
η
) =
ea
(N)
i
η
−
(ea
(N)
i )2
η2
(2.8)
ここで
Iij =
{
1 (i = j のとき)
0 (i ̸= j のとき)
(2.9)
のような記号を導入すれば式 (2.5) と式 (2.8) は合わせて以下の偏微分の式を与える
∂z
(N)
i
∂a
(N)
j
=
Iijea
(N)
i
η
−
ea
(N)
i ea
(N)
j
η2
(2.10)
3 クロスエントロピーの式再掲
ミニバッチ平均
H(Y, y) = −
∑P Hmax
P H=1 Y<P H>
log(y<P H>
)
PHmax
(3.1)
サンプル一つについて
H(Y, y) = −Y<P H>
log(y<P H>
) = −
c∑
k=1
Y <P H>
k log(y<P H>
k ) (3.2)
以下サンプル一つの勾配をしばらく計算するので式 (3.2) のサンプル番号 < PH > を省略する
ここで教師データ Y は分類クラス CP H のデータであるとする
2
このとき Y は以下の One-hot 表現になっている。すなわち YCP H
の成分のみが1でその他の成分
がすべて0のベクトルである。式 (2.9) で導入した記号で成分を IiCP H
と書くことができる。
Y =














Y1
Y2
...
YCP H −1
YCP H
YCP H +1
...
0














=














0
0
...
0
1
0
...
0














=














I1CP H
I2CP H
...
ICP H −1,CP H
ICP H CP H
ICP H +1,CP H
...
IcCP H














(3.3)
一方分類器の推論結果 y はソフトマックス関数なので以下のように書かれる。式 (2.4) の η を使っ
て成分を ea
(N)
i
η と書くこともできる。
y =










y1
y2
...
yCP H
...
yc










=
1
∑c
k=1 ea
(N)
k












ea
(N)
1
ea
(N)
2
...
e
a
(N)
CP H
...
ea(N)
c












=















ea
(N)
1
η
ea
(N)
2
η
...
e
a
(N)
CP H
η
...
ea
(N)
c
η















(3.4)
対数をとって負号を付すと
−log(y) =










−log(y1)
−log(y2)
...
−log(yCP H
)
...
−log(yc)










= log(
c∑
k=1
ea
(N)
k )










1
1
...
1
...
1










−












log(ea
(N)
1 )
log(ea
(N)
2 l)
...
log(e
a
(N)
CP H )
...
log(ea(N)
c )












= log(
c∑
k=1
ea
(N)
k )










1
1
...
1
...
1










−











a
(N)
1
a
(N)
2
...
a
(N)
CP H
...
a
(N)
c











−log(y) =












log(
∑c
k=1 ea
(N)
k )
log(
∑c
k=1 ea
(N)
k )
...
log(
∑c
k=1 ea
(N)
k )
...
log(
∑c
k=1 ea
(N)
k )












−











a
(N)
1
a
(N)
2
...
a
(N)
CP H
...
a
(N)
c











(3.5)
3
式 (3.3) と (3.5) の内積をとればクロスエントロピー式 (3.2) が求まる。
H(Y, y) = −Y<P H>
log(y<P H>
) = log(
c∑
k=1
ea
(N)
k ) − a
(N)
CP H
(3.6)
4 クロスエントロピーの勾配を求めていく
まずなにを求めたかったのか再度言及する
クロスエントロピーはニューラルネットワークのトポロジー中に存在するニューロンとニューロン
の間の重み係数 Wl
ij (i, j = 1, 2, 3, ....かつ l = 1, 2, 3, ..., N) すべてで構成された非常に次元数の
大きい空間のベクトルに依存する関数である。この空間におけるクロスエントロピーの勾配が求め
たい
具体的には以下のようにすべてのニューラルネットワークの層のすべてのニューロンをつなぐ重み
での偏微分
∂H
∂W
(1)
11
,
∂H
∂W
(1)
12
,
∂H
∂W
(1)
13
, .....
∂H
∂W
(1)
n2n1
,
∂H
∂W
(2)
11
,
∂H
∂W
(2)
12
,
∂H
∂W
(2)
13
, .....
∂H
∂W
(2)
n3n2
,
....
∂H
∂W
(N)
11
,
∂H
∂W
(N)
12
,
∂H
∂W
(N)
13
, .....
∂H
∂W
(N)
cnN−1
をすべて求めなければならない
しかし式 (3.6) は第 N 層の活性 a
(
iN) への依存しかないのですぐには求まらない。そこで式
(2.1),(2.2),(2.3),(2.10) とチェーンルールを用いて、上のすべての偏微分を求めていく
式 (3.6) は層の N に関してのみ変数を含むのでまず第 N 層の偏微分が求められる
∂
∂W
(N)
ij
H =
∂a
(N)
i
∂W
(N)
ij
∂
∂a
(N)
i
H =
∂H
∂a
(N)
i
z
(N−1)
j (4.1)
ここでは式 (2.2) を使っている
つぎに ∂H
∂a
(N)
i
を求める方法はないか考える。
式 (2.4) を使い η を経由してチェーンルールを使うと (i ̸= CP H のとき, 式 (3.6) の第二項が定
数としてみなせるので式 (2.9) の記号を使えることに注意する)
∂H
∂a
(N)
i
=
∂η
∂a
(N)
i
∂H
∂η
− IiCP H
=
ea
(N)
i
η
− IiCP H
(4.2)
δ
(N)
i = ∂H
∂a
(N)
i
を定義し、上の式 (4.2) に式 (3.3) と式 (3.4) の結果を代入すると
δ
(N)
i =
∂H
∂a
(N)
i
= yi − Yi (4.3)
式 (4.3) は重要な意味を持つ式でクロスエントロピーを最終層の活性 a
(N)
i で偏微分するとこの分
類器の推論 yi と真の答え Yi の差がでてくる。そのため誤差をイメージする δ が文字として充てら
4
れているのである。
第 N 層以外にも δ
(l)
i = ∂H
∂a
(l)
i
を定義してみる。ここでもう一度式 (4.1) をみると実はこれは第 N
層にかぎらず成立することに気づく。なぜなら式 (2.2) がすべての層で成り立つからである。
∂
∂W
(l)
ij
H =
∂H
∂a
(l)
i
z
(l−1)
j = δ
(l)
i z
(l−1)
j (4.4)
そして式 (2.1) を使うと第 l 層の a と第 l − 1 層の z の関係を使ってニューラルネットワークの
出力側から入力側に誤差 δ を引き継ぐ漸化式がつくれることがわかる。実際
δ
(l)
i =
∂H
∂a
(l)
i
=
lmax∑
j=1
l+1max∑
k=1
∂z
(l)
j
∂a
(l)
i
∂a
(l+1)
k
∂z
(l)
j
∂H
∂a
(l+1)
k
=
lmax∑
j=1
l+1max∑
k=1
∂z
(l)
j
∂a
(l)
i
∂a
(l+1)
k
∂z
(l)
j
δ
(l+1)
k (4.5)
式 (2.1) を代入して
δ
(l)
i =
lmax∑
j=1
l+1max∑
k=1
∂z
(l)
j
∂a
(l)
i
W
(l+1)
kj δ
(l+1)
k
さらに式 (2.3) を代入して、(ただし後述する αSTEP 関数を導入する)次式を得る。
δ
(l)
i =
l+1max∑
k=1
αSTEP(a
(l)
i )W
(l+1)
ki δ
(l+1)
k (4.6)
αSTEP(x)=
{
1 (x ≥ 0)
α (x < 0 0 ≤ α < 1)
(4.7)
5 誤差逆伝播のアルゴリズムまとめ
これで誤差逆伝播に必要なすべての式を得た
式 (3.1) と (3.2) の関係をもう一度注意するため、再度サンプル番号 < PH > をつけてアルゴリズ
ムをまとめる
【サンプル毎にする処理】1. 順伝播計算し、途中の層の z
(l)<P H>
i をすべて保存しておく
2. 最終層の誤差 δ
(N)<P H>
i = y<P H>
i − Y <P H>
i を計算する【式 (4.3)】
3. 漸化式を用いてすべての層の誤差 δ
(l)<P H>
i を求める【式 (4.6)】
δ
(l)<P H>
i =
l+1max∑
k=1
αSTEP(a
(l)<P H>
i )W
(l+1)
ki δ
(l+1)<P H>
k
4.「1.」の z と「2-3.」の δ を使いクロスエントロピーのすべての変数に関する偏微分を求める【式
(4.4)】
∂H<P H>
∂W
(l)
ij
= δ
(l)<P H>
i z
(l−1)<P H>
j
【ミニバッチ毎にする処理】5.「1-4.」の計算をすべてのサンプル(PH = 1, 2, 3, ..., PHmax) でお
こない平均値の勾配を求める
∇H =
∑P Hma x
P H=1
∂H<P H>
∂W
(l)
ij
PHmax
=
∑P Hma x
P H=1 δ
(l)<P H>
i z
(l−1)<P H>
j
PHmax
(5.1)
5

Nn bp formula

  • 1.
    逆誤差伝播諸公式メモ 大邦将猛 2019 年 5月 19 日 1 順伝播の式 a (l+1) i = n∑ j=1 W (l+1) ij z (l) j (i = 1, 2, 3, ..., m l = 1, 2, 3, ..., N − 1) (1.1) z (l) i = ReLUα(a (l) i ) (i = 1, 2, 3, ..., n l = 1, 2, 3, ..., N − 1) (1.2) z (N) i = ea (N) i ∑c k=1 ea (N) k (i = 1, 2, 3, ..., c) (1.3) y = ReLUα(x) = { x (x ≥ 0) αx (x < 0 0 ≤ α < 1) (1.4) 2 順伝播の式から得られる偏微分 式 (1.1) から ∂a (l) i ∂z (l−1) j = W (l) ij (l = 2, 3, ..., N) (2.1) ∂a (l) i ∂W (l) jk = { z (l−1) k (i = j) 0 (i ̸= j) (l = 2, 3, ..., N) (2.2) 式 (1.2) から ∂z (l) i ∂a (l) j =    1 (i = j x ≥ 0) α (i = j x < 0) 0 (i ̸= j) (l = 1, 2, 3, ..., N − 1) (2.3) 式 (1.3) から ∂z (N) i ∂a (N) j が求められるがやや複雑なので場合分けして求める まず η を次式のようにおき、a (N) 1 , a (N) 2 , a (N) 3 , ..., a (N) c の変数に依存する関数とみなす。 η = f(a (N) 1 , a (N) 2 , a (N) 3 , ..., a(N) c ) = c∑ k=1 ea (N) k (2.4) 1
  • 2.
    (i ̸= j)のとき、式 (1.3) の分子 ea (N) i は a (N) j に依存しないから、 ∂z (N) i ∂a (N) j = ∂ ∂a (N) j ( ea (N) i η ) = ea (N) i ∂ ∂a (N) j ( 1 η ) = ea (N) i ∂η ∂a (N) j ∂ ∂η ( 1 η ) = ea (N) i ∂η ∂a (N) j ( −1 η2 ) (2.5) ところで ∂η ∂a (N) j は単純に ∂η ∂a (N) j = ea (N) j (2.6) なので式 (2.5) は結局 ∂z (N) i ∂a (N) j = ( −ea (N) i ea (N) j η2 ) (2.7) (i = j) のとき、今度は分子 ea (N) i は a (N) i に依存するので、 ∂z (N) i ∂a (N) i = ∂ ∂a (N) i ( ea (N) i η ) = ( ∂ ∂a (N) i ea (N) i ) 1 η + ea (N) i ( ∂ ∂a (N) i 1 η ) = ea (N) i η − (ea (N) i )2 η2 (2.8) ここで Iij = { 1 (i = j のとき) 0 (i ̸= j のとき) (2.9) のような記号を導入すれば式 (2.5) と式 (2.8) は合わせて以下の偏微分の式を与える ∂z (N) i ∂a (N) j = Iijea (N) i η − ea (N) i ea (N) j η2 (2.10) 3 クロスエントロピーの式再掲 ミニバッチ平均 H(Y, y) = − ∑P Hmax P H=1 Y<P H> log(y<P H> ) PHmax (3.1) サンプル一つについて H(Y, y) = −Y<P H> log(y<P H> ) = − c∑ k=1 Y <P H> k log(y<P H> k ) (3.2) 以下サンプル一つの勾配をしばらく計算するので式 (3.2) のサンプル番号 < PH > を省略する ここで教師データ Y は分類クラス CP H のデータであるとする 2
  • 3.
    このとき Y は以下のOne-hot 表現になっている。すなわち YCP H の成分のみが1でその他の成分 がすべて0のベクトルである。式 (2.9) で導入した記号で成分を IiCP H と書くことができる。 Y =               Y1 Y2 ... YCP H −1 YCP H YCP H +1 ... 0               =               0 0 ... 0 1 0 ... 0               =               I1CP H I2CP H ... ICP H −1,CP H ICP H CP H ICP H +1,CP H ... IcCP H               (3.3) 一方分類器の推論結果 y はソフトマックス関数なので以下のように書かれる。式 (2.4) の η を使っ て成分を ea (N) i η と書くこともできる。 y =           y1 y2 ... yCP H ... yc           = 1 ∑c k=1 ea (N) k             ea (N) 1 ea (N) 2 ... e a (N) CP H ... ea(N) c             =                ea (N) 1 η ea (N) 2 η ... e a (N) CP H η ... ea (N) c η                (3.4) 対数をとって負号を付すと −log(y) =           −log(y1) −log(y2) ... −log(yCP H ) ... −log(yc)           = log( c∑ k=1 ea (N) k )           1 1 ... 1 ... 1           −             log(ea (N) 1 ) log(ea (N) 2 l) ... log(e a (N) CP H ) ... log(ea(N) c )             = log( c∑ k=1 ea (N) k )           1 1 ... 1 ... 1           −            a (N) 1 a (N) 2 ... a (N) CP H ... a (N) c            −log(y) =             log( ∑c k=1 ea (N) k ) log( ∑c k=1 ea (N) k ) ... log( ∑c k=1 ea (N) k ) ... log( ∑c k=1 ea (N) k )             −            a (N) 1 a (N) 2 ... a (N) CP H ... a (N) c            (3.5) 3
  • 4.
    式 (3.3) と(3.5) の内積をとればクロスエントロピー式 (3.2) が求まる。 H(Y, y) = −Y<P H> log(y<P H> ) = log( c∑ k=1 ea (N) k ) − a (N) CP H (3.6) 4 クロスエントロピーの勾配を求めていく まずなにを求めたかったのか再度言及する クロスエントロピーはニューラルネットワークのトポロジー中に存在するニューロンとニューロン の間の重み係数 Wl ij (i, j = 1, 2, 3, ....かつ l = 1, 2, 3, ..., N) すべてで構成された非常に次元数の 大きい空間のベクトルに依存する関数である。この空間におけるクロスエントロピーの勾配が求め たい 具体的には以下のようにすべてのニューラルネットワークの層のすべてのニューロンをつなぐ重み での偏微分 ∂H ∂W (1) 11 , ∂H ∂W (1) 12 , ∂H ∂W (1) 13 , ..... ∂H ∂W (1) n2n1 , ∂H ∂W (2) 11 , ∂H ∂W (2) 12 , ∂H ∂W (2) 13 , ..... ∂H ∂W (2) n3n2 , .... ∂H ∂W (N) 11 , ∂H ∂W (N) 12 , ∂H ∂W (N) 13 , ..... ∂H ∂W (N) cnN−1 をすべて求めなければならない しかし式 (3.6) は第 N 層の活性 a ( iN) への依存しかないのですぐには求まらない。そこで式 (2.1),(2.2),(2.3),(2.10) とチェーンルールを用いて、上のすべての偏微分を求めていく 式 (3.6) は層の N に関してのみ変数を含むのでまず第 N 層の偏微分が求められる ∂ ∂W (N) ij H = ∂a (N) i ∂W (N) ij ∂ ∂a (N) i H = ∂H ∂a (N) i z (N−1) j (4.1) ここでは式 (2.2) を使っている つぎに ∂H ∂a (N) i を求める方法はないか考える。 式 (2.4) を使い η を経由してチェーンルールを使うと (i ̸= CP H のとき, 式 (3.6) の第二項が定 数としてみなせるので式 (2.9) の記号を使えることに注意する) ∂H ∂a (N) i = ∂η ∂a (N) i ∂H ∂η − IiCP H = ea (N) i η − IiCP H (4.2) δ (N) i = ∂H ∂a (N) i を定義し、上の式 (4.2) に式 (3.3) と式 (3.4) の結果を代入すると δ (N) i = ∂H ∂a (N) i = yi − Yi (4.3) 式 (4.3) は重要な意味を持つ式でクロスエントロピーを最終層の活性 a (N) i で偏微分するとこの分 類器の推論 yi と真の答え Yi の差がでてくる。そのため誤差をイメージする δ が文字として充てら 4
  • 5.
    れているのである。 第 N 層以外にもδ (l) i = ∂H ∂a (l) i を定義してみる。ここでもう一度式 (4.1) をみると実はこれは第 N 層にかぎらず成立することに気づく。なぜなら式 (2.2) がすべての層で成り立つからである。 ∂ ∂W (l) ij H = ∂H ∂a (l) i z (l−1) j = δ (l) i z (l−1) j (4.4) そして式 (2.1) を使うと第 l 層の a と第 l − 1 層の z の関係を使ってニューラルネットワークの 出力側から入力側に誤差 δ を引き継ぐ漸化式がつくれることがわかる。実際 δ (l) i = ∂H ∂a (l) i = lmax∑ j=1 l+1max∑ k=1 ∂z (l) j ∂a (l) i ∂a (l+1) k ∂z (l) j ∂H ∂a (l+1) k = lmax∑ j=1 l+1max∑ k=1 ∂z (l) j ∂a (l) i ∂a (l+1) k ∂z (l) j δ (l+1) k (4.5) 式 (2.1) を代入して δ (l) i = lmax∑ j=1 l+1max∑ k=1 ∂z (l) j ∂a (l) i W (l+1) kj δ (l+1) k さらに式 (2.3) を代入して、(ただし後述する αSTEP 関数を導入する)次式を得る。 δ (l) i = l+1max∑ k=1 αSTEP(a (l) i )W (l+1) ki δ (l+1) k (4.6) αSTEP(x)= { 1 (x ≥ 0) α (x < 0 0 ≤ α < 1) (4.7) 5 誤差逆伝播のアルゴリズムまとめ これで誤差逆伝播に必要なすべての式を得た 式 (3.1) と (3.2) の関係をもう一度注意するため、再度サンプル番号 < PH > をつけてアルゴリズ ムをまとめる 【サンプル毎にする処理】1. 順伝播計算し、途中の層の z (l)<P H> i をすべて保存しておく 2. 最終層の誤差 δ (N)<P H> i = y<P H> i − Y <P H> i を計算する【式 (4.3)】 3. 漸化式を用いてすべての層の誤差 δ (l)<P H> i を求める【式 (4.6)】 δ (l)<P H> i = l+1max∑ k=1 αSTEP(a (l)<P H> i )W (l+1) ki δ (l+1)<P H> k 4.「1.」の z と「2-3.」の δ を使いクロスエントロピーのすべての変数に関する偏微分を求める【式 (4.4)】 ∂H<P H> ∂W (l) ij = δ (l)<P H> i z (l−1)<P H> j 【ミニバッチ毎にする処理】5.「1-4.」の計算をすべてのサンプル(PH = 1, 2, 3, ..., PHmax) でお こない平均値の勾配を求める ∇H = ∑P Hma x P H=1 ∂H<P H> ∂W (l) ij PHmax = ∑P Hma x P H=1 δ (l)<P H> i z (l−1)<P H> j PHmax (5.1) 5