位置: IT常识 - 正文

Transformer中的Q/K/V理解(transformer中的token)

发布时间:2024-01-17
Transformer中的Q/K/V理解

推荐整理分享Transformer中的Q/K/V理解(transformer中的token),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:transformer中的mask,transformer中的embedding,transformer中的mlp,transformer中的mask,transformer中的mlp的作用,transformer中的token,transformer中的位置编码,transformer中的位置编码如何起作用,内容如对您有帮助,希望把文章链接给更多的朋友!

输入句子序列:我爱吃酸菜鱼

上图为输入矩阵,每个token的维度为768维,则矩阵维度为Lx768。

第一步:通过乘以线性变化矩阵(维度为768x768),得到矩阵Q,K,V(维度为Lx768):

上图为线性变换后得到的矩阵Q,K,V,维度为Lx768,和输入矩阵相比维度未发生变化。

为什么叫自注意力网络:因为可以看到Q/K/V都是通过同一句话的输入算出来的。

第二步:将矩阵Q与相乘:

*向量点积可以表征向量间的相似程度或关联程度

Transformer中的Q/K/V理解(transformer中的token)

首先用Q的第一行,即“我”字的768特征和K中“我”字的768维特征点乘求和,得到输出(0,0)位置的数值,这个数值就代表了“我想吃酸菜鱼”中“我”字对“我”字的注意力权重,然后显而易见输出的第一行就是“我”字对“我想吃酸菜鱼”里面每个字的注意力权重。整个结果自然就是“我想吃酸菜鱼”里面每个字对其它字(包括自己)的注意力权重(就是一个数值)~以此得到注意力权重矩阵(LxL)。

第三步:对注意力权重矩阵进行处理,除以,并通过softmax函数转化:

这个dim就是768,至于为什么要除以这个数值?主要是为了缩小点积范围,确保softmax梯度稳定性。然后就是为什么要softmax,一种解释是为了保证注意力权重的非负性,同时增加非线性。

第四步:注意力权重矩阵与矩阵V相乘:

首先是“我”这个字对“我想吃酸菜鱼”这句话里面每个字的注意力权重,和V中“我想吃酸菜鱼”里面每个字的第一维特征进行相乘再求和,这个过程其实就相当于用每个字的权重对每个字的特征进行加权求和,然后再用“我”这个字对“我想吃酸菜鱼”这句话里面每个字的注意力权重和V中“我想吃酸菜鱼”里面每个字的第二维特征进行相乘再求和,依次类推~最终也就得到了Lx768维的结果矩阵,和输入保持一致~

K和V中,如果同时替换任意两个字的位置,对最终的结果是不会有影响的。也就是说注意力机制是没有位置信息的,不像CNN/RNN/LSTM。这也是为什么要引入position embedding的原因。

可以将V看作一个token序列,序列中的每个token在一开始都是互相独立的,信息量有限。而想要让每个token包含更多的信息,一个办法就是让每个token去融合该序列中其他token的信息。融合方式中,最差的方法是取平均(mean pool),会有大量实际不相关的信息被融入; 更好的方式是按照该token和其他token的相关度加权求和。

那么问题来了,怎么看V中每一个token和其他token的相关度,并将相关度量化成权重数值(用于最终的加权求和)?

这个时候,Q和K来了,Q是询问的token(对应到V中的某个token),K是被询问的token序列,Q问K,你的哪个token跟我最像?Q挨个问一遍K中的token,每个token和Q比较后(点积)得到一个和Q的相似程度,组成一个相似度序列。

相似度序列归一化后变成一个和为1序列,可以看成是一个权重。

参考:https://www.zhihu.com/people/zui-tian-20-46/answers

参考:https://www.zhihu.com/question/298810062/answer/1829118404

本文链接地址:https://www.jiuchutong.com/zhishi/298938.html 转载请保留说明!

上一篇:无云服务器,Linux本地快速搭建web网站,并内网穿透发布上线(云服务器 chia)

下一篇:【JavaScript】JS实用案例分享:输入智能提示 | 打字机输出效果(js示例)

  • 报废汽车残值收入
  • 增值税发票服务名称可以更改吗
  • 股东个人房产转入公司契税
  • 购买需要安装的设备会计分录
  • 应纳所得税额的税率
  • 给离退休人员发的短信
  • 六税两费减半征收政策
  • 存货售出后是否含税
  • 普通发票专用发票每张最高限额
  • 从商业企业购进商品
  • 商品盘点短缺和溢余的核算
  • 发票验旧的办理条件及所需资料是什么
  • 无偿划拨资产涉税问题
  • 一般纳税人兼营不同税率
  • 货物抵款协议书
  • 公司注销后会计凭证保管年限
  • 投资性房地产租赁期开始日
  • 科技研发政策
  • 交防伪税控技术怎么交
  • 建筑公司工程款支付审批流程
  • 流转税与所得税的区别
  • 短期投资算债权吗
  • Linux系统怎么调整屏幕亮度
  • 启动器
  • 我们无法创建新的分区,也找不到现有的分区 贴吧
  • vue项目中的package.json是( )?
  • 如何打印word文档手机上
  • 销售设备并提供安装服务增值税税率
  • 退休返聘工资如何申报个人所得税
  • PHP:pg_transaction_status()的用法_PostgreSQL函数
  • 阳光照耀下的人
  • element html
  • 没签订采购合同怎么办
  • 公司支付的工伤赔偿金可以税前扣除吗
  • 自然人税收管理系统扣缴客户端app
  • 图像识别算法
  • yolov5增加检测层
  • web前端基础是什么
  • ahs日志
  • 印花税城建税和教育费附加怎么算
  • 固定资产的装修费计入固定资产吗
  • 一般纳税人注销税务流程
  • 残疾人保障金计入哪个会计科目
  • 现金流量表本月数和本年累计数是相等的么
  • 销售部门的固定资产
  • 织梦自定义字段
  • 财务的原始凭证
  • 个人所得税汇算清缴怎么计算
  • 人力资源劳务外包需要什么资质证书
  • 财务报表与分析outcome2
  • 资产负债表编制
  • 农民专业合作社税收优惠政策
  • 销售产品结转成本
  • 融资租赁与按揭的区别
  • 当月费用次月报销
  • 简易征收的进项税可以抵扣吗
  • 注册资本转出可以吗
  • 复利年金终值计算器
  • 天猫佣金是什么意思
  • 指定为fvtpl
  • ubuntu 安装zsh
  • 笔记本上安装软件怎么弄
  • 如何使用chatgpt
  • windows7开机
  • win7怎么取消锁定
  • linuxcoll
  • cocos输入框
  • 批处理判断一个文件是否存在
  • our与my的区别
  • fortune命令
  • 安卓开发
  • python编程术语
  • android四大组件的作用
  • python用matplot画图
  • node js 前端
  • javascript代码用什么来标记
  • 基于javascript的毕业设计
  • 新公司税务报到流程步骤
  • 两利四率完成情况
  • 公司换届审计一般要多久
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号