Backpropagation

Backpropagation

@[深度学习, 向后传播算法]

wjkl 表示 (l1)th 层的第 k 个神经元和第lth层的第j个元素的连接

神经网络权重

enter image description here

blj l 层神经元的bias
aij l 层神经元的activation

alj=σ(kwljkal1k+blj),(1)

wljk : j 的范围是第l层神经元的个数,k的范围是第 (l1) 层神经元的个数,这个表示方便将公式表示为矩阵的形式

al=σ(wlal1+bl).(2)

这里 al1 是第 l 层的激活神经元

代价函数相关的两个假设

backpropagation的目标就是计算代价函数对w b 的偏导

二次代价函数的形式:

C=12nxy(x)aL(x)2,(3)

  • 假设1:代价函数能够被写成 C=1nxCx ,需要这个假设的原因是backpropagation实际上需要我们计算的是对单个训练样本的偏导( Cxw Cxb
  • 假设2:代价函数能够被写成神经网络输出的函数
    enter image description here
    例如:二次代价函数能够写成:

C=12yaL2=12j(yjaLj)2,(4)

Hadamard product

[12][34]=[1324]=[38].(5)

Backpropagation的四个基本等式

backpropagation是为了理解在神经网络中改变weights和biases是怎样改变代价函数,最终,意味着计算偏导 Cwljk Cblj

为了计算偏导,我们首先计算中间量, δlj ,表示 lth 层第 j 个神经元的error

zlj=(kwljkal1k+blj),(6)

δljCzlj.(7)

backpropagation给了一个对每层计算 δl 的方法

误差在输出层的等式

δLj=CaLjσ(zLj).(BP1)

* C/aLj 衡量了以第 jth 个激活元为函数的变化速率
* σ(zLj) 衡量了sigmoid函数对 zLj 的变化速率
* C/aLj 的精确形式取决于代价函数的选择,例如针对二次代价函数而言
* 当 σ(zLj) 趋近于0或1的时候, σ(zLj)0 δLj 也会变的很小,可以说输出神经元已经饱和,weight开始停止学习或学习的很慢

C=12j(yjaj)2
CaLj=(ajyj)

δL=aCσ(zL).(BP1a)

二次代价函数的 δL
δL=(aLy)σ(zL)

在式子中都有较好的向量形式,因此容易利用Numpy等库进行计算

下一层误差等式, δl+1

δl=((wl+1)Tδl+1)σ(zl),(BP2)

总结而言:
* 当输出神经元的状态是low-activation或者sturated时,weight将会缓慢的学习
* 这四个公式对任何形式的激活函数都有用

An equation for the rate of change of the cost with respect to any bias in the network:

Cblj=δlj(BP3)

Cb=δ,(BP3a)

An equation for the rate of change of the cost with respect to any weight in the network
Cwljk=al1kδlj.(BP4)

Cw=ainδout,(BP4a)

证明

(BP1)

δLj=CaLjσ(zLj).(BP1)

δLj=CzLj

链式法则
δLj=CaLjaLjzLj

(BP2)

δl=((wl+1)Tδl+1)σ(zl),(BP2)

δlj=Czlj=kCzl+1kzl+1kzlj=kzl+1kzljδl+1k,()(a)(b)

zl+1k=jwl+1kjalj+bl+1k=jwl+1kjσ(zlj)+bl+1k

(BP3)

Cblj=δlj(BP3)

Cblj=Czljzljblj

zljblj=1

(BP4)

Cwljk=al1kδlj.(BP4)

Cwljk=Czljzljwljk()

zlj=kwljkal1k+blj

backpropagation算法

backpropagation equations 提供了一个计算代价函数梯度的方式

  1. 输入 x :设置相应的 activation a1 为输入层
  2. Feedforward: 对每一层 l=2,3,...,L 计算 zl=wlal1+bl al=σ(zl)
  3. Output error (输出层误差) : 计算向量 δL=aCσ(zL)
  4. Backpropagate the error : 对每一层 l=L1,L2,...,2 计算 δl=((wl+1)Tδl+1)σ(zl)
  5. 输出 : 计算代价函数的梯度,通过 Cwljk=al1kδljCblj=δjl

mini-batch:(随机梯度下降结合backpropagation)
1. 输入一组训练样本
2. 对每个训练样本:设置相应的输入激活元 ax,1
- Feedforward: 对每一层 l=2,3,...,L 计算 zx,l=wlax,l1+bl ax,l=σ(zx,l)
- Output error (输出层误差) : 计算向量 δx,L=aCxσ(zx,L)
- Backpropagate the error : 对每一层 l=L1,L2,...,2 计算 δx,l=((wl+1)Tδx,l+1)σ(zx,l)
3. 梯度下降 : 对每一层 l=L,L1,...,2 ,更新权重weights,根据规则

wlwlηmxδx,l(ax,l1)T
blblηmxδx,l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值