机器学习笔记2——神经网络

浏览: 1398

神经网络

神经网络是由具有适应性的简单单元组成的广泛并行互连得网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。


神经元模型

神经网络中最基本的成分。

感知机与多层网络

1.感知机是由两层神经元组成的。

  • 输入层接收外界输入信号后传递给输出层,输出层是M-P神经元。亦称“阈值逻辑单元”。
  • 缺点:感知机只有输出层神经元进行激活函数处理,即只拥有一层功能神经元,其学习能力非常有限。

2.多层功能神经元:两层感知机,输出层与输入层之间的一层神经元叫做隐层或隐含层。隐含层和输出层神经元都是拥有激活函数的功能神经。

3.多层前馈神经网络:层级结构。每层神经元与下一层神经元全互连,神经元之间不存在同层连接。也不存在跨层连接。

(前馈并不是意味着网络中信号不能向后传,而是指网络拓扑结构上不存在环或回路)

  • 其中输入层神经元接收外界输入,隐层与输出层神经元对信号进行加工,最终结果由输出层神经元输出。

只需包含隐层即可称为多层网络。

神经网络“学”到的东西就蕴含在连接权和阈值中。


BP算法(误差逆传播算法)

最成功的神经网络算法

BP算法不仅可用于多层前馈神经网络,还可用于其他类型的神经网络(e,g递归神经网络),但通常讲到的“BP网络”时一般指用BP算法训练多层前馈神经网络。

标准BP算法:

  • 每次只针对单个样例,参数更新得非常频繁,而且对不同样例进行更新的效果可能出现“抵消”现象。因此,为了达到同样的累积误差极小点,标准BP算法往往需进行更多次的迭代。
  • 累积误差逆传播算法
    基于累积误差更新最小化的更新原则。
  • 在读取整个训练集D一遍后才对参数进行更新,其参数更新的频率低的多。
  • 缺点:在很多任务中,累积误差下降到一定程度之后,进一步下降会非常缓慢,这时标准BP往往会更快的获得较好的解,尤其在训练集D非常大时更明显。

BP网络中的过拟合问题:

因为其强大的表示能力,BP神经网络经常遭遇过拟合,其训练误差持续走低,但测试误差却可能上升。

两种策略:

第一个策略:早停

               将数据分为训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。

第二个策略:正则化

                在误差目标函数中增加一个描述网络复杂度的部分,例如连接权与阈值的平方和。增加后,训练过程将会偏好比较小的连接权和阈值,使网络输出更加“光滑”,从而对过拟合有所缓解。


全局最小与局部最小

局部最小解是参数空间中的某个点,其领域点的误差函数值均不小于该点的函数值;

全局最小解是指参数空间中所有点的误差函数值均不小于该点的函数值。


参数空间中内梯度为零的点,只要其误差函数值小于领点的误差函数值,就是局部极小点。

可能存在多个局部极小点,但却只会有一个全局最小值。即全局最小一定是局部最小。


陷入局部极小:误差函数具有多个局部极小,则不能保证找到的解是全局最小。

“跳出”局部最小的策略:

  • 以多个不同的参数值初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数。
  • “模拟退火”:在每一步都一一定的概率接受比当前解更差的结果,从而有助于“跳出”局部最小。在每步迭代过程中,接受“次优解”的概率要随着时间的推移而逐渐降低,从而保证算法稳定。但也会跳出全局最小。
  • 使用随机梯度下降。在计算梯度中加入随机因素,于是,即便陷入局部极小点,它计算出的梯度仍不可能为零,这样就有机会跳出局部极小继续搜索。

以上为启发式,理论上尚缺乏保障。

推荐 1
本文由 小白学Python 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册