从零构建大模型
从零构建大模型
从零构建大模型
作者:未知作者 笔记数:5 条
3.4 实现带可训练权重的自注意力机制
缩放点积注意力对比
设定d_k=16,缩放系数 \sqrt{d_k}=4 原始注意力分数:[8, 4, 2]
① 不缩放 [8, 4, 2] ↓ Softmax(·) ↓ [0.98, 0.02, 0.00]
- 分数过大
- Softmax 极度尖锐
- 几乎只关注第一个位置
- 梯度消失,难以训练
② 缩放(除以 √dₖ) [8, 4, 2] ↓ ÷ 4 ↓ [2, 1, 0.5] ↓ Softmax(·) ↓ [0.63, 0.23, 0.14]
- 分数回到合理范围
- Softmax 分布平滑
- 能关注多个相关位置
- 梯度正常,训练稳定
查询类似于数据库中的搜索查询。它代表了模型当前关注或试图理解的项(比如句子中的一个单词或词元)
键类似于用于数据库索引和搜索的键。在注意力机制中,输入序列中的每个项(比如句子中的每个单词)都有一个对应的键。这些键用于与查询进行匹配。
Self Attention
相比手动实现nn.Parameter(torch.rand(…)),使用nn.Linear的一个重要优势是它提供了优化的权重初始化方案,从而有助于模型训练的稳定性和有效性
This post is licensed under CC BY 4.0 by the author.