多层网络和反向传播笔记

在我之前的博客中讲到了感知器(感知器),它是用于线性可分模式分类的最简单的神经网络模型,单个感知器只能表示线性的决策面,而反向传播算法所学习的多层网络能够表示种类繁多的非线性曲面。

对于多层网络,如果使用线性单元的话,多个线性单元的连接仍然是线性函数,所以还不能表征非线性函数。使用感知器单元,但是它不连续所以也就不可微,不适合梯度下降算法。我们需要这么一种单元,它的输出是输入的非线性函数,而且输出是输入的可微函数。那么可以使用sigmoid单元,它非常类似于感知器单元,而且基于一个平滑的可微阈值函数,It looked like this:
sigmoid

sigmoid函数公式如下:

σ(y)=11+e y   
它的输出范围为[0,1],随输入单调递增,这个函数把非常大的输入值映射到一个小范围的输出,它经常被称为sigmoid单元的挤压函数(squashing function)。sigmoid函数的导数很容易以它的输出表示,即
dσ(y)dy =σ(y)(1σ(y)) 
有时候可以使用其他容易计算导数的可微函数代替,比如sigmoid函数中的 e y   有时候被替换为 e ky   其中 k  是个正常数,用来决定函数的陡峭性。双曲正切函数也可用来代替sigmoid函数 。

对于由一系列确定的单元相互连接形成的多层网络,反向传播算法可以用来学习这个网络的权值,它使用梯度下降方法来最小化网络输出值和目标值之间的误差平方。

在这里我们要考虑网络中多个输出单元,而不是一个单元,所以可以看到下面的误差公式中要计算两次和:

E(w  )12  dD  koutputs (t kd o kd ) 2  
其中 outputs  是网络输出单元的集合, t kd   o kd   是与训练样例 d  和第k  个输出单元相关的输出值。

反向传播算法需要解决的问题是搜索一个巨大的假设空间,这个空间由网络中所有单元的所有可能权值定义,此时可以用一个误差曲面来形象表示。在和训练单个单元的情况一样,梯度下降可以用来寻找使 E  最小化的一个假设。

多层网络的一个主要不同是它的误差曲面可能有多个局部最小值,那么这就会带来一个问题,使用梯度下降的时候不能保证一定能收敛到全局最小值。不过在实践中反向传播都产生了出色的结果。

反向传播首先把输入x    沿网络前向传播,然后计算每个单元 u  的输出o u   ,然后是误差沿网络反向传播(反向传播算法名字应该就是这么得来的吧),对于网络的每个输出单元 k  ,计算它的误差项δ k  

δ k o k (1o k )(t k o k ) 
对于网络的每个隐藏单元 h  计算它的误差项δ h   :
δ h o h (1o h )w kh δ k  
更新每个网络的权值 w ji   :
w ji w ji +Δw ji  
其中
Δw ji =ηδ j x ji  
反向传播已经开发除了许多变种,最常见的是修改权值更新法则,使第 n  次迭代的权值更新部分依赖于第n1  次迭代时的更新,即
Δw ji (n)=ηδ j x ji +αΔw ji (n1) 
其中 α[0,1)   ,一个冲量常数,上式右边第二项叫做冲量项。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值