目录
- 模型架构
- 输入部分
- 词嵌入
- 位置编码
模型架构
- Transformer是深度学习领域中的一个重要模型架构,尤其在自然语言处理(NLP)领域取得了显著的成功。Transformer模型最初由Google在2017年提出,旨在解决传统序列到序列模型在处理长距离依赖问题上的不足。传统的RNN和LSTM模型在处理长文本序列时,容易出现梯度消失或爆炸问题,导致模型性能下降。而Transformer模型通过引入自注意力机制和多头注意力机制,成功地解决了这一问题。
- 由输入部分、输出部分、编码器区域部分、解码器区域部分构成
输入部分
词嵌入
- 转换离散数据为连续数据自然语言处理中的文本数据本质上是离散的符号序列。例如,单词和字符是离散的,没有直接的数值表示。神经网络和其他机器学习算法通常处理的是连续的数值数据。因此,需要一种方法将这些离散的符号转换为连续的数值向量,这就是词嵌入的作用。
- 捕捉语义关系通过适当的训练,词嵌入可以捕捉到单词之间的语义关系。比如,经过训练的词嵌入向量可以使得“king”与“queen”的距离接近于“man”与“woman”的距离。这种特性使得词嵌入向量不仅能够表示单词本身,还能反映单词间的语义相似性。
位置编码
-
序列顺序的重要性
在自然语言处理中,单词的顺序非常重要。例如,在句子中,“I am eating an apple” 和 “An apple I am eating” 虽然意思相近,但结构和语义上还是有些不同。因此,模型需要知道单词在句子中的位置,才能准确地理解和处理句子。 -
Transformer的结构特点
Transformer是基于自注意力机制(Self-Attention)的模型,自注意力机制的一个特点是它对输入序列中的所有单词同时进行处理,而不是逐步处理。这使得模型缺乏顺序信息。为了弥补这一点,必须引入额外的位置信息。 -
提供位置感知能力
通过位置编码,可以给模型提供每个单词在序列中的位置信息,使得模型不仅能关注单词本身,还能关注单词之间的相对位置关系。这样,模型在处理时能够保留输入序列的结构信息。 -
保持输入顺序的平移不变性
位置编码确保了模型能够识别输入序列中的顺序,同时保证输入序列的平移不变性。即使输入序列的部分内容发生了位置变化,模型依然能够正确处理和理解。 -
位置编码的形式
Transformer使用的常见位置编码方法是正弦和余弦函数,这种方式能够在不同的位置生成唯一的编码,同时具有平滑的变化和良好的扩展性。
PE ( p o s , 2 i ) = sin ( p o s 1000 0 2 i d model ) PE ( p o s , 2 i + 1 ) = cos ( p o s 1000 0 2 i d model ) \text{PE}(pos, 2i) = \sin\left( \frac{pos}{10000^{\frac{2i}{d_{\text{model}}}}} \right)\\\text{PE}(pos, 2i + 1) = \cos\left( \frac{pos}{10000^{\frac{2i}{d_{\text{model}}}}} \right) PE(pos,2i)=sin(10000dmodel2ipos)PE(pos,2i+1)=cos(10000dmodel2ipos)
其中, p o s pos pos 表示位置, i i i 表示维度, d model d_{\text{model}} dmodel 是嵌入维度。
为什么用这个编码,验证可能性:
和角公式 s i n ( α + β ) = s i n α c o s β + c o s α s i n β , c o s ( α + β ) = c o s α c o s β − s i n α s i n β sin(\alpha+\beta)=sin\alpha cos\beta+cos\alpha sin\beta,cos(\alpha+\beta)=cos\alpha cos\beta-sin\alpha sin\beta sin(α+β)=sinαcosβ+cosαsinβ,cos(α+β)=cosαcosβ−sinαsinβ
假设我们有两个位置 x x x 和 y y y,并且定义: f ( i ) = 1000 0 2 i d model f(i)=10000^{\frac{2i}{d_{\text{model}}}} f(i)=10000dmodel2i
有: P E x + y , 2 i = sin ( x + y f ( i ) ) = sin ( x f ( i ) ) cos ( y f ( i ) ) + cos ( x f ( i ) ) sin ( y f ( i ) ) P E x + y , 2 i + 1 = cos ( x + y f ( i ) ) = cos ( x f ( i ) ) cos ( y f ( i ) ) − sin ( x f ( i ) ) sin ( y f ( i ) ) PE_{x+y,2i} = \sin\left(\frac{x + y}{f(i)}\right) = \sin\left(\frac{x}{f(i)}\right)\cos\left(\frac{y}{f(i)}\right) + \cos\left(\frac{x}{f(i)}\right)\sin\left(\frac{y}{f(i)}\right)\\PE_{x+y,2i+1} = \cos\left(\frac{x + y}{f(i)}\right) = \cos\left(\frac{x}{f(i)}\right)\cos\left(\frac{y}{f(i)}\right) - \sin\left(\frac{x}{f(i)}\right)\sin\left(\frac{y}{f(i)}\right) PEx+y,2i=sin(f(i)x+y)=sin(f(i)x)cos(f(i)y)+cos(f(i)x)sin(f(i)y)PEx+y,2i+1=cos(f(i)x+y)=cos(f(i)x)cos(f(i)y)−sin(f(i)x)sin(f(i)y)
则:
P E x + y , 2 i = P E x , 2 i ⋅ P E y , 2 i + 1 + P E x , 2 i + 1 ⋅ P E y , 2 i + 1 P E x + y , 2 i = P E x , 2 i + 1 ⋅ P E y , 2 i + 1 − P E x , 2 i ⋅ P E y , 2 i PE_{x + y, 2i} = PE_{x, 2i }\cdot PE_{y, 2i+1} + PE_{x, 2i +1} \cdot PE_{y, 2i + 1}\\PE_{x + y, 2i} = PE_{x, 2i +1}\cdot PE_{y, 2i+1} - PE_{x, 2i } \cdot PE_{y, 2i } PEx+y,2i=PEx,2i⋅PEy,2i+1+PEx,2i+1⋅PEy,2i+1PEx+y,2i=PEx,2i+1⋅PEy,2i+1−PEx,2i⋅PEy,2i
可以看出 T r a n s f o r m e r Transformer Transformer可以线性变换表示位置 x x x和 y y y之间的相对关系,这样构造出的线性关系可以表达各个位置的相对关系。