深度学习和NLP中的注意力和记忆

深度学习和NLP中的注意力和记忆

在这里插入图片描述

文章目录

  • 一、说明
  • 二、注意力解决了什么问题?#
  • 三、关注的代价#
  • 四、机器翻译之外的关注#
  • 五、注意力=(模糊)记忆?#

一、说明

   深度学习的最新趋势是注意力机制。在一次采访中,现任 OpenAI 研究总监的 Ilya Sutskever 提到,注意力机制是最令人兴奋的进步之一,而且它们将继续存在。这听起来很令人兴奋。但什么是注意力机制?

   神经网络中的注意力机制(非常)松散地基于人类中的视觉注意力机制。人类的视觉注意力得到了很好的研究,虽然存在不同的模型,但它们本质上都归结为能够以“高分辨率”聚焦在图像的某个区域,同时以“低分辨率”感知周围的图像,然后随着时间的推移调整焦点。

   神经网络中的注意力有着悠久的历史,特别是在图像识别方面。示例包括学习将中央凹瞥见与三阶玻尔兹曼机相结合,或使用用于图像跟踪的深度架构学习参加地点。但直到最近,注意力机制才进入通常用于NLP的递归神经网络架构(并且越来越多地用于视觉)。这就是我们将在这篇文章中重点介绍的内容。

二、注意力解决了什么问题?#

   为了理解注意力可以为我们做什么,让我们以神经机器翻译(NMT)为例。传统的机器翻译系统通常依赖于基于文本统计属性的复杂特征工程。简而言之,这些系统很复杂,构建它们需要大量的工程工作。神经机器翻译系统的工作方式略有不同。在 NMT 中,我们将句子的含义映射到固定长度的向量表示中,然后基于该向量生成翻译。通过不依赖 n-gram 计数之类的东西,而是尝试捕捉文本的更高层次的含义,NMT 系统比许多其他方法更好地泛化到新句子。也许更重要的是,NTM 系统更容易构建和训练,并且不需要任何手动特征工程。事实上,Tensorflow 中的简单实现只不过是几百行代码。

   大多数 NMT 系统的工作原理是使用递归神经网络将源句子(例如德语句子)编码为向量,然后根据该向量解码英语句子,也使用 RNN。
在这里插入图片描述

RNN for Machine Translation
   在上图中,“Echt”、“Dicke”和“Kiste”单词被输入编码器,在特殊信号(未显示)之后,解码器开始生成翻译的句子。解码器不断生成单词,直到生成特殊的句子结尾标记。在这里,ℎ向量表示编码器的内部状态。

   如果你仔细观察,你会发现解码器应该只根据最后的隐藏状态生成翻译 h 3 ℎ_3 h3 从编码器。这 h 3 ℎ_3 h3 vector 必须对我们需要了解的有关源句子的所有内容进行编码。它必须充分体现其意义。用更专业的术语来说,该向量是一个句子嵌入。事实上,如果你使用PCA或t-SNE在低维空间中绘制不同句子的嵌入进行降维,你可以看到语义上相似的短语最终彼此接近。这真是太神奇了。

   尽管如此,假设我们可以将有关一个可能很长的句子的所有信息编码到一个向量中,然后让解码器仅基于此产生良好的翻译,这似乎有些不合理。假设您的源句子有 50 个单词长。英文翻译的第一个单词可能与源句子的第一个单词高度相关。但这意味着解码器必须考虑 50 步前的信息,并且该信息需要以某种方式编码到向量中。众所周知,递归神经网络在处理这种长程依赖关系方面存在问题。从理论上讲,像 LSTM 这样的架构应该能够处理这个问题,但在实践中,远程依赖关系仍然存在问题。例如,研究人员发现,反转源序列(将其向后馈送到编码器)会产生更好的结果,因为它缩短了从解码器到编码器相关部分的路径。同样,两次输入序列似乎也有助于网络更好地记忆事物。

   我认为颠倒句子的方法是一种“黑客”。它使事情在实践中更好地工作,但这不是一个有原则的解决方案。大多数翻译基准都是在法语和德语等语言上完成的,这些语言与英语非常相似(甚至中文的词序也与英语非常相似)。但是在某些语言(如日语)中,句子的最后一个单词可以高度预测英语翻译中的第一个单词。在这种情况下,反转输入会使情况变得更糟。那么,还有什么替代方案呢?注意力机制。

   使用注意力机制,我们不再尝试将完整的源句子编码为固定长度的向量。相反,我们允许解码器在输出生成的每个步骤中“关注”源句子的不同部分。重要的是,我们让模型根据输入的句子以及到目前为止产生的内容来学习要注意什么。因此,在非常一致的语言(如英语和德语)中,解码器可能会选择按顺序处理事情。在生成第一个英语单词时注意第一个单词,依此类推。这就是在神经机器翻译中通过联合学习对齐和翻译所做的,如下所示:
在这里插入图片描述

NMT Attention
   在这里,y的是我们翻译的单词,由解码器生成,而x是我们的源句词。上图使用双向循环网络,但这并不重要,您可以忽略相反的方向。重要的部分是每个解码器输出字 y t y_t yt 现在取决于所有输入状态的加权组合,而不仅仅是最后一个状态。这里的"a"表示的权重定义了每个输出应考虑多少每个输入状态。所以,如果 a 3 , 2 a_{3,2} a3,2 是一个很大的数字,这意味着解码器在生成目标句子的第三个单词时会非常注意源句子中的第二个状态。这里的a通常归一化为总和 1(因此它们是输入状态的分布)。

   注意力的一大优势是,它使我们能够解释和可视化模型正在做什么。例如,通过可视化注意力权重矩阵a,当一个句子被翻译时,我们可以理解模型是如何翻译的:
在这里插入图片描述

NMT Attention Matrix
   在这里,我们看到,在从法语翻译成英语时,网络会按顺序处理每个输入状态,但有时它会在生成输出时同时处理两个单词,例如将“la Syrie”翻译成“Syria”。

三、关注的代价#

   如果我们再仔细观察一下注意力的方程式,我们就会发现注意力是有代价的。我们需要为输入和输出单词的每个组合计算一个注意力值。如果您有一个 50 个单词的输入序列并生成一个 50 个单词的输出序列,则该序列将是 2500 个注意力值。这还不错,但是如果你进行字符级计算并处理由数百个标记组成的序列,上述注意力机制可能会变得非常昂贵。

   实际上,这是相当违反直觉的。人类的注意力应该可以节省计算资源。通过专注于一件事,我们可以忽略许多其他事情。但这并不是我们在上面的模型中真正要做的。在决定关注什么之前,我们基本上是在详细研究所有内容。直观地说,这相当于输出一个翻译的单词,然后回溯你对文本的所有内部记忆,以决定接下来要生成哪个单词。这似乎是一种浪费,根本不是人类正在做的事情。事实上,它更像是内存访问,而不是注意力,在我看来,这有点用词不当(更多内容见下文)。尽管如此,这并没有阻止注意力机制变得非常流行,并在许多任务中表现出色。

   另一种注意力方法是使用强化学习来预测要关注的大致位置。这听起来更像是人类的注意力,这就是视觉注意力的循环模型中所做的。

四、机器翻译之外的关注#

   到目前为止,我们已经研究了对机器翻译的关注。但是,上述相同的注意力机制可以应用于任何循环模型。因此,让我们再看几个例子。

   在“展示、参与和讲述”中,作者将注意力机制应用于生成图像描述的问题。他们使用卷积神经网络来“编码”图像,并使用具有注意力机制的递归神经网络来生成描述。通过可视化注意力权重(就像在翻译示例中一样),我们解释模型在生成单词时正在查看的内容:
在这里插入图片描述

Show, Attend and Tell Attention Visualization
   在《语法作为外语》一书中,作者使用带有注意力机制的递归神经网络来生成句子解析树。可视化的注意力矩阵可以深入了解网络如何生成这些树:
在这里插入图片描述

Screen Shot 2015-12-30 at 1.49.19 PM
   在《教机器阅读和理解》一书中,作者使用RNN来阅读文本,阅读(合成生成的)问题,然后得出答案。通过可视化注意力矩阵,我们可以看到网络在试图找到问题的答案时“看”在哪里:
在这里插入图片描述

Teaching Machines to Read And Comprehend Attention

五、注意力=(模糊)记忆?#

   注意力机制解决的基本问题是,它允许网络回溯输入序列,而不是强迫它将所有信息编码为一个固定长度的向量。正如我上面提到的,我认为这种关注有点用词不当。换一种解释,注意力机制只是让网络访问其内部存储器,这是编码器的隐藏状态。在这种解释中,网络不是选择“参加”什么,而是选择从内存中检索什么。与典型的内存不同,这里的内存访问机制是软的,这意味着网络检索所有内存位置的加权组合,而不是从单个离散位置检索值。使内存访问软化的好处是,我们可以使用反向传播轻松地端到端地训练网络(尽管有一些非模糊方法使用采样方法而不是反向传播来计算梯度)。

   记忆机制本身的历史要长得多。标准递归神经网络的隐藏状态本身就是一种内部存储器。RNN遭受梯度消失问题的困扰,这使它们无法学习长程依赖关系。LSTM 通过使用允许显式内存删除和更新的门控机制对此进行了改进。

   现在,更复杂的内存结构的趋势仍在继续。端到端内存网络允许网络在进行输出之前多次读取相同的输入序列,并在每个步骤中更新内存内容。例如,通过对输入故事进行多个推理步骤来回答问题。然而,当网络参数权重以某种方式绑定时,端到端记忆网络中的内存机制与这里介绍的注意力机制相同,只是它在内存上进行了多次跳跃(因为它试图整合来自多个句子的信息)。

   神经图灵机使用类似形式的内存机制,但具有更复杂的寻址类型,即使用基于内容的寻址(如此处)和基于位置的寻址,允许网络学习寻址模式以执行简单的计算机程序,如排序算法。

   在未来,我们很可能会看到记忆和注意力机制之间更清晰的区别,也许会沿着强化学习神经图灵机的路线,它试图学习访问模式来处理外部接口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/43418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8S中部署 Nacos 集群

1. 准备 GitK8Skubectlhelm 咱也没想到 K8S 部署系列能搞这么多次,我一个开发天天干运维的活,前端后端运维测试工程师实至名归。 2. 方案选择 https://github.com/nacos-group/nacos-k8s 我替你们看了一下,有好几种方式能部署&#xff…

【RHCE】基于用户认证和TLS加密的HTTP服务(HTTPS)

目录 一、创建用户账号 二、TLS加密 三、配置http服务子配置文件 四、创建访问http服务的文件夹以及输入重定向到文件 五、配置Linux本地仓库以及Windows下的本地仓库 六、基础操作 七、测试 一、创建用户账号 用户认证 # 创建两个账户 [rootlocalhost ~]# htpasswd -…

交叉熵损失函数的使用目的(很肤浅的理解)

第一种使用方法 import torch from torch import nn # Example of target with class indices loss nn.CrossEntropyLoss() input torch.randn(3, 5, requires_gradTrue) target torch.empty(3, dtypetorch.long).random_(5) output loss(input, target) output.backward(…

可控学习综述:信息检索中的方法、应用和挑战

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

js逆向第24例:FastMoss数据分析网站Fm-Sign加密字段破解

文章目录 一、前言二、定位关键参数三、代码实现一、前言 破解:FastMoss数据分析网站Fm-Sign加密字段 二、定位关键参数 先看一下网站加密字段是长什么样,如下图,老手估计一下子就能发现字段Fm-Sign:的密文类似md5加密后的结果。 直接全局搜索Fm-Sign:看来key也没有做混…

韦尔股份:深蹲起跳?

利润大增7倍,是反转信号还是回光返照? 今天我们聊聊光学半导体龙头——韦尔股份。 上周末,韦尔股份发布半年业绩预告,预计上半年净利润13至14亿,同比增幅高达 754%至 819%。 然而,回首 2023 年它的净利仅 …

Qt:15.布局管理器(QVBoxLayout-垂直布局、QHBoxLayout-水平布局、QGridLayout-网格布局、拉伸系数,控制控件显示的大小)

目录 一、QVBoxLayout-垂直布局: 1.1QVBoxLayout介绍: 1.2 属性介绍: 1.3细节理解: 二、QHBoxLayout-水平布局: 三、QGridLayout-网格布局: 3.1QGridLayout介绍: 3.2常用方法&#xff1a…

如何在 Windows 10 上恢复未保存的 Word 文档

您是否整晚都在处理一个重要的 word 文件,但忘记保存它了?本文适合您。在这里,我们将解释如何恢复未保存的 word 文档。除此之外,您还将学习如何恢复已删除的 word 文档。 从专业人士到高中生,每个人都了解丢失重要 W…

three完全开源扩展案例01-三角形渐变

演示地址 import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.jsconst box document.getElementById(box)const scene new THREE.Scene()const camera new THREE.PerspectiveCamera(75, box.clientWidth / box.client…

杜比全景声——空间音频技术

什么是杜比?是否是标清、高清、超清之上的更清晰的格式?杜比全景声 和传统多声道立体声的差别?杜比全景声音频的渲染方式?车载平台上杜比技术的应用? 杜比技术的起源 杜比实验室(Dolby Laboratories&…

大数据基础:Hadoop之MapReduce重点架构原理

文章目录 Hadoop之MapReduce重点架构原理 一、MapReduce概念 二、MapReduce 编程思想 2.1、Map阶段 2.2、Reduce阶段 三、MapReduce处理数据流程 四、MapReduce Shuffle 五、MapReduce注意点 六、MapReduce的三次排序 Hadoop之MapReduce重点架构原理 一、MapReduce概…

讲讲 JVM 的内存结构(附上Demo讲解)

讲讲 JVM 的内存结构 什么是 JVM 内存结构?线程私有程序计数器​虚拟机栈本地方法栈 线程共享堆​方法区​注意永久代​元空间​运行时常量池​直接内存​ 代码详解 什么是 JVM 内存结构? JVM内存结构分为5大区域,程序计数器、虚拟机栈、本地…

【AI前沿】深度学习:神经网络基础

文章目录 📑引言一、神经元和感知器1.1 神经元的基本概念1.2 感知器模型 二、多层感知器(MLP)2.1 MLP的基本结构2.2 激活函数的重要性2.3 激活函数2.4 激活函数的选择 三、小结 📑引言 深度学习是现代人工智能的核心技术之一&…

kotlin Flow 学习指南 (三)最终篇

目录 前言Flow生命周期StateFlow 替代LiveDataSharedFlow其他常见应用场景处理复杂、耗时逻辑存在依赖关系的接口请求组合多个接口的数据 Flow使用注意事项总结 前言 前面两篇文章,介绍了Flow是什么,如何使用,以及相关的操作符进阶&#xff…

如何挑选适合的需求池管理系统?10款优质工具分享

本文将分享10款优质需求池管理工具:PingCode、Worktile、Teambition、Epicor Kinetic、TAPD、SAP IBP、Logility、RELEX Solutions、JIRA、明道云。 在管理项目和产品需求时,正确的工具能够大幅提高效率与透明度。如何从众多需求池工具中选择最适合团队的…

自定义类型:联合体

像结构体一样,联合体也是由一个或者多个成员组成,这些成员可以是不同的类型。 联合体类型的声明 编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫:共⽤体。 输出结果: 联合体…

【基于R语言群体遗传学】-16-中性检验Tajima‘s D及连锁不平衡 linkage disequilibrium (LD)

Tajimas D Test 已经开发了几种中性检验,用于识别模型假设的潜在偏差。在这里,我们将说明一种有影响力的中性检验,即Tajimas D(Tajima 1989)。Tajimas D通过比较数据集中的两个𝜃 4N𝜇估计值来…

spark shuffle写操作——UnsafeShuffleWriter

PackedRecordPointer 使用long类型packedRecordPointer存储数据。 数据结构为:[24 bit partition number][13 bit memory page number][27 bit offset in page] LongArray LongArray不同于java中long数组。LongArray可以使用堆内内存也可以使用堆外内存。 Memor…

秋招突击——7/9——字节面经

文章目录 引言正文八股MySQL熟悉吗?讲一下MySQL索引的结构?追问:MySQL为什么要使用B树?在使用MySQL的时候,如何避免索引失效?讲一下MySQL的事物有哪几种特征?MySQL的原子性可以实现什么效果&…

【区块链+跨境服务】粤澳健康码跨境互认系统 | FISCO BCOS应用案例

2020 年突如其来的新冠肺炎疫情,让社会治理体系面临前所未见的考验,如何兼顾疫情防控与复工复产成为社会 各界共同努力的目标。区块链技术作为传递信任的新一代信息基础设施,善于在多方协同的场景中发挥所长,从 而为粤澳两地的疫情…