赞
踩
总结:训练过程中,batch_size的选取对模型精度和模型泛化能力的影响:
总结:如何确定batch_size
https://www.zhihu.com/question/32673260
卷积网络训练太慢?Yann LeCun:已解决CIFAR-10,目标 ImageNet:
CSDN翻译链接:https://www.csdn.net/article/2015-01-16/2823579
kaggle英文链接:http://blog.kaggle.com/2014/12/22/convolutional-nets-and-cifar-10-an-interview-with-yan-lecun/
总结一下:
深度机器学习中的batch的大小对学习效果有何影响?
知乎链接:https://www.zhihu.com/question/32673260
每次只训练一个样本,即 Batch_Size = 1。这就是在线学习(Online Learning)。使用在线学习,每次修正方向以各自样本的梯度方向修正,横冲直撞各自为政,难以达到收敛。
凸函数是一个定义在某个向量空间的凸子集C(区间)上的实值函数f,而且对于凸子集C中任意两个向量, f((x1+x2)/2)>=(f(x1)+f(x2))/2,则f(x)是定义在凸子集c中的凸函数(该定义与凸规划中凸函数的定义是一致的,下凸)。凹函数则定义相反。
关于batch_size的选取,ICLR 2017有一片文章可以借鉴:On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima
主要思想就是:太大的batch size 容易陷入sharp minima,泛化性不好。
关于网络的收敛:
http://blog.kaggle.com/2014/12/22/convolutional-nets-and-cifar-10-an-interview-with-yan-lecun/
问:在您看来,一个运作良好且不受“为什么它会运作良好”这一理论原因影响的卷积网络是什么样的?通常您是否偏好执行更甚于理论?如何平衡?
Lecun答:我不觉得执行与理论之间需要抉择,如果能执行,就会有相关可解释的理论。
另外,你谈及的是什么样的理论?是说泛化界限吗( generalization bound )?卷积网络有着限定的VC维(VC Dimension),因此两者一致并有着典型的VC维。你还想要什么?是像SVM中那样更严格的界限吗?就我所知,没有一个理论的界限会足够严格,可以适用实际需求,所以我的确不太明白这个问题。当然,普通的VC维不够严格,但是非泛型范围(像SVMs)只会稍微欠缺一点严格性。
如果你希望的是收敛性证明(或保证),就有一点复杂了。多层网络的损失函数不是凸值,因此简易证明该函数为凸不可行。但是我们都知道实际上卷积网络几乎总是会收敛到同一水平,无论起点是什么(如果初始化完成正确)。有理论证明,有许许多多等效局部最小值,还有一个数字很小的“坏”局部最小值。因此收敛性并不会造成问题。(注:VC维用来表示模型的复杂度,机器学习基石课程上有提到)
转自知乎:https://www.zhihu.com/question/32673260
没有,按照我所了解的,目前除了SGD优化方法的变种都是为了增加弃坑速度而作的,即增加脱离局部最小值的速度,使得网络更快的收敛。
非凸的本质难题是鞍点数目太多,除非深度网络设计使得非凸的函数绘景类似一个漏斗(类似“V”型)且最小值就在漏斗尖口(“V”尖尖的底部)附近(CNN奇迹般的是),RMSprop方法会一冲到底,效率高。一些深度的贝叶斯模型不用初始化训练,直接暴力利用上面的优化不一定有效果。原因可能(目前还很难理论分析)在于函数绘景类似一个W型或者VVV…V型,而不是单纯的V型。直观来说,尖尖底太多了,利用上面的优化的结果就仁者见仁,智者见智了。
弹性反向传播(RProp)和均方根反向传播(RMSProp)
都是一种权值更新算法,类似于SGD算法,其中,RMSProp是RProp算法的改良版。
RProp算法:首先为各权重变化赋一个初始值,设定权重变化加速因子与减速因子,在网络前馈迭代中当连续误差梯度符号不变时,采用加速策略,加快训练速度;当连续误差梯度符号变化时,采用减速策略,以期稳定收敛。网络结合当前误差梯度符号与变化步长实现BP,同时,为了避免网络学习发生振荡或下溢,算法要求设定权重变化的上下限。(动态的调节学习率)
此外,RPROP针对不同的权值参数,提供了一种差异化学习的策略:
不同权值参数的梯度的数量级可能相差很大,因此很难找到一个全局的学习步长。这时,我们想到了在full-batch learning中仅靠权值梯度的符号来选择学习步长。rprop算法正是采用这样的思想:对于网络中的每一个权值参数,当其对应的前面两个梯度符号相同时,则增大该权值参数对应的学习步长;反之,则减小对应的学习步长。并且,rprop算法将每一个权值对应的学习步长限制在百万分之一到50之间。但是,prop算法为什么不能应用于mini-batch learning中。
假设有一个在线学习系统,初始的学习步长较小,在其上应用prop算法。这里有十组训练数据,前九组都使得梯度符号与之前的梯度符号相同,那么学习步长就会增加九次;而第十次得来的梯度符号与之前的相反,那么学习步长就会减小一次。这样一个过程下来,学习步长会增长很多(增大了9次学习步长,只减小了一次学习步长),如果系统的训练数据集非常之大,那学习步长可能频繁的来回波动,这样肯定是不利于学习的。
改进版rmsprop:
rmsprop算法不再孤立地更新学习步长,而是联系之前的每一次梯度变化情况,具体如下。rmsprop算法给每一个权值一个变量MeanSquare(w,t)用来记录第t次更新步长时前t次的梯度平方的平均值,具体计算方法如下图所示(注意,其中的系数0.9和0.1只是个例子,具体取值还要看具体情况)。然后再用第t次的梯度除上前t次的梯度的平方的平均值,得到学习步长的更新比例,根据此比例去得到新的学习步长。如果当前得到的梯度为负,那学习步长就会减小一点点;如果当前得到的梯度为正,那学习步长就会增大一点点。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。