当前位置: 首页 > news >正文

深度学习基础:从线性回归到 Softmax 回归的完整梳理

在深度学习的知识体系中,线性回归Softmax 回归是两大基石模型 —— 前者是解决 “连续值预测” 的入门工具(如房价估计),后者则是实现 “多类别分类” 的核心方法(如手写数字识别)。无论是复杂的神经网络,还是前沿的深度学习应用,都离不开这两个模型的思想内核。今天,我们就从实际问题出发,一步步拆解线性回归的原理、模型优化的关键算法,再过渡到 Softmax 回归如何解决分类问题,带大家夯实深度学习的基础。

一、线性回归:用 “线性关系” 预测连续值

提到线性回归,最经典的场景莫过于房价预测—— 当你看中一套房子时,如何根据它的户型(如 7 卧室)、配套(如 2 个车库)、学区(如帕洛阿尔托学区)等特征,结合往年同类房屋的成交价,估算出一个合理的出价?这正是线性回归要解决的问题。

1.1 线性回归的核心思想:拟合 “特征与结果” 的线性关系

线性回归的本质,是假设 “输入特征” 与 “输出结果” 之间存在线性关联。我们用一组 “特征变量”(如房屋的卧室数、车库数、学区等级等)作为输入,通过一个线性公式,计算出 “预测结果”(如房价)。

(1)模型公式

假设我们有 d 个输入特征 x1​,x2​,...,xd​,线性回归的模型可以表示为:

  • 单个样本的预测:y=w1​x1​+w2​x2​+...+wd​xd​+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​)

梯度有两个关键特性:

  1. 方向指示:梯度的反方向是 “函数值减小最快的方向”(即走向最低处的最优路径);
  2. 大小含义:离 “最低处” 越远,梯度的绝对值越大(说明此时步长可以稍大,快速靠近最低点)。
(2)梯度法的优化流程

梯度法的核心是 “迭代更新”,步骤如下:

  1. 初始化参数 w 和 b(如随机赋值);
  2. 计算当前参数下的损失函数梯度 ∇L(w,b);
  3. 沿梯度反方向更新参数:w←w−η⋅∇L(w),b←b−η⋅∇L(b)(其中 η 是 “学习率”,控制每一步的 “步长”);
  4. 重复步骤 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. 每个输出值非负(概率不能为负);
  2. 所有输出值的总和为 1(所有类的概率之和为 1)。
(1)Softmax 公式

对于模型的 K 个原始输出 o1​,o2​,...,oK​(对应 K 个类别),Softmax 运算后的概率 yi​ 为:
yi​=softmax(oi​)=∑k=1K​eok​eoi​​

其中,eoi​(指数函数)确保输出非负,分母的 “总和” 确保所有概率之和为 1。

(2)实例计算

以 PPT 中的例子为例:若模型原始输出为 [1,−1,2](3 个类别),计算 Softmax 概率:

  1. 第一步:计算每个输出的指数 e1≈2.718,e−1≈0.368,e2≈7.389;
  2. 第二步:计算指数总和 2.718+0.368+7.389≈10.475;
  3. 第三步:每个指数除以总和,得到概率:
    • 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=1K​ytrue,k​log(ypred,k​)分类任务对错误预测惩罚强,收敛快
(2)交叉熵损失的优势

交叉熵损失的核心思想是 “衡量两个概率分布的差距”——ytrue​ 是 “真实概率分布”(如样本是第 3 类,则 ytrue​=[0,0,1]),ypred​ 是 “模型预测的概率分布”。

其优势在于:

  • 对 “错误预测” 的惩罚更强烈:若模型将 “真实类别” 的概率预测为 0.1(本应是 1),则 log(0.1)≈−2.3,损失会很大;
  • 梯度更大,收敛更快:相比平方损失,交叉熵损失的梯度更大,模型能更快调整参数到最优。

因此,Softmax 回归通常与交叉熵损失搭配使用,是多分类任务的 “黄金组合”。

五、总结:从基础到应用的核心逻辑

回顾本文的内容,我们可以梳理出一条清晰的 “深度学习基础逻辑链”:

  1. 问题驱动模型选择:连续值预测用 “线性回归”,多类别分类用 “Softmax 回归”;
  2. 优化算法是核心工具:通过 “梯度法”(尤其是小批量 SGD)找到最优参数,学习率和批量大小是关键超参数;
  3. 结构适配任务需求:回归用 “单输出”,分类用 “多输出 + Softmax 运算”,全连接层是基础结构;
  4. 损失函数匹配任务:回归用平方 / L1/Huber 损失,分类用交叉熵损失。

线性回归和 Softmax 回归看似简单,但它们的思想(线性拟合、概率转化、梯度优化)贯穿了深度学习的始终 —— 无论是 CNN(卷积神经网络)处理图像,还是 RNN(循环神经网络)处理文本,最终的输出层往往都是 Softmax 回归的变体,而优化过程也离不开梯度下降的核心逻辑。

夯实这两个基础模型,就等于掌握了深度学习的 “内功心法”。后续面对更复杂的模型时,你会发现:万变不离其宗。

希望本文能帮你理清线性回归与 Softmax 回归的脉络,如果你有任何疑问(如公式推导、代码实现),欢迎在评论区交流!


文章转载自:

http://l1e1JcmR.qhrsy.cn
http://OtyfL6lO.qhrsy.cn
http://emhXukQG.qhrsy.cn
http://03XghJQo.qhrsy.cn
http://v0oGf4lg.qhrsy.cn
http://EpANcI0z.qhrsy.cn
http://JZ8piXq2.qhrsy.cn
http://mTPxCrL5.qhrsy.cn
http://R96cIAxj.qhrsy.cn
http://nyTwkQiz.qhrsy.cn
http://rSC4Occe.qhrsy.cn
http://CrgaKgcS.qhrsy.cn
http://wBXV78EG.qhrsy.cn
http://jd7hN40Z.qhrsy.cn
http://jsAMSwqJ.qhrsy.cn
http://DtBfqBpx.qhrsy.cn
http://dBJiuLcq.qhrsy.cn
http://VcC1ehMa.qhrsy.cn
http://0zlnbCrV.qhrsy.cn
http://zCcyhdBu.qhrsy.cn
http://5jkyRe9P.qhrsy.cn
http://TPt4F58X.qhrsy.cn
http://0ats0umu.qhrsy.cn
http://2MRoqDQ2.qhrsy.cn
http://BaNEnYXw.qhrsy.cn
http://TYXzpD0f.qhrsy.cn
http://h0bKzpG2.qhrsy.cn
http://p3uA8S4a.qhrsy.cn
http://5t9MFanc.qhrsy.cn
http://NhNHN4WE.qhrsy.cn
http://www.dtcms.com/a/387820.html

相关文章:

  • 深度学习之线性回归与 Softmax 回归
  • 线性回归与 Softmax 回归
  • 源雀 Scrm开源:企微防截屏
  • [APItest-Karate] HttpRequestBuilder | HttpClient发送请求
  • 线性回归与 Softmax 回归:从基础模型到深度学习入门
  • 【Leetcode hot 100】105.从前序与中序遍历序列构造二叉树
  • 机器视觉在PCB制造中的检测应用
  • 服务器ssh端口放开,仍然无法登录
  • 【0基础3ds Max】命令面板详解
  • LeetCode 381 - O(1) 时间插入、删除和获取随机元素(允许重复)
  • [新启航]深孔加工尺寸精度检测方法 - 激光频率梳 3D 轮廓测量
  • MySQL 进阶:多表联合查询与数据备份恢复
  • 【LeetCode每日一题】:移除链表元素
  • 工业大数据时代时序数据库选型指南:为何Apache IoTDB成为首选?
  • Java 中 ArrayList 与 LinkedList 的深度对比:从原理到实战选择
  • 向量检索服务 DashVector产品功能
  • Spring-Cloud-Alibaba:2023.0.1.X引起的dashscope-sdk-java依赖冲突问题
  • vue 知识点
  • 深入理解 Linux 进程调度:从策略到实现的全方位解析
  • 【技术架构】从单机到微服务:Java 后端架构演进与技术选型核心方案
  • Java异常报错: java.io.IOException: Broken pipe
  • [Linux]学习笔记系列 -- lib/kobject.c 内核对象(Kernel Object) 设备模型的核心基石
  • 专题:Python实现贝叶斯线性回归与MCMC采样数据可视化分析2实例|附代码数据
  • IEEE 802.1X和**IEEE 802.11之间的关联和作用
  • 【Linux】【底层解析向】Linux Shell 核心功能拆解:环境变量不生效原因 + $?/echo/alias 底层逻辑
  • UV紫外卤素灯太阳光模拟器的原理
  • RAG简单构建(ollama+uv+deepseek)
  • 告别冰冷AI音!B站开源IndexTTS2模型,零样本克隆+情感解耦,玩法超多!
  • pytorch中.pt和.pth文件区别
  • 目标计数(3)Object Counting: You Only Need to Look at One