最新公告
  • 欢迎您光临欧资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 机器之心随带推荐一篇之前发过的文章《》自然语言处理介绍

    机器之心编译

    参会人员:赵化龙、王雨欣、吴盼

    本文是 Adit Deshpande 深度学习研究综述系列的第三篇,总结和解读深度学习在自然语言处理领域的应用。在这里,机器之心推荐一篇之前发表的文章《》

    自然语言处理简介

    介绍

    自然语言处理 (NLP) 研究问题是关于如何构建通过处理和理解语言来执行某些任务的系统。这些任务可以包括

    传统的 NLP 方法涉及语言领域自身的大部分知识。理解音素和语素等术语是非常基本的要求,好像他们的研究都是语言问题一样。让我们看看传统 NLP 是如何尝试理解以下单词的。

    假设我们的目标是收集关于这个词的一些信息(描述它的情绪,找到它的定义等)。利用我们对语言领域的知识,我们可以将单词分为 3 个部分。

    我们知道前缀“un”意味着反对或相反的想法,我们知道“ed”可以指定单词的时间段(过去时)。通过识别词干“兴趣”的含义,我们可以很容易地推导出整个词的定义和情感。看起来很简单,对吧?但是,在考虑英语中所有不同的前缀和后缀时,需要非常熟练的语言学家才能理解所有可能的组合和含义。

    深度学习如何解决这些问题?

    在最基本的层面上,深度学习是表示学习。使用卷积神经网络 (CNN),我们可以看到过滤器的不同组合可用于对各种对象进行分类。在这里,我们将使用类似的方法从大型数据集中创建各种单词的表示。

    本文简介

    本文将以这样的方式来组织文章的内容,我们将首先看一下构建 NLP 深度网络的基本构建块,然后谈谈最近的研究论文可以带来的一些应用。不确定我们为什么使用 RNN 或为什么 LSTM 工作得这么好?这些问题很正常,但希望在阅读下面的研究论文后,您将更好地理解为什么深度学习技术能够如此显着地推进 NLP。

    词向量

    由于深度学习喜欢与数学一起工作,我们将每个单词表示为一个 d 维向量。让我们使d = 6。

    [图片:] 现在让我们考虑如何填写这些值。我们希望以某种方式填充值,使向量以某种方式表示单词及其上下文、含义或语义。一种方法是创建一个共现矩阵。假设我们有以下句子:

    从这句话中,我们想为每个特定的词创建一个词向量。

    共现矩阵是一个矩阵,其中包含每个单词在语料库(或训练集)中的所有其他单词之后出现的计数。让我们看看这个矩阵。

    从这个矩阵中提取行可以简单地初始化我们的词向量。

    请注意,通过这个简单的矩阵,我们可以获得一些非常有用的见解。例如,请注意单词“love”和“like”都包含 1 用于在名词(NLP 和 dog)之后计数。它们与“I”的交集也是1,因此表明这些词一定是动词。对于比单个句子大得多的数据集,您可以想象这种相似性会变得更加清晰,因为“like”、“love”和其他同义词将开始具有相似的词向量,因为它们都在相似的上下文中使用。

    现在,虽然这是一个很好的起点,但我们注意到每个单词的维度将随着语料库的大小线性增加。如果我们有一百万个单词(在 NLP 标准中不是很多),我们将有一个一百万乘一百万大小的矩阵,这将是非常稀疏的(很多 0)。在存储效率方面这是绝不是最好的。在找到表示这些词向量的最佳方式方面已经取得了许多进展。其中最著名的是 Word2Vec。

    Word2Vec

    词向量初始化技术背后的基本思想是,我们希望在此类词向量中存储尽可能多的信息,同时仍将维度保持在可管理的大小(25 – 1000 维度是理想的)。Word2Vec 的运作理念是我们希望预测每个单词周围可能出现的单词。我们以上一句“我爱NLP,我喜欢狗”为例。让我们看一下这句话的前三个单词。因此,3 将是我们的窗口大小 m 的值。

    现在,我们的目标是找到中心词“love”,并预测前后词。我们如何做到这一点?当然是通过最大化/优化功能!形式上,我们的函数将在给定当前中心词的情况下寻找上下文词的最大对数概率。

    让我们深入研究一下。上面的成本函数基本上说我们想要添加“I”和“love”以及“NLP”和“love”的对数概率(其中“love”是两种情况下的中心词)。变量 T 表示训练句子的数量。让我们仔细看看这个对数概率。

    Vc 是中心词的词向量。每个词由两个向量(Uo 和 Uw)表示,一个用于将词用作中心词,一个用于将其用作外部词。这些向量使用随机梯度下降 (SGD) 进行训练。这绝对是更容易理解的方程式之一,所以如果您仍然对发生的事情有疑问,您可以查看以下两个资源:

    一句话总结:Word2Vec 试图通过最大化给定中心词的上下文词的对数概率并通过 SGD 修改向量来找到不同词的向量表示。

    (可选:“单词和短语的分布式表示及其组合性”一文的作者继续详细说明如何使用频繁单词的负采样和子采样来获得更准确的词向量。)

    有人认为 Word2Vec 最有趣的贡献是使不同词向量之间的线性关系。训练后,词向量似乎捕获了不同的句法和语义概念。这些线性关系是如何用简单的对象函数和优化技术形成的,真是令人难以置信。

    奖励:另一种很酷的初始化词向量的方法:GloVe(将共现矩阵与 Word2Vec 的思想相结合):

    递归神经网络 (RNN)

    好的,现在我们有了词向量,让我们看看它们如何与循环神经网络结合在一起。RNN 是当今大多数 NLP 任务的首选方法。RNN 的最大优势在于它能够有效地使用来自先前时间步的数据。这就是一小部分 RNN 的样子。

    所以,在底层,我们有我们的词向量 (xt, xt-1, xt + 1)。每个向量在同一时间步都有一个隐藏的 (ht, ht-1, ht + 1)) 状态向量,我们称之为模块。

    RNN 每个模块中的隐藏状态是前一个时间步的词向量和隐藏状态向量的函数。

    如果你仔细看上标,你会发现有一个权重矩阵 Whx 与我们的输入相乘,在前一个时间步中,隐藏状态向量乘以一个循环权重矩阵 Whh。请记住,这些重复出现的权重矩阵在所有时间步长上都是相同的。这是RNN的关键点。仔细想想,它与传统的(例如 2 层神经网络)有很大不同。在这种情况下,我们通常对每一层都有不同的W矩阵(W1和W2)。这里,循环权重矩阵在网络中是一样的。

    为了得到特定模块(Yhat)的输出,h 乘以 WS,这是另一个权重矩阵。

    现在让我们退后一步,了解 RNN 的优势是什么。与传统神经网络最明显的区别是 RNN 接受一系列输入(在我们的例子中是单词)。您可以将其与典型的 CNN 进行比较,在该 CNN 中您只需要一个图像作为输入。但是,使用 RNN,输入可以是任何长度,从短句到 5 段文章。此外,序列中输入的顺序会极大地影响权重矩阵和隐藏状态向量在训练期间的变化。训练后,隐藏状态有望捕获过去的信息(之前的时间步长)。

    门控循环单元 (GRU)

    现在让我们看看门控循环单元(GRU)。本单元的目的是提供一种更复杂的方法来计算 RNN 中的隐藏状态向量。这种方法使我们能够保留捕获长距离依赖关系的信息。让我们想想为什么长期依赖在传统 RNN 设置中会成为问题。在反向传播期间,误差将流经 RNN,即从最近的时间步流到最旧的时间步。如果初始梯度很小(例如

    在传统的 RNN 中,隐藏状态向量通过以下公式计算。

    GRU 提供了一种不同的方法来计算这个隐藏状态向量 h(t)。计算分为 3 个组件,一个更新门、一个重置门和一个新的内存容器。两个门都是前一个时间步的输入词向量和隐藏状态的函数。

    关键区别在于每个门使用不同的权重。这种区别由不同的上标表示。更新门使用 Wz 和 Uz,而重置门使用 Wr 和 Ur。

    现在,通过以下方式计算新的内存容器:

    空心点代表 Hadamard 产品

    现在,如果您仔细查看公式,您会发现如果重置门单元格接近 0,则整个项也变为 0,此时可以忽略来自上一个时间步的 ht-1 的信息。在这种情况下,单位只是新词向量 xt 的函数。

    h(t) 的最终公式写为:

    ht 是一个包含三个部分的函数:重置门、更新门和内存容器。理解这一点的最好方法是查看当 zt 接近 1 和接近 0 时会发生什么。当 zt 接近 1 时,新的隐藏状态向量 ht 主要取决于先前的隐藏状态,并且由于 (1-zt) 变为 0,我们忽略当前的存储容器。当 zt 接近 0 时,新的隐藏状态向量 ht 主要依赖于当前的存储容器,这种情况下我们忽略之前的隐藏状态。观察这三个部分最直观的方法可以总结如下。

    说明 GRU 有效性的常见示例如下。假设您有以下段落。

    以及相关的问题“两个数字的总和是多少?”。由于中间语句对手头的问题绝对没有影响,重置门和更新门将允许网络在某种意义上“忘记”中间语句,同时只学习应该修改的特定信息(在这种情况下为数字)隐藏状态。

    长短期记忆 (LSTM)

    如果你对 GRU 感到满意,那么 LSTM 不会让你更满意。LSTM 也由一系列门组成。

    肯定有更多的信息需要收集。由于这可以被认为是 GRU 背后思想的延伸,我不会对其进行深入分析。如果您想对每个门和计算的每个步骤进行深入的演算,请查看 Chris Olah 的一篇非常好的博客文章:. 这是迄今为止最受欢迎的 LSTM 教程,它肯定会帮助您了解这些单元为何以及如何工作得如此出色。

    LSTM 和 GRU 的比较

    让我们从两者之间的相似之处开始。这两个单元都具有维护序列中单词的长期依赖关系的特殊功能。长期依赖是指两个单词或短语可能出现在不同的时间段,但它们之间的关系对于解决最终目标仍然至关重要。LSTM 和 GRU 可以通过忽略或保留序列中某些信息的门来捕获这些依赖关系。

    两个单元之间的区别在于它们拥有的门数(GRU – 2,LSTM – 3)。这会影响输入通过的非线性数量并最终影响整体计算。GRU 也没有相同的相同的存储单元 (ct)。

    在阅读论文之前

    只是一个简短的说明。在自然语言处理 (NLP) 中还有其他有用的深度模型。用于自然语言处理 (NLP) 的循环神经网络和卷积神经网络 (CNN) 有时会在实践中使用前向和递归神经网络的区别,但不如循环神经网络流行。循环神经网络 (RNN) 是大多数深度学习自然语言处理 (NLP) 系统的支柱。

    行。现在我们对与自然语言处理(NLP)相关的深度学习有了很好的理解,让我们看一些论文。由于自然语言处理 (NLP) 中存在许多不同领域的问题(从机器翻译到问答),我们可以研究的论文有很多,但我发现其中三篇具有独特的见解。2016 年,自然语言处理 (NLP) 取得了巨大进步,但让我们从 2015 年的一篇论文开始。

    简介:我们将讨论的第一篇文章是问答子领域中非常有影响力的论文。本文由 Jason Weston、Sumit Chopra 和 Antoine Bordes 撰写,介绍了一类称为记忆网络的模型。

    记忆网络的直观思想是,为了准确回答关于一段文本的问题,你需要以某种方式记住所呈现的原始信息。如果我问你“RNN 代表什么?”,(假设你已经完全阅读了这篇文章),你会给我一个答案。因为您通过阅读本文第一部分获得的信息将存储在您的记忆中的某个地方。您只需几秒钟即可找到这些信息并将其转化为文字。现在,我不知道大脑是如何做到这一点的,但保留信息存储空间的想法仍然存在。

    本文描述的记忆网络是独一无二的,因为它是一种可以读写的联想记忆。有趣的是,我们没有这种类型的卷积神经网络或 Q 网络(用于强化学习)或传统神经网络的记忆。这是因为问答任务在很大程度上依赖于建模或跟踪长期依赖关系的能力,例如跟踪故事中人物或事件的时间线。对于卷积神经网络和 Q 网络,“记忆”是网络中内置的权重。因为它可以学习从状态到动作的不同过滤器或映射。首先,可以使用 RNN 和 LSTM,但它们通常无法记住过去的输入(这在回答任务时非常重要)。

    网络架构

    好的,现在让我们看看这个网络如何处理它给出的初始文本。与大多数机器学习算法一样,第一步是将输入转换为特征表示。这需要使用词向量、词性标签等。这真的取决于程序员。

    下一步是取特征表示 I(x) 并允许更新我们的记忆 m 以反映我们最近收到的输入 x。

    您可以将内存 m 视为单个内存 mi 的数组。这些单独的存储器mi 中的每一个都可以用作一个整体的存储器m,其特征在于I(x) 和/或自身。函数 G 可以简单地将整个表示 I(x) 存储在单个存储单元 mi 中。根据新的输入,你可以修改函数 G 来更新过去的记忆。第三步和第四步包括根据问题读取内存以获得特征表示o,然后对其进行解码以输出最终答案r。

    R 函数可用于将记忆中的特征表示转换为可靠且准确的问题答案。

    现在,让我们看看第三步。我们希望这个 O 模块输出与给定问题 X 的可能答案最匹配的特征表示。现在问题将与每个单独的内存单元匹配,并根据内存单元对问题的支持程度“评分”。

    我们使用打分函数的 argmax 值来找到支持问题的最佳输出表示(也可以取多个得分最高的单元,不一定限于 1)。打分函数是在不同的问题和不同的嵌入之间计算的的矩阵乘积的选定存储单元函数(有关详细信息,请参阅论文)。您也可以这样想,将两个词的词向量相乘以找到它们的相似性。然后将输出表示 o 输入 RNN或 LSTM 或另一个输出可靠答案的评分函数。

    该网络以有监督的方式进行训练,其中训练数据包括原始文本、问题、支持句子和基本事实答案。这是目标函数。

    对于那些感兴趣的人,这里是关于构建这种记忆网络方法的论文。

    简介:下一篇文章讨论情感分析的进展,确定一个短语是否具有积极或消极的内涵/意义。更正式地说,情绪可以定义为“对情况或事件的看法或态度”。当时,LSTM 是情感分析网络中最常用的单元。本文由 Kai Sheng Tai、Richard Socher 和 Christopher Manning 撰写,介绍了一种将 LSTM 以非线性结构连接在一起的新方法。

    这种非线性组合背后的动机在于自然语言的本质,它将序列中的单词变成短语。根据单词的顺序,这些短语可以具有与原始组成单词不同的含义。为了表示这一特性,LSTM 单元的网络以树状结构排列,其中不同的单元受其子节点的影响。

    网络架构

    LSTM 树和标准树之间的一个区别是后者的隐藏状态是当前输入和前一个时间步的隐藏状态的函数。然而,对于 LSTM 树,它的隐藏状态是当前输入及其子单元隐藏状态的函数。

    具有新的基于树的结构,一些数学变换,包括带有遗忘门的子单元。对于那些对细节感兴趣的人,请查看论文以获取更多信息。然而,我想关注的是为什么这些模块比线性 LSTM 工作得更好。

    使用 LSTM 树,单个单元格可以包含其所有子节点的隐藏状态。这很有趣,因为一个单元格可以不同地评估它的每个孩子。在训练过程中,神经网络可以实现对句子整体情绪非常重要的特定词(可能是情绪分析中的“不是”或“非常”)。对节点进行更高的评估为网络提供了极大的灵活性,并可以提高其性能。

    简介:我们今天将讨论的最后一篇论文描述了机器翻译任务的另一种方法。本文由 Google Brain 的 Jeff Dean、Greg Corrado、Orial Vinyals 等人撰写,介绍了支持 Google 流行翻译任务的机器翻译系统。与之前的谷歌生产系统相比,该系统平均减少了 60% 的翻译错误。

    传统的自动翻译方法包括基于短语匹配的变体。这种方法需要对语言领域有广泛的了解,最终证明其设计过于脆弱,缺乏泛化能力。传统方法的一个问题是它会尝试逐句翻译输入的句子。因此,一种更有效的方法(神经机器翻译 (NMT) 使用的方法)一次翻译整个句子,允许更广泛的上下文和更自然的语言重新排列。

    网络架构

    本文作者介绍了一个深度 LSTM 网络,可以端到端地训练 8 个编码器和解码器层。我们可以将这个系统分为 3 个部分,编码器 RNN、解码器 RNN 和注意力模块。从更高的层次来看,编码器将输入句子转换为向量的表示前向和递归神经网络的区别,解码器产生输出表示,然后注意力模块告诉解码器在解码任务期间要关注什么(这是一个整体上下文使用想到的句子)。

    本文的其余部分重点关注与大规模部署此类服务相关的挑战。将详细讨论计算资源量、延迟和批量部署等主题。机器之心此前曾报道过对这项研究的解释,请参阅“

    综上所述

    我们总结了深度学习如何帮助自然语言处理任务。在我看来,该领域的一些未来目标集中在改进客户服务聊天机器人、完善机器翻译,并希望让问答系统能够更深入地了解非结构化或冗长的文本,例如维基百科页面。

    原文链接:

    ©本文为机器之心编译,转载请联系本公众号授权。

    ✄————————————————

    加入机器之心(全职记者/实习生):hr@jiqizhixin.com

    投稿或寻求报道:editor@jiqizhixin.com

    站内大部分资源收集于网络,若侵犯了您的合法权益,请联系我们删除!
    欧资源网 » 机器之心随带推荐一篇之前发过的文章《》自然语言处理介绍

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    欧资源网
    一个高级程序员模板开发平台

    发表评论