【花书笔记】深度学习 11. 实践方法论

一个优秀的机器学习实践者需要知道如何针对具体应用挑选一个合适的算法以及如何监控,病根据实验反馈改进机器学习系统。在机器学习系统的日常开发中,实践者需要决定是否收集更多的数据、增加或者见啥模型容量、添加或删除正则化向、改进模型的优化、改进模型的近似腿短或调试魔性的软件实现。尝试这些操作都需要大量时间,因此确定正确的做法,而不是盲目猜测尤为重要。

建议参考一下几个实践设计流程:

  1. 确定目标—使用什么误差度量,并为此误差度量指定目标值。这些目标和误差度量取决于该应用旨在解决的问题
  2. 尽快建立一个端到端的工作流程,包括估计合适的性能度量
  3. 搭建系统,并确定性能瓶颈。检查那个部分的性能差于预期,以及是否是因为过拟合、欠拟合,或者数据或软件缺陷造成的。
  4. 根据具体观察反复的进行增量式的运动,如手机新数据、调整超参数或改进算法

性能度量

第一步: 确定使用什么误差度量, 这将知道接下来的所有工作。

默认的基准模型

性能度量和目标确认后,任何实际应用的下一步是尽快建立一个合理的端到端的系统。花书里提供了不同情况下使用那周算法作为第一基准方法。基准方法可能会随着时间的变化而变化。所以需要持续关注和学习。

  1. 根据数据的结构选择一类合适的模型。 如果项目是以固定大小的向量作为输入的监督学习,则可以使用全连接的前馈网络。如果输入已知的拓扑结构(比如图像),可以使用卷积网络。如果输入或者输出是序列,可以使用门控循环网络(LSTM)
  2. 衰减学习率以及动量的SGD是优化算法一个合理的选择(流行的衰减方法有衰减到固定最低学习率的线性衰减、指数衰减,或每次发生炎症错误停滞时将学习率降低2-10倍),另一个非常合理的选择是Adam算法。批标准化对优化性能有这显著的影响,特别是对卷积网络和具有sigmoid非线性函数的网络而言。虽然最初的基准中忽略批标准化是合理的,然而当优化似乎出现问题时,应该立刻使用批标准化。
  3. 非训练集包含数千万以及更多的样本,否则项目应该在一开始就包含一些温和的正则化。提前终止也被普遍采用。Dropout也是一个很容易实现,且兼容很多模型和训练算法的出色正则化项。批标准化有时也能降低泛华误差,此时可以省略Dropout步骤,因为用于标准化变量的统计量估计本身就存在噪声。
  4. 如果我们的任务和另一个被广泛研究的任务相似,那么通过复制先前研究中一直性能良好的模型和算法,可能会得到很好的效果,甚至可以从该任务重复制一个训练好的模型。例如: 通常会使用在ImageNet上训练好的卷积网络的特征来解决其他计算机视觉任务。
  5. 一个常见问题时项目开始时是否使用无监督学习,这个问题和特定领域有关。比如自然语言处理,比较大的受益于无监督学习技术。在发现初始基准过拟合的时候,可以尝试加入无监督学习。

决定是否收集更多数据

在建立第一个端到端的系统后,就可以度量算法性能并决定如何改进算法。许多机器学习新手都忍不住尝试很多不同的算法来进行改进,然而,收集更多的数据往往比改进学习算法要有用很多。
怎样判断是否要收集更多的数据? 首先,确定训练集上的性能是否可以接受,如果性能很差,就没必要收集更多的数据。反之,可以尝试增加更多的网络层或每层增加更多的隐藏单元,以增加模型的规模。此外,也可以尝试调整学习率等超参数的措施来改进学习算法。如果更大的规模和仔细调试的优化算法效果不佳,问题可能源自训练数据的质量。数据可能含太多藏省,或是可能不包含预测输出所需的正确输入。此时需要重新开始,收集更干净的数据或是收集特征更丰富的数据集。
如果训练集上的性能是可以接受的,则开始度量测试集上的性能。如果测试集上的性能也是可以接受的,那么就顺利完成了。如果测试集上的性能比训练集的要差很多,那么收集更多的数据是最有效的解决方案之一。 这是主要考虑的是收集更多数据逇代价和可行性,其他方法降低测试误差的代价和可行性,以及增加数据数量能否显著提升测试集性能。 一个可以替代的简单方法是降低模型大小或是改进正则化(调超参,比如权重衰减系数,或者加入正则化策略,如Dropout)。 如果调整正则化超参数后,训练集性能和测试集性能之间的差距还是不可以接受,则收集更多的数据是可取的。

在决定是否收集跟多的数据时,也需要确定收集多少数据。比如绘制曲线现实训练集规模和泛华误差之间的关系。根据走势延伸曲线,可以预测还需要多少训练数据来达到一定的性能。通常,加入总数据一小部分的样本不会对泛华误差产生显著的影响,因此,建议在对数尺度上考虑训练集的大小,例如在后续的实验中倍增样本数目。

如果收集更多的数据时不可行的,那么改进泛华误差的唯一方法是改进学习算法本身。

选择超参数

有些超参数会影响算法运行的时间和存储成本,有些超参数会影响学习到的模型质量以及在新输入上推断正确结果的能力。

选择超参数的基本方法:手动选择和自动选择
手动选择需要知道超参数做了些什么,以及机器学习模型如何才能取得良好的泛化。
自动选择超参数算法大大减少了了解这些想法的需要,但是往往需要更高的计算成本。

  • 手动调整
    学习率: 学习率敢于训练误差具有U形曲线
    调整学习率外的其他参数时,需要同时检测训练误差和测试误差,以判断模型是否过拟合或者欠拟合,然后适当调整
    各种超参数对模型容量的影响
    【花书笔记】深度学习 11. 实践方法论_第1张图片
    手动调参的最终目标:提升测试集性能。

  • 自动超参数优化算法

  • 网格搜索(当有3个或者更少的超参数时,常见的超参数搜索方法)

  • 随机搜索

调试策略

  • 可视化计算中模型的行为
  • 可视化最严重的的错误
  • 根据训练和测试误差检测软件
  • 拟合极小的数据集
  • 比较反向传播倒数和数值导数
  • 监控激活函数值和梯度的直方图

你可能感兴趣的:(机器学习,深度学习)