深度学习入门—理论杂谈(4)

前言
第四章讲述的是一个定理的证明:神经网络可以计算任何函数,通俗点来说就是不管别人给你一个多么复杂和奇特的函数,总会确保有一个神经网络对任何可能的输入x ,其值f(x)是这个网络的输出(或者说足够的近似)。在这里插入图片描述这个定理说的就是神经网络的普适性,我感觉这句话是废话,如果不成立的话,我们花那么大精力研究神经网络也没有意义。因此这一章pass,有兴趣的可去原书籍上面查看证明过程。
最后扔一句结论在这儿:普遍性告诉我们神经⽹络能计算任何函数;⽽实际经验依据提⽰深度⽹络最能适⽤于学习能够解决许多现实世界问题的函数。
第五章讲的是深度神经网络为什么那么难训练的问题。原因在于消失的梯度(换句话说是梯度的不稳定性,根本的原因分析要从梯度的求导公式上面去研究)。导致的直接后果是:⾄少在某些深度神经⽹络中,在我们在隐藏层BP的时候梯度倾向于变⼩。这意味着在前⾯的隐藏层中的神经元学习速度要慢于后⾯的隐藏层(因为是反向传播嘛)。因此我们犹如苦⼒般的学习算法—— 基于反向传播的随机梯度下降—— 来训练深度⽹络,最后得到的模型的性能可能并不会比浅层的网络能好多少。
在2010 年Glorot 和Bengio8 发现证据表明sigmoid 函数的选择会导致训练⽹络的问题。特别地,他们发现sigmoid 函数会导致最终层上的激活函数在训练中会聚集在0,这也导致了学习的缓慢。他们的⼯作中提出了⼀些取代sigmoid 函数的激活函数选择,使得不会被这种聚集性影响性能。
在2013 年Sutskever, Martens, Dahl 和Hinton9 研究了深度学习使⽤随机权重初始化基于momentum 的SGD ⽅法。两种情形下,好的选择可以获得较⼤的差异的训练效果。
这里解释一下SGD与基于momentum(动量)的SGD方法之间的差异。SGD方法的一个缺点是,其更新方向完全依赖于当前的batch,因而其更新十分不稳定。 解决这一问题的一个简单的做法便是引momentum,即动量,它模拟的是物体运动时的惯性,即更新的时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度微调最终的更新方向。这样一来,可以在一定程度上增加稳定性,从而学习地更快,并且还有一定摆脱局部最优的能力。
PS: 可以多额外了解一下,上面提到的是传统的动量方法,这里有一种改进的Nesterov Momentum方法,其大概思想大概是这样的:
首先,按照原来的更新方向更新一步(棕色线),然后在该位置计算梯度值(红色线),然后用这个梯度值修正最终的更新方向(绿色线)。
在这里插入图片描述最后总结一下第五章:激活函数的选择权重的初始化,甚⾄是学习算法的实现⽅式也扮演了重要的⻆⾊。当然,⽹络结构和其他超参数本⾝也是很重要的。因此,太多因⼦影响了训练神经⽹络的难度,理解所有这些因⼦仍然是当前研究的重点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值