问题汇总
- Transformer的结构
- 自注意力机制(Self-Attention)
- 多头自注意力
- 前馈神经网络(Feed-Forward Network, FFN)
- 位置编码
- 编码器(Encoder)和解码器(Decoder)
- Multi-Query Attention(多查询注意力机制)
- Grouped-query Attention(分组查询注意力机制)
- FlashAttention
- 与注意力机制相关的问题
- 为什么要除以dk的开根号?
- Transformer为何使用多头注意力机制?
- 为什么Q和K使用不同的权重矩阵生成,为何不能使用同一个值进行自身的点乘?
- Transformer计算attention的时候为何选择点乘而不是加法?两者计算复杂度和效果上有什么区别?
- CNN用注意力机制也可以提取全局特征,为什么用Transformer
- 与transformer架构相关的问题
- tokenizer的作用?为什么bert要用专门的tokenizer?
- Transformer为什么优于RNN和LSTM,好在哪?
Transformer的结构
Transformer 的整体结构是一个编码器-解码器架构,每个编码器和解码器都由多个层堆叠而成。每层都由自注意力机制和前馈神经网络(Feed-Forward Network, FFN)组成。此外,还有残差连接(Residual Connection)和层归一化(Layer Normalization)
自注意力机制(Self-Attention)
自注意力机制是 Transformer 的核心创新,它的主要作用是对输入序列中的每个词进行加权求和,考虑到其他所有词对当前词的影响,从而获得词与词之间的全局关系。
具体而言,对于输入的每个单词,生成三个向量:查询(Query),键(Key),值(Value)。然后计算查询和键的相似度(通过点积计算),并根据这个相似度给值加权,最后生成输出。
时间和空间复杂度是 O(N^2),其中 N 是序列长度。