2020机器学习 Transform 模型(2)

image
image

现在结合这张图大家可以回顾一下之前我们介绍如何通过线性变换来实现序列中各个时刻的注意力的分配。

多头自注意力机制(Multi-head Self-attention)

接下来我们和之前一样来做 self-attention,不同的地方是这一次只是对应位置上来 self-attention。也就是 只和 做匹配,而不会和 做匹配图中已经很清楚看出他们是如何做匹配。然后通过同样的流程计算中出

然后

做到多头自注意力机制好处就是我们不同的头(head)可以做不同事,有的头会更多关注与其相邻的输入,有的头可能会更多关注时间距离其较远的输入。也就是更加灵活了。当然这里只是给出了 2 头的自注意力,你可以做的更多。

解决 self-attention 中丢失的位置信息

现在我们可能已经大概了解自注意力是如何实现的,但是问题是现在我们每一个输入间关注度是均等,这里可能丢失每一时刻的输入的位置编码信息,既然是序列我们就需要知道每一个输入无论是在空间上还是时间上的位置编码信息。

由于 transformer 模型中,没有循环神经网络的迭代操作, 所以必须提供每个字的位置信息给 transformer, 才能识别出序列中的顺序关系.
现在定义一个位置嵌入的概念, 也就是

image
, 位置嵌入的维度为
image
, 嵌入的维度同词向量的维度一样,
image
属于超参数, 指的是限定的最大单个句长.

在论文中使用 和 函数线性变换来提供模型位置信息。


image
image

位置编码的方法是:构造一个跟输入embedding维度一样的矩阵,使用正弦函数和余弦函数来构造每个位置的值。

  • pos 表示词,如果序列中有 10 词 pos 就是 0 - 9 数字

  • image

    表示词向量的维度(列)

  • 表示词向量的位置,偶数位置用 而奇数采用

在李宏毅老师分享中,他是通过添加表示位置的热独编码(one-hot) 来表示每一个 的位置信息。

然后我们 和 做合并后乘以 做 embedding。我们可以将 理解为 和 组合,他们分别对应与 和 ,这样的话,我们就可以将他们乘积分别对应到表示输入和表示位置 从而等同 paper 对于位置信息 的设计。

self-attention 在 Seq2Seq 中使用

我们已经知道在 Seq2Seq 分别有两个 RNN 分别是编码器(encoder)和解码器(decoder)。

image

上面这张图就是 transformer 架构,既然之前已经说过 transformer 就是使用 self-attention 的 Seq2Seq,那么他就应该有编码器和解码器,在图中左半部分就是编码器(encoder)而右边就是解码器(decoder)。

你可能感兴趣的:(2020机器学习 Transform 模型(2))