内容安全|2021-06-24 知物由学 | “半监督”与“自监督”(多方法结合让AI模型训练事半功倍)
购物网站为消费者推荐心仪的产品,导航为司机选择最佳路径,设备通过用户的生物特征鉴定身份,智能投资顾问监测、制定、投资复杂的金融产品组合……
目前,深度学习,尤其是有监督训练,已经广泛应用于各行业中。在各位AI训练师的精心训(调)练(参)下,计算机更“懂”人类,而AI训练师也面临一些成长的烦恼:
文章图片
“找数据、提标注、做筛选、训网络”的流程是否已成为日常工作中的常规操作?
“泛化性能不足”、“模型过拟合”等问题是否频繁影响着模型效果?
当通过添加更多标注数据来解决上述问题时,花费高昂、耗时漫长的数据标注过程,是否严重拖慢了算法优化周期?
令人头秃的是,AI训练师发现到后来“加数据”也不再灵了,“泛化性差”、“过拟合”、“训练退化”像是难以摆脱的幽灵,一直潜伏着压制模型表现?
有监督训练方式严重依赖数据标注的准确性和数据规模等因素,不仅为模型优化带来高额标注成本,也存在“泛化性能差”、“模型过拟合”等“劣根性”问题。
基于这样的背景,半监督、自监督学习方法通过引入大规模无标签数据和无监督训练任务,来改善有监督训练的模型效果和数据成本问题。
本文中,我们首先总结分析了半监督、自监督领域中一些典型算法成果,再介绍了易盾算法团队提出的自监督、半监督结合的深度模型训练优化算法,展示了半监督、自监督算法在内容风控领域中成果落地案例,力求为各位算法同学在该领域的优化上带来一点启发。
**
01 半监督 Pseudo-Label 分支 为了更准确的伪标签而不断努力 **
Pseudo-Label 一词明确提出于2013年[1],方法思想是通过教师模型,借助有标签和无标签数据,来提升学生模型的效果。具体做法是先利用有标签数据训练出一个教师模型,再用其对无标签数据打标预测出伪标签 (Pseudo-Labe),并筛选出合适的无标签数据与其伪标签,与有标签数据一起训练出一个学生模型。Pseudo-Label 算法在使用时,会多次进行“打标、筛选、训练”的过程,直至得到一个效果达标的学生模型。
本文在此重点介绍 Pseudo-Label 分支在2020~2021年的两篇重点工作,并对该领域的发展做出总结:
1.1 Noisy student training (CVPR 2020)[2] Background:
Facebook 在2019年曾利用十亿级别无标签数据进行自训练[3],算法效果达到了 SOTA 水平,以此为代表的 Pseudo-Label 方法优化方向大多是扩充无标签数据集的规模。
Motivation:
对 Pseudo-Label 方法在训练学生模型环节提出新的优化方向,让学生模型有更强的学习能力和更严苛的学习环境,从而超越教师模型。
Action:
文章图片
图1 | Noisy student training 算法流程图
Noisy student training 方法采用了传统的 Pseudo-Label 训练结构:“打标、数据筛选、训练”的多轮迭代。方法的创新点主要体现于两点:
为了保证学生模型有更强的学习能力,作者创新地采用了比教师模型更复杂的模型结构;
为了让学生模型有更严苛的学习环境从而超越教师模型,作者在学生模型训练过程中添加了不同种类的噪声(数据增强、模型 dropout、模型随即深度等)。
Result:
训练过程添加 noise、增大学生模型复杂度、引入无标签数据集、多次迭代,这些操作都提升了学生模型的效果,在 ImageNet 测试集上仅用了300M的无标签数据集,就超过了当时的 SOTA 效果。
借助无标签数据、各种类型的噪声等因素,Noisy student training 训练方式对学生模型的鲁棒性有明显提升。
Summary:
文章重点在于改造学生模型的训练过程,扩大模型结构和增加训练噪声,突破了传统自训练和蒸馏算法。
文章中实验详实,消融实验部分非常值得算法同学借鉴,在数据选择策略、数据训练方式、数据组合比例、伪标签的格式等方面,有很多理论和实操上的宝贵经验。
“joint training”, “strong augmentation”, “soft p-label”, Noisy student training 中的这些因素和 Consistency Regularization 方法不谋而合,这也暗含着 Pseudo-Label 方法和 Consistency Regularization 方法在本质上的统一。
1.2 Meta Pseudo-Labels(2021)[4] Background:
本篇和上篇 Noisy student training 属于同一个作者团队,此前这一分支的主要优化方向包括提升伪标签的准确性、优化学生模型训练过程等。
Motivation:
教师模型要收到学生模型的反馈,为了得到更准确、让学生模型学习效果更好的伪标签。
Action:
文章图片
图2 | Meta Pseudo Labels 算法流程图
Meta Pseudo-label 方法的最重要创新点在于教师模型在训练过程中显式地收到了学生模型的反馈。教师模型和学生模型同时训练,分别根据各自的 Loss 来进行参数更新:学生模型在有标签数据集上的表现用来计算教师 loss,学生模型在无标签数据集上的表现用来计算学生 loss。
此外,还可以给教师模型附加别的 loss,或者是在 Meta Pseudo-Labels 训练完成后令学生模型在有标签数据集上进行微调,这些操作都可以近一步提升算法效果。
Result:
Meta Pseudo-Labels 在 ImageNet 测试集上超越了之前 SOTA 的效果。
Summary:
方法初衷非常直观合理,“老师根据学生的实际表现来调整教材”,颇有点“因材施教”的意思。其实传统的 Pseudo-Labels 算法中,每次迭代结束时对教师模型的替换,也属于隐式的学生模型对教师模型的反馈,但 Meta Pseudo-Labels 算法第一次将这样的反馈直接作为算法优化方向。
本文是该领域发展的一个转折点:Pseudo-Labels 算法对获取更准确伪标签的初衷没有变,但接下来的算法必须要进阶到“教师模型参考学生模型的反馈来调整训练策略”,该领域接下来一定会有更多基于此考虑的精妙设计。
1.3 Pseudo-Labels 分支总结 1)总体发展目标和对应采取措施:
Motivation 1:更准确、效果更好的伪标签
Action:
更靠谱的打标模型,例如规模更大、或者数量更多的教师组合进行打标,或者是对伪标签进行矫正。(2019年Pseudo-labeling and confirmation bias[5])
更大规模的无(弱)标签数据集。(2019年Facebook billion-scale[3])
教师模型接收到学生模型的反馈,对伪标签进行调整。(2020 meta Pseudo-Labels[4])
Motivation 2:学生模型训练过程更好、更高效
Action:
提高学生模型复杂度,更强的能力去拟合大规模无标签数据集(2020 noisy-student-training[2])
为训练过程适当添加noise干扰,更严苛的训练条件。(2020 noisy-student-training[2])
2)未来发展和实操建议:
Pseudo-Labels 分支中,上述两个 motivation 最终会殊途同归,统一到一个方向上:根据学生模型的实际表现反馈,更精细化地调整学生模型单独训练或学生+教师模型联动训练的具体训练策略,我们易盾算法组也一直在根据这个发展方向不断做出创新尝试。
02 半监督 Consistency Regularization 分支 看似面目一新,实则殊途同归 相比于 Pseudo-Label,一致性正则(Consistency Regularization)方法对一些算法同学来说可能稍显陌生。
这一流派的初衷非常直观:通过对输入数据、中间特征、模型参数等方面适当添加干扰(Perturbation),同时限制模型保持输出的一致性(Consistency),以此来提升模型的整体效果和鲁棒性。
一致性正则方法在应用时会在传统有监督损失函数基础上再添加一个无监督损失函数(Consistency Loss),主要对无标签数据进行计算,因此属于半监督学习算法。
本文在此重点介绍该分支在2017、2020年的两篇重点工作,并对该领域的发展做出总结:
2.1 Temporal Ensembling(ICLR 2017)[6] Background:2015~2016年,已经陆续有作者着手 Consistency Regularization 算法的研究[7][8],不过所提出的算法结构较为复杂。
Motivation:设计出一个端到端的训练算法;同时利用有标签数据和无标签数据训练;对无标签数据进行 Consistency Regularization 计算;尽量少地引入计算负担。
Action:作者设计了以下两种半监督训练算法:
(1) Π-model :
文章图片
图3 | Π-model算法流程图
训练过程:对有标签数据计算 Supervised Loss;对无标签数据进行两次前向计算,随机对输入数据、模型进行干扰,两次预测结果之间计算 Consistency Loss。两个 loss 的加权之和构成了训练的总 loss。
(2)Temporal Ensembling:
文章图片
图4 | Temporal ensembling 算法流程图
训练过程:作为上述 Π-model 的改进版本,有标签数据的 Supervised Loss 维持一致;无标签数据部分,一方面对同一个输入数据在过去多个 epoch 的输出结果进行融合作为优化目标(target),另一方面对输入数据进行一次前向计算得到预测结果(prediction),两者之间计算 Consistency Loss。两个 loss 的加权之和作为整体 loss。
Result:
文章所提出的两种训练算法,提升了模型在多个测试集上的表现效果,尤其在有标签数据集较少时,提升效果更明显。
Summary:
【内容安全|2021-06-24 知物由学 | “半监督”与“自监督”(多方法结合让AI模型训练事半功倍)】这篇文章来自 NVIDIA,被 ICLR 2017接收,提出了两个简洁、有效的 Consistency Regularization 训练流程:П-model 和 Temporal ensembling。
Temporal ensembling 中参考过去多个 epoch 结果的设计,不仅提升了训练的时间性能,也避免了单次 epoch 中噪声对算法效果的负面影响。
本篇论文所提出的 Consistency Regularization 算法结构,在该领域后续多篇工作中都有被沿用和借鉴,对后来的研究工作产生了深远影响。
2.2 FixMatch (NeurIPS 2020)[9] Background:
同团队曾先后发表 MixMatch(NeurIPS 2019)[10]、ReMixMatch(ICLR 2020)[11],Google 另一个团队也提出了 UDA(NeurIPS2020)[12],这些都属于 Consistency Regularization 领域的工作。
Motivation:
为 Consistency Loss 获取更准确的伪标签,并简化当前 Consistency Regularization 算法流程。
Action:
整体算法流程与 UDA 方法类似:
文章图片
图5 | UDA算法流程图
有标签数据计算 Supervised Loss;无标签数据进行 weakly 和 strongly 两个版本的数据增强操作,weakly-augmented 数据经过前向计算得到预测结果,将其变换为one-hot形式的伪标签,作为 Consistency Loss 的 target,同时 strongly-augmented 数据经过前向计算得到预测结果,其与 target 共同进行 Consistency Loss 计算。两个 loss 的加权之和作为整体 loss,负责模型参数更新。
相比于 MixMatch 和 ReMixMatch 方法,FixMatch 在 target 获取过程中省去了很多伪标签后处理操作,类似于 Pseudo-Label 方法直接对伪标签取 one-hot 形式,避免了相应的超参数设计。
Result:
Consistency 计算部分流程得以简化,再结合精细的调参,FixMatch 达到了 Consistency Regularization 领域的 SOTA 效果。
Summary:
这篇文章来自 Google 团队,被 NeurIPS 2020接收,对同团队的 MixMatch、ReMixMatch 进行了有效简化,不过整体设计思想变化不大。
FixMatch 标志着当前 Consistency Regularization 分支与 Pseudo-Label 分支的殊途同归,可认为是目前 Consistency Regularization 领域中一个暂时的分号,暗示着接下来该领域如果想继续发展就需要有更大的创新。
2.3 Consistency Regularization 分支总结 1)总体发展目标和对应采取措施:
Motivation 1:对无标签数据获取更准确的伪标签,作为 Consistency Loss 的 target。
Action:
采用更准确的教师模型(或组合)进行打标;
区分 weakly 和 strongly 数据增强操作,使用前者的预测伪标签作为计算 Consistency Loss 的 target;
为了实现熵最小化(Entropy Minimization),对前述伪标签的后处理操作。
Motivation 2:更多样、程度更强、更有效的 perturbation 手段
Action:
多种干扰方式结合,包括数据干扰、模型干扰、中间特征层干扰;
应用更强大的数据增强操作,例如 RandAugment、AutoAugment、CTAugment 等。
2)未来发展和实操建议:
Consistency Regularization思想中更强的扰动(perturbation)和输出一致性(Prediction Consistency)之间存在权衡关系,该领域的几篇新方法中都采用了强大的数据增强操作,这种情况下维持 Prediction Consistency 是否还有意义,需要视具体任务、数据、数据增强操作而定。
Consistency Regularization 的初衷是很好的,但是当前的实现方法和 Pseudo-Label 分支类似,比如 FixMatch 中采用了 one-hot 形式的 target,这时 Consistency Regularization 和 Pseudo-Label 实现起来已经基本一致,没有引入新的创新性的约束。期待未来关于 Consistency Regularization 有新的实现手段。
03 自监督 对比学习(Contrastive Learning) 三分相像的兄弟 除了以上半监督学习两个主流分支的成果外,自监督学习的对比学习(Contrastive Learning)方向在2019年底到2011年初也经历了“神仙打架”似的飞速发展期,下图列举了三大科研阵营在此期间提出的一些对比学习算法成果:
文章图片
图6 | Contrastive Learning发展记录
Facebook AI Research (FAIR) :MoCo v1[13]、MoCo v2[14], SwAV[15],Simsiam[16]
Google Research, Brain Team:SimCLR v1[17]、SimCLR v2[18]
DeepMind Research:BYOL[19]
自监督学习中的对比学习(Contrastive Learning),和半监督学习中的一致性正则(Consistency Regularization),两者从方法原理上来看非常相近,均可近似抽象理解为鼓励模型对相近输入的预测保持一致性。
两者的主要差异体现在训练目标(target)的不同:对比学习的训练目标是任务无关的(task-agnostic),而一致性正则的训练目标是任务有关的(task-specific);除此以外,两个分支中不同方法在正负样本选取、损失函数的选择、是否和有监督任务一起训练等方面也略有差异。
04 半监督在易盾 借鉴了以上半监督、自监督学习领域在近年来的研究成果,易盾算法团队针对数字内容风控业务的实际特点,设计出一套自监督与半监督学习结合的深度模型训练方案,具体来说:
Motivation:
利用自监督学习方法,提升模型对任务无关特征(task-agnostic)的提取能力;
利用半监督学习方法,提升模型对特定业务任务的表现;
做好不同数据域之间的衔接和过渡。
Action:
下图展示了我们易盾团队设计的自监督与半监督学习结合的深度模型训练方案:
文章图片
图7 | 易盾双段式自监督 + 半监督深度模型训练方案
两段式自监督预训练:ImageNet 数据域上的自监督预训练+业务数据域上的自监督预训练。
特定业务任务上,结合学生模型反馈的半监督训练:针对特定业务任务,利用大规模无标签业务数据,根据学生模型的具体表现反馈来实时精细化修改训练策略,例如修改伪标签数值、无标签数据筛选范围、无标签数据参与计算总 Loss 的比例等。
Result:
算法效果方面:
特定任务整体的召回、精度,均有相对30%以上的明显提升。
对特定样例的泛化性能有明显提升。不需要收集特定样本加入训练,就可以有解决这些问题的能力,替代了以往“遇到问题->收集数据->加入训练”的被动模式。
对某些攻击手段、数据增强方法的鲁棒性有所提升。
数据标注方面:
有效缩减数据标注成本。采用自监督+半监督的训练方法,达到同样训练效果的前提下,数据标注需求可缩减到原来的三分之一至十分之一。
05
总结
本文简要回顾了半监督、自监督领域在过去几年的部分算法成果,探讨了伪标签算法(Pseudo-Label)、一致性正则(Consistency Regularization)、对比学习(Contrastive Learning)这三个流派方法之间的联系与区别,并介绍了我们易盾算法团队对这些理论成果的实际创新与落地尝试。诚如文中所提,Pseudo-Label、Consistency Regularization 这些流派都相应来到了各自发展的转折点,我们在此与各位算法同学一起期待半监督、自监督领域未来能有更多创新、有效的算法设计。
推荐阅读
- NeuVector 会是下一个爆款云原生安全神器吗()
- Filecoin挖矿投资报告
- 联机共读11期-6.2-汤亚萍|联机共读11期-6.2-汤亚萍 “好的内容+多的流量=知名的品牌”
- Python专栏|数据分析的常规流程
- 内容平台做电商的三个优势
- 误删/清空.bashrc文件/内容
- 何以解忧,企业信息化、数字化选型焦虑之五·系统安全隐患大
- 1-Java基础知识
- K8S|K8S 生态周报| Istio 即将发布重大安全更新,多个版本受影响
- 科三测评