Skip to content

📚 学习辅助材料

这个文件夹包含了帮助理解 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

📖 推荐学习顺序

  1. 第一步:理解归一化

    • why_normalization.py → 理解为什么需要归一化
    • rmsnorm_explained.py → 理解 RMSNorm 的工作原理
    • normalization_comparison.py → 对比不同方法
  2. 第二步:理解位置编码

    • rope_basics.py → 理解 RoPE 基本原理
    • rope_multi_frequency.py → 理解多频率机制
    • rope_why_multi_frequency.py → 理解为什么需要多频率(浮点数精度)⭐️
    • rope_explained.py → 完整实现(可选)
  3. 第三步:理解注意力机制

    • attention_explained.py → Transformer 的核心

💡 学习建议

  • 每个文件都包含详细注释,建议边读代码边运行
  • 可以修改参数(如层数、维度)观察不同效果
  • 有不理解的地方可以在 knowledge_base.md 中查找答案

🔗 相关文档

基于 MiniMind 项目的学习笔记