- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
深度学习反向传播公式分析及参数调整策略
1深度学习solver反向传播中优化训练方法
Solver就是用来使loss最小化的优化方法。对于一个数据集D,需要优化的目标函数是整 个数据集中所有数据loss的平均值。
奶)=高冲阴
其中,fW(x(i))计算的是数据x(i)上的loss,先将每个单独的样本x的loss求出来,然后求 和,最后求均值。r(W)是正则项(weight_decay),为了减弱过拟合现象。
如果采用这种Loss函数,迭代一次需要计算整个数据集,在数据集非常大的这情况下, 这种方法的效率很低,这个也是我们熟知的梯度下降采用的方法。
在实际中,通过将整个数据集分成几批(batches),每一批就是一个mini-batch,其数量 (batch_size)为 N<<|D|,此时的 loss 函数为:
必)蛇立如(对))一而网)
i
有了 loss函数后,就可以迭代的求解loss和梯度来优化这个问题。在神经网络中,用forward pass来求解loss,用backward pass来求解梯度。
在caffe中,默认采用的Stochastic Gradient Descent (SGD)进行优化求解。后面几种方法 也是基于梯度的优化方法(like SGD),因此本文只介绍一下SGD。其它的方法,有兴趣的同 学,可以去看文献原文。
1、Stochastic gradient descent( SGD)
随机梯度下降(Stochastic gradient descent)是在梯度下降法(gradient descent)的基础上 发展起来的,梯度下降法也叫最速下降法,具体原理在网易公开课《机器学习》中,吴恩达教
授已经讲解得非常详细。SGD在通过负梯度和上一次的权重更新值儿的线性组合来更 新仍迭代公式如下:
% + 1 =" -aVL(Wt)
Wt+1=Wt^ Vt+1
其中,◎是负梯度的学习率(base_lr),〃是上一次梯度值的权重(momentum),用来加权 之前梯度方向对现在梯度下降方向的影响。这两个参数需要通过tuning来得到最好的结果,一 般是根据经验设定的。如果你不知道如何设定这些参数,可以参考相关的论文。
[ImageNet Classification with Deep Convolutional Neural Networks, Alex Krizhevsky 2012,NIPS.]
符号
拼音
Caffe术语
深度学习术语
中文含义
典型值
入
Lambda
Weight_decay
Weight decay
权值衰减
0.0005
a
Alpha
Base_lr
Learning rate
学习速率
0.01
Mu
momentum
momentum
梯度值的权重
(动量因子)
0.9
本部分的随机梯度下降算法是在第二部分的基础上得来的。第二部分所阐述的常规梯度下 降算法为吨1 = ^t - O^L(W)与第二部分所阐述的常规梯度下降算法相比,增加了匕+1部
分以及权重动量参数。
在深度学习中使用SGD,比较好的初始化参数的策略是把学习率设为0.01左右(base_lr: 0.01),在训练的过程中,如果loss开始出现稳定水平时,对学习率乘以一个常数因子(gamma), 这样的过程重复多次。
对于momentum, 一般取值在0.5--0.99之间。通常设为0.9, momentum可以让使用SGD 的深度学习方法更加稳定以及快速。关于更多的momentum,请参看Hinton的 《A Practical Guide to Training Restricted Boltzmann Machines》。
实例:
base_lr: 0.01
lr_policy: "step"
gamma: 0.1
stepsize: 1000
max_iter: 3500
momentum: 0.9
lr_policy 设置为 step,则学习率的变化规则为 base_lr * gamma A (floor(iter / stepsize))即前 1000次迭代,学习率为0.01;第1001-2000次迭代,学习率为0.001;第2001-3000次迭代,学 习率为0.00001,第3001-3500次迭代,学习率为10-5。
上面的设置只能作为一种指导,它们不能保证在任何情况下都能得到最佳的结果,有时候 这种方法甚至不work。如果学习的时候出现diverge(比如,你一开始就发现非常大或者NaN 或者inf的loss值或者输出),此时你需要降低base_lr的值(比如,0.001),然后重新训练, 这样的过程重复几次直到你找到可以work的base_lr。
2经典的梯度下降算法
参考 UFLDL 教
文档评论(0)