作者:empty 页数:157 出版社:empty |
本书旨在为新人提供自然语言处理(NLP) 和深度学习, 以涵盖这两个领域的重要主题。这两个主题领域都呈指数级增长。对于一本介绍深度学习和强调实施的NLP的书, 本书占据了重要的中间地带。在写这本书时, 我.
欢迎任何人梦与和:一个人可以走的供,但是一样人可以走更运本书旨在为新人提供自然语言处理(NLP) 和深度学习, 以涵盖这两个领域的重要主题。这两个主题领域都呈指数级增长。对于一本介绍深度学习和强调实施的NLP的书, 本书占据了重要的中间地带。在写这本书时, 我们不得不对哪些材料遗漏做出艰难的,有时甚至是不舒服的选择。对于初学者,我们希望本书能够为基础知识提供强有力的基础,并可以警见可能的内容,特别是机器学习和深度学习是一种经验学科,而不是智力科学,我们希望每章中慷慨的端到端代码示例邀请您参与这一经历。当我们开始编写本书时, 我们从Py Torch 0.2开始。每个Py Torch更新从0.2到0.4修改了示例。Py Torch 1.0将于本书出版时发布。本书中的代码示例符合Py Torch 0.4, 它应该与即将发布的Py Torch 1.0版本一样工作.1关于本书风格的注释。我们在大多数地方都故意避免使用数学; 并不是因为深度学习数学特别困难(事实并非如此),而是因为它在许多情况下分散了本书主要目标的注意力―增强初学者的能力。在许多情况下,无论是在代码还是文本方面,我们都有类似的动机,我们倾向于对简洁性进行阐述。高级读者和有经验的程序员可以找到方法来收紧代码等等,但我们的选择是尽可能明确,以便覆盖我们想要达到的大多数受众。
像Echo(Alexa) 、siri和谷歌Translate这样的家喻户晓的产品名称至少有一个共同点, 它们都是自然语言处理(NLP) 应用的产物, NLP是本书的两个主要主题之一, NLP是一套运用统计方法的技术, 无论是否有语言学的洞见, 为了解决现实世界的任务而理解文本。这种对文本的“理解 主要是通过将文本转换为可用的计算表示,这些计算表示是从数据(本例中为文本)中学习适合于任务的表示形式是机器学习的主题。应用机器学习的文本数据有超过三十年的历一组机器学习技术, 被称为深度学习, 继续发展和证明非常有效的各种人工智能(A I) 在NLP中的任务, 演讲, 和计算机简单地说,深度学习使人们能够使用一种称为计算图和数字优化技术的抽象概念有效地从数据中学习表示。这就是深度学习和计算图的成功之处, 像谷歉、Facebook和Amazon这样的大型技术公司已经发布了基于它们的计算图形框架和库的实现, 以捕捉研究人员和工程师的思维, 在本书中, 我们考虑Py Torch, 一个越来越流行的基于python的计算图框架库来实现深度学习算法。在本章中, 我们将解释什么是计算图, 以及我们选择使用Py Torch作为框架。机器学习和深度学习的领域是广阔的,在这一章,在本书的大部分时间里,我们主要考虑的是所谓的监督学习;也就是说,使用标记的训练示例进行学习,我们解释了监督学习范式,这将成为本书的基础。如果到目前为止您还不熟悉其中的许多术语,那么您是对的,这一章,以及未来的章节,不仅澄清了这一点,而且深入研究了它们。如果您已经熟悉这里提到的一些术语和概念,我们仍然鼓励您遵循以下两个原因:为本书其余部分建立一个共享的词汇表,以及填补理解未·发展对监督学习范式的清晰理解,理解术语,并发展一个概念框架来处理未来章节的学习任务机器学习中的监督, 或者简单的监督学习, 是指将目标(被预测的内容) 的ground truth用于观察(输入) 的情况。例如,在文档分类中,目标是一个分类标签,观察(输入)是一个文档。例如,在机器翻译中,观察(输入)是一种语言的·https://github.com/Embedding/Chinese-Word-Vectors·https://github.com/brightmart/nlp_chinese_corpusohttps://github.com/codemayq/chinese_chatbot_corpusohttps://github.com/candlewill/Dialog_Corpushttps://github.com/chizhu/KGQA_HLM
观察是我们想要预测的东西。我们Targets:目标是与观察相对应的标签, 它通常是被预言的事情。Predictions按照机器学习/深度学习中的标准符号, 我们用y表示这些, 有时, 这被称为ground truth.Model:模型是一个数学表达式或函数, 它接受一个观察值x, 并预测其目标标签的值。Parameters:有时也称为权重, 这些参数化模型。标准使用的符号w(权重)或Predictions:预测, 也称为估计, 是模型在给定观测值的情况下所猜测目标的值。我们用一个“hat 表示这些。所以, 目标y的预测用来表示, Loss function:损失函数是比较预测与训练数据中观测目标之间的距离的函数。给定一个目标及其预测,损失函数将分配一个称为损失的标量实值。损失值越低,模型对目标的预测效果越好。我们用L表示损失函数,虽然在NLP/深度学习建模或编写本书时, 这在数学上并不是正式有效, 但我们将正式重述监督学习范例, 以便为该领域的新读者提供标准术语, 以便他们拥有熟悉arxiv研究论文中的符号和写作风格。考虑一个数据集!,有n个例子。给定这个数据集,我们想要学习一个由权值w参数化的函(模型)f,也就是说,我们对f的结构做一个假设,给定这个结构,权值w的学习值将充分表征模型,对于一个给定的输入x,模型预测”在监督学习中,对于训练例子,我们知道观察的真正目标y。这个实例的损失将为.然后,监督学习就变成了一个寻找最优参数/权值w的过程,从而使所有n个例子的累积损失最小化。
利用(随机)梯度下降法进行训练监督学习的目标是为给定的数集选择参数值,使损失函故最小化。换句话说,这等价于在方程中求根,我们知道梯度下降法是一种常见的求方程根的方法。回忆一下,在传统的梯度下降法中,我们对根(数)的一些初值进行猜测,并迭代更新这些参数,直到目标函数(损失函数)的计算值低于可接受闻值(即收敛准则)。对于大型数据集,由于内存限制,在整个数据集上实现传统的梯度下降通常是不可能的,而且由于计算开销,速度非常慢。相反, 通常采用一种近似的梯度下降称为随机梯度下降(SGD) 。在随机情况下, 数据点或数据点的子集是随机选择的, 并计算该子集的梯度。当使用单个数据点时, 这种方法称为纯SGD, 当使用(多个) 数据点的子集时, 我们将其称为小型批处理SGD, 通常情况下, “纯 和“小型批处理 这两个词在根据上下文变得清晰时就会被删除。在实际应用中, 很少使用纯SGD, 因为它会由于有噪声的更新而导致非常慢的收敛。一般SGD算法有不同的变体, 都是为了更快的收敛。在后面的章节中,我们将探讨这些变体中的一些,以及如何使用渐变来更新参数,这种迭代更新参数的过程称为反向传播。反向传播的每个步骤(又名epoch) 由向前传递和向后传递组成。向前传递用参数的当前值计算输木文档使用书栈网·BookStack.CN构建入并计算损失函数。反向传递使用损失梯度更新参数,请注意,到目前为止,这里没有什么是专门针对深度学习或神经网络的。图1-1中箭头的方向表示训练系统时数据的 流 。关于训练和“计算图”中 流 的概念, 我们还有更多要说的, 但首先, 让我们看看如何用数字表示NLP问题中的输入和目标,这样我们就可以训练模型并预测结果,ObservationTarget Encoding我们需要用数字表示观测值(文本),以便与机器学习算法一起使用。图1-2给出了一个可视化的描述。表示文本的一种简单方法是用数字向量表示。有无数种方法可以执行这种映射/表示,事实上,本书的大部分内容都致力于从数据中学习此类任务表示。然而,我们从基于启发式的一些简单的基于计数的表示开始。虽然简单,但是它们非常强大,或者可以作为更丰富的表示学习的起点。所有这些基于计数的表示都是从一个固定维数的向量开始的。顾名思义, one-hot表示从一个零向量开始, 如果单词出现在句子或文档中, 则将向量中的相应条目设置为1。考虑下对句子进行标记, 忽略标点符号, 并将所有的单词都用小写字母表示, 就会得到一个大小为8的词汇表:{time,fruit, flies, like, a, an, arrow, banana} 。所以, 我们可以用一个八维的one-hot向量来表示每个单对于短语、句子或文档, 压绍的one-hot表示仅仅是其组成词的逻辑或的one-hot表示, 使用图1-3所示的编码, 短语 like a banana 的one-hot表示将是一个3*8矩阵, 其中的列是8维的one-hot向量, 通常还会看到 折叠 或