目录

一、先搞定 “线性回归”:给机器一把 “估算连续值的尺子”

1. 核心逻辑:用 “线性公式” 搭模型

2. 怎么让模型 “算得准”?—— 损失函数 + 梯度下降

二、再学 “Softmax 回归”:让机器学会 “给事物分大类”

1. 先分清:回归和分类的本质区别

2. 核心操作:用 “Softmax 运算” 把输出变 “概率”

3. 损失函数换了:用 “交叉熵” 比 “平方损失” 更靠谱

4. 小细节:输出层神经元数量 = 类别数

三、写在最后:两个模型的 “适用场景” 要分清


从房价预测到数字识别:我搞懂了深度学习里的 “回归双兄弟”

      今天跟着老师学了深度学习里两个超基础又超实用的模型 —— 线性回归和 Softmax 回归。一开始听 “回归” 俩字还觉得有点抽象,直到老师结合生活例子拆解,才发现这俩模型其实就是帮机器 “做判断” 的两种核心方法:一个帮着估 “连续的数”,一个帮着分 “明确的类”。整理了我觉得最关键的知识点,用自己的话记下来,也给刚入门的小伙伴避避坑。

一、先搞定 “线性回归”:给机器一把 “估算连续值的尺子”

      老师开篇就抛了个超实在的问题:“看中一套房,怎么根据卧室数、车库大小估个合理价格?”—— 这正好是线性回归能干的事:处理 “预测连续值” 的问题,比如房价、气温、销售额这些能无限细分的数。

1. 核心逻辑:用 “线性公式” 搭模型

线性回归的核心其实就是一个我们中学学过的公式:y = Xw + b

  • y是我们要预测的结果(比如房价);
  • X是输入的 “特征”(比如卧室数、车库面积、距离市区的距离);
  • w是 “权重”(比如卧室数的权重高,说明卧室多对房价影响更大);
  • b是 “偏置”(可以理解成 “基础价格”,哪怕啥额外特征没有,房子也有个底价)。

老师还提了个很形象的点:把这个模型看成一个最简单的神经网络 —— 输入层是特征(比如卧室数、车库数),输出层是预测的房价,中间的 “连接” 就是权重w。原来神经网络的雏形这么简单!

2. 怎么让模型 “算得准”?—— 损失函数 + 梯度下降

模型刚搭好时,wb都是随机的,算出来的房价肯定不准。这时候就需要两个 “工具” 来调整参数:

(1)损失函数:给模型 “打分”

损失函数就是衡量 “预测值和真实值差多少” 的尺子。比如预测房价时,常用 “平方损失”—— 把每个样本的 “预测房价 - 真实房价” 平方后加起来,值越小说明模型越准。老师还提了 L1 损失、Huber 损失,但平方损失是线性回归里最常用的,好理解也好用。

(2)梯度下降:帮模型 “找到最优参数”

知道了 “差多少”,怎么调整wb让损失变小?这就靠梯度下降了。老师用 “下山” 打比方,一下就懂了:

  • 梯度就像 “指南针”,指的是 “损失函数减小最快的方向”(不是直接指最小值,但能让我们一步步靠近);
  • 我们从随机的wb(山顶)出发,沿着梯度方向走一小步(更新参数),再重新算梯度、再走,直到损失小到满意(走到山脚)。

但这里有两个超容易踩的坑,老师反复强调:

  • 学习率不能乱设:学习率是 “每步走多大”—— 太大了容易 “迈过山脚”(损失反而变大),太小了又 “挪得太慢”(训练半天没效果);
  • 批量大小要选对:后来老师还讲了 “小批量随机梯度下降”(比普通梯度下降快),批量就是 “每次用多少样本算梯度”—— 太小浪费计算资源(比如一次算 1 个样本,显卡没跑起来就结束了),太大又会重复计算(比如一次算 10000 个样本,其实很多样本信息是重复的)。

最后总结时老师说,现在深度学习里默认用的就是 “小批量随机梯度下降”,核心就是调对 “学习率” 和 “批量大小” 这两个超参数 —— 这俩调好了,模型训练效率能翻倍。

二、再学 “Softmax 回归”:让机器学会 “给事物分大类”

线性回归搞懂后,老师话锋一转:“如果不是估房价,而是判断一张图是猫还是狗,或者手写数字是 0 还是 9,线性回归就不够用了。”—— 这时候就得靠 Softmax 回归:处理 “预测离散类别” 的问题,比如图像分类、评论情感判断。

1. 先分清:回归和分类的本质区别

老师用两句话就讲清了:

  • 回归:输出是 “连续值”(比如房价可以是 123.5 万,也可以是 123.56 万);
  • 分类:输出是 “离散类别”(比如手写数字只能是 0-9 中的一个,评论只能是 “有毒” 或 “无毒”)。

比如 ImageNet 要分 1000 类自然物体,MNIST 要分 10 类手写数字,Kaggle 上还有把蛋白质图像分 28 类、恶语评论分 7 类的任务 —— 这些都得靠能 “分多类” 的 Softmax 回归。

2. 核心操作:用 “Softmax 运算” 把输出变 “概率”

Softmax 回归的输入其实也是线性的(和线性回归类似,有Xw + b),但多了关键一步:Softmax 运算
比如模型输出三个值[1, -1, 2](对应 “猫、狗、鸟” 三类),经过 Softmax 运算后会变成[0.26, 0.04, 0.7]—— 这三个数都在 0-1 之间,加起来是 1,正好像 “概率”:说明这张图有 26% 概率是猫,4% 是狗,70% 是鸟,我们直接选概率最大的 “鸟” 作为预测结果就行。

老师说,这步操作的关键是 “让输出符合概率的特性”:非负、和为 1,这样我们就能直观判断机器 “更相信” 样本属于哪一类。

3. 损失函数换了:用 “交叉熵” 比 “平方损失” 更靠谱

一开始我问老师:“能不能还用线性回归的平方损失?” 老师举了个反例:如果预测手写数字 “3”,正确类别对应的输出概率应该是 1,其他是 0。如果用平方损失,模型可能会把所有类的概率都往 “0.5” 靠(损失也小),但这样就没法明确分类了。

所以 Softmax 回归用的是 “交叉熵损失”—— 专门用来 “惩罚概率和真实标签差得远的情况”。比如正确类别概率是 1,模型预测成 0.1,交叉熵损失就会很大;如果预测成 0.9,损失就很小。这样模型会更 “坚定” 地把概率往正确类别上靠,分类更准。

4. 小细节:输出层神经元数量 = 类别数

老师还提了个超实用的小技巧:做分类任务时,Softmax 回归的输出层神经元数量,直接设成 “类别数” 就行。比如分 10 类手写数字,输出层就设 10 个神经元;分 7 类恶语评论,就设 7 个 —— 每个神经元对应一类的 “置信度”,再经过 Softmax 变成概率,逻辑超清晰。

三、写在最后:两个模型的 “适用场景” 要分清

今天学完最大的收获,就是搞懂了这两个 “回归” 的核心区别:

  • 遇到 “预测连续值”(房价、气温),先想线性回归,核心是调学习率和批量大小;
  • 遇到 “分明确类别”(图像分类、评论分类),就用 Softmax 回归,记得把输出层神经元设成类别数,用交叉熵损失。

接下来打算自己用 PyTorch 跑个小实验:先用线性回归估一下小区房价,再用 Softmax 回归识别 MNIST 的手写数字 —— 毕竟光懂理论不行,得动手练才记得牢。

如果和我一样刚入门,建议先从 “明确问题类型” 开始:先想清楚自己要解决的是 “估数” 还是 “分类”,再选对应的模型,这样学起来会少走很多弯路~

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐