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

谷歌团队在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.hqwc.cn/news/100466.html

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

相关文章

CSS中如何实现文字描边效果(Text Stroke)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 文字描边效果(Text Stroke)⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个…

肖sir__设计测试用例方法之判定表06_(黑盒测试)

设计测试用例方法之判定表 1、判定表:是一种表达逻辑判断的工具。 2、判定表:包含四部分 1)条件桩(condition stub):列出问题的 所有条件(通常条件次序无关紧要)。 2)条件项&#x…

【数学建模竞赛】优化类赛题常用算法解析

优化类建模 问题理解和建模:首先,需要深入理解问题,并将问题抽象为数学模型。这包括确定问题的目标函数、约束条件和决策变量。 模型分析和求解方法选择:对建立的数学模型进行分析,可以使用数学工具和方法,…

【STM32】学习笔记(串口通信)

串口通信 通信接口硬件电路电平标准USARTUSART框图 通信接口 串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信&#…

【Linux从入门到精通】通信 | 管道通信(匿名管道 命名管道)

本派你文章主要是对进程通信进行详解。主要内容是介绍 为什么通信、怎么进行通信。其中本篇文章主要讲解的是管道通信。希望本篇文章会对你有所帮助。 文章目录 一、进程通信简单介绍 1、1 什么是进程通信 1、2 为什么要进行通信 1、3 进程通信的方式 二、匿名管道 2、1 什么是…

LeetCode刷题笔记【25】:贪心算法专题-3(K次取反后最大化的数组和、加油站、分发糖果)

文章目录 前置知识1005.K次取反后最大化的数组和题目描述分情况讨论贪心算法 134. 加油站题目描述暴力解法贪心算法 135. 分发糖果题目描述暴力解法贪心算法 总结 前置知识 参考前文 参考文章: LeetCode刷题笔记【23】:贪心算法专题-1(分发饼…

List常见面试问题

List的特点有哪些? Java中的List是一种存放有序的、可以重复的数据的集合,它允许重复元素的存在。List中的元素都有对应的一个序列号(索引)记录着元素的位置,因此可以通过这个序列号来访问元素。 ‍ Java中集合有哪些? Java中…

风辞远的科技茶屋:来自未来的信号枪

很久之前,有位朋友问我,现在科技资讯这么发达了,你们还写啊写做什么呢? 我是这么看的。最终能够凝结为资讯的那个新闻点,其实是一系列事情最终得出的结果,而这个结果又会带来更多新的结果。其中这些“得出”…

算法通过村第五关-队列和Hash黄金笔记|LRU的设计与实现

文章目录 前言1. LRU的含义2. Hash双向链表实现LRU总结 前言 提示:我曾如此渴望命运的波澜,到最后才发现:人生最曼妙的风景,竟是内心的淡定从容。 我们层如此盼望世界的认可,到最后才知道:世界是自己&#…

罕见病 对称性脂肪瘤(MSL) 马德龙病

如果你体内脂肪瘤分布大致如下 而且个数不断增多 这篇文章适合你 症状 脂肪瘤个数一直增加 而且很对称 比如: 左手臂一个 右手臂一个 别名 多发性对称性脂肪增多症 Multiple symmetric lipomatosis (MSL) 多发性对称性脂肪瘤(MSL) 脂肪瘤 马德龙病(…

知识库建设:从0到1搞定知识库建设的方法论分享

如果我们想要搭建一个知识库,前提是我们要明确知道这个知识库是干什么用的,只有了解知识库的应用场景才能知道如何去建设知识库。 知识库建设 以常见的电商客服为例,客户会经常咨询什么时候发货,怎么退货,怎么换货………

编写软件检测报告有哪些注意事项?软件检测报告获取

软件检测报告是指把测试的过程和结果写成文档,对发现的问题和缺陷进行分析,为纠正软件的存在的质量问题提供依据,同时为软件验收和交付打下基础。 一、编写软件检测报告的注意事项 1、报告的结构要合理和清晰。应该按照一定的逻辑顺序&…