注意力机制(attention mechanism)

1、注意力

       灵长类动物的视觉系统接收了大量的感官输入,这些感官输入远远超出了大脑能够完全处理的能力。然而,并非所有刺激的影响都是同等的。意识的汇聚和专注使灵长类动物能够在复杂的视觉环境中将注意力引向感兴趣的物体,例如猎物和天敌。只关注一小部分信息的能力对进化更加有意义,使人类以生存和成功。

2、注意力经济

       自经济学研究稀缺资源分配以来,人们正处在“注意力经济”时代,即人类的注意力(大量人群的注意力)被视为可以交换的、有限的、有价值的且稀缺的商品。

3、注意力的稀缺性

       注意力是稀缺的,而环境中的干扰注意力的信息却并不少。

       读者的注意力具有稀缺性,是一种稀缺资源,读者正在阅读这篇文章(而忽略了其他文章),因此读者的注意力是用机会成本(与金钱类似)来支付的。

4、注意力的管理分配能力

      整个人类历史中,这种只将注意力引向感兴趣的一小部分信息的能力使人类的大脑能够更明智地分配资源来生存、成长和社交,例如发现天敌、寻找食物和伴侣。

5、生物学中的注意力提示

       注意力如何应用于视觉世界中?需要从双组件(two-component)框架讲起(该框架由威廉詹姆斯在1890年代提出)。在这个框架中,受试者基于非自主性提示和自主性提示有选择性地引导注意力的焦点。

6、注意力机制的框架

       自主性的与非自主性的注意力提示解释了人类的注意力的方式,下面来看看如何通过这两种注意力提示,用神经网络来设计注意力机制的框架。(设计的灵感和依据来源,实证科学)

7、注意力汇聚

       注意力机制框架下的注意力机制的主要组件:查询(自主性提示)和键(非自主性提示)之间的交互形成了注意力汇聚:注意力汇聚有选择性地汇聚了值(感官输入)以生成最终的输出。

       如下图所示,注意力机制通过注意力汇聚将查询(自主性提示)和键(非自主性提示)结合在一起,实现对值(感官输入,包含更广)的选择倾向,形成注意力输出。

8、注意力模型

       这一在这个框架下的模型,称为主要的讨论内容。由简单到复杂,介绍内容包括Nadaraya-Waston核回归模型(1964),注意力评分函数(具体介绍两个典型评分函数)、Bahdanau注意力(没有严格单向对齐限制的可微注意力模型)、多头注意力、自注意力、位置编码、Transformer。

8.1 注意力汇聚

       介绍注意力汇聚的更多细节,以便宏观上了解注意力机制在实践中的运作方式。

       具体以1964年提出的Nadaraya-Waston核回归模型为例,这是一个简单但完整的例子,可以用于演示具有注意力机制的机器学习。

8.1.1 平均汇聚

f\left ( x \right )=\frac{1}{n}\sum_{i=1}^{n}y_{i}

8.1.2 非参数注意力汇聚

f\left ( x \right )=\frac{1}{n}\sum_{i=1}^{n}\frac{K\left ( x-x_{i} \right )}{\sum_{j=1}^{n}K\left ( x-x_{j} \right )}y_{i}

f\left ( x \right )=\sum_{i=1}^{n}\alpha \left ( x,x_{i} \right )y_{i}

8.1.3 带参数注意力汇聚

f\left ( x \right )=\sum_{i=1}^{n}\alpha \left ( x,x_{i} \right )y_{i}

                                     =\frac{1}{n}\sum_{i=1}^{n}\frac{exp\left (-\frac{1}{2}\left ( \left (x-x_{i} \right )w \right )^{2} \right )}{\sum_{j=1}^{n}exp\left (-\frac{1}{2}\left ( \left (x-x_{j} \right )w \right )^{2} \right )}y_{i}

8.2 注意力评分函数

       注意力权重,即键对应的值的概率分布。从注意力的角度来看,分配给每个值\mathbf{v}_{i}的注意力权重取决于一个函数\mathbf{\alpha} \left ( \mathbf{q},\mathbf{k}_{i} \right ),这个函数以值所对应的键\mathbf{k}_{i}和查询\mathbf{q}作为输入。

f\left ( \mathbf{q},(\mathbf{k}_{1},\mathbf{v}_{1}) ,...,(\mathbf{k}_{m},\mathbf{v}_{m})\right )= \sum_{i=1}^{m}\mathbf{\alpha} \left ( \mathbf{q},\mathbf{k}_{i} \right )\mathbf{v}_{i}\in \mathbb{R}^{v}

图 计算注意力汇聚的输出为值的加权和

其中,查询\mathbf{q}和键\mathbf{k_{i}}的注意力权重\mathbf{\alpha} \left ( \mathbf{q},\mathbf{k}_{i} \right ),该权重是一个标量,是通过将注意力评分函数a将两个向量映射成标量a\left ( \mathbf{q},\mathbf{k}_{i}\right ),再经过softmax运算得到的:

\mathbf{\alpha} \left ( \mathbf{q},\mathbf{k}_{i} \right )=softmax\left ( a\left ( \mathbf{q},\mathbf{k}_{i}\right ) \right )=\frac{exp\left (a\left ( \mathbf{q},\mathbf{k}_{i}\right ) \right )}{\sum_{j=1}^{m}exp\left (a\left ( \mathbf{q},\mathbf{k}_{j}\right ) \right )}\in \mathbb{R}

加性注意力:

a\left ( \mathbf{q},\mathbf{k}\right )=\mathbf{w}_{v }^{\top}tanh\left ( \mathbf{W}_{q}\mathbf{q} +\mathbf{W}_{k}\mathbf{k}\right )\in \mathbb{R}

缩放点积注意力:

a\left ( \mathbf{q},\mathbf{k}\right )=\mathbf{q}^{\top}\mathbf{k}/\sqrt{d}

8.3 Bahdanau注意力

将上下文变量视为注意力集中的输出。

\mathbf{c}_{​{t}'}=\sum_{t=1}^{T}\alpha \left ( \mathbf{c}_{​{t}'},\mathbf{h}_{t}\right )\mathbf{h}_{t}

8.4 多头注意力

与其只使用单独一个注意力汇聚,我们可以用独立学习到的h组不同的线性投影来变换查询、键和值。

\mathbf{h}_{i}=f\left (\mathbf{ W}_{i}^{\left (q \right )}\mathbf{q},\mathbf{ W}_{i}^{\left (k \right )}\mathbf{k},\mathbf{ W}_{i}^{\left (v \right )}\mathbf{v}\right )\in \mathbb{R}^{p_{v}}

\mathbf{H}=\mathbf{W}_{o}\begin{bmatrix} \mathbf{h}_{1} \\ \vdots \\ \mathbf{h}_{h} \end{bmatrix}\in \mathbb{R}^{p_{o}}

8.5 自注意力

       每个查询都会关注所有的键-值对,并生成一个注意力输出。由于查询、键、值来自同一组输入,因此被称为自注意力(self-attention),也被称为内部注意力(intra-attention)。

       给定一个词元组成的输入序列\mathbf{x}_{1},\cdots ,\mathbf{x}_{n},其中任意\textbf{x}_{i}\in \mathbb{R}^{d}\left ( 1\leq i\leq n \right )。该序列的自注意输出为一个长度相同的序列\mathbf{y}_{1},\cdots ,\mathbf{y}_{n},其中

\mathbf{y}_{i}=f\left (\mathbf{ x}_{i},\left (\mathbf{ x}_{1},\mathbf{ x}_{1} \right ),\cdots ,\left (\mathbf{ x}_{n},\mathbf{ x}_{n} \right )\right )\in \mathbb{R}^{d}

8.6 位置编码

       在处理词元序列时,循环神经网络是逐个重复地处理词元的,而自注意力则因为并行计算而放弃了顺序操作。

       为了使用序列的顺序信息,通过在输入表示中添加位置编码来注入绝对的或相对的位置信息。编码(Encoding)通常是指将原始数据或信息转化为计算机可处理的格式的过程。位置编码可以通过学习得到,也可以直接固定。

       介绍一个具体编码方式:基于正弦函数和余弦函数的固定位置编码。

       基于正弦函数和余弦函数的固定位置编码是Transformer模型中用于捕获输入序列中词序信息的一种重要方法。在原始Transformer论文《Attention is All You Need》中提出的方案,位置编码(Positional Encoding)为序列中的每个位置生成一个与词嵌入维度相同的向量,并将这个向量直接加到该位置对应的词嵌入上。

       假设输入表示\textbf{X}\in \mathbb{R}^{n\times d}包含一个序列中n个词元的d维嵌入表示。位置编码使用相同形状的位置嵌入矩阵\textbf{P}\in \mathbb{R}^{n\times d},输出\mathbf{X}+\mathbf{P}。矩阵\mathbf{P}i行、第2j列和第2j+1列上的元素分别为:

p_{i,2j}=sin\left ( \frac{i}{10000^{2j/d}} \right )

p_{i,2j+1}=cos\left ( \frac{i}{10000^{2j/d}} \right ).

8.6 Transformer

       与CNN和RNN相比,自注意力同时具有并行计算和最短最大路径长度这两个优势。因此,使用自注意力来设计深度架构是很有吸引力的。Transformer模型完全基于注意力机制,没有任何卷积层或循环神经网络层。

       Transformer最初是应用于在文本数据上的序列到序列学习,现在已经推广到各种现代的深度学习中,例如语言、视觉、语音和强化学习领域。

图   transformer架构 

 上面两幅展示了Transformer的中文架构和英文架构,英文架构类的模块名称和具体代码一一对应,方便大家对照代码、理解和使用。从宏观角度来看,Transformer的编码器和解码器都是基于自注意力的模块叠加而成的。其中,编码器是由多个相同的层叠加而成的,每个层有两个子层,第一个子层是多头自注意力(multi-head self-attention),第二个子层是基于位置的前馈网络(pointwise feed-forward network)。解码器也是由多个相同的层叠加而成,除了编码器中描述的两个子层,解码器还有第三个子层,称为编码器-解码器注意力层(encoder-decoder attention)。

9、注意力模型分析

各个模型的原理、具体实现和效果分析:(待续)

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

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

相关文章

【XR806开发板试用】FreeRTOS创建任务测试

这篇来学习下,XR806开发板在FreeRTOS系统下创建两个任务测试,由于没有找到学习的文档,试着参考例程来测试。 一、复制工程 上篇测试了hello_demo的测试例程,直接复制这个工程文件,在此基础上修改 rootubuntu:/home/…

列表赋值,添加元素,删除元素,修改元素值

# append:附加,在列表中加入一个值 # remove(v):移除,在列表中删除原来的列表中存在的一个值 # 如果要删除原来的列表中不存在的一个值则会报错 ,例如: # ctrl / 可以多行注释 # 列表索引: p…

HarmonyOS官网案例解析——保存应用数据

介绍 本篇Codelab将介绍如何使用基础组件Slider,通过拖动滑块调节应用内字体大小。要求完成以下功能: 实现两个页面的UX:主页面和字体大小调节页面。拖动滑块改变字体大小系数,列表页和调节页面字体大小同步变化。往右拖动滑块字体…

Linux安装consul的两种方式(在线和离线)

目录 📚第一章 前言📗背景📗软件概述 📚第二章 部署📗在线部署📕需要root权限📕执行安装命令📕启动consul服务📕验证consul服务 📗离线部署📕下载…

[原创][R语言]股票分析实战[7]:时间转换 与 股票涨幅计算

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…

Ef Core花里胡哨系列(1) SafeDelete、ReadOnly、Audit 安全删除、只读、审计等

Ef Core花里胡哨系列(1) SafeDelete、ReadOnly、Audit 安全删除、只读、审计等 在软件设计中,软删除是一种常见的数据管理技术,用于标记和隐藏被删除的数据,而不是永久地从数据库中删除它们。软删除通常通过在数据表中添加一个额外的标志列&…

Server Send Event(基于Http协议的单向消息通信)

简介 Server-Sent Events(SSE)是一种简单的技术,允许服务器向客户端推送实时更新。在Spring Boot项目中,我们可以使用SseEmitter类来实现SSE功能。本文将详细介绍如何在Spring Boot项目中使用SSE,并给出一个使用示例。…

(九)上市企业实施IPD成功案例分享之——欧普

LED通用照明应用是LED照明应用市场的第一驱动力,由于LED照明技术发展迅速,以及成本快速下降,已成为全球主流照明光源。近年来,通过将智能控制模块嵌入LED通用照明终端,形成了具有自动控制、系统化控制等功能的智能照明…

听GPT 讲Rust源代码--library/panic_unwind

File: rust/library/panic_unwind/src/seh.rs 在Rust源代码中,rust/library/panic_unwind/src/seh.rs这个文件的作用是实现Windows操作系统上的SEH(Structured Exception Handling)异常处理机制。 SEH是Windows上的一种异常处理机制&#xff…

【Webpack】加载其他型模块

非模块化文件 非模块化文件指的是并不遵循任何一种模块标准的文件。 最常见的就是在 script标签引用jQuey及其各种插件 如何使用 Webpack打包这类文件呢? 其实只要直接引人即可,如: import ./jquery.min.js;但假如我们引人的非模块化文件是以隐式全局变量声明的方…

mongodb启动失败

● mongodb.service - High-performance, schema-free document-oriented database Loaded: loaded (/etc/systemd/system/mongodb.service; disabled; vendor preset: disabled) Active: inactive (dead) 1月 02 10:18:10 lcy mongod[7013]: ERROR: child process fail…

EDI 项目推进流程

EDI 需求确认 交易伙伴发来EDI对接邀请,企业应该如何应对? 首先需要确认EDI需求,通常包括传输协议和报文标准以及传输的业务单据类型。可以向交易伙伴发送以下内容: (中文版) 与贵司建立EDI连接需要使用…

软件黑盒测试

软件黑盒测试是一种测试方法,它不考虑被测试的软件的内部结构和代码,只关注输入和输出。黑盒测试的目的是验证软件是否符合规格说明书、用户需求和功能规范等要求。通常,黑盒测试包括以下几个步骤: 确定测试目标:确定测…

【温故而知新】vue组件间通信的实现方式

概念 Vue组件间通信的实现方式有以下几种: 父子组件通信:父组件可以通过props属性将数据传递给子组件,子组件可以通过$emit方法触发父组件定义的事件。子组件访问根组件:可以使用provide/inject来实现子组件访问根组件的数据。兄弟组件通信:可以通过一个共同的父组件作为…

【没有哪个港口是永远的停留~论文解读】stable diffusion

了解整个流程: 【第一部分】输入图像 x (W*H*3的RGB图像)【第一部分】x 经过编码器 生成 (latent 空间的表示) h*w*c (具体设置多少有实验)【第二部分】 逐步加噪得到 ,和噪声标签【第二部分】由 Unet( &#xff…

Kubernetes(k8s):Namespace详解

Kubernetes(k8s):Namespace详解 一、Namespace简介1.1 什么是Namespace1.2 Namespace的作用1.3 命名空间的分类 二、创建和管理Namespace2.1 创建Namespace2.2 管理Namespace 三、Namespace的实战应用3.1 部署多个项目3.2 环境隔离3.3 资源配…

从零开始配置kali2023环境:配置jupyter的多内核环境

在kali2023上面尝试用anaconda3,anaconda2安装实现配置jupyter的多内核环境时出现各种问题,现在可以通过镜像方式解决 1. 搜索镜像 ┌──(holyeyes㉿kali2023)-[~] └─$ sudo docker search anaconda ┌──(holyeyes㉿kali2023)-[~] └─$ sudo …

C++初阶——权限与继承

目录 一、C权限方面的问题 1.访问权限 2.继承机制 二、Cconst引用 const引用有以下几个特点 临时对象引用 常量引用成员变量 二、c引用空间相关问题 三.auto 一、C权限方面的问题 【C入门】访问权限管控和继承机制详解_权限继承功能-CSDN博客文章浏览阅读840次。(2)但…

uniapp-H5项目的坑

先推荐个插件库-非常好用:https://ext.dcloud.net.cn/ 一、uniapp h5 适配pc端 1、问题:屏幕尺寸在400px~960px之间页面排版错乱 2、解决方法:在page.json文件中 "globalStyle": {"navigationStyle": "custom&quo…

YOLOv8训练自己的数据集(超详细)

一、准备深度学习环境 本人的笔记本电脑系统是:Windows10 YOLO系列最新版本的YOLOv8已经发布了,详细介绍可以参考我前面写的博客,目前ultralytics已经发布了部分代码以及说明,可以在github上下载YOLOv8代码,代码文件夹…