📚 学习辅助材料
这个文件夹包含了帮助理解 MiniMind 核心概念的可执行示例代码。
📂 文件列表
1. 归一化相关
why_normalization.py- 为什么需要归一化?- 演示没有归一化时的梯度消失问题
- 对比有/无 RMSNorm 的训练稳定性
- 适合初学者理解归一化的必要性
rmsnorm_explained.py- RMSNorm 详细解析- RMSNorm 的数学公式和实现
- 实际效果演示
normalization_comparison.py- 不同归一化方法对比- LayerNorm vs RMSNorm
- 速度和效果对比
- 为什么现代 LLM 选择 RMSNorm
2. 位置编码相关
rope_basics.py- RoPE 基础原理- Attention 的排列不变性问题
- RoPE 的核心思想:旋转编码
- 相对位置信息如何自动产生
rope_multi_frequency.py- 多频率机制详解- 解决"旋转一圈回到原点"的问题
- 理解高频/低频编码
- 绝对 vs 相对位置信息
rope_why_multi_frequency.py- 为什么需要多频率 ⭐️- 浮点数精度限制问题
- 单一低频率的实验验证
- 多频率的必要性证明
- 适合理解工程实现细节
rope_explained.py- 完整实现(高级)- 完整的 RoPE 实现代码
- YaRN 长度外推机制
- 适合深入理解
3. 注意力机制相关
attention_explained.py- Multi-Head Attention 详解- Attention 的核心计算流程
- GQA (Grouped Query Attention) 机制
- 注意力权重可视化
🚀 如何使用
每个文件都是独立可运行的,进入项目根目录后:
bash
# 激活虚拟环境
source venv/bin/activate
# 运行任意示例
python learning_materials/why_normalization.py
python learning_materials/rope_basics.py
python learning_materials/rope_multi_frequency.py📖 推荐学习顺序
第一步:理解归一化
why_normalization.py→ 理解为什么需要归一化rmsnorm_explained.py→ 理解 RMSNorm 的工作原理normalization_comparison.py→ 对比不同方法
第二步:理解位置编码
rope_basics.py→ 理解 RoPE 基本原理rope_multi_frequency.py→ 理解多频率机制rope_why_multi_frequency.py→ 理解为什么需要多频率(浮点数精度)⭐️rope_explained.py→ 完整实现(可选)
第三步:理解注意力机制
attention_explained.py→ Transformer 的核心
💡 学习建议
- 每个文件都包含详细注释,建议边读代码边运行
- 可以修改参数(如层数、维度)观察不同效果
- 有不理解的地方可以在
knowledge_base.md中查找答案
🔗 相关文档
- 知识库:../knowledge_base.md
- 学习日志:../learning_log.md
- 主要代码实现:../model/model_minimind.py