从 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,一经查实,立即删除!

相关文章

构造函数、析构函数、虚函数、成员函数的详细解释

详细解释 构造函数析构函数虚函数成员函数 构造函数 构造函数(Constructor) 是一个特殊的成员函数,当一个对象被创建时,它会自动被调用。构造函数通常用于初始化对象的成员变量。 (就是先设定了一些规矩,到用的时候直…

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

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

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

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

力扣1502. 判断能否形成等差数列(Java,排序法)

Problem: 1502. 判断能否形成等差数列 文章目录 思路解题方法复杂度Code 思路 根据简单的数学知识易得等差数列公差相等。 解题方法 1.对数列排序 2.遍历数列,判断相邻两数的差是否相等。 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Cod…

设计交换机原理图前应先理清的框图

一、系统布局图 需重点考虑“外壳、电源、风扇、主板(包含MAC、CPU、PHY)、指示灯、管理网口/串口、电口/光口等连接器”在整机中的大致位置,在系统布局图中予以体现。 二、系统框图 (1)电源整体框图; &…

centos做个登录提醒

1.编辑脚本 sudo vim /usr/local/bin/login-notify.sh例如 login-notify.sh #!/bin/bash# 检查是否有一个原始SSH命令,并执行它 if [[ -n "$SSH_ORIGINAL_COMMAND" ]]; thenecho "SSH_ORIGINAL_COMMAND: $SSH_ORIGINAL_COMMAND" >> /va…

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

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

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

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

C#WPF工具提示(ToolTip)实例

本文演示C#WPF工具提示(ToolTip)实例 ToolTip ToolTip是当鼠标移到某个控件上后可以弹出提示的控件 属性说明 1、HasDropShadow 决定工具提示是否具有扩散的黑色阴影,使其和背后的窗口区别开来 2、Placement 使用PlacementMode枚举值决定如何放置工具提示。默认值是M…

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

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,可以保持如…

【学习笔记】CF930E Coins Exhibition

感觉像是之前做过的题的加强版😅 考虑容斥哪些区间不合法。直接处理比较困难,考虑将所有区间按右端点排序,并将端点离散化(将右端点 1 1 1,转化为左闭右开区间),设 d p i , j , k dp_{i,j,k} …

2.1 ppq量化pytorch->onnx

前言 torchvision中加载一个模型,转换为 onnx 格式、导出 quantized graph. code from typing import Iterableimport torch import torchvision from torch.utils.data import DataLoaderfrom ppq import BaseGraph, QuantizationSettingFactory, TargetPlatfor…

代碼隨想錄算法訓練營|第五十五天|1143.最长公共子序列、1035.不相交的线、53. 最大子序和。刷题心得(c++)

讀題 1143.最长公共子序列 自己看到题目的第一想法 看起來跟最長重複子数組很類似,但是要怎麼去推遞推的狀態沒有想法 看完代码随想录之后的想法 看完之後,大概釐清了整體想法,可以想成說,因為我們要考慮的是不連續的子序列&…

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

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

尚硅谷-kubernetes

目录 一、kubernetes概述1、kubernetes基本介绍**2、kubernetes 功能和架构** 一、kubernetes概述 1、kubernetes基本介绍 kubernetes,简称 K8s,是用 8 代替 8 个字符“ubernete”而成的缩写 kubernetes是一个开源的,用于管理云平台中多个…

HTML基本概念:

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

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

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