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)
问题定义: 给定输入
损失函数(MSE):
梯度:
更新规则(梯度下降):
逻辑回归(Logistic Regression)
问题定义: 给定输入
其中
损失函数(交叉熵):
梯度:
关键区别
| 方面 | 线性回归 | 逻辑回归 |
|---|---|---|
| 输出 | 连续值 | 概率(0-1) |
| 损失函数 | MSE | 交叉熵 |
| 激活函数 | 无 | Sigmoid |
| 应用 | 回归问题 | 分类问题 |
代码实验
完整的代码示例位于:code/ch02_optimization/linear_logistic_regression.py
运行方式:
python code/ch02_optimization/linear_logistic_regression.py代码包含:
- 线性回归的实现
- 逻辑回归的实现
- 拟合曲线和决策边界可视化
- 损失函数曲线
代码文件: code/ch02_optimization/linear_logistic_regression.py
运行方式: python code/ch02_optimization/linear_logistic_regression.py
图2.5:线性回归的拟合曲线、逻辑回归的决策边界以及损失下降过程。它把“回归 vs 分类”这两个最基础监督学习问题放在同一张图里,帮助读者把损失函数、模型输出和优化过程联系起来。
与深度学习的联系
- 线性回归 → 神经网络回归(添加隐层和非线性激活)
- 逻辑回归 → 神经网络分类(多层堆叠)
- Sigmoid激活 → 深度学习中的激活函数
在LLM中的应用
线性映射在LLM输出层中的应用
虽然LLM使用深度学习,但线性回归的思想仍然存在:
LLM的输出层是线性映射
- 隐层表示:
- 输出层:
- 其中
, 是词汇表大小 - 它更接近多分类的线性分类头,而不是线性回归
- 隐层表示:
为什么LLM的输出层是线性的?
- 隐层已经学到了复杂的特征表示
- 输出层只需要将这些特征映射到词汇表
- 线性变换足以完成这个任务
逻辑回归在LLM中的应用
逻辑回归的思想在LLM中也有应用:
Token预测的本质是分类
- 给定上文,预测下一个Token
- 这是一个多分类问题(词汇表大小通常为50K-100K)
- 使用交叉熵损失(来自逻辑回归)
Softmax函数的应用
逻辑回归:Sigmoid(z) = 1/(1+e^-z) [二分类] LLM:Softmax(z) = e^z / Σe^z [多分类]- Softmax是Sigmoid的多分类推广
- 将logits转换为概率分布
交叉熵损失在LLM中的应用
python# LLM训练的标准损失函数 loss = CrossEntropyLoss(logits, target_tokens)- 衡量预测分布与真实分布的差异
- 直接来自逻辑回归的交叉熵损失
特征工程思想在LLM中的应用
虽然LLM自动学习特征,但特征工程的思想仍然存在:
位置编码(Position Encoding)
- 传统ML中的特征工程:添加位置信息
- LLM中的位置编码:Sinusoidal或Learnable
- 都是为了提供额外的信息
Token嵌入(Token Embedding)
- 传统ML中的特征表示:One-hot编码
- LLM中的Token嵌入:学习的密集向量
- 都是将离散的Token转换为连续的表示
LLM训练中的优化问题
LLM的训练本质上仍然是一个优化问题:
目标函数
最小化:L = -Σ log P(y_i | x_1, ..., x_{i-1})- 这是逻辑回归交叉熵损失的推广
- 最大化正确Token的概率
参数优化
- 使用梯度下降(通过反向传播)
- 使用自适应优化器(Adam、AdamW)
- 使用学习率调度
规模化
- 从逻辑回归的几个参数
- 到LLM的数十亿参数
- 优化的本质不变,只是规模不同
常见问题
Q: 为什么逻辑回归用交叉熵而不是MSE? A: 交叉熵对概率的惩罚更合理。当预测概率远离真实标签时,交叉熵的梯度更大,收敛更快。
Q: 线性回归能处理非线性问题吗? A: 不能。但可以通过特征工程(如多项式特征)或使用非线性模型(如SVM、神经网络)来处理。
下一步: 阅读 2.6 支持向量机与核方法
