前言
Transformer模型出自论文:《Attention is All You Need》 2017年
近年来,在自然语言处理领域和图像处理领域,Transformer模型都受到了极为广泛的关注,很多模型中都用到了Transformer或者是Transformer模型的变体,而且对于很多任务,使用加了Transformer的模型可以获得更好的效果,这也证明了Transformer模型的有效性。
由于Transformer模型内容较多,想要深入理解该模型并不容易,所以我分了大概3~4篇博客来介绍Transformer模型,第一篇(也就是本篇博客)主要介绍Transformer模型的整体架构,对模型有一个初步的认识和了解;第二篇是看了b站李宏毅老师的Transformer模型讲解之后,做的知识总结(内容比较多,可能会分成两篇博客);第三篇从代码的角度来理解Transformer模型。
目前我只完成了前两篇论文,地址如下,之后完成第三篇会进行更新。
第一篇:【Transformer】深入理解Transformer模型1——初步认识了解-CSDN博客
第二篇:【Transformer】深入理解Transformer模型2——深入认识理解(上)-CSDN博客
第三篇:【Transformer】深入理解Transformer模型2——深入认识理解(下)-CSDN博客
第四篇:
深入认识理解(上)
自注意力机制(self-attention):可以用于transformer、BERT等
对于输入的向量集合,其输出考虑了一整个sequence的信息,输出的label个数等于输入的向量个数。
self-attention可以和fully connected交替使用,即:self-attention可以处理整个sequence的资讯,fully connected专注于处理某一个位置的资讯。
由a产生b1的过程:
(1)根据a1,找到序列a中与a1相关的向量。要做self-attention的目的就是要考虑整个sequence,但我们又不希望把整个sequence所有的资讯包含在一个windows里面。所以我们有一个很重要的机制:找出很长的sequence里面到底哪些部分是重要的,哪些部分与判断a1是哪个label是有关系的。两个向量之间的关联度用ɑ来表示。
(2)根据注意力得分ɑ’抽取出sequence里面重要的子句。
self-attention的整体操作如下图所示:
多头自注意力机制(Multi-head self-attention):翻译任务、语音识别任务等使用较多的head会取得较好的效果。
理解:不同的q代表不同种类的相关性,所以需要使用多个q来表示多个不同种类的相关性。
!!!注意:self-attention中是没有位置信息的,所以如果对所要完成的任务而言,位置信息很重要,那就要把位置信息塞进去,通过positional encoding的方法。
位置编码(positional encoding):
原理:为每一个位置设置一个位置向量(positional vector)ei,其中i表示位置,然后把ei加到ai上即可,这样就结束了。这样就可以把位置信息告知self-attention。
self-attention VS CNN 论文On the Relationship between Self-Attention and Concolutional Layers(https://arxiv.org/abs/1911.03584)中有严格的数学推到证明。
CNN是self-attention的特例,只要设定合适的参数,self-attention可以做到和CNN一样的效果。
CNN只考虑receptive field中的资讯,而self-attention考虑整张图片的资讯。self-attention中的receptive field就好像是机器自己学出来的,而CNN中的receptive field是人为设定的。
self-attention VS RNN
以上就是本篇博客的内容了,李宏毅老师视频的干货不少,分两篇博客写吧还是~
另外提一下我最近发现的一个wps word的优点:在视频截图右边的空白部分,画一个文本框,在里面写对应图片的笔记标注,还挺好用的,清晰,而且方便对应图看笔记,不用再上下翻了~hh