0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

干货 | 深度学习,怎么知道你的训练数据真的够了?

中科院长春光机所 来源:YXQ 2019-06-13 16:37 次阅读

最近有很多关于数据是否是新模型驱动 [1] [2] 的讨论,无论结论如何,都无法改变我们在实际工作中获取数据成本很高这一事实(人工费用、许可证费用、设备运行时间等方面)。

因此,在机器学习项目中,一个关键的问题是,为了达到比如分类器准确度等特定性能指标,我们需要多少训练数据才够。训练数据多少的问题在相关文献中也称为样本复杂度。

在这篇文章中,我们将从回归分析开始到深度学习等领域,快速而广泛地回顾目前关于训练数据多少的经验和相关的研究结果。具体来说,我们将:

说明回归任务和计算机视觉任务训练数据的经验范围;

给定统计检验的检验效能,讨论如何确定样本数量。这是一个统计学的话题,然而,由于它与确定机器学习训练数据量密切相关,因此也将包含在本讨论中;

展示统计理论学习的结果,说明是什么决定了训练数据的多少;

给出下面问题的答案:随着训练数据的增加,模型性能是否会继续改善?在深度学习的情况下又会如何?

提出一种在分类任务中确定训练数据量的方法;

最后,我们将回答这个问题:增加训练数据是处理数据不平衡的最佳方式吗?

01

训练数据量的经验范围

首先让我们看一些广泛使用的,用来确定训练数据量的经验方法,根据我们使用的模型类型:

回归分析:根据 1/10 的经验规则,每个预测因子 [3] 需要 10 个样例。在 [4] 中讨论了这种方法的其他版本,比如用 1/20 来处理回归系数减小的问题,在 [5] 中提出了一个令人兴奋的二元逻辑回归变量。

具体地说,作者通过考虑预测变量的数量、总体样本量以及正样本量/总体样本量的比例来估计训练数据的多少。

计算机视觉:对于使用深度学习的图像分类,经验法则是每一个分类需要 1000 幅图像,如果使用预训练的模型 [6],这个需求可以显著下降。

02

假设检验中样本大小的确定

假设检验是数据科学家用来检验群体差异、确定新药物疗效等的工具之一。考虑到进行测试的能力,这里通常需要确定样本大小。

让我们来看看这个例子:一家科技巨头搬到了 A 市,那里的房价大幅上涨。一位记者想知道,现在公寓的平均价格是多少。

如果给定公寓价格标准差为 60K,可接受的误差范围为 10K,他应该统计多少套公寓的价格然后进行平均,才能使结果有 95% 的置信度?

计算的公式如下:N 是他需要的样本量,1.96 是 95% 置信度所对应的标准正态分布的个数:

样本容量估计

根据上面的等式,记者需要考虑约 138 套公寓的价格即可。

上面的公式会根据具体的测试任务而变化,但它总是包括置信区间、可接受的误差范围和标准差度量。在[7]中可以找到关于这个主题的更好的讨论。

03

训练数据规模的统计学习理论

让我们首先介绍一下著名的 Vapnik-Chevronenkis 维度 ( VC 维) [8]。VC 维是模型复杂度的度量,模型越复杂,VC 维越大。在下一段中,我们将介绍一个用 VC 表示训练数据大小的公式。

首先,让我们看一个经常用于展示 VC 维如何计算的例子:假设我们的分类器是二维平面上的一条直线,有 3 个点需要分类。

无论这 3 个点的正/负组合是什么(都是正的、2个正的、1个正的,等等),一条直线都可以正确地分类/区分这些正样本和负样本。

我们说线性分类器可以区分所有的点,因此,它的 VC 维至少是 3,又因为我们可以找到4个不能被直线准确区分的点的例子,所以我们说线性分类器的 VC 维正好是3。结果表明,训练数据大小 N 是 VC 的函数 [8]:

从 VC 维估计训练数据的大小

其中 d 为失效概率,epsilon 为学习误差。因此,正如 [9] 所指出的,学习所需的数据量取决于模型的复杂度。一个明显的例子是众所周知的神经网络对训练数据的贪婪,因为它们非常复杂。

04

随着训练数据的增加,模型性能会继续提高吗?在深度学习的情况下又会怎样?

学习曲线

上图展示了在传统机器学习 [10] 算法(回归等)和深度学习 [11] 的情况下,机器学习算法的性能随着数据量的增加而如何变化。

具体来说,对于传统的机器学习算法,性能是按照幂律增长的,一段时间后趋于平稳。 文献 [12]-[16],[18] 的研究展示了对于深度学习,随着数据量的增加性能如何变化。

图1显示了当前大多数研究的共识:对于深度学习,根据幂次定律,性能会随着数据量的增加而增加。

例如,在文献 [13] 中,作者使用深度学习技术对3亿幅图像进行分类,他们发现随着训练数据的增加模型性能呈对数增长。

让我们看看另一些在深度学习领域值得注意的,与上述矛盾的结果。具体来说,在文献 [15] 中,作者使用卷积网络来处理 1 亿张 Flickr 图片和标题的数据集。

对于训练集的数据量,他们报告说,模型性能会随着数据量的增加而增加,然而,在 5000 万张图片之后,它就停滞不前了。

在文献[16]中,作者发现图像分类准确度随着训练集的增大而增加,然而,模型的鲁棒性在超过与模型特定相关的某一点后便开始下降。

05

在分类任务中确定训练数据量的方法

众所周知的学习曲线,通常是误差与训练数据量的关系图。[17] 和 [18] 是了解机器学习中学习曲线以及它们如何随着偏差或方差的增加而变化的参考资料Python 在 scikit-learn [17] 也中提供了一个学习曲线的函数。

在分类任务中,我们通常使用一个稍微变化的学习曲线形式:分类准确度与训练数据量的关系图。

确定训练数据量的方法很简单:首先根据任务确定一个学习曲线形式,然后简单地在图上找到所需分类准确度对应的点。例如,在文献 [19]、[20] 中,作者在医学领域中使用了学习曲线法,并用幂律函数表示:

学习曲线方程

上式中 y 为分类准确度,x 为训练数据,b1、b2 分别对应学习率和衰减率。参数的设置随问题的不同而变化,可以用非线性回归或加权非线性回归对它们进行估计。

06

增加训练数据是处理数据不平衡的最好方法吗?

这个问题在文献 [9] 中得到了解决。作者提出了一个有趣的观点:在数据不平衡的情况下,准确性并不是衡量分类器性能的最佳指标。

原因很直观:让我们假设负样本是占绝大多数,然后如果我们在大部分时间里都预测为负样本,就可以达到很高的准确度。

相反,他们建议准确度和召回率(也称为灵敏度)是衡量数据不平衡性能的最合适指标。除了上述明显的准确度问题外,作者还认为,测量精度对不平衡区域的内在影响更大。

例如,在医院的警报系统 [9] 中,高精确度意味着当警报响起时,病人很可能确实有问题。

选择适当的性能测量方法,作者比较了在 imbalanced-learn [21] (Python scikit-learn 库)中的不平衡校正方法和简单的使用一个更大的训练数据集。

具体地说,他们在一个 50,000 个样本的药物相关的数据集上,使用 imbalance-correction 中的K近邻方法进行数据不平衡校正,这些不平衡校正技术包括欠采样、过采样和集成学习等,然后在与原数据集相近的 100 万数据集上训练了一个神经网络。

作者重复实验了 200 次,最终的结论简单而深刻:在测量准确度和召回率方面,没有任何一种不平衡校正技术可以与增加更多的训练数据相媲美。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机视觉
    +关注

    关注

    8

    文章

    1696

    浏览量

    45934
  • 深度学习
    +关注

    关注

    73

    文章

    5493

    浏览量

    121031

原文标题:深度学习,怎么知道你的训练数据真的够了?

文章出处:【微信号:cas-ciomp,微信公众号:中科院长春光机所】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    深度学习与机器学习有什么差异知道吗?

    如果经常想让自己弄清楚机器学习深度学习的区别,阅读该文章,我将用通俗易懂的语言为介绍他们之间的差别。
    的头像 发表于 10-31 14:37 1.3w次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b>与机器<b class='flag-5'>学习</b>有什么差异<b class='flag-5'>你</b><b class='flag-5'>知道</b>吗?

    如何才能高效地进行深度学习模型训练

    分布式深度学习框架中,包括数据/模型切分、本地单机优化算法训练、通信机制、和数据/模型聚合等模块。现有的算法一般采用随机置乱切分的
    的头像 发表于 07-09 08:48 1.4w次阅读
    如何才能高效地进行<b class='flag-5'>深度</b><b class='flag-5'>学习</b>模型<b class='flag-5'>训练</b>?

    深度学习数据挖掘的关系

    ;而深度学习使用独立的层、连接,还有数据传播方向,比如最近大火的卷积神经网络是第一个真正多层结构学习算法,它利用空间相对关系减少参数数目以提高训练
    发表于 07-04 16:07

    机器学习训练秘籍——吴恩达

    能力训练出规模足够大的神经网络来使用现有的海量数据集。具体来说,即使积累了更多的数据,但应用在类似于对数几率回归(logistic regression)这样较传统的
    发表于 11-30 16:45

    干货 | 这些机器学习算法,了解几个?

    可以保持分支直到它们记住了所有的训练数据。但是,这个问题可以通过使用集成的方式来缓解。 实现:随机森林 - Python / R,梯度增强树 - Python / R 1.3。深度学习
    发表于 09-22 08:30

    深度学习入门之中根据源代码下载到mnist数据集,训练识别率超级低问题

    深度学习入门 中根据源代码下载到mnist数据集,训练识别率超级低问题
    发表于 07-08 16:53

    深度学习中最核心的问题之一:训练数据

    今天我们将讨论深度学习中最核心的问题之一:训练数据深度学习已经在现实世界得到了广泛运用,例如:
    的头像 发表于 12-25 10:34 1.1w次阅读

    深度学习是什么?了解深度学习难吗?让快速了解深度学习的视频讲解

    深度学习是什么?了解深度学习难吗?让快速了解深度学习
    发表于 08-23 14:36 16次下载

    深度学习网络训练技巧的详细资料汇总

    本文档的主要内容详细介绍的是深度学习网络训练技巧汇总,总结训练网络的各种经验和技巧
    发表于 03-07 08:00 10次下载
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b>网络<b class='flag-5'>训练</b>技巧的详细资料汇总

    如何使用框架训练网络加速深度学习推理

    TensorRT ,第二个例子是在 Cityscapes 数据集上训练的基于 英伟达数据中心深度学习产品性能 的语义分割。
    的头像 发表于 04-01 15:45 2804次阅读
    如何使用框架<b class='flag-5'>训练</b>网络加速<b class='flag-5'>深度</b><b class='flag-5'>学习</b>推理

    深度学习框架区分训练还是推理吗

    深度学习框架区分训练还是推理吗 深度学习框架是一个非常重要的技术,它们能够加速深度
    的头像 发表于 08-17 16:03 1338次阅读

    视觉深度学习迁移学习训练框架Torchvision介绍

    Torchvision是基于Pytorch的视觉深度学习迁移学习训练框架,当前支持的图像分类、对象检测、实例分割、语义分割、姿态评估模型的迁移学习
    的头像 发表于 09-22 09:49 868次阅读
    视觉<b class='flag-5'>深度</b><b class='flag-5'>学习</b>迁移<b class='flag-5'>学习</b><b class='flag-5'>训练</b>框架Torchvision介绍

    深度学习如何训练出好的模型

    算法工程、数据派THU深度学习在近年来得到了广泛的应用,从图像识别、语音识别到自然语言处理等领域都有了卓越的表现。但是,要训练出一个高效准确的深度
    的头像 发表于 12-07 12:38 1067次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b>如何<b class='flag-5'>训练</b>出好的模型

    深度学习模型训练过程详解

    深度学习模型训练是一个复杂且关键的过程,它涉及大量的数据、计算资源和精心设计的算法。训练一个深度
    的头像 发表于 07-01 16:13 1143次阅读

    Pytorch深度学习训练的方法

    掌握这 17 种方法,用最省力的方式,加速的 Pytorch 深度学习训练
    的头像 发表于 10-28 14:05 157次阅读
    Pytorch<b class='flag-5'>深度</b><b class='flag-5'>学习</b><b class='flag-5'>训练</b>的方法