# Transformer、自注意力与 Adam 课堂记录

[[MCS/day11/00 学习指南|day11 学习指南]] · [[MCS/00 MCS学习总览|十一天总览]] · [[MCS/day11/阅读核验与疑问|阅读核验与疑问]] · 上一篇：[[MCS/day11/01 概率统计、大数定律与随机性|概率统计、大数定律与随机性]] · 下一篇：[[MCS/day11/03 评分矩阵与低秩推荐|评分矩阵与低秩推荐]]

> 来源：[[MCS/day11概率统计与大数定律|day11概率统计与大数定律]]。用途：选学。原有推导、追问与解答保留；阅读时请结合本日核验说明。

transformer
Tokenization分词：将文本数据分解为token 的过程。
token：是文本被分割成最小的处理单元。可以是一个字、一个词、一个标点符号等。

词表
常见的算法有 BPE等
输入：我有一个苹果 输出：4个token

输入层 embedding
Embedding作用：将token扩展到高维空间，以获取到更多的语义信息，捕捉数据之间的相似性或关系。旋转位置编码。把位置信息加入。
具有一定的黑盒性

注意力机制 Attention前置学习：理解注意力机制self-attention
注意力机制的本质
一个权重向量/矩阵 对原始输入进行加权
Transformer Block 的核心结构
全局 上下文
并行处理 
训练效率更高，所有 token 同时计算

Attention

在处理推理时，模型会看上下文，判断 token 更相关，然后把相关信息融合成新的表示，新惯性计算是通过矩阵乘法完成的。


NLP(seq 2 seq)
CV:SE网络模型

Self-attention：以输入自己本身来建立注意力权重
1. 向量的内积可以反映向量的相似性
2. 先分别用不同的权重矩阵乘以 X做映射，再计算内积
3. 添加归一化操作，使得梯度稳定
4. 内积映射到 0~1的概率分布，得到权重向量——softmax函数
5. 一个权重向量对原始输入进行加权


Transformer 自注意力机制：

$\begin{gathered}Attention(Q,K,V)=softmax\left(\frac{QK^{T}}{\sqrt{d_{k}}}\right)V\\\theta_{t+1}=\theta_t-\frac{\eta}{\sqrt{\hat{v}_t}+\epsilon}\hat{m}_t\\m_t=\beta_1m_{t-1}+(1-\beta_1)g_t\\v_t=\beta_2v_{t-1}+(1-\beta_2)g_t^2\\R\approx UV^{T}\\U\in\mathbb{R}^{|U|\times\boldsymbol{d}},\quad V\in\mathbb{R}^{|I|\times\boldsymbol{d}}\\\pi P=1\cdot\pi\\Q=kP\\\hat{f}(\omega)=\int_{-\infty}^{\infty}f(t)e^{-2\pi\boldsymbol{i}\omega t}dt\\X_k=\sum_{n=0}^{N-1}x_ne^{-2\pi ikn/N}\\O(N^2)\Rightarrow O(N\log N)\end{gathered}$


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

Attention的作用：结合上下文，理解每个token
三个概率分布再得到最终的向量
softmax函数：将向量的值转化为概率分布
多头注意力机制：从不同角度理解上下文：计算相关性
## 一句话核心

**Self-Attention 的本质就是：用矩阵乘法算相似度，用 softmax 变成概率分布，再用这个概率分布对 V 做加权平均。**



---

## 分步整理

### 1. Q、K、V 是什么？

Q、K、V 不是三个独立输入，它们都来自**同一个输入序列 X**，只是经过**不同的线性变换**得到：

$Q = XW_Q,\quad K = XW_K,\quad V = XW_V$

所以：

- **Q（Query）**：当前词想找什么 当前 token 的查询需求
- **K（Key）**：每个词能提供什么匹配信息 我有什么标签？上下文 token 的匹配搜索
- **V（Value）**：每个词真正携带的内容上下文 token 的实际信息

---

### 2. $QK^T$ 在干什么？

$QK^T$

用矩阵乘法算的是：

> **所有词对之间的相似度 / 匹配分数**

得到一个 $n \times n$ 的相似矩阵：

- 第 $i$ 行第 $j$ 列：第 $i$ 个词和第 $j$ 个词有多相关

所以你说“用矩阵乘法算 similarity”，这是对的。

---

### 3. 为什么不能直接用这个相似矩阵？

因为 $QK^T$ 得到的只是分数：

- 可正可负
- 大小不固定
- 不是概率分布
- 不能直接当权重用

所以它本身**不是 softmax 分布**，不能直接拿来做加权平均。

---

### 4. Softmax 起什么作用？

$\text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)$

做了两件事：

1. **除以 $\sqrt{d_k}$ **：防止分数过大，训练更稳定
2. **Softmax**：把每一行分数变成**概率分布**
   - 每个值在 0 到 1 之间
   - 每行加起来等于 1
   - 分数越大的位置，权重越大

所以 softmax 把“相似度分数”变成了“注意力权重”。

---

### 5. 再乘以 V 得到什么？

$\text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$

这一步是：

> 用注意力权重，对 V 做**加权平均**

也就是：

- 当前词对所有词都有一个注意力权重
- 用这些权重去加权所有词的 Value
- 得到当前词融合上下文后的新表示

这就是**加权输出**。

---

## 整条逻辑链

> 输入序列 X  
> → 线性变换得到 Q、K、V  
> → 用 $QK^T$ 算所有词对之间的相似度  
> → 除以 $\sqrt{d_k}$ 后 softmax，变成概率分布  
> → 用这个概率分布对 V 做加权平均  
> → 得到加权输出

---


$\text{Attention} = \text{softmax(相似度)} \times \text{内容}$

或者：

> **用矩阵乘法算相似度，用 softmax 变概率，用概率对 V 做加权平均。**

  
**QK^T 只是相似度分数，softmax 才把它变成可用的概率分布，最后乘 V 完成加权输出。**

积分-微积分方程的离散化形式
非局部积分算子
Adam 优化器：
梯度下降是一阶方法

牛顿法是二阶方法
一阶矩（动量）+二阶矩（自适应缩放），实现了“不算 H，可达到二阶收敛效果”

继续改进 adam，比如说针对自由啊，针对六自由度。

机械臂的轨迹规划提出的改进 adam 算法解决了收敛过程中学习率震荡问题啊，实现了震荡问题。
机械臂为什么要去做机械臂？其实如果只是做简单的、像挖掘机那种机械臂，我们早就做出来了，找人也能做。

但真正难的是两点：

第一，这个机械臂要有“自我意识”。当然，机器人不能像人一样真正思考，但要有类似带引号的“思考”能力，能自由地去推理、分析，并通过这些分析来指使它做下一个动作。

第二，关节要足够灵活。我不知道大家有没有在网上看过相关视频，或者在线下看过机器人，你会发现它们的关节其实没有这么灵活。真正能把机器人这只手做得跟我们人类的手一样，有没有？有，但是少，而且还不稳定。

你可以想一下，如果你把这项技术做好、突破掉，它能适应很多工作。比如在机器人方面，它的不稳定性你是不是可以解决？那这些东西是不是还可以应用到医疗方向？是不是都可以？

前馈神经网络 FFN（FeedForward Network）

Add&Norm
Add作用：残差连接，通过引入“跳跃连接”理解深度网络中的梯度消失或爆炸问题

Norm作用：归一化，保证数值在一个范围内，同样理解深度网络中的梯度消失或爆炸问题

输出层 OutPut
输出层由两部分组成：Linear 线性层+softmax 层
Linear 线性：将上一层输出线性变换转换为词的向量
softmax：

$\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t + \varepsilon}} \hat{m}_t$


$m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t$

$v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2$
