作者:Cody Coleman, Peter Bailis, and Matei Zaharia

时间:2020年4月23日

摘要:全文约1800字,建议阅读时间为7分钟。本文主要介绍了SVP方法。作为一种用于深度学习的数据选择方法,其可以在保证识别准确率的同时,有效地提高深度学习中的计算效率。例如,在主动学习中,SVP的运行速度最多可提高到基础的41.9倍,同时误差没有显著增加,这对于深度学习中提高模型训练速度来说是一个有效的方法。


在许多任务中我们会面对海量的有效数据来训练深度网络,那么在实际的训练中我们怎样可以快速确定应该使用哪些数据呢?类似于主动学习(active learning)和核心集选择(core-set selection)等方法是确定训练数据的有效手段,但是上述方法计算花销大且难以大规模使用。

在最近的ICLR 2020中,Cody Coleman等人提出了一种将数据选择速度提高多达41.9倍的方法。他们使用一种规模较小、精度较差的模型作为规模较大的目标模型的简单替代模型,并用此来选择用于训练的“核心”数据。尽管这些替代模型的准确性较低,但它们选择的是不会对最终模型的准确性产生较大影响(通常在0.1%以内)的高质量数据。另外,在不影响ResNet-164模型准确性的情况下,上述替代模型可以清洗掉50%以上的CIFAR-10训练数据,从而使端到端模型的训练速度提升40%。

Cody Coleman等人在ICLR 2020 上发表了此论文,并且代码可在github中获得。

直觉:与模型架构对数据的排名相似

从宏观上来看,数据选择方法中的迭代过程包括以下三个步骤:

1.根据一些信息量度(例如:熵)对数据集进行排序

2.选择排名最高的数据集

3.根据选定的数据集更新模型

其中的第三步是深度学习的主要瓶颈。模型需要花费数小时甚至数天的时间进行训练,因此对于我们选择的每个数据集,从头开始训练模型都不划算。在SVP下我们发现的重要一点是,当较大模型变得越来越准确时,他们将选择与规模更小、准确率更低的模型相同的数据。例如,下图显示了来自相似模型架构的不同模型之间的相关程度。我们可以利用这些高相关性来创建替代模型,从而将数据选择的速度提高一个数量级。

在ImageNet数据集下模型架构的排名。 上图为在ImageNet上来自PyTorch预训练模型的最大熵排名之间的Spearman相关性。大多数的模型架构之间相关性很高。例如,MobileNet V2基于熵的排名与ResNet50模型高度相关,尽管该模型的参数要少得多(3.5M vs 25.6M)。

创建有效且可用的替代模型

文章中提出了两种创建替代模型的主要方法:

1.缩小网络规模。对于具有多层的深层模型,我们可以减小隐藏层的大小或数量,这也是在权衡模型精度下减少训练时间的简便方法。例如,ResNet20模型在26分钟内在CIFAR10数据集中实现了top-1误差为7.6%,而更大的ResNet164模型则花费了4小时才减少了2.5%的误差。

2.训练轮数减少。在训练期间,大部分时间都花在了误差减少相对较小的时间段。例如,在训练ResNet20模型时,几乎一半的训练时间(26分钟中的12分钟)都花费在了优化测试集1.4%的错误率上。基于上述结论,文章还研究了可以更快地获得目标模型决策边界的近似值并且使用较少迭代次数的替代训练模型。

结果

为了评估SVP对数据选择运行时间和质量的影响,我们将SVP使用在主动学习和核心集选择中来对于以下五个数据集进行数据选择:CIFAR10,CIFAR100,ImageNet,Amazon Review Polarity和Amazon Review Full。对于主动学习,SVP在数据集和标签预测中达到了相等甚至更高的准确率,并且在标签选择的运行时间上提升了多达41.9倍:

主动学习中的SVP表现使用最小置信度不确定性采样(具有不同的替代模型和四个数据集)来进行3次主动学习的平均(±1std)数据加速。粗体的加速表明使用相同模型进行选择和最终预测的基准方法可以达到较低误差水平或在平均top-1误差的1 std之内。在整个数据集中,SVP加快了数据选择速度的同时并没有显着增加最终结果的误差。

对于核心集选择,替代模型在选择保持高精度的数据子集时的性能几乎与目标模型相同甚至更好。

特别是在CIFAR10上,小规模的替代模型删除了50%的数据,但不会影响在子集上训练的更大、更准确的模型的最终准确性。此外,在所有数据上训练替代模型,选择要保留的数据以及在子集上训练目标模型的整个过程仅花费了2小时23分钟,相比于在完整数据集上训练目标模型的标准方法,端到端的训练速度提高了1.6倍,如下图所示:

使用带有和不带SVP方法的CIFAR10上具有预激活功能的ResNet164的训练曲线浅红色线表示训练替代模型(ResNet20)。红色实线表示在使用SVP的图像子集上训练目标模型(ResNet164)。使用替代的方法,删除了50%的数据且不会影响ResNet164的最终准确性,将端到端的训练时间从3小时49分钟缩短到2小时23分钟。

总结

SVP方法可以通过在数据选择期间用计算花销小的替代模型来代替计算花销大的模型来提高深度学习中主动学习和核心集选择的计算效率。在主动学习中,SVP的运行时间最多可提高41.9倍,同时误差没有显着增加(通常在0.1%以内);在核心集选择中,SVP可以从CIFAR10中删除多达50%的数据,并使训练目标模型花费的时间缩短为原来的十分之一,从而使端到端模型的训练速度提高1.6倍。

参考资料:https://dawn.cs.stanford.edu/2020/04/23/selection-via-proxy/

SVP——一种用于深度学习的高效数据选择方法相关推荐

  1. 独家 | SVP:一种用于深度学习的高效数据选择方法

    作者:Cody Coleman, Peter Bailis, and Matei Zaharia 翻译:杨毅远 校对:王琦 本文长度为1800字,建议阅读7分钟 本文为你介绍SVP方法如何在保证识别准 ...

  2. AIDATANG_1505ZH:一种用于深度学习的大规模汉语语音语料库

    AIDATANG_1505ZH:一种用于深度学习的大规模汉语语音语料库 文章来源:数据堂 网址:https://www.datatang.com/ 前言: 近年来,深度学习在语音识别领域取得了突破性进 ...

  3. 基于linux火焰识别算法,一种基于深度学习模型的火焰识别方法与流程

    本发明属于通信领域,具体涉及一种基于深度学习模型的火焰识别方法. 背景技术: 随着我国工业化与城镇水平的不断提高,现代设施大型公共建筑朝着空间大.进深广功能复杂的多元化方向发展,这对于防烟火朝着空间大 ...

  4. [综述类] 一文道尽深度学习中的数据增强方法(上)

    今天带来一次有关于深度学习中的数据增强方法的分享. 00 什么是数据增强 在深度学习项目中,寻找数据花费了相当多的时间.但在很多实际的项目中,我们难以找到充足的数据来完成任务. 为了要保证完美地完成项 ...

  5. 总结 62 种在深度学习中的数据增强方式

    数据增强 数据增强通常是依赖从现有数据生成新的数据样本来人为地增加数据量的过程 这包括对数据进行不同方向的扰动处理 或使用深度学习模型在原始数据的潜在空间(latent space)中生成新数据点从而 ...

  6. 【技术综述】深度学习中的数据增强方法都有哪些?

    很多实际的项目,我们都难以有充足的数据来完成任务,要保证完美的完成任务,有两件事情需要做好:(1)寻找更多的数据.(2)充分利用已有的数据进行数据增强,今天就来说说数据增强. 作者 | 言有三 编辑 ...

  7. 深度学习中图片数据增强方法

    简 介: 在深度学习中需要对图像进行不同的处理.本文对比了基于Numpy以及Paddle.vision.transforms函数中对于图片处理的效果. 关键词: 图像预处理,cv2,paddle #m ...

  8. 深度学习中的数据增强方法

    对于较深层次的深度神经网络,其性能会随着训练数据的提升而进一步提升. 目前深度学习方法广泛采用的数据增强方法,主要有: multi-scale:多尺度: translate:平移,[-6, -6],左 ...

  9. 深度学习中常用数据预处理方法

    数据归一化处理,比较简单公式为 (x-min)/(max-min),主要目的是将数据的范围缩小至0-1之间,因而对数据绝对值的大小不敏感 2.数据标准化处理,也比较简单,公式为(x-avg)/sigm ...

  10. 用于深度学习的医学图像预处理

    用于深度学习的医学图像数据,往往非常庞大,如果从网上下载公开数据集数据,往往有几十GB的图象数据,我们需要先进行预处理,将其转换成适合深度学习网络训练的形式:        变为      或者我们还 ...

最新文章

  1. 剑指offer:面试题28. 对称的二叉树
  2. idea clone 华为云仓库
  3. mysql删除表中的唯一索引吗_Mysql 使用sql删除同表中重复数据并加唯一索引
  4. Mat与IplImage*类型间的转换
  5. Python defaultdict 模块和 namedtuple 模块 1
  6. php面试hr要看你的项目,昨晚hr给了我一个面试题,说过了就安排我面试
  7. ASP.NET MVC 上传大文件时404
  8. 坚定不移地加速,并且不断解决新问题
  9. jee--eclipse下tomcat出现did not find a matching property.(转)
  10. ice 服务java连接,java - ICE中的连接计数 - 堆栈内存溢出
  11. 2016030208 - sql50题练习题
  12. paip.c++ qt 目录遍历以及文件操作
  13. Multisim入门
  14. NI CompactRIO嵌入式系统开发流程总结
  15. Dll入口函数参数详解...
  16. html网页如何将文字排版,网页中的文字怎么去进行排版
  17. 九连环解法和小程序。
  18. Python学习:输出99乘法口诀表
  19. python len()函数的用法
  20. 【LittleVGL】stm32f412-discovery探索板-ft6x06驱动问题

热门文章

  1. 互联网智商测试:搜索引擎谁的“智商”更高?
  2. 【数据资产】数据资产目录建设方法与案例
  3. VS2017使用C#编写COM组件
  4. 关于DTC诊断故障码的获取与清除(ISO14229系列之14、19服务)
  5. 三菱凌云3故障代码_三菱故障代码一览表
  6. IEEE Xtreme 11.0极限编程题目分类
  7. easydarwin php,Windows版本EasyDarwin
  8. Matlab2017a许可证问题:一直提示激活
  9. python抓取漫画(破解js)
  10. HTMLTestRunnerNew 测试报告详解