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

news2025/4/17 23:14:03

探究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.coloradmin.cn/o/1156372.html

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

相关文章

如何用ChatGPT进行“论文翻译+润色”?

2024年申报国自然项目基金撰写及技巧最新基于Citespace、vosviewer、R语言的文献计量学可视化分析技术及全流程文献可视化SCI论文高效写作方法 GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图 不夸张说,只要调教好咒语,就必然会形成一场论文翻译润色…

Spring Security的基本授权配置方式

参考:方法安全(Method Security) :: Spring Security Reference (springdoc.cn)、 授权 HttpServletRequest :: Spring Security Reference (springdoc.cn) 前文为:Spring Security:授权框架 一、HttpServletRequest…

xcode 安装及运行个人app编程应用

1.xcode 介绍 Xcode 是运行在操作系统Mac OS X上的集成开发工具(IDE),由Apple Inc开发。Xcode是开发 macOS 和 iOS 应用程序的最快捷的方式。Xcode 具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成 2.xcode 下…

Redis统计大法:挖掘数据的四重宝藏【redis第五部分】

Redis统计大法:挖掘数据的四重宝藏 前言第一:redis集合统计简介第二:聚合统计->数据的综合分析总和(Sum):平均值(Average)中位数(Median) 第三&#xff1a…

urlPattern配置和request

urlPattern配置 Servlet类编写好后,想要被访问到,就需要配置其访问路径(urlPattern) 一个Servlet可以配置多个urlPattern: WebServlet(urlPatterns{"/demo","/demo2"}) urlPattern配置…

html获取网络数据,列表展示 一

html获取网络数据&#xff0c;列表展示 js遍历json数组中的json对象 image.png || - 判断数据是否为空&#xff0c;为空就显示 - <!DOCTYPE html> <html><head><meta charset"utf-8"><title>网页列表</title></head><b…

FreeRTOS深入教程(空闲任务和Tick中断深入分析)

文章目录 前言一、空闲任务源码分析二、Tick中断深入分析总结 前言 本篇文章主要带大家深入分析空闲任务和Tick中断的作用。 一、空闲任务源码分析 在启动调度器时会创建出空闲任务&#xff1a; /* 启动调度器 */ vTaskStartScheduler();在空闲任务中会调用到prvCheckTasks…

k8s pod获取ip地址过程

在学习 Kubernetes 网络模型的过程中&#xff0c;了解各种网络组件的作用以及如何交互非常重要。本文就介绍了各种网络组件在 Kubernetes 集群中是如何交互的&#xff0c;以及如何帮助每个 Pod 都能获取 IP 地址。 Kubernetes 网络模型的核心要求之一是每个 Pod 都拥有自己的 …

oracle 重启步骤及踩坑经验

oracle 重启步骤及踩坑经验 标准重启步骤 切换到oracle用户 su - oracle关闭监听 lsnrctl stop杀掉oracle有关进程 ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCALNO|awk {print $2}|xargs kill -9#查询pid ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCALNO|awk {p…

Linux--jdk、tomcat、环境配置,mysql安装、后端项目搭建

前言 上期我们讲到了安装linux虚拟机&#xff0c;这期我们来讲一下如何使用xshell和xftp在linux系统上搭建我们的单体项目 一、软件的传输 1.1 xftp Xftp是一款功能强大的文件传输软件&#xff0c;用于在本地主机和远程服务器之间进行快速、安全的文件传输。它是由南京帆软科…

【MongoDB】Windows 安装MongoDB 6.0

一、下载安装包 安装包下载地址https://www.mongodb.com/try/download/community这里我选择的是 二、解压并安装 1、解压 这里我将压缩包解压到了D盘&#xff0c;并重命名成了mongodb&#xff0c;解压后的目录如下&#xff1a; 2、创建配置文件 在D:\mongodb下新建conf目录…

数据库面试题整理

目录 MySQL事务隔离级别有哪几种&#xff1f;MySQL的常用的存储引擎有哪些&#xff1f;特点是什么&#xff0c;分别适合什么场景下使用MySQL有数据缓存吗&#xff1f;原理是怎么样的&#xff1f;InnoDB的缓冲池默认是开启的吗&#xff1f;基本原理是什么&#xff1f;会有脏数据…

Flutter 01 目录结构入门

一、Flutter目录结构&#xff1a; 二、Flutter入口文件、入口方法&#xff1a; 三、Flutter Demo&#xff1a; demo1&#xff1a; import package:flutter/material.dart;//MaterialApp 和 Scaffold两个组件装饰App void main() {runApp(MaterialApp(home: Scaffold(appBar: A…

当函数参数为一级指针,二级指针

当函数参数为一级指针&#xff0c;二级指针 在讲述内容之前&#xff0c;先讲四点重要知识 1.当传入参数时&#xff0c;函数形参会立即申请形参的内存空间&#xff0c;函数执行完毕后&#xff0c;形参的内存空间立即释放掉。 1.指针是存放其他变量地址的变量。指针有自己的内…

腾讯云轻量应用镜像、系统镜像、Docker基础镜像、自定义镜像和共享镜像介绍

腾讯云轻量应用服务器镜像类型分为应用镜像、系统镜像、Docker基础镜像、自定义镜像和共享镜像&#xff0c;腾讯云百科txybk.com来详细说下不同镜像类型说明和详细介绍&#xff1a; 轻量应用服务器镜像类型说明 腾讯云轻量应用服务器 应用镜像&#xff1a;独有的应用镜像除了包…

[threejs]让导入的gltf模型显示边框

边框1效果图如下&#xff1a; 代码如下&#xff1a; const gltfLoader1 new GLTFLoader();gltfLoader1.load( "/assets/box/1/scene.gltf" ,function(gltf){let model gltf.scene;model.scale.set(3,3,3)// scene1.add(model);// renderer1.render(scene1, camera…

SaaS 出海,如何搭建国际化服务体系?(一)

防噎指南&#xff1a;这可能是你看到的干货含量最高的 SaaS 出海经验分享&#xff0c;请准备好水杯&#xff0c;放肆食用&#xff08;XD。 当越来越多中国 SaaS 企业选择开启「国际化」副本&#xff0c;出海便俨然成为国内 SaaS 的新角斗场。 LigaAI 观察到&#xff0c;出海浪…

CSS3表格和表单样式

在传统网页中&#xff0c;表格主要用于网页布局&#xff0c;因此也成为网页编辑的主要工具&#xff1b;在标准化网页设计中&#xff0c;表格的主要功能是显示数据&#xff0c;也可适当辅助结构设计。本章主要介绍如何使用CSS控制表格和表单的显示效果&#xff0c;如表格和表单的…

在ffmpeg中,如何把h264转换为rgb格式

在ffmpeg中&#xff0c;网络视频流h264为什么默认的转为YUV而不是其他格式 文章中介绍了&#xff0c;h264解码的时候是直接解码为yuv的&#xff0c;如果在使用的过程中 需要用到rgb的格式&#xff0c;我们该如何来转换这种格式呢&#xff1f; 在上面的文章中&#xff0c;我们已…

基于YOLOv8模型暗夜下人脸目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8模型暗夜下人脸目标检测系统可用于日常生活中检测与定位黑夜下人脸目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法…