数学与编程基础
核对日期:2026-05-13。
1. 阶段目标
本阶段目标是补齐学习 AI 所需的最小数学和工程基础。它不是数学专业课,也不是 Python 入门大全,而是为了后续机器学习、深度学习、embedding、RAG、评测和成本分析建立共同语言。
学完本阶段,你应该能做到:
- 用向量、矩阵、相似度解释 embedding 和模型输入。
- 用概率、分布、期望、方差理解模型输出的不确定性。
- 用损失函数、梯度、学习率解释模型训练过程。
- 用 Python、NumPy、pandas、SQL 完成基础数据处理。
- 能写出一个数据分析 notebook,并说明数据质量风险。
本阶段的核心产出是:
- 3 个数据分析 notebook。
- 1 个手写线性回归训练实验。
- 1 份数据质量检查清单。
2. 学习前置条件
建议具备:
- 能写基础代码,理解变量、函数、数组、循环。
- 能理解表格数据,例如用户表、订单表、日志表。
- 能使用命令行运行脚本或 notebook。
不要求:
- 高等数学熟练推导。
- 机器学习经验。
- 深度学习框架经验。
3. 核心知识地图
4. 详细讲义
4.1 为什么 AI 学习需要数学
数学不是为了炫技,而是为了避免把 AI 当黑箱魔法。你至少需要知道:
- 文本、图片、用户行为最终会被表示成向量或张量。
- 模型训练是通过损失函数衡量错误,再通过优化方法减少错误。
- 模型输出常常是概率或分数,不是绝对事实。
- 评测指标背后有统计含义,不能只看单个样例。
工程上不理解这些,会导致几个问题:
- 不知道为什么 embedding 能做相似搜索。
- 不知道为什么训练集效果好但线上变差。
- 不知道为什么类别不平衡时 accuracy 会误导。
- 不知道为什么模型输出置信度不能直接当真。
4.2 线性代数最小集
重点掌握:
| 概念 | 直觉 | AI 中的作用 |
|---|---|---|
| 标量 | 一个数 | loss、概率、价格 |
| 向量 | 一组数 | 样本、embedding、特征 |
| 矩阵 | 多个向量组成的表 | 批量数据、神经网络权重 |
| 点积 | 两个向量方向和大小的匹配 | 相似度、注意力得分 |
| 范数 | 向量长度 | 归一化、距离计算 |
| 余弦相似度 | 两个方向是否接近 | 语义检索 |
Embedding 的关键直觉:模型把对象映射到一个向量空间,语义相近的对象在空间中距离更近。RAG、推荐、聚类、语义搜索都依赖这个思想。
4.3 概率统计最小集
重点掌握:
| 概念 | 直觉 | AI 中的作用 |
|---|---|---|
| 概率 | 事件发生的可能性 | 分类输出、语言模型下一个 token |
| 条件概率 | 已知条件下的概率 | 贝叶斯判断、上下文生成 |
| 期望 | 长期平均值 | 平均损失、平均收益 |
| 方差 | 波动程度 | 稳定性、风险 |
| 采样 | 从分布中抽取样本 | LLM 生成、训练数据抽样 |
| 置信区间 | 估计的不确定范围 | 指标是否可靠 |
不要把模型概率误解为事实概率。模型输出的概率通常表示模型在训练分布和当前上下文下的相对偏好,不等于真实世界概率。
4.4 优化最小集
模型训练可以粗略理解为:
初始化参数 -> 用模型预测 -> 计算损失 -> 计算梯度 -> 更新参数 -> 重复
关键概念:
- 损失函数:告诉模型当前错得有多离谱。
- 梯度:告诉参数往哪个方向改能让损失下降。
- 学习率:每次改多大。
- 局部最优:不是所有优化都能找到全局最好。
- 正则化:防止模型过度记住训练数据。
4.5 Python 最小工程能力
本课程默认使用 Python 做数据和 AI 实验。你至少需要掌握:
- 虚拟环境和依赖管理。
- 读写 CSV / JSON。
- 函数、模块、异常处理。
- 类型提示的基本使用。
- notebook 的实验记录方式。
示例结构:
project/
├── data/
├── notebooks/
├── src/
├── outputs/
└── README.md
4.6 NumPy 最小集
NumPy 是理解张量计算的入口:
- array 创建和 shape。
- 向量化计算。
- 矩阵乘法。
- 广播机制。
- 随机数和采样。
常见错误是 shape 不匹配。训练后续深度学习时,很多 bug 都是 shape 理解不清导致。
4.7 pandas 最小集
pandas 用于表格数据分析:
- 读取 CSV / Excel / JSON。
- 查看数据分布。
- 处理缺失值。
- groupby 聚合。
- merge 连接表。
- 时间字段处理。
- 输出统计和可视化。
数据清洗不是“前置杂活”,而是模型效果上限的一部分。
4.8 SQL 最小集
很多 AI 项目开始于业务数据库,而不是 Kaggle 数据集。SQL 至少掌握:
SELECT / WHERE / GROUP BY / ORDER BYJOIN- 时间窗口过滤。
- 去重。
- 聚合统计。
AI 工程师不一定每天写复杂 SQL,但必须能和数据来源对话,知道样本怎么来的。
4.9 数据质量检查
数据质量检查至少包括:
| 检查项 | 问题 | 示例 |
|---|---|---|
| 缺失值 | 数据不完整 | 用户年龄为空 |
| 异常值 | 超出合理范围 | 订单金额为负 |
| 重复数据 | 同一实体重复出现 | 同一订单多条记录 |
| 时间穿越 | 使用未来数据 | 用退款结果预测是否退款 |
| 采样偏差 | 样本不代表真实分布 | 只采集高活跃用户 |
| 标签噪声 | 标注错误 | 风险订单被标成正常 |
5. 关键概念表
| 概念 | 为什么重要 | 工程用途 | 常见错误 |
|---|---|---|---|
| 向量 | 统一表示文本、图片、用户、商品 | Embedding、相似度搜索 | 只看距离,不看语义是否真实相关 |
| 矩阵 | 批量表示和线性变换 | 模型训练、特征表 | shape 混乱 |
| 概率分布 | 描述不确定性 | 分类概率、采样、评测 | 把模型概率当事实 |
| 损失函数 | 定义优化目标 | 训练模型 | 损失和业务指标不一致 |
| 梯度下降 | 更新模型参数 | 训练神经网络 | 学习率不合适 |
| 数据清洗 | 决定模型上限 | ML、RAG、评测数据准备 | 不检查直接训练 |
| SQL 聚合 | 生成样本和特征 | 用户行为、订单统计 | 时间范围和去重错误 |
6. 工程案例
6.1 用向量解释文本相似
两段文本经过 embedding 后得到两个向量。余弦相似度高,说明它们在模型的语义空间中方向相近。但这不等于它们事实一致。例如“退款政策”和“退款投诉”可能相似,但适用流程不同。
6.2 用 pandas 分析订单数据
基本流程:
读取数据 -> 查看字段 -> 检查缺失 -> 检查异常 -> 统计分布 -> 按业务维度聚合 -> 输出结论
结论必须同时写数据限制,例如“本数据只覆盖已登录用户,不代表匿名流量”。
6.3 用 SQL 构造用户特征
例如计算用户最近 30 天下单次数、退款次数、平均客单价。这些特征可以用于流失预测、风险识别或用户分群。
6.4 手写梯度下降
用一条直线拟合数据:
y_hat = w * x + b
loss = mean((y_hat - y) ^ 2)
通过调整 w 和 b 让 loss 下降。这个实验能帮助你理解后续模型训练不是“模型突然学会”,而是不断减少错误。
7. 常见误区与反模式
| 反模式 | 表现 | 问题 | 修正 |
|---|---|---|---|
| 数学全跳过 | 只会调 API | 后续无法理解评测和失败 | 学最小数学集 |
| 公式孤立学习 | 会背不会用 | 不知道工程含义 | 每个公式配一个案例 |
| 数据不检查 | 直接训练模型 | 模型学习脏数据 | 先做数据质量报告 |
| 相关当因果 | 看到相关就下结论 | 业务决策误判 | 标注“相关性,不证明因果” |
| notebook 混乱 | 结果不可复现 | 无法复盘 | 固定目录、记录参数 |
8. 阶段练习
8.1 数学练习
- 计算两个向量的点积、范数和余弦相似度。
- 给定一组分类结果,计算准确率、精确率、召回率。
- 解释学习率过大、过小分别会发生什么。
- 用自己的话解释损失函数和业务指标的区别。
8.2 Python / NumPy 练习
- 创建一个二维数组,计算每列均值和标准差。
- 实现余弦相似度函数。
- 用随机数据模拟一次梯度下降。
- 打印每一步参数和 loss。
8.3 pandas / SQL 练习
- 读取 CSV,输出字段类型、缺失率和唯一值数量。
- 按用户分组统计订单数和总金额。
- 合并用户表和订单表。
- 写 SQL 查询最近 30 天活跃用户。
9. 项目任务
9.1 Notebook 规划
本阶段至少完成 3 个 notebook:
| Notebook | 目标 | 必须包含 |
|---|---|---|
01-data-profile.ipynb | 数据概览 | 字段说明、缺失率、异常值、分布 |
02-feature-analysis.ipynb | 特征分析 | 分组统计、相关性、可视化 |
03-gradient-descent.ipynb | 训练直觉 | 手写线性回归、loss 曲线、学习率对比 |
9.2 数据分析项目
选择一份表格数据,完成:
- 数据读取。
- 字段说明。
- 缺失和异常检查。
- 至少 5 个统计图或表。
- 3 个业务结论。
- 2 个数据风险。
- 1 个后续 ML 任务设想。
9.3 评分标准
| 维度 | 分值 | 标准 |
|---|---|---|
| 数据理解 | 20 | 能说明字段含义和样本范围 |
| 数据质量 | 25 | 检查缺失、异常、重复、偏差 |
| 分析过程 | 25 | 有清晰统计和可视化 |
| 工程可复现 | 15 | notebook 结构清楚,可重新运行 |
| 结论表达 | 15 | 结论和限制都写清楚 |
10. 验收题
- 为什么 embedding 可以用向量表示?
- 余弦相似度高是否一定代表事实相关?为什么?
- 为什么训练模型需要损失函数?
- 学习率太大或太小会怎样?
- 缺失值处理有哪些策略?什么时候不能直接填均值?
- 什么是采样偏差?它会如何影响 AI 系统?
- 为什么训练集和测试集不能混用?
- 相关性和因果性有什么区别?
- 为什么 notebook 也需要可复现?
- SQL 构造特征时最容易出现哪些时间范围错误?
11. 延伸阅读
数学
- Mathematics for Machine Learning: https://mml-book.github.io/
- Khan Academy Linear Algebra: https://www.khanacademy.org/math/linear-algebra
- Seeing Theory: https://seeing-theory.brown.edu/
编程和数据
- NumPy Docs: https://numpy.org/doc/
- pandas Docs: https://pandas.pydata.org/docs/
- SQLBolt: https://sqlbolt.com/
- Python Data Science Handbook: https://jakevdp.github.io/PythonDataScienceHandbook/
12. 本阶段总结
本阶段的重点不是把数学学到很深,而是建立 AI 工程最小共同语言:向量表示、概率不确定性、优化训练、数据质量和可复现实验。
下一阶段进入机器学习。你会把本阶段的数据处理、特征构造、训练直觉和评测思维组合起来,完成一个端到端 ML 项目。