NLP面试常考知识点

Transformer

Attention 和 Self-Attention的区别是什么?

参考:题目:Transformer一篇就够了 作者:张春阳

  1. 在神经网络中,通常来说你会有输入层(input),应用激活函数后的输出层(output),在RNN当中你会有状态(state)。如果attention (AT) 被应用在某一层的话,它更多的是被应用在输出或者是状态层上,而当我们使用self-attention(SA),这种注意力的机制更多的实在关注input上。
  2. Attention (AT) 经常被应用在从编码器(encoder)转换到解码器(decoder)。比如说,解码器的神经元会接受一些AT从编码层生成的输入信息。在这种情况下,AT连接的是两个不同的组件(component),编码器和解码器。但是如果我们用SA,它就不是关注的两个组件,它只是在关注你应用的那一个组件。那这里他就不会去关注解码器了,就比如说在Bert中,使用的情况,我们就没有解码器。
  3. SA可以在一个模型当中被多次的、独立的使用(比如说在Transformer中,使用了18次;在Bert当中使用12次)。但是,AT在一个模型当中经常只是被使用一次,并且起到连接两个组件的作用。
  4. SA比较擅长在一个序列当中,寻找不同部分之间的关系。比如说,在词法分析的过程中,能够帮助去理解不同词之间的关系。AT却更擅长寻找两个序列之间的关系,比如说在翻译任务当中,原始的文本和翻译后的文本。这里也要注意,在翻译任务重,SA也很擅长,比如说Transformer。
  5. AT可以连接两种不同的模态,比如说图片和文字。SA更多的是被应用在同一种模态上,但是如果一定要使用SA来做的话,也可以将不同的模态组合成一个序列,再使用SA。
  6. 对我来说,大部分情况,SA这种结构更加的general,在很多任务作为降维、特征表示、特征交叉等功能尝试着应用,很多时候效果都不错。 【这点我暂时没感觉】

Self-Attention

公式:

A t t = s o f t m a x ( Q × K T d k ) ⋅ V Att = softmax(\frac{Q \times K^{T} }{\sqrt{d_k}} ) \cdot V Att=softmax(dk Q×KT)V

计算过程

  1. 将文本转换为 embeddings(多个embedding);
  2. 使用 embedding 分别与三个矩阵(Wq, Wk, Wv) 相乘, 得到q,k,v向量;
  3. 为每个 embedding 计算一个 score,socre=q·k;
  4. 除以 d k \sqrt d_k d k
  5. 对 v 加权平均(softmax, sum)
为什么要缩放点积的值?

答:为了梯度稳定。Softmax函数对非常大的输入很敏感。这会有可能导致梯度传播出现问题。

为什么要除以 d k \sqrt d_k d k

参考1:题目:Transformer一篇就够了 作者:张春阳
参考2: 题目:[Attention is All you Need]论文笔记 作者:xiaopp

回答一:这里分母为什么要使用 d k \sqrt d_k d k 呢?我们想象一下,当我们有一个所有的值都为 c c c 的在 R k {R^k} Rk空间内的值。那它的欧式距离就为 c d k \sqrt {cd_k} cdk 。除以 d k \sqrt d_k d k 其实就是在除以向量平均的增长长度。

回答二:假设两个 dk 维向量每个分量都是一个相互独立的服从标准正态分布的随机变量,那么他们的点乘结果会变得很大,并且服从均值为0,方差就是 dk,【很大的点乘会让softmax函数处在梯度很小的区域】,对每一个分量除以 sqrt(d_k) 可以让点乘的方差变成 1。
总之,其目的就是不要落入此范围

Transformer 位置编码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值