当前位置:网站首页>Transformer前言:self-attention与Multi-Headed Attention的详细理解
Transformer前言:self-attention与Multi-Headed Attention的详细理解
2022-08-09 00:28:00 【胖虎记录学习】
在此特别感谢李宏毅老师的课程,真的是醍醐灌顶。
论文地址:
引入:
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(自注意力机制)
每个输入
得到一个输出
,考虑其它输入的影响。

考虑句子中每个单词与它临近的单词之间的关系,即某个输入与其他输入之间的关系用相关性relevant衡量:
两个输入之间关系的衡量方法:self attention使用第一种方法
原理介绍:
以a1为例进行介绍:首先利用
矩阵点乘
得到
(query,查询),再通过
矩阵计算得到
、
、
(key,键值),这些键值与
的查询矩阵
计算得到
的attention score(注意力得分)。其他输入同理计算之后得到该输入与其他输入之间的相关性。
同时
也要计算自己的attention score,经过softmax得到得分矩阵,如下图所示。
softmax也可以换成其他变换函数,如ReLU等。

利用
矩阵点乘
得到
,其他输入同理,得到的v值与上步得出的结果进行计算得到
。

同理:

由此得到所有输出:并且由于内部为矩阵乘法,可以并行计算,加快训练速度。
再从矩阵角度理解:
Q、K、V的计算:

attention score(注意力得分)计算:
attention score矩阵A与经过softmax处理的
:
计算b,得到矩阵O:
完整过程:矩阵
、
、
是可以被学习的参数矩阵

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


最后的结果通过
矩阵得到:
Positional Encoding(位置编码)
每个输入位置不定,加上一个
向量作为输入对位置的考虑:
图像也能作为输入,从而将transformer应用到图像领域。

与CNN的关系:自注意力机制考虑整幅图像中像素之间的相关性,而CNN只考虑感受野内的像素特征,CNN是简化版的self-attention,CNN只考虑感受野内的,依赖人工划定的感受野;self-attention注考虑整张图,找出相关的像素,自动学出感受野的形状和大小。 
与RNN的关系:自注意力机制为并行计算得到结果。
参考:
仅为学习记录,侵删!
边栏推荐
猜你喜欢
随机推荐
【科研-学习-pytorch】1-框架特性和常见问题类型
win10出现次磁盘占用率百分之百的情况
对纹理进行uv坐标偏移
遮罩纹理-MaskTexture
三角果计数
图像去雾概述
Risk Control Modeling IV: Logistic Regression Scorecard Development
pycharm更改默认项目地址的方法
【Full arrangement】
软考总结博客
2021ccpc网络选拔赛
统一身份管理平台IAM单点登录流程及第三方接口设计方案
XOR Inverse
笔记| 矩阵分析中需要复习的线性代数知识
牛客小白月赛 37 补题
2020-10-17
架构组学习总结
京东三面惨遭被虐,关于 redis,高并发,分布式,问懵了
动态style定义背景渐变
cmd切换硬盘的命令,从C盘切换到D盘怎么操作










