Transformer原理个人解读

1.为什么要有Transformer

任何一个新事物的出现都来源于对于传统方法的批判和新技术基础的出现。

1.1 传统RNN-Based Model的缺点

以NLP任务为背景,来分析一下传统RNN-Based Model的缺点。

(1)不支持并行,效率低

我们都知道RNN模型是从序列的一边看到另一边,并且用隐藏层记录之前看过序列的信息“记忆”,这样的方法要求每一个序列信息处理的时候都必须看完之前的序列信息,这也就造成了模型无法并行计算,效率低下。

(2) 记忆能力有限

RNN的隐藏层向量维度有限,当阅读的序列长度较大时,后续的节点很难保证对之前节点的记忆保持完整,这样会造成模型处理任务的性能下降。

1.2 Attention方法的出现

Attention原理分析可以参考我上一篇blog《Attention的基本原理与模型结构》
可以发现,Attention方法可以并行的计算节点和对于之前序列的关联度,也可以通过只关注几个关联度高的节点很好的解决RNN Model记忆力不足的问题。

2.Transformer的原理与结构

在这里插入图片描述

2.1Transformer的Attention——Self-Attention

self-Attention是Transformer的核心机制,他使得模型既能够进行并行计算,又可以防止RNN记忆不足的问题。
在这里插入图片描述
self-Attention过程先通过一层全连接提取原始向量的特征,然后通过:
Q = W q a K = W k a V = W v a \begin{aligned} Q &= W^qa\\ K &= W^ka\\ V &= W^va \end{aligned} QKV=Wqa=Wka=Wva
其中,Q类似搜索引擎中的搜索词,代表用该位置的单词“搜索”其他单词的抽象特征;K类似搜索引擎中的词条关键词,代表该单词自身的抽象特征;V代表该单词自身的值特征。
通过每个词用q去搜索其他词的k可以得到词之间的Attention关联度:
α i , j = q i k j d \alpha_{i,j} = \frac{q^ik^j}{\sqrt{d}} αi,j=d qikj
d是q,k的维度,用来平衡结果,使方差降低。
而后通过Softmax归一化Attention值:
α ^ i , j = e α i , j ∑ k e α i , k \hat{\alpha}_{i,j} = \frac{e^{\alpha_{i,j}}}{\sum_ke^{\alpha_{i,k}}} α^i,j=keαi,keαi,j
从句子的角度来看,这里其实是句子中自己的词和词在做Attention,因而叫self-Attention。
句子的输出特征为:
b i = ∑ j α ^ i , j V i b_{i} = \sum_j\hat{\alpha}_{i,j}V^i bi=jα^i,jVi
可以发现,我们的每一步都可以改写成矩阵乘法,也就意味着可以支持GPU加速并行计算:
在这里插入图片描述

2.2Positional Encoding

从Attention机制我们可以看出来,每一个单词的输出仿佛只与句子有哪些单词有关系,和位置无关,这不是我们想要的。
e.g. 我打了他 vs 他打了我
这是同样四个字的排列组合,意思显然相反,但如果用self-Attention处理后每一个字向量的输出应该都是一样的。因此,我们需要在原始特征上加一个位置向量,表达词的位置信息。
在这里插入图片描述
其中,PE为二维矩阵,大小跟输入embedding的维度一样,行表示词语,列表示词向量;pos 表示词语在句子中的位置; d m o d e l d_{model} dmodel 表示词向量的维度;i表示词向量的位置。因此,上述公式表示在每个词语的词向量的偶数位置添加sin变量,奇数位置添加cos变量,以此来填满整个PE矩阵,然后加到input embedding中去,这样便完成位置编码的引入了。

2.3 Multi-head

在这里插入图片描述

Multi-head我在学习的时候一直挺迷惑,因为多头的方法本质上就是做多组一样的self-Attention,最后将结果拼接起来通过全连接层学习。感觉每一个头应该学到一样的东西,查阅论文《A Multiscale Visualization of Attention in the Transformer Model》发现,大部分头学到东西是一样的,而少数会有不同。分析认为应该是参数初始化的随机性导致的。因此Multi-head实际上是一种类似Dropout的机制,降低参数随机初始化带来的不稳定性。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Transformer in Transformer是一种用于处理图像的神经网络架构。在这个架构中,有两个层级的Transformer块,分别是Outer Transformer和Inner Transformer。Outer Transformer处理图像的Patch级别信息,即将图像切分成多个Patch,并将每个Patch作为输入进行处理。而Inner Transformer则处理更细粒度的信息,即将每个Patch再次切分成更小的Patch,并将其与Outer Transformer的输出进行融合。这样,Transformer in Transformer能够同时捕捉到图像的整体特征和局部细节,提高了对图像的理解能力。 需要额外说明的是,Transformer模型最初是应用于自然语言处理领域的,但最近在计算机视觉领域也得到了广泛应用。因此,在涉及Transformer的图像处理论文中,可能会省略一些在自然语言处理领域已经形成共识的内容,这可能会使计算机视觉领域的研究人员感到困惑。但是,对于理解Transformer in Transformer这一概念,可以将其视为一种在图像领域应用Transformer的方法,通过组合Outer Transformer和Inner Transformer来提高图像处理的性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [TNT-Transformer in Transformer](https://blog.csdn.net/MengYa_Dream/article/details/124591473)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [一文读懂transformer(CV专享)](https://blog.csdn.net/KANG157/article/details/111499713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值