奎克的藏经阁 · MinerU 解析内容

AI 3.0(畅销书《复杂》作者、复杂系统前沿科学家梅拉妮·米歇尔,历经10年思考,厘清人工智能与人类智能的全新力作,全景式地展现了人工智能的...

491 个 PDF 物理页 · 本页显示文件第 281–290 页

PDF 物理页索引 280

文件中的第 281 页 · 印刷页码:未识别

“感觉像是制作团队刻意把它拍得尽可能地令人感到不安和恐惧。”

“这个电影的角色发展和幽默感都非常有失水准。”

“影片的基调有点怪异,我对其中的很多幽默元素无感。”

“没有这个系列中其他作品所体现的魅力和智慧。”

在以上这些评论中,影评者喜欢这部电影吗?

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

PDF 物理页索引 281

文件中的第 282 页 · 印刷页码:未识别

撇开这些情感分析应用的伦理道德不谈,让我们关注一下人工智能系统如何才能够对上述例子中句子的情感进行分类。尽管人类能轻易地看出这些评论都是负面的,但让一个程序以一种通用的方式来做这种分类要比想象中困难得多。

一些早期的自然语言处理系统的方法是:找到一些特定的单词或短语作为文本中情感的线索。例如,用“黑暗”“怪异”“沉重”“令人不安”“恐怖”“缺乏”“缺失”之类的词,或者用“毫无感觉”“完全不”“有一点太”等短语来表明影评中的负面情感。这在某些情况下会奏效,但在许多情况下,这样的线索词也能在积极的评论中找到。以下就是几个例子:

“尽管主题有些沉重,但是幽默感十足,所以并没有变得太黑暗。”

“一点都不像有些人说的那样令人不安或感到恐怖。”

“在它刚上映的时候,我年龄太小,不适合看这部恐怖电影。”

“如果你不看这部电影,你就落伍了!”

只看孤立的单词或短语通常不足以了解整体的情感呈现,因此,有必要从整个句子的上下文中来捕捉某个具体单词的含义。

PDF 物理页索引 282

文件中的第 283 页 · 印刷页码:未识别

在DNN开始在计算机视觉和语音识别上“得心应手”后不久,自然语言处理的研究者就开始试着把它们应用于情感分析。同样的,研究者用许多由人标注的、同时包含积极和消极情感的句子样本来训练网络,并让网络自己去学习一些有用的、能够使它以高置信度对句子输出正确的积极或消极分类的特征。但首先,我们如何能得到可以处理一个句子的DNN?

递归神经网络

处理一个句子或段落需要的是一种不同于前几章的描述的神经网络。我们可以回想一下第04章提及的将图像分类为狗或猫的ConvNets,其中,网络的输入是一幅固定大小的图像,对于较大或较小的图像,则需要进行相应的调整。相比之下,句子是由词的序列组成的,并且没有固定的长度。因此,我们需要一种能让神经网络处理不同长度的句子的方法。

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

PDF 物理页索引 283

文件中的第 284 页 · 印刷页码:未识别

图11-1表示了一个传统的神经网络[见图11-1(A)]和一个递归神经网络[见图11-1(B)]的结构差异。为简单起见,我们假设每个网络在其隐藏层中有两个单元(图中白色圆圈),在其输出层中有一个单元。在这两个网络中,输入与每个隐藏单元相连,每个隐藏单元与输出单元相连(图中实线箭头),而两者的关键区别在于:递归神经网络中的隐藏单元具有额外的递归连接——一个指向自身及其他隐藏单元的连接(图中虚线箭头)。这种递归连接如何起作用呢?与传统的神经网络不同,递归神经网络在一系列时步上运行,在每个时步上,给递归神经网络一个输入并计算其隐藏和输出两个单元的激活值,这点就与传统的神经网络一样,但在递归神经网络中,每个隐藏单元同时依据输入及前一个时步的隐藏单元激活值来计算其激活值,在第一个时步,这些值被设置为零。这赋予了网络一种在记住它已阅读的上文的同时理解其正在阅读的字词的方式。

PDF 物理页索引 284

文件中的第 285 页 · 印刷页码:未识别

理解递归神经网络工作原理的最佳方法是:将网络在时步上的运行过程可视化,图11-2展示了图11-1中的递归神经网络运行8个时步的情形。为了简单起见,我将隐藏层中的所有递归连接表示为从一个时步到下一个时步的单个虚线箭头。在每个时步上,隐藏单元的激活值构成了网络对其目前所读部分句子的编码,在网络处理句子的整个过程中,它会不断地调整这一编码。在句子的最后一个词语之后,网络会接收到一个特殊的,类似于句号的结束符号“END”,它负责告诉网络:句子已经结束了。注意,结束符号是在将文本输入网络之前,人工添加到每个句子中的。

PDF 物理页索引 285

文件中的第 286 页 · 印刷页码:未识别

图11-2 递归神经网络应用在前文例句中,运行8个时步的情形

注:图中这个英语句子是前文中关于电影《夺宝奇兵2》的评论“对我来说有些太黑暗了”的英文原文。

在每个时步,这个网络中的输出单元会对隐藏单元的激活值(编码)进行处理,并给出网络对输入句子(即在该时步之前输入该网络的那部分语句)具有的积极情感的置信度。当把网络应用在一个给定的句子上时,我们可以忽略这一输出,一直到句子结束,此时,隐藏单元会对整个句子编码,输出单元也会给出网络对于此句子的积极情感的最终置信度。图11-2中所示的递归神经网络对该句子的积极情感的置信度为30%,即对消极情感的置信度为70%。

由于网络只有在遇到结束符号时才会停止对句子编码,因此系统在原则上能够将任意长度的句子编码成一组固定长度的数字,即隐藏单元的激活值,因此,这种神经网络通常也被称为“编码器网络”(encoder network)。

给定一组人类标记了积极或消极情感标签的句子,编码器网络能够通过反向传播在这些样本上进行训练。有一件事情我一直都还没有强调:神经网络的输入必须为数字 <sup>9</sup> 。将输入的词语编码为数字的最佳方法是什么?对这个问题的回答引发了自然语言处理领域在过去的十年里最为重要的一项进展。

<sup>“</sup>我欣赏其中的幽默<sup>”</sup>

PDF 物理页索引 286

文件中的第 287 页 · 印刷页码:未识别

在介绍将词语编码为数字的可行方案之前,我需要定义一个神经网络的“词汇表”。词汇表是网络能接受的、可以作为其输入的所有词汇的集合。语言学家估计,对一个读者来说,想要处理大部分英文文本,他需要掌握1万~3万个单词。当然,这也取决于你如何计数,例如,你可能将argue、argues、argued和arguing归类为一个单词。词汇表还可以包括常见的短语,例如,旧金山(San Francisco)或金门(Golden Gate)可以计为一个单词。

举例来说,假设我们的网络有一张含2万个单词的词汇表。将单词编码为数字的最简单方案是:为词汇表中的每个单词分配一个介于1和20 000之间的数字,然后给神经网络2万个输入,每个输入代表词汇表中的一个单词。在每个时步中,这些输入中只有那个与真实输入词语相对应的输入会被“接通”。例如,词语“黑暗”被分配的数字是317,那么,如果我们想把“黑暗”输入到网络中,则我们只需把输入317的值设置为1,而把另外19 999个输入的值设置为0。在自然语言处理领域,这被称为一个“独热编码” <sup>(33)</sup> (one-hot encoding):在每个时步中,只有一个输入在网络中对应的单词为“hot”,即其输入的值非零。

独热编码曾经是向神经网络中输入词语的一种标准方法,但它存在一个问题:给词语任意分配数字这种方法,无法获取词语之间的相关关系。假设网络已经从其训练数据中习得“我讨厌这部影片”带有负面情绪,此时再向网络输入另一个短句“我憎恶这部电影”,由于网络在训练数据中并没有遇到“憎恶”或“电影”这些词语,网络将无法判定这两个短句的含义其实是相同的。再进一步假设,网络已经习得“我大声地笑出来”这个短句与积极的评论有关联,然后它遇到了一个新的短句“我欣赏其中的幽默”,网络也无法识别这两句话含义的相近之处,因为它们从字面上看起来不完全相同。使用独热编码的神经网络通常不能很好起作用的一个主要原因就是:无法获取单词或短语之间的语义关系。

PDF 物理页索引 287

文件中的第 288 页 · 印刷页码:未识别

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

自然语言处理的研究群体提出了几种能够获取词语之间的语义关系的编码方法,所有这些方法都是基于相同的思想。语言学家约翰·费斯(John Firth)在1957年将这一思想精确地表达为:“你会通过与一个单词一同出现的词来认识它。” <sup>10</sup>这就是说,一个单词的含义可以依据与其经常一同出现的其他单词来定义,这些其他单词又可以依据与它们经常一同出现的单词来定义,以此类推。比如,“憎恶”这个词往往与“讨厌”出现在相同的语境中;“笑”这个词往往会与“幽默”出现在相同的语境中。

在语言学中,费斯的这个思想被更正式地称为“分布语义”(distributional semantics)。分布语义的潜在假设是“两个语言表述A和B之间的语义相似度是A和B能出现的语言上下文环境的相似度的函数” <sup>11</sup> 。语言学家经常使用“语义空间”(semantic space)的概念将其描述得更加具体。图11-3(A)表示的是一个单词的二维语义空间,其中具有相似含义的单词位于离彼此更近的位置,但我们可以看到,由于单词常常有许多维度的含义,它们的语义空间也必须有更多的维度。例如,在语义空间中,单词“charm” <sup>(34)</sup> 通常与“wit”(智慧)和“humor”(幽默)离得很近,但在不同的语境中 , “charm” 一 词 又 与 “bracelet” ( 手 镯 ) 和“jewelry”(珠宝)离得更近些。类似地,单词“bright” <sup>(35)</sup> 既靠近“light”(光)的词簇(wordcluster)又靠近“happy”(快乐)的词簇,还靠近“smart”(机灵的)、“intelligent”(智慧的)和“clever”(聪明的)。设想一下,有一个三维空间从纸张里朝着你延伸出来,你就可以把这些单词放置在彼此之间距离适当的位置上,这将有助于你的理解。沿着其中一个维度,“charm”紧挨着“wit”;沿着另一个维度,它离“bracelet”更近,但“charm”也应该靠近“lucky”(幸运的),而“bracelet”则非如此。这就需要更多的维度!我们人类描绘一个超过三维的空间已经有一定难度,然而,单词的语义空间实际上需要的维度要多得多,就算没有几百个,最少也得有几十个。

PDF 物理页索引 288

文件中的第 289 页 · 印刷页码:未识别

PDF 物理页索引 289

文件中的第 290 页 · 印刷页码:未识别

当我们谈论具有多个维度的语义空间时,我们已经走进了几何学的范畴。确实,自然语言处理从业者经常用几何概念来界定单词的含义。例如,图11-3(B)展示了一个由x 、y 和z 三个坐标轴定义的三维空间,沿着这些轴可以放置单词。每个单词都用一个由三组数字组成的坐标(表示一个点在x 、y 和z 轴上的位置)定义的点来标识,即图中的黑色圆点。两个单词之间的语义距离等价于图上点之间的几何距离。你可以发现,沿着不同的维度,“charm”这个词现在既靠近“wit”和“humor”,又靠近“bracelet”和“jewelry”。在自然语言处理中,人们使用“词向量”(word vector)这个概念来表示一个语义空间中某个特定单词的位置。在数学和物理学中,向量的概念要更复杂一点,而在自然语言处理中的词向量概念则比较简单 <sup>12</sup> 。例如,假设“bracelet”这个单词在语义空间中位于坐标(2,0,3)处,这三组数字组成的序列就是它在这个三维空间中的词向量的坐标。需要注意的一点是:一个单词所处空间的维数就是其坐标中数字的组数。