对Transformer的理解。

要理解Transformer,需要先理解注意力机制,下面大部分内容来自台大教授李宏毅老师讲课资料。

注意力机制

之前使用的MLP,CNN,RNN模型可以解决一些简单序列问题,但当序列长度太长容易失去效果,原因是看了新的忘了旧的,网络很难关注到相距很远的 token 之间的联系,于是注意力机制被引入到深度学习中,并且目前已经一招鲜吃遍天了。

注意力的设计可以有很多方式,如下图的两种设计方式。绿色框表示两个token。
在这里插入图片描述
目前大部分采用第一种方式,下面来说说自注意力机制。

设想我们要在一大堆文档里面通过关键词快速搜索到最相关的文档,一个较为合理的做法就是首先通过词频-逆文档频率或其他方法得到所有文档对应的特征词语,然后使用关键词和每个文档的特征词之间的相似度,这个分数就叫做attention score,关键词就是q,特征词就是k,如果我们最终是要得到一个特征向量,那么就讲attention score和每个文档特征进行加权求和,当然首先需要对attention score 经过一个softmax层进行归一化。那么这里的文档特征就类似于v

如下图这是Attention Score的计算方式
在这里插入图片描述
首先将每个token ( a 1 , a 2 , a 3 , a 4 ) (a^1,a^2,a^3,a^4) a1,a2,a3,a4经过参数矩阵 W q W^q Wq 计算得到 ( q 1 , q 2 , q 3 , q 4 ) (q^1,q^2,q^3,q^4) q1,q2,q3,q4和参数矩阵 W k W^k Wk 计算得到 ( k 1 , k 2 , k 3 , k 4 ) (k^1,k^2,k^3,k^4) k1,k2,k3,k4,然后将每个 q 与 k 进行计算得到 attention score 再经过softmax层进行归一化。

得到注意力特征向量
在这里插入图片描述
使用归一化的注意力分数乘以v再加权求和得到 a 1 a^1 a1 对应的全局特征向量 b 1 b^1 b1,后面的计算方式相似,相继得到 b 2 , b 3 , b 4 b^2,b^3,b^4 b2,b3,b4等等。

如果用矩阵来表示就是:
K = W K A Q = W Q A V = W V A B = V s o f t m a x ( K T Q ) K = W^KA\\ Q = W^QA\\ V=W^VA\\ B = V softmax(K^TQ) K=WKAQ=WQAV=WVAB=Vsoftmax(KTQ)
其特点是可以并行运行、输入输出长度相同。

多头注意力

多头注意力就是每个词获得多个k,q,v对,这样做的主要目的是每个k,q,v对可能代表不同的侧重点,同时扩充网络参数。

Encoder层

Transformer的Encoder
在这里插入图片描述
首先将原始token经过多头注意力注意力层得到注意力特征,然后经过残差加和和层正则化,将正则化结果输入到前馈网络里面再进行残差加和和层正则化。

详细结构
在这里插入图片描述

Decoder层

Decoder层和Encoder很类似,如果不看交叉注意力的的话。
在这里插入图片描述

交叉注意力,用当前的查询向量q去计算对方的注意力分数。
在这里插入图片描述

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

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

相关文章

xtu oj 1169 最大子段和

题目描述 给你一个数列a1,a2,...,an,求m个连续数字组成的子段和最大值。 输入 有多个样例,每个样例的第一行是两个整数n和m,(1≤m≤n;≤100,000)。如果n和m为0表示输入结束,这个样例不需要处理。第二行是n个整数ai,0≤ai≤1000…

精确掌控并发:固定时间窗口算法在分布式环境下并发流量控制的设计与实现

这是《百图解码支付系统设计与实现》专栏系列文章中的第(14)篇。点击上方关注,深入了解支付系统的方方面面。 本篇主要介绍分布式场景下常用的并发流量控制方案,包括固定时间窗口、滑动时间窗口、漏桶、令牌桶、分布式消息中间件…

力扣每日一练(24-1-14)

做过类似的题,一眼就是双指针,刚好也就是题解。 if not nums:return 0p1 0 for p2 in range(1, len(nums)):if nums[p2] ! nums[p1]:p1 1nums[p1] nums[p2]return p1 1 根据规律,重复的数字必定相连,那么只要下一个数字与上一…

Fluent 动网格应用:2.5D 网格重构

1 概述 2.5D 网格重构是一种快速网格重构方法,主要应用于涡旋压缩机等存在复杂平面运动且无法简化为二维计算的问题。 涡旋压缩机工作原理(视频源:维基百科) 适用于 2.5D 动网格的问题特点: 计算域几何形状为柱体类形…

八. 实战:CUDA-BEVFusion部署分析-导出带有spconv的SCN网络的onnx

目录 前言0. 简述1. 使用spconv进行SCN的推理测试2. 导出onnx3. 补充-装饰器钩子函数总结下载链接参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》,链接。记录下个人学习笔记,仅供自己参考 本次课程我们来学习下课程第八章——实战&#x…

反向代理+web集群+mysql mha实验总结

一、实验步骤 1、部署框架前准备工作 服务器类型部署组件ip地址DR1调度服务器 主(ha01)KeepalivedLVS-DR192.168.86.13DR2调度服务器 备 (ha02)KeepalivedLVS-DR192.168.86.14web1节点服务器 (slave01)NginxTomcatMySQL 备MHA managerMHA node192.168.8…

cmake 中的set用法

可以后面跟一串字符串 set — CMake 3.0.2 Documentation

esxi-vSphere

esxi安装 vCenterServer 安装 给予 esxi,一般一个esxi ,就安装一个 vCenter 关于 vCenter Server 安装和设置 vSphere Client安装 软件下载 VMware vSphere 8.0 download: 百度网盘链接:百度网盘 请输入提取码 链接: https://pan.baidu.com/s/1juyKl…

【Java SE语法篇】9.抽象类和接口

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 文章目录 1. 抽象类1.1 抽象类的概念1.2 抽象类的语法1.3 抽象…

【RT-DETR改进涨点】为什么YOLO版本的RT-DETR训练模型不收敛的问题

前言 大家好,我是Snu77,这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进,内容持续更新,每周更新文章数量3-10篇。 其中提到的多个版本ResNet18、ResNet34、ResNet50、ResNet101为本人根据RT-…

书生·浦语大模型实战营作业(四)

基础作业: 构建数据集,使用 XTuner 微调 InternLM-Chat-7B 模型, 让模型学习到它是你的智能小助手,效果如下图所示,本作业训练出来的模型的输出需要将不要葱姜蒜大佬替换成自己名字或昵称! 数据集 回答结果 进阶作…

指针面试题详解

文章目录 指针笔试题解析笔试题1笔试题2笔试题3笔试题4笔试题5笔试题6笔试题7笔试题8 总结 指针笔试题解析 数组名是首元素地址,两种情况除外: 1.sizeof(数组名) , 这是这是计算整个数组的大小,单位是字节; 2.&数组名 , 得出的是整个数组的地址; 笔试题1 #include<st…

Error: Cannot find module ‘vue-template-compiler‘ 问题解决

启动Vuepress项目时报了如下错误&#xff1a;Error: Cannot find module vue-template-compiler Error: Cannot find module vue-template-compiler Require stack: - /usr/local/lib/node_modules/vuepress/node_modules/vue-loader/lib/compiler.js - /usr/local/lib/node_…

4bit/8bit 启动 Mixtral 8*7B 大语言模型

4bit/8bit 启动 Mixtral 8*7B 大语言模型 0. 背景1. 修改代码 0. 背景 个人电脑配置实在难以以 float16 运行 Mixtral 8*7B 大语言模型&#xff0c;所以参数 4bit 或者 8bit 来启动。 实际测试结果&#xff0c;4bit 时推理速度明显变快了&#xff0c;8bit 时推理也非常慢。 …

代码随想录day16

104.二叉树的最大深度 题目&#xff1a;给定一个二叉树&#xff0c;找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例&#xff1a; 给定二叉树 [3,9,20,null,null,15,7]&#xff0c; 做这道题之前需要先…

vim复制剪切删除

在 Vim 中&#xff0c;复制操作可以通过以下方式进行&#xff1a; 复制一行&#xff1a;在命令模式下&#xff0c;将光标移动到要复制的行&#xff0c;然后按 yy 进行复制。例如&#xff1a;yy复制某几个字&#xff1a;在命令模式下&#xff0c;按 v 进入可视模式&#xff0c;…

Jenkins-执行脚本案例-初步认识JenKins的使用

环境搭建 docker pull jenkins/jenkins:2.440 docker run -d -p 10240:8080 -p 10241:50000 -v /env/liyong/data/docker/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins:2.440 #在挂载的目录下去修改仓库地址 vim hudson…

vulhub中的Nginx漏洞的详细解析

Nginx漏洞 1.cd到nginx_parsing_vulnerability cd /opt/vulhub/nginx/nginx_parsing_vulnerability 2.执行docker-compose up -d 3.查看靶场是否开启成功 dooker ps 4.访问浏览器 因为这里是80端口所以直接使用ip就能访问成功 5.上传图片 注意这里的图片是含有一句话木马的图…

【Vue3】2-13 : 章节总结

本书目录&#xff1a;点击进入 一、总结内容 二、习题 2.1 【选择题】以下Vue指令中&#xff0c;哪些指令具备简写方式&#xff1f; 2.2 【编程题】以下Vue指令中&#xff0c;哪些指令具备简写方式&#xff1f; &#xff1e; 效果 &#xff1e; 代码 一、总结内容 了解核…

3、Linux中合并两个文件

目录 使用 cat 命令 使用 tail 或 head 命令 使用 cat 命令 cat file1.txt file2.txt > merged_file.txt 这个命令会将 file1.txt 和 file2.txt 的内容按顺序合并&#xff0c;并将合并后的内容重定向到 merged_file.txt。 cat file2.txt >> file1.txt 这会将 fil…