从 Seq2Seq 到 Attention:彻底改变序列建模

探究Attention机制和意力的起源。

简介

这篇博文[1]中,将讨论注意力机制的起源,然后介绍第一篇将注意力用于神经机器翻译的论文。由于上下文压缩、短期记忆限制和偏差,具有 2 个 RNN 的 Seq2Seq 模型失败了。该模型的 BLEU 分数随着序列长度的增加而不断降低。

alt

上图显示,随着句子长度的增加,具有 2 个 RNN 的 Seq2Seq 模型会急剧失败。它无法捕获大序列中的所有相关信息。这个问题催生了Attention机制。事实上,注意力的起源可以追溯到很久以前,这次我们学习了如何用数学方式表达它并将其用于机器翻译。

注意力机制的起源

如果我们能抛开一切,专注于我们的眼睛是如何工作的,我们就很容易找到注意力机制的起源。我们可以看到面前的多个物体,但我们会同时关注一个物体。这是我们的注意力提示。我们更重视一些感官输入,而不太重视某些感觉输入。我们可以使用非意志和意志提示来选择注意力的焦点。非意志线索基于环境中物体的显着性和显着性。使用基于变量选择标准的意志提示,这种形式的注意力更加刻意。随着受试者的自愿努力,它也会变得更加强大。

alt

查询、键和值

让我介绍一下查询、键和值的概念。在注意力机制的背景下,我们将意志线索称为查询。给定任何查询,注意力机制会通过注意力池对感觉输入进行偏向选择。这些感官输入在注意力机制的背景下称为值。更一般地说,每个值都与一个键配对,可以将其视为该感官输入的非意志提示。

alt

注意力集中

注意力池是指对注意力机制产生的注意力权重中包含的信息进行聚合或总结的过程。注意力评分函数用于根据输入序列的不同部分与当前解码步骤的相关性为其分配权重或分数。

alt

上图所示的机制是,对于特定查询,我们通过使用注意力评分函数来计算其与所有键的相关性。然后我们应用 softmax 运算来获得概率分布(注意力权重)。稍后我们根据这些注意力权重计算这些值的加权和。

注意力评分函数

有不同类型的注意力评分函数。有加性注意力、乘性注意力和缩放点积注意力。 Bahdanau 使用附加注意力作为评分函数。所以,我将在这里讨论它。缩放点积将在下一篇基于“Attention is all you need”论文的博客文章中进行解释。当查询和键是不同长度的向量时,我们使用附加注意力作为评分函数。

alt

给定一个查询 (q) 和一个键 (k),加性注意力评分函数首先连接 Wq 和 Wk。然后将其输入具有单个隐藏层的 MLP,其隐藏单元的数量为 h(一个超参数)。 Tanh 用作激活函数,偏置项被禁用。

Bahdanau Attention

Bahdanau 注意力及其附加注意力公式成为一种强大且广泛采用的注意力机制。它提供了捕获解码器和编码器状态之间复杂对齐的灵活性,使模型能够生成更准确和上下文感知的序列。这种架构允许模型自动(软)搜索源句子中与预测目标单词相关的部分。为每个单词分配注意力权重,以了解模型应该对每个单词给予多少“注意力”(即,对于每个单词,网络学习一个“上下文”)

alt

Bahdanau 注意力机制由三个主要组件组成:编码器、解码器和注意力评分函数。编码器由双向 RNN 组成,解码器由单向 RNN 组成。双向循环神经网络 (BRNN) 是一种 RNN 架构,可以向前和向后处理输入序列。它结合来自过去和未来上下文的信息,在每个时间步骤进行预测或生成输出,使模型能够捕获两个方向的依赖关系。上图中,BRNN 的隐藏状态用 h(t) 表示,单向 RNN 的隐藏状态用 s(t) 表示。

alt

注意力权重 a(t,T) 表示每个编码器隐藏状态与当前解码步骤的相关性。这些注意力分数量化了应该对输入序列的每个部分给予多少注意力。这是由另一个前馈网络计算的。该网络接受编码器和解码器的隐藏状态的输入并输出值 e。然后使用 softmax 函数对注意力分数进行归一化,将其转换为概率分布。 softmax 函数确保注意力分数总和为 1,从而可以将它们解释为权重或概率。

alt

在上图中,上下文向量被计算为编码器隐藏状态的加权和,以注意力分数作为权重。然后这个上下文向量被输入到解码器中。上下文向量与解码器先前的隐藏状态连接,并且该组合表示用作生成下一个输出标记的输入。

alt

总结

总之,注意力机制的起源和 Bahdanau 注意力的引入彻底改变了序列建模和自然语言处理领域。受人类认知过程启发的注意力概念使神经网络能够专注于输入序列的相关部分,并在序列生成任务期间做出明智的决策。从注意力机制的早期到 Bahdanau 注意力所带来的突破,这一历程为机器翻译、文本摘要、语音识别和其他基于序列的任务的进步铺平了道路。

Reference

[1]

Source: https://medium.com/@zaiinn440/from-seq2seq-to-attention-revolutionizing-sequence-modeling-67282ba82e83

本文由 mdnice 多平台发布

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

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

相关文章

【VPX630】青翼 基于KU115 FPGA+C6678 DSP的6U VPX通用超宽带实时信号处理平台

板卡概述 VPX630是一款基于6U VPX总线架构的高速信号处理平台,该平台采用一片Xilinx的Kintex UltraScale系列FPGA(XCKU115)作为主处理器,完成复杂的数据采集、回放以及实时信号处理算法。采用一片带有ARM内核的高性能嵌入式处理器…

【深度学习】pytorch——快速入门

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ pytorch快速入门 简介张量(Tensor)操作创建张量向量拷贝张量维度张量加法函数名后面带下划线 _ 的函数索引和切片Tensor和Numpy的数组之间的转换张量(tensor)与标量…

三十九、CANdelaStudio实践-19服务(ReadDTCInformation)

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的19服务(ReadDTCInformation)编辑,欢迎…

基于STM32C8T6的智能蓝牙小车控制设计

**单片机设计介绍,1655基于STM32C8T6的智能蓝牙小车控制设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计五、 程序文档 六、 结论七、 文章目录 一 概要 基于STM32C8T6的智能蓝牙小车控制设计是基于STM32微控制器和蓝牙模块开发的一种小型智能车辆控制系统…

力扣刷题-队列-滑动窗口最大值

239. 滑动窗口最大值 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 进阶: 在线性时间复杂度内解决此题? …

算法leetcode|86. 分隔链表(rust重拳出击)

文章目录 86. 分隔链表:样例 1:样例 2:提示: 分析:题解:rust:go:c:python:java: 86. 分隔链表: 给你一个链表的头节点 head 和一个特…

ubuntu 22.04 源码安装 apollo 8.0

对于其他的关于GPU的安装包需求,这里不再列出,因为我之前安装过,偷个懒就不写了,哈哈哈哈1, 安装docker 安装docker命令(这里的安装命令都是在docker官网,还有安装包): 1, 设置docker的apt仓库 # Add Do…

IDEA 如何运行 SpringBoot 项目

步骤一:配置 Maven 第一步:用 IDEA 打开项目,准备配置 maven 环境 ,当然如果本地没有提前配置好 maven,就用 IDEA 默认的配置即可 配置 maven 步骤 情况 1:如果本地没有配置过 maven,可以保持如…

Jetpack:025-Jetpack中的多点触控事件

文章目录 1. 概念介绍2. 使用方法2.1 缩放事件2.2 旋转事件2.3 平移事件2.4 综合事件 3. 示例代码4. 内容总结 我们在上一章回中介绍了Jetpack中滚动事件相关的内容,本章回中主要介绍 多点解控事件。闲话休提,让我们一起Talk Android Jetpack吧&#xf…

HTML基本概念:

HTML简介: 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。 1)、HTML 是用来描述网页的一种语言。 2)、HTML 不是一种编程语言&am…

笔记本电脑搜索不到wifi6 无线路由器信号

路由器更换成wifi6 无线路由器后,手机能搜索到这个无线信号,但是笔记本搜索不到这个无线信号,后网上搜索后发现是无线网卡驱动问题,很多无线网卡使用的是Intel芯片,Intel就此发布了公告,升级驱动就可以彻底…

我和云栖有个约会

开端,似曾相识的云栖 2023年阿里云云栖大会在云栖小镇举办,云栖小镇?在2020年的时候,曾经来过这里参加竞赛。时隔三年,身份变换,以开发者的身份,收到阿里云开发者社区的邀请,正好有…

linux 报错

输入 pip install -U openmim报错 有可能是服务器在其他国家,需要手动设置 把这三行复制到~/.bashrc里 export http_proxyhttp://127.0.0.1:3128 export https_proxy${http_proxy} export ftp_proxy${http_proxy}source ~/.bashrc

第57篇-某钩招聘网站加密参数分析【2023-10-31】

声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖! 文章目录 一、前言二、网站分析1.X-S-HEADER参数2.请求参数data3.响应机密值data一、前言 网址: aHR0cHM6Ly93d3cubGFnb3UuY29t…

[NSSRound#6 Team]check(Revenge)

文章目录 考点tarfile文件覆盖漏洞(CVE-2007-4559)PIN码计算 解题过程非预期解预期解 考点 tarfile文件覆盖漏洞(CVE-2007-4559) Python 中 tarfile 模块中的extract、extractFile和extractall 函数中的目录遍历漏洞 允许 用户协…

`.NET Web`新人入门必学项目`EarthChat`

.NET Web新人入门必学项目EarthChat EarthChat是一个基于.NET 7的实战项目,EarthChat提供了很多的最佳实践,EarthChat的目标也是成为一个很多人都喜欢的大型聊天业务系统,并且将结合SKAI大模型进行打造智能业务系统,在EarthChat中…

Pytorch 文本情感分类案例

一共六个脚本,分别是: ①generateDictionary.py用于生成词典 ②datasets.py定义了数据集加载的方法 ③models.py定义了网络模型 ④configs.py配置一些参数 ⑤run_train.py训练模型 ⑥run_test.py测试模型 数据集https://download.csdn.net/download/Victor_Li_/88486959?spm1…

narak靶机攻略

narak靶机攻略 扫描 渗透 cewl http://10.4.7.158 > use1.txthydra -L use1.txt -P use1.txt http-get://10.4.7.158/webdav -V -t 50 -fyamdoot:Swargcadaver http://10.4.7.158/webdav<?php $ip10.4.7.158; $port12138; $sock fsockopen($ip, $port); $descriptors…

识别flink的反压源头

背景 flink中最常见的问题就是反压&#xff0c;这种情况下我们要正确的识别导致反压的真正的源头&#xff0c;本文就简单看下如何正确识别反压的源头 反压的源头 首先我们必须意识到现实中轻微的反压是没有必要去优化的&#xff0c;因为这种情况下是由于偶尔的流量峰值,Task…

JavaScript的高级概述

还记得我们刚刚开始的时候给JavaScript的定义吗&#xff1f; JavaScript是一种高级的&#xff0c;面向对象的&#xff0c;多范式变成语言&#xff01; 这种定义JavaScript只是冰山一角&#xff01; JavaScript的高级定义 JavaScript是一种高级的、基于原型的、面向对象、多范…