基于Pre-trained模型加速模型学习的6点建议

2018 年 5 月 26 日 深度学习与NLP

    首先,为什么要调整模型?

    像卷积神经网络( CNN )这样的深度学习模型具有大量的参数;一般称之为超参数,因为它们不是固定值,需要迭代优化。通常可以通过网格搜索的方法来查找这些超参数的最佳值,但需要大量硬件和时间开销。那么,一个真正的数据科学家是否满足于只是猜测这些超参数呢?答案当然是否定的。

    改进模型的最佳方法之一是,基于专业团队的设计和体系结构上来进行改进,但这些专业的知识往往需要对某一领域具有深入的了解,且通常需要有强大的硬件支持。一般这些专业的团队都喜欢把他们的训练好的模型(pre-trained model)开源出来,无偿提供给别人使用。基于这些pre-trained model来做研究和应用,可以省去大量的时间和资源。


深度学习技巧

    这里分享几种方法,如何基于预训练好的模型来降低深度学习模型训练时间,提升模型的准确性:

    1、选择最适用于做pre-trained模型的网络结构:了解迁移学习(transfer learning)的优点,或者一些强大的CNN网络结构。主要考虑,有些领域之间看起来不明显,但领域之间却共享一些具有潜在特性(share potential latent features)。

    2、使用较小的学习率:由于预先训练的权重(weights)通常比随机初始化的权重更好,因此调整需要更精细!如何选择主要取决于training landscape和学习的进展情况,但需要仔细检查每个epoch的training errors,分析如何能让模型达到收敛。

    3、使用Dropout:就像Ridge和LASSO正则化技术对于回归模型一样,对于所有模型都存在需要优化的参数alpha或Dropout。这是一个超参数,取决于需要解决的具体问题,只能通过不停实验的方法得到。先对超参数做比较大的调整(gridsearch时选择一个比较大的变化范围),比如NP. logspace(),然后像上面的一样减小学习速率。循环上述过程直到找到最优值。

    4、限制权重大小:可以限制某些层的权重的最大范数(绝对值),可以提升模型泛化的能力。

    5、不要改变第一层网络的权值:神经网络的第一个隐含层倾向于捕捉通用和可解释(universal and interpretable)的特征,如形状、曲线或交叉(shapes、curves and interactions),这些特征通常与跨域(domains)相关。应该经常把这些特征放到一边,把重点放在进一步优化meta latent level在水平上。这可能意味需要添加隐藏层!

    6、修改输出层:把模型参数替换成适用于要解决新领域的新的激活函数和输出大小。但是,不要把自己局限于最明显的解决方案中。比如,尽管MNIST只需要10个输出类,但这些数字有共同的变化,允许有12 - 16个类可能会更好地解决这些问题,并提高模型性能!


Keras中的技巧

    如何在Keras MNIST中修改Dropout和限制权重的大小:


Dropout最佳实践

    1、使用20–50 %的,比较小的Dropout,建议20 %的输入(Inputs)。值取得太小,不起作用;值取得太大,不好收敛。

    2、在输入层和隐藏层上使用Dropout。这一方法已被证明可以提高深入学习的效果。

    3、使用较大的(带衰减率)学习速率(learning rate with decay),以及较大的动量(momentum)。

    4、限制模型的权重!大的学习速率容易导致梯度爆炸。通过对网络权值施加约束(如最大范数正则化(max-norm regularization),其大小为5 )可以改善结果。

    5、使用更大的网络。在较大的网络上使用Dropout,可能会获得更好的性能,从而使模型有更多的机会学习独立表示(Independent representations)。


    给一个例子,如何在Keras中修改MNIST模型最后一层,输出14个类别:

    如何在网络的最初五层中固定网络的权值(Freeze weights):

    此外,可以将该层的学习速率设置为零,或者使用参数的自适应学习算法,如Adadelta或Adam。这有点复杂,在Caffe等其他平台上可以更好地实现。


预训练模型库

    Keras
    Kaggle List                 https://www.kaggle.com/gaborfodor/keras-pretrained-models
    Keras Application:https://keras.io/applications/
    OpenCV Example:https://www.learnopencv.com/keras-tutorial-fine-tuning-using-pre-trained-models/


    TensorFlow
    VGG16:https://github.com/ry/tensorflow-vgg16
    Inception V3:https://github.com/tensorflow/models/blob/master/inception

    ResNet:https://github.com/ry/tensorflow-resnet


    Torch
    LoadCaie:https://github.com/szagoruyko/loadcaffe


    Caffe
    Model Zoo:https://github.com/BVLC/caffe/wiki/Model-Zoo

 

TensorBoard的Graph的可视化

    了解模型的整体结构通常很重要。下面给出一个例子,如何直接使用Python可视化训练的模型:        

     http://nbviewer.jupyter.org/github/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/deepdream/deepdream.ipynb

往期精彩内容推荐

(精品干货)ACL 2018最新论文归类(最全最细)分享

谷歌、微软、Facebook等2018最新面试题分享

千万不要错过!ICLR-2018精品论文解析

麻省理工学院-2018年最新深度学习算法及其应用入门课程资源分享

最前沿的深度学习论文、架构及资源分享

英特尔免费精品课程推荐-深度学习基础

深度学习中如何选择一款合适的GPU卡的一些经验和建议分享

模型汇总23 - 卷积神经网络中不同类型的卷积方式介绍

神经机器翻译(NMT)的一些重要资源分享

扫描下方二维码可以订阅哦!

DeepLearning_NLP

深度学习与NLP

       商务合作请联系微信号:lqfarmerlq

登录查看更多
5

相关内容

【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
专知会员服务
44+阅读 · 2020年3月6日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【教程】TensorFlow2 最新迁移学习教程和实战
一文读懂机器学习模型的选择与取舍
DBAplus社群
13+阅读 · 2019年8月25日
PyTorch模型训练特征图可视化(TensorboardX)
极市平台
33+阅读 · 2019年6月29日
3分钟看懂史上最强NLP模型BERT
新智元
23+阅读 · 2019年2月27日
详解谷歌最强NLP模型BERT(理论+实战)
AI100
11+阅读 · 2019年1月18日
知识分享 | 深度学习的学习路径
沈浩老师
19+阅读 · 2019年1月9日
入门 | 深度学习模型的简单优化技巧
机器之心
9+阅读 · 2018年6月10日
一文读懂最近流行的CNN架构(附学习资料)
数据派THU
6+阅读 · 2018年1月14日
干货 | 深度学习之卷积神经网络(CNN)的模型结构
机器学习算法与Python学习
12+阅读 · 2017年11月1日
A survey on deep hashing for image retrieval
Arxiv
14+阅读 · 2020年6月10日
Learning Discriminative Model Prediction for Tracking
Arxiv
8+阅读 · 2018年3月20日
Arxiv
4+阅读 · 2017年7月25日
VIP会员
相关VIP内容
相关资讯
【教程】TensorFlow2 最新迁移学习教程和实战
一文读懂机器学习模型的选择与取舍
DBAplus社群
13+阅读 · 2019年8月25日
PyTorch模型训练特征图可视化(TensorboardX)
极市平台
33+阅读 · 2019年6月29日
3分钟看懂史上最强NLP模型BERT
新智元
23+阅读 · 2019年2月27日
详解谷歌最强NLP模型BERT(理论+实战)
AI100
11+阅读 · 2019年1月18日
知识分享 | 深度学习的学习路径
沈浩老师
19+阅读 · 2019年1月9日
入门 | 深度学习模型的简单优化技巧
机器之心
9+阅读 · 2018年6月10日
一文读懂最近流行的CNN架构(附学习资料)
数据派THU
6+阅读 · 2018年1月14日
干货 | 深度学习之卷积神经网络(CNN)的模型结构
机器学习算法与Python学习
12+阅读 · 2017年11月1日
Top
微信扫码咨询专知VIP会员