【PyTorch】nn.MultiheadAttention详解
创作时间:
作者:
@小白创作中心
【PyTorch】nn.MultiheadAttention详解
引用
CSDN
1.
https://blog.csdn.net/sazass/article/details/118329320
关于MultiheadAttention :
一种注意力机制,常置于Transformer的开头。
Transformer自2017年推出之后,已经横扫NLP领域,成为当之无愧的state-of-the-art。原始paper “Attention is All you Need”中对attention提出了通用的query/key/value抽象。
新型的网络结构: Transformer,里面所包含的注意力机制称之为 self-attention。这套 Transformer 是能够计算 input 和 output 的 representation 而不借助 RNN 的的 model,所以作者说有 attention 就够了。
模型:同样包含 encoder 和 decoder 两个 stage,encoder 和 decoder 都是抛弃 RNN,而是用堆叠起来的 self-attention,和 fully-connected layer 来完成,模型的架构如下:
所谓Multi-Head Attention其实是把QKV的计算并行化,
- 原始attention计算d_model维的向量,而Multi-Head Attention则是将d_model维向量先经过一个Linear Layer,
- 再分解为h个Head计算attention,
- 最终将这些attention向量连在一起后再经过一层Linear Layer输出。
所以在整个过程中需要4个输入和输出维度都是d_model的Linear Layer,而整个Model的输入是(batch_size, seq_length, d_model),输出也是(batch_size, seq_length, d_model)。
multi-head attention 由多个 scaled dot-product attention 这样的基础单元经过 stack 而成。
那么 Q、K、V 到底是什么?encoder 里的 attention 叫 self-attention,顾名思义,就是自己和自己做 attention。在传统的 seq2seq 中的 encoder 阶段,我们得到 n 个时刻的 hidden states 之后,可以用每一时刻的 hidden state hi,去分别和任意的 hidden state hj,j=1,2,…,n 计算 attention,这就有点 self-attention 的意思。回到当前的模型,由于抛弃了 RNN,encoder 过程就没了 hidden states,那拿什么做 self-attention 来自嗨呢?
可以想到,假如作为 input 的 sequence 共有 n 个 word,那么我可以先对每一个 word 做 embedding 吧?就得到 n 个 embedding,然后我就可以用 embedding 代替 hidden state 来做 self-attention 了。所以 Q 这个矩阵里面装的就是全部的 word embedding,K、V 也是一样。
所以为什么管 Q 叫query?就是你每次拿一个 word embedding,去“查询”其和任意的 word embedding 的 match 程度(也就是 attention 的大小),你一共要做 n 轮这样的操作。
我们记 word embedding 的 dimension 为 dmodel ,所以 Q 的 shape 就是 n*dmodel, K、V 也是一样,第 i 个 word 的 embedding 为 vi,所以该 word 的 attention 应为:
nn.MultiheadAttention 用法:
self_attn = nn.MultiheadAttention(d_model, nhead, dropout=dropout)
params:
d_model:是每一个单词本来的词向量长度;
nhead是我们MultiheadAttention的head的数量。
进行forward操作
attn_output, attn_output_weights = multihead_attn(query, key, value)
热门推荐
29个项目落地湘江科学城!“科学家的家,创业者的城”加速跑
湖南大学全国排名和最强专业解析
如何正确选购电动自行车?这几点请牢记!
现代风格家居设计:奶茶色与原木的温馨邂逅
如何有效举报不良网站,共同维护安全健康的网络环境
律师的朋友怎么找:构建法律职业社交网络的策略与技巧
股份有限公司股份回购研究
趋势线高手必备:三种强大趋势线策略—突破、回测技巧全解析
穷鬼减肥不吃高价白人饭!不超过10元的减脂餐拿去吧
老年人出现5类症状,可能是脑梗,6类人群高危人群,做好预防
蕨菜一般生长在哪里 蕨菜产地在哪里最多
喝酱香白酒配哪些下酒菜才好吃不伤身?
膳食纤维是什么?膳食纤维的作用及高膳食纤维的食物推荐
全面解读苏州养老院收费价格表:选择适合老人的理想居所
如何对公司进行合理估值?这些估值方法各有优劣
找矿用上哪些“黑科技”(瞰前沿)
成年人误吞西梅核要紧吗?专业医生这样回答
雇主责任保险与工伤保险的异同,雇主责任险和工伤保险冲突吗
绝区零凯撒角色攻略:技能机制与队伍搭配详解
专家共识正式发表 中国儿童抽动障碍中医外治从经验医学迈向规范诊疗
国足VS澳洲:9年难求一胜!对手新帅有来头,央视决定继续不转播
机关事业单位工作人员,在四川和重庆退休,哪里的养老金更高?
大同十大景点:从云冈石窟到火山群
Excel中日期全乱了怎么办?多种实用解决方案帮你轻松应对
宝宝脐带绕颈怎么办?全面解析成因、风险与预防措施
公司的分类标准是什么
药业大全:如何选择合适的药物与使用指南
请假单模板怎么选择
历史两会前后A股走势一览
手机号码丢失如何找回:一步步教你解决方法