07 Self Attention-学习笔记-李宏毅深度学习2021年度

上一篇:06 卷积神经网络CNN-学习笔记-李宏毅深度学习2021年度

本文内容

Self-Attention及Multi-head Attention的相关概念

课堂笔记

序列模型的种类:

1. 输入是一个Vector,输出是ScalarClass

在这里插入图片描述

2. 输入是一组Vector (数量不一定固定) ,输出是Scalar 或 Class

在这里插入图片描述

3. 输入一组Vector,输出一组Vector,输入Vector的个数与输出Vector的个数一致。例如词性标注(POS Tagging)

在这里插入图片描述

在这里插入图片描述

4. 输入是一组Vector,输出是一个Label。例如情感分析(Sentiment Analysis)

在这里插入图片描述
在这里插入图片描述

5. 输入是一组Vector,输出是一组Vector,但输出的Vector的长度由机器自己决定。例如:翻译(Translation)

在这里插入图片描述


普通神经网络的弊端:对于输入向量,无法考虑其上下文。例如,对于I saw a saw(我看到了一把斧子)这个句子直接输入神经网络,它很难识别出第一个saw和第二个saw意思是不一样的。


Self-Attention的作用:将输入向量重新编码,生成一个考虑了上下文的新向量

在这里插入图片描述

Self-Attention可以叠加多层在这里插入图片描述


Self-Attention核心设计思路:每个输入都会和其他输入计算一个相关性分数,然后基于该分数,加权平均得出包含上下文信息的新向量

公式为: b i = ∑ j α i , j ⋅ v i b_i = \sum_j \alpha_{i,j} \cdot v^i bi=jαi,jvi

  • b i b_i bi 为第 i i i 个包含上下文的输出向量
  • α i , j \alpha_{i,j} αi,j 为第 i i i 输入向量和第 j j j 个输入向量的相关性分数,分数越大,相关性越高
  • v i v^i vi经过处理的 i i i 个输入向量

在这里插入图片描述


α i , j \alpha_{i,j} αi,j 的计算公式为: α i , j = q i ⋅ k j \alpha_{i,j} = q^i\cdot k^j αi,j=qikj

其中, q i = W q ⋅ a i k j = W k ⋅ a j q^i = W^q \cdot a^i \\\\ k^j=W^k \cdot a^j qi=Wqaikj=Wkaj

  • W q W^q Wq W k W^k Wk 为要训练的矩阵
  • a i a^i ai 为输入向量

所有的 α \alpha α 计算完毕后,通常还要经过softmax进行归一化也可以采用其他方式

在这里插入图片描述


v i v^i vi 的公式为: v i = W v ⋅ a i v^i= W^v \cdot a^i vi=Wvai

  • W v W^v Wv 是要训练的矩阵

在这里插入图片描述


( q 1 , . . . , q i , . . . ) (q^1, ..., q^i, ...) (q1,...,qi,...) 合成矩阵 Q Q Q

( k 1 , . . . , k i , . . . ) (k^1, ..., k^i, ...) (k1,...,ki,...) 合成矩阵 K K K

( a 1 , . . . , a i , . . . ) (a^1, ..., a^i, ...) (a1,...,ai,...) 合成矩阵 I I I

Q Q Q 的公式为: Q = W q ⋅ I Q=W^q \cdot I Q=WqI

K K K 的公式为: K = W k ⋅ I K=W^k \cdot I K=WkI

V V V 的公式为: V = V k ⋅ I V=V^k \cdot I V=VkI

Attention公式为:  Attention  ( Q , K , V ) = softmax ⁡ ( Q K T d k ) V \text { Attention }(Q, K, V)=\operatorname{softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right) V  Attention (Q,K,V)=softmax(dk QKT)V

d k d_{k} dk 为输入向量的个数, d k \sqrt{d_{k}} dk 的目的是将对标准差进行归一化


Self-Attention 使用总结:

1. 定义矩阵 W q , W k , W v W^q, W^k, W^v Wq,Wk,Wv

2. 计算出 Q , K , V Q,K,V Q,K,V

3. 带入 Attention ⁡ ( Q , K , V ) \operatorname{Attention}(Q,K,V) Attention(Q,K,V) 得到输出向量即可


Multi-head Self-Attention: 只用一套 W q , W k , W v W^q, W^k, W^v Wq,Wk,Wv 泛化能力较差,所以采用多套 W q , i , W k , i , W v , i W^{q,i}, W^{k,i}, W^{v,i} Wq,i,Wk,i,Wv,i i i i 表示第 i i i W W W换句话说,一个 a i a^i ai 计算出多个 q i , ⋅ , k i , ⋅ , v i , ⋅ q^{i, \cdot}, k^{i, \cdot}, v^{i, \cdot} qi,,ki,,vi,,然后计算出多个 b i , ⋅ b^{i, \cdot} bi,

在这里插入图片描述

最后再通过 W O W^O WO b i , ⋅ b^{i,\cdot} bi, 合并

在这里插入图片描述


Self-Attention的弊端:没有考虑输入向量的位置信息。 即只考虑了输入向量上下文都有哪些向量,但没有考虑当前向量所处的位置。例如,I saw a sawI 进行编码时,只知道要把saw a saw 考虑进来,但并没有考虑 I 是处在句子的第一个位置

解决方案:为输入向量加上一个向量 e i e^i ei,即 a i = e i + a i a^{i} = e^i+a^i ai=ei+ai

e i e^i ei 的指定策略:1. 手工指定 2. 通过数据学习出来


Self-Attention的应用:最常用于 NLP 任务中,例如 Transformer 和 BERT。 也可以用于图像领域和语音识别领域。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iioSnail

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值