Transformer模型

目录

1. 概述

2. Model Architecture

2.1 自回归

2.2 编码器与解码器

2.3 Attention

2.4 Attention—mask 

2.5 Multi-Head Attention  

2.6 自注意力使用

2.7 point-wise feed forward network

2.8 embeddings

2.9 positional Encoding


1. 概述

        之前的模型,如RNN等,需要按时序做运算,对与并行设备能够减少运算时间这一方法并不能运用得很好,比如ht需要由之前ht-1的隐藏状态(包含历史信息)来完善,但如果序列很长的话,以往的历史信息很容易被丢失。

        而Transformer模型中的attention可以进行并行运算。Multi-Head-Attention多头注意力机制可以模拟卷积神经网络多输出通道的一个效果

文章选图来自:Attention Is All You Need

地址:https://arxiv.org/abs/1706.03762

2. Model Architecture

2.1 自回归

编码器将句子中词的表示(x1,...,xn)变为对应的词向量z=(z1,...,zn),解码器拿到编码器的输出z,生成一个长为m的序列(n与m可以是不一样长的,比如中英翻译时句子可能是不一样长的)。auto-regressive:编码器可以看到完整的句子,但是在解码时只能一个一个的生成。z生成(y1,...,ym),在生成yt时,可以将y1到yt-1全都拿到,即在过去时候的输出可以作为当前时刻的输入。

2.2 编码器与解码器

编码器:

解码器:

        在解码器做预测时,不应该看到之后的那些时刻的输出。而在注意力机制中,每一次都能看到完整的输入,所以需要避免这个情况的发生。即在解码器训练的时候,在预测第t个时刻的输出时,不应该看到t时刻以后的那些输入。可以用一个带掩码(masked)的注意力机制,保证训练和预测时候的行为是一致的。

2.3 Attention

value、key与query

output是value的加权和。对于每一个value的权重,是这个value对应的key与查询query的相似度算来的。(权重等价于query和你对应的key的那个相似度,相似度越大权重越大)

注意:不同相似函数会导致不一样的注意力版本。

Transformer中的注意力机制:

将query与每个key做内积作为相似度,内积值越大,表示相似度越高。(假设:给一个query,再给n个key value pair,则query会和每个key做内积,算出n个值,再放入softmax得到n个非负且加起来为1的一个权重,将权重作用在value上得到输出)

2.4 Attention—mask 

对于第t时间的qt即query,在做计算时应只看k1,...,kt-1,不看kt及之后的。但是计算也可以算,我们加入mask,即对于qt和kt和之后计算的值换成一个非常大的负数,在softmax出来后对应的那些权重都会变成0。实现只用到v1,...,vt-1对应权重的效果。

2.5 Multi-Head Attention  

将query、key、value投影到一个低维,再做h次的注意力函数,将每一个函数的输出并在一起,再投影回来,可以得到最终的输出。

 V、K、Q进入线性层(投影到比较低的维度),放入Scaled Dot-Product Attention中做h次(多头)运算并得到h个输出,将这些向量合并在一起,最后做一次线性投影。

使用多头注意力机制的作用:投影的参数可以学习,去匹配不同模式需要的相似函数。类似卷积神经网络的多输出通道。

将不同头的输出结果concat起来,投影到w^o中。对每一个头,把q、k、v通过一个不同的可以学习的W^{Q}W^{K}W^{V}投影到低维上面,再做注意力函数。 

2.6 自注意力使用

        attention是如何在编码器和解码器之间传递信息时起到作用?

        回答:去有效的把编码器的输出根据我们想要的东西给拎出来。即在解码器时输入的不一样,会根据当前的向量去在编码器的输出里面挑选我们感兴趣的东西

2.7 point-wise feed forward network

        在我们输入的序列里,每一个词对应一个点。把一个MLP(多层感知器)对每一个词作用一次,做一个语义空间的转换

下图是b站up主:跟李沐学AI

Transformer与RNN对于序列信息的使用(左Transformer 右RNN):

2.8 embeddings

由于输入是一个个词,需要将其映射为一个向量。embedding可以给任何一个词,学习一个长为d的向量来表示。编码器需要embedding,解码器的输入也需要embedding,在softmax前面的线性也需要embedding,且这三个embedding是一样的权重。

2.9 positional Encoding

由于attention不会有时序信息,则在处理时序数据时需要把时序信息加进来。例如:RNN是将上一个时刻的输出作为下一个时刻的输入来传递历史信息。attention的做法是在输入里面加入时序信息,比如一个词在位置i,将i这个位置的数字加到输入里面(即将词在句子中的位置也放入输入里)。

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

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

相关文章

Shiro快速入门之三

一、前言 接Shiro快速入门之二,上篇侧重于介绍认证,这篇介绍一下Shiro的授权,先初始化5张表的数据。 注:创建三条权限记录,一个admin角色分配查询和添加用户权限,一个账户qingcai18036授予管理员角色。 二…

数据结构:串(定义,基本操作,存储结构)

目录 1.串的定义2.串的基本操作3.字符集编码4.串的存储结构1.顺序存储2.链式存储 1.串的定义 串,即字符串( String)是由零个或多个字符组成的有限序列。 一般记为s ‘a1a2……an’ (n ≥0) 其中,S是串名,单引号括起来的字符序列是…

FCOS难点记录

FCOS 中有计算 特征图(Feature map中的每个特征点到gt_box的左、上、右、下的距离) 1、特征点到gt_box框的 左、上、右、下距离计算 x coords[:, 0] # h*w,2 即 第一列y coords[:, 1] l_off x[None, :, None] - gt_boxes[..., 0][:, No…

使用U盘安装ubuntu22操作教程

U盘启动 将烧录好的U盘,插上待安装系统的电脑 服务器在开机之后长按【ESC键】进入BIOS选项中,选择对应的U盘启动 如下图,在界面中“USB”选项就是我的U盘,第一启动项选择U盘启动,其他启动项不动,选择后按F…

【推荐】一款AI写作大师、问答、绘画工具-「智元兔 AI」

在当今技术飞速发展的时代,越来越多的领域开始应用人工智能(Artificial Intelligence,简称AI)。其中,AI写作工具备受瞩目,备受推崇。在众多的选择中,智元兔AI是一款在笔者使用过程中非常有帮助的…

使用gitflow时如何合并hotfix

前言 在使用 git flow 流程时, 对于项目型的部署项目经常会遇到一个问题, 就是现场项目在使用历史版本时发现的一些问题需要修复, 但升级可能会有很大的风险或客户不愿意升级, 这时就要求基于历史版本进行 hotfix 修复. 基于历史发布版本的缺陷修复方式不同于最新发布版本的补…

SQL使用

--天空会的像哭过,离开你以后 并没有更自由 SQL进行数据的删除 一、删除delete 语法 delete [from] 表名称 where 条件数据删除,不能删除某一列,因为删除是对记录而言 2.1 删除是一条一条删除,每次删除都会将操作写入日志文件 删…

JPA Buddy快速创建update、find、count、delete、exists方法

JPA Buddy快速创建update、find、count、delete、exists方法,JPA默认提供的CrudRepository\JpaRepository提供的方法比较少,一般我们会手写一些方法,这里我们选择通过JPA Buddy快速生成,之前文章中讲到了JPA Buddy原本是IDEA收费插…

Word软件手动安装Zotero插件

文章目录 Word软件手动安装Zotero插件方法一方法二 参考资料 Word软件手动安装Zotero插件 方法一 关闭word在zotero中依次点击编辑—首选项—引用—文字编辑软件—重新安装加载项Microsoft word 方法二 寻找Zotero.dotm存储位置, 例如D:\Program Files\Zotero\ext…

kernelbase.dll故障怎么处理?Kernelbase.dll故障的解决方法

在使用Windows操作系统过程中,有可能出现kernelbase.dll故障的情况。本文将详细介绍几种修复kernelbase.dll文件的方法,并对这个重要的dll文件进行简要的介绍。 一.kernelbase.dll文件概述 Kernelbase.dll是Windows系统中的一个关键动态链接库&#xff…

阿里云优惠券介绍、作用、领取入口及使用教程

阿里云是阿里巴巴集团倾力打造的云计算品牌,提供丰富多样的云计算产品及服务,为了吸引用户,阿里云经常推出各种优惠活动,其中就包括阿里云优惠券的发放。本文将为大家详细介绍阿里云优惠券的作用、领取入口以及使用教程。 一、阿里…

leetcode:21. 合并两个有序链表

一、题目 函数原型: struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) 二、思路 合并两个有序链表为一个新的升序链表,只需要遍历两个有序链表并比较结点值大小,依次将较小的结点尾插到新链表即可。 三、代码…