赞
踩
左半边是Encoder,右半边是Decoder。
Vision Transformer取了Transformer的左半边。包含
Transformer替代的是RNN(循环神经网络),RNN本身是一种训练网络,天然包含句子之间的位置信息,Tranformer用attention替代了RNN,所以就缺乏位置信息。模型没有办法知道每个单词在句子中的相对位置和绝对位置。
每个奇数时间步,使用余弦函数创建一个向量。
这样就成功了为网络提供了每个向量的信息。选用正弦和余弦函数,是因为他们有线性特性。
它的内部如下:
多头注意力机制是多个自注意力。
多头注意力模块运用了自注意力,自注意力机制可将输入的每个单词和其它单词关联起来。
比如:模型将You与How 和 are联系起来。
为了实现自注意力,将输入分别输入到三个不同的全连接层,来创建查询向量、键向量、值向量。
查询向量、键向量、值向量来自检索系统,
Q:例如当在youtube上输入一个查询词Q,搜索某个视频。
K:搜索引擎将你的查询值映射到一组键K中(如视频标题,视频描述)。
V:与数据库的候选视频相关联。
查询和键经过点积矩阵乘法产生一个分数矩阵。分数矩阵确定了一个单词应该如何关注其它单词。
(MatMul)点乘获得分数矩阵:
分数矩阵确定一个单词应该如何关注其它单词。
每个单词都会有一个与时间步长中的其他单词相对应的分数。分数越高,关注度越高。这就是查询如何映射到键的。
将查询和键的维度开平方将得分缩放,因为这样可以让梯度更稳定,因为乘法可能会产生爆炸效果。
对缩放后的得分进行softmax计算,得到注意力权重,进行softmax计算后,较高的得分会得到增强,较低的得分得到抑制。
得到的是注意力权重。
将注意力权重 和 值向量相乘。得到输出向量。
为了使这个计算成为多头注意力计算,在应用自注意力之前将查询、键、值分成N个向量。分割后的向量分别经过相同的自注意力,每个自注意力过程称为一个头,每个头产生一个输出向量。这些向量经过最后的线性层之前被拼接成一个向量。
理论上,每个头都会学到不同的东西。从而为编码器模型提供更多的表达能力。
多头注意力是一个模块,用于计算输入的注意力权重,并生成一个带有编码信息的输出向量,指示序列中每个词应该如何关注其它所有词。
接下来,使用残差连接,将多头注意力机制输出向量,加到原始输入上。
残差连接的输出经过层归一化(LayerNorm)。归一化后的残差输出被送入点对点前馈网络进行进一步处理。点对点前馈网络是几个线性层,中间有ReLu激活函数。
残差连接有助于网络训练,因为它允许梯度直接流过网络。
使用层归一化来稳定网络,显著减少所需训练时间。
可将编码器堆叠n次,以进一步编码信息。其中每一层都有机会学习不同的注意力表示。从而有可能提高transformer网络的预测能力。
超强动画,一步一步深入浅出解释Transformer原理!
https://www.bilibili.com/video/BV1ih4y1J7rx/?spm_id_from=333.999.top_right_bar_window_history.content.click&vd_source=ebc47f36e62b223817b8e0edff181613
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。