吴恩达《深度学习》之看懂神经网络的“底层细胞”:逻辑回归

在深度学习的世界里,不管多么庞大的巨兽(比如千亿参数的大模型),如果你把它拆解到最微小的细胞,你会发现它流淌的依然是逻辑回归(Logistic Regression)的血液。

在面试和技术交流中,关于逻辑回归的考察往往十分基础,却最能看出一个人的底层功底:

核心知识点:

  • 直觉解释: 通过一个 S 型激活函数将线性预测值映射到 0 到 1 之间,将其解释为某事件发生的概率(如"图片中是猫的概率")。
  • 数学核心: 预测值 a=σ(wTx+b)a = \sigma(w^Tx + b)a=σ(wTx+b),其中激活函数 σ(z)=11+e−z\sigma(z) = \frac{1}{1 + e^{-z}}σ(z)=1+e−z1。
  • 常见变体及适用场景: Softmax 回归(逻辑回归的多分类推广);适用于二分类任务,如简单的猫图识别。

如果你面对这几行公式和术语有些模糊,那我们就一层层把这个最底层的"细胞"彻底看透。

第一步:打破"回归"的字面陷阱

很多同学第一眼看到 Logistic Regression(回归),就会陷入痛苦:"回归不是用来预测连续数字的吗?(比如预测明天的气温是 18°C 还是 25°C)。为什么这里却说它适用于'二分类任务'(比如判断一张图是不是猫)?"

提问: 假设我们现在要玩一个简单的游戏。我给你一个包含 100 种特征的向量 xxx(比如图片的像素、猫耳朵的尖锐度、胡须的数量),让你通过最简单的线性组合算出一个总分:

z=wTx+bz = w^Tx + bz=wTx+b

如果这只动物越像猫,算出来的总分 zzz 就越高(比如 z=10000z = 10000z=10000);如果越像狗,总分就越低(比如 z=−5000z = -5000z=−5000)。

现在,我要求你把这个从负无穷到正无穷的粗暴总分 zzz,立刻转换成一个全人类都能看懂的、介于 0% 到 100% 之间的"概率"。你打算怎么切这一刀?直接用一刀切的硬阈值(大于 0 就是猫,小于 0 就是狗)会有什么问题?

解析: 你的大脑一定会给出直觉:一刀切太粗暴了 。如果一个样本算出来的 zzz 是 0.01,另一个是 10000,它们都大于 0,但我们对它们的"信心"显然是不一样的。我们希望这个分数的增加,能够平滑地映射成概率的上升。

第二步:数学核心------那条拯救直觉的"S型曲线"

为了实现这种"把任意实数平滑缩放到 0 和 1 之间"的魔法,数学家祭出了 Sigmoid 激活函数:

σ(z)=11+e−z\sigma(z) = \frac{1}{1 + e^{-z}}σ(z)=1+e−z1

我们不需要去死记硬背这个公式,让我们来做三道极其简单的算术题,看看它的身体里流淌着怎样的逻辑:

提问:

  1. 场景一: 如果一只动物长得实在太像猫了,网络算出来的总分 zzz 趋近于正无穷大(z→+∞z \to +\inftyz→+∞)。此时,公式分母里的 e−ze^{-z}e−z 会变成多少?整个 σ(z)\sigma(z)σ(z) 会变成多少?
  2. 场景二: 如果这只动物完全是条狗,总分 zzz 趋近于负无穷大(z→−∞z \to -\inftyz→−∞)。此时,e−ze^{-z}e−z 会爆炸式增长,整个 σ(z)\sigma(z)σ(z) 又会趋近于多少?
  3. 场景三: 如果网络彻底迷茫了,觉得一半像猫一半像狗,算出来的总分 z=0z = 0z=0。此时,σ(0)\sigma(0)σ(0) 算出来是多少?

推演闭环:

  • 当 z→+∞z \to +\inftyz→+∞ 时: e−∞=0e^{-\infty} = 0e−∞=0,所以 σ(z)=11+0=1\sigma(z) = \frac{1}{1+0} = 1σ(z)=1+01=1(100% 绝对是猫)。
  • 当 z→−∞z \to -\inftyz→−∞ 时: e−(−∞)=e+∞=∞e^{-(-\infty)} = e^{+\infty} = \inftye−(−∞)=e+∞=∞,分母无穷大,所以 σ(z)=0\sigma(z) = 0σ(z)=0(0% 绝对不是猫)。
  • 当 z=0z = 0z=0 时: e0=1e^{0} = 1e0=1,所以 σ(0)=11+1=0.5\sigma(0) = \frac{1}{1+1} = 0.5σ(0)=1+11=0.5(50% 抛硬币概率)。

这就是那个 S 型激活函数(Sigmoid)的本质:它像一个极其温柔的转化器,把网络算出来的粗暴得分,整整齐齐地驯化成了人类世界通用的 "概率 aaa"。

第三步:PyTorch 代码落地与多分类演进

在真实的 PyTorch 代码里,这个细胞的生命周期是这样被定义的:

python 复制代码
import torch
import torch.nn as nn

class LogisticRegressionModel(nn.Module):
    def __init__(self, input_dim):
        super(LogisticRegressionModel, self).__init__()
        # w^T * x + b 的线性映射
        self.linear = nn.Linear(input_dim, 1) 
        # S型激活函数
        self.sigmoid = nn.Sigmoid()           

    def forward(self, x):
        z = self.linear(x)
        a = self.sigmoid(z) # 吐出 0 到 1 之间的概率
        return a

终极追问: 如果现在我们的任务升级了。我们不想只认猫了,我们想同时在一张图里识别出"猫、狗、猪、鸟"这 4 种动物。

原本的逻辑回归只能回答"是/否"(0 或 1),面对这 4 个并排的互斥选项,我们该怎么升级这个函数,让它吐出的 4 个概率加起来刚好等于 100%?

答案: 这就是变体------Softmax 回归(Softmax Regression)。

逻辑回归是 Softmax 在只有两个类别(二分类)时的特例。当面对多分类时,Softmax 会把多个类别的得分同时指数化并进行归一化,确保所有类别的概率和为 1。

总结报告

我们再次用最清晰的逻辑线条,把逻辑回归的本质串联起来:

特征输入 X  ⟹  线性加权得分 z=wTx+b  ⟹  通过 Sigmoid 压缩 a=11+e−z  ⟹  输出 0 1 之间的事件概率\text{特征输入 } X \implies \text{线性加权得分 } z = w^Tx+b \implies \text{通过 Sigmoid 压缩 } a = \frac{1}{1+e^{-z}} \implies \text{输出 0~1 之间的事件概率}特征输入 X⟹线性加权得分 z=wTx+b⟹通过 Sigmoid 压缩 a=1+e−z1⟹输出 0 1 之间的事件概率

不要觉得它简单。深度学习的本质,就是无数个逻辑回归的叠加。 当你把几百万个这样的逻辑回归细胞并排堆叠(增加宽度)、前后串联(增加深度)、加上跳跃连接(ResNet)时,它就会化身为吞噬一切数据的超级人工智能。


欢迎在评论区留下你的思考: 逻辑回归在面对线性不可分的数据(比如著名的异或问题 XOR)时会失效,深度学习又是通过引入什么机制来打破这个魔咒的?

相关推荐
吴佳浩 Alben1 小时前
一文看懂大模型推理为什么需要多卡:从 TP、DP 到 Runtime 的完整演进
运维·服务器·人工智能·深度学习·语言模型·vllm·sglang
用户0807759078513 小时前
昇腾 NPU 从零部署推理模型 · 完整决策与操作指南
深度学习
AliCloudROS14 小时前
5~7 分钟跑通第一个 Agentic RL 训练:我们把 verl 全链路做成了计算巢一键服务
深度学习·强化学习
小蒋观天下15 小时前
厂区人员徘徊游荡判别——基于时序轨迹速度的逗留行为分级算法落地
大数据·人工智能·深度学习·算法·机器学习·ai大模型
Rocky Ding*15 小时前
DeepSeek-Bot技术拆解:持久化Agent团队如何管理记忆、上下文与协作成本
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·智能体
在所不辞兄15 小时前
为什么物理嵌入神经网络要把物理方程残差加入损失函数,而不是直接作为网络结构的硬约束?
人工智能·深度学习·神经网络·机器学习·有限元
明志数科17 小时前
机器人训练数据获取困境:互联网数据为何无法直接复用
人工智能·深度学习·microsoft·机器学习·机器人
FL162386312917 小时前
塔吊下方站人检测数据集VOC+YOLO格式1049张1类别
人工智能·深度学习·yolo
loulanyue_17 小时前
我们正从规模化时代迈向研究时代:破除预训练幻象与通用泛化困境——读Ilya Sutskever重磅专访全景解析
人工智能·深度学习·机器学习·大模型·通用人工智能