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

在深度学习的世界里,不管多么庞大的巨兽(比如千亿参数的大模型),如果你把它拆解到最微小的细胞,你会发现它流淌的依然是逻辑回归(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)时会失效,深度学习又是通过引入什么机制来打破这个魔咒的?

相关推荐
cyyt1 小时前
深度学习周报(6.8~6.14)
人工智能·深度学习
Master_oid2 小时前
机器学习46:逻辑回归--基础篇
人工智能·机器学习·逻辑回归
chen_zn952 小时前
OpenPi、GR00T的视觉语言模型与动作模型连接方式差异分析总结
人工智能·深度学习·具身智能·vla
云和数据.ChenGuang2 小时前
大模型厂商常用的数据库有哪些?
数据库·人工智能·pytorch·深度学习·numpy
旅僧2 小时前
Bert理论讲解
人工智能·深度学习·bert
FL16238631292 小时前
基于CNN深度学习算实现手写字母识别系统python源码+训练好的模型+说明文档
python·深度学习·cnn
老饼讲解-BP神经网络2 小时前
BP神经网络用什么训练算法(traingd、traingdm、trainlm)
人工智能·神经网络·算法
DreamLife☼11 小时前
OpenBCI-脑机接口在康复医疗中的应用
深度学习·cnn·脑电·康复·fes·openbci·外骨骼
硅谷秋水12 小时前
面向长上下文自动驾驶的规划对齐Token压缩
人工智能·深度学习·机器学习·计算机视觉·自动驾驶