赞
踩
参考:https://blog.csdn.net/han_xiaoyang/article/details/86560459
https://jalammar.github.io/illustrated-transformer/
以下仅为个人学习笔记
(1) Transformer改进了RNN最被人诟病的训练慢的缺点,利用self-attention机制实现快速并行。
(2) Transformer可以增加到非常深的深度,充分发掘DNN模型的特性,提升模型准确率。
为了方便理解,可以先看向量形式的计算过程,即先从一个词的计算过程进行理解。以下,直接从矩阵形式计算过程进行总结,实际在计算机中运算时是以矩阵形式。变量声明:假设所有句子中最长的序列为m,词嵌入维度为n,n=512。
(1) 计算查询矩阵(query vector)、键矩阵(key vector)和值矩阵(value vector)。
(2) 得到自注意力层的输出。
Z
=
s
o
f
t
m
a
x
(
Q
×
K
T
d
k
)
⋅
V
Z=softmax(\frac{Q\times K^T}{\sqrt{d_k}})\cdot V
Z=softmax(dk
Q×KT)⋅V
其计算过程如下图所示:
想一想,根据之前的描述是不是没有考虑单词之间的顺序,为了解决这个问题,Transformer为每个单词添加了位置编码向量 (positional encoding),这些向量的值遵循特定的模式。原始论文中计算位置编码向量的公式见3.5节,这种编码方式的优点是能够扩展到未知的序列长度 (例如,当我们训练出的模型需要翻译远比训练集里的句子更长的句子时)。举例如下图所示:
以上主要都是基于Encoders来理解的,这部分补充一些关于Decoders的内部细节。
解码阶段的每个步骤都会输出一个输出序列,直到输出一个特殊的终止符号,它表示transformer的解码器已经完成了它的输出。每个步骤的输出在下一个时间步被提供给底端解码器。需要注意的是,解码器也会给每个单词添加位置编码。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。