研学社•架构组 | 实时深度学习的推理加速和连续学习

机器之心原创

作者:Yanchen Wang

参与:panda

在本技术分析报告的第一部分《研学社·系统组 | 实时深度学习的推理加速和持续训练》,我们介绍了最近一些用于 DNN 推理加速的硬件和算法技术。在这第二部分,我们将基于最近一篇论文《在连续学习场景中对深度神经网络进行微调(Fine-Tuning Deep Neural Networksin Continuous Learning Scenarios)》探讨 DNN 连续学习,该论文的作者为 Christoph Kading、Erik Rodner、Alexander Freytag 和 Joachim Denzler。

要将深度学习系统投入生产,有一个方面很重要,就是要能应对输入和输出数据的分布随时间的变化。和任何统计机器学习模型一样,深度神经网络的可行性和有效性严重取决于一个假设——输入和输出数据的分布不会随时间发生显著变化,否则会使得模型原本学习到的模式和复杂关系表现不佳或甚至完全不可用。但是,在真实世界中,这样的假设很少能够成立,尤其是在信息安全等领域,其中基础数据生成机制的快速演变已然是一种常态(在安全领域的案例中,这是因为防御方和对手这两方都要不断努力改变自己的策略以超越对方,从而利用对手未加防备的漏洞。因此,随着我们在这些领域中应用深度学习来更好解决许多曾经无法解决的问题,深度神经网络的连续学习问题也就得到了机器学习即服务(MLaaS)提供商和应用架构师的越来越大的关注——我们该怎么很好地执行连续学习,而不会损害生产质量或提高资源消耗。

在本报告的第二部分,我们将会形式化连续学习场景并介绍一种增量式的微调方法(incremental fine-tuning approach)。然后我们会给出有多个实证研究支持的三大重要发现。本文的目的不是全面调查和描绘连续学习的现状全景,而是为了启发更多不同专业背景的人加入到我们的讨论中,并与我们交流知识。

第二部分:连续学习

连续学习场景和增量式微调

微调(fine-tuning)原本一直是指预训练一个带有生成式目标(generative objective)的 DNN 的过程,后面跟着带有一个鉴别式目标(discriminative objective)的额外训练阶段。早期关于预训练和微调深度信念网络和深度堆叠自动编码器的研究成果全都遵循这种方法。研究者期望这种生成式训练阶段能让网络学习到数据域的良好分层表征,而鉴别式阶段则能利用这种表征,并希望它能在该表征空间中学习到一个更好的鉴别器功能。

最近,研究者已经在使用微调来在 ImageNet 这样的大型通用数据集上预训练复杂精细、当前最佳的 DNN 了,然后又在更小的相关数据集上对模型进行微调。这有助于缓解医疗诊断或地理探测等领域内有标签训练数据不足的问题,因为在这些领域中,获取有标签数据需要密集的劳动或成本高昂。研究者的基本假设是:在大型训练数据集上得到的相当好的结果已经使该网络接近参数空间中的局部最优了,所以即使新数据的数据量很小,也能快速将该网络引导至最优点。

从连续学习的观点来看,上面两种方法都是网络只接受两次训练(初始预训练和一次更新)的极端案例。连续学习的更一般形式是迭代式地训练和更新,这就带来了一个问题:应该怎样稳健又高效地执行一系列持续的更新?对于生产系统来说,稳健性是很重要的,因为一个实时系统通常不能容忍模型表现突然下降,而该系统的实时本质又必需对资源和时间的高效率利用。为此,在下面的讨论中,我们的重点关注场景是每个更新步骤仅使用少量新数据的情况(相比于原来的完全的训练数据集),但要求更新后的模型是即时可用的。

1.连续学习场景

连续学习的最一般形式是整个训练数据集都会随时间演变。但是,为了让学习可行,我们设置了一个限制,即输入域保持不变。这并不意味着输入域中的数据分布是恒定不变的——相反,我们允许多种多样的数据分布会发生变化的案例,但这些变化总是定义在同一域中。另一方面,我们假设输入域可以变化。这是为了配合当系统持续运行了相当长时间后出现新标签的案例。比起输入域变化的情况,这个假设更有可能实际出现,因为在自动驾驶汽车等大多数生产系统中,如果输入视频或激光雷达图像急剧改变(由于极端天气、光照、地形或路况),那我们就不能期望系统还能远程工作;但我们希望该系统能在连续学习过程中适应新型的不可碰撞的目标,并且能够应对这种新标签的类别。因此,我们将我们的连续学习场景中的数据定义为按时间 t 索引的数据集

的序列。我们的目标是为每个时间步骤 t 学习一个网络

。根据

的变化方式,我们有两种可能场景:

1) 我们不会随时间获得新类别,但是我们的数据集不断增长。

2) 我们会随时间获得新类别的样本。

在每个时间步骤 t,我们需要使用新出现的可用信息更新我们的网络;这些新信息即为更新集(update set):

。因为我们假设更新集很小,为了避免欠拟合,在时间步骤 t 我们使用上一步收敛的

热启动(warm-start)优化。这种技术的可行性取决于一个假设,即

在数据集扩展时会平滑地改变——因此我们要假设更新步骤小且输入域恒定。在实际情况中,就算这些假设(部分地)属实,我们仍还依赖于一个预期:通过在之前一个局部最优点的初始化,带有不同参数空间情况的新优化问题可以快速且稳定地收敛到一个新的局部最优点。但是,大多数现代 DNN 都太复杂了,所以难以保证这一点——它们的目标函数是高度非线性和非凸的,有时候参数空间中还都是些糟糕的局部条件数(local condition numbers)。即便如此,热启动仍然是目前最好的方法之一,肯定比从头开始更好,而且在实验上也表现出了最好的潜力。对于场景 2,在每个时间步骤,我们都可能需要为最后的输入层添加额外的神经元以及与前一层的连接权重。

但还存在三个问题。一,每个更新步骤需要多少个 SGD 步骤?二,在每个更新过程中,我们使用多少前一步骤的数据,又使用多少当前步骤的数据?三,这个更新流程是否稳健,能应对标注噪声吗?对于生产系统来说,这些问题都很重要,因为正如我们前面谈到的,稳健性和效率是很重要的。

实证研究

在实验中,我们使用了在 ImageNet ILSVRC-2010 上预训练的 BVLC AlexNet 作为示例网络。我们将学习率固定为 0.001,L2 权重衰减固定为 0.0005,动量固定为 0.9;并且更新集的大小也固定为

,其中的样本来自同一类别。对于评估,我们使用了 MS-COCO-full-v0.9 和 Stanford40Actions。相比 ImageNet,这两个数据集都很小,因为我们想使用比初始预训练小的更新来评估连续学习的表现。对于 MS-COCO,我们使用了 15 个类别,其中每个包含 500 到 1000 个样本;每个样本都仅保留 ground truth 边界框,且宽和高都至少是 256 像素。为了进行评估,我们随机选择了 10 个类来对 CNN 进行初始化微调。从剩余的数据中,我们再随机选择 5 个类别用作全新数据(在每个更新步骤输入的新数据),并且从每个类别随机选择了 100 个样本。每个更新步骤使用的度量都是分类准确度。为了得到无偏差的比较,我们进行了该实验 9 次。

1.每个更新步骤的 SGD 迭代次数

SGDminibatch 的大小固定为 64,但我们改变了每个更新步骤中 SGD 迭代执行的次数。我们将 SGD 迭代次数表示成了一个相对于总训练数据大小(即 epoch 数)的比例,以补偿不断增长的训练数据大小。

让人惊讶的是,即使每次更新的 SGD 迭代少了很多,分类准确度依然稳健,除了那些仅使用了十分之一数据的案例,很可能是因为在这样小的 epoch 中一些类别代表不足。事实上,我们可以直接将 SGD 迭代的次数固定为一个小常量(比如更新集大小

),表现也不会显著下降。

2.每个更新步骤中旧数据与新数据的比例

对于增量式的学习算法,旧数据与新数据的影响的比例是最重要的超参数之一。在 SGD 迭代中,我们根据概率

对每个样本 i 进行了采样,其中 0≤λ≤1。在极端情况下,λ=0 意味着之前的数据完全被忽视了,而 λ=1 则表示新数据的影响推迟到了下一个更新步骤,因为这是它们在

中结束的时候。

我们看到,为了防止在更小的更新集上过拟合,就必需旧数据。我们观察到一个有趣的结果:因为新的更新集数据被认为是下一步骤 t 中

的一部分,因此 λ=0.75 和 λ=1 的表现差不多。

3.在有标注噪声时保持稳健

在生产场景中,新数据的标签很少是无噪声的——由于实时性需求,人类判断者往往需要做出快但并不准确的决定,而三到五位判断者之间的不一致率可能会高达 75%。因此,在有标注噪声时保持稳健对于连续学习方案而言至关重要。

我们使用 64 的 minibatch 大小在每个更新步骤执行了 10 epoch,并随机污染固定比例的新可用数据——用剩余类别的样本替换这些数据,但同时保持它们的标签不变。如预期一样,标注噪声会降低准确度,但我们的连续学习方案对此相对稳健,在存在 10% 的噪声时准确度仅下降了 2%。

第二部分总结

在本报告的第二部分,我们了解了近来连续学习方面的研究成果,并对增量微调的有效性和稳健性进行了一些阐述。我们希望这能激励读者加入到对机器学习系统的讨论中,并与不同背景的人交流知识。

本文为机器之心原创,转载请联系本公众号获得授权。

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2017-08-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

南京大学周志华教授综述论文:弱监督学习

520120
来自专栏机器之心

专栏 | 内存带宽与计算能力,谁才是决定深度学习执行性能的关键?

机器之心专栏 作者:李飞 随着深度学习的不断发展,计算能力得到了深度学习社区越来越多的注意。任何深度学习模型,归根到底都是需要跑在设备上的,而模型对设备性能的...

43390
来自专栏人工智能头条

LIME:一种解释机器学习模型的方法

58640
来自专栏新智元

谷歌放大招!数据增强实现自动化

22720
来自专栏ATYUN订阅号

【行业】如何解决机器学习中出现的模型成绩不匹配问题

评估机器学习模型的程序是,首先基于机器学习训练数据对其进行调试和评估,然后在测试数据库中验证模型是否具有良好的技能。通常,在使用训练数据集评估模型后,你会对得到...

11740
来自专栏星回的实验室

推荐系统从0到1[三]:排序模型

前文中,我们根据不同召回策略召回了一批文章,并统一根据文章质量排序输出。但实际上,用户的阅读兴趣还会受到很多其他因素的影响。比如用户所处的网络环境,文章点击率、...

78440
来自专栏人工智能LeadAI

基于Tensorflow的神经网络解决用户流失概率问题

前言 用户流失一直都是公司非常重视的一个问题,也是AAARR中的Retention的核心问题,所以各大算法竞赛都很关注。比如最近的:KKBOX的会员流失预测算法...

781140
来自专栏机器之心

前沿 | 超越像素平面:聚焦3D深度学习的现在和未来

想象一下,如果你正在建造一辆自动驾驶汽车,它需要了解周围的环境。为了安全行驶,你的汽车该如何感知行人、骑车的人以及周围其它的车辆呢?你可能会想到用一个摄像头来满...

23420
来自专栏腾讯技术工程官方号的专栏

腾讯AI Lab开源世界首款自动化模型压缩框架PocketFlow:将深度学习装进口袋

? 导语:腾讯AI Lab机器学习中心今日宣布成功研发出世界上首款自动化深度学习模型压缩框架——PocketFlow,并即将在近期发布开源代码。这是一款面向移...

8.4K10
来自专栏应兆康的专栏

20. 偏差和方差

17710

扫码关注云+社区

领取腾讯云代金券