Transformer模型的原理主要基于自注意力机制(Self-Attention)和编码器-解码器结构。它的设计不依赖传统的循环神经网络(RNN)或卷积神经网络(CNN),而是通过并行的方式处理序列数据,极大提高了训练效率和性能。下面是Transformer的主要原理:
1. 自注意力机制
自注意力机制是Transformer的核心。它可以在序列中找到每个词与其他词的相关性,从而理解上下文关系。计算方法如下:
- 输入向量转化为Query(Q)、Key(K)和Value(V):每个词通过线性变换生成Q、K、V向量。
- 计算注意力权重:对每个词的Q与其他词的K进行点积,并归一化得到权重。
- 生成输出:用权重对V向量加权求和,生成关注的输出。
2. 多头注意力(Multi-Head Attention)
多头注意力是在不同子空间中计算注意力,捕获更多的语义信息。通过多个Q、K、V头(通常8或12个),得到多个注意力输出并进行拼接,提供更丰富的表达。
3. 位置编码(Positional Encoding)
因为Transformer没有顺序处理输入,所以需要加入位置编码来保留序列信息。位置编码是一种向量,通过加到词嵌入上,给出词的位置信息,通常通过正弦和余弦函数计算。
4. 编码器-解码器结构
Transformer分为编码器和解码器:
- 编码器:输入的序列通过自注意力和前馈神经网络逐层编码,生成每个词的上下文向量。
- 解码器:解码器通过自注意力机制生成目标序列,使用编码器输出的上下文信息。自注意力用于目标序列中的词彼此关注。
5. 前馈神经网络和残差连接
编码器和解码器层中还有一个前馈神经网络(两层MLP),用于非线性变换。每层之间有残差连接和Layer Normalization,保持梯度稳定和模型深度的效果。
三个权重矩阵即W Q , W K , W V , 这个怎么得出来的?
那为什么dk=dv,那么直接用dk表示不就行了吗
在自注意力机制中,将分数除以一个常数(例如8,通常是键向量维度的平方根),这是为什么?
自注意力层的完善——“多头”注意力机制,引入这个的意义是什么?