BEV(0)---Transformer

Transformer模型通过self-attention机制处理序列数据,取代了传统的RNN,解决了并行计算问题。self-attention允许模型考虑全局信息,而multi-headself-attention则增强了这种能力。此外,PositionalEncoding用于为模型添加位置信息。Transformer相比RNN具有并行性优势,与CNN相比,其全局注意力机制更灵活但需要更多数据训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 Transformer

Transformer是一个Sequence to Sequence model,特别之处在于它大量用到了self-attention,替代了RNN,既考虑了Sequence的全局信息也解决了并行计算的问题。
在这里插入图片描述

1.1 self-attention:

①. 输入x1 ~ x4为一个sequence,每一个input (vector)先乘上一个矩阵W得到embedding,即向量a1 ~ a4。将每个a1 ~ a4分别乘上3个不同的可学习参数矩阵,Wq, Wk,Wv,次时每个向量ai分别得到3个向量qi,ki,vi
②. 拿每个query q 对每个key k做attention, 获得α:
③. 将计算结果α1i分别进行softmax,同时与其对应的vi进行相乘,最终将他们结果相加,即可获得bi,此时bi中考虑到了整个sequence的信息。

在这里插入图片描述
②. 拿每个query q 对每个key k做attention, 获得α:
d是q跟k的维度。因为q.k的数值会随着dimension的增大而增大,所以要除以dimension的开方,相当于归一化的效果。在这里插入图片描述
在这里插入图片描述
③. 将计算结果α1i分别进行softmax,同时与其对应的vi进行相乘,最终将他们结果相加,即可获得bi,此时bi中考虑到了整个sequence的信息。

在这里插入图片描述在这里插入图片描述

矩阵计算形式如下:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 Multi-head self-attention:

还有一种multi-head的self-attention,以2个head的情况为例:
①. 由ai生成的qi进一步乘以2个转移矩阵变为qi1和qi2 ,同理由ai生成的ki 进一步乘以2个转移矩阵变为ki1和 ki2,由ai生成的vi进一步乘以2个转移矩阵变为vi1和vi2
②. 接下来qi1与ki1做attention后与vi1相乘,qi1与kj1做attention后与vj1相乘,两者相加获得bi1。同理得到bi2
③. 将bi1和bi2concat起来,再乘以一个转移矩阵调整维度,使之与bi1和bi2的维度一致。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

1.3 Positional Encoding:

1.3.1 Positional Encoding目的

为了给self-attention添加位置信息,给每一个位置规定一个表示位置信息的向量 ei,让它与ai 加在一起之后作为新的ai参与后面的运算过程,但是这个向量ei是由人工设定的,而不是神经网络学习出来的。每一个位置都有一个不同的 ei

在这里插入图片描述

1.3.2 Positional Encoding公式

PE:位置编码结果
pos: 输入向量在sequence中的位置
2i、2i+1:Positional Encoding的维度,i的取值范围[0, 1, 2…, dmodel/2)。

示例:pos=1时:
PE(1) = [sin(1/100000/512), cos(1/100000/512), sin(1/100002/512), cos(1/100002/512), …, sin(1/10000512/512), cos(1/10000512/512)]
在这里插入图片描述

1.3.3 公式优势:

①. 保证了每个位置有唯一的positional encoding。
②. 使PE能够适应比训练集里面所有句子更长的句子,假设训练集里面最长的句子是有 20 个单词,突然来了一个长度为 21 的句子,则使用公式计算的方法可以计算出第 21 位的 Embedding。
③. 可以让模型容易地计算出相对位置,对于固定长度的间距 ,任意位置的PEpos+k 都可以被PEpos的线性函数表示

1.4 self-attention 与RNN、CNN的对比

1.4.1 self-attention与RNN

单向RNN只能获得前面输入的信息对于后面输入的信息是未知的,双向RNN改变了单向RNN的这一劣势,但仍然是串行运算,而self-attention不仅可以获得全局信息,同时可以并行运算。

1.4.2 self-attention与CNN

self-attention去处理一张图片时,使用的是某一个pixel产生的query与其余所有pixel产生的key进行相关度计算,这考虑到了全局信息,而CNN则只考虑到了卷积核内部的pixel之间的信息。所以CNN可以看作是一种简化版本的self-attention。
self-attention可以看作感受野自适应的CNN,因此其更flexible,因而需要的训练数据量也更多。
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值