深度学习(Deep Learning) 2.BP算法
1 Gradient Descent
- 初始化参数 θ0
- 计算 ∇L(θ0) , θ1=θ0−η∇L(θ0) ……
- 神经网络中参数巨多!
2 Chain Rule 链式法则
-
y=g(x),z=h(y)
dzdx=dzdy+dydx -
x=g(s),y=h(s),z=k(x,y)
dzds=∂z∂xdxds+∂z∂ydyds
3 BackPropagation
- L(θ)=∑nCn(θ)
- ∂L(θ)∂w=∑n∂Cn(θ)∂w
- ∂C∂z=∂C∂a∂a∂z , ∂C∂a=∂z′∂a∂C∂z′+∂C∂z″∂z″∂a , a=σ(z)
- ∂C∂z=σ′(z)(w3∂C∂z′+w4∂a∂z)
4 BP算法推导
给定训练集
D={(x1,y1),(x2,y2),…,(xm,ym)},xi∈Rd,yi∈Rl
,输入层d个神经元,输出层l个,隐藏层q个。输出层第j个神经元的阈值为
θj
,隐藏层第h个神经元的阈值为
γh
,
对于训练实例
(xk,yk)
,假设其输出为
ŷ k=(ŷ k1,ŷ k2,…,ŷ kl)
,即
ŷ kj=f(βj−θj)
,误差为
Ek=12∑j=1l(ŷ kj−ykj)2
网络中总共有 (d+l+1)q+l 个参数需要确定:输入层到隐藏层的 d∗q 个,隐藏层到输出层的 q∗l 个, q 个隐藏层神经元阈值,
l 个输出层神经元阈值
- 隐藏层到输出层的权值
whj
的推导:
∇whj=−η∂Ek∂whj
∂Ek∂whj=∂Ek∂ŷ kj∂ŷ kj∂βj∂βj∂whj ,且 βj∂whj=bh
sigmoid函数的性质有: f′(x)=f(x)(1−f(x))
gj=−∂Ek∂ŷ kj∂ŷ kj∂βj=−(ŷ kj−ykj)f′(βj−θj)=ŷ kj(1−ŷ kj)(ykj−ŷ kj)
因此 ∇whj=ηgjbh - 类似可以得到:
∇θj=−ηgj
∇vih=ηehxi
∇γh=−ηeh
其中 eh=−∂Ek∂bh∂bh∂αh=−∑j=1l∂Ek∂βj∂βj∂bhf′(αh−γh)=∑j=1lwhjgjf′(αh−γh)=bh(1−bh)∑j=1lwhjgj