深度学习之注意力机制(Attention Mechanism)和Seq2Seq

2023-11-04

这篇文章整理有关注意力机制(Attention Mechanism )的知识,主要涉及以下几点内容:

1、注意力机制是为了解决什么问题而提出来的?

2、软性注意力机制的数学原理;

3、软性注意力机制、Encoder-Decoder框架与Seq2Seq

4、自注意力模型的原理。

 

一、注意力机制可以解决什么问题?

神经网络中的注意力机制(Attention Mechanism)是在计算能力有限的情况下,将计算资源分配给更重要的任务,同时解决信息超载问题的一种资源分配方案。在神经网络学习中,一般而言模型的参数越多则模型的表达能力越强,模型所存储的信息量也越大,但这会带来信息过载的问题。那么通过引入注意力机制,在众多的输入信息中聚焦于对当前任务更为关键的信息,降低对其他信息的关注度,甚至过滤掉无关信息,就可以解决信息过载问题,并提高任务处理的效率和准确性。

这就类似于人类的视觉注意力机制,通过扫描全局图像,获取需要重点关注的目标区域,而后对这一区域投入更多的注意力资源,获取更多与目标有关的细节信息,而忽视其他无关信息。通过这种机制可以利用有限的注意力资源从大量信息中快速筛选出高价值的信息。

 

二、软性注意力机制的数学原理

在神经网络模型处理大量输入信息的过程中,利用注意力机制,可以做到只选择一些关键的的输入信息进行处理,来提高神经网络的效率,比如在机器阅读理解任务中,给定一篇很长的文章,然后就文章的内容进行提问。提出的问题只和段落中一两个句子有关,其余部分都是无关的,那么只需要把相关的片段挑出来让神经网络进行处理,而不需要把所有文章内容都输入到神经网络中。

(一)普通模式

用数学语言来表达这个思想就是:用X=[x1, x2, ..., xN]表示N个输入信息,为了节省计算资源,不需要让神经网络处理这N个输入信息,而只需要从X中选择一些与任务相关的信息输进行计算。软性注意力(Soft Attention)机制是指在选择信息的时候,不是从N个信息中只选择1个,而是计算N个输入信息的加权平均,再输入到神经网络中计算。相对的,硬性注意力(Hard Attention)就是指选择输入序列某一个位置上的信息,比如随机选择一个信息或者选择概率最高的信息。但一般还是用软性注意力机制来处理神经网络的问题。

注意力值的计算是任务处理中非常重要的一步,这里单独拿出来,完整的带注意力机制的神经网络工作流程在文章的第三部分。

注意力值的计算可以分为两步:(1)在所有输入信息上计算注意力分布;(2)根据注意力分布来计算输入信息的加权平均。

1、注意力分布

给定这样一个场景:把输入信息向量X看做是一个信息存储器,现在给定一个查询向量q,用来查找并选择X中的某些信息,那么就需要知道被选择信息的索引位置。采取“软性”选择机制,不是从存储的多个信息中只挑出一条信息来,而是雨露均沾,从所有的信息中都抽取一些,只不过最相关的信息抽取得就多一些。

于是定义一个注意力变量z∈[1, N]来表示被选择信息的索引位置,即z=i来表示选择了第i个输入信息,然后计算在给定了q和X的情况下,选择第i个输入信息的概率αi

其中σi构成的概率向量就称为注意力分布(Attention Distribution)。s(xi , q)是注意力打分函数,有以下几种形式:

其中W、U和v是可学习的网络参数,d是输入信息的维度。

2、加权平均

注意力分布αi表示在给定查询q时,输入信息向量X中第i个信息与查询q的相关程度。采用“软性”信息选择机制给出查询所得的结果,就是用加权平均的方式对输入信息进行汇总,得到Attention值:

下图是计算Attention值的过程图:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习之注意力机制(Attention Mechanism)和Seq2Seq 的相关文章

随机推荐

  • 力扣75.颜色分类 && 用异或swap时的注意事项。

    问题描述 在做 力扣75 颜色分类时候遇到的问题 荷兰国旗问题 代码正常写 但最后提交出现多次错误 代码 class Solution public void swap int a int b a b b a a b void sortCo
  • ERROR: Cannot create variant 'android-lint' after configuration ':sdk:debugRuntimeElements' has been

    最近项目添加model的时报错 看着错误信息眼熟 在此记录一下解决方法 错误信息 ERROR Cannot create variant android lint after configuration sdk debugRuntimeEl
  • thinkphp5学习路程 六 实现分页功能

    实现分页的功能具体的就是这个 paginate paginate 10 20 代表的含义就是一页显示10条数据 显示20页 public function test 查询数据库 result Db table user gt where i
  • 疯狂的联邦学习!研究员年薪百万?

    码农不容易 我这十几年一直在学习 停都停不下来 因为互联网技术发展真的造化弄人 上学那会儿 老师说C 有前途 因为大多数的企业都用它来写服务器程序 过了两年突然原来这个世界是Java的 遂挑灯恶补Spring 然而 技术永远在诞生新的 概念
  • python进行rar、tar、unzip解压

    参考文章链接 https blog csdn net qq 22865879 article details 120849457 1 python进行rar解压 1 需要使用Python的rarfile工具包 下载地址 http sourc
  • 成功打破 GPT-4 上限,新版 Claude 横空出世!

    公众号关注 GitHubDaily 设为 星标 每天带你逛 GitHub 前 OpenAI 团队成员在离职后 创办了 Anthropic 公司 今年 3 月份的时候 该公司推出一款名为 Claude 的应用 试图与 ChatGPT 一争高下
  • 前端工程化之Webpack优化

    打不垮我的 将使我更加坚强 尼采 大家好 我是 柒八九 好久没更文了 其实这段时间 一直没闲着 在准备一些比较重要的东西 忙着跑步 忙着学习 忙着xx 总之就是 一直在忙着 从未停歇 虽然 这段时间 没有文章的发布 其实 在私底下 已经有不
  • [教程]AMD芯片用VirtualBox安装MacOS虚拟机

    您的赞 是小熊更新的动力 本教程非常的简单 只需要几个步骤即可轻松安装好 效果图片 目前 大部分教程都是使用intel的芯片 Vmware软件进行安装macos 但实际上 使用VirtualBox安装MacOS同样也是一件简单的事情 笔者使
  • 【代码随想录】链表刷题

    链表 理论基础 移除链表元素 设计链表 动态单链表 动态双向链表 静态单链表 反转链表 两两交换链表中的节点 删除链表的倒数第 N 个节点 链表相交 环形链表 快慢指针 环形链表 II 很多重复的题参考 代码随想录 双指针法刷题 理论基础
  • 教你在mac上使用git(从安装到在gitee上操作)

    1git是啥 如何安装 分布式的代码版本管理工具 团队协作工具 不是一个人能搞定 开发linux gt 顺手做了个git 张三 gt 一段程序A java 李四 gt 一段程序B java 在两个不同的文件 最传统的手工人工合并 帮助我们进
  • python3对接godaddy API,实现自动更改域名解析(DDNS)

    python3对接godaddy API 实现自动更改域名解析 DDNS 文章开始前 先解释下如下问题 什么是域名解析 域名解析一般是指通过一个域名指向IP地址 A解析 然后我们访问这个域名就可以有直接访问这个IP地址的效果 只需要记住域名
  • matlab用字符串按名索引结构体(struct)的成员变量(field)

    matlab 一个训练函数中的若干记录用一个叫 records 的结构体返回 其中包括多个 loss 的 list vector 现用一个循环遍历这些 loss lists 画图 保存 Code getfield 用字符串取 struct
  • linux目录与文件相关操作

    一 目录相关操作 1 pwd 显示目前所在目录 pwd pwd P 显示真正的所在目录路径 而非链接文件路径 2 mkdir 建立新目录 mkdir lt 目录名 gt mkdir m lt 权限 gt lt 目录名 gt m指定目录的权限
  • [Load balancer does not contain an instance for the service xxx]和项目正常启动但注册不上nacos

    文章目录 可能一 可能二 可能一 远程服务没有注册到nacos 特点 springcloud使用nacos作为注册中心之项目正常启动但注册不上nacos 而且service中不显示端口号 springcloud使用nacos作为注册中心时
  • XSS-Game level 9

    第九关过滤的很严 使用编码绕过 先看源码 过滤了大小写 on 事件 script 以及一些属性 把参数拼接到 value值的时候 还编译了 htmlspecialchars 把预定义字符 lt gt 转换为HTML实体 也就是不起作用 并且
  • 2021 年最新基于 Spring Cloud 的微服务架构分析

    Spring Cloud 是一个相对比较新的微服务框架 2016 年才推出 1 0 的 release 版本 虽然 Spring Cloud 时间最短 但是相比 Dubbo 等 RPC 框架 Spring Cloud 提供的全套的分布式系统
  • C#:转换成中文数字

    代码
  • excel熵值法计算权重_如何用熵值法确定指标权重?

    记得点击蓝字关注我们哦 首先 要运用熵值法当然要理解它 搞懂它 熵值法是一种理论的数学方法 从计算机科学角度上看 属于一种算法 一 熵值法原理 熵的概念源于热力学 是对系统状态不确定性的一种度量 在信息论中 信息是系统有序程度的一种度量 而
  • [第一章 web入门]SQL注入-1

    拿到题目是一篇日记 是GET型请求方式 我们可以直接在url栏中注入数据 判断注入类型 页面有回显所以不是整型注入 id 1 and 1 2 id 1 页面无回显 判断为字符型注入 闭合符应该就是单引号 id 1 order by 4 无回
  • 深度学习之注意力机制(Attention Mechanism)和Seq2Seq

    这篇文章整理有关注意力机制 Attention Mechanism 的知识 主要涉及以下几点内容 1 注意力机制是为了解决什么问题而提出来的 2 软性注意力机制的数学原理 3 软性注意力机制 Encoder Decoder框架与Seq2Se