transformer中的attention为什么scaled?

《Attention Is All You Need》中解释是:向量的点积结果会很大,将softmax函数push到梯度很小的区域,scaled会缓解这种现象。怎么理解将sotfmax函数push到梯度很小区域?还有为什么scaled是维度的根号,不是其他的数?

Google的一般化Attention思路也是一个编码序列的方案,因此我们也可以认为它跟RNN、CNN一样,都是一个序列编码的层。

前面给出的是一般化的框架形式的描述,事实上Google给出的方案是很具体的。首先,它先把Attention的定义给了出来:

                                            

那怎么理解这种结构呢?我们不妨逐个向量来看。

                        

 

其中ZZ是归一化因子。事实上q,k,v分别是query,key,value的简写,K,V是一一对应的,它们就像是key-value的关系,那么上式的意思就是通过qt这个query,通过与各个ks内积的并softmax的方式,来得到qt与各个vsvs的相似度,然后加权求和,得到一个dv维的向量。其中因子起到调节作用,使得内积不至于太大(太大的话softmax后就非0即1了,不够“soft”了)

以下参考自知乎:https://www.zhihu.com/question/339723385

1. 为什么比较大的输入会使得softmax的梯度变得很小?

对于一个输入向量 ,softmax函数将其映射/归一化到一个分布 。在这个过程中,softmax先用一个自然底数e 将输入中的元素间差距先“拉大”,然后归一化为一个分布。假设某个输入 x中最大的的元素下标是k,如果输入的数量级变大(每个元素都很大),那么会非常接近1。

我们不妨把在不同取值下,对应的的全部绘制出来。代码如下:

可以看到,数量级对softmax得到的分布影响非常大。在数量级较大时,softmax将几乎全部的概率分布都分配给了最大值对应的标签。

2. 维度与点积大小的关系是怎么样的,为什么使用维度的根号来放缩?

针对为什么维度会影响点积的大小,在论文的脚注中其实给出了一点解释:

假设向量 q 和 k的各个分量是互相独立的随机变量,均值是0,方差是1,那么点积 q.k 的均值是0,方差是。这里我给出一点更详细的推导:

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Transformer的Multi-Head Attention是一种注意力机制,它通过对输入的查询、键和值进行多个线性变换,然后将结果传入Scaled Dot-Product Attention,最终将多个Attention的结果拼接在一起,再通过线性变换得到最终的输出结果。 具体来说,Multi-Head Attention包括三个线性变换,分别是查询、键和值的变换。假设输入的查询向量、键向量和值向量分别为$Q, K, V \in R^{d_{model}}$,Multi-Head Attention的计算可以表示为: $$ \begin{aligned} \text{MultiHead}(Q,K,V) &= \text{Concat}(head_1, head_2, ..., head_h)W^O\\ \text{head}_i &= \text{Attention}(QW^Q_i, KW^K_i, VW^V_i) \end{aligned} $$ 其,$W^Q_i, W^K_i, W^V_i \in R^{d_{model} \times d_k}$是参数矩阵,$d_k$表示每个头部的维度。$\text{Attention}$表示Scaled Dot-Product Attention,它对输入的查询、键和值进行计算,得到Attention的输出。$\text{Concat}$表示将多个头部的结果拼接在一起,$W^O \in R^{hd_v \times d_{model}}$是参数矩阵,$d_v$表示拼接后的向量维度。 通过使用多个头部,Multi-Head Attention可以在不同的子空间学习到不同的注意力权重,从而更好地捕获输入序列的信息。它在Transformer的应用是非常重要的,可以帮助模型更好地处理长序列数据。 ### 回答2: Transformer的多头注意力机制(multi-head attention)是一种用于处理序列数据的关键组件。它被广泛应用于自然语言处理领域,能够有效地捕捉输入序列的全局依赖关系。 多头注意力机制由多个独立的注意力头组成,每个头都有自己的查询(Q)、键(K)和值(V)矩阵。这些矩阵通过线性变换得到,并通过点积注意力机制计算注意力权重。最终,多头注意力将每个头的注意力权重加权平均,并通过线性变换将其映射回原始表示空间。 通过使用多个头,模型可以同时学习不同的注意力表示。这使得模型能够对不同位置的输入序列部分进行多角度的关注,并捕捉到不同特征的相互作用。这种能力有助于提高模型的表现力,并有效地减少了输入序列长度对性能的影响。 在每个注意力头,Q、K和V矩阵的计算是并行进行的,从而提高了计算效率。然后,通过对注意力权重进行加权平均,多头注意力能够融合多个头的表示,增强了模型的表达能力。 通过引入多头注意力机制,Transformer模型能够建模长距离的依赖关系,从而在许多自然语言处理任务取得了显著的突破。同时,多头注意力机制的并行计算也使得Transformer能够适应大规模数据,提高了训练效率和模型的泛化能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值