表征学习:为自然语言而生的高级深度学习

原创
人工智能 深度学习
在高级机器学习领域中,表征学习(Representation Learning)处理自然语言的优势是无可争辩的。在深度学习规模和计算的影响下,表征学习在人工智能领域取得了一系列的成就,不仅包括处理人类语言,而且涉及到统计人工智能的方面。

通过半监督学习和自我监督学习的某些特征,表征学习大大减少了训练模型所需的数据量,更重要的是,它更加重视阻碍传统监督学习中带注释的训练数据。

它也促进了多任务学习(multitask learning)、零次学习(zero-shot learning)、流形布局技术(manifold layout techniques)和数据倍数概念(data multiple concept)等技术的发展,成为连接这些技术的基石。上面提到的这些技术对深度学习在自然语言技术中的应用产生了巨大价值和重大影响。

由于表征学习,不仅使自然语言处理更快、更易于组织使用,而且更适用于广泛的用例,而这些用例在表征学习出现之前是无法实现的。

“这些是我们在 Indico 使用的技术,谷歌、Facebook 等其他组织显然也在使用这些技术,” Indico Data首席技术官 Slater Victoroff 如是说。“但是,表征学习在这些组织中只是小范围使用,同时使用效果和理想也相差甚远,在具体应用方面也是困难重重,并不能代表机器学习的主流。”

但是,如果用发展的眼光看问题,为了获取长远受益,他们必须现在就行动起来。

字节对编码(byte pair encoder)

从广义上讲,表征学习的工作方式与键值对的概念没有什么不同。它使用类似于密钥的字节对编码,Victoroff 观察到,每个键都有一个表示它的数值,“就像字典或查找表一样”。字节对编码是表征学习的核心内容,字节对编码是为语言中“有意义的块”(meaningful chunks)而生成的。例如:“'ing [ing] space' 可能是一个块,或者'space um [um]' 可能是一个块,”同时,Victoroff 提到字节对编码时如是说:“每个块大约是 1 到 10 个字母长度……大多数情况下是 1 到 3 个字母长。”

这种学习模式有两个值得注意的地方。首先是它的语言价值,对于单词来说,表征可以识别:这些事物是否是同义词?这些东西在语义上是否相关?这些东西在句法上是否有联系。其次,这种表征可以针对单个单词、句子甚至段落,以及用户需求提供更多的应用场景。

零次学习(zero-shot learning)

表征学习以多种方式对深度学习产生深远影响,其中最值得注意的是减少了训练数据(标记)的数量,这恰恰是高级机器学习模型提升准确率的必备条件。“如果你的表示足够好,你可以用来制作模型,他们称之为零次学习(zero-shot learning),”Victoroff 指出。使用这种技术,数据科学家可以利用标签作为训练模型的唯一示例。

例如,在构建预测飞机模型时,统计 AI 的方法会使用“airplane as your one example”这个标签,然后得出推论:“a few shots,[a] single shot。”其结果存在各种各样的变化。 这一原则会提升企业在自然语言应用领域的适用性,因为大多数高级机器学习用例都需要高标准的训练数据,而这一点往往令人望而却步。

多任务学习(multitask learning)

如果说减少训练数据是表征学习相对于深度学习应用模式的突破,那么另一个突破就是多个任务训练模型。借助更广泛使用的监督和非监督学习方法,即使针对特定模型的机器学习任务(例如在针对销售用例进行训练之后,再对营销数据执行智能处理以及自动化的实体提取),建模者再一次使用相关任务时也必须从头开始创建新模型。以表征学习、多任务学习为基础可能会使这种方式成为过去。

“假设你对【情感分析】创建一个模型任务,同时为【文本分析】创建第二个模型任务,如果想要知道这两个模型之间的关联,就可以针对一个模型创建两个任务进行训练,两个任务共享一个模型,关联任务通过共享信息,相互补充,提升彼此的表现。”Victoroff 指出。

这种做法对模型使用效率的提高以及对自然语言分析的价值是显而易见的。建模的执行多任务处理能力在基于向量的 NLP(自然语言处理 Natural Language Processing)领域中得到了充分的认可。在一些竞赛中就要求模型必须解决 10 种不同类型的 NLP 问题,并且有证据表明模型实际上可以将从一项 NLP 任务(例如理解一门外语)中学到的知识应用到另一项 NLP 任务中,以理解英语为例“我们可以证明这种方式创建的 [模型] 正在跨语言交叉学习中利用了更多的信息,”Victoroff 评论道。“这种现象被称为伸缩效应。例如在训练机器学习英文之后,再训练其学习中文,会比一开始就直接训练机器学习中文要容易得多。“

数据倍数(data multiple)

“better”这个词表达的含义具有相对性,因此针对不同的人具有不同的含义,而含义取决于通过 NLP 实现的目标。现实情况是,从深度学习的计算能力以及可扩展性方面来看,只要数据量足够大,即使是糟糕的深度神经网络也可以达到较好的效果。然而,数据倍数原则是在数据量不大的情况下集中于精确定位,提升评估模型性能从而让深度神经网络达到好的效果。正如Victoroff提到的,对于特定模型而言可以明显看到,“在 100 个数据点上的工作情况如何;在 1,000 个数据点上的工作情况如何;在 10,000 个数据点上的效果如何?”

Victoroff 指出,高级机器学习模型的性能取决于数据倍数,对于上述表征学习技术(数据倍数),通常可以达到“至少 2 到 4 倍的数据倍数”。Victoroff 指出,“模型的4倍数据倍数就意味着该模型的形成减少了 4 倍的训练数据量”。使用数据倍数方式建模,可以在数据量不够的情况下达到相对满意的效果。用Victoroff的话就是“利用你手上现有的数据就可以达到几乎翻倍的准确性。”

流形布局技术(manifold layout techniques)

对于自然语言技术而言,其表征就是一个数字列表,数据科学家可以应用不同的数学概念来让机器理解单词的含义。在自然语言处理中可以通过One-hot方式将词用数字列表的方式表示,这个数字列表可以想象成一个词典,需要处理的自然语言内容越多,这个列表就越大。每个词的表示都需要通过一个很大的数字列表来完成,这样生成的向量维度高也稀疏,使计算效率大打折扣。因此,可以通过流形布局技术将数字列表中创造意义的部分,转移到嵌入(Embedding)中,也就是将高维空间的数据转换到低维空间。

嵌入(Embedding)是一个将离散变量转化为连续向量的方式,它不光可以减少离散变量的空间维数,也可以有意义的表示该变量。Victoroff 透露,嵌入(Embedding)是一种将表征置于明确结构中的方法,在这个过程中为这些表征赋予意义。流形是自然语言技术中最受欢迎的嵌入类型之一,因为它们具有“其他结构可能没有的东西,就是距离的概念。”Victoroff 透露。

距离,对于高级机器学习模型在语言精细理解领域至关重要。根据 Victoroff 的说法,“当你阅读一个句子时,存在同义词和反义词以及解析树的概念。可以把词与词之间的关系看成是距离,所以我们有了这个距离的概念:两个物体。” 流形就是在做降维的事情,允许表征从高维空间更容易地转换到低维空间。

编者:这里需要解释一下流形做的事情。加入一个二维空间,两个点之间的距离通过两个点的x、y的坐标就可以算出来。如果一个多维空间例如一个地球仪上面有两个点,需要知道这两个点的距离,就必须用一个软尺连接两个点,获取距离。而错误的计算方式,就是用一根线切过地球表面连接两个点。

流形布局测量的距离,就好像这一把软尺,顺着地球的表面量两点的距离。在神经网络的多维空间中测量两个点的距离的时候就需要用到这个技术,我们可以把这两个点想象成两个词,距离就是两个词的关系。离得近说明词的含义相近,如下图所示。同时Embedding 还做了一个事情就是降维,将高维的向量变成低维的,容易分析和展示。

成长与发展

深度学习空间正在继续快速增长。表征学习可以减少自然语言技术应用中训练数据数量,并提升训练效率。同时使多任务学习的底层模型效用多样化。其结果是组织可以通过这些模型实现更多目标,减少构建它们所需的时间和精力,并且提高它们在 NLP 或其他应用场景中的准确性。

作者介绍

崔皓,​​51CTO社区编辑​​,资深架构师,拥有18年的软件开发和架构经验,10年分布式架构经验。曾任惠普技术专家。乐于分享,撰写了很多热门技术文章,阅读量超过60万。​​《分布式架构原理与实践》​​作者。

参考

https://insidebigdata.com/2022/02/04/elite-deep-learning-for-natural-language-technologies-representation-learning/

https://www.jiqizhixin.com/articles/2019-03-27-7

https://www.zhihu.com/question/32275069

https://zhuanlan.zhihu.com/p/46016518


责任编辑:华轩 来源: 51CTO
相关推荐

2017-04-10 16:15:55

人工智能深度学习应用

2017-10-19 17:05:58

深度学习自然语言

2017-05-05 15:34:49

自然语言处理

2017-08-23 09:36:21

2017-07-28 10:20:47

深度学习自然语言神经机器

2017-07-28 15:45:43

深度学习自然语言神经网络

2017-02-20 14:12:49

自然语言处理研究

2017-01-12 16:13:28

自然语言深度学习系统

2021-08-17 15:47:12

机器学习自然语言神经网络

2018-08-05 07:50:22

自然语言Word2Vec深度学习

2019-10-16 14:10:24

人工智能深度学习技术

2020-09-27 10:22:20

机器学习人工智能计算机

2020-04-24 10:53:08

自然语言处理NLP是人工智能

2021-05-13 07:17:13

Snownlp自然语言处理库

2022-05-18 18:31:28

机器人自然语言编程

2018-04-23 14:49:31

表征句子深度学习自然语言

2009-11-25 14:25:14

PHP自然语言排序

2024-02-05 14:18:07

自然语言处理

2021-05-17 09:00:00

自然语言人工智能技术

2021-03-26 11:02:20

Python自然语言API
点赞
收藏

51CTO技术栈公众号