绝对位置编码

一. 回顾transformer

1.Encoder

transformer中Encoder的过程可以解释为:低阶语义向量转换为高阶语义向量

  ->  

2.Attention

Attention:把输入的向量分别乘一个可训练的矩阵并作相似度计算



3.Layer Norm

举个例子解释Layer Norm比Batch Norm好的原因: 假如一句话的Embeeding如下

-> X =

在NLP中不同batch中pad的数量是不一样的,如果沿着行做归一化没意义,应该对这一个batch中每一个token做归一化

4.参数量

一般的模型增加复杂度的方式:

a.增加深度,增加宽度

b.增加embedding的维度

c.增加词典的大小

transformer中参数分布: 这里假设Multi Head:12 Wq, Wk, Wv维度为64, embedding维度为768, 词典大小为E

12个头: 768x64x3x12

concat+线性变换(tanh(c, Key)·(w1)w1): 768x768

FeedForward(2层MLP,先升维再降维,一般是4倍): 2x768x768x4

Word Embedding: Ex768

 二. 位置编码

1.直接加入位置编码

 之前,直接加入位置的embedding

 (可以学习的embedding)

2.自定义绝对位置编码

二位函数 f(position, dimension)

要求:

函数f随着position,dimension增长应该是有界的,足够的区分度,对每个position对应的行向量应该是不同的

 偶数位

 奇数位

3.旋转位置编码

 (m是位置)

例子(假设Query中第m个,Key中第n个,embedding后是2维):

a.Attention计算:

b.Query偏移计算:

二维向量使用复数表示:

当使用复数表示二维向量,这里引入欧拉公式,即

推导出,

化简一下

再写成向量形式()

转换成矩阵相乘() ()

c.Key偏移计算:

和Query一样的

() ()

d.偏移后的Query和Key计算:

 :() ()  (记得转置~)

整理一下)()

e.理解

把上面的式子换一个形式 :

这里可以看出来所谓相似度就是有角度差 ,角度差越大相似度越小

 base=10000, d=维度, i=位置ids

三. 问题

1.为什么旋转位置编码在投影之后做不在投影之前做

这里想到矩阵运算

假设在投影之前做

=?  无法矩阵合并

2.chatglm不同的点

chatglm中,初始化的是一半正一半负数,而不是公式中严格按照相邻两两组合旋转

原因:神经元是无序的(神经网络中没有顺序,乘前面的W矩阵),

  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值