self-attention 李宏毅

Self Attention 李宏毅

一般用于输入一个序列,经过模型输出一个序列的
20221110194049

20221110194202

如上如图所示,在翻译句子词性的时候,要考虑句子上下文的关系?如何将上下文考虑进去?

采用self attention机制,将输入的向量,经过变化输出一个考虑上下文的新的向量

20221110205753

也可以进行多次self attention
20221110205806

self attention 过程

对于其中一个输入向量,要靠考虑与其他向量的相关性,变换后输出新的向量

20221110205948

如何考虑向量之间的相关性?

20221110210020

将一个向量与 W q W^q Wq相乘得到 q向量,同理也能得到 k 向量,两个向量进行点积,输出他们的相关性,也可以采用右侧的更复杂的模型计算相关性。 不过dot-product比较常用。

20221110210319

我们使用一个输入的 q 向量,和其他所有输入的 k 向量进行 dot-product,将得到的分数进行归一化 (比如 soft-max),得到的 α 1 , 1 ′ α 1 , 2 ′ α'_{1,1} α'_{1,2} α1,1α1,2等,都可以看作生成新向量的权重。

20221110210826

然后让 α 1 , 1 ′ α 1 , 2 ′ α'_{1,1} α'_{1,2} α1,1α1,2等分别和对应的 v 向量相乘,得到新的输出 b 1 b^1 b1

20221110210946

我们可以考虑将 self attention 过程进行并化处理。

self attention 矩阵计算过程

计算 q k v 矩阵
20221110211152

20221110211204

计算相关性得分

20221110211330

计算输出

20221110211501

20221110211533

multi-head self-attention

输入的数据可能有多种类型的相关性。

在得到 q k v的基础上,同一个输入计算多个 q k v 向量。
20221110211735

20221110211803

20221110211835

Positional Encoding

在使用 self attention的时候,完全没有考虑位置关心。
比如 q1 与 k1 k2 k3… 之间的计算,并没有什么区别,“天涯若比邻”

向我们的计算过程中添加位置因素:
设置位置向量 e,每一个 position对应一个位置向量 e i e^i ei,位置向量两个来源:

  • 手动设置
  • 从数据中学习到

20221110212220

self-attention v.s. CNN

20221110212300

可以将CNN看作是一种超级简化版的self-attention

  • CNN 计算一个位置的信息的时候,只考虑一个卷积核范围内的数据
  • self-attention 计算一个位置的信息时,考虑整个数据,并自动设置关系,所有更加复杂。

20221110212544

self-attention v.s. RNN

20221110212645

  • RNN 要按照 time step进行计算,前后每一步之间并不能实现并行化计算
  • self-attention 可以设计并行化的实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值