机器学习常识 24: 自注意力机制

文章介绍了自注意力机制的概念,其灵感来源于人类阅读时并非逐字阅读,而是抓取关键信息。通过word2vec将单词编码,计算Query、Key和Value,然后通过softmax进行归一化,形成自注意力编码。多头注意力则可以提取不同特征,提高模型的表现。该机制在处理序列数据,如机器翻译任务中,展示了高效性和并行计算的优势。
摘要由CSDN通过智能技术生成

摘要: 自注意力机制来源与我们人类对事物的观察方式.

两篇参考贴:

1. 启示

例 1: 研表究明, 汉字的序顺并不定一能影阅响读, 比如当你看完这句话后, 才发这现里的字全都是乱的.
从这个例子表明, 人类在阅读句子的时候, 并不是逐个字地阅读, 而是扫描一遍, 抓住重点. 换言之, 做机器翻译时, RNN, LSTM 重点考虑单词的前后关系, 这并不一定是必要的.

2. 自注意力编码过程

图 1 展示了基本结构.

图 3. Self-attention 基本结构.

分为 5 个步骤:

2.1 准备输入

使用预先获得的编码方案, 利用 word2vec 将每个单词编码为一个固定长度 (如 d v = 520 d_v = 520 dv=520) 的词向量. 现假设有 n n n 个单词, 获得 x 1 , … , x n \mathbf{x}_1, \dots, \mathbf{x}_n x1,,xn.
这里, word2vec 要考虑单词之间的相似性.

2.2 计算 Query, Key 和 Value

q i = x i W Q ; (1) \mathbf{q}_i = \mathbf{x}_i \mathbf{W}_Q; \tag{1} qi=xiWQ;(1)
k i = x i W K ; (2) \mathbf{k}_i = \mathbf{x}_i \mathbf{W}_K; \tag{2} ki=xiWK;(2)
v i = x i W V ; (3) \mathbf{v}_i = \mathbf{x}_i \mathbf{W}_V; \tag{3} vi=xiWV;(3)
其中, 三个 W \mathbf{W} W 是需要学习的权重矩阵, 相当于 MLP 的全连接层的权重矩阵. W Q \mathbf{W}_Q WQ W K \mathbf{W}_K WK 的维度均为 d v × d k d_v \times d_k dv×dk, W V \mathbf{W}_V WV 的维度为 d v × d x d_v \times d_x dv×dx, d x d_x dx 是 Self-attention 编码后的长度.
i i i 1 1 1 n n n, 然后将向量组成行数为 n n n 的矩阵 Q \mathbf{Q} Q, K \mathbf{K} K, V \mathbf{V} V.

2.3 计算 score

i i i 个单词 (作为查询者) 与第 j j j 个单词 (由键值表示) 的相关性:
s c o r e ( x i , x j ) = q i ⋅ k i , (4) \mathrm{score}(\mathbf{x}_i, \mathbf{x}_j) = \mathbf{q}_i \cdot \mathbf{k}_i, \tag{4} score(xi,xj)=qiki,(4)
其中 ⋅ \cdot 表示内积. 由于是输入与输入自己计算, 所以称为 自注意力.
n n n 个单词对应的运算表示为矩阵运算:
Q K T . (5) \mathbf{Q} \mathbf{K}^{\mathsf{T}}. \tag{5} QKT.(5)
它是一个 n × n n \times n n×n 的单词相关性矩阵.

2.4 scale

将 score 除以一个常数 ( d k = 64 d_k = 64 dk=64 时就除以 8 8 8), 避免太大.

2.5 mask (可选)

2.6 softmax

由于每行表示一个查询单词, 这一行的第 j j j 列表示第 j j j 个单词对其影响, 因此将 (5) 式的每行通过 softmax, 归一化的同时强调最大的分数.

2.7 编码加权和, 获得自注意力编码

总体式子为:
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V . (6) \mathrm{Attention}(Q, K, V) = \mathrm{softmax\left(\frac{\mathbf{Q} \mathbf{K}^{\mathsf{T}}}{\sqrt{d_k}}\right)} \mathbf{V}.\tag{6} Attention(Q,K,V)=softmax(dk QKT)V.(6)
最终获得一个 n × d x n \times d_x n×dx 的矩阵, 即每个单词的编码为 1 × d x 1 \times d_x 1×dx 向量.

3. 为什么使用多头?

相当于 MLP 每层有多个节点 (提取不同的特征), 或者 CNN 使用多个卷积核 (获得不同的通道).

4. 小结

  • 与 MLP, CNN 一样, 自注意力也是提取特征的过程.
  • 没有管单词顺序, 只计算权重.
  • 矩阵运算并行处理, 非常节约时间.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值