Transformer入门Transformer和CNN之间的区别

跟风,听说最近Transformer很热,那肯定有其过人之处,今天大概看了一下最基础版的Transformer,简单说说体会和理解吧,不一定对,希望路过的大神指点。

要说是革命性的变革,那显然不是,Transformer和CNN以及RNN等都是机器学习的范畴,要说一点没变,那也不是,Transformer最大的特点,个人理解,是其Self-Attention机制,至于说这个机制是从哪儿得到的启发,暂不多说,搞过CNN的都知道。搞CNN的都习惯一个图片矩阵,那接下来的见解,我就以二维矩阵来说。

preview还是原文的图,这里的X是将每一个单词embed到N维的空间中,每一个词对应一个行向量,将一个句子的每一个单词都映射过来,组成一个大小固定的矩阵。对于不同单词数的句子,使用padding的方式扩充。那矩阵到底有多少行?没错,就是你猜的那样,数据库中每个句子的最大单词数。英语老师天天说结合语境,结合语境,那其实就是上下文的关系,这就是Self-Attention的核心思想。具体到数学表达上,这个关系的强弱,就是相关性,那就来劲儿了,协方差矩阵!没错,就是这货,但是原文不是这么描述的,这是本人看完后的第一印象,本篇文章会一直沿用这个词,但是文中并不是标准的协方差,暂且称其为“伪协方差”吧。这里如果对每个单词的embedding编码直接相关,那没意义啊,我们还没有理解这个编码,因此,在Self-Attention的第一步就是做一个矩阵映射,这一组矩阵就是Self-Attention中要训练的矩阵:

W_{i}^{Q},W_{i}^{K},W_{i}^{V},i=0,1,...,7

至于为啥是Multihead  self-attention,原文是说将编码投影到多个子空间中,个人理解这里应该是为了增加几组独立权重,增加参数量,以提升表达能力,跟Inception的感觉有点类似,但是没有Inception多尺度的理解那么直观。经过这一组投影后,得到一组编码:

Q_{i},K_{i},V_{i},i=0,1,...,7

这些编码,每一行的维度都固定为64。多头自注意力的头数h,取8。这是论文中为了对比单头注意力和多头注意力,保证多头的总维度依旧是512。作者认为,多头注意力使得模型有能力学习到不同子空间的表示。而单头注意力,相当于将所有这些不同子空间取平均了,因而抑制了这一能力。这三组矩阵的名称分别是query/key/value-matrix。

看到现在,这self-attention到底是个啥?关键点来了。我们刚才已经说了,上下文的关系不是词编码直接相关,而是需要映射,这个映射矩阵十分关键,关系到整个编码器的性能,因此,经过投影后的Q_{i},K_{i},V_{i},i=0,1,...,7,就是词编码后经过语义理解的编码,可以进行相关了,论文是让Q和K负责产生权重,V就老老实实代表编码值,经过投影后,Q和K的每一行都是一个单词的投影向量,那就直接把Q和K^T相乘,得到伪协方差矩阵,这里并不是标准的协方差,因为没有去均值,但是意思都差不多,就是两个向量的点积。这个伪协方差矩阵充当的作用就是权重,权重大的会被注意到,也即是self-attention。然后除以维度的平方根,这里的维度是映射后的编码维度,是512/8=64,那么开平方后是8。然后再来个softmax,这里的softmax是针对伪协方差矩阵的每一行进行的,保证每一行的值和为1。softmax后的伪协方差矩阵与V矩阵点积就得到对应组的输出Zi。Zi的行数还是最大单词数,列数是512/8,将8组Zi拼接即可得到与单头self-attention相同维数的编码矩阵。也就是说,下面这个公式是self-attention的核心:

最后将这些scaled的值通过Wo映射回去,与X的形状一致,也就是下一次self-attention的输入。

Transformer的下一步就是前馈网络,熟悉的全连接,全连接层的输入输出都是512,中间层是2048:

这个全连接层在每一层的不同时间步是共享的,但是在不同层是独立的。我是理解是,所有单词都共享这两个全连接层的参数?

然后就是残差网络,输入和该层输出相加后layer normalization:

因为模型不包含循环或卷积,因此需要加入时间序列信息,原文是在编解码器的embedding层后加入的,

 

解码器中有个因果关系的控制,这里就不多说了。

损失函数是交叉熵,优化方法是Adam。

总结一下,个人理解的Transformer和CNN的区别:

1、Transformer还是机器学习,但是没有卷积、pooling等操作,也没有循环;

2、很好的利用了每一行数据之间的相关性,机制的解释性是比较强的,更适用于NLP;

3、CNN关注于二维局部数据之间的相互关联,随着层的加深,关注区域会更广,更适用于图像处理。

不过,最近听说Transformer在很多图像处理领域中屠杀CNN,所以先看看Transformer的基础。最大是体会就是,Transformer中引入了基于伪协方差的Self-attention!

 

 

  • 32
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用和引用[2]提到了Transformer模型,它是一种在自然语言处理(NLP)领域中非常流行的特征处理器。与传统的CNN和RNN神经网络不同,Transformer完全由Attention机制和前馈神经网络组成。Transformer最早起源于Google的一篇论文,并且Google还开源了一个基于TensorFlow的第三方库供人们使用。 Transformer的整体架构被称为Seq2Seq模型,其中使用了一种称为"self attention"的机制。"self attention"可以理解为模型对输入序列中的每个元素进行关注和权重分配,以便更好地捕捉输入之间的关系。相比之下,传统的RNN在处理序列信息时不容易进行并行计算。 在Transformer中,输入序列首先经过一个Encoder,然后再经过一个Decoder。Encoder负责将输入序列转换为一系列的隐藏表示,而Decoder则根据Encoder的输出和之前的预测结果来生成输出序列。在Decoder中,使用了一种称为Masked Multi-Head Attention的Attention模块,这是因为Decoder的输入过程是一个逐步进行的过程,必须先有一部分输入才能得到后面的输出。 总之,Transformer是一种使用Attention机制和前馈神经网络构成的特征处理器,用于处理序列数据,尤其在NLP领域中广泛应用。它的设计使得模型能够更好地处理序列之间的关系,并且具有较高的并行计算能力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [图解Transformer](https://download.csdn.net/download/weixin_38745434/15448408)[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_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [变形金刚——Transformer入门刨析详解](https://blog.csdn.net/m0_67505927/article/details/123209347)[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_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Transformer概述](https://blog.csdn.net/weixin_42756682/article/details/120923453)[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_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值