网站大量收购独家精品文档,联系QQ:2885784924

如何优化深度学习模型.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

寻找合适的学习率(learningrate)

学习率是一个非常非常重要的超参数(关于超参数的系统性优化可见:深度学习调参(炼丹)的权威指南!!!),这个参数呢,面对不同规模、不同batch-size、不同优化方式、不同数据集,其最合适的值都是不确定的,我们无法光凭经验来准确地确定lr的值,我们唯一可以做的,就是在训练中不断寻找最合适当前状态的学习率。

比如下图利用fastai中的lr_find()函数寻找合适的学习率,根据下方的学习率-损失曲线得到此时合适的学习率为1e-2。

推荐一篇fastai首席设计师「SylvainGugger」的一篇博客:HowDoYouFindAGoodLearningRate[1]

以及相关的论文CyclicalLearningRatesforTrainingNeuralNetworks。

learning-rate与batch-size的关系

一般来说,越大的batch-size使用越大的学习率。

原理很简单,越大的batch-size意味着我们学习的时候,收敛方向的confidence越大,我们前进的方向更加坚定,而小的batch-size则显得比较杂乱,毫无规律性,因为相比批次大的时候,批次小的情况下无法照顾到更多的情况,所以需要小的学习率来保证不至于出错。

可以看下图损失Loss与学习率Lr的关系:

在显存足够的条件下,最好采用较大的batch-size进行训练,找到合适的学习率后,可以加快收敛速度。

另外,较大的batch-size可以避免batchnormalization出现的一些小问题,参考如下Pytorch库Issue

权重初始化

权重初始化相比于其他的trick来说在平常使用并不是很频繁。

因为大部分人使用的模型都是预训练模型,使用的权重都是在大型数据集上训练好的模型,当然不需要自己去初始化权重了。只有没有预训练模型的领域会自己初始化权重,或者在模型中去初始化神经网络最后那几个全连接层的权重。

常用的权重初始化算法是「kaiming_normal」或者「xavier_normal」。

相关论文:

Delvingdeepintorectifiers:Surpassinghuman-levelperformanceonImageNetclassification

Understandingthedifficultyoftrainingdeepfeedforwardneuralnetworks

Xavier初始化论文

He初始化论文

不初始化可能会减慢收敛速度,影响收敛效果。

以下??为网络的输入大小,?为网络的输出大小,?为??或

uniform均匀分布初始化:

Xavier初始法,适用于普通激活函数(tanh,sigmoid):

He初始化,适用于ReLU:

normal高斯分布初始化,其中stdev为高斯分布的标准差,均值设为0:

Xavier初始法,适用于普通激活函数(tanh,sigmoid):

He初始化,适用于ReLU:

svd初始化:对RNN有比较好的效果。参考论文:/abs/1312.6120

dropout

dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。注意是「暂时」,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络。

Dropout类似于baggingensemble减少variance。也就是投通过投票来减少可变性。通常我们在全连接层部分使用dropout,在卷积层则不使用。但「dropout」并不适合所有的情况,不要无脑上Dropout。

Dropout一般适合于全连接层部分,而卷积层由于其参数并不是很多,所以不需要dropout,加上的话对模型的泛化能力并没有太大的影响。

我们一般在网络的最开始和结束的时候使用全连接层,而hiddenlayers则是网络中的卷积层。所以一般情况,在全连接层部分,采用较大概率的dropout而在卷积层采用低概率或者不采用dropout。

数据集处理

主要有「数据筛选」?以及?「数据增强」

fastai中的图像增强技术为什么相对比较好

难例挖掘hard-negative-mining

分析模型难以预测正确的样本,给出针对性方法。

多模型融合

Ensemble是论文刷结果的终极核武器,深度学习中一般有以下几种方式

同样的参数,不同的初始化方式

不同的参数,通过cross-validation,选取最好的几组

同样的参数,模型训练的不同阶段,即不同迭代次数的模型。

不同的模型,进行线性融合.例如RNN和传统模型.

提高模型性能和鲁棒性大法:probs

文档评论(0)

外卖人-小何 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档