文章作者:李渔 熵简科技 联合创始人
编辑整理:Hoh
内容来源:李渔@知乎
来自:DataFunTalk
导读:垂直领域内的自然语言处理任务往往面临着标注数据缺乏的问题,而近年来快速发展的半监督学习技术为此类问题提供了有希望的解决方案。文本以 Google 在 2019 年提出的 UDA 框架为研究主体,详细探索该技术在熵简科技真实业务场景中的实践效果。
本文主要有三方面的贡献:
前段时间我们团队针对深度学习时代的半监督学习技术进行了梳理,详细介绍了半监督技术的发展历程,以及各技术在核心思想、方法论上的演进,感兴趣的朋友可以查看原文:
https://zhuanlan.zhihu.com/p/138085660
从文中我们似乎看出,当前的半监督技术似乎已经具备了与监督学习相比拟的优势。那么在真实场景中,半监督技术是否依然可以如实验室中的表现,可以在真实问题上发挥出独特的优势,降低我们对于标签数据的需求。
本文基于熵简NLP团队在真实业务场景上的实践经验,从垂直领域对于半监督技术的需求出发,详细介绍半监督学习中最新的代表技术之一UDA 算法的特性,以及在金融文本分类任务上的落地实践。
借此,我们可以在2020年这个时间点,初窥半监督技术对于真实场景问题的价值。
我们在前面一篇文章已经提到,金融领域内的自然语言处理问题属于典型的垂直领域问题,在面对特定任务场景时,常常面临的一个重要挑战就是少样本。这主要体现在两个方面:
对于第一点,我们可以通过文本增强、迁移学习、few-shot learning 以及元学习等等技术或者思想来尝试解决。对于特定的任务,我们目前已经取得一些较好的成果,由于不属于本文的讨论范围,这里就不再详细展开,有兴趣的同学可以查看专栏的其他相关文章。
对于第二点,为了让大家有更直观的感受,下面给出一个实例。对于金融文本,为了方便阅读和快速筛选,往往需要对文本按照内容分为不同的类型,比如公司点评、公司深度、行业点评、行业深度等等。如下案例所示:
对于上述的两个文本,到底哪个文本属于行业点评,哪个属于行业深度呢?(具体答案可查看 4.1 节) 显然,只有金融领域相关的专业人士才能做出比较准确的标注。
因此,对于人工标注成本高的问题,我们希望能够找到这样的解决方案:
这一目标正是半监督学习核心想要达成的目标。接下来,我们开始分享团队在探索半监督技术 UDA 算法过程中的具体收获和重要结果。
UDA 算法是由 Google 团队在 2019 年提出的半监督技术,超越了包括同年提出的 MixMatch 在内的一众半监督算法,达到了当时的 SOTA 水平。
上图即是 UDA 算法的基本框架,该框架对于模型网络本身并没有特别的要求,核心是对目标函数进行了改造。从图中可以看出,UDA 的目标函数共包括两个部分,分别是有监督损失项和无监督损失项:
对于整个UDA算法,其中最核心部分就是一致性假设,即模型在输入数据的附近空间应该是平坦的,即使输入数据发生微弱变化或者发生语义不变而仅仅是形式变化时,模型的输出也能够基本保持不变。这本质上是传递了模型设计者对于模型的一种先验信念。
接下来我们看一下原始论文中,对于 UDA 算法的实验结果,本文主要展示 NLP 相关的实验。
上面一张表分别展示了 UDA 算法在 IMDb,Yelp-2,Yelp-5,Amazon-2,Amzon-5 以及 DBpedia 这几个数据集上的实验结果。整张表分别上下两个部分,其中上面部分展示了各个数据集在完整数据集下的SOTA表现,作为参照组来对比 UDA 的效果。
下面部分则展示了不同网络模型在仅有少量标签数据下,是否采用 UDA 框架,对于模型最终性能的影响。从表中我们至少可以得出三方面的结论:
原始论文的研究由于采用了标准数据集,因此停留在实验室理想条件,而实际情况往往没有这么理想。接下来,我们团队进一步研究,UDA 在遇到真实场景中两类典型问题时的表现。
我们知道,如果要采用半监督技术,那就意味着需要引入大量无标签的数据,而在真实场景中,无标签数据由于没有经过人工筛选或者只能进行粗筛选,那么必然会混入类别外或领域外的数据。这类数据是否会对模型的表现带来负面影响?
Yelp 数据集整理自 Yelp 网站(美国版大众点评)上的用户评论,其中的文本是与 IMDb 数据集类似的点评类短文本,区别在于二者所涉及的领域不太一样,IMDb 主要集中在影视相关的评论,而 Yelp 涉及的领域则更为广泛,可参考国内的大众点评上的评论。
在保持 IMDb 的有标签数据仍然为 20 条的情况下,我们随机从 Yelp 挑选一定数据量的数据混入无标签数据。在混入数据量占整体无标签数据量的比例分别为 5% - 30% 等五种不同条件下,我们在 BERT_base 上进行了实验。
实验结果如上表所示,从表中可以发现,Yelp 数据集的引入并没有给模型带来负面影响,大多数情况下,反而给模型带来了1 百分点左右的额外提升。这背后的原因或许是,Yelp 数据集虽然所涉及的领域与 IMDb 有所差异,但是其本身所蕴含的情感表现方式与 IMDb 数据集类似。因此从文本情感这个角度来看,二者在分布上是类似的,这一点对于情感分类这样的监督任务是有益的。
20 Newsgroups 数据集包含有 20 个不同主题的新闻类文本,其中的文本不论是在文本内容、语言表达方式以及涉及的领域上都与 IMDb 数据集中的文本存在明显差异。
我们在 20 Newsgroups 上做了与上述 Yelp 类似的实验。同样地,我们从 20 Newsgroups 数据集的 20 个类别中随机选择一定数据量的文本混入无标签数据中。同时,将混入比例最高调整到了 100%,这对应着在无标签数据完全采用 20 Newsgroups 的数据。
从上表的实验结果中,我们至少可以得出三方面的结论:
从前面两个实验中,我们是否可以得出结论,在半监督学习中,无标签数据即使混入领域外的数据,对于模型的训练也不会产生负面的影响。
我们认为这样的结论是不成立的。之所以在本实验中表现出类似的现象,是因为这两个实验所加入的其他数据集,其与 IMDb 的区别主要体现在文本形式、文本内容的主题等特征上,这与情感分类这个监督任务所需要的特征不在同一个维度上,因而不会产生干扰。
换言之,如果加入的其他数据集与当前数据集在特征上的差异与监督任务所重点关注的特征是正交的,那么这个数据集就不会对模型的训练带来负面影响。
在真实场景中,另一类不可避免的问题是,数据的标签很难保证绝对的正确。接下来,我们通过实验验证,当有标签数据中存在部分错误标记时,模型在 UDA 框架下的表现。
在实验中,我们从 IMDb 数据中选取 200 条数据作为有标签数据,剩下的数据作为无标签数据。同时,对于有标签数据,按照一定比例对于其标签进行打乱。
从上表的结果可以发现,当错误标签比例为 10% 时,原生 BERT 的准确率下降了 6 个百分点(相对下降率约为 9%),而 UDA BERT 只下降了一个百分点(相对下降率约为 1%);而错误比例增大到 20%时,原生BERT的下降了近七个百分点,而 UDA BERT 则下降了4个百分点。
因此,无论从绝对下降值还是下降率来看,UDA 框架对于错误标签具备有一定的抑制作用。尤其当错误比例较低时,UDA 可以保证模型的准确率基本不受错误标签的影响。这无疑是一项吸引人的特性,而背后的原因或许来自于 UDA 中的锐化操作,即要求模型的分割平面不穿过数据分布密度较高的区域。而更深层的原因则需要更深入的研究分析。
了解了 UDA 的基本特性以及在实验室条件下的优良表现之后,本节将以金融资管领域中的一类金融文本分类问题作为实际任务,用来验证 UDA 算法在真实任务场景中的表现。
此案例来自于熵简科技信息流相关的产品,其核心任务是对金融类短文本按照文本内容进行类型分类,打上标签,从而方便用户更及时、更精准地触达感兴趣的内容。
我们对原任务进行了简化,从原始的 15个类别中抽离出最典型的 6个类别,分别为:公司深度分析类、公司点评类、行业深度分析类、行业点评类、固收报告类以及宏观策略类。
为了更直观地感受数据,这里展示了几个类别的典型样本:
在接下来的实验中,我们按照时间顺序选取各类别样本共约 1.5 万条作为训练集,1200 条数据作为测试集:
在实验中,我们在 UDA 的框架基础上,分别采用了 BERT_base 和 TextCNN 作为分类模型。采用 TextCNN 有两方面的原因:
对于 BERT_base,采用了与 google 原始论文相同的网络结构,仅仅将二分类调整为六分类。同时,我们将 BERT 在 1000 多万条金融领域的研报及公告上进行了二次预训练,以使得 BERT 能够在金融领域相关的任务表现更好。
对于 TextCNN,其 embedding 层在各门户网站的新闻语料、各机构发布的研报、百度百科等文本构成的数亿规模的语料进行了预训练。卷积核的窗口大小和数目为实验中优化参数。
如前所述,我们将 UDA 技术运用到实际项目中包括两方面的目标:
其中,研究目标中的实验包括:
上表所示为不同有标签数据量下,是否采用 UDA 框架对于模型准确率的影响。从表中至少可以得到以下三方面的重要结论:
整体而言,UDA 算法确实是一种有效利用无标签数据的半监督学习技术,但还不无法在少量标签下真正让模型达到最佳表现。
随着这两年半监督技术和自监督技术的发展,大家已经意识到,数据增强技术除了用于解决少样本场景下的样本稀缺的问题,也同样在半监督技术和自监督技术中扮演中重要作用。很多研究已经证明了,数据增强技术的优劣很多时候决定了最终半监督技术的最终效果。
我们团队之前也系统地梳理过近几年半监督技术的发展情况,感兴趣的朋友可以查看:
https://zhuanlan.zhihu.com/p/111882970
在这一部分,我们研究 UDA 框架在几类典型的文本增强技术下的表现,包括 EDA、回译和基于TF-IDF的非核心词替换,关于这三类方法的具体实现细节可参考我们之前梳理的那篇文章。
值得注意的是,回译和非核心词替换技术正是 UDA 原始论文中所用到的数据增强方式。
从表中可知,数据增强技术在此任务中的效果由高到低依次为 EDA、回译 和 非核心词替换。EDA 相对于 非核心词替换高出了一个多百分点,同时考虑到不采用 UDA 框架的 baseline (见 4.3.1 节中的表格)模型准确率也在 0.86 左右,这充分说明了数据增强技术的选择对于半监督学习的效果有重要影响。
这背后的原因或许是相对于非核心词替换,EDA 技术可以给文本带来更为丰富的形式变换,毕竟里面包含了五类不同的操作。而更丰富、更多变的文本变换,可以更好地告诉模型什么是语义不变性。
从研究角度而言,探索更有效的数据增强技术将是半监督技术发展的重要方向之一。
上表展示了当有标签数据量不同时,在 UDA 框架下采用重量级的预训练模型 BERT_base 和轻量级的 TextCNN 模型的准确率比较。从表中至少可以得出两方面的结论:
至此,对于 UDA 在真实场景中的效果以及特性,我们基本有了直观的了解,本文的主要内容也到此结果。由于篇幅所限,其他相关的实验,例如与其他半监督方法的对比、领域外数据的影响等,此处不再展开,后面有机会再做分享。
本文针对 Google 提出的半监督学习框架 UDA 进行了详细地梳理和讨论,补充了原始论文没有披露或未考虑到的实验,如领域外数据的影响、错误标签的影响等。同时,我们将该技术应用到熵简科技的实际业务中,并以金融文本分类问题作为案例,分析了 UDA 框架在真实场景中的实际收益和存在问题。
最后,再简单做一下总结和讨论:
[1] Xie, Qizhe, et al. "Unsupervised data augmentation for consistency training." (2019).
[2] Oliver, Avital, et al. "Realistic evaluation of deep semi-supervised learning algorithms." Advances in Neural Information Processing Systems. 2018.
[3] Zhu, Xiaojin, and Andrew B. Goldberg. "Introduction to semi-supervised learning." Synthesis lectures on artificial intelligence and machine learning 3.1 (2009): 1-130.
[4] Kim, Yoon. "Convolutional neural networks for sentence classification." arXiv preprint arXiv:1408.5882 (2014).
[5] Devlin, Jacob, et al. "Bert: Pre-training of deep bidirectional transformers for language understanding." arXiv preprint arXiv:1810.04805 (2018).