返回介绍

数学基础

统计学习

深度学习

工具

Scala

三、决定是否收集更多数据

发布于 2023-07-17 23:38:23 字数 1091 浏览 0 评论 0 收藏 0

  1. 建立第一个端到端的系统后,就可以度量算法的性能并决定如何改进算法

    • 很多新手忍不住尝试很多不同的算法来改进
    • 实际上,收集更多的数据往往比改进学习算法要有用的多
  2. 决定是否需要收集更多数据的标准:

    • 首先:确定训练集上的性能可否接受。如果模型在训练集上的性能就很差,那么没必要收集更多的数据。

      • 此时可以尝试增加更多的网络层
      • 或者每层增加更多的隐单元从而增加模型的规模
      • 也可以尝试调整学习率等超参数来改进算法
      • 如果这些都不行,则说明问题可能源自训练数据的质量:数据包含太多噪声,或者数据未能包含预测输出所需要的正确输入。此时我们需要重新开始收集干净的数据,或者收集特征更丰富的数据
    • 如果模型在训练集上的性能可以接受,那么我们开始度量测试集上的性能。

    • 如果测试集上的性能也可以接受,则任务完成

    • 如果测试集上的性能比训练集的要差得多,则收集更多的数据时最有效的解决方案之一

    • 此时主要考虑三个要素:

      • 收集更多数据的代价和可行性
      • 其他方法降低测试误差的代价和可行性
      • 增加数据数量能否显著提升测试集性能
  3. 如果增加数据数量代价太大,那么一个替代的方案是降低模型规模,或者改进正则化(调整超参数、或者加入正则化策略)

    • 如果调整正则化参数之后,训练集性能和测试集性能之间的差距还是无法接受,则只能收集更多的数据
  4. 当决定增加数据数量时,还需要确定收集多少数据。可以绘制曲线来显式训练集规模和泛化误差之间的关系

    • 根据曲线的延伸,可以预测还需要多少训练数据来到达一定的性能
    • 通常加入小比例的样本不会对泛化误差产生显著的影响。因此建议在对数尺度上考虑训练集的大小,以及增加的数据数量
  5. 如果收集更多的数据是不可行的(成本太高无法实现,或者无法改进泛化误差),那么改进泛化误差的唯一方法是:改进学习算法本身

    • 这是属于研究领域,并不是对实践者的建议

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文