反向传播学习算法

1969年被发明,但直到上世级八十年代才得到重视。
通用的网络训练伪代码:
function neural-network-learning( training-records ) returns network
network <- initialize weights (randomly)
start loop
for each example in training-records do
network-output = neural-network-output( network, example )
actual-output = observed outcome associated with example
update weights in network based on
{ example, network-output, actual-output }
end for
end loop when all examples correctly predicted or hit stopping conditions
return network


注意:
多层神经网络的学习算法即不保证全局最优,也不保证绝对有效。
MSE(mean squared error):平均方差。
定义:
function backpropagation-algorithm
( network, training-records, learning-rate ) returns network
反向学习传播算法带三个参数:
1.network:多层前馈网络。
2.training-records:样本集(特征,标注)
3.learning-rate:超参数。


现在想象:给出一个样本,输入网络,产生输出,与label对比,得到差异Erri。
重点来了:如果根据差异Erri调整权重?
考虑最后两层:倒数第一层是输出层i,倒数第二层是隐藏层j.
权重调整公式(1):Wji <--  Wji + α × aj × Erri × g′ (input_sumi)
关键是咋理解这个公式?
α × aj × Erri × g′ (input_sumi)是调权重的变化值,再分析。
α:学习率,超参数。
aj:神经元j的激活值。aj = g (input_sumj)
input_sumi = Wi · Ai + b
Erri:异差项
我们想得到一个微小的差异项:Δi = Erri × g′(input_sumi)
也就是说,如果我们想把权重朝着正确的方向调整一点点,下面的公式更好表达:
权重调整公式(2):Wji 《-- Wji + α × aj × Δi
这个公式是说:考虑把差异项中的一点变化Δi向稍好的方向修正下,通过上面的公式可以调整一下Wji.
但是,这个第i层的小小差异Δi,在第j层又是什么情况呢?
Δj《-- g′( input_sumj)ΣWjiΔi
小结下:
输出层到隐藏层:
(1):input_sumi = Wi · Ai + b 
(2):aj = g (input_sumj)
(3):Wji <--  Wji + α × aj × Erri × g′ (input_sumi)
(4):Δi = Erri × g′(input_sumi)
隐藏层往前传播:
(5):Wji 《-- Wji + α × aj × Δi, 也就是说,学习率和上层神经元的激活值对差异有线性关系。
(6):Δj《-- g′( input_sumj)ΣWjiΔi
在Mini-Batch的SGD中,算的是平均坡度。
说得比较执行层面,对理解帮助不大。


推荐一篇知乎上的文档:https://www.zhihu.com/question/27239198?rf=24827633

这篇文档关于复合函数的链式法则、BP的巧妙之处以及欠钱的比喻,说得很形象,如果高数过关,不难理解,这里就不转了。

两种视角各有特点吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值