Transformer(一)简述(注意力机制,NLP,CV通用模型)

目录

1.Encoder

1.1简单理解Attention

1.2.什么是self-attention

1.3.怎么计算self-attention

1.4.multi-headed(q,k,v不区分大小写)

1.5.位置信息表达

 2.Decoder(待补充)

 3.BERT

参考文献


1.Encoder

1.1简单理解Attention

比方说,下图中的热度图中我们希望专注于小鸟,而不关注背景信息。那么如何关注文本和图像中的重点呢。

具体而言,下面的文本为she is eating a green,用不同的颜色表示每一个单词的向量,然后对每一个向量进行重构,比方说she本来由红色向量表示,重构之后,其向量包含上下文其他向量的部分(下图只管看就是按照相关程度,颜色比重各不相同,然后重新构成一个向量),其实这一块就是算出权值,每个词对其他词的贡献,再根据这个权值整合每个词自身的向量。

1.2.什么是self-attention

如下图所示,两句话中的it根据上下文语句不同,指代前面的名词也不同,所以希望用注意力机制,来专注他们之间的关系。

自注意力机制:如下图所示,两句话中,以it为例只计算本句中每个词和自己的关系

注意力机制:如下图所示,it会计算其他句和自己的关系。

同样如下图右侧所示,以it为例,线条越深和自身关系越强

1.3.怎么计算self-attention

如下图所示,有两个文本Thinking,Machines,在进行计算时,我们要知道每一个词和自己的关系以及和其他词的关系,也就是说要计算Thinking和自身的关系,以及和Machines的关系,以及Machines和自身的关系,以及和Thinking的关系然后将其向量化表示为x1和x2。接下来为了实现注意力机制,我们提供了三个向量,q,k,v,以Thinking为例,当Thinking想要寻找和自己的关系以及和Machines的关系时,必须要知道它要查什么,所以需要一个查找对象也就是q,同样Thinking和Machines自身作为被查找的单位,当被查询时,也需要提供我有或者没有被查东西的证据,也就是k,具象化理解,可以理解为,古代官府追查杀手,必然会拿着杀手画像q,那么每家每户都要提供自己的身份信息k,证明自己是不是杀手。v后面补充。

 再看一下q,k,v是咋来的,对于单词向量x1和x2用一个权重矩阵w分别得到q,k,v。

 再看一下词与词之间的匹配程度如何确定,先说一个概念,内积相乘越大两者关系越近,所以当计算Thinking和自己的匹配程度时,用q1*k1=112,计算Thinking和Machines匹配程度时用q1*k2=96计算,很明显和自己的匹配程度更高。

再进一步计算

首先看softmax(Q*K/\sqrt{d_{k}})*V,其中\sqrt{d_{k}}这样理解,当高维Q*K的结果必然比低维相乘大,但在实际应用中,维数并不应该对结果产生影响,所以用\sqrt{d_{k}}消除维度影响。对照下图左侧的公式,来看下图右侧,在得到112和96之后,进行维度消除操作,得到14和12,然后得到彼此的影响概率,0.88和0.12,再利用v对x重构得到z。

 

 流程如下图所示,Q和每一个K相乘再结合相应的V最后加权得到Attention Value

1.4.multi-headed(q,k,v不区分大小写)

上面我们发现一个x只能得到一个z,现在希望一个x可以得到不同z,所以用不同的w得到不同的q,k,v。假设一个x最后得到8个不同的z,将其拼接在一起太大了,所以用全连接层再对其降维。

 举个例子

1.5.位置信息表达

前面我们发现计算时会对每一个单词进行计算,所以没考虑位置因素,但在这里希望把位置因素考虑进去,位置用p表示,最后加入到重构后的z中。

 2.Decoder(待补充)

前面是用encoder处理输入得到不同的组合z,这回需要对z进行输出操作。 此时decoder提供q,查询模型需要啥。k和v由输入提供。具体我们可以看下图右侧流程图,左为Encoder输入K,V。右下为decoder输入Q。

 再说一下MASK机制,简单理解,此时标签出了I am a,那么对于a可以利用前三个词,但对于第四个没出的不能使用,所以要给它掩盖起来。

 

 3.BERT

替代encoder

参考文献

1.Transformer原理精讲_哔哩哔哩_bilibili

2.67 自注意力【动手学深度学习v2】_哔哩哔哩_bilibili 

3. 68 Transformer【动手学深度学习v2】_哔哩哔哩_bilibili

4.(重点)2023年AI爆火方向:基于Transformer模型的计算机视觉实战集锦【医疗图像分割、VIT算法、swintransformer、DETR目标检测...】_哔哩哔哩_bilibili 

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

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

相关文章

DevOps系列文章 之 SpringBoot整合GitLab-CI实现持续集成

在企业开发过程中,我们开发的功能或者是修复的BUG都需要部署到服务器上去,而这部分部署操作又是重复且繁琐的工作,GitLab-CI 持续集成为我们解决了这一痛点,将重复部署的工作自动化,大大的节省了程序员们的宝贵时间。本…

Android复习(Android基础-四大组件)——Broadcast

1. 广播分类 广播的发送方式:标准广播、有序广播、粘性广播广播的类型:系统广播、本地广播 1.1 标准广播 完全异步,无序的广播发出后,所有的广播接收器几乎都会在同一时间收到消息。(异步)但是消息无法截…

获取部门完整路径数据

1: 获取部门数据 (基础) SELECT id, CONCAT(pid_path,id) as pid_path2,pid_path,title FROM web_department;2: 获取部门数据 (进阶, 但是是,分隔) SELECT t1.id, t1.title, CONCAT(t1.pid_path, ,, t1.id) AS pid_path,(SELECT GROUP_CONCAT(t2.title ORDER BY FIND_IN_SET…

Nginx环境搭建以及Docker环境部署

目录 Nginx环境搭建 1.首先创建Nginx的目录并进入 2.下载Nginx的安装包 可以通过FTP工具上传离线环境包,也可通过wget命令在线获取安装包 没有wget命令的可通过yum命令安装 3.解压Nginx的压缩包 4.下载并安装Nginx所需的依赖库和包 安装方式一 安装方式二 --- 也…

NLP文本匹配任务Text Matching [无监督训练]:SimCSE、ESimCSE、DiffCSE 项目实践

NLP文本匹配任务Text Matching [无监督训练]:SimCSE、ESimCSE、DiffCSE 项目实践 文本匹配多用于计算两个文本之间的相似度,该示例会基于 ESimCSE 实现一个无监督的文本匹配模型的训练流程。文本匹配多用于计算两段「自然文本」之间的「相似度」。 例如…

TypeScript 关于对【泛型】的定义使用解读

目录 概念导读泛型函数多个泛型参数泛型约束泛型别名泛型接口泛型类总结: 概念导读 泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。使用泛型 可以复用类型…

C++入门

目录 一&#xff1a;关键字 二&#xff1a;命名空间 1.引入 2.命名空间的定义 <1>:命名空间中定义变量/函数/类型 <2>:命名空间可以嵌套 <3>:同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中 3.命名空…

【设计模式】建造者模式

建造者模式&#xff08;Builder Pattern&#xff09;使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。 介绍 …

idea入门与maven配置的一些介绍

idea入门与maven配置的一些介绍 1.确保Java和Maven已安装2.创建一个新的Maven项目3.导航到要创建项目的目录配置Maven4.配置项目的pom.xml文件5.配置其他Tomcat和设置jdk6.构建和运行项目 关于idea入门基础配置 步骤1&#xff1a;安装IntelliJ IDEA 首先&#xff0c;从IntelliJ…

【Vue-Router】命名视图

命名视图 同时 (同级) 展示多个视图&#xff0c;而不是嵌套展示&#xff0c;例如创建一个布局&#xff0c;有 sidebar (侧导航) 和 main (主内容) 两个视图&#xff0c;这个时候命名视图就派上用场了。 可以在界面中拥有多个单独命名的视图&#xff0c;而不是只有一个单独的出…

JVM内存区域划分

JVM把虚拟机的内存区域划分为方法区&#xff08;Method Area&#xff09;、堆&#xff08;Heap&#xff09;、栈&#xff08;Java Stack&#xff09;、本地方法栈&#xff08;Native Method Stack&#xff09;、和一个PC寄存器&#xff08;程序计数器&#xff0c;Progam Counti…

msvcp140.dll如何重新安装?快速安装msvcp140.dll的方法分享

msvcp140.dll是Windows操作系统的一个动态链接库文件&#xff0c;它是Microsoft Visual C Redistributable的一部分。这个文件在运行某些应用程序时非常重要。然而&#xff0c;在某些情况下&#xff0c;msvcp140.dll文件可能会损坏或遗失&#xff0c;导致应用程序无法正常运行。…

神经网络基础-神经网络补充概念-03-逻辑回归损失函数

概念 逻辑回归使用的损失函数通常是"对数损失"&#xff08;也称为"交叉熵损失"&#xff09;或"逻辑损失"。这些损失函数在训练过程中用于衡量模型预测与实际标签之间的差异&#xff0c;从而帮助模型逐步调整权重参数&#xff0c;以更好地拟合数…

堆的实现以及应用

&#x1f493;博主个人主页:不是笨小孩&#x1f440; ⏩专栏分类:数据结构与算法&#x1f440; 刷题专栏&#x1f440; C语言&#x1f440; &#x1f69a;代码仓库:笨小孩的代码库&#x1f440; ⏩社区&#xff1a;不是笨小孩&#x1f440; &#x1f339;欢迎大家三连关注&…

Unity zSpace 开发

文章目录 1.下载 zSpace 开发环境1.1 zCore Unity Package1.2 zView Unity Package 2. 导入工程3. 发布设置4.功能实现4.1 用触控笔来实现对模型的拖拽&#xff1a; 5. 后续更新 1.下载 zSpace 开发环境 官网地址 1.1 zCore Unity Package zSpace 开发核心必须 1.2 zView …

K8S系列三:单服务部署

写在前面 本文是K8S系列第三篇&#xff0c;主要面向对K8S新手同学&#xff0c;阅读本文需要读者对K8S的基本概念&#xff0c;比如Pod、Deployment、Service、Namespace等基础概念有所了解。尚且不熟悉的同学推荐先阅读本系列的第一篇文章《K8S系列一&#xff1a;概念入门》[1]…

图解 Paxos 算法

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱写博客的嗯哼&#xff0c;爱好Java的小菜鸟 &#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&#x1f44d;一下博主哦 &#x1f4dd;个人博客&#xff1a;敬请期待 &#x1f4d5;系列…

ROS学习笔记(二)---使用 VScode 开发 ROS 的Python程序(简例)

一、任务介绍 本篇作为ROS学习的第二篇&#xff0c;是关于如何在Ubuntu18.04中使用VSCode编写一个Python程序&#xff0c;输出“Hello&#xff01;”的内容介绍。 首先我们来了解下ROS的文件系统&#xff0c;ROS文件系统级指的是在硬盘上ROS源代码的组织形式&#xff0c;其结构…

东方晶源亮相第十一届半导体设备年会,共话发展“芯”机遇

8月11日&#xff0c;以“协力同芯抢机遇&#xff0c;集成创新造设备”为主题的第十一届&#xff08;2023年&#xff09;中国电子专用设备工业协会半导体设备年会暨产业链合作论坛&#xff08;CSEAC&#xff09;在无锡太湖国际博览中心圆满闭幕。为期3天的CSEAC&#xff0c;通过…

安装Linux操作系统CentOS 6详细图文步骤

为满足业务对Linux操作系统部署的要求&#xff0c;本文档主要提供CentOS 6操作系统的最小化安装和基本配置, 安装本系统建议最少1GB内存和2GB磁盘空间。 1、 使用光盘或者挂载ISO镜像&#xff0c;在出现如下图形界面时选择【Install or upgrade an existing system】并按Ent…