• umich cv-5-2 神经网络训练2


    这节课中介绍了训练神经网络的第二部分,包括学习率曲线,超参数优化,模型集成,迁移学习

    学习率曲线

    在训练神经网络时,一个常见的思路就是刚开始迭代的时候学习率较大,然后随着迭代次数的增加,学习率逐渐下降,下面我们就来介绍几种学习率下降的方法:
    img
    第一种方法是我们在某些特定的迭代节点,将学习率乘以某个值比如0.1,这种方法显然又引入了更多的超参数,我们不想这样做,所以又设计了其它的下降曲线
    img
    比如上图的cos linear 等等 我们有时会发现保持学习率不变也是个不错的选择
    实际上不同下降方法之间没有明显的对比统计,大多是根据不同领域习惯选择不同方法,比如计算机视觉用cos,大规模自然语言处理用linear等

    在训练的时候,我们应该在发现验证集上准确率下降的时候就停止训练:
    img

    超参数优化

    在训练神经网络的时候,在不同的超参数之间选择,我们常常会采用网格搜索,将不同的值排列组合,然后去训练
    img
    有时我们也会选择随机搜索,在设置的范围内随机选取相应的超参数的值:
    img
    在实际应用中往往随机搜索更好,从下图可以看出,最上面的绿色曲线表示准确率,网格搜索只能表示曲线上固定的几个值,而随机搜索引入了更多的随机性,从而可能得到更好的结果:
    img

    在选择超参数的过程中,我们一般有具体的流程:
    img
    第一步我们在什么都没有设置的情况下,可以先运行一下模型,看看损失是否正常,比如我们采用softmax函数输出c个类的得分,它的初始损失应该是log(c)
    第二步我们先在几个比较小的样本集数据中训练我们的神经网络,调整网络架构,调整学习率与权重,注意不使用正则化方法,让我们的模型在小数据集上能达到100%的准确度,通过画迭代次数与loss的曲线观察,如果损失一直不下降,说明我们采用的学习率太小,如果损失突然下降到0或者损失爆炸,说明我们采用的学习率太大,并且上述两种情况都说明我们的初始化很糟糕
    第三步我们根据前几步确定的结构,在此基础上使用权重衰减,采用不同的学习率,找到一个学习率,能在固定的迭代步骤内,使得损失下降幅度最大:
    img
    第四步我们选择第三步中的一些学习率与权重衰减,迭代几次,找出比较好的模型用于第五步,迭代更长时间,然后我们画出相关的学习曲线(损失与迭代次数的统计图,训练集与验证集在不同迭代次数上的统计图)作进一步的观察:
    img

    对于损失与迭代次数的统计图
    img
    这种在一段迭代次数内损失不下降说明我们初始化较为糟糕
    img
    这种出现损失平原的情况说明我们可以尝试学习率下降的方法
    img
    当学习率下降损失依然下降,说明我们采用的下降方法下降的太早了

    对于训练集与验证集在不同迭代次数上的统计图
    img
    一直上升说明我们还可以训练更长时间
    img
    这种差异过大的曲线说明我们过拟合了,需要提升正则化强度或者引入更多数据
    img
    这种差异过小的曲线说明我们under fitting,需要训练更长时间,选择更复杂的模型

    模型集成

    模型集成常见的思路就是训练不同的模型,然后取它们结果的平均值:
    img
    我们也可以采用一个模型,在不同的训练时间输出不同的结果,再取平均值,采用循环学习率很有利于这种snapshot集成的方法:
    img
    同时我们也可以将这种思想应用于参数向量:
    img

    迁移学习

    迁移学习是为了解决数据量不足的问题
    img
    先在给定的数据集上使用某种卷积网络训练图像数据,然后去除最后一层不获取预测得分,使用这个卷积网络作为特征向量提取器,冻结之前训练的层,然后再使用其它方法输出结果
    比如右图2009年专门为数据集设计的神经网络
    其余两个是在VGG上预训练 然后使用svm或者逻辑回归输出结果 得到的效果就比专门设计的要好

    如果我们有更大的数据集,我们可以对cnn网络架构进行进一步的训练,使其能完成更多类型的工作
    img
    事实证明cnn网络结构的优化可以为许多下游的工作带来提升
    img
    上图说明了我们尝试在不同的数据集上应用cnn进行迁移学习需要进行的操作,假如数据集与imagenet相似,并且数据量较小,我们可以使用线性分类器输出结果,假如数据量较大,我们可以利用这些数据微调一些层,假如数据量较大并且与imagenet数据集不想死,我们需要在更多层上进行微调,如果数据量较小,我们就需要更多的尝试

    下面两张图展现了这种迁移学习方法的广泛应用:
    img
    img
    可以在物体检测 语言建模等方面应用

    img
    但是对于迁移学习也存在一些疑问,有人指出这种方法并没有比从头开始设计网络的方法好很多,小哥的建议是如果有充足的数据和算力,我们可以从头开始设计并且调整网络,大多数情况下使用预训练的网络加上微调步骤十分高效

  • 相关阅读:
    Leetcode148. 排序链表
    PacBio全长扩增子测序发现酵母益生菌可提高黑山羊免疫力
    1058 选择题 (利用ASCII码)
    VMWare 虚拟机如何通过新增挂载点的方式扩展磁盘空间
    家政小程序开发制作,家政保洁上门维修小程序搭建
    [JavaScript 刷题] 树 - 验证二叉搜索树, leetcode 98
    老板说我最近飘了,都敢用 MySQL 实现分布式锁了
    图解maxout-带参数的激活函数
    怎么添加、修改或删除快递单号
    共话龙蜥:中国操作系统到底有没有角力世界舞台的实力?
  • 原文地址:https://www.cnblogs.com/dyccyber/p/17794500.html