【继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.mzph.cn/news/74056.shtml

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

相关文章

Xilinx FPGA 超温关机保护

在UG480文档,有关于FPGA芯片热管理的介绍。 首先需要理解XADC中的 Over Temperature(OT)和User Temperature的关系。片上温度测量用于关键温度警告,也支持自动关机,以防止设备被永久损坏。片上温度测量在预配置和自动关…

C++:类和对象(三)

本文主要介绍初始化列表、static成员、友元、内部类、匿名对象、拷贝对象时编译器的优化。 目录 一、再谈构造函数 1.构造函数体赋值 2.初始化列表 3.explicit关键字 二、static成员 1.概念 2.特性 三、友元 1.友元函数 2.友元类 四、内部类 五、匿名对象 六、拷…

android上架备案公钥和md5获取工具

最近很多公司上架遇到了一个问题,就是要提供app的备案证明,现在android上架都需要备案了,但是我们的证书都是通过工具生成的,哪里知道公钥和md5那些东西呢?无论安卓备案还是ios备案都需要提供公钥和md5。 包括ios的备案…

上海控安携汽车网络安全新研产品出席AUTOSEMO“恒以致远,共创共赢”主题研讨会

8月31日,AUTOSEMO“恒以致远,共创共赢”主题研讨会在天津成功召开。本次大会由中国汽车工业协会软件分会中国汽车基础软件生态标委会(简称:AUTOSEMO)与天津市西青区人民政府联合主办。现场汇聚了100余位来自产学研政企…

前端如何将后台数组进行等分切割

前端如何切割数组 目标:前端需要做轮播,一屏展示12个,后端返回的数组需要进行切割,将数据以12为一组进行分割 环境:vue3tselement plus 代码如下: function divideArrayIntoEqualParts(array, chunkSiz…

lv3 嵌入式开发-4 linux shell命令(文件搜索、文件处理、压缩)

目录 1 查看文件相关命令 1.1 常用命令 1.2 硬链接和软链接 2 文件搜索相关命令 2.1 查找文件命令 2.2 查找文件内容命令 2.3 其他相关命令 3 文件处理相关命令 3.1 cut 3.2 sed 过滤 3.3 awk 匹配 4 解压缩相关命令 4.1 解压缩文件的意义 4.2 解压缩相关命令 1 …

智慧公厕破解公共厕所管理的“孤岛现象”

在现代社会中,公共厕所是城市管理中的一项重要任务。然而,经常会出现公厕管理的“孤岛现象”,即每个公厕都是独立运作,缺乏统一的管理和监控机制。针对这一问题,智慧公厕的出现为解决公共厕所管理难题带来了新的方案。…

【Unity3D】UI Toolkit样式选择器

1 前言 UI Toolkit简介 中介绍了样式属性,UI Toolkit容器 和 UI Toolkit元素 中介绍了容器和元素,本文将介绍样式选择器(Selector),主要包含样式类选择器(Class Selector)、C# 类选择器&#xf…

C++ 结构体

前文 C中的结构体是一种非常有用的数据类型,它允许我们将不同的变量组合在一起,形成一个自定义的数据结构。 结构体在C中的应用非常广泛,它可以用来表示和管理各种实体、对象或数据的属性。比如,在一个学生管理系统中&#xff0c…

阿里云和腾讯云2核2G服务器价格和性能对比

2核2G云服务器可以选择阿里云服务器或腾讯云服务器,腾讯云轻量2核2G3M带宽服务器95元一年,阿里云轻量2核2G3M带宽优惠价108元一年,不只是轻量应用服务器,阿里云还可以选择ECS云服务器u1,腾讯云也可以选择CVM标准型S5云…

实现在一张图片中寻找另一张图片的目标

OpenCV库中的SIFT特征检测算法和FLANN(快速最近邻搜索库)匹配算法来找到一个图片中的元素在另一个图片中的位置,并在源图片中标出它们的位置。 以下是一个简单的例子,使用OpenCV库,利用SIFT特征检测算法,在…

《向量数据库》——向量数据库Milvus 和大模型出联名款AI原生Milvus Cloud

大模型技术的发展正加速对千行百业的改革和重塑,向量数据库作为大模型的海量记忆体、云计算作为大模型的大算力平台,是大模型走向行业的基石。而电商行业因其高度的数字化程度,成为打磨大模型的绝佳“战场”。 在此背景下,Zilliz 联合亚马逊云科技举办的【向量数据库 X 云计…

云服务器下如何部署Django项目详细操作步骤

前期本人完成了“编写你的第一个 Django 应用程序”,有了一个简单的项目代码,在本地window系统自测没问题了,接下来就想办法部署到服务器上,可以通过公网访问我们的Django项目。将开发机器上运行的开发版软件实际安装到服务器上进…

鼠标知识系列之星闪鼠标

随着 2023.8.4 华为 HDC 大会的落幕,一个新的名词开始进入了人们的视线:星闪 NaerLink,随着星闪技术引入键鼠圈子的还有一个名词:星闪鼠标。 正如我们之前鼠标知识分享系列提到过的,目前市面上的鼠标主要是有线鼠标和…

烟感报警器单片机方案开发,解决方案

烟感报警器也叫做烟雾报警器。烟感报警器适用于火灾发生时有大量烟雾,而正常情况下无烟的场所。例如写字楼、医院、学校、博物馆等场所。烟感报警器一般安装于所需要保护或探测区域的天花板上,因火灾中烟雾比空气轻,更容易向上飘散&#xff0…

在FPGA上快速搭建以太网

在本文中,我们将介绍如何在FPGA上快速搭建以太网 (LWIP )。为此,我们将使用 MicroBlaze 作为主 CPU 运行其应用程序。 LWIP 是使用裸机设计以太网的良好起点,在此基础上我们可以轻松调整软件应用程序以提供更详细的应用…

【MySQL基础】一条查询和更新语句的执行流程01-02

目录 MySQL的基本架构示意图连接器查询缓存分析器优化器执行器重要的日志模块:redo log重要的日志模块:binlog更新时redo log 和 binlog 两阶段提交 例如在执行下面这个查询语句: mysql> select * from T where ID10;MySQL的基…

Apache Hive之数据查询

文章目录 版权声明数据查询环境准备基本查询准备数据select基础查询分组、聚合JOINRLIKE正则匹配UNION联合Sampling采用Virtual Columns虚拟列 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程序员或相关权利…

GPT引领前沿热点、AI绘图

GPT对于每个科研人员已经成为不可或缺的辅助工具,不同的研究领域和项目具有不同的需求。如在科研编程、绘图领域: 1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言,都可以为你提供相关的代码示例。 2、数据可…

vue2中实现 TDesign 树形懒加载

之前我有写过Element ui的树形懒加载 其主要是通过load函数来实现 而TDesign也是照虎画猫 他也是主要靠load 我们先来看一个基本的组件 <template><t-tree :data"items" :load"load" /> </template><script lang"jsx">…