AI学习笔记3
Transformer模型
- Q1:注意力机制通俗来讲是什么,干什么的?
就是对于特征比如说
,如何去衡量那个特征比如说
重要,给所有的特征加上计算学习出一个权重系数,以帮助更好地获得主次,学到更好地特征,往往被用于特征提取的过程
- Q2:注意力机制中
、
以及
之间与词向量
之间的关系是什么,或者换句话说头机制是什么?
[图片上传失败...(image-a485e-1677241763573)]
如上图对应有的embedding向量,我们通过学习函数,学的到一组
、
以及
,这样将词堆积之后与
、
以及
进行向量乘机得到对应的
、
以及
,即Queries、keys以及values。我们可以知道,如果两向量
无关则说明,
的值会接近于0的。所以也就是
用它自己的
去搜索问询
的
,通过一个内积
就可以知道词J对于词I的重要程度。(这里还没有考虑维度的差异,需要除以一个dim,然后重要程度要在上下文语境中做一个softmax操作得到对应的权重)。
$$\begin{aligned}
\begin{equation*}
\mathbf{X}\mathbf{W_V} = \begin{pmatrix}
\vec{x_1} \
\end{aligned}$$\vec{x_2} \\ \vdots \\ \vec{x_n} \end{pmatrix}\cdot W_V = V = \begin{pmatrix}\vec{v_1}\\ \vec{v_2} \\ \vdots \\ \vec{v_n} \end{pmatrix} \end{equation*}
然后一组
、
以及
得到的是一个词X的特征,我们成为一个头。多头意味着从多个角度得到特征,然后将每个头得到的特征进行拼接之后输出(连下游任务或者作为作为隐藏层输出)
- Q3:为什么要除以一个
最后要除以一个
这个是归一化处理,减少维度带来的影响。也就是理论上维度越长,
的值就更有可能更大。之所以是根号,到时候在论文中有推导。
- Q4:为什么采用多头注意力机制?具体是怎么实现的?
对于一个词的看法,需要从多个角度去看,可以类比CNN对于图像有着不同的通道一样,卷积的时候同层的不同卷积一样。生活过程中,我们在对待某件事务,我们的理解都是不一样的,一个人的看法可能是片面的,多个人的看法,叠加起来,就可以还原事件原本立体的面貌一样。比如最后想得到关于词X的100维度特征,采用五维度。我们可以通过自注意力机制,每个头机制得到一个20维的特征,让后将五个同时拼接concat。
- Q5:encoder的backbone是什么样的?
就是一层单一的自注意力机制,然后将多头得到的特征f,输入到BN层中,同时采用残差模块与原先的embedding向量相加。这就要求了向量维度相同。
- Q6:transformer 的缺点?
位置信息表达不够明显,颠倒位置,出现的位置不会对结果产生影响,相当于放在哪里都无所谓,但这个实际就有些不符合了,我们希望模型能对位置有额外的认识。比如河马吃我 和我吃河马是两个相反的意思。我的想法是能不能把位置信息编码 positional encoding?
位置编码是否需要更新?我的想法就是如果你从句子的位置来说的话,是不需要更新的?但是不同句型的不同位置是不一样的,需要去更新?大多数顶会是不去做更新的。 - Q7:分类任务的decoder怎么去做?你transformer得到的加上位置encoding都是单个词的特征,但是一个句子才能分类阿,所以需要全局信息。
VBERT里面采用CLS最为分类代表词,作为分类token,参加attention成为全局特征,参与分类器,他无所谓,随机初始化。占位符总结别人特征,整合句子中其他词的特征。(CLS统筹句意)
[图片上传失败...(image-2c9a5-1677241763574)] - Q8:Attention 包括self-cross attention。什么是cross-attention? MASK机制的作用(去年作业推荐系统也用到了这个东西)?
对于输出的第一个词,我们需要随机初始化输出编码,然后与encoder后的前句意思,进行一个注意力机制,然后得到权重,之后计算得到编码,然后进行常用词的2w类分类。对于第二个词重复这个操作,但是他还需要跟第一个decoder的词有关系,所以需要对第一个词进行一个self-attention(机器翻译是从前向后翻译的,所以self-attention没有考虑后面的),所以加入了mask机制,来控制当前值能够与那些词参与self-attention。同时先计算cross然后算本层的self,但是不一定。decoder的每一层都需要做cross-attention.
[图片上传失败...(image-81d721-16772417
NLP_decoder_process.png
63574)]