赞
踩
transforme
decoder
embedding
每一个字拆成字向量
rnn
时间戳 100个词都是同一套参数U W V
回来 对于transformer 因为他是一起处理的 不像rnn一个个处理 这样加快的速度 但是忽略了某些序列关系 所以需要引入位置编码
位置编码:
偶数的位置使用sin
奇数的位置使用cos
编码与字向量进行相加:
这样通过三角函数的性质获得了相对位置信息,但是这样相对位置的信息会在注意力机制那里小时
receptive field感受野 是自己学出来的 自己去看那个范围比较相关,而不是人给的
资料量多的时候 self-attention 优秀于cnn
self-attention 比 rnn 优秀 因为可以并行化处理
self-attention 的变形
输入是序列但是长度会改变
输入输出不一样 : seq to seq
考虑一个window
但是window不能开到整个句子(可以但是需要很多处理)
引入attention
加强
计算关联
一定要有qkv三个矩阵
q k 做点乘 两个向量越相似 他的点乘结果就越大 值越大越关注
和v值相乘得到了加权和
b1是求和
注意 b1 b2 b3 不一定按照顺序进行 并行 处理
归一化后再乘v的加权和就是注意力值
只有单词向量的情况下 q k v 来自于 embeding和q k v的参数进行
上面就是一套参数
使用多头就是多套注意力机制的参数 每一头关注的特征不一样 比如 我吃汉堡 汉堡就在主语 谓语里面有不同的关注
在多层注意力机制出来之后 在和加原封不动了embeding 的值相加、
残差可以防止梯度消失的出现 所以可以变得比较深
在经过feed forward 就是fc层
一些别的改进
truncated self-attention
batchnormalization 在nlp里面的效果很差
bn: 不同example 不同feature 同一个dimension
ln:同一feature 同一example 不同dimension
bn早起对同一纬度的特征进行处理 通过一部分样本的特征描述所有样本的特征
缺点:
batchsize 小的时候效果差
RNN的输入是动态的 不能保证句子长度 所以不能保证均值 和方差
RNN对一个句子对均值 和 方差
前馈神经网络:
两层的全连接
掩盖的目的就是为了不计算后边词的关联性 因为在实际场合中,decoder的输入是顺序的输出 也就是说计算you的自注意力的时候 还没有输入中的 you 和now呢 所以要掩盖
special token
从decoder 从来后又回去推出下一个
encoder 和 decoder 差不多 除了中间那块
还有mask 在decoder的时候
attention的改进
1. q k 的计算量太大
1. 优化:有些矩阵可以不需要计算出来 根据实际问题
# local attention 只算蓝色的 也就是小范围(跟cnn差不多??)
# 看远一点的位置 跳几看
global attention 不以某个为中心 在原来的
原来的token加一个特殊的符号 变成 global attention
从每一个token收集咨询
通过special token来弄
让小的值变成0 这样减少计算量
怎么快速知道哪个最简单
clustering
相近的cluster的 分为同一个类别
只有属于同一个cluster的key 和 value 才加入计算
leanable pattern
那些要计算attention 直接计算出来
把矩阵的秩减小 变成有用的信息
看 值拿出代表性的key 和 代表性的 value'
那怎么选出代表性的呢?
左 卷积 右边 linear conbination
这两个矩阵的结果是不一样的
第一种运算
第二种运算:
通过数学性质优化计算
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。