逆伝播アルゴリズム
📂機械学習逆伝播アルゴリズム
この文は逆転派アルゴリズムの原理を数学専攻者が理解しやすいように作成された。
表記法

上図のような 人工ニューラルネットワーク が与えられたとする。x=(x1,x2,…,xn0)は入力input、 yjlはl番目の層のjノード、y^=(y^1,y^2,…,y^n^)ドルは出力outputである。
L∈Nは、隠匿層hidden layerの個数であり、n=(n0、n1、…、nL、n^)∈NN=(n)、の成分は順に入力層、L個の隠匿層と出力層のノード数を意味する。 また、便宜上、0番目の隠匿層は入力層を意味し、L+1番目の隠匿層は出力層を意味するとする。
wjilは、lの次の層のiのノードとその次の層のjのノードを連結する加重値を表す。 すると、各階から次の階への伝播は、以下のGIFのように起こる。

ここで ϕ は任意の活性化関数 である。 l 番目の層から次の層の j 番目のノードに伝達される線形結合を vilで表記しよう。
vjlyjl+1=i=1∑nlwjilyil=ϕ(vjl)=ϕ(∑i=1nlwjilyil)
これを定理すると次のようになる。
記号 | 意味 |
---|
x=(x1,x2,…,xn0) | 入力 |
yjl | l 番目の層の j 番目のノード |
y^=(y^1,y^2,…,y^n^) | 出力 |
nl | l 番目の層のノード数 |
wjil | l 番目の層の i 番目のノードと その次の層の j 番目のノードを接続する重み付け |
ϕ | 活性化関数 |
vjl=i=1∑nlwjilyil | 線形結合 |
yjl+1=ϕ(vjl) | l 番目の階から次の階への 電波 |
定理
E=E(y^)を微分可能な適切な損失関数とする。 それでは、Eを最適化する方法は、各層での加重値wjilを次のようにアップデートするものである。
wjil←wjil+αδjlyil
この時、αは学習率で、δjl は以下の通りである。
l=Lの時、
−δjL=ϕ′(vjL)∂y^j∂E(y^)
l∈{0,…,L−1}の時、
δjl=ϕ′(vjl)i=1∑nlδil+1wijl+1
説明
(1)を見てみよう。 l番目の層とl+1番目の層の間の加重値を更新する時、l番目のノードのyjlに依存するということですが、各層の出力に応じて最終的に出力y^が決定されるので当然と見ることができる。 また、yjlはl番目からl+1番目の層に伝播される時の入力と見ることができるが、これは線形回帰モデルでLMSLeast Mean Squaresで学習する方法と似ている。
w←w−α(wTx−y)x
一方、各層での出力yjlは入力層から出力層として計算される反面、最適化のためのδjl は次のように出力層から入力層に逆に計算されるため、このような最適化手法を逆伝播アルゴリズムback propagation algorithmという。
δjLδjL−1δjL−2δjL−3δj1δj0=−ϕ′(vjL)∂y^j∂E(y^)=ϕ′(vjL−1)i∑δjLwijL=ϕ′(vjL−2)i∑δiL−1wijL−1=ϕ′(vjL−3)i∑δiL−2wijL−2⋮=ϕ′(vj1)i∑δi2wij2=ϕ′(vj0)i∑δi1wij1
証明
入力層から出力層への計算が終わったとする。 加重値を損失関数Eが減る方向に修正する方法は傾斜下降法を使えば次のようになる。
wjil←wjil−α∂wjil∂E(y^)
それぞれのyilは与えられた値なので、偏微分部分を計算できる形で解くことができる。 右辺の偏微分は連鎖法則によって次のようになる。
∂wjil∂E(y^)=∂vjl∂E(y^)∂wjil∂vjl=∂vjl∂E(y^)yil
(3)の右辺の偏微分を−δjl とすると、(2) から (1) を得る。
wjil←wjil+αδjlyil
各層で δjl を次のように求める。
l=Lの場合
j∈{1,…,n^} に対して次が成立する。
−δjL=∂vjL∂E(y^)=∂y^j∂E(y^)dvjLdy^j
この時、y^j=ϕ(vjL) であるから次を得る。
−δjL(t)=ϕ′(vjL(t))∂y^j∂E(y^)
■
l=L−1の場合
j∈{1,…,nL−1}については以下の通りである。
−δjL−1=∂vjL−1∂E(y^)==∂yjL∂E(y^)dvjL−1dyjL
この時yjL=ϕ(vjL−1) であるので、次を得る。
−δjL−1==∂yjL∂E(y^)∂vjL−1∂yjL==ϕ′(vjL−1)∂yjL∂E(y^)
右辺の偏微分は連鎖法則によって次のように計算される。
−δjL−1=ϕ′(vjL−1)∂yjL∂E(y^)=ϕ′(vjL−1)i∑∂y^i∂E(y^)∂yjL∂y^i=ϕ′(vjL−1)i∑∂y^i∂E(y^)dviLdy^i∂yjL∂viL
ここで (4) と viL=∑jwijLyjL により、次を得る。
⟹−δjL−1δjL−1=ϕ′(vjL−1)i=1∑∂y^i∂E(y^)∂viL∂y^idyjLdviL=ϕ′(vjL−1)i∑−δiLwijL=ϕ′(vjL−1)i∑δiLwijL
■
l=L−2の場合
j∈{1,…,nL−2}については以下の通りである。
−δjL−2=∂vjL−2∂E(y^)=∂yjL−1∂E(y^)dvjL−2dyjL−1
この時yjL−1=ϕ(vjL−2) であるから次を得る。
−δjL−2=∂yjL−1∂E(y^)dvjL−2dyjL−1=ϕ′(vjL−2)∂yjL−1∂E(y^)
右辺の偏微分は連鎖法則によって次のように計算される。
−δjL−2=ϕ′(vjL−2)∂yjL−1∂E(y^)=ϕ′(vjL−2)i∑∂y^i∂E(y^)∂yjL−1∂y^i=ϕ′(vjL−2)i∑∂y^i∂E(y^)dviLdy^i∂yjL−1∂viL=ϕ′(vjL−2)i∑∂y^i∂E(y^)dviLdy^ik∑∂ykL∂viL∂yjL−1∂ykL=ϕ′(vjL−2)i∑∂y^i∂E(y^)dviLdy^ik∑∂ykL∂viLdvkL−1dykL∂yjL−1∂vkL−1=ϕ′(vjL−2)k∑i∑∂y^i∂E(y^)dviLdy^i∂ykL∂viLdvkL−1dykL∂yjL−1dvkL−1=ϕ′(vjL−2)k∑i∑−δiLwikLϕ′(vkL−1)wkjL−1
したがって、次を得る。
δjL−2=−ϕ′(vjL−2)k∑i∑δiLwikLϕ′(vkL−1)wkjL−1
このとき、(5) によって次が成立する。
i∑δiLwikLϕ′(vkL−1)=ϕ′(vkL−1)i∑δiLwikL=δkL−1
したがって、次を得る。
δjL−2=ϕ′(vjL−2)k∑δkL−1wkjL−1=ϕ′(vjL−2)i∑δiL−1wijL−1
■
一般化: l∈{1,…,L−1}
上記の結果に基づき、次のように一般化することができる。j∈{1,…,nl}については以下の通りである。
−δjl=ϕ′(vjl)∂yjl∂E(y^)
右辺の偏微分を連鎖法則で解くと次のようになる。
δjl=−ϕ′(vjl)∂yjl∂E(y^)=−ϕ′(vjl)i(1)∑∂y^i(1)∂E(y^)∂yjl∂y^i(1)=−ϕ′(vjl)i(1)∑∂y^i(1)∂E(y^)dvi(1)Ldy^i(1)∂yjl∂vi(1)L=−ϕ′(vjl)i(2)∑i(1)∑∂y^i(1)∂E(y^)dvi(1)Ldy^i(1)∂yi(2)L∂vi(1)L∂yjl∂yi(2)L=−ϕ′(vjl)i(2)∑i(1)∑∂y^i(1)∂E(y^)dvi(1)Ldy^i(1)∂yi(2)L∂vi(1)Ldvi(2)L−1dyi(2)L∂yjl∂vi(2)L−1=−ϕ′(vjl)i(3)∑i(2)∑i(1)∑∂y^i(1)∂E(y^)dvi(1)Ldy^i(1)∂yi(2)L∂vi(1)Ldvi(2)L−1dyi(2)L∂yi(3)L−1∂vi(2)L−1∂yjl∂yi(3)L−1=−ϕ′(vjl)i(3)∑i(2)∑i(1)∑∂y^i(1)∂E(y^)dvi(1)Ldy^i(1)∂yi(2)L∂vi(1)Ldvi(2)L−1dyi(2)L∂yi(3)L−1∂vi(2)L−1dvi(3)L−2dyi(3)L−1∂yjl∂vi(3)L−2⋮=−ϕ′(vjl)i(L−l)∑⋯i(3)∑i(2)∑i(1)∑∂y^i(1)∂E(y^)dvi(1)Ldy^i(1)∂yi(2)L∂vi(1)Ldvi(2)L−1dyi(2)L∂yi(3)L−1∂vi(2)L−1dvi(3)L−2dyi(3)L−1∂yi(4)L−2∂vi(3)L−2⋯dvi(L−l+1)ldyi(L−l+1)l+1∂yjl∂vi(L−l+1)l=ϕ′(vjl)i(L−l)∑⋯i(3)∑i(2)∑i(1)∑−δi(1)Lwi(1)i(2)Lϕ′(vi(2)L−1)wi(2)i(3)L−1ϕ′(vi(3)L−2)wi(3)i(4)L−2⋯ϕ′(vL−l+1l)wi(L−l+1)jL=ϕ′(vjl)i(L−l)∑⋯i(3)∑i(2)∑δi(2)L−1wi(2)i(3)L−1ϕ′(vi(3)L−2)wi(3)i(4)L−2⋯ϕ′(vL−l+1l)wi(L−l+1)jL=ϕ′(vjl)i(L−l)∑⋯i(3)∑δi(3)L−2wi(3)i(4)L−2⋯wi(L−l)jL⋮=ϕ′(vjl)i(L−l)∑δi(L−l)l+1wi(l−l)jl
したがって、定理すると次のようになる。
δjl=ϕ′(vjl)i∑δil+1wijl+1
■