深度学习中的变形金刚——transformer

很荣幸能和这些大牛共处一个时代。网络结构名字可以是一个卡通形象——变形金刚,论文名字可以来源于一首歌——披头士乐队的歌曲《All You Need Is Love》。

transformer在NeurIPS2017诞生,用于英语-德语,英语-法语的翻译,在BLEU(bilingual evaluation understudy)指标上得到了很好的表现。由自然语言生成代码也是一种翻译,文生图也是一种转换,事实上chatgpt,bert都是基于tranformer的。

RNN的问题:

为了将前文的信息传递到后面,让后面的字符利用前文信息,其实已经有RNN了:

问题是前面的信息,越往后权重会低,是一个指数衰减的过程。

还有一个问题是权重反复利用,也是指数的关系,这样权重的细微抖动,就会造成很大的差异。

LSTM解决了一些RNN的问题

长短期记忆网络LSTM,但这项技术只能按照顺序处理句子,无法有效利用文章后面可能出现的线索。

使用了三个门:输入门,忘记门,输出门,每一个门由一个信号和激活函数控制。

transformer

来看transformer的结构

RNN是处理语言的主流方法,但其信息处理速度缓慢,就像老式的磁带播放器,必须逐字逐句地播放。而Transformer模型则像是一位高效的DJ,能够同时操控多个音轨,迅速捕捉到关键信息。

我们由粗到细地看,首先可以看到结构分为左右两部分,分别是Encoder和Decoder。其中有两种主要的结构,橘黄色的Multi-head Attention和蓝色的Feed forward,每个结构会连接一个Add&Norm,表示残差和层归一化。左边Encoder是1*Attention+1*Feed,右边是2*Attention+1*Feed。

multi-head attention又是由多个Self-Attention组成的。多个Self-Attention得到多个输出矩阵,concat到一起,就是multi-head attention。

Self-Attention

Self-Attention就涉及到了著名的QKV三元素。

QKV也是三个矩阵,分别是查询,键值,值。他们都来源于Embedding,经过不同的权重矩阵得到。self-attention的结构和输出:

QKV的目的是在数据库中查询。特点是查询的query是数据库本身的一部分,目的是要得到query在整个句子中的分量。QK的部分实现的是不同Q之间的组合,组合的过程和顺序无关,主要是相关性。比如翻译中名词会有一些定语,这部分期望权重的绝对值应该比较大,而根据修饰的正面和负面,权重可以是正负,所以不同Q之间甚至是可以抵消的。

Q和V一起起到了信息搬运的效果,他俩合在一起才是真正的Q。从数学意义上讲,两个向量积是 相似度,所以QV得到了相似度mask矩阵。softmax则起到了归一化的作用。

而V,顾名思义就是value,是要查询的数据库。它也是由最原始的输入映射得到的。它直接决定了“苹果”是食物还是公司。

Embedding

self-attention的输入是Embedding,Embedding就是原始语料特征映射的结果。一般使用Word2Vec等词嵌入方法,所以也叫嵌入向量。不管是什么单词,嵌入后统一为长度512的向量。

但是这样的向量是没有位置信息的。“我爱你”和“你爱我”中的“我”映射的是相同的向量。位置信息完全隐藏在嵌入向量的相对顺序中。而如果后面有池化操作,位置信息就会完全丢失。

所以除了词嵌入,还需要位置嵌入,然后把二者加起来:

这就需要位置嵌入结果也是固定长度的,比如512,便于和词嵌入结果相加。

transformer使用的编码是基于正弦-余弦的:

本来一个数字pos就可以表明位置,但是为了达到规定的长度,构建了正余弦交替的基本向量,当编码长度是4时,那就是4个基向量,然后把pos分别代入4个基向量中:


可以看到,固定位置pos时,分量交替使用正弦余弦,两两一组,每一组使用相同的值。

为什么使用正余弦作基?

1. 更有利于表示相对位置。由三角函数的特性,一个位置加减一个偏移量,新的位置向量可以由原来的位置向量线性组合得到。

2.相比于直接把pos转换成二进制,即便长度正好满足,每个比特位的变化频率明显不同(高比特位的变化频率更低),而基于正余弦的方法明显各个分量的更新都是同步的。


参考链接:

​​​​​​​黄仁勋集齐Transformer论文七大作者,对话一小时,干货满满_凤凰网

【深度学习】RNN循环神经网络和LSTM深度学习模型_最新深度学习分类模型-CSDN博客

OpenAI公关跳起来捂他嘴:Transformer作者公开承认参与Q* |八位作者最新专访_澎湃号·湃客_澎湃新闻-The Paper
深度学习attention机制中的Q,K,V分别是从哪来的? - 知乎
http://jalammar.github.io/illustrated-transformer/

详解Transformer (Attention Is All You Need) - 知乎

Transformer系列:快速通俗理解Transformer的位置编码 - 简书

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

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

相关文章

可以在手机端运行的大模型标杆:微软发布第三代Phi-3系列模型,评测结果超过同等参数规模水平,包含三个版本,最小38亿,最高140亿参数

本文原文来自DataLearnerAI官方网站: 可以在手机端运行的大模型标杆:微软发布第三代Phi-3系列模型,评测结果超过同等参数规模水平,包含三个版本,最小38亿,最高140亿参数 | 数据学习者官方网站(Datalearner…

消除模型“焦虑”,浪潮信息切中AI生态建设的“症结”

大模型的崛起,真正开启人工智能重塑千行百业的序幕。 此绝非虚言。今年初,《政府工作报告》明确提出深化大数据、人工智能等研发应用,开展“人工智能”行动。这标志着以大模型为代表的新一代人工智能技术将加速进入到垂直行业。 但“人工智…

[C++][算法基础]整数划分(统计动态规划)

一个正整数 𝑛 可以表示成若干个正整数之和,形如:𝑛𝑛1𝑛2…𝑛𝑘,其中 𝑛1≥𝑛2≥…≥𝑛𝑘,𝑘≥1。 我们将这…

Python_GUI工具包 Pyside6的简介与基础操作

Python_GUI工具包 Pyside6的简介与基础操作 本文默认读者具备以下技能: 熟悉python基础知识,vscode或其它编辑工具 具备自主扩展学习能力 一、Pyside6简介 首先需要在这里先说明一下,我之前写的文章大多是ai相关的内容,此时在这里引入Pyt…

【练习1】

1.字符串最后一个单词的长度 #include <iostream> #include<string> using namespace std;int main() {string a;int res,i,flag;flag1;i0;getline(cin,a);res0;while(flag1){if(a[i]! ){resres1;}else{res0;}if(ia.length()-1){flag-1;}i;}cout<<res<<…

RakSmart站群服务器租用注意事项科普

随着互联网的飞速发展&#xff0c;站群运营成为越来越多企业和个人的选择。而RakSmart作为知名的服务器提供商&#xff0c;其站群服务器租用服务备受关注。在租用RakSmart站群服务器时&#xff0c;源库建议有一些关键的注意事项需要特别留意&#xff0c;以确保服务器的稳定运行…

Blender面操作

1.细分Subdivide -选择一个面 -右键&#xff0c;细分 -微调&#xff0c;设置切割次数 2.删除 -选择一个或多个面&#xff0c;按X键 -选择要删除的是面&#xff0c;线还是点 3.挤出面Extrude -选择一个面 -Extrude工具 -拖拽手柄&#xff0c;向外挤出 -微调&#xff…

【酱浦菌-爬虫项目】爬取百度文库文档

1. 首先&#xff0c;定义了一个变量url&#xff0c;指向百度文库的搜索接口 ‘https://wenku.baidu.com/gsearch/rec/pcviewdocrec’。 2. 然后&#xff0c;设置了请求参数data&#xff0c;包括文档ID&#xff08;docId&#xff09;和查询关键词&#xff08;query&#xff09;。…

docker各目录含义

目录含义builder构建docker镜像的工具或过程buildkit用于构建和打包容器镜像&#xff0c;官方构建引擎&#xff0c;支持多阶段构建、缓存管理、并行化构建和多平台构建等功能containerd负责容器生命周期管理&#xff0c;能起、停、重启&#xff0c;确保容器运行。负责镜管理&am…

Postgresql的安装教程dbever的连接pgAdmin4的连接

最近在学习Postgresql. 首先&#xff0c;我去官网上下载了Community DL Page12.18这个版本&#xff0c;低版本比较稳定而且文档比较多 https://www.cnblogs.com/xy-ouyang/p/12009503.html 接下来&#xff0c;我去上面的链接参考了连接。打开了postgresql的服务器之后&#x…

《HCIP-openEuler实验指导手册》1.6 Apache静态资源配置(目录访问)

知识点 常用用途&#xff1a; 软件仓库镜像及提供下载服务&#xff1a; 配置步骤 删除网站主目录中的文件&#xff08;本实验机目录为/home/source ip为192.168.12.137 端口为81&#xff09; cd /home/source rm -rf *在主目录中新建6个文件夹如下图 mkdir test{1..6}新建…

Midjourney之绘画背景的选择

hello 小伙伴们&#xff0c;我是你们的老朋友——树下&#xff0c;今天分享Midjourney提示词中绘画背景的选择&#xff0c;话不多说&#xff0c;直接开始~ 对于背景的选择&#xff0c;Midjourney中主要体现在年代和所处的环境对绘画产生不同的影响 科技的发展&#xff0c;我们…

搭建和配置Stable Diffusion环境,超详细的本地部署教程

跃然纸上的创意、瞬息万变的想象&#xff0c;Stable Diffusion以AI的力量赋予您无限创作可能。在这篇详尽的本地部署教程中&#xff0c;我们将携手走进Stable Diffusion的世界&#xff0c;从零开始&#xff0c;一步步搭建和配置这个强大的深度学习环境。无论您是热衷于探索AI艺…

每日OJ题_DFS爆搜深搜回溯剪枝②_力扣526. 优美的排列

目录 力扣526. 优美的排列 解析代码 力扣526. 优美的排列 526. 优美的排列 难度 中等 假设有从 1 到 n 的 n 个整数。用这些整数构造一个数组 perm&#xff08;下标从 1 开始&#xff09;&#xff0c;只要满足下述条件 之一 &#xff0c;该数组就是一个 优美的排列 &#…

个人如何首次申请专利(详细教程)

环境&#xff1a; win10 专业版 问题描述&#xff1a; 自然人如何首次申请专利&#xff08;详细教程&#xff09; 解决方案&#xff1a; 先提前在国家知识产权局检索查询一下&#xff0c;有没和你要申请专利相关的已经公布的专利&#xff0c;有的话就申请成功机会就比较小 …

电脑使用笔记

1.电脑亮度调节 亮度&#xff1a;50 对比度&#xff1a;45 暗部平衡&#xff1a;40

mysql分组排序

具体需求为&#xff1a;mysql有一个表model_cluster_info, 字段包括id, city_code, household等&#xff0c;现要求按city_code分组并排序&#xff0c;返回在相同city_code下households特定排名的记录&#xff08;如60%&#xff09; mysql5.7&#xff0c;我用用户自定义变量实…

tomcat部署

1.客户端和服务器端的交互过程 客户端发送请求给服务器 由服务器中的服务器软件拦截请求 根据请求调动相应的Java业务逻辑执行相关的处理 我们前面知道Java代码的运行势必提前将其装载在JVM上 而服务器软件一般都是由Java代码编写 所以两者都要装载在JVM上 而Java业务逻辑装载…

OpenVoice——强大的语音克隆与生成技术

OpenVoice 是一款由 MyShell TTS 开发的令人惊叹的技术。它只需一小段参考发言者的音频片段&#xff0c;就能精确复制其声音&#xff0c;并能够生成多种语言的语音。 其主要功能包括准确的音色克隆&#xff0c;能够精确地克隆参考音色&#xff0c;并在多种语言和口音中生成语音…

OMG 一个方法的调用改动居然优化了一倍性能!!! ConcurrentHashMap.computeIfAbsent 学习

背景 前提&#xff1a;抖音小程序有qps的监控&#xff0c;如果说qps过低就会导致小程序被下架掉。 业务代码非常的简单 一个easy的查询 但是当并非达到 20就 会发现qps降低了10倍 业务需求实现大概这么一个链路 ok 那么此前我们在认识一下 computeIfAbsent 方法&#xff08;大…