BP(BackPropagation)反向传播神经网络介绍及公式推导
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5
附:激活函数
非线性: 当激活函数是线性的时候,一个两层的神经网络就可以逼近基 本上所有的函数了。但是,如果激活函数是恒等激活函数的时候(即 f(x)=x) ,就不满足这个性质了,而且如果 MLP 使用的是恒等激活函数, 那么其实整个网络跟单层神经网络是等价的。 可微性: 当优化方法是基于梯度的时候,这个性质是必须的。 单调性: 当激活函数是单调的时候,单层网络能够保证是凸函数。 f(x)≈x: 当激活函数满足这个性质的时候, 如果参数的初始化是 random 的很小的值, 那么神经网络的训练将会很高效; 如果不满足这个性质, 那 么就需要很用心的去设置初始值。 输出值的范围: 当激活函数输出值是 有限 的时候,基于梯度的优化方 法会更加 稳定,因为特征的表示受有限权值的影响更显著;当激活函数 的输出是 无限 的时候, 模型的训练会更加高效, 不过在这种情况小, 一 般需要更小的 learning rate.
4. 代价函数
代价函数本质上是一种计算误差的算法,有效的代价函数在误差计算中可以 快速调节权重及偏置,下面介绍常用的代价函数。
二次代价函数(Quadratic Cost)
整个神经网络的输出误差用标准方差表示,称为二次代价函数。其中当
2
l=L
表示为输出层, t k 为目标输出值, y k 为神经元预测输出值。 (3) E
Sigmoid 函数
函数: y f( x)
1 1 e x
( x) f( x)(1 f( x)) 导数: f '
TanH 函数
2 1 e 2 x 1 函数: y f( x) tanh( x) 1 e2x 1 e2x
( x) 1 f( x)2 导数: f '
x lj 1 x
l i
l 1 ' l ( w l 1 f( xkl ) blj 1 ) wij f ( xi ),代入得: l kj xi k
l 1 l 1 jl 1 f ' ( xil ) wij j j
(8)
l i
j
x lj 1 x
L
2 (t
k
1
k
ykL )2
(4)
E 1 1 L ( (tk ykL )2 ) L ( (ti yiL )2 ) yiL ti L yi yi k 2 yi 2
交叉熵代价函数(Cross-entropy Cost)
整个神经网络的输出误差用交叉熵表示,称为交叉熵代价函数。其中当 表示为输出层, t k 为目标输出值, y k 为神经元预测输出值。 (5) E
l 对于 wij 及 b lj 的取值将影响输出结果。 因此神经网络就是要通过训练去修正各层权
l 重 wij 及偏置 b lj ,进而将预测输出与目标输出的误差控制在可接受的范围内。
3. 激活函数
激活函数的作用是给神经网络加入非线性因素,使得神经网络可以更好地解 决较为复杂的问题,神经网络中最常用的两个激活函数 Sigmoid 和 TanH。
1 l L。
b:偏置/截距,主要是起修正作用。
2. 前向传播
对一组输入数据从输入层传入,经过隐藏层,得到输出层的预测值。 (1) x j
l
w
k
l l 1 kj k
y
blj
w
k
l kj
f( xkl 1 ) blj ,例:
1 1 0 1 0 1 0 1 x0 w00 y0 w10 y1 w20 y2 b0 2 2 1 2 1 x1 w01 y0 w11 y1 b12
l i
,其中 l L
通过公式(8)我们发现误差 il 可由下一层误差 il 1 反向计算出来, 也就是说 只要我们算出输出层的误差 iL ,就能反向算出前面各层神经元的误差 il ,这就 是神经网络 BP 反向传播模型(BackPropagation)的理论基础。 下面来推导当 l L 时输出层的误差 iL : (9)
i
L
E L xi
k
E ykL E yiL E L L L f' ( xiL ) 可见输出层 L l yk xi yi xi yi
的误差是由代价函数算法决定的,参见公式(4)(6)计算如下: 二次代价函数时:
iL
E ' L f ( xi ) ( yiL ti )f ' ( xiL ) L yi
l i
j
l 1 E x j x lj 1 xil
j
x lj 1 x
l i
jl 1 ,其中 l L
将公式(1) x j
l 1
w
k
l 1 l kj k
y blj 1
w
k
l 1 kj
f( xkl ) blj 1 ,对 x i 的求导
l
可计算出上式中的
y
0 x2
0 2
y
w w
1 20 1 21
1 1
Hale Waihona Puke Baidu
2 w 10 2 w 11
x
1 1
x
b
2 0
2 1
y 12 t 1
1 b0
1
l 1
b 12
1
l 0
b 11
l L2
说明:
l: 层, 第 0 层为输入层, 最后一层为输出层 L, 中间为隐藏层 (大于等于 0) 。
l w:权重, wij 表示连接第 l - 1 层第 i 个与第 l 层第 j 个神经元的权重值,其中
5. 链式法则
如果函数 u (t )及 v (t )都在 t 点可导,复合函数 z f(u,v)在对应点(u,v)具 有连续偏导数,z 在对应 t 点可导,则其导数可用下列公式计算:
dz z du z dv dt u dt v dt
6. 神经元误差
定义 l 层的第 i 个神经元上的误差为 il 即: (7)
分别代入(a) (b)得如下公式: (10) wij
l l wij
E l wij jl yil 1 ,( 1 l L ) l wij
(11) b j
l
blj
E blj jl ,( 1 l L ) l b j
王伟东 532873584@qq.com 2017-12-20
1
(2)
yil f( xil )即激活函数,其作用是能够给神经网络加入一些非线性
因素,使得神经网络可以更好地解决较为复杂的问题。
这两个计算公式非常重要, 它表达了输入数据在神经网络中前向传播的过程,
l f( xkl 1 ) blj 计算出来, 每一层的 x lj 结果都由前一层的输出及权重根据公式 wkj k
6
il
E xil
l
整个神经网络的输出总误差可以由任意一层的每个神经元的 x i 建立复合函
3
数:
l 1 l 1 l 1 E f(x0 , x1 ...xn ),因函数中出现了 l+1,所以仅当 l L 时有意
义,根据链式法则误差 il ( l L )计算如下:
E l xi
交叉熵代价函数时:
i
L
E ' L yiL ti L f ( xi ) L f' ( xiL ) L yi yi (1 yi )
7. 反向传播(BackPropagation)
通过公式(8)我们知道误差 il 可由下一层误差 il 1 反向计算出来,进而根据 神经元误差反向传导的特点我们称之为反向传播。 根据对每层神经元误差的计算
4
结果,结合应用广泛的梯度下降算法,通过训练反复调节每层的权重及偏置,进 而将预测输出与目标输出误差控制在可接受的范围内。 梯度下降算法公式如下,其中 为学习率参数。 (a) wij
l l l l wij wij wij
E l ,即修正后的新权重 wij
(b) b j
神经网络中的反向传播(BackPropagation) 1. 神经网络结构
y il f ( x il ) (l 0) (l 0)
y
0 0
x
0 0
1 w 00
y i0 x i0
w
y 10
1 01 1 10
x
1 0
1 y0
2 w 00
x
0 1
w
w
2 01
x
2 0
2 t0 y0
1 w 11
L
l=L
[t
k
k
ln ykL (1 tk )ln (1 ykL )]其中 y kL 值域[0,1]
(6)
E ([ti ln yiL (1 ti )ln (1 yiL )]) L L yi yi
( ti ti 1 yiL ti ) yiL 1 yiL yiL(1 yiL )
l
blj blj blj
E ,即修正后的新偏置 blj
E 其中 : l wij
k
l E xkl E x j l jl yil 1 l l l xk wij x j wij
E blj
k
l E xkl E x j l jl l l l xk b j x j b j