Transformer论文精读

Transformer:Attention is all you need

Abstract:

在主流的序列转录模型(sequence transduction models:给一个序列,生成另一个序列),主要依赖循环或者卷积神经网络,一般是用encoder和decoder的架构。表现最好的模型通常在encoder和decoder之间加入一个注意力机制。

我们提出的一个简单的架构,Transformer,仅仅依赖注意力机制,没有用循环或者卷积神经网络。

在机器翻译任务上表现很好

Introduction:

Background:(相关工作)

1.如何使用卷积神经网络替换掉循环神经网络,这样做可以减少时序计算。但卷积神经网络对比较长的序列难以建模。如果对于跨度很长的序列,需要很多卷积层。但如果使用注意力机制,只用一层就可以。但卷积的好处是可以有多个输出通道,一个通道可以识别不同的模式。所以提出了多头注意力机制。

2.自注意力机制

3.memory network

Model Architecture

img

大多数神经序列转录模型都是一个encoder-decoder架构,这个encoder将一个输入(x1,…,xn)映射为Z=(z1,…,zn)。其中x1是一个词,z1是其对应的向量。编码器的输出(z1,…,zn)会作为解码器的输入。解码器的输出为一个长为m的序列(y1,…,ym)【例如输入10个英文单词,但对应的中文可能只有5个词】

解码器是一个自回归架构,过去时刻的输出又是当前时刻的输入。例如:预测y1,需要输入Z,预测y2,需要输入Z和y1。且输出是一个词一个词。

Encoder

编码器由六个一致的层堆叠形成,每层有两个子层,第一个是多头注意力机制,第二层是一个简单的MLP(positionwise fully connected feed-forward network)。在两个子层间有残差连接。最后是一个layer normalization。每个子层的输出为:LayerNorm(x+Sublayer(x))

在这里插入图片描述

因为残差连接输入和输出的维度要求是一样的,所以这里规定所有层的输出维度为512,包括embedding和两个子层。所以在Encoder中只有两个参数,层数N和维度d。

batch norm(对特征归一化):将一个小批量二维矩阵的数据,每一列转换为均值为0,方差为1的数据。做法是,将该特征列数据:

(每个数据 - 该列均值 / 该列方差)

layer norm(对样本归一化): 将一个小批量二维矩阵的数据,每一行转换为均值为0,方差为1的数据。

layer norm的好处是计算均值和方差较为稳定。因为每个样本的长度这里是不固定的,在batch norm中会很不稳定。

在这里插入图片描述

Decoder

解码器的基本结构和编码器类似,也是6个层堆叠形成,不同的是,每个子层有三部分组成。且每个子层间有残差连接,最后是一个layer normalization。解码器的第一个层是一个mask(掩码),其作用是确保预测t时刻的输出时,输入数据均来自t时刻之前。

Attention

主要是一个注意力函数,其作用是将一个query和一系列key-value对映射为一个output。所有这些query、key、value、output都是向量。output是value的一个加权和,所以output的维度和value是一样的。每个value对应的权重是由其key和query的相似度计算得来。不同注意力机制的权值计算方式不同。

Scaled Dot-Product Attention

1.queries和keys都是维度为 d k d_k dk的向量。values维度为 d v d_v dv

2.用query和所有key做点乘

3.分别除以 d k \sqrt{d_k} dk

4.用softmax转换为概率

实际运算时,会以矩阵的方式执行

在这里插入图片描述

有两种通用的注意力机制,分别是additive attention和dot-product(multiplicative)attention。Dot-product attention和这里的是一致的,除了加入了除以 d k \sqrt{d_k} dk 原因在于,当query和key的向量维度较小时,乘积结果一般不会过大或者过小,因此softmax的结果也不会集中在0或者1附近。但维度较大时,乘积结果过大或者过小,softmax后会靠近1或0,在这些区域,梯度较小。

additive attention的权值计算采用单隐藏层的前馈神经网络。两种机制的复杂度相似,但后者在时间和空间上效率更高。

在这里插入图片描述

Mask:因为注意力机制会看到所有时刻的信息,但在预测时刻t的输出时,只需要t时刻之前的信息。所以mask将 Q K d k \frac{QK}{\sqrt{d_k}} dk QK的t时刻之后的值全部变为一个非常小的负数,这样在Softmax后,这些位置的权值就为0。

Multi-Head Attention
for i in h:先将V、K、Q映射到低维 #每次映射都会学到不一样的方法,在投影后的空间中可以匹配不同模式head_i = attention(V、K、Q)  #将投影后的V、K、Q输入Attention
Concat(head_1,...,head_h) W^O #将每个头的结果concat,并将最后的结果再次投影到低维空间 

Position-wise Feed-Forward Networks

简单说就是一个单隐藏层的MLP,Position-wise指的是,这个MLP是针对每个词来做,每个词上都有一个MLP。

在这里插入图片描述

其中x作为encoder的输出,是一个词的向量,本文中长512,W1会将其映射到2048,W2又映射为512

Embedding and Softmax

embedding模型出现三次,分别在encoder和decoder以及softmax前的Linear层。且这三处模型拥有相同的权值,并且乘了 d m o d e l \sqrt{d_{model}} dmodel ,为了和后面的Positional Encoding在量级上匹配。

因为对于维度较大向量,归一化后,每个位置的值都比较小,而后续需要和Position 向量相加,后者范围在(-1,1),需要保证两者数量级一致。

Positional Encoding

因为输入的是一个序列,但Attention本身是不会涵盖时序信息的,本质是对输入向量的一个加权和,意味着如果将输入词打乱,得到的结果均相同。

这里的做法是,对每个词在句子中的位置,生成一个和Embedding同维度的向量,来表示位置信息。

在这里插入图片描述

最后将embedding和位置向量相加

Why self-attention

在这里插入图片描述

比较的第一列是每层模型的复杂度,第二列是每个操作需要等待前面的多长时间,越小越好,第三列是每个信息从一个数据点走到另一个数据点要多远,越小越好。

自注意力的矩阵相乘的时间复杂度 O ( n 2 d ) O(n^2d) O(n2d)。因为矩阵乘法,所以操作等待时间很短,而且Attention的输出是由输入的加权和组成,所以可以获取来自任意位置的信息。

最后的受限的自注意力,是指query只跟最近的r个邻居算相似度

Training Data and Batching(实验)

在WMT 2014英语-德语数据集,包含450万个句子对。将英语和德语的词根一起作为一个词典,包含37000个token,这样可以在 encoder和decoder中贡献权重。

2.再将三者送入之前

Conclusion

第一个仅仅依赖注意力机制的序列转录模型,用多头注意力(multi-headed self-attention)取代了在encoder-decoder架构中被通常使用的循环层。

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

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

相关文章

Buildroot和Debian文件系统修改方法

本文档主要介绍在没有编译环境的情况下,如何修改buildroot和debian文件系统方法,如在buildroot文件系统中添加文件、修改目录等文件操作,在debian文件系统中,安装软件库、工具、扩大文件系统空间等等操作。 1.Debian文件系统 …

算法 | hbut期末复习笔记

贪心选择策略:所求问题的整体最优解可以通过一系列局部最优的选择(贪心选择)得到 最优子结构:问题的最优解包括了其子问题的最优解 回溯法:具有限界函数的深度优先搜索法 回溯法的解空间:子集树&排列…

全新抖音快手小红书视频解析去水印系统网站源码

这个系统支持几十种平台,包括抖音、快手小红书以及其他热门社交媒体平台。它可以帮助轻松地下载这些平台上的任何视频,并去除其中的水印,让你可以自由地保存和分享这些视频。 使用方法: 上传压缩包解压,网站信息在inc…

【JAVASE】面向对象编程综合案例--------模仿电影信息系统

需求: (1)展示系统中的全部电影(每部电影展示:名称、价格) (2)允许用户根据电影编号(ID)查询出某个电影的详细信息。 目标:使用所学的面向对象…

洛谷B2095 白细胞计数

#include<bits/stdc.h> using namespace std; double a[520],cnt,min199999999,max1-1,max2,min2,max3-1; int main(){int n;cin>>n;for(int i1;i<n;i){cin>>a[i];min1min(min1,a[i]);if(a[i]min1){min2i;}//确定最大值 max1max(max1,a[i]);if(a[i]max1){…

基于SVPWM矢量控制的无速度传感器电机控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于SVPWM矢量控制的无速度传感器电机控制系统simulink建模与仿真&#xff0c;包括电机&#xff0c;SVPWM模块&#xff0c;矢量控制器模块等。 2.系统仿真结果 3.核心程序与模…

Java+前端+Vue 后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码

Java前端Vue 后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码 UWB定位系统由硬件定位设备、定位引擎和应用软件组成。该定位系统应用软件支持PC端和移动端访问&#xff0c;并提供位置实时显示、历史轨迹回放、人员考勤、电子围栏、行为分析、智能巡检等功能…

gcc源码分析 词法和语法分析

gcc源码分析 词法和语法分析 一、输入参数相关1、命令行到gcc二、词法与语法分析1、词法分析1.1 struct cpp_reader1.2 struct tokenrun/struct cpp_token/lookahead字段1.3 struct ht2.1 语法符号相关的结构体c_token定义如下:2.2在语法分析中实际上有多个API组成了其接口函数…

vue2中的插槽使用以及Vuex的使用

插槽分为默认插槽&#xff0c;定名插槽还有作用域插槽 一.默认插槽&#xff0c;定名插槽 //app.vue <template> <div class"container"><CategoryTest title"美食" :listData"foods"><img slot"center" src&qu…

使用 Python 和 Selenium 进行网络抓取

如果你今天的工作是从竞争对手的网站上抓取定价页面信息。你会怎么做&#xff1f;复制粘贴&#xff1f;手动输入数据&#xff1f;当然不行&#xff01;他们绝对会花费你超级多的时间&#xff0c;而且你可能会犯一些错误。 需要指出的是&#xff0c;Python已经成为最流行的数据…

使用 Qwen-Agent 将 8k 上下文记忆扩展到百万量级

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 汇总合集…

C# 绘图及古诗填字

绘图 绘图的结果如下&#xff1a; 绘图部分主要使用了 Bitmap、Graphics 具体的函数是 MakeMap 入参说明 string bg : 背景图 Rectangle rect &#xff1a;绘图区域 int row_count &#xff1a;行数 int col_count &#xff1a;列数 string fn &#xff1a;保存到的文件 …

Unity Standard shader 修改(增加本地坐标裁剪)

本想随便找一个裁剪的shader&#xff0c;可无奈的是没找到一个shader符合要求&#xff0c;美术制作的场景都是用的都标准的着色器他们不在乎你的功能逻辑需求&#xff0c;他们只关心场景的表现&#xff0c;那又找不到和unity标准着色器表现一样的shader 1.通过贴图的透明通道做…

【Java 百“练”成钢】Java 基础:类和对象

Java 基础&#xff1a;类和对象 01.打印信息02.打印类的简单名称03.打印类的 ClassLoader04.获取类的方法05.获取类的Package06.创建一个对象数组07.计算圆的面积08.计算圆的周长09.创建具有私有访问修饰符的成员10.创建带访问修饰符的成员11.将对象作为参数传递12.通过类对象获…

关于智慧校园建设的几点建议

随着科技的迅猛发展&#xff0c;智慧校园建设已成为现代教育的重要组成部分&#xff0c;对于提升教育质量、改善学生学习环境具有重要意义。为此&#xff0c;我提出以下几点建议&#xff0c;以帮助智慧校园建设更加有效和可持续。 首先&#xff0c;应注重基础设施建设。智慧校园…

Anaconda3 下载安装卸载

1、下载 官网链接&#xff1a;Download Now | Anaconda Step1&#xff1a;进入官网 Anaconda | The Operating System for AI Step2&#xff1a;进入下载页面&#xff0c;选择要Anaconda软件安装包 2、安装 Step1: 点击 Anaconda3-2024.02-1-Windows-x86_64.exe 安装包进行安…

线控转向 0 -- 线控转向介绍和专栏规划

一、线控转向介绍 高阶自动驾驶核心部件&#xff1a;英创汇智线控转向解决方案 _北京英创汇智科技有限公司 (trinova-tech.com) 线控转向的系统组成详细介绍大家可以看上面这个链接&#xff1b;我这里也只从里面截取一些图片&#xff0c;简单说明。 1、结构组成 线控转向分为…

如何打造不一样的景区文旅VR体验馆项目?

近年来影院类产品迅速火爆&#xff0c;市面上的产品越来越多&#xff0c;投资者可以说是挑花了眼。为了助力投资者实现持续盈利&#xff0c;今天来给大家分析目前普乐蛙大爆新品悬空球幕飞行影院与其他5D/7D影院有哪些区别&#xff0c;给大家的创业投资之路避避雷~ 那我们正式开…

vue26:vue的环境搭建

vue环境安装配置 在点击上方链接前&#xff0c;注意&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 下方的红字&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&am…

计算机网络--应用层

计算机网络–计算机网络概念 计算机网络–物理层 计算机网络–数据链路层 计算机网络–网络层 计算机网络–传输层 计算机网络–应用层 1. 概述 因为不同的网络应用之间需要有一个确定的通信规则。 1.1 两种常用的网络应用模型 1.1.1 客户/服务器模型&#xff08;Client/Se…