这是我参与更文应战的第23天,活动概况查看: 更文应战
导语
Transformer 模型内部细节许多,本文只主要解说 Attention 部分矩阵计算器和 Self-Attention 部分,如果感兴趣能够查看论文。
什么是 Trans矩阵相乘怎样算former
-
Transformer 是一矩阵类似个 Seq2Seq 模型,很合适机器翻译使命。不了解 Seq2Seq 模型的,能够矩阵看我之前矩阵的乘法运算的文矩阵的迹章 《Seq2Seq 练习和猜想详解以矩阵及优化技巧》
-
它不是循环神经网络结构,而是单纯靠 Attention 、Self-Attention 和全连接层拼接而成的网络结构。
-
Transformer 的测评功用完全碾压最好的 RNN + Attention 结构,现在业界现已没有人用 RNN ,而是用 BERT + Transformer 模型组合。
回想 RNN + Attention 结构
如图所示是一个 RNN + Attention 组合而成的模型,在 Decoder 的进程中核算 cj 的进程如下:
a)将 Decoder 的第 j 时间的输出向量 sj 与 WQ 相乘得到矩阵一个 q矩阵:j
b)将每个 Encoder 的隐层输出 hi 与 WK 相乘得到 k:i ,由于有 m 个输入,所以有 m 个 k:矩阵天王i 向量,用 K 标明。
c)用 KT 与 q:j 相乘,能够得到一个 m 维的向量,然后通矩阵的逆过 Softmax 就能够得到 m 个权重 aij 。
【解说】q:j 被成为 Query ,k:i 被称为 Key,Query 的作用是用来匹配 Key ,Key矩阵天王 的作用是被 Query 匹配,经过核算得到的权重 aij 标明的便是 Query 和每个 Key 的匹配程度,匹配程度越高 aij 越大。我以为能够这矩阵乘法样了解, Query 捕获的是 Decoder 的 sj 特征,Key 捕获的是 Encoder 输出的 m 个 hi 的特征,aij 标明的便是 sj 与每个 hi 的相关性。
d)将每个 Enco矩阵类似der 的隐层输出 hi 与 WV 相乘得到 v:矩阵i ,由于有 m 个输入,所以有 m 个 v:i 向量,用 V 标明。
e)经过以上的进程,Decoder 的第 j 时间的 cj 能够核算出来,也便是 m 个 a 和对应的 m 个 v 相乘,求加权均匀得到的。
【留心】WV、WK、WQ 三个参数矩阵是需求从练习数据中学习。
Transformer 中的 Attent矩阵天王ion
在 T矩阵的迹ransform矩阵的秩er 中移除了 RNN 结构,只保留了 Attention 结构,能够从下图中看出,运用 WK 和 WV 与 Encoder 的 m 个输入 x 进行核算分别得到 m 个 k:i 和 m 个矩阵 v:i 。运用 WQ 和 Decoder 的 t 个输入 x 进行核算得到 t 个矩阵相乘怎样算 q:t 。
如下图,这儿是核算 Decoder 第 1 个时间的权重, 将 KT 与 q:1 相乘,经过 Softmax 转化得到 m 个权重 a ,记做 a :1 。
如下图,这儿矩阵天王是核算 Decoder 第 1 个时间的上下文特征 c:1 ,将 m 个权重 a 与 m 个 v 分别相乘求和,得到加权均匀作用即矩阵为 c:1。
类似地,Decoder 的每个时间的上下文特征都能够和上面一样核算出来。矩阵乘法说白了 c:j 依赖于当时的 Decoder 输入 x‘j 以及悉数的 Encoder 输入 [x1,…,xm] 。
总结如下图,Encoder 的输入是序列 X ,Decoder 的输入是序列 X‘ ,上下文向量 C 是关于 X 和 X‘ 的函数作用,其间用到的三个参数矩阵 WQ 、WK 、WV 都是需求经过练习数据进行学习的。
下图所示是机器翻译的解码进程,Transformer 的这个进程和 RNN 的进程类似,RNN 是将状态向量 h:j 输入到 So矩阵的逆ftmax 分类器,只不过 Attention 是将上下文特征 c:j 输入到 Softmax 分类器,然后随机抽样能够猜想到下一个单词的输入。
Transformer 中的矩阵天王 S矩阵的逆elf-Attention
Self-Attention 的输入只需求一个 X 输入序列,这儿分别用 WQ 、WK 、WV 与每个输入 xi 进行核算得到 m 个 q:i、 k:i、 v:i 三个向量。而第 j 时间的权重和上面的核算方式一样,Softmax(KT * q:j矩阵的乘法运算) 能够得到第 j 时间的 xj 关于悉数输入 X 的 m 个权重参数,最终将 m 个权重参数与 m 个 v:i矩阵的乘法运算 分别相乘求和,即可得到上下文向量 c:j 。
类似的,悉数时间的 c:j 都能够用相同的方法求出来。
总结,输入是序列 X ,上下文向量 C 是关于 X 和 X 的函数作用,由于每次在核矩阵乘法算 xj 的上下文向量 cj矩阵游戏的时分,都是需求将 xj 与悉数 X 一起考虑进去并进行核算。其间用到的三个参数矩阵 WQ 、WK 、WV 都是需求经过练习数据进行学习的。
参考
[1] Vaswani A , Shazeer N , Parmar N ,矩阵乘法 et al. Attention Is All You Need[J矩阵计算器].矩阵的迹 arXiv, 2017.