文中简略介紹了深度神经网络实体模型调优步骤和方法。

绝大多数內容参照自《Machine Learning Yearning》

Bias 和 Variance

误差(bias)就是指优化算法在训练集上的误差,也就是差错率,不正确越大偏差越大,欠拟合

标准差(variance)就是指优化算法在开发设计集(或检测集)上的表現比训练集算差是多少,还可以解释为多重共线性,主要表现 为训练集准确率很高,检测集在的准确率很低

可防止误差和难以避免误差

误差能够分成2个一部分,包含可防止误差和难以避免误差

怎样看待:假定目前一个各种奇珍动物识别技术,每日任务困难大,就算由人们来区别,也存有14%的差错率(最佳差错率)

如今优化算法做到:

训炼差错率=15%

开发设计差错率=30%

能够将训炼差错率(误差)溶解以下:

最伏差错率(“难以避免误差”):14%,能够将其以为是学习培训优化算法的误差“难以避免”的一部分。

可防止误差:1%。即训炼差错率和最伏误差中间的误差。

举个事例,该事例中最佳差错率是 14%,大家有:

● 训炼偏差 = 15%

● 开发设计偏差 = 16%

i这类情形下,可规避的误差偏差是 1%,标准差偏差约为 1%。因而,优化算法早已做的很好啦,基本上沒有提高的室内空间。它只比最好差错率低 2%

怎样设置期待误差

应用人们主要表现水准来可能最佳差错率,并设定可实现的“期待差错率”。 假定你的计算方法在某一每日任务上做到了 10% 的偏差,但平常人能够做到的偏差是 2% . 从而大家就可以了解最佳差错率是 2% 或更低,这也说明可防止误差最少是 8% . 因此你理应试着一下减少误差的技术性。更一般地说,有一个有效可达到的“期待差错率”能够幫助你来可能学习培训优化算法的可防止误差。这相反也帮你决策能否应用偏差减少技术性

误差和标准差的几类情形和解决方法

1)假定训练集差错率1%,开发设计集差错率10%,则样本方差大,多重共线性

  • 改动实体模型构架

    减少实体模型经营规模(例如神经细胞/层的总数),减少互联网复杂性

  • 提升正则化

    • L 1 Regularization

    • L 2 Regularization

    • Dropout层

  • 加上Batch Normalization

  • 添加提早停止(Early stopping)

  • 实体模型复位

  • 根据数据预处理降低键入特点的数目和类型

  • 特点特征提取

  • 依据误差分析改动特点

  • 检验训炼数据和数据测试是不是有比较应的特点,样本分布是不是一致,不一致的情况下,再次特征工程工作中

  • 提升训炼信息的类型,促使训炼数据信息遮盖全部数据测试的特应用数据增强

  • 提升信息量

2)假定训炼差错率为15%,开发设计差错率为16%,这个时候,误差较为大,欠拟合

  • 提升训炼epoch

  • 增大batch-size

  • 调节激活函数(比如应用relu)

  • 调节蚁群算法

    • 比如应用Adam

    • 增大learning rate

  • 提升互联网复杂性

    • 提升传输层数

    • 提升卷积层輸出的安全通道数

    • 提升池化层的结点数

  • 检验训炼数据和数据测试是不是有比较应的特点

    • 提升训炼信息的类型,促使训炼数据信息遮盖全部数据测试的特点,

    • 提升外界数据,假如担忧外界数据环境污染training set,能够将外界数据的权重值降低一点

    • 数据增强

3)假定训炼差错率为15%,开发设计差错率为30%,高误差,高标准差

这个时候,先要处理误差难题,仅有在训练集上逐渐收敛性了,才可以逐渐考虑到检测集在的标准差难题。因而碰到这样的状况,先依照高误差处理,高误差处理以后,或许很有可能高标准差的现象也就消失了,要是没有消退,在考虑到处理高标准差的难题。

4)假定训炼差错率为0.5%,开发设计差错率为1%,低误差,低标准差(极致情况)

5)假定训炼差错率为0.5%,开发设计差错率为1%,低误差,低标准差,可是开发设计集loss在底点不断波动

  • 确定训练集和检测集遍布是不是具有很大的差别,差别大得话开展特征工程

  • 确定是不是数据增强做的太多了

  • 试着调节学习率,在不一样环节应用无需学习率

  • 思索和检查网络是不是或是有点儿欠拟合,假如也有,处理欠拟合

  • 寻找大量训炼数据信息,使其可以遮盖较多的样本分布

实体模型调参Pipeline

  • 设置固定不动随机种子

  • 先不必应用数据增强

  • 设定合理性的baseline

  • 多重共线性一个batch,随后观查loss最少能够抵达是多少,比照baseline,假如能抵达很低,开展下一步,假如不好,则考虑到 状况2)

  • 制作training和testing 环节的loss曲线图

  • 认证loss函数

    • 假如train loss 小

      • 假如test set 的loss 大,而train set 的loss小,表明多重共线性,应用状况1)处理

      • 假如test set的loss 也小,那麼大部分算得上成功了

      • 假如test set 的 loss 也小,可是波动,应用 状况5)处理

    • 假如train loss 大

      进到流程2)

已优化模型怎样进一步提高

  • 优化网络构造,应用更快的backbone

  • 应用更快的LOSS涵数,例如:回归问题能够考虑到smooth-l1等

  • 考虑到应用难例发掘的方式

  • 有标准得话,加大batchsize

  • 考虑到预训练模型

  • 观查检测样版,搜索case,对于Case来,填补样版 数据增强

  • 试着不一样的提升涵数,更替训炼,fine-tuning

  • 不一样的权重值复位方式

  • 试着不一样的学习率初值和衰减系数值

  • 考虑到在梯度方向上下功夫,能够是梯度方向剪裁、梯度方向校检、梯度方向归一化等方式

  • 再次特征工程(通常最有效)

评论(0条)

刀客源码 游客评论