【继RNN之后的一项技术】Transfomer 学习笔记

news2025/1/12 1:52:35

谷歌团队在17年的神作,论文17年6月发布 https://arxiv.org/abs/1706.03762 被NIPS2017收录,目前引用量已经逼近3w。
以下内容参考李沐老师的课程《动⼿学深度学习(Pytorch版)》

简介

  • 注意力
    • 自主性:有目的的搜索某样东西(键)
    • 非自住性:无目的的关注某样东西(值)
      两种注意力机制的关系如下图所示:
      在这里插入图片描述

多头注意力

模型
数学表示:
给定查询 q ∈ R d q q ∈ R^{d_q} qRdq 键 k ∈ R d k 键k∈ R^{d_k} kRdk和值 v ∈ R d v v∈R^{d_v} vRdv,每个注意⼒头hi(i = 1; : : : ; h)的计算⽅法为:

多头注意⼒的输出需要经过另⼀个线性转换,它对应着h个头连结后的结果,可学习的参数为 W o W_o Wo
在这里插入图片描述

缩放点积注意力

使⽤点积可以得到计算效率更⾼的评分函数,但是点积操作要求查询和键具有相同的⻓度d。假设查询和键
的所有元素都是独⽴的随机变量,并且都满⾜零均值和单位⽅差,那么两个向量的点积的均值为0,⽅差为d。
为确保⽆论向量⻓度如何,点积的⽅差在不考虑向量⻓度的情况下仍然是1,我们再将点积除以pd,则缩放
点积注意⼒(scaled dot-product attention)评分函数为:
在这里插入图片描述在实践中,我们通常从⼩批量的⻆度来考虑提⾼效率,
在这里插入图片描述

自注意力

特点:查询、键和值来⾃同⼀组输⼊。
给定⼀个由词元组成的输⼊序列x1,…,xn,其中任意xi ∈Rd(1 ≤ i ≤ n)。该序列的⾃注意⼒输出为⼀个⻓
度相同的序列 y1,…,yn,其中:
在这里插入图片描述

Compare CNN, RNN,Self-Attention

在这里插入图片描述
卷积神经⽹络和⾃注意⼒都拥有并⾏计算的优势,⽽且⾃注意⼒的最⼤路径⻓度最短。但是因为
其计算复杂度是关于序列⻓度的⼆次⽅,所以在很⻓的序列中计算会⾮常慢。

位置编码

在处理词元序列时,循环神经⽹络是逐个的重复地处理词元的,⽽⾃注意⼒则因为并⾏计算⽽放弃了顺序操
作。为了使⽤序列的顺序信息,通过在输⼊表⽰中添加 位置编码(positional encoding)来注⼊绝对的或相
对的位置信息。位置编码可以通过学习得到也可以直接固定得到。

  • 基于正弦和余弦的位置编码:假设输⼊表示 X ∈ R n × d X∈R^{n×d} XRn×d 包含⼀个序列中n个词元的d维嵌⼊表⽰。位置编码使⽤相同形状的位置嵌⼊矩阵 P ∈ R n × d P∈R^{n×d} PRn×d输出X + P,矩阵第i⾏、第2j列和2j + 1列上的元素为:
    在这里插入图片描述

Transformer 结构

Transformer属于编码器-解码器架构的一种.
Transformer的编码器和解码器是基于⾃注意⼒的模块叠加⽽成的,源(输⼊)序列和⽬标(输出)序列的嵌⼊(embedding)表⽰将加上位置编码(positional encoding),再分别输⼊到编码器和解码器中。
Transformer 结构如下图所示:
在这里插入图片描述
Transformer架构如上图所示,是一个seq2seq model,左半边是encoder,右半边是decoder。Transformer的编码器和解码器都堆叠了6层,n=6 。encoder的输入是一个sequence,经过Multi-Head Attention之后得到另一个sequence,Add&Norm包括一个残差连接和Layer Normalization
decoder的输入是前一个time step的output,Masked Multi-Head Attention是指attention只能作用在已经产生的输出上,第二个Multi-Head Attention会attention到encoder的输出。

Transformer 训练阶段

在训练阶段,首先需要获取数据及其标签,例如一定声音讯号,对应的标签是“机器学习”,声音讯号作为encoder的输入,而decoder在训练阶 段的输入是正确标签,即“机器学习”(因此需要masked multi-head attention),我们希望decoder的输出尽可能接近真实标签,最小化交叉熵
在这里插入图片描述
在预测阶段,decoder看不到真实标签,看到的是自己的输入,因此这里有一个mismatch,叫做exposure bias,一个解决方案是在训练阶段给decoder一些错误的输入,增加模型的鲁棒性,这种方法叫做scheduled sampling

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

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

相关文章

Python小知识 - 如何使用Python进行机器学习

如何使用Python进行机器学习 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。 机器学习是人工智能的一个分支,是让计算机自动“学习”。学习的过程是从经验E中获得知识K。经验E可以是一个数据集,比如一个图像数据集。知识K可以是计算机…

Python爬虫-爬取文档内容,如何去掉文档中的表格,并保存正文内容

前言 本文是该专栏的第58篇,后面会持续分享python爬虫干货知识,记得关注。 做过爬虫项目的同学,可能或多或少爬取过文档数据,比如说“政务网站,新闻网站,小说网站”等平台的文档数据。爬取文档数据,笔者这里就不过多详述,而本文,笔者将主要介绍在爬取文档数据的过程中…

六安RapidSSL泛域名https能保护几个域名

RapidSSL是Geotrust旗下的子品牌,Geotrust是国际知名的CA认证机构,每年都要通过WebTrust年检,而Geotrust旗下的https证书已经应用于市场多年,Geotrust的子品牌RapidSSL证书经营的DV基础型泛域名https证书也受到市场的欢迎。今天就…

MFC新建内部消息

提示:记录一下MFC新建内部消息的成功过程 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 先说一下基本情况,因为要在mapview上增加一个显示加载时间的功能。然后发现是要等加载完再显示时间,显示在主…

动手学深度学习d2l.Animator无法在PyCharm中显示动态图片的解决方案

from d2l import torch as d2l一、问题描述 运行d2l的训练函数&#xff0c;仅在控制台输出以下内容&#xff0c;无法显示动态图片&#xff08;训练监控&#xff09; <Figure size 350x250 with 1 Axes> <Figure size 350x250 with 1 Axes> <Figure size 350x2…

数据结构与算法之贪心动态规划

一&#xff1a;思考 1.某天早上公司领导找你解决一个问题&#xff0c;明天公司有N个同等级的会议需要使用同一个会议室&#xff0c;现在给你这个N个会议的开始和结束 时间&#xff0c;你怎么样安排才能使会议室最大利用&#xff1f;即安排最多场次的会议&#xff1f;电影的话 那…

Fiddler 系列教程(一)初识Fiddler,我们能用fiddler做什么?

Fiddler是最强大最好用的Web调试工具之一&#xff0c;它能记录所有客户端和服务器的http和https请求&#xff0c;允许你监视&#xff0c;设置断点&#xff0c;甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说&#xff0c;都有很大的帮助。 阅读目录 Fiddler的基本介…

23个react常见问题

1、setState 是异步还是同步&#xff1f; 合成事件中是异步 钩子函数中的是异步 原生事件中是同步 setTimeout中是同步 相关链接&#xff1a;你真的理解setState吗&#xff1f;&#xff1a; 2、聊聊 react16.4 的生命周期 图片 相关连接&#xff1a;React 生命周期 我对 Reac…

康耐视visionpro破解版满天飞,那么如何查询康耐视Visionpro加密狗支持哪些工具

目录 第一步骤&#xff0c;点击WinR&#xff0c;弹出命令符第二步骤&#xff1a;输入CMD&#xff0c;回车第三步骤&#xff1a;输入cogtool -p&#xff08;cogtool与-p之间有空格&#xff09;&#xff0c;输入完毕后&#xff0c;记得回车&#xff0c;稍等3秒钟不到。 第一步骤&…

[js] 图解 event.pageX event.clientX event.offsetX getBoundingClientRect

event.clientX、event.clientY 鼠标相对于浏览器窗口可视区域的X&#xff0c;Y坐标&#xff08;窗口坐标&#xff09;&#xff0c;可视区域不包括工具栏和滚动条。IE事件和标准事件都定义了这2个属性 event.pageX、event.pageY 类似于event.clientX、event.clientY&#xff0c;…

作为一名游戏开发工作者,分享一些工作经验

作为一名游戏开发工作者&#xff0c;有一些重要的心得和经验可以分享&#xff0c;这些经验可以帮助你更好地在游戏开发领域取得成功&#xff1a; 学习不断进步&#xff1a;游戏开发是一个不断演进的领域&#xff0c;你需要不断学习新的技术和工具。跟踪最新的游戏开发趋势&…

Excel VSTO开发2 -建立Excel VSTO项目

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 2 建立Excel VSTO项目 新建项目&#xff0c;选择Excel 2013和2016 VSTO外接程序。输入项目名称&#xff08;本示例的项目名称为&am…

python基于Django健身爱好者交流分享平台vue

而肌友网—健身交流平台能很好地解决这一问题&#xff0c;轻松应对健身交流&#xff0c;既能提高用户对健身交流的评价&#xff0c;又能加快健身交流平台的效率&#xff0c;取代人工管理是必然趋势。 本肌友网—健身交流平台以Django作为框架&#xff0c;B/S模式以及MySql作为后…

Android Studio开发入门教程:如何让开发的app国际化?

配置APP的语言环境&#xff08;文末有Android Studio以及雷电模拟器的压缩包&#xff09; 实验目的&#xff1a; 为了使我们基于android操作系统开发的APP能更好的国际化&#xff0c;面向不同的国家市场&#xff0c;我们需要做出相关的操作&#xff0c;使开发出来的APP会根据用…

解决husky在mac下不生效的问题

目录 一、问题 1.1 问题描述 二、解决 2.1 解决 一、问题 1.1 问题描述 本文主要解决的问题是&#xff0c;husky在windows上正常生肖&#xff0c;但放到mac下后不生效的问题&#xff01; 为了确保团队中提交代码的一致性&#xff0c;因此使用了 husky 作为提交的检测工具…

【第二章 数据的表示和运算】d1

【2.1】 各种码的比较&#xff0c;0的表示&#xff1a; 【2.2】 符号扩展&#xff1a; 溢出判别用异或&#xff08;不同01/10取1&#xff0c;相同00/11取0&#xff09;&#xff1a; 进位判别符号位Cs&#xff0c;最高位C1&#xff1a; 补码与-x的补码&#xff1a; /2&…

【Seata】03 - Seata AT 模式全局锁相关知识简单整理

文章目录 前言参考目录版本说明分析整理1、全局锁的引入说明2、全局锁相关源码整理2.1、流程简图2.2、事务分支注册前的 SQL 相关操作2.3、注册分支&#xff08;获取全局锁&#xff09; 前言 上一篇文章介绍了 AT 模式的调用流程&#xff0c;但是有个比较重要的概念没有提及到…

【已解决】pycharm 突然每次点击都开新页面,关不掉怎么办?

今天在 pycharm 中写代码&#xff0c;突然发现&#xff0c;新开的文件不再原来的页面上&#xff0c;而是新增了页面&#xff0c;导致整个屏幕全都是新开的页面&#xff0c;最难受的是&#xff0c;关不掉&#xff01; 无奈&#xff0c;我只能关闭 pycharm&#xff0c;重新双击…

nginx-带宽限制-令牌桶算法

nginx的令牌桶算法 客户请求nginx时&#xff0c;通过给每个请求授予令牌&#xff0c;来给予每个请求响应的带宽&#xff0c;当令牌全部授予完了&#xff0c;后面的请求就处于等待中。 假如一个令牌给100M带宽&#xff0c;那么两个令牌就是200M。有多少牌子&#xff0c;就有多少…

附导读 |《网络安全标准实践指南——网络数据安全风险评估实施指引》解读

★ NEWS ★ 2023年4月18日&#xff0c;全国信息安全标准化技术委员会秘书处发布《网络安全标准实践指南——网络数据安全风险评估实施指引&#xff08;征求意见稿&#xff09;》&#xff08;以下称“《实施指引》”&#xff09;&#xff0c;面向社会公开征求意见。意见征求截…