Transformer梳理与总结
其实transformer的成功也是源于对注意力机制的应用,其本质上还是可以归因于注意力机制,首先我们先来了解一下什么是注意力机制。在注意力机制的背景下,自主性提示被称为查询(query),给定任何查询,注意力机制通过注意力汇聚(attention pooling) 将选择引导至感官输入(sensory inputs,例如中间特征表示)
通过给定的查询,与键值进行计算,得到不同的注意力权重,这里注意力汇聚操作是得到由查询和键值计算出的权重先进行加权 然后再求和 ,得到加权平均值,根据加权方式的不同又可以分为非参注意力汇聚和带参注意力汇聚
非参数注意力汇聚(Nadaraya-Watson kernel regression)
x是查询, ( x i , y i ) (x_i,y_i) (xi,yi)是键值对,将查询x和键值对建模为注意力权重(attention weight),那么注意力汇聚操作就是对 y i y_i yi的加权平均
α ( x , x i ) = = > f ( x ) = ∑ i = 1 n K ( x − x i ) ∑ j = 1 n K ( x − x j ) y i , \alpha(x,x_i) ==>f(x)=\sum_{i=1}^n\frac{K(x-x_i)}{\sum_{j=1}^nK(x-x_j)}y_i, α(x,xi)==>f(x)=i=1∑n∑j=1nK(x−xj)K(x−xi)yi,
f ( x ) = ∑ i = 1 n α ( x , x i ) y i , f(x)=\sum_{i=1}^n\alpha(x,x_i)y_i, f(x)=i=1∑nα(x,xi)yi,
为了便于理解,可以借鉴这个高斯核的例子
带参数注意力汇聚
从上述高斯核的例子出发,在计算查询x和键值x_i之间的距离时,加入权重参数
f ( x ) = ∑ i = 1 n α ( x , x i ) y i = ∑ i = 1 n exp ( − 1 2 ( ( x − x i ) w ) 2 ) ∑ j = 1 n exp ( − 1 2 ( ( x − x j ) w ) 2 ) y i = ∑ i = 1 n softmax ( − 1 2 ( ( x − x i ) w ) 2 ) y i . \begin{aligned} f(x)& =\sum_{i=1}^n\alpha(x,x_i)y_i \\ &=\sum_{i=1}^n\frac{\exp\left(-\frac12((x-x_i)w)^2\right)}{\sum_{j=1}^n\exp\left(-\frac12((x-x_j)w)^2\right)}y_i \\ &=\sum_{i=1}^n\text{softmax}\left(-\frac12((x-x_i)w)^2\right)y_i. \end{aligned} f(x)=i=1∑nα(x,xi)yi=i=1∑n∑j=1nexp(−21((x−xj)w)2)exp(−21((x−xi)w)2)yi=i=1∑nsoftmax(−21((x−xi)w)2)yi.
注意力评分函数
其实刚才讲的是两种注意力汇聚的方式,也就是说算一下查询值和键值之间的相似性,然后加权到y上。这里讲注意力汇聚的计算又进行了细化,通过softmax得到概率值之后再加权到值上,最终得到输出。注意力评分函数也就是研究怎么评判键值和查询值之间的相关性
加性注意力(additive attention)
当查询和键是不同长度的矢量时(masked-softmax),可以使用加性注意力作为评分函数
a ( q , k ) = w v ⊤ t a n h ( W q q + W k k ) ∈ R , a(\mathbf{q},\mathbf{k})=\mathbf{w}_v^\top\mathrm{tanh}(\mathbf{W}_q\mathbf{q}+\mathbf{W}_k\mathbf{k})\in\mathbb{R}, a(q,k)=wv⊤tanh(Wqq+Wkk)∈R,
将查询和键连结起来后输入到一个多层感知机(MLP)中, 感知机包含一个隐藏层,其隐藏单元数是一个超参数h,通过使用tanh作为激活函数,并且禁用偏置项
缩放点积注意力(scaled dot-product attention)
点积操作要求查询和键具有相同的长度,假设查询和键的所有元素都是独立的随机变量, 并且都满足零均值和单位方差,其评价函数为
a ( q , k ) = q ⊤ k / d . a(\mathbf{q},\mathbf{k})=\mathbf{q}^\top\mathbf{k}/\sqrt d. a(q,k)=q⊤k/d.
多头注意力
多头也就是说,独立学习多组注意力结果,然后再汇聚起来,相当于说,增加多样性,从多个角度看问题
h i = f ( W i ( q ) q , W i ( k ) k , W i ( v ) v ) ∈ R p v , \mathbf{h}_i=f(\mathbf{W}_i^{(q)}\mathbf{q},\mathbf{W}_i^{(k)}\mathbf{k},\mathbf{W}_i^{(v)}\mathbf{v})\in\mathbb{R}^{p_v}, hi=f(Wi(q)q,Wi(k)k,Wi(v)v)∈Rpv,
W o [ h 1 ⋮ h h ] ∈ R p o . \mathbf{W}_o\begin{bmatrix}\mathbf{h}_1\\\vdots\\\mathbf{h}_h\end{bmatrix}\in\mathbb{R}^{p_o}. Wo h1⋮hh ∈Rpo.
如上式所示,给定一组qkv 就可以得到一个注意力结果h,且每个qkv都由权重w来决定,最后在汇聚时,也要乘以权重w,这些权重都是可学习参数
自注意力和位置编码
我觉得这事其实很简单,自注意力也就是说,q k v 均有x乘以权重得到,然后使用上述的注意力汇聚机制进行计算
Transformer
Transformer其实就是在完全基于注意力机制的基础上,构建了一个编码器-解码器架构
每层都使用了残差连接,这里使用的layer normalization(关于为什么不适用batch normalizetion(13分钟)),之后添加了一个FFN层,等价于两层核窗口为1的一维卷积层。之后编码器的输出作为解码器种多头注意力的V(值)和K(键),而q呢,则是通过mask-attention逐个输入进来,mask机制让其只考虑要预测位置之前所有位置的特征值
VIT
VIT证明了模型越大效果越好,成为了transformer在CV领域应用的里程碑著作,当拥有足够多的数据进行预训练的时候,ViT的表现就会超过CNN
从上图可以看出,这个网络只有编码模块,并没有解码模块,通过多层编码之后,接一个MLP用于分类任务,作者只在论文中,证明了VIT可以在分类任务上,有很好的效果,对于分割、检测等其他任务,作者没有验证。
DETR
将transformers运用到了object detection领域,并且取代了非极大值抑制、anchor generation
作者首先通过CNN作为backbone 进行image embeding,然后再通过一个transformer 的encoder-decoder结构,之后通过FFN层预测目标位置,作者提出一张图中预测100个框,由于不做nms,作者采用的是匈牙利算法,进行最优匹配,每个true anchor都从这个100个预测结果中匹配到一个最优的预测,然后再进行后续损失的计算
MoCo
这篇文章是基于对比学习机制,首先介绍一下对比学习
x i x_i xi属于正样本,其余的都属于负样本,上面画的 x i x_i xi通过 T 1 T_1 T1进行特征提取得到的是正样本,称为anchor,这里也作为q,通过 T 2 T_2 T2进行特征提取的作为 x i x_i xi的一个正样本,因为正样本和负样本都是相对于anchor来说的,因此其余的负样本也应该经过 T 2 T_2 T2进行特征提取,作为k
字典里面的K值都应该由相同或者相似的编码器得到,这里作者就提出了动量对比学习的概念。同时为了避免字典过大,作者讲数据结构中队列的思想应用进来,新的batch数据进来时,之前的数据就丢出去
作者选用个体判别的方法作为代理任务去训练整个网络,然后再将其迁移到分类任务中
待梳理
Transformer从数学中解读 https://www.bilibili.com/video/BV1ea4y197dH/?spm_id_from=333.1007.tianma.1-1-1.click&vd_source=aabedda8f33d60215e3856e026901625
零基础多图详解图神经网络 https://www.bilibili.com/video/BV1iT4y1d7zP/?spm_id_from=333.999.0.0&vd_source=aabedda8f33d60215e3856e026901625
SWIN Transformer https://www.bilibili.com/video/BV13L4y1475U/?spm_id_from=333.999.0.0&vd_source=aabedda8f33d60215e3856e026901625
迁移学习 https://www.bilibili.com/video/BV1X8411f7q1/?spm_id_from=333.999.0.0&vd_source=aabedda8f33d60215e3856e026901625
RT-Detr https://www.bilibili.com/video/BV1Nb4y1F7k9/?spm_id_from=333.1007.tianma.1-1-1.click&vd_source=aabedda8f33d60215e3856e026901625
MAP评价函数
RESnest 分散注意力网络
Mamba
大核CNN
参考资料
- 动手深度学习 https://zh-v2.d2l.ai/chapter_attention-mechanisms/attention-cues.html
相关文章:
Transformer梳理与总结
其实transformer的成功也是源于对注意力机制的应用,其本质上还是可以归因于注意力机制,首先我们先来了解一下什么是注意力机制。在注意力机制的背景下,自主性提示被称为查询(query),给定任何查询,注意力机制…...
php之 校验多个时间段是否重复
参考网址 https://www.kancloud.cn/xiaobaoxuetp/mywork/3069416 https://segmentfault.com/a/1190000020487996 PHP判断多个时间段是否存在跨天或重复叠加的场景 /*** PHP计算两个时间段是否有交集(边界重叠不算)** param string $beginTime1 开始时间…...
atoi函数的模拟实现
这里强力推荐一篇文章 http://t.csdnimg.cn/kWuAm 详细解析了atoi函数以及其模拟实现,我这里就不说了。 这里作者先把自己模拟的代码给大家看一下。 int add(char* arr) {char* arr2 arr;while (*arr!-48){arr;}arr--;int sum 0;int n 0;while (arr ! (arr2-…...
编程笔记 html5cssjs 009 HTML链接
编程笔记 html5&css&js 009 HTML链接 一、HTML 链接二、文本链接三、图片链接四、HTML 链接- id 属性五、锚点链接六、HTML 链接 - target 属性七、属性downloadhrefpingreferrerpolicyreltargettype 八、操作小结 网页有了链接,就可根据需要进行跳转。纸质…...
Vue实现导出Excel表格,提示“文件已损坏,无法打开”的解决方法
一、vue实现导出excel 1、前端实现 xlsx是一个用于读取、解析和写入Excel文件的JavaScript库。它提供了一系列的API来处理Excel文件。使用该库,你可以将数据转换为Excel文件并下载到本地。这种方法适用于在前端直接生成Excel文件的场景。 安装xlsx依赖 npm inst…...
分发糖果,Java经典算法编程实战。
🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…...
鸿蒙原生应用再添新丁!中国移动 入局鸿蒙
鸿蒙原生应用再添新丁!中国移动 入局鸿蒙 来自 HarmonyOS 微博1月2日消息,#中国移动APP启动鸿蒙原生应用开发#,拥有超3亿用户的中国移动APP宣布,正式基于HarmonyOS NEXT启动#鸿蒙原生应用#及元服务开发。#HarmonyOS#系统的分布式…...
一个人能不能快速搭建一套微服务环境
一、背景 大型软件系统的开发现在往往需要多人的协助,特别是前后端分离的情况下下,分工越来越细,那么一个人是否也能快速搭建一套微服务系统呢? 答案是能的。看我是怎么操作的吧。 二、搭建过程 1、首先需要一套逆向代码生成工…...
计算机毕业设计------经贸车协小程序
项目介绍 本项目分为三种用户类型,分别是租赁者,车主,管理员用户; 管理员用户包含以下功能: 管理员登录,个人中心,租赁者管理,车主管理,赛事活动管理,车类别管理,租车管理,租车订单管理,车辆出售管理,购买订单管理,…...
数据结构OJ实验11-拓扑排序与最短路径
A. DS图—图的最短路径(无框架) 题目描述 给出一个图的邻接矩阵,输入顶点v,用迪杰斯特拉算法求顶点v到其它顶点的最短路径。 输入 第一行输入t,表示有t个测试实例 第二行输入顶点数n和n个顶点信息 第三行起&…...
你的第一个JavaScript程序
JavaScript,即JS,JavaScript是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言…...
CMake入门教程【基础篇】列表操作(list)
文章目录 1. 定义列表2. 获取列表长度3. 获取列表元素4. 追加元素到列表末尾5. 插入元素到指定位置6. 移除指定位置的元素7. 移除指定值的元素8. 替换指定位置的元素9. 迭代列表元素 #mermaid-svg-IAjFPWI6IXEGYmuU {font-family:"trebuchet ms",verdana,arial,sans-…...
普中STM32-PZ6806L开发板(HAL库函数实现-读取内部温度)
简介 主芯片STM32F103ZET6,读取内部温度其他知识 内部温度所在ADC通道 温度计算公式 V25跟Avg_Slope值 参考文档 stm32f103ze.pdf 电压计算公式 Vout Vref * (D / 2^n) 其中Vref代表参考电压, n为ADC的位数, D为ADC输入的数字信号。 实现…...
普中STM32-PZ6806L开发板(使用过程中的问题收集)
Keil使用ST-Link 报错 Internal command error 描述: 在某一次使用过程中,前面都是正常使用, Keil在烧录时报错Internal command error, 试了网上的诸多方式, 例如 升级固件;ST-Link Utility 清除;Keil升级到最新版本;甚至笔者板子的Micro头也换了,因为坏…...
八股文打卡day12——计算机网络(12)
面试题:HTTPS的工作原理?HTTPS是怎么建立连接的? 我的回答: 1.客户端向服务器发起请求,请求建立连接。 2.服务器收到请求之后,向客户端发送其SSL证书,这个证书包含服务器的公钥和一些其他信息…...
自然语言处理2——轻松入门情感分析 - Python实战指南
目录 写在开头1.了解情感分析的概念及其在实际应用中的重要性1.1 情感分析的核心概念1.1.1 情感极性1.1.2 词汇和上下文1.1.3 情感强度1.2 实际应用中的重要性 2. 使用情感分析库进行简单的情感分析2.1 TextBlob库的基本使用和优势2.1.1 安装TextBlob库2.1.2 文本情感分析示例2…...
pygame学习(一)——pygame库的导包、初始化、窗口的设置、打印文字
导语 pygame是一个跨平台Python库(pygame news),专门用来开发游戏。pygame主要为开发、设计2D电子游戏而生,提供图像模块(image)、声音模块(mixer)、输入/输出(鼠标、键盘、显示屏)…...
前端面试
1. 什么是MVVM,MVC,MVP模型? 软件架构模式: MVC: M: 模型,拉取数据的类。 V: 视图,展现给用户的视觉效果。 C: 控制器,通知M拉取数据,并且给V。 > MV…...
Spring Boot快速搭建一个简易商城项目【完成登录功能且优化】
完成登录且优化: 未优化做简单的判断: 全部异常抓捕 优化:返回的是json的格式 BusinessException:所有的错误放到这个容器中,全局异常从这个类中调用 BusinessException: package com.lya.lyaspshop.exce…...
KG+LLM(一)KnowGPT: Black-Box Knowledge Injection for Large Language Models
论文链接:2023.12-https://arxiv.org/pdf/2312.06185.pdf 1.Background & Motivation 目前生成式的语言模型,如ChatGPT等在通用领域获得了巨大的成功,但在专业领域,由于缺乏相关事实性知识,LLM往往会产生不准确的…...
使用anaconda创建爬虫spyder工程
1.由于每个工程使用的环境都可能不一样,因此一个好的习惯就是不同的工程都创建属于自己的环境,在anaconda中默认的环境是base,我们现在来创建一个名为spyder的环境,专门用于爬虫工程: //括号中名字,代表当…...
网络通信(7)-TCP协议解析
目录 一、定义 二、主要特点 三、报文格式 四、工作方式...
win32 WM_MENUSELECT消息学习
之前写了一些win32的程序,处理菜单单击都是处理WM_COMMAND消息,通过 LOWORD(wParam) 获取菜单ID,判断单击的是哪个菜单项; 还有一些其他菜单消息; 当在菜单项中移动光标或鼠标,程序会收到许多WM_MENUSELEC…...
Java学习苦旅(十六)——List
本篇博客将详细讲解Java中的List。 文章目录 预备知识——初识泛型泛型的引入泛型小结 预备知识——包装类基本数据类型和包装类直接对应关系装包与拆包 ArrayList简介ArrayList使用ArrayList的构造ArrayList常见操作ArrayList遍历 结尾 预备知识——初识泛型 泛型的引入 我…...
python爬虫实现获取招聘信息
使用的python版本: 3.12.1 selenium版本:4.8.0 urllib版本:1.26.18 from selenium import webdriver from selenium.webdriver import ActionChains import timeimport re import xlwt import urllib.parsedef get_html(url):chrome_drive…...
模块电源(七):LDO 应用
1、Typical application circuit LDO 典型应用电路如下图所示: 2、High Output Current Positive Voltage Regulator 通过 PNP 型三极管 Tr1 ,可以提高 LDO 的输出电流能力,电路如下图所示: 设流过 R1 的电流为 ,当 …...
Redis命令---Hash(哈希)篇 (超全)
目录 1.Redis Hmset 命令 - 同时将多个 field-value (域-值)对设置到哈希表 key 中。简介语法可用版本: > 2.0.0返回值: 如果命令执行成功,返回 OK 。 示例 2.Redis Hmget 命令 - 获取所有给定字段的值简介语法可用版本: > 2.0.0返回值: 一个包含多个给定字段…...
Objects are not valid as a React child (found: object with keys {name}).
在jsx中可以嵌套表达式,将表达式作为内容的一部分,但是要注意,普通对象不能作为子元素;但是数组,react元素对象是可以的 如下:不能将stu这个对象作为子元素放 function App() {const myCal imgStyleconst…...
nodejs业务分层如何写后端接口
这里展示的是在node express 项目中的操作 ,数据库使用的是MongoDB,前期关于express和MongoDB的文章可访问: Nodejs后端express框架 server后端接口操作:通过路由匹配——>调用对应的 Controller——>进行 Service调用——&…...
Windows 7 虚拟机的安装以及解决安装VMVMware tools问题
1.Windows 7 虚拟机的安装以及解决安装VMVMware tools问题 参考:Windows 7 虚拟机的安装以及解决安装VMVMware tools问题 注意:下载官方补丁:Microsoft Update Catalog在智慧联想浏览器中打不开,要在火狐中才能打开下载。 2.win7如…...
某个网站做拍卖预展的好处/站长之家音效
作为技术人员,已经有蛮长一段时间没有把自己的开发经验做一次总结了,可能是因为太忙和太懒吧,所以这次决定把自己这两三年来作为创业团队的成员在技术方面的心得和技巧做一个总结,也包括简单提及一下和之前在大网站工作的时候一些…...
delphi xe10网站开发/搜索数据
直接上代码… /*** author gxq* date * <p>* 自定义注解(实现数据库查询,接口访问权限一系列)*/ Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) //表示此作用作用的目标&…...
wordpress3.0 主题/seo的重要性
最近做前后端项目,前端项目启动需要切换到指定目录下,然后执行:npm run dev,进行启动。但是每次重启Idea之后打开Terminal都是项目的根目录,需要切换一下,比较麻烦,百度了一下,没找到…...
免费网站建设塔山双喜/风云榜
第一步:Mac OS自带Apache,只需要启动Apache就行。 打开终端,输入命令:sudo apachectl start 第二步:打开浏览器,在地址栏中输入localhost,出现It Works字符串,就说明Apache已经成功启…...
电脑网站拦截怎么解除/首页关键词排名
用树莓派、一个廉价的传感器和一个便宜的屏幕监测空气质量。-- Stephan Tetzel大约一年前,我写了一篇关于如何使用树莓派和廉价传感器测量空气质量的文章。我们这几年已在学校里和私下使用了这个项目。然而它有一个缺点:由于它基于无线/有线网࿰…...
成功的网站建设/关键词优化和seo
写出人生目标 尽快写出人生目标,并及时更新。(人生目标应该对人是很重要的,但是有一部分人很难写出人生目标,这很可能是因为懒惰或拖延。)利用时间 “不要一味追求投入更多时间,要注重效率,养成…...