Transformer前言:self-attention与Multi-Headed Attention的详细理解

在此特别感谢李宏毅老师的课程,真的是醍醐灌顶。

论文地址:

《Attention Is All You Need》

引入:

self-attention是一种新的注意力机制,transformer在NLP(自然语言处理)上应用的很广。

假设有这么一项任务,给定一个英文句子,能够得出句子中每个单词的词性:

考虑一句话:I saw a saw(我看见了一个锯子)

对应词性为:名词 动词 量词 名词

那么问题来了,这个句子如何放进模型进行训练呢?如何区别两个saw呢?

如果交给机器去学习,只考虑单个单词的话,很明显,学习出来的saw要不为名词、要不为动词,不可能同时都是。

input:之前的input为一个向量,通过一个模型,得到一个数值或者一个类别;假如inputs为一组向量并且每个向量的长度不一样时怎样通过模型得到一组输出的数值或者类别呢?例如I saw a saw每个单词都作为一个输入向量:

input编码方式(以一句话为例):one_hot编码  word embedding等 

 output:假设输出方式为每一个输入向量都有一个输出

如何区别两个saw呢?考虑句子中每个单词与它临近的单词之间的关系

self attention(自注意力机制)

每个输入a^{i}得到一个输出b^{i},考虑其它输入的影响。

考虑句子中每个单词与它临近的单词之间的关系,即某个输入与其他输入之间的关系用相关性relevant衡量:

两个输入之间关系的衡量方法:self attention使用第一种方法

 原理介绍:

以a1为例进行介绍:首先利用W^{q}矩阵点乘a^{1}得到q^{1}(query,查询),再通过W^{k}矩阵计算得到k^{2}k^{3}k^{4}(key,键值),这些键值与a^{1}的查询矩阵q^{1}计算得到a^{1}的attention score(注意力得分)。其他输入同理计算之后得到该输入与其他输入之间的相关性。

同时a^{1}也要计算自己的attention score,经过softmax得到得分矩阵,如下图所示。

softmax也可以换成其他变换函数,如ReLU等。

 利用W^{v}矩阵点乘a^{1}得到v^{1},其他输入同理,得到的v值与上步得出的结果进行计算得到b^{1}

b^{2}同理:

由此得到所有输出:并且由于内部为矩阵乘法,可以并行计算,加快训练速度。 

 再从矩阵角度理解:

Q、K、V的计算:

attention score(注意力得分)计算:

 attention score矩阵A与经过softmax处理的A^{,}

 计算b,得到矩阵O:

 完整过程:矩阵W^{q}W^{k}W^{v}是可以被学习的参数矩阵

 Multi-Headed Attention

以两头为例(可以理解为两类任务),将q矩阵分为两个q矩阵,每个矩阵单独进行计算。

最后的结果通过W^{o}矩阵得到: 

 

 Positional Encoding(位置编码)

 每个输入位置不定,加上一个e^{i}向量作为输入对位置的考虑:

图像也能作为输入,从而将transformer应用到图像领域。 

 与CNN的关系:自注意力机制考虑整幅图像中像素之间的相关性,而CNN只考虑感受野内的像素特征,CNN是简化版的self-attention,CNN只考虑感受野内的,依赖人工划定的感受野;self-attention注考虑整张图,找出相关的像素,自动学出感受野的形状和大小。    

  与RNN的关系:自注意力机制为并行计算得到结果。

 参考:

李宏毅老师的课程

 哔哩哔哩上李宏毅老师的讲解,生动形象

仅为学习记录,侵删! 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖虎记录学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值