深度学习笔记:线性回归与 Softmax 回归
线性回归和 Softmax 回归是两个基础又关键的模型 —— 前者是解决 “预测连续值” 问题的入门典范,后者则是 “处理多分类任务” 的核心工具。
一、线性回归:预测连续值的 “入门款” 模型
1. 线性回归的核心公式:用 “线性组合” 建模
线性回归的本质,是假设 “目标值(比如房价)” 和 “特征(比如面积、卧室数)” 之间存在线性关系。用数学公式表示的话,最基础的单特征情况是:
y = wx + b
其中,y
是我们要预测的目标值(比如房价),x
是输入特征(比如房子面积),w
是 “权重”(表示特征对目标值的影响程度,比如面积每增加 1 平米,房价增加多少),b
是 “偏置”(相当于基础值,比如即使面积为 0 时的理论基数,实际中更多是调整模型的拟合偏差)。
如果有多个特征(比如面积、卧室数、距离地铁的距离),公式就扩展为:
y = w₁x₁ + w₂x₂ + ... + wₙxₙ + b
用向量表示会更简洁:y = Xw + b(X
是特征矩阵,w
是权重向量)。
2. 如何让模型 “学会” 参数?损失函数 + 优化算法
模型的核心是找到最优的w
和b
,而 “最优” 的标准是 “模型预测值和真实值的差距最小”。这就需要两个关键工具:损失函数(衡量差距)和优化算法(缩小差距)。
(1)损失函数:给 “差距” 定个量
线性回归最常用的损失函数是 “平方损失”(也叫 L2 损失),公式为:
L = ½∑(y_true - y_pred)²
其中y_true
是真实值(比如实际成交价),y_pred
是模型预测值。平方的作用是放大较大的误差,同时让损失函数是 “凸函数”—— 这样优化时更容易找到全局最小值(不会陷入局部最优)。
(2)优化算法:沿着 “梯度” 找最小值
有了损失函数,下一步就是找到让损失最小的w
和b
。这里的核心算法是 “梯度下降法”,它的逻辑很简单:
- 梯度是 “损失函数对每个参数的偏导数组成的向量”,它指示了 “损失函数值增加最快的方向”;
- 既然梯度指向 “增加最快的方向”,那我们就沿着 “梯度的反方向” 更新参数,就能让损失函数值不断减小;
- 重复这个过程:计算梯度→沿反梯度方向更新参数→再计算新梯度→再更新,直到损失函数值收敛到最小值。
3. 两个关键超参数:学习率和批量大小
用梯度下降时,有两个超参数直接影响模型的训练效果,必须重点关注:
(1)学习率(Learning Rate):步长的 “调节器”
学习率控制 “每次更新参数时,沿着反梯度方向走多远”,它的选择很关键:
- 学习率太大:步长太大,可能越过损失函数的最小值,导致损失函数值震荡不收敛;
- 学习率太小:步长太小,训练速度极慢,可能需要几千、几万轮才能收敛,甚至在训练结束前都达不到最小值。
实际中,我们通常会用 “学习率调度”(比如初始学习率大一些,随着训练轮次逐渐减小),或者通过交叉验证选择合适的初始学习率(比如 0.1、0.01、0.001)。
(2)批量大小(Batch Size):效率与稳定性的 “平衡器”
批量大小控制 “每次计算梯度用多少样本”,同样需要平衡:
- 批量太小:比如批量 = 1(SGD),梯度波动大,训练不稳定,而且无法充分利用 GPU 的并行计算能力(GPU 擅长批量处理数据);
- 批量太大:比如批量 = 全部数据(全量梯度下降),梯度稳定但计算量太大,每次更新都要处理所有数据,效率低,而且可能陷入 “局部最优”(因为批量太大,梯度太 “保守”,难以跳出局部最小值)常见的批量大小是 2 的幂次(32、64、128),具体选择要结合硬件性能(比如 GPU 显存大小)和数据量来定。
二、Softmax 回归:从 “预测连续值” 到 “分类离散类”
线性回归解决 “连续值预测”,但现实中更多问题是 “分类”—— 比如 “这张图片是猫还是狗”“手写数字是 0 还是 1”“评论是正面还是负面”。Softmax 回归就是为 “多分类任务” 设计的基础模型。
1. 回归与分类的核心区别
先明确一个关键概念:回归和分类的本质差异在于 “输出类型”:
- 回归:输出是连续值(比如房价、气温、股票价格),目标是让预测值尽可能接近真实值;
- 分类:输出是离散类别(比如猫 / 狗、0-9 数字、正面 / 负面评论),目标是让预测的类别尽可能准确。
2. Softmax 回归的核心:把 “输出” 变成 “概率”
线性回归的输出是连续值,无法直接用于分类 —— 因为分类需要 “每个类别的置信度”(比如 “这张图是猫的概率 90%,是狗的概率 10%”)。Softmax 回归的核心就是 “通过 Softmax 运算,把模型的原始输出(logits)转换成概率分布”。
(1)模型结构:多输出的线性层
Softmax 回归的模型结构和线性回归类似,也是 “输入层 + 输出层”,但输出层的神经元数量等于 “类别数”:
- 输入层:特征
X
(比如图像的像素特征、文本的向量特征); - 输出层:
K
个神经元(K
是类别数),每个神经元输出一个 “原始分数”(logit)o₁, o₂, ..., o_K
,表示 “样本属于第i
类的原始置信度”; - 输出层是 “全连接层”:每个输出
o_i
都依赖所有输入特征(因为o_i = w_i·X + b_i
,w_i
是第i
个输出神经元的权重向量)。
(2)Softmax 运算:从 “分数” 到 “概率”
原始分数o_i
可能是正数、负数,也没有归一化,无法直接作为概率。Softmax 运算就是解决这个问题,它的公式是:
y_i = exp (o_i) / ∑(exp (o_k)) (k 从 1 到 K)
这个运算有两个关键作用:
- 非负性:
exp(o_i)
永远是正数,所以y_i
也是正数,满足概率的 “非负性” 要求; - 归一性:所有
y_i
的和为 1(因为分子是exp(o_i)
,分母是所有exp(o_k)
的和),满足概率的 “总和为 1” 要求。
3. Softmax 回归的损失函数:交叉熵损失
线性回归用 “平方损失”,但 Softmax 回归不适合 —— 因为平方损失会导致 “梯度消失”(尤其是当预测概率和真实标签差距很大时),训练效率低。Softmax 回归的专用损失函数是 “交叉熵损失”。
(1)交叉熵的本质:衡量两个概率分布的差距
交叉熵原本是信息论中的概念,用于衡量 “两个概率分布之间的相似程度”。在分类任务中:
- 真实标签可以表示为 “one-hot 向量”(比如样本属于第 3 类,真实标签向量就是 [0, 0, 1, 0, ..., 0]),这是一个 “真实的概率分布”(只有正确类别概率为 1,其他为 0);
- 模型的输出是 Softmax 运算后的概率分布
y = [y₁, y₂, ..., y_K]
,这是 “预测的概率分布”; - 交叉熵损失就是 “这两个概率分布的差距”,公式为:
L = -∑(y_true_i · log(y_pred_i))
Softmax 回归是线性回归在多分类任务上的扩展,它的核心是 “把线性输出转换成概率分布,用交叉熵损失衡量误差”。记住这几点:
- Softmax 回归用于多分类任务,输出层神经元数量等于类别数;
- Softmax 运算将原始输出(logits)转换成非负、和为 1 的概率分布;
- 用交叉熵损失衡量预测概率分布和真实标签分布的差距;
- 优化算法依然是小批量随机梯度下降,学习率和批量大小同样是关键超参数。
三、线性回归与 Softmax 回归的对比:一张表理清核心差异
对比维度 | 线性回归 | Softmax 回归 |
---|---|---|
任务类型 | 连续值预测(回归任务) | 多分类任务 |
输出层神经元数量 | 1 个(单个连续值) | K 个(K 为类别数,输出概率分布) |
输出处理 | 直接输出连续值 | Softmax 运算转换为概率分布 |
损失函数 | 平方损失(L2 损失) | 交叉熵损失 |
核心目标 | 预测值接近真实值 | 正确类别预测概率最大化 |
典型应用场景 | 房价预测、气温预测、销量预测 | 图像分类、手写数字识别、文本分类 |
最后
线性回归和 Softmax 回归虽然简单,但它们是深度学习的 “敲门砖”。掌握这两个模型,不仅能解决很多基础的回归和分类问题,更重要的是能理解 “建模→损失→优化” 的核心逻辑 —— 这个逻辑在后续的神经网络、CNN、Transformer 等复杂模型中完全通用。