xy0v0's Blog

xy0v0's Blog

交大荣昶笔记#3 | Transformer

2025-08-02

Transformer

RNN

序列数据处理

  • 输入序列: ​x_1, x_2, ..., x_n
  • 隐藏状态: ​h_t = f(h_{t-1}, x_t)
  • 输出: ​y_t = g(h_t)

Decoder-only

  1. 分词&词嵌入
  2. 位置编码
    用于捕获字符在序列中的位置,不用依赖于先前计算,可用于并行计算
  3. 前向计算
    经过计算给定输入生成可能得到下一个字符的概率分布
  4. 反向训练

Tokenizer 词元分析器

起步阶段:One-hot编码

为每个词打上编号

缺点太多

向量表示

使用词嵌入 Embedding

把高维One-hot编码转化为低维稠密向量,同时包含语义关联

Positional Encoding 位置编码

PE_{(pos,2i)} = sin(pos/10000^{2i/d_{model}})
PE_{(pos,2i+1)} = cos(pos/10000^{2i/d_{model}})

其中:

  • ​pos : 当前token在序列中的位置

  • ​i : 该token的某一维度

    i \in (0,\frac{dimension}2-1)
  • ​d_model 是词嵌入的维度

特点:

  1. 每个位置都有唯一的编码
  2. 位置编码的值域在[-1,1]之间
  3. 不同位置的编码之间有一定的规律性

Self-attention 自注意力

Transformer 中引入 QKV(Query,Key,Value) 概念

利用矩阵计算自注意力:

​X 为输入的词嵌入向量,则:

  • 查询向量: ​Q = XW_Q
  • 键向量: ​K = XW_K
  • 值向量: ​V = XW_V

三者与嵌入向量 ​X 相乘,且三者均是可学习的

Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V