大家好,我是 herosunly。985 院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池安全恶意程序检测第一名,科大讯飞恶意软件分类挑战赛第三名,CCF 恶意软件家族分类第四名,科大讯飞阿尔茨海默综合症预测挑战赛第四名,科大讯飞事件抽取挑战赛第七名,Datacon 大数据安全分析比赛第五名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。今天给大家分享的是人工智能之自然语言处理技术总结与展望,欢迎大家在评论区留言,和大家一起成长进步。
2021年5月20日,第五届世界智能大会在天津开幕。中国科协主席万钢在开幕式上表示,新一代人工智能正逐步从感知智能向认知智能发展。感知智能是机器具备了视觉、听觉、触觉等感知能力,将多元数据结构化,并用人类熟悉的方式去沟通和互动。而认知智能则是从类脑的研究和认知科学中汲取灵感,结合跨领域的知识图谱、因果推理、持续学习等,赋予机器类似人类的思维逻辑和认识能力,特别是理解、归纳和应用知识的能力。
如果将感知智能和认知智能分别映射到到人工智能的细分领域中,那么感知智能对应的就是CV(计算机视觉),而认知智能就对应的是NLP(自然语言处理)。而要实现真正的人工智能,就必须能够实现认知智能,所以研究和学习自然语言处理技术就显得至关重要。
自然语言处理是计算机科学、信息工程、人工智能、语言学这几个学科的交叉学科,是通过计算机来解决人类自然语言的问题,尤其是通过编程去处理和分析大量的自然语言数据。如果将自然语言处理领域进行细分,那么它包括自然语言理解(NLU)、自然语言生成(NLG)两大子领域。细分领域包括文本分类、命名实体识别、关系抽取、事件抽取、文本摘要、阅读理解、知识图谱构建等领域。
近些年来,基于有标记数据的监督学习是研究的重点,例如随着深度学习蓬勃发展而产生的的神经网络架构:前馈神经网络(FNN)、卷积神经网络(CNN)和循环神经网络(RNN)。但由于人工标注数据量比较少以及对没有标签的数据进行人工标注的成本比较高,所以如何更加科学的利用大量未标记数据以及标记数据则成为了新一波研究的热潮。前者则孕育出了预训练模型、提示学习(Prompt Learning)等细分领域,而后者则孕育出了数据增强等细分领域。
为了帮助初学者少走弯路以及更多人了解自然语言处理技术,笔者总结了2021年自然语言处理的一些经典案例(论文和AI比赛),希望能够启发大家的思维,最终推动自然语言处理的发展与进步。由于自然语言处理的细分领域较多,鉴于篇幅和时间的原因,以下主要介绍其中的几大方面:预训练语言模型、。为了让大家能够深刻理解其中的要点,笔者提炼出相应的核心方法论。希望读者能够举一反三,灵活应用到自己的工作生活中。
预训练语言模型本质上属于自监督学习。那什么是自监督学习呢?自监督学习是在无须提供人工标注数据的基础上,通过数据上构造的监督信号进行学习。本质上它属于上文中提到的科学的利用大量未标记数据的范畴。但它的巧妙之处在于,在数据本身上构建监督信号,则省去了人工标注数据的过程。
2018年在NLP领域出现了非常著名的BERT模型,它是利用无监督的数据,以自监督的形式进行学习,然后将其迁移到不同的下游领域。随着自然语言处理技术的蓬勃发展,各种预训练模型如雨后春笋层出不穷,成为了自然语言处理行业的标配。
在过去的一年中,比较值得称道的是两大预训练语言模型:多样语言模型XLS-R、轻量级中文语言模型Mengzi。前者本质上属于核心方法论之一:统一表示法。而后者属于AI 赋能安全技术总结与展望中重点介绍的方法论之一:小颗粒度分析法。
XLS-R模型是对四十三万小时的公开录音数据进行训练,以自监督语言表示工具wav2vec 2.0为基础。相比于2020年发布的XLSR-53的训练数据超过了十倍。XLS-R已经能识别128种不同的语言,覆盖语言的数量达到了之前工作的两倍多。
为了探索参数量对性能的影响,将不同参数量的模型之间进行对比,其中参数量最大的模型参数超过20亿,其效果远远效果远远超过了参数量较小的模型。经过分析和思考,更多的参数对于多种语言的统一表示是至关重要的。
通过对四个常用的多种语言语音识别数据进行测试,测试结果表明,在37 种语言中的绝大多数语言的效果都明显超过了之前的工作(如下图所示);具体来说,37种语言为BABEL 的 5 种语言、CommonVoice 的 10 种语言、MLS 的 8 种语言和 VoxPopuli 的 14 种语言上进行了测试。
XLS-R不仅将多种语言统计表示,而且将语言和语音进行了统计表示。习惯使用huggingface来调用预训练模型的同学,可参考链接进行使用:https://huggingface.co/docs/transformers/model_doc/xls_r
相比于XLS-R模型,Mengzi模型更注重的是小颗粒度。具体来说,首先,Mengzi模型的训练语料均为中文语料(300GB,数据来源为维基百科中文、中国新闻、通用爬虫等),而其他常见的类BERT模型绝大多数均为其他语言(如英文等),所以Mengzi模型更专注于中文;其次,相比于原始的BERT模型,Mengzi在词义的维度上增加了词性标注、命名实体识别训练任务,从而使得Mengzi模型在词义维度上的表示更加精细;最后,Mengzi模型在它的base模型基础上开发了专注于金融领域的BERT-base-fin模型(小颗粒度)、基于图像与语言的多模态Mengzi-Oscar-base模型(统一表示)、基于文本生成任务的Mengzi-T5-base模型。
除此之外,Mengzi模型在预训练阶段还使用了梯度动态矫正;在微调阶段使用了知识蒸馏、迁移学习、选择平滑、对抗训练、数据增强等策略。其中知识蒸馏的本质是训练教师模型,并通过教师模型来指导学生模型的训练;选择平滑指的是结合不同类型的损失函数从而达到更好的效果。举例来说,同时结合使用交叉熵和二元交叉熵作为损失函数,从而使得模型学习不同颗粒度的特征;数据增强指的是增加了翻译后的数据(DRCD和SQuAD)、其他数据集如CLUEWSC2020。
在各种技术加持下,Mengzi模型在金融领域的任务中取得了较大的提升,一方面是下图中模型效果的提升(如下图所示),另一方面值得称颂的是Mengzi模型的参数远远小于其他BERT模型。
Mengzi模型的使用也较为简单,可以通过Huggingface transformers加载,代码如下所示:
from transformers import BertTokenizer, BertModel
tokenizer = BertTokenizer.from_pretrained("Langboat/mengzi-bert-base")
model = BertModel.from_pretrained("Langboat/mengzi-bert-base")
Prompt Learing作为2021年NLP领域的新宠,在过去的一年里蓬勃发展,甚至被称为自然语言处理的第四范式。那么它究竟是什么样的呢?
由于维基百科并没有给出权威的定义,那么通过查阅文献得到它的定义。在论文Prefix-Tuning: Optimizing Continuous Prompts for Generation中,对它的描述为:用户通过语言描述和少数示例作为任务的输入,然后通过语言模型产生输出。(原文为:Users prepend a natural language task instruction and a few examples to the task input; then generate the output from the LM. This approach is known as in-context learning or prompting)。而在论文The Power of Scale for Parameter-Efficient Prompt Tuning中,对它的描述为:通过添加额外信息 添加额外信息以作为条件进行生成的方法。(原文为:Prompting is the approach of adding extra information for the model to condition on during its generation of Y)。
为了帮助大家理解,不妨举个浅显易懂的例子,假设我们对I lost all my money today.这句话进行情感分类,在其之后添加一个prompt句子:“I felt so __”,然后让语言模型用包括情感类的词进行完型填空,再将填空的词语映射到标签,从而解决分类任务。本质上属于任务转换,从宏观上来看是将自然语言理解(NLU)转换成了自然语言生成(NLG)的任务,从微观上来看是将情感分类任务转换成了完型填空任务。
由于我们在预训练中采用的MLM任务本身是完形填空任务,而常用的finetune范式和它并不一致。而Prompt Learning解决了预训练与测试阶段中的差异。经过研究表明,Prompt Learning在小样本(few-shot)场景下很有效。
值得一提的是,清华大学的几位学者提出了用于细粒度实体分类的Prompt-Learning,论文链接为:https://arxiv.org/pdf/2108.10604.pdf。分别对三个公开数据集的测试,在全样本训练、少样本学习、零样本学习场景下Prompt Learning方法远高于基于finetune的baseline。
上文中提到的预训练模型和Prompt Learning本质上都属于如何利用大量未标记数据。那么是否有方法能够对已标记数据进行充分利用呢?其中最有效的方法之一就是数据增强。在计算机视觉领域中,数据增强的方法较为常用,例如通过图像缩放、图像裁剪、mixup等数据增强的方法可以有效的提高任务的准确率。随着技术的发展,在自然语言处理领域中也产生了一些有效的数据增强算法,例如EDA(Easy Data Augmentation,包括同义词替换、随机插入、随机交换、随机删除)、回译、文本生成等。
在2021年的EMNLP会议中,学者分享了一种简单而有效的文本增强技术:AEDA AEDA: An Easier Data Augmentation Technique for Text Classification
它的主要思想是在原始文本中随机插入一些标点符号,本质上属于增加微量噪声而增加模型的泛化性。其中插入的标点符号包括句号、分号、问号、冒号、叹号、逗号。由于噪声不宜过大,所以插入个数不超于句子长度的三分之一。下图为该方法相比于EDA增强的效果:
之前的工作都注重于词汇、句法等维度上的数据增强,而标点符号往往被大家所忽略,本文通过实验表明了有效利用忽略细节的可行性。
本文主要介绍了自然语言处理的三大研究热点:预训练模型、Prompt Learning、数据增强。同时也分享了两大核心方法论:统一表示法和有效利用忽略细节的方法。两大核心方法不仅适用于自然语言处理领域,也同样适用于AI的其它领域。
随着深度学习技术在 NLP、CV、推荐系统等领域的蓬勃发展,笔者很看好Transformer 等预训练模型在不同模态之间达到统一表示与学习的效果,从而最终实现感知智能与认知智能。让我们一起努力,为自然语言处理技术的发展与进步尽出自己的一份力量。