8.27 Attention详细解析

架构

Transformer主要由6个编码器,6个译码器组成。也就是下图N=6。

注:每个之间不共享权重。

自注意力机制

1、输入内容会被拆分成为许多小片段,小片段称为token。如果是对文本进行处理时,通常小片段就会是一个单词或者是单词的一部分

        首先模型拥有一个预设的词汇库,包含了所有可能的单词,并且每个词都有一个对应的向量。这个向量的来历,就是使用了Embedding算法

 将这些token转换成为对应的向量表示。这些向量会作为input进入Attention的计算公式中。输入的向量必须是实数数组或者一维、多维数组,也就是张量Tensor。

向量组成的这个矩阵就叫做嵌入矩阵(Embedding matrix)。

        其中,向量的大小是我们自己定义的超参数,一般就是训练数据集中最长句子的长度。

        

        提示:矩阵并不是单词本身,而是tokens。矩阵的初始值是随机的,但是会随着训练不断进行调整。

重点公式

①首先,需要对token转换成为的向量进行处理,比如句子中每个名词都在问是否有形容词,而这个问题,就是作为词的Query。

②Q、K、V的来源是用总体的实数矩阵乘以各自的权重矩阵得到。

③其中,Q、K的行大小与嵌入维度匹配。

V的大小与嵌入矩阵的大小相同。Q、K、V向量的维度要比嵌入的向量要小,规定不是固定的,目的是让多头注意力机制的计算不会发生太大变化。

Key作为Q的回答者,键矩阵也是可调节参数的组合与查询矩阵相同。

而两者作为点乘的作用就是衡量每个键与每个查询的匹配程度,而得到的结果是一个实数矩阵,也就是相似度矩阵。

而再乘以V就是让词语可以将信息传递给它们的相关的其他词。

得到的结果再进行就是一个描述细腻还有丰富信息的向量。之后将得到的向量输送给前馈神经网络进行处理。

        tips:点积,用于衡量两个向量的相似度,如果感到困惑,思考一下数学上两个向量,他们两个如果进行运算,是不是就是逐元素对应相乘然后求和。

        关键参数:模型每次只能处理一定数量的向量,我们的关键目标就是让向量通过网络传递,生成信息时,能够最大程度上考虑上下文信息,其中上下文大小就是Context size,也就是决定了预测下一个词的过程中可以纳入的文本大小。

公式中除以√dk的原因是为了重新将特征向量中的元素缩放到方差为1的分布中,并不会改变矩阵的维度为了稳定梯度,数值稳定性。

方向相同,结果为正。

④在训练过程中,提高模型的一个效率就是让模型预测下一个输出,那么一个样本就能提供更多的学习能力。

⑤Mask掩码的作用,为了不让后续Token影响前面的信息。

如果进行了置0,那么就会有信息损失。

所以采用的策略就是将这些需要掩码部分设置为负无穷大,即能将之后的信息掩盖,又能够保证归一化的完整性。

但是过大的上下文范围设置就会导致注意力机制进行巨大的计算量。

注:交叉注意力设计的模型会处理两种不同类型的数据。

2、紧接着进入前馈层(Feed Forward)或者多重感知机(MLP)。

3、在最后一个与unbedding进行相乘的结果就是Logits。

4、位置编码的作用在于记录每个单词,所在位置的不同具有不同的意义。

多头注意力机制

多头注意力机制其实就是自注意力机制的延展,只是多个模块进行运算。

有几个头,就会产生几组Z,而这个Z就是运用公式得到的Attention得分

那么前馈层如何处理这些单独的数据,就要一个额外的矩阵

之后再将得到的结果送入到前馈神经网络中。

Transformer全流程

Inputs

首先输入的是我们人类语言的序列,经过词嵌入(Embedding)进行转换成一个个向量。

算法的原理就是依据每个单词与要转换的词的距离进行调整生成。

Positional Encoding

在进行Embedding操作之后,加入位置编码(Positional Encoding)。

在加入位置编码之后,才能了解单词的位置信息。

每个位置的位置编码由正弦函数和余弦函数进行生成:

1.偶数维度:使用正弦函数计算。奇数维度:使用余弦函数计算。

其中,pos表示每个词的向量位置,i是维度。词向量的产生有多种,比如one-hot编码或者word2vec编码。

举例:

①假设pos=0的词向量长度为4,即d_{model}=4,那么第一个词向量为

②那么词向量x_{0}的位置编码长度d_{PE0}=4可以表示为:

③那么当i=0时,代入公式就可以得到:

当i=1时,代入公式就可以得到:

那么对应词向量x_{0}的位置编码为:

所以加入位置编码就可以得到一个附带有位置信息的全新向量:

Encoder&Decoder

这部分主要是进行多头注意力机制的处理,多头注意力机制的原理输入以及输出在上文已经进行讲解。细节部分会在以下进行讲解。

有个重要的部分就是在这两个部分进行交互时,Query 来自Traget序列,而Key-Value来自Input序列。

Add&Norm

Add指的就是残差结构,这点在图中可以直观地感觉到。残差结构的解析内容在本文不再进行解读。主要体现在一个公式上:

Norm则是表示的Layer Normalization在多头自注意力机制中,层规范化可以帮助稳定注意力权重的分布,使得模型能够更好地捕捉不同位置的特征。

FeedForward

前馈网络(FFN)也叫作 多层感知器(MLP:multi-layer perceptron)。多层感知器至少包含三层:输入层、隐藏层(可以有多个)以及输出层。

FFN 相当于将每个位置的Attention结果映射到一个更大维度的特征空间,然后使用ReLU引入非线性进行筛选,最后恢复回原始维度。

Masked Multi-Head Attention

带有掩码的多头注意力机制,上文讲到Mask的作用就是为了让当前位置的单词只接受之前已知的词句的信息,而不受之后信息的影响。

Linear

Linear层就是一个全连接网络,作用是把decoder输出的向量映射到一个大很多的logits 向量上。

之后通过Softmax输出一个概率,将概率最大的那个词输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值