⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。
Skip to content

2.5 线性回归与逻辑回归 ​

版本: v2.0 最后更新: 2026-05-27

在线 Notebook

对应的交互式版本可在 Google Colab 打开,统一使用方式见 第0章说明。

传统机器学习导论 ​

为什么要学传统机器学习? ​

先看传统 ML,不是为了补历史背景,而是为了把后面的模型放回同一条主线:它们本质上都在做参数估计和目标函数最小化。

传统ML与深度学习的关系 ​

传统 ML 不是和深度学习割裂的两套东西,它们之间有很直接的演化关系:

线性回归(2.5)
    ↓ (添加隐层和非线性激活)
神经网络回归

逻辑回归(2.5)
    ↓ (多层堆叠)
神经网络分类

SVM核方法(2.6)
    ↓ (自动学习特征)
深度学习特征学习

集成学习(2.7)
    ↓ (多个"专家"的融合)
多头机制的启发式类比

传统ML的三个层次 ​

第一层:线性模型(2.5)

  • 线性回归:连续值预测
  • 逻辑回归:二分类
  • 重点:用最小化损失来学习参数

第二层:非线性模型(2.6)

  • SVM:最大间隔分类
  • 核方法:处理非线性问题
  • 重点:用边界和核函数处理非线性

第三层:集成模型(2.7)

  • 决策树:树模型
  • 随机森林:多个树的融合
  • 重点:用多个弱模型降低方差

本章学习路径 ​

优化算法基础(2.1-2.3)
    ↓ (理解优化的本质)
传统机器学习(2.5-2.7)
    ├─ 线性模型(2.5)— 基础
    ├─ 非线性模型(2.6)— 进阶
    └─ 集成模型(2.7)— 高级
    ↓ (理解ML本质是优化问题)
深度学习(第3章)
    ↓ (自动特征学习)
LLM(第5-8章)

核心概念 ​

机器学习的本质就是优化问题。线性回归和逻辑回归是最基础的两个监督学习算法,它们都通过最小化损失函数来学习参数。

线性回归(Linear Regression) ​

问题定义: 给定输入 X 和输出 y,学习参数 w 和 b,使得 y^=Xw+b 尽可能接近 y。

损失函数(MSE):

L(w,b)=1n∑i=1n(yi−y^i)2

梯度:

∂L∂w=2nXT(Xw+b−y)∂L∂b=2n∑i=1n(Xw+b−y)i

更新规则(梯度下降):

w←w−α∂L∂wb←b−α∂L∂b

逻辑回归(Logistic Regression) ​

问题定义: 给定输入 X 和二分类标签 y∈{0,1},学习参数 w 和 b,使得 P(y=1|X)=σ(Xw+b)。

其中 σ(z)=11+e−z 是Sigmoid函数。

损失函数(交叉熵):

L(w,b)=−1n∑i=1n[yilog⁡(y^i)+(1−yi)log⁡(1−y^i)]

梯度:

∂L∂w=1nXT(y^−y)∂L∂b=1n∑i=1n(y^i−yi)

关键区别 ​

方面线性回归逻辑回归
输出连续值概率(0-1)
损失函数MSE交叉熵
激活函数无Sigmoid
应用回归问题分类问题

代码实验 ​

完整的代码示例位于:code/ch02_optimization/linear_logistic_regression.py

运行方式:

bash
python code/ch02_optimization/linear_logistic_regression.py

代码包含:

  • 线性回归的实现
  • 逻辑回归的实现
  • 拟合曲线和决策边界可视化
  • 损失函数曲线

Linear and Logistic Regression代码文件: code/ch02_optimization/linear_logistic_regression.py
运行方式: python code/ch02_optimization/linear_logistic_regression.py

图2.5:线性回归的拟合曲线、逻辑回归的决策边界以及损失下降过程。它把“回归 vs 分类”这两个最基础监督学习问题放在同一张图里,帮助读者把损失函数、模型输出和优化过程联系起来。

与深度学习的联系 ​

  • 线性回归 → 神经网络回归(添加隐层和非线性激活)
  • 逻辑回归 → 神经网络分类(多层堆叠)
  • Sigmoid激活 → 深度学习中的激活函数

在LLM中的应用 ​

线性映射在LLM输出层中的应用 ​

虽然LLM使用深度学习,但线性回归的思想仍然存在:

  1. LLM的输出层是线性映射

    • 隐层表示:h∈Rdmodel
    • 输出层:logits=Wh+b
    • 其中 W∈R|V|×dmodel,|V| 是词汇表大小
    • 它更接近多分类的线性分类头,而不是线性回归
  2. 为什么LLM的输出层是线性的?

    • 隐层已经学到了复杂的特征表示
    • 输出层只需要将这些特征映射到词汇表
    • 线性变换足以完成这个任务

逻辑回归在LLM中的应用 ​

逻辑回归的思想在LLM中也有应用:

  1. Token预测的本质是分类

    • 给定上文,预测下一个Token
    • 这是一个多分类问题(词汇表大小通常为50K-100K)
    • 使用交叉熵损失(来自逻辑回归)
  2. Softmax函数的应用

    逻辑回归:Sigmoid(z) = 1/(1+e^-z)  [二分类]
    LLM:Softmax(z) = e^z / Σe^z        [多分类]
    • Softmax是Sigmoid的多分类推广
    • 将logits转换为概率分布
  3. 交叉熵损失在LLM中的应用

    python
    # LLM训练的标准损失函数
    loss = CrossEntropyLoss(logits, target_tokens)
    • 衡量预测分布与真实分布的差异
    • 直接来自逻辑回归的交叉熵损失

特征工程思想在LLM中的应用 ​

虽然LLM自动学习特征,但特征工程的思想仍然存在:

  1. 位置编码(Position Encoding)

    • 传统ML中的特征工程:添加位置信息
    • LLM中的位置编码:Sinusoidal或Learnable
    • 都是为了提供额外的信息
  2. Token嵌入(Token Embedding)

    • 传统ML中的特征表示:One-hot编码
    • LLM中的Token嵌入:学习的密集向量
    • 都是将离散的Token转换为连续的表示

LLM训练中的优化问题 ​

LLM的训练本质上仍然是一个优化问题:

  1. 目标函数

    最小化:L = -Σ log P(y_i | x_1, ..., x_{i-1})
    • 这是逻辑回归交叉熵损失的推广
    • 最大化正确Token的概率
  2. 参数优化

    • 使用梯度下降(通过反向传播)
    • 使用自适应优化器(Adam、AdamW)
    • 使用学习率调度
  3. 规模化

    • 从逻辑回归的几个参数
    • 到LLM的数十亿参数
    • 优化的本质不变,只是规模不同

常见问题 ​

Q: 为什么逻辑回归用交叉熵而不是MSE? A: 交叉熵对概率的惩罚更合理。当预测概率远离真实标签时,交叉熵的梯度更大,收敛更快。

Q: 线性回归能处理非线性问题吗? A: 不能。但可以通过特征工程(如多项式特征)或使用非线性模型(如SVM、神经网络)来处理。


下一步: 阅读 2.6 支持向量机与核方法

本教程采用 CC BY-NC-SA 4.0 许可协议