《AI 3.0》第四部分 11 词语,以及与它一同出现的词

随笔9个月前发布 駱灕
77 0 0

第四部分 自然语言:让计算机理解它所“阅读”的内容

11 词语,以及与它一同出现的词

餐厅际遇

一位男士走进一家餐厅,点了一个汉堡包,要半熟的。当汉堡包上桌时,它是烤煳了的。女服务生在这位男士的桌子旁停下,并问道:“汉堡包还可以吗?”“哦,它简直太好了!”这个人说着,把椅子推到后面,没有付钱就冲出了餐厅。女服务生在他后面喊道:“嘿,账单怎么办?”她耸了耸肩,小声嘀咕着:“他为什么如此愤怒?”

问题:那位男士吃汉堡包了吗?
理解语言,特别是理解其中隐含的部分,是人类智能的一个基本部分。图灵把他著名的图灵测试构造为一场关于语言之生成和理解的比赛,这并非偶然。
自然语言处理,也就是让计算机处理人类的语言。自然语言处理包括诸如语音识别、网络搜索、自动问答和机器翻译等多个主题。深度学习一直是自然语言处理领域的大部分最新进展背后的驱动力。
在人工智能领域,“自然的”通常指的是“人类的”。

语言的微妙之处

问答系统是当前自然语言处理研究的一个焦点,这主要也是因为人们希望使用自然语言与计算机进行交互,想一想Siri、Alexa、Google Now和其他虚拟助理。

回答和《餐厅际遇》这个故事类似的文本的相关问题,那么这个程序将需要复杂的语言技能以及大量关于世界运作方式的知识。
那位男士吃汉堡包了吗?
想要自信地回答这个问题,

  • 这个程序需要知道汉堡包属于食物的范畴,并且食物是可食用的。
  • 该程序也应该知道,你走进一家餐厅,点一个汉堡包,通常意味着你打算吃这个汉堡包,而且如果你点的餐到了,你就可以吃了。
  • 该程序还需要知道,如果你点了一个半熟的汉堡包,结果服务员送来的却是已经被烤煳了的,那么你一般不会想吃它。
  • 程序应该认识到,当你说“哦,它简直太好了”时,那么你是在讽刺,而这里的“它”指的是汉堡包。
  • 该程序还应当能够推测出:如果你没有付钱就冲出了餐厅,那么很可能你还没吃过你点的餐。
    对于人类能够下意识地自动解析以上这些领域并得出最后结论,而程序却几乎不可能做到。

如果我们问:“那个人给女服务生小费了吗?”

  • 那么,程序将需要知道关于小费的一些习惯,以及给小费的目的是回报好的服务。

为什么女服务生说“账单(bill)怎么办”?

  • 程序需要弄明白,说到“bill”,女服务生指的并不是鸟嘴、金融票据或法院传票,而是指这位男士点餐的账单。
  • “鸟嘴”“金融票据”“法院传票”的英文都是bill。作者在这里举此例是为了说明让程序辨别一个词语在不同语境中的准确含义是有难度的。

女服务生知道那位男士生气了吗?

  • 程序必须明确这一点:文中“他为什么如此愤怒”中的“他”是指那位男士,而“愤怒”是一个表示“烦躁且生气”的词语。

女服务生知道男士为什么离开餐厅吗?

  • 如果我们的程序知道“耸了耸肩”这个姿势暗示着女服务生并不明白他为什么要冲出去,它就能明白这个问题的答案。

即使是孩子,都有人、桌子和汉堡包这些很基本的概念。孩子们有基本的常识,他们知道:当男士走出餐厅时,他就不在餐厅里面了,但桌子和椅子可能仍在那里;当汉堡包“到达”时,一定是有人把它带来的,它不可能自己过来。以上这些连一个4岁的孩子都能理解的语言中所包含的各种相互关联的概念和常识,恰恰是机器所不具备的。

毫无疑问,理解和使用自然语言是人工智能当前面临的最大的挑战之一。

  • 语言常常是充满歧义的,极度依赖语境,
  • 而且通常用语言沟通的各方需要具备大量共同的背景知识。

与人工智能的其他领域一样,自然语言处理相关的研究在最初的几十年集中在符号化的、基于规则的方法上,就是那种给定语法和其他语言规则,并把这些规则应用到输入语句上的方法。这些方法并没有取得很好的效果,看来通过使用一组明确的规则来捕捉语言的微妙是行不通的。

20世纪90年代,基于规则的自然语言处理方法被掩盖在更成功的统计学方法下,大量的数据集被用来训练机器学习算法。最近,这种统计数据驱动的方法已经聚焦在深度学习上了。

语音识别和最后的10%

自动语音识别(automatic speech recognition)是深度学习在自然语言处理中的第一个重大成就,并且我敢说,这是迄今为止人工智能在所有领域中取得的最重要的成就。自动语音识别是一项将口语实时转录成文本的技术。

为语音识别的各个方面开发适用的DNN,也就是深度神经网络,比如,

  • 从声音信号中识别音素,
  • 从音素的组合中预测单词,
  • 从单词的组合中预测短语,等等。
    “DNN的使用促成了20年来语音研究中最大的单项进步。”

语音识别从2012年之前的极其无用到稍微有点用,然后突然之间就变得近乎完美了。

语音识别系统在不理解其转录文本的含义的情况下完成了这一切。虽然我手机上的语音识别系统可以转录故事中的每一个字,但我向你保证,它不会理解其中的一丁点儿信息,或其他任何事情。包括我在内的许多人工智能领域的研究者,过去都认为人工智能语音识别在没有真正理解语言的情况下,永远不可能达到如此高水平的性能表现,但事实证明我们错了。

自动语音识别的确还没有达到人类的水平。背景噪声会显著影响这些系统的准确性,它们在一辆移动着的汽车里的表现比在一间安静的房间里要差得多。此外,这些系统偶尔还会被一些不常见的单词或短语所误导,而这恰恰表明了其对转录的语言是缺乏理解的。找到这种会让语音识别系统困惑的句子并不难,然而,对于安静环境下的日常会话,我猜想这些系统识别的准确率是人类准确率的90%~95%,这里的准确率是以转录正确的词语来衡量的。如果你增加背景噪声或其他复杂因素,其准确率会大大降低。

在语音识别相关文献中,最常用的度量指标是在大型短音频片段集合上的“单词错误率”。尽管当下最先进的语音识别系统应用在这种集合上的单词错误率比人类要低,但当使用现实的语音进行测试时,例如,嘈杂的或带口音的讲话、带有歧义的语言,机器语音识别的表现仍然显著不如人类。

对于语音识别来说,这最后的10%不仅包括处理噪声、不熟悉的口音和不认识的单词,还包括影响语音集成的语言的歧义和上下文的关联性。最后这顽固的“10%”需要怎样来解决呢?更多的数据?更多的网络层?或者,这最后的“10%”需要要求系统真正理解讲话人所说的话吗?我倾向于最后这种观点,但我之前已经错过一次了。

语音识别系统是十分复杂的,从声波到句子都需要若干种不同的处理方法。当前最先进的语音识别系统集成了许多不同的组件,包含多个DNN。

其他自然语言处理任务,如语言翻译或问答系统,乍一看似乎更简单——输入和输出都只有单词,然而,深度学习的数据驱动方法还没有在这些领域取得它们在语音识别上取得的那种进展。为什么呢?想要回答这个问题,我们可以先来看几个深度学习如何被应用于重要的自然语言处理任务的例子。

分类情感

自然语言处理的一个领域——“情感分类”

“情节沉重,并且很大程度上缺乏幽默感。”
“对我来说有些太黑暗了。”
“感觉像是制作团队刻意把它拍得尽可能地令人感到不安和恐惧。”
“这个电影的角色发展和幽默感都非常有失水准。”
“影片的基调有点怪异,我对其中的很多幽默元素无感。”
“没有这个系列中其他作品所体现的魅力和智慧。”
在以上这些评论中,影评者喜欢这部电影吗?

对于那些想要分析客户对他们的产品的评论,以此来寻找新的潜在客户,并自动进行产品推荐或有选择性地定点投放在线广告的公司来说,一个能够准确地将一句话依据其情感将其归类为正面、负面或其他类别的观点的人工智能系统太重要了!关于一个人喜欢或不喜欢何种电影、书籍或其他商品的数据,在预测此人未来的购买情况时会出人意料地有用。更重要的是,这些信息可能对一个人生活的其他方面同样具有预测能力,例如,其可能的投票模式以及对某种类型新闻报道或政治立场的反应。8进一步说,已经有人尝试过应用这种“情感挖掘”技术对Twitter上与经济相关的推文进行分析,来预测股价和选举结果,并取得了不同程度的成功。

撇开这些情感分析应用的伦理道德不谈,让我们关注一下人工智能系统如何才能够对上述例子中句子的情感进行分类。尽管人类能轻易地看出这些评论都是负面的,但让一个程序以一种通用的方式来做这种分类要比想象中困难得多。
一些早期的自然语言处理系统的方法是:找到一些特定的单词或短语作为文本中情感的线索。例如,用“黑暗”“怪异”“沉重”“令人不安”“恐怖”“缺乏”“缺失”之类的词,或者用“毫无感觉”“完全不”“有一点太”等短语来表明影评中的负面情感。这在某些情况下会奏效,但在许多情况下,这样的线索词也能在积极的评论中找到。以下就是几个例子:
“尽管主题有些沉重,但是幽默感十足,所以并没有变得太黑暗。”
“一点都不像有些人说的那样令人不安或感到恐怖。”
“在它刚上映的时候,我年龄太小,不适合看这部恐怖电影。”
“如果你不看这部电影,你就落伍了!”
只看孤立的单词或短语通常不足以了解整体的情感呈现,因此,有必要从整个句子的上下文中来捕捉某个具体单词的含义。
在DNN开始在计算机视觉和语音识别上“得心应手”后不久,自然语言处理的研究者就开始试着把它们应用于情感分析。同样的,研究者用许多由人标注的、同时包含积极和消极情感的句子样本来训练网络,并让网络自己去学习一些有用的、能够使它以高置信度对句子输出正确的积极或消极分类的特征。但首先,我们如何能得到可以处理一个句子的DNN?

递归神经网络

处理一个句子或段落需要的是一种不同于前几章的描述的神经网络。句子是由词的序列组成的,并且没有固定的长度。因此,我们需要一种能让神经网络处理不同长度的句子的方法。
将神经网络应用于涉及有序序列(例如句子)的任务可以追溯到20世纪80年代出现的“递归神经网络”(recurrent neural network, RNN),而该方法显然是受到大脑理解句子的原理的启发。想象一下,你自己阅读“对我来说有点太黑暗了”这样的评论,然后将其分类为带有积极情感或消极情感的句子的情境。你从左到右一个字一个字地读着这个句子。随着你的阅读,你开始对其表达的情感形成印象,这一印象会随着你读完句子得到进一步的确定。此时,你的大脑产生了以神经元激活的形式存在的对于此句子认知的表达,这使你能够自信地陈述这条评论是积极的还是消极的。递归神经网络的灵感就来源于上述这一过程。

传统的神经网络和递归神经网络的关键区别在于:
递归神经网络中的隐藏单元具有额外的递归连接——一个指向自身及其他隐藏单元的连接。这种递归连接如何起作用呢?与传统的神经网络不同,递归神经网络在一系列时步上运行,在每个时步上,给递归神经网络一个输入并计算其隐藏和输出两个单元的激活值,这点就与传统的神经网络一样,但在递归神经网络中,每个隐藏单元同时依据输入及前一个时步的隐藏单元激活值来计算其激活值,在第一个时步,这些值被设置为零。这赋予了网络一种在记住它已阅读的上文的同时理解其正在阅读的字词的方式。
由于网络只有在遇到结束符号时才会停止对句子编码,因此系统在原则上能够将任意长度的句子编码成一组固定长度的数字,即隐藏单元的激活值,因此,这种神经网络通常也被称为“编码器网络”(encoder network)。
给定一组人类标记了积极或消极情感标签的句子,编码器网络能够通过反向传播在这些样本上进行训练。

“我欣赏其中的幽默”

在介绍将词语编码为数字的可行方案之前,我需要定义一个神经网络的“词汇表”。词汇表是网络能接受的、可以作为其输入的所有词汇的集合。语言学家估计,对一个读者来说,想要处理大部分英文文本,他需要掌握1万~3万个单词。当然,这也取决于你如何计数,例如,你可能将argue、argues、argued和arguing归类为一个单词。词汇表还可以包括常见的短语,例如,旧金山(San Francisco)或金门(Golden Gate)可以计为一个单词。
举例来说,假设我们的网络有一张含2万个单词的词汇表。将单词编码为数字的最简单方案是:为词汇表中的每个单词分配一个介于1和20 000之间的数字,然后给神经网络2万个输入,每个输入代表词汇表中的一个单词。在每个时步中,这些输入中只有那个与真实输入词语相对应的输入会被“接通”。例如,词语“黑暗”被分配的数字是317,那么,如果我们想把“黑暗”输入到网络中,则我们只需把输入317的值设置为1,而把另外19 999个输入的值设置为0。在自然语言处理领域,这被称为一个“独热编码”(one-hot encoding):在每个时步中,只有一个输入在网络中对应的单词为“hot”,即其输入的值非零。
独热编码曾经是向神经网络中输入词语的一种标准方法,但它存在一个问题:给词语任意分配数字这种方法,无法获取词语之间的相关关系。假设网络已经从其训练数据中习得“我讨厌这部影片”带有负面情绪,此时再向网络输入另一个短句“我憎恶这部电影”,由于网络在训练数据中并没有遇到“憎恶”或“电影”这些词语,网络将无法判定这两个短句的含义其实是相同的。再进一步假设,网络已经习得“我大声地笑出来”这个短句与积极的评论有关联,然后它遇到了一个新的短句“我欣赏其中的幽默”,网络也无法识别这两句话含义的相近之处,因为它们从字面上看起来不完全相同。使用独热编码的神经网络通常不能很好起作用的一个主要原因就是:无法获取单词或短语之间的语义关系。

“憎恶”总与“讨厌”相关,“笑”也从来伴随着“幽默”

自然语言处理的研究群体提出了几种能够获取词语之间的语义关系的编码方法,所有这些方法都是基于相同的思想。语言学家约翰·费斯(John Firth)在1957年将这一思想精确地表达为:“你会通过与一个单词一同出现的词来认识它。”这就是说,一个单词的含义可以依据与其经常一同出现的其他单词来定义,这些其他单词又可以依据与它们经常一同出现的单词来定义,以此类推。比如,“憎恶”这个词往往与“讨厌”出现在相同的语境中;“笑”这个词往往会与“幽默”出现在相同的语境中。
在语言学中,费斯的这个思想被更正式地称为“分布语义”(distributional semantics)。分布语义的潜在假设是“两个语言表述A和B之间的语义相似度是A和B能出现的语言上下文环境的相似度的函数”。语言学家经常使用“语义空间”(semantic space)的概念将其描述得更加具体。
由于单词常常有许多维度的含义,它们的语义空间也必须有更多的维度。
我们人类描绘一个超过三维的空间已经有一定难度,然而,单词的语义空间实际上需要的维度要多得多,就算没有几百个,最少也得有几十个。
当我们谈论具有多个维度的语义空间时,我们已经走进了几何学的范畴。确实,自然语言处理从业者经常用几何概念来界定单词的含义。
在自然语言处理中,人们使用“词向量”(word vector)这个概念来表示一个语义空间中某个特定单词的位置。在数学和物理学中,向量的概念要更复杂一点,而在自然语言处理中的词向量概念则比较简单。例如,假设“bracelet”这个单词在语义空间中位于坐标(2,0,3)处,这三组数字组成的序列就是它在这个三维空间中的词向量的坐标。需要注意的一点是:一个单词所处空间的维数就是其坐标中数字的组数。

在物理学中,“向量”这一术语通常被定义为:具有大小和方向的量。这个定义也适用于我在本文中提到的词向量:任何词向量都可以用代表单词的点的坐标来唯一地描述,它的大小是从原点到该点的线段长度,方向是这条线段与坐标轴的夹角。
一旦词汇表中的所有单词都被恰当地放置在语义空间中,一个词的含义就能通过其在语义空间中的位置,也就是其词向量的坐标来表示。词向量有什么好处呢?事实上,使用词向量的坐标作为数字输入来表示单词,而不是使用简单的独热编码方案,可以大大提高神经网络在自然语言处理任务中的性能。

word2vec神经网络:口渴之于喝水,就像疲倦之于喝醉

如何将单词放置在语义空间中的问题,如今最为广泛采用的方法是谷歌的研究团队在2013年提出的“单词到向量”(word to vector, word2vec)。word2vec方法的工作原理是使用传统的神经网络来自动学习词汇表中的所有单词的词向量。
word2vec方法体现了“你会通过与一个单词一同出现的词来认识它”这一思想。为了给word2vec程序创建训练数据,研究团队从谷歌新闻服务板块获取了大量的数据。在现代自然语言处理中,没有比大数据更有价值的资源了!word2vec程序的训练数据由一系列成对的单词组成,在谷歌新闻文档中,每个单词对应的单词都曾在该单词的附近出现过。为了使整个过程更好地运行,诸如“和”“的”等极为常用的单词会被丢弃。
“一位男士走进一家餐厅,点了一个汉堡包”这句话将被首先转换成“男士走进餐厅点了汉堡包”。这句话将生成以下单词对:(男士,走)、(走,进)、(进,餐厅)、(餐厅,点了)、(点了,汉堡包),同时还会生成所有单词对的倒序组合,例如,(汉堡包,点了)。这种方法的核心思想是:训练word2vec网络来预测哪个词最有可能与一个给定的输入单词配对。
谷歌的研究人员使用从谷歌新闻文章中收集的数十亿个单词对来对网络进行训练。给定一个单词对,例如(汉堡包,点了),则对应第一个词“汉堡包”的输入被设置为1,其他所有输入设置为0。在训练过程中,每个输出单元的激活值被整合为网络对词汇表中与输入单词对应的单词的置信度。此处,正确的输出激活将为该单词对中的第二个词“点了”分配较高的置信度。
训练完成后,我们就可以提取网络学习到的词汇表中任意一个词的词向量,图11-5说明了如何做到这一点。该图展示了“汉堡包”这个输入和300个隐藏单元之间的加权连接,这些从训练数据中学习到的权重,捕获了使用相应单词的语句的上下文相关信息,这300个权重是分配给某个给定词的词向量的组成部分。此过程中完全忽略隐藏单元与输出单元之间的连接,所有必要的信息都包含在从输入层到隐藏层的权重中。因此,这个网络学习到的词向量是300维的,词汇表中所有词的词向量集合组成了其所学到的语义空间。
这整个过程的目标是为词汇表中的每个词找到一个数字表示,也就是一个向量坐标,来捕捉词中的一些语义信息。其假设是,使用这种词向量将为自然语言处理任务生成高性能的神经网络,但是通过word2vec方法创建的语义空间在多大程度上真正捕获了单词的语义呢?
这个问题很难回答,因为我们无法可视化word2vec学习到的这个300维的语义空间,然而,我们还是有办法来一窥这个空间。最简单的方法是:拿一个给定的词,通过查看词之间的距离,在语义空间中寻找与它最接近的词。例如,在网络经过训练后,与“法国”最接近的词有“西班牙”“比利时”“荷兰”“意大利”“瑞士”“卢森堡”“葡萄牙”“俄罗斯”“德国”等。word2vec这个算法并不理解“国家”或“欧洲国家”的概念,这些词只是在训练数据中出现的与“法国”具有类似语境的词,就像我在前面提到的“汉堡包”和“热狗”的例子。确实,如果我要的是最接近“汉堡包”的词,这个列表会包括“奶酪汉堡”“三明治”“热狗”“玉米卷”“炸薯条”等。

我们还可以看一看由网络训练所产生的更复杂的关系。创建了word2vec的谷歌研究人员观察到,在他们的网络创建的词向量中,代表国家的词与代表该国首都的词之间的距离,对于许多国家来说都是大体相同的。图11-6对此进行了形象直观的展示——用二维线段表示了这些距离。同样的是,研究人员也没有给这个系统植入“国家首都”的概念,这种词语之间的语义关系是网络从对数十亿个单词对的训练中学到的。

词向量所具有的这些特性是耐人寻味的,并且表明了一些词之间的语义关系是可以被获取到的,但是这些特性会使词向量方法在自然语言处理任务中普遍适用吗?答案似乎是一个响亮的“是的”。如今,几乎所有的自然语言处理系统都使用某种类型的词向量方法作为输入单词的方式,word2vec这种方法只是其中的一种。

许多人由此想到:word2vec方法不仅可以用于单个词,还可以用于整个句子,为什么不把整个句子编码为一个向量呢?与编码词的方法一样,在训练过程中使用句子对而非单词对,不就可以了吗?用这样的方式来获取语义不是比简单地使用一组词向量更好吗?事实上,的确有一些研究团队做过这方面的尝试:多伦多大学的一个团队将这些语句称为“思维向量”(thought vectors),还有人尝试过用网络将段落和整个文档编码为向量,然而结果都是成败参半。将所有的语义都简单归纳为一种几何化的表达,这对人工智能研究人员来说是一个非常诱人的想法。谷歌的杰弗里·辛顿宣称:“我们可以用一个向量来捕捉一个想法。”Facebook的杨立昆表示赞同:“在Facebook的人工智能研究中,我们希望将整个世界嵌入到思维向量中,我们将其称为world2vec(世界到向量)。”

我们不能因此责怪词向量,它们只是从我们的语言中捕捉到了性别歧视以及其他歧视,因为,我们的语言的确反映了社会中的一些偏见。尽管词向量可能是无可指责的,但它们是现代自然语言处理系统(从语音识别到语言翻译)的关键组成部分,词向量的偏见可能会渗透在广泛使用的自然语言处理应用中,并产生让人意想不到的偏见。研究这些偏见的人工智能科学家刚开始理解这些偏见可能会对自然语言处理系统的输出产生何种微妙的影响,并且许多研究团队正致力于词向量的“去偏见”(debiasing)算法。消除词向量所隐含的偏见是一个很大的挑战,但可能并没有消除语言和社会中存在的偏见那样困难。

《AI 3.0》读书笔记
《AI 3.0》读书笔记 序1
《AI 3.0》读书笔记 序2
《AI 3.0》读书笔记 序3
《AI 3.0》读书笔记 译者序
《AI 3.0》读书笔记 第一部分 若想对未来下注,先要厘清人工智能为何仍然无法超越人类智能01
《AI 3.0》读书笔记 第一部分 若想对未来下注,先要厘清人工智能为何仍然无法超越人类智能02
《AI 3.0》读书笔记 第一部分 若想对未来下注,先要厘清人工智能为何仍然无法超越人类智能03
《AI 3.0》读书笔记 第二部分 视觉识别:始终是“看”起来容易“做”起来难 04 何人,何物,何时,何地,为何
《Ai 3.0》读书笔记 第二部分 视觉识别:始终是“看”起来容易“做”起来难 05 ConvNets和ImageNet,现代人工智能的基石
《AI 3.0》读书笔记 第二部分 视觉识别:始终是“看”起来容易“做”起来难 06 难以避免的长尾效应
《AI 3.0》读书笔记 第二部分 视觉识别:始终是“看”起来容易“做”起来难 07 确保价值观一致,构建值得信赖、有道德的人工智能
《AI 3.0》第三部分 游戏与推理:开发具有更接近人类水平的学习和推理能力的机器
《AI 3.0》第三部分 08 强化学习,最重要的是学会给机器人奖励
《AI 3.0》第三部分 09 学会玩游戏,智能究竟从何而来从
《AI 3.0》第三部分 10 游戏只是手段,通用人工智能才是目标
《AI 3.0》第四部分 自然语言:让计算机理解它所“阅读”的内容

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...