PyTorch简介:自然语言处理中的深度学习

图片 嗨,habrozhiteli! 自然语言处理(NLP)是人工智能领域中极为重要的任务。 成功实施后,便可以使用Amazon的Amazon和Google Translate等产品。 本书将帮助您学习PyTorch,这是一种用于Python语言的深度学习库,它是面向数据科学家和NLP软件开发人员的领先工具之一。 Delip Rao和Brian McMahan将帮助您掌握NLP和深度学习算法。 并展示PyTorch如何允许您实现使用文本分析的应用程序。

本书•计算图和与老师一起学习的范例。 •优化的PyTorch库的基础,用于处理张量。 •传统NLP概念和方法的概述。 •主动神经网络(多层感知器等)。 •通过长期短期记忆(LSTM)和受控的递归块改善RNN•预测和序列转换模型。 •生产中使用的NLP系统的设计模式。

摘录。 嵌套单词和其他类型


解决自然语言文本处理问题时,必须处理各种类型的离散数据类型。 最明显的例子是单词。 当然有很多单词(字典)。 在其他示例中,包括符号,语音部分的标签,命名实体,命名实体类型,与解析关联的特征,产品目录中的位置等。实际上,任何输入特征均取自有限(或无限,但数)集。

深度学习在NLP中成功应用的基础是以密集向量的形式表示离散数据类型(例如,单词)。 术语“表示学习”和“嵌入”是指学习以显示/表示从离散数据类型到向量空间中的一点。 如果离散类型是单词,那么密集的矢量表示称为单词嵌入。 我们已经在第2章中看到了基于出现次数的嵌套方法的示例,例如TF-IDF(“术语频率是文档的倒频”)。在本章中,我们将重点介绍基于训练的嵌套方法和基于预测的嵌套方法(请参见Baroni等人的文章(Baroni等人,2014年),其中通过最大化特定学习任务的目标函数来进行性能训练; 例如,根据上下文预测单词。 基于培训的投资方法由于具有广泛的适用性和高效率,目前已成为标准。 实际上,单词在NLP任务中的嵌入是如此广泛,以至于它们被称为“ NLP的sriracha”,因为可以预期在任何任务中使用它们都会提高解决方案的效率。 但是这个昵称有点让人误解,因为与锡拉奇不同,附件通常不在事实之后添加到模型中,而是它们的基本组成部分。

在本章中,我们将讨论与词嵌入相关的向量表示:词嵌入方法,用于有教师和无教师的教学任务的词嵌入优化方法,可视化嵌入可视化方法以及用于句子和文档的词嵌入组合方法。 但是,请不要忘记,这里描述的方法适用于任何离散类型。

为什么要进行投资培训


在前面的章节中,我们向您展示了创建单词矢量表示的常用方法。 即,您已经学习了如何使用unit表示形式-长度与字典大小匹配的向量,除包含一个与特定单词对应的值为1的值外,所有位置均为零。 此外,您还遇到了出现次数的表示形式-长度等于模型中唯一词数量的向量,其中包含相应位置句子中单词出现的次数。 这样的表示也称为分布表示,因为它们有意义的内容/含义由向量的多个维度反映。 分布表示的历史已经持续了数十年(请参阅Firth的文章[Firth,1935年]);它们在许多机器学习和神经网络模型中都很出色。 这些表示是通过启发式构造的,1并没有经过数据训练。

分布式表示之所以得名,是因为它们中的单词是由一个尺寸较小的密集向量表示的(例如,d = 100而不是整个字典的大小,该大小可以是 图片 ),并且单词的含义和其他属性分布在此密集向量的多个维度上。

与包含前面几章中出现的次数的the矢量相比,训练所得的低维密集表示具有多个优点。 首先,降维在计算上是有效的。 其次,基于出现次数的表示导致高维向量在不同维上对相同信息进行过多编码,并且它们的统计能力不太大。 第三,输入数据的维数过多会导致机器学习和优化出现问题-这种现象通常称为维数诅咒( http://bit.ly/2CrhQXm )。 为了解决这个尺寸问题,使用了各种减小尺寸的方法,例如奇异值分解(SVD)和主成分分析(PCA)方法,但具有讽刺意味的是,这些方法在数百万个数量级的尺寸上无法很好地扩展( NLP中的典型情况)。 第四,从特定于问题的数据中学习(或根据其拟合)的表示形式最适合此特定任务。 对于像TF-IDF这样的启发式算法和像SVD这样的降维方法,尚不清楚目标优化功能是否适合这种嵌入方法的特定任务。

投资效率


要了解嵌入的工作原理,请考虑一个vector矢量的示例,线性层中的权重矩阵将与该vector矢量相乘,如图2所示。 5.1。 在第3章和第4章中,unit矢量的大小与字典的大小一致。 向量被称为单一向量,因为它在对应于特定单词的位置包含1,从而指示其存在。

图片

图 5.1。 ary矢量和线性层权重矩阵情况下的矩阵乘法示例。 由于the矢量包含全零并且只有一个单位,因此在乘以矩阵时,该单位的位置将扮演选择算符的角色。 这在图中显示为权重矩阵和所得向量的单元变暗。 尽管此搜索方法有效,但它需要大量计算资源,并且效率很低,因为unit矢量要乘以权重矩阵中的每个数字,并且总和要按行计算

根据定义,在输入处接收单一矢量的线性层权重矩阵的行数应等于该单一矢量的大小。 当乘以矩阵时,如图 在图5.1中,所得向量实际上是与单一向量的非零元素相对应的字符串。 基于此观察,您可以跳过乘法步骤,并使用整数值作为索引来提取所需的行。

关于投资绩效的最后一点:尽管有图示例 5.1,当权重矩阵的维数与输入vector矢量的维数重合时,情况并非总是如此。 实际上,与使用单一矢量或表示出现次数相比,附件通常用于表示维数较低的空间中的单词。 科学论文的典型投资规模是从25到500次测量,并且将特定值的选择减少到可用GPU内存的数量。

依恋学习方法


本章的目的不是要教给您一些用于单词投资的特定技术,而是可以帮助您弄清楚什么是投资,如何以及在何处应用这些投资,如何在模型中最好地使用它们以及它们的局限性。 事实是,实际上很少有人需要为词嵌入编写新的学习算法。 但是,在本小节中,我们将简要概述此类培训的现代方法。 仅使用单词(即未标记的数据)即可完成所有嵌套单词的方法的学习,但需要老师进行学习。 这是可能的,因为与老师一起创建了辅助教学任务,并在其中隐式标记了数据,原因是为解决辅助任务而优化的表示形式应捕获文本语料库的许多统计和语言特性,以便至少带来一些好处。 这是此类帮助程序任务的一些示例。

  • 预测给定单词序列中的下一个单词。 它还带有语言建模问题的名称。
  • 通过位于其前后的单词来预测丢失的单词。
  • 预测给定单词在特定窗口内的单词,而不管位置如何。

当然,该列表并不完整,辅助问题的选择取决于算法开发人员的直觉和计算成本。 示例包括GloVe,连续单词袋(CBOW),跳过图等。详细信息可以在Goldberg的书(Goldberg,2017年)的第10章中找到,但我们将在此简要讨论CBOW模型。 但是,在大多数情况下,使用预训练的单词附件并使其适合现有任务就足够了。

预训练单词附件的实际应用


本章以及本书的其余部分,都是关于使用预训练的单词附件的。 在大型正文中使用上述多种方法之一进行了预先培训(例如,Google新闻,Wikipedia或Common Crawl1的全文),可以免费下载和使用单词附件。 在本章的进一步内容中,我们将展示如何正确查找和加载这些附件,研究单词嵌入的一些属性,并提供在NLP任务中使用经过预训练的单词嵌入的示例。

下载附件


单词的附件变得如此流行和广泛,以至于可以下载许多不同的选项,从原始的Word2Vec2到Stanford GloVe( https://stanford.io/2PSIvPZ ),包括Facebook的FastText3( https://fasttext.cc / )和许多其他内容。 通常,附件以以下格式交付:每行以一个单词/类型开头,后跟一个数字序列(即矢量表示形式)。 该序列的长度等于展示的尺寸(附件的尺寸)。 投资的规模通常约为数百。 令牌的类型数量通常等于字典的大小,大约为一百万。 例如,这是GloVe中狗和猫向量的前七个维度。

图片

为了有效地加载和处理附件,我们描述了辅助类PreTrainedEmbeddings(示例5.1)。 它创建一个存储在RAM中的所有词向量的索引,以借助近似最近邻居计算包annoy简化快速搜索和最近邻居的查询。

示例5.1 使用预训练的单词附件

图片

图片

在这些示例中,我们使用单词GloVe的嵌入。 您需要下载它们并创建PreTrainedEmbeddings类的实例,如示例5.1中的输入[1]所示。

单词附件之间的关系


词嵌入的关键特性是句法和语义关系的编码,以词使用模式的形式表现出来。 例如,通常猫和狗的讲语非常相似(他们讨论了它们的宠物,喂养习惯等)。 结果,猫和狗这两个词的附件比鸭子和大象等其他动物的名字的附件更紧密。

有很多方法可以研究单词附件中编码的语义关系。 最受欢迎的方法之一是使用类比任务(SAT等考试中逻辑思维任务的常见类型之一):

Word1:Word2 :: Word3:______

在此任务中,有必要通过给定的三个单词来确定第四个,即前两个之间的联系。 借助嵌套单词,可以在空间上对这个问题进行编码。 首先,从Word1中减去Word2。 它们之间的差向量对Word1和Word2之间的关系进行编码。 然后可以将此差异添加到Slovo3,结果将是最接近第四个缺失单词的向量。 为了解决类比问题,使用所获得的向量通过索引查询最近的邻居就足够了。 例5.2中显示的相应函数完全按照上面的描述进行操作:它使用向量算术和最近邻居的近似索引来查找类推中的缺失元素。

示例5.2 使用词嵌入解决类比问题

图片

图片


有趣的是,使用一种简单的言语类比,可以证明单词嵌入如何能够捕获各种语义和句法关系(示例5.3)。

示例5.3 借助SAT类比的任务示例,借助许多语言连接的词嵌入进行编码

图片

图片

尽管看起来连接显然反映了该语言的功能,但并非一切都那么简单。 如例5.4所示,连接可能被错误地定义,因为单词向量是根据它们的联合出现来确定的。

示例5.4 一个示例,说明了基于共现对单词的含义进行编码的危险性的示例-有时不起作用!

图片

例5.5说明了编码性别角色时最常见的组合之一。

示例5.5 请注意由词附件编码的受保护属性(例如性别)。 它们可能导致将来的模型出现不必要的偏差。

图片

事实证明,很难区分语言模式和根深蒂固的文化偏见。 例如,医生绝不总是男人,护士也不总是女人,但是这种偏见是如此持久,以致于它们在语言中并因此在单词向量中得到反映,如示例5.6所示。

示例5.6 文化偏见“缝合”到词的载体中

图片

考虑到NLP应用程序的普及和流行,我们不应忘记投资中可能出现的系统错误。 消除词嵌入中的系统错误是科学研究中一个非常有趣的新领域(请参见Bolukbashi等人的文章[Bolukbasi等人,2016])。 我们建议您查看ethicsinnlp.org ,在这里可以找到有关横截面道德规范和NLP的最新信息。

关于作者


Delip Rao是位于旧金山的咨询公司Joostware的创始人,该公司专门从事机器学习和NLP研究。 假新闻挑战赛的联合创始人之一是一项旨在将AI领域的黑客和研究人员召集在一起进行媒体事实检查任务的计划。 Delip之前曾在Twitter和Amazon(Alexa)上从事与NLP相关的研究和软件产品。

Brian McMahan是Wells Fargo的研究员,主要研究NLP。 以前在Joostware工作。

»这本书的更多信息可以在出版商的网站上找到
» 目录
» 摘录

小贩优惠券可享受25%的折扣-PyTorch

支付纸质版本的书后,就会通过电子邮件发送电子书。

Source: https://habr.com/ru/post/zh-CN475488/


All Articles