机器学习与NLP相遇的那些事

  过去十年,NLP发展迅速,开发了下一代应用程序,如Siri或Alexa等虚拟助手。利用神经网络或无监督学习,提出了一种获得Word2Vec或Glove等词的向量表示的新方法。这一发展的最新里程碑是基于注意力的模型的引入,该模型使用一种机制来理解单词和短语之间的上下文关联。

  作为人工智能的一个子领域,NLP检查和检测数据中的模式,并利用它们更好地理解和生成自然语言。NLP有多种应用,其中一些是:

  NLP将人类语言从原始文本数据的形式转换为结构化数据(计算机可理解),但在此之前,它需要基于语法、上下文感知数据,并通过一个被称为自然语言理解(NLU)的过程来确定意图和实体。另一方面,自然语言生成(NLG)是将计算机生成的数据转化为人类可理解的文本的过程。该系统利用文档规划、微规划和实现技术,通过表达人类所需要的句子,生成结构良好的动态文档。

  本文以文献积累为基础,从近10年谷歌学术搜索获得的最高引文结果入手,同时跟踪引文和反向引文。搜索在每组中至少包括一个关键词:机器学习(机器学习、变压器、CNN、神经网络、Recurrent、GRU、深度学习、递归、LSTM、ML)和NLP(自然语言、NLP、NLU、NLG)。

  显然,在“变形金刚”提出后,这一组合课题的论文数量一直在稳步增长,迁移学习的衍生模型和方法也随之发表。

  1 NLP领域的发展

  字词嵌入,指具有相同意义和相似表征的字词

  在过去的十年里,国家统计局占据了强大的地位。2013年,美子

  Lov介绍了两种不同的文本矢量化技术:跳格和通用词包(CBOW)。它们都以一个单独的名字“Word2VEC”发表在图书馆中,同年晚些时候,为了纠正歧义,对它们进行了一些改进。就在不久前的2011年,同一作者还推出了一种递归神经网络语言模型(RNNLM),其效率比之前的方法提高了15倍。

  2014年,Pennington提出了一种用于检索单词向量表示的无监督学习算法,称为Glove。递归网络和LSTM是ML中有趣的新发展,Sutskever提出了序列到序列(seq2seq)模型。同年,Kalchbrenner提出了动态卷积神经网络(DCNN),Kim探索了各种分类任务。

  董在2015年引入了多列卷积神经网络(MCCNN),从多个方面分析问题,并创建其表示。Yin提出了CNN和RNN之间NLP的比较研究,总结了迄今为止的进展。Upadhyay在2017年引入了一种新的方法来管理单词嵌入中的一词多义。彼得斯在2018年建议嵌入语言模型。同年,Chen提出了一种新的LSTM,它的性能超过了之前所有与自然语言推理相关的模型。

  引人关注:变形金刚时代

  Bahdanau基于先前提出的编码器-解码器架构引入了术语“关注”:基于解码器先前隐藏的状态和句子当前输入状态的每个输入词的对齐得分。利用这个分数,解码器可以决定输入句子的哪些部分是最重要的,而不需要将所有输入句子编码成固定长度的向量。

  根据这个概念,Vaswani提出了一个相当大胆的建议,导致了变形金刚体系结构:在编码器-解码器模型中用多头自关注层取代昂贵的RNN,这很有意义

  y改进了他们的表现,并为各种任务设置了新的SOTA。基于这个想法,一个全新的模型类别出现了(下图)。后部

  建议使用变压器XL来解决原始变压器输入的有限长问题。

  迁移学习和预培训是另一个重要进展。Howard和Ruder在2018年提出了ULMFiT,这是一种迁移学习方法,可以应用于NLP中的任何任务。它包括三个阶段:训练大量文本捕捉一般特征,通过判别性微调和倾斜三角学习率对当前任务进行微调,最后增加和微调分类器层。判别式微调允许以不同的学习速率调整每一层,而斜三角形学习速率最初线性增加学习速率,然后线性降低,然后再降低。

  通过结合预训练的思想和分离这种新变压器架构的编码器部分,并根据需要多次堆叠,OpenAI的团队(Radford,Brown)创建了生成性预训练模型(也称为GPT-1/2/3)的三个版本。每个版本都有大量的参数,并在更大的语料库中进行预训练,从而为每个版本的文本生成和问题解决等任务提供新的、最新的SOTA。虽然第三版仍然没有公开,但第二版已经发布了一个更小的模型,有1.17亿个参数。

  2需要更多的数据!

  通用语言理解评估(GLUE)基准是一个流行的工具,用来评估分析自然语言理解系统的能力,并有自己的排名。一年后,它的第二版(SuperGLUE)问世,它的任务越来越艰巨,可以对不断演化的NLP模型做出更准确的评估。GLUE由11个任务和它们对等的测试数据集组成,而SuperGLUE还有10个任务。

  Common Crawl是大量Web爬虫数据的存储库,用作许多模型的预训练材料。它可能很大,但

  由于它是一个网络数据集,在真正使用之前可能需要大量的预处理。预训练模型之间的其他常见数据来源是Wikipedia页面--许多多语言和非英语模型的主要来源--以及Reddit、IMDB或Twitter站点

  已解析子集。Kaggle是拥有大量用户提交的数据集的另一个很好的来源,尽管由于它们的大小要小得多,它们可能比实际的预训练更适合微调。

  3开放源码工具

  在下表中,总结了流行的开源NLP工具。Github存储库star被用作受欢迎程度的指标,同时也确保项目在最新/经常发布的版本中保持活跃。此外,Huggingface自2019年以来一直保持着一个精心规划的git存储库,其中包含了许多针对PyTorch和Tensorflow的最新预训练变形金刚,因此可以快速测试这些模型中的任何一个,并轻而易举地制作原型。

  正如人们很容易看到的,有许多选择--每一个都有自己的优点和缺点。例如,AllenNLP更专注于研究/教育,而spaCy可能是生产的更好选择,而NLTK可能更难使用。最后,一切都取决于应用程序的需求和开发团队的个人偏好。

  4挑战

  尽管NLP在过去的几年里有了很大的发展,但仍然存在一些挑战。为了理解基于语法和上下文的意图意义和实体,需要将所有非结构化上下文转换为有意义的定义数据。

  从数据收集开始,文本挖掘通过构建语料库来识别文本数据中的非平凡模式,数据预处理利用标记、归一化、替换等子过程来处理和操作语料库。大多数原始数据通常对定义特征无用,这些特征通常包含大量噪声,因此ML模型往往变得无效且难以训练。最初的目标是从带有文本的数据块到干净的令牌列表,然后探索和可视化数据,并在构建模型之前拥有更好的数据集。通过将文本拆分为句子、单词

  并将它们转换为标准形式,例如扩展构造并将其设置为基本样式,则非结构化数据将转换为有用的文本。

  词语、歧义、语法甚至俚语的语义都需要处理。在下图中,我们提到了NLP的一些主要挑战。

  歧义

  如上所示,歧义现象存在于语言学的各个层面。在自然语言中,这是很常见的,单一的

  词根据句子的语境(语境词)有多种意义。相反,不同的词可以有相同的意思(同义词)。讽刺、挖苦和幽默可能会使用带有特定状态的词语,但事实上恰恰相反。歧义的其他主要类型有:词歧义,单个符号可以表示为动词、名词或形容词;语义歧义是指存在多种解释的句子中所描述的概念情况,当不允许句子中的双重意义和语言的语法原则时就会出现语义歧义。此外,错误、错别字、俚语和不一致会使翻译复杂化。在句子中很多时候,实际意义和所写的是有差异的。语用学就是处理这种情况的研究。

  当输入的数据不是文本而是语音时,又会出现另一个歧义问题。语音学和音系学指代词发音的方式。语音学处理的是声音的特征和感知,这意味着它们是如何产生的,而音系学处理的是语言中彼此之间的表达关系。

  更大的参数(或者不是?)

  随着每一个新的发布,每个团队都在争夺更多的参数(见下图),最终得到一个拥有数十亿个参数的模型。虽然这样做可能会提高实际效果,但在财务和时间方面会对培训成本产生巨大影响。即使只需要微调,在某些情况下,许多最新的架构无法用于某些单个GPU,甚至是整个GPU集群。除了任何可能的环境后果,它也阻碍了它们在现实世界中的使用。

  上下文分割与文本重复

  原始的转换器架构和流行的衍生模型都有预定义的最大输入序列长度--在某些情况下受模型本身(例如BERT和GPT-1中的512,GPT-2中的1024)或整体硬件(即活动存储器)的限制。

  在某些边缘情况下,这可能导致上下文丢失,在这种情况下,输入被拆分为内容与其下一个或上一个内容相关的部分。虽然在实践中通常没有问题,但有一些建议,如上面的Transformer  XL,可以有所帮助。

  此外,对于问答(QA)任务,可能需要实际生成

  在某些情况下,文本的任何其他任务的输出可能是重复的,甚至是不相关的。虽然有时这是由于模型本身或训练不足,但在某些情况下,原因是上下文分散或缺乏足够大/大型的数据集。

  5摘要

  在过去的十年中,无论是整体改进还是具体任务,NLP领域都取得了长足的进步。它始于向量革命,在每一个NLP管道的核心中都有关于最重要任务的新建议,直到最近变形金刚和迁移学习的推出标志着“黄金时代”的开始。

  在此期间,越来越多的公司开始采用Chatbot技术。从简单的模式匹配支持智能体开始,变得越来越复杂,逐渐开始采用机器学习技术和模型,使其更像人,转向实际学习,远离模式。

  机器翻译也在稳步发展。作为编码器-解码器模型及其转换器继任者的主要任务之一,今天的自动翻译应用比以往任何时候都更加精确。随着文本生成模型的发展,自动化的文章生成应用开始出现,虚拟文案与人类难辨,可能很快就会成为现实。

  但即使NLP已经走了这么远,仍有许多工作要做。多语言支持模型还有很长的路要走,最新的模型需要大量优化和缩小规模,或者更广泛地采用有效的硬件,才能真正用于实际应用。下一件大事还有待观察,而Transfoemers目前正处于领先地位。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容