大模型第一课:手写推导线性回归的“灵魂”
在深度学习和人工智能的宏大叙事中,Transformer、大语言模型动辄拥有千亿参数,令人望而生畏。但如果我们剥去这些复杂的外衣,会发现一切神经网络的基石,其实都源于一个最简单的模型——线性回归。
今天这篇博客,我们不谈复杂的框架代码,而是回归数学本质。我们将通过一份手写的学习笔记,彻底搞懂机器是如何通过“试错”来学会预测的。
核心观点:理解线性回归,就是掌握了深度学习的“第一性原理”。
一、模型的诞生:给数据画一条直线
想象一下,你是一名房产中介,手头有一堆历史成交数据(房子的面积和对应的价格)。你的目标是找到一条规律,能最好地“穿过”这些数据点,从而根据新房子的面积来预测它的价格。
这就是线性回归要解决的问题:拟合。
为了实现这个目标,我们需要定义两个核心要素:
- 输入值 (x):喂给模型的特征数据(例如:房子面积)。
- 输出值 (z):模型给出的预测结果(例如:预测房价)。
为了让 x 变成 z,我们需要两个可调节的参数——这也是模型真正要去“学习”的东西:
- 权重 ($w$, Weight):决定输入 x 对结果的影响程度。在几何上,它是直线的斜率。
- 偏置 ($b$, Bias):决定当 x=0 时的基础值。在几何上,它是直线的截距。
于是,我们得到了机器学习界最经典的公式:
💡 笔记划重点:这个简单的线性公式,就是所有神经网络神经元计算的雏形。
二、怎么才算“学得好”?引入 Loss 函数
模型给出了预测值 z,但怎么知道它准不准呢?我们需要一个“裁判”来打分。这个裁判就是损失函数(Loss Function)。
同时,我们需要一个参照标准——目标值 (Y, Ground Truth),也就是真实答案(例如:房子的实际成交价)。
笔记中使用了最直观的均方误差(MSE)思想。为了简化推导,我们只看单个样本的误差平方:
把 代入,就得到了关于 w 和 b 的完整表达式:
核心逻辑图解:
| 情况 | 预测值 vs 真实值 | Loss 大小 | 含义 |
|---|---|---|---|
| 预测准确 | z 接近 Y | 很小 (趋近于0) | 模型表现好 ✅ |
| 预测偏差大 | z 远离 Y | 很大 | 模型表现差 ❌ |
我们的终极目标:通过不断调整 w 和 b,让 Loss 尽可能小。这就是所谓的“训练”。
三、如何调整参数?反向传播与梯度下降
知道了目标是最小化 Loss,那具体该怎么调 $w$ 和 $b$ 呢?像无头苍蝇一样随机乱猜肯定不行,我们需要数学指引。
这就涉及到了两个关键概念:反向传播(Backpropagation) 和 梯度下降(Gradient Descent)。
1. 寻找方向:梯度的意义
我们需要知道:如果我稍微改变一点点 $w$,Loss 会变大还是变小?变化有多快?
这就需要用到微积分中的求导(Derivative)。导数(也叫梯度)告诉我们 Loss 函数在当前点的“坡度”方向。
- 如果梯度是正的,说明往右走 Loss 会变大,我们要往左走(减小 $w$)。
- 如果梯度是负的,说明往右走 Loss 会变小,我们要往右走(增加 $w$)。
2. 链式求导实战
根据链式法则,我们对 $w$ 和 $b$ 分别求导(即计算梯度):
① 对权重 $w$ 求导:
- 推导拆解:外层平方求导得到 $2(\dots)$ $\times$ 内层 $(xw+b)$ 对 $w$ 求导得到 $x$。
- 物理含义:误差越大,或者输入 $x$ 越大,权重的调整幅度就应该越大。
② 对偏置 $b$ 求导:
- 推导拆解:外层平方求导得到 $2(\dots)$ $\times$ 内层 $(xw+b)$ 对 $b$ 求导得到 $1$。
3. 迈出步伐:参数更新
有了梯度之后,我们就可以沿着梯度的反方向更新参数(因为梯度的方向是 Loss 增加最快的方向,反方向才是下山的路):
其中 $\eta$(读作 Eta)是学习率(Learning Rate)。它控制每次更新的步长:
- 太大:可能直接跨过最低点,导致无法收敛(震荡)。
- 太小:下山速度太慢,训练时间过长。
四、总结:机器学习的完美闭环
回顾整个流程,我们可以总结出机器学习最基本的闭环逻辑:
graph LR
A[输入 x] --> B(前向传播 计算 z = x*w + b)
B --> C["计算 Loss(z - Y)²"]
C -- 误差反馈 --> D["反向传播 计算梯度 ∂Loss/∂w, ∂Loss/∂b"]
D --> E["参数更新w = w - η·梯度"]
E --> B
style A fill:#e1f5fe,stroke:#333,stroke-width:2px
style B fill:#fff9c4,stroke:#333,stroke-width:2px
style C fill:#ffe0b2,stroke:#333,stroke-width:2px
style D fill:#f3e5f5,stroke:#333,stroke-width:2px
style E fill:#c8e6c9,stroke:#333,stroke-width:2px
| 步骤 | 名称 | 作用 | 形象比喻 |
|---|---|---|---|
| 1 | 前向传播 | 用当前的 $w, b$ 算出预测值 $z$ | 盲人摸象,先猜一下 |
| 2 | 计算 Loss | 对比预测值 $z$ 和真实值 $Y$,算出误差 | 睁眼看看,猜错了多少 |
| 3 | 反向传播 | 利用求导公式,算出梯度 | 分析原因,确定调整方向 |
| 4 | 参数更新 | 沿梯度反方向更新 $w$ 和 $b$ | 修正动作,下次猜得更准 |
循环往复,直到 Loss 降到一个可接受的范围。这就是机器“学习”的本质——不断试错、反馈、调整,直到找到最优解。
写在最后
虽然现在的 Transformer 和大模型结构极其复杂,内部包含了注意力机制、多层感知机等高级组件,但它们底层的优化逻辑,依然没有逃出这几行简单的公式:
- 前向传播:$z = x \cdot w + b$ (及其非线性变体)
- 计算损失:$(z - Y)^2$ (或交叉熵等)
- 反向传播:链式求导
- 参数更新:梯度下降
万丈高楼平地起。 当你以后面对再复杂的模型感到迷茫时,只要回到线性回归这个原点,你就不会迷失方向。
核心公式速查卡
建议截图保存,随时复习:
| 公式 | 含义 |
|---|---|
| $z = x \cdot w + b$ | 线性回归模型(前向传播) |
| $\text{Loss} = (z - Y)^2$ | 损失函数(衡量预测误差) |
| $\frac{\partial \text{Loss}}{\partial w} = 2(z - Y) \cdot x$ | 权重梯度(指导 $w$ 如何变) |
| $\frac{\partial \text{Loss}}{\partial b} = 2(z - Y)$ | 偏置梯度(指导 $b$ 如何变) |
| $w = w - \eta \cdot \text{梯度}$ | 参数更新规则(梯度下降) |