0誤差逆伝播法によるニューラルネットワーク(BackPropagation
Neural Network, BPNN)

明治大学 理⼯学部 応用化学科
データ化学⼯学研究室 ⾦⼦ 弘昌

BPNN とは︖
ニューラルネットワークおよびその学習法の一つ
目的変数の誤差が小さくなるように、各ニューロンの重みを最適化深層学習 (ディープラーニング) も基本的には同じ学習方法で可能• ディープニューラルネットワーク
隠れ層の数が多くなると、⼊⼒変数 (説明変数) に近くなるにつれて学習が進まなくなるので注意

1

2

ニューラルネットワークの構造 1/2
⼊⼒変数(説明変数)x0=1

w0,1(0)隠れ層
1 層目
z0(1)=1z1(1) = f(a1(1))x2z2(1) = f(a2(1))

w0,1(1)z0(2)=1・・・
w0,1(2)

・・・

x1

隠れ層
2 層目

z1(2) = f(a1(2))
w2,2(1)z2(2) = f(a2(2))

w2,2(3)

・・・

・・・

・・・

・・・

xi

zi (1) = f(ai (1))

zi (2) = f(ai (2))iwm(1),m(2)(1)zm(2)(2) = f(am(2)(2))wm(2),m(3)(2)・・・ ・・・

wm,m(1)(0)zm(1)(1) = f(am(1)(1))

・・・

・・・

・・・
xm

ニューラルネットワークの構造 2/2

3

隠れ層
k 層目

出⼒変数
(目的変数)

・・・

隠れ層
j 層目

・・・
w0,1(k-1)

z0(k)=1

・・・・・・

z1(k) = f(a1(k))
w2,2

(k-1)

z2(k) = f(a2(k))

・・・

・・・

・・・

ii

zi (k) = f(ai (k))

・・・ ・・・・・・ ・・・・・・
wm(k-1),m(k)(k-1)w0(k)zm(k)(k) = f(am(k)(k))

w2(k)

yE

wm(k)(k)yニューラルネットワークの構造の補足

4

⼊⼒変数 (説明変数) と隠れ層 1 層目の間や、隠れ層の前後の間や、隠れ層 k 層目と出⼒変数 (目的変数) の間の、すべての線 (ー) に重み w がある
それぞれの隠れ層における四角 ( zi(j) = f(ai(j)) ) をニューロンと呼ぶ
⼊⼒変数 (説明変数) には x0 = 1 が、それぞれの隠れ層にも 0 番目のニューロンとして z0(j) =1 が、バイアスパラメータとしてある
隠れ層 j-1 層目の p 番目のニューロンと、隠れ層 j 層目の i 番目のニューロンとの間の重みを、wp,i(j) とする

ニューラルネットワークの構造を式で表す
(1)

m(0)

mai =  w p ,i x p + w0,i =  w(p0,i) x p
p =1

m((0)

p =0j −1)m(( x0 = 1)

j −1)

( z ( ) = 1)

ai( j ) =  w(p j,i−1) z (p j −1) + w0,( ji−1) =  w(p j,i−1) z (p j −1)
p =1

j −10

p =0

( )

zi( j ) = f ai( j )
m( )
km( )

p =1

p =0

kyE =  w(pk ) z (pk ) + w0( k ) =  w(pk ) z (pk )(xi︓i 番目の⼊⼒変数 (説明変数)y︓出⼒変数 (目的変数)yE︓推定された出⼒変数 (目的変数)
f : 活性化関数)

z0( k ) = 15

6活性化関数の例 1/2( )zi( j ) = f ai( j )シグモイド関数ソフトサイン

ソフトマックス関数

zi( j ) =( j)zi=1(1 + exp − ai( j )ai( j )

1 + ai( j )()z =( )
expa ( )( j)i

exp ai( j )m( )jp =1jp)7

活性化関数の例 1/2( )zi( ) = f ai( )
jj

(ReLU
(Rectified Linear Unit)zi( ) = max 0, ai( )動径基底関数

( j)

jzij)

( )

( j) 2 = exp  −γ ai活性化関数についての補足
活性化関数によって、ニューラルネットワークが非線形になる
活性化関数は微分可能である必要がある (後述)
以前はシグモイド関数が多く用いられたが、近年は隠れ層の数 k を多くすることもあり、ReLU やその改良版が用いられることが多い (後述)
クラス分類のときは、出⼒層にソフトマックス関数を用いる
動径基底関数を用いたとき、RBF (Radial Basis Function)
ネットワークの一つになる8ネットワークを構築するとは︖
すべての重み ( wp(k) や wp,i(j) ) を決めるということ決める方法の一つが、誤差逆伝播法

9誤差逆伝播法 サンプルごとの誤差 E
サンプルごとの誤差 E は

E=1012y−y( E )2

サンプルごとに E が小さくなるように、重み w を変化させていけばよい
w を微小変化させることでどう E が変化するか、を求めるため、E を w で微分するこれにより w を変化させるべき方向 (大きくするか小さくするか) が・・・求まるので、たとえば確率的勾配降下法 [1] などで重みを更新する[1] https://ja.wikipedia.org/wiki/確率的勾配降下法

11

誤差逆伝播法 隠れ層 k 層目から y への重み∂E∂E ∂y E=∂w(pk ) ∂yE ∂w(pk )(連鎖則) ・・・

( )d1log x 2 = 2 2 xdxx

でやっていることと同じ
p. 10 より

∂E= yE − y∂y E

p. 5 の４式目より

よって、

∂y E
(k )
=zp∂w(pk )∂E(k )=y−yz()Ep∂w(pk )誤差逆伝播法 k = 1 のとき
続いて、隠れ層 j 層目から j+1層目への重みを考えたいが、まずは、最も単純な k = 1 つまり隠れ層が 1 層のときを考える

12

13

ニューラルネットワークの構造 隠れ層 1 層
⼊⼒変数(説明変数)
x0=1w0,1(0)z0(1)=1x1

z1(1) = f(a1(1))x2z2(1) = f(a2(1))

・・・

・・・

xizi (1) = f(ai (1))

・・・

・・・

xm

出⼒変数
(目的変数)

隠れ層
1 層目

wm,m(1)(0)zm(1)(1) = f(am(1)(1))

w0(1)

w2(1)

yE

wm(1)(1)y14

誤差逆伝播法 x から隠れ層 1 層目への重み1∂E∂E ∂ai( )= (1)(0)∂w p ,i ∂ai ∂w(p0,i)

p. 5 の１式目よりまた、(連鎖則)∂ai(1)(0)∂w p , i= xp∂y E∂E∂E ∂ y E== ( yE − y ) (1)1)(1)(∂yE ∂ai∂ai∂ai(連鎖則)
p. 5 の４式目より(p. 11)
(1)
∂z
∂y E
(1)
i=w
i
∂ai(1)∂ai(1)

(1)
∂z
∂E
(1)
i=xy−yw()
よって、
pEi∂w(p0,i)∂ai(1)

誤差逆伝播法 活性化関数の微分∂zi(1)(1)i∂aは、p. 6, 7 の活性化関数を ai(j) で微分して、その導関数にai(1) を代⼊したもの

活性化関数は ai(j) で微分可能である必要がある

15

誤差逆伝播法 k > 1 のとき 1/3
隠れ層が 2 層以上のとき (ディープニューラルネットワーク)、
隠れ層 j-1 層目から j 層目への重みを考えるj∂E∂E ∂ai( )= ( j)( j −1)∂w p , i∂ai ∂w(p j,i−1)

p. 5 の２式目より(連鎖則)∂ai( j )( j −1)=zp( j −1)∂w p , i

隠れ層 j 層目の i 番目のニューロンにつながっている、
隠れ層 j+1 層目の m(j+1) 個のニューロンを考えると、
m(j +1)∂aq( j +1)∂E∂E=
( j +1)( j)∂ai( j )∂a∂aq =1qi16

17

誤差逆伝播法 k > 1 のとき 2/3m(j +1)∂aq( j +1)∂E∂E=
( j +1)∂ai( j )∂ai( j )q =1 ∂aqp. 5 の２式目より∂zi( j )∂ai( j )m(j −1)aq( j +1) =  w(p j, q) z (p j )
p =0

から、

∂aq( j +1)
( j)

∂ai

( j)
∂z
( j)
i

= wi , q∂ai( j )は、p. 6, 7 の活性化関数を ai(j) で微分して、その導関数にai(1) を代⼊したもの

誤差逆伝播法 k > 1 のとき 3/3
p. 16, 17 をまとめると、∂E∂aq( j +1)

( j)
∂z
∂E
∂
Ej−1j( )
( )
i=zw

p( j)
( j +1) i , q∂w(p j,i−1)∂a∂aq =1qim(j +1)

について、p. 17 と同様にして、隠れ層 j+1 層目の q 番目のニューロンにつながっている、隠れ層 j+2 層目の m(j+2) 個のニューロンを考えることができる
これを繰り返すと、j+2 層目、 j+3 層目、・・・となり、最後は y になる∂E= yE − yつまり、
∂y E

18

誤差逆伝播法 名前の由来

19

以上のように、y の誤差 yE – y が、隠れ層 k 層目、k-1 層目、・・・ と逆に伝播して、重みの変化に寄与していることから、誤差逆伝播法と呼ぶ

20

誤差逆伝播法 注意点
y の誤差が伝播するとき、隠れ層 k 層目、k-1 層目、・・・ と⼊⼒変数(説明変数) に近くなるにつれて、値が小さくなってしまうことに注意
p. 18 に活性化関数の微分係数∂zi( j )( j)∂aiがあるが、たとえばシグモイド関数の微分係数の最大値は 0.25 であり、隠れ層の層が深くなるにつれて、最大でも 0.25j と指数関数的に小さくなってしまう
重み w が変化しなくなってしまう
そこで、特に隠れ層の数 k を多くするときには、微分係数が 1 になる
ReLU が使われる