transformer 原理及源码

本文深入解析Transformer模型,探讨其encoder和decoder结构,以及为何通过WQ,WK,WV矩阵转换q,k,v向量。解释多头注意力机制如何增强模型理解句子的能力,包括缩放点积注意力和位置编码的作用。

左边encoder ,右边是decoder

图中是4维 ,论文中是512,x 乘 WQ,WK,WV(随机初始化)得到 q (64维),k,v。

为何要乘 WQ,WK,WV 而不直接使用qkv

首先增加参数可以增加学习能力,如果没经过 WQ,WK,WV,则qkv一般就固定的值,后面q 乘 k的时候,两个相似度大的向量会得到很大的值

算thinking  ,q1 成所有的 k , 要 ÷ dk 缩放, softmax 的值在乘 v

为何要缩放,对softmax影响太大,在softmax函数中x太大,函数的梯度趋于0,影响反向梯度计算。

transformer 的encoder 中不共享参数

下图是句子级别的计算

 

Multi-headed

用多头注意力,因为随机处置话的QKV矩阵不同,所以每一头注意力关注句子不同的点(感觉和CNN的通道一样的)

x 复制成8份 ,分别对应自己的QKV,得到八中情况的Z ,拼接后乘 W0 又变回 和输入一样维度的Z

多头注意力后要layer norm与bitch norm 略有不同,但也是归一化,避免梯度消失

Feed Forward 两层 中间有relu ,最大的作用增加模型的非线性能力(实验对比 ,这里很重要)

再就是用了残差,层数过多,避免梯度消失,保留更多的特征

transformer 是双向结构,要加入位置信息表征顺序 ,这里直接和token embedding 向量相加

这里得到位置的函数使用的是正余弦的,具有周期性

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值