深度学习基础:从线性回归到 Softmax 回归的完整梳理
在深度学习的知识体系中,线性回归和Softmax 回归是两大基石模型 —— 前者是解决 “连续值预测” 的入门工具(如房价估计),后者则是实现 “多类别分类” 的核心方法(如手写数字识别)。无论是复杂的神经网络,还是前沿的深度学习应用,都离不开这两个模型的思想内核。今天,我们就从实际问题出发,一步步拆解线性回归的原理、模型优化的关键算法,再过渡到 Softmax 回归如何解决分类问题,带大家夯实深度学习的基础。
一、线性回归:用 “线性关系” 预测连续值
提到线性回归,最经典的场景莫过于房价预测—— 当你看中一套房子时,如何根据它的户型(如 7 卧室)、配套(如 2 个车库)、学区(如帕洛阿尔托学区)等特征,结合往年同类房屋的成交价,估算出一个合理的出价?这正是线性回归要解决的问题。
1.1 线性回归的核心思想:拟合 “特征与结果” 的线性关系
线性回归的本质,是假设 “输入特征” 与 “输出结果” 之间存在线性关联。我们用一组 “特征变量”(如房屋的卧室数、车库数、学区等级等)作为输入,通过一个线性公式,计算出 “预测结果”(如房价)。
(1)模型公式
假设我们有 d 个输入特征 x1,x2,...,xd,线性回归的模型可以表示为:
单个样本的预测:y=w1x1+w2x2+...+wdxd+b
用向量形式简化(更简洁):y=wTx+b
其中,w(权重)表示每个特征对结果的 “影响程度”(如卧室数的权重高,说明卧室数对房价影响大),b(偏置)是模型的 “基础偏移”。多个样本的批量预测:当有 n 个样本时,用矩阵表示更高效:Y=Xw+b
其中,X 是 n×d 的特征矩阵(每行一个样本,每列一个特征),Y 是 n×1 的预测结果向量。
(2)房价预测的实例映射
以 PPT 中的房价问题为例:
- 输入特征 x:卧室数(7)、车库数(2)、学区等级(帕洛阿尔托学区)、房屋层数(2 层)等;
- 模型参数 w 和 b:通过 “往年房价数据”(如 A 房子成交价、B 房子成交价)学习得到;
- 预测输出 y:这套房子的估算价格。
线性回归的核心目标,就是找到一组最优的 w 和 b,让模型的预测值与真实值(如往年实际成交价)的 “差距” 最小。
二、模型优化的核心:如何找到 “最优参数”?
线性回归定义了 “预测公式”,但如何找到最优的 w 和 b?这就需要优化算法—— 通过最小化 “损失函数”(衡量预测值与真实值的差距),逐步调整参数,直到模型性能最优。
2.1 梯度法:跟着 “梯度” 找最小值
在优化问题中,我们把 “损失函数” 看作一个 “地形”,而参数 w 和 b 是地形上的 “位置”。我们的目标是找到地形的 “最低处”(损失函数最小的位置),而梯度就是指引我们走向最低处的 “指南针”。
(1)什么是梯度?
梯度(Gradient) 是由损失函数对所有参数的 “偏导数” 汇总而成的向量。例如,若损失函数 f(x0,x1)=x02+x12(类似 “碗型” 函数),其梯度为:
∇f=(∂x0∂f,∂x1∂f)=(2x0,2x1)
梯度有两个关键特性:
- 方向指示:梯度的反方向是 “函数值减小最快的方向”(即走向最低处的最优路径);
- 大小含义:离 “最低处” 越远,梯度的绝对值越大(说明此时步长可以稍大,快速靠近最低点)。
(2)梯度法的优化流程
梯度法的核心是 “迭代更新”,步骤如下:
- 初始化参数 w 和 b(如随机赋值);
- 计算当前参数下的损失函数梯度 ∇L(w,b);
- 沿梯度反方向更新参数:w←w−η⋅∇L(w),b←b−η⋅∇L(b)(其中 η 是 “学习率”,控制每一步的 “步长”);
- 重复步骤 2-3,直到损失函数不再明显下降(收敛)。
⚠️ 注意:梯度法不能保证找到 “全局最小值”,可能陷入 “局部最小值”,但在线性回归等凸函数问题中,局部最小值就是全局最小值,无需担心。
2.2 梯度下降的变体:从 “全量” 到 “批量”
在实际数据中,样本量往往很大(如 10 万条房价数据),如果每次都用 “全部样本” 计算梯度(称为 “批量梯度下降”),计算量会非常大。因此,有两种更实用的变体:
(1)随机梯度下降(SGD)
- 核心思想:每次只随机选1 个样本计算梯度,更新参数;
- 优点:计算速度快,能快速迭代;
- 缺点:梯度波动大(单个样本的梯度可能偏离整体趋势),收敛路径 “震荡”。
(2)小批量随机梯度下降(Mini-batch SGD)
- 核心思想:每次选一小批样本(如 32、64、128 个)计算梯度,更新参数;
- 优点:平衡了 “计算效率” 和 “梯度稳定性”—— 既避免了全量计算的耗时,又减少了 SGD 的震荡;
- 地位:深度学习的默认优化算法,几乎所有框架(如 PyTorch、TensorFlow)都内置了该算法。
2.3 关键超参数:学习率与批量大小的选择
超参数是 “需要人工设定” 的参数(区别于模型自动学习的 w 和 b),其中学习率和批量大小直接影响模型的收敛效果。
(1)学习率(η):控制 “步长” 的关键
学习率的选择是 “Goldilocks 问题”—— 不能太大,也不能太小:
- ❌ 学习率太大:步长过大,会跳过最低点,导致损失函数 “震荡不收敛”(比如从 “碗的一侧” 直接跳到另一侧);
- ❌ 学习率太小:步长过小,收敛速度极慢(可能训练 1000 轮还没靠近最低点);
- ✅ 合适的学习率:损失函数稳步下降,且能在合理轮次内收敛(通常通过 “学习率调度” 动态调整,如前期大、后期小)。
(2)批量大小:平衡 “效率” 与 “性能”
批量大小的选择同样需要权衡:
- ❌ 批量太小(如 1):梯度不稳定,训练震荡,且无法利用 GPU 的 “并行计算” 优势(浪费计算资源);
- ❌ 批量太大(如全量样本):梯度稳定但计算耗时,且可能陷入 “局部最优”(批量越大,模型越难跳出局部最小值);
- ✅ 常用批量大小:32、64、128(需根据 GPU 显存调整,显存大可以选更大的批量)。
三、从回归到分类:Softmax 回归的诞生
线性回归解决了 “连续值预测”(如房价、温度),但现实中更多问题是 “分类任务”—— 比如 “这张图片是猫还是狗”“这条评论是正面还是负面”“手写数字是 0 还是 9”。此时,线性回归不再适用,而Softmax 回归应运而生。
3.1 回归 VS 分类:核心区别是什么?
要理解 Softmax 回归,首先要明确 “回归任务” 和 “分类任务” 的本质差异:
维度 | 回归任务(如房价预测) | 分类任务(如手写数字识别) |
---|---|---|
任务目标 | 预测 “连续值”(如 150 万元) | 预测 “离散类别”(如数字 “5”) |
输出类型 | 单个连续输出(如房价) | 多个输出(对应每个类的置信度) |
损失计算 | 预测值与真实值的 “绝对 / 平方差” | 预测类别与真实类别的 “匹配度” |
典型案例 | 房价、股票价格、温度预测 | MNIST 手写数字、ImageNet 图像分类 |
3.2 分类任务的典型场景
分类任务在深度学习中无处不在:
- MNIST 手写数字分类:输入 28×28 的手写数字图片,输出 “0-9” 中的 1 个类别(10 分类);
- ImageNet 图像分类:输入自然场景图片,输出 “猫、狗、汽车” 等 1000 个类别(1000 分类);
- Kaggle 蛋白质图像分类:将人类蛋白质显微镜图像分为 28 类(生物医学场景);
- Kaggle 恶语评论分类:将维基百科评论分为 “有毒、威胁、侮辱” 等 7 类(NLP 场景)。
3.3 从 “回归输出” 到 “分类输出”:多输出设计
线性回归是 “单输出”(如 1 个房价),而分类任务需要 “多输出”—— 每个输出对应一个类别的 “置信度”(即模型认为样本属于该类的概率)。
例如,MNIST 任务中,模型输出 10 个值 o0,o1,...,o9,其中 o5 表示 “样本是数字 5” 的置信度。但此时的输出 oi 没有 “概率含义”(可能为负数,且总和不为 1),无法直接解释为概率 —— 这就需要Softmax 运算来解决。
四、Softmax 回归:多分类的核心工具
Softmax 回归的本质,是在 “线性回归” 的基础上,增加了Softmax 运算,将模型输出转化为 “概率分布”,从而适配多分类任务。
4.1 Softmax 运算:把 “置信度” 变成 “概率”
Softmax 运算的核心作用,是将模型的 “原始输出”(如 o1,o2,o3)转化为满足两个条件的概率分布:
- 每个输出值非负(概率不能为负);
- 所有输出值的总和为 1(所有类的概率之和为 1)。
(1)Softmax 公式
对于模型的 K 个原始输出 o1,o2,...,oK(对应 K 个类别),Softmax 运算后的概率 yi 为:
yi=softmax(oi)=∑k=1Keokeoi
其中,eoi(指数函数)确保输出非负,分母的 “总和” 确保所有概率之和为 1。
(2)实例计算
以 PPT 中的例子为例:若模型原始输出为 [1,−1,2](3 个类别),计算 Softmax 概率:
- 第一步:计算每个输出的指数 e1≈2.718,e−1≈0.368,e2≈7.389;
- 第二步:计算指数总和 2.718+0.368+7.389≈10.475;
- 第三步:每个指数除以总和,得到概率:
- y1=2.718/10.475≈0.26(26% 概率);
- y2=0.368/10.475≈0.04(4% 概率);
- y3=7.389/10.475≈0.7(70% 概率)。
最终,模型会预测样本属于 “概率最大的类别”(此处为第 3 类)。
4.2 Softmax 回归的网络结构:全连接层
Softmax 回归可以看作一个单层神经网络,其结构特点是 “全连接”—— 输入层的每个特征,都会连接到输出层的每个神经元(类别)。
以 “4 个输入特征、3 个类别” 为例:
- 输入层:x1,x2,x3,x4(如手写数字图片的 4 个像素特征);
- 权重矩阵:W(4×3 矩阵,每个输入到每个输出的权重);
- 偏置向量:b(3 个值,每个输出的偏置);
- 原始输出:o=WTx+b(3 个值);
- 最终输出:y=softmax(o)(3 个概率值)。
这种 “全连接” 的设计,确保了每个类别都能 “综合所有特征” 进行判断,是分类模型的基础结构。
4.3 分类任务的损失函数:为什么交叉熵更合适?
损失函数的作用是 “衡量模型预测的错误程度”,不同任务需要选择不同的损失函数。对于分类任务,交叉熵损失远比线性回归的 “平方损失” 更适用。
(1)常见损失函数对比
损失函数 | 公式(简化版) | 适用场景 | 缺点 | ||
---|---|---|---|---|---|
平方损失(L2) | L=21(ypred−ytrue)2 | 回归任务 | 分类任务中对 “错误预测惩罚不足” | ||
L1 损失 | $L = | y_{\text{pred}} - y_{\text{true}} | $ | 回归任务(抗异常值) | 梯度不连续(在 0 点导数不存在) |
Huber 损失 | 结合 L1 和 L2(小误差用 L2,大误差用 L1) | 回归任务(平衡抗异常值与梯度) | 分类任务不适用 | ||
交叉熵损失 | L=−∑k=1Kytrue,klog(ypred,k) | 分类任务 | 对错误预测惩罚强,收敛快 |
(2)交叉熵损失的优势
交叉熵损失的核心思想是 “衡量两个概率分布的差距”——ytrue 是 “真实概率分布”(如样本是第 3 类,则 ytrue=[0,0,1]),ypred 是 “模型预测的概率分布”。
其优势在于:
- 对 “错误预测” 的惩罚更强烈:若模型将 “真实类别” 的概率预测为 0.1(本应是 1),则 log(0.1)≈−2.3,损失会很大;
- 梯度更大,收敛更快:相比平方损失,交叉熵损失的梯度更大,模型能更快调整参数到最优。
因此,Softmax 回归通常与交叉熵损失搭配使用,是多分类任务的 “黄金组合”。
五、总结:从基础到应用的核心逻辑
回顾本文的内容,我们可以梳理出一条清晰的 “深度学习基础逻辑链”:
- 问题驱动模型选择:连续值预测用 “线性回归”,多类别分类用 “Softmax 回归”;
- 优化算法是核心工具:通过 “梯度法”(尤其是小批量 SGD)找到最优参数,学习率和批量大小是关键超参数;
- 结构适配任务需求:回归用 “单输出”,分类用 “多输出 + Softmax 运算”,全连接层是基础结构;
- 损失函数匹配任务:回归用平方 / L1/Huber 损失,分类用交叉熵损失。
线性回归和 Softmax 回归看似简单,但它们的思想(线性拟合、概率转化、梯度优化)贯穿了深度学习的始终 —— 无论是 CNN(卷积神经网络)处理图像,还是 RNN(循环神经网络)处理文本,最终的输出层往往都是 Softmax 回归的变体,而优化过程也离不开梯度下降的核心逻辑。
夯实这两个基础模型,就等于掌握了深度学习的 “内功心法”。后续面对更复杂的模型时,你会发现:万变不离其宗。
希望本文能帮你理清线性回归与 Softmax 回归的脉络,如果你有任何疑问(如公式推导、代码实现),欢迎在评论区交流!