Transformer——Attention 注意力机制

注意力机制

Transformer的注意力机制借鉴了人类的注意力机制。人类通过眼睛的视觉单元去扫描图像,其中的重点区域会被大脑的神经元处理从而获得更多的信息,这是人类长期精华所获得的一种能力。

以论文中的例子来看,红色区域表示我们人脑视觉更为关注的区域。而Attention 机制则是模拟这一人脑机制,让计算机能够正确的从总舵信息中选择出对当前任务更为重要的信息
请添加图片描述

Attention 机制原理

人类视觉注意力机制的原理为:从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略不重要的信息

计算机的注意力机制模型就是从大量信息(Values)中筛选出少量的重要信息,这个重要信息对于另外一个信息(Query)是重要的。即注意力模型的主要作用就是通过Query从Values中筛选出重要信息

结合下图,Attention可以翻译为如下的描述,其将Query和KV(把value拆分为key-value信息,这两个值看作等同的)映射到输出上。其中Q(query)、K(key)、V(value)都是一个向量,输出 V , V^, V则是所有value的加权,其中权重是由Q和每个K计算出来的。
请添加图片描述

KV 是怎么来的?

对于上述图像来说,我们将其分割为不同的小块,其中每个块的向量化表示则是向量K
在这里插入图片描述

详细计算过程

刚刚提到,输出 V , V^, V是对所有value的加权,是由 Query 和每个 key 计算出来的,计算方法分为三步:

  1. 第一步:计算Q和K的相似度,可以用 F F F来表示: f ( Q , K i ) , i = 1 , 2 , . . . , n f(Q,K_i),i=1,2,...,n f(Q,Ki),i=1,2,...,n
    • 计算方法一般分为四种:
      • 点乘: f ( Q , K i ) = Q T K i f(Q,K_i)=Q^TK_i f(Q,Ki)=QTKi
      • 权重: f ( Q , K i ) = Q T K i W f(Q,K_i)=Q^TK_iW f(Q,Ki)=QTKiW
      • 拼接权重: f ( Q , K i ) = [ Q T K i ] W f(Q,K_i)=[Q^TK_i]W f(Q,Ki)=[QTKi]W
      • 感知器: f ( Q , K i ) = V T t a n h ( W Q + U K i ) f(Q,K_i)=V^Ttanh(WQ+UK_i) f(Q,Ki)=VTtanh(WQ+UKi)
  2. 第二布:将第一步得到的相似度进行SoftMax操作,进行归一化: α i = s o f t m a x ( F ( Q , K i ) d k ) \alpha_i=softmax(\frac{F(Q,K_i)}{\sqrt{d_k}}) αi=softmax(dk F(Q,Ki))
    • 这一步进行归一化是避免得到的相似度F1 = 50F2 = 1 之间的差值多大影响模型效果,归一化之后相似度可能就会变成F1 = 0.8F2 = 0.1
  3. 第三步:针对计算出来的权重 α i \alpha^i αi,对V中的所有values进行加权求和计算,得到Attention 向量: A t t e n t i o n = ∑ i = 1 m α i V i Attention=\sum_{i=1}^{m}\alpha_iV_i Attention=i=1mαiVi

注1:softmax函数原理:https://zhuanlan.zhihu.com/p/503321685
注2:为什么要除 d k \sqrt{d_k} dk :softmax函数的输入由key向量和query向量之间的点积组成,key向量和query向量的维度 越大,点积往往越大, 原文论中12个head对应的大小是64,作者在原论文中采用的补救措施,是将点积除以key和query维度的平方根

Attention计算实战

假设我们现在有下面这么一组数据,现在我们的问题是:腰围57其对应的体重是多少(query)

腰围(key)体重(value)
5140
5643
5848

对于单维度场景,我们认为57 腰围所对应的体重在43~48之间,同时考虑到51 腰围这个key,所以我们的公式可以表示为如下的形式:
f ( 57 ) = ∑ i = 1 3 α i V i = α ( 57 , 51 ) ∗ 40 + α ( 57 , 56 ) ∗ 43 + α ( 57 , 58 ) ∗ 48 f(57) =\sum_{i=1}^{3}\alpha_iV_i= \alpha(57,51)*40+\alpha(57,56)*43+\alpha(57,58)*48 f(57)=i=13αiVi=α(57,51)40+α(57,56)43+α(57,58)48

注: 同样的,对于多维向量,我们采用点乘的方式依然可以得到 f f f

Self-Attention 自注意力机制

Self-Attention是Attenion机制的特化。Self-Attention 同样也有着三个输入Q、K、V:对于Self-Attention,Q、K、V均来自句子X的词向量 x x x的线性转化。
请添加图片描述
我们这里采用Thinking Machines这里来举例:

  1. 第一步:两个单词 Thinking 和 Machines。通过线性变换,即 x 1 x_1 x1 x 2 x_2 x2 这两个向量分别和 W Q , W K , W V W^Q,W^K,W^V WQ,WK,WV 三个矩阵点乘得到 q 1 , q 2 , k 1 , k 2 , v 1 , v 2 q_1,q_2,k_1,k_2,v_1,v_2 q1,q2,k1,k2,v1,v2一共六个向量,两两拼接形成对应的QKV矩阵。
    请添加图片描述
  2. 第二步,MatMul:向量 q 1 , k 1 q_1,k_1 q1,k1 做点乘得到得分 112, q 1 , k 2 q_1,k_2 q1,k2 做点乘得到得分96。请添加图片描述

注:这里是通过 q 1 q_1 q1这个信息找到原始输入 x 1 , x 2 x_1,x_2 x1,x2中的重要信息

  1. 第三步和第四步,Scale + Softmax:对该得分进行规范,除以 d k = 8 \sqrt{d_k}=8 dk =8
    请添加图片描述
  2. 第五步,MatMul:用得分比例 [0.88,0.12] 乘以 [ v 1 , v 2 ] [v_1,v_2] [v1,v2]请添加图片描述
    值得到一个加权后的值,将这些值加起来得到 z 1 z_1 z1,拼接 z 1 , z 2 z_1,z_2 z1,z2得到Attention的值 Z = [ z 1 , z 2 ] Z=[z_1,z_2] Z=[z1,z2]

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

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

相关文章

C++并发编程 -3.同步并发操作

本文介绍如何使用条件变量控制并发的同步操作、C 并发三剑客,函数式编程 一.条件变量 1.概念 C条件变量(condition variable)是一种多线程编程中常用的同步机制,用于线程间的通信和协调。它允许一个或多个线程等待某个条件的发生…

HTTP 请求 400错误

问题 HTTP 请求 400错误 详细问题 客户端发送请求 public static UserInfo updateUserInfo(UserInfo userInfo) {// 创建 OkHttpClient 对象OkHttpClient client new OkHttpClient();// 创建请求体MediaType JSON MediaType.parse("application/json; charsetutf-8&…

- 项目落地 - 《选择项目工具的方法论》

本文属于专栏《构建工业级QPS百万级服务》 提纲: 选择大概率能完成业务目标的工具选择最适合的工具制作最适合的工具 本文所说的项目工具,泛指业务软件开发,所依赖的第三方提供的成熟的资源。包括但不限于开发语言、编辑工具、编译工具、三方…

python in Vscode

背景 对于后端的语言选择: python,java,JavaScript备选。 选择Python 原因:可能是非IT专业的人中,会Python的人比较多。 目的 之前使用的IDE是VSCODE,在WSL的环境下使用。现在需要在在WSL的VSCODE下使…

数据集合

目录 并集 union union all 区别 交集 intersect 差集 minus 错误操作 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 常用的数学集合有:交集、并集、差集、补集 每一次查询实际上都会返回数据集合,…

51单片机编程应用(C语言):DS1302实时时钟

单片机计时的缺陷: 1.他的精度不高,没有时钟芯片精度高, 2.会占用单片机CPU的时间, 3.单片机的时钟无法掉电继续运行,(最大的缺点) DS1302芯片内部有备用电池,可以掉电继续计时…

算法刷题:长度最小的子数组

长度最小的子数组 .题目链接题目详情算法原理滑动窗口定义指针进窗口判断出窗口 我的答案 . 题目链接 长度最小的子数组 题目详情 算法原理 滑动窗口 这道题,我们采用滑动窗口的思想来解决,具体步骤如图所示 定义指针 如图所示,两个指针都需要从左往右进行遍历,因此初始值…

为何重复造轮子

重复造轮子,意思是说,一个项目本身存在开源组件,但开发团队还是选择重新手写一套组件库或框架的情况,这在软件业界比比皆是。 下面说下游戏项目里重复造轮子的几点原因。 一,精简化 一般开源项目为了适应多场景多业…

永久禁止windows自动更新方法

文章目录 前言一、打开本地组策略编辑器二、禁用windows更新总结 前言 每次打开电脑,右下角就会弹出设备更新提示,看着令人烦恼,并且更新可能导致电脑设置发生改变甚至是卡顿,所以为了自己方便于是出了禁用电脑更新的办法&#x…

阿里云ECS香港服务器性能强大_安全可靠香港免备案服务器

阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品,中国电信CN2高速网络高质量、大规格BGP带宽,运营商精品公网直连中国内地,时延更低,优化海外回中国内地流量的公网线路,可以提高国际业务访问质量。阿里云服务…

VMware Workstation下载安装

一、VMware Workstation的简介 VMware Workstation是一种虚拟化软件,允许用户在单台PC上创建和运行多个虚拟机。它支持不同操作系统的同时运行,提供灵活的网络配置和资源管理,方便开发、测试和部署应用程序,提高工作效率和资源利用…

安卓实现简单砸地鼠游戏

效果 布局 <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"a…