CHAPTER 3
✓ 已完成
📈

线性模型

Linear Models

学习目标

🎯
  • 理解线性回归的数学原理和最小二乘法
  • 掌握梯度下降算法的工作机制和参数调优
  • 理解逻辑回归和Sigmoid函数在分类问题中的应用
  • 认识正则化(L1/L2)对模型复杂度的控制作用
  • 掌握损失函数的概念及其在模型训练中的核心地位
3.1

线性回归 (Linear Regression)

📊

什么是线性回归?

线性回归试图学习一个线性函数来拟合数据,是最简单但也最常用的回归模型。 给定数据集 D,线性回归试图学到一个函数来映射输入和输出的关系:

f(x) = wx + b

其中 w 是权重(斜率),b 是偏置(截距)。 我们的目标是找到最优的 w 和 b,使得预测值 f(x) 尽可能接近真实值 y。

📐

均方误差损失 (MSE Loss)

我们使用均方误差(Mean Squared Error)来衡量模型的好坏:

L(w, b) = (1/n) Σ (yᵢ - f(xᵢ))²

✓ 为什么用平方?
  • 确保误差总是正数
  • 惩罚大的误差更严重
  • 数学性质良好,易于求导
⚡ 最小二乘法

通过令损失函数的导数为0,可以直接求出解析解(闭式解)。

🎮

交互式演示

手动调整参数观察拟合效果,或点击 '梯度下降训练' 观看算法自动寻找最优解。红色线段表示预测误差(残差),损失函数就是所有残差平方的平均值。

模型参数

当前模型:

y = 2.00x + 1.00

损失函数 (MSE)

当前损失:0.00
● 橙色圆点

训练数据点

━ 蓝色直线

当前拟合线

| 红色线段

预测误差(残差)

💡 提示:手动调整斜率和截距,观察损失函数的变化。点击"梯度下降训练"观看算法自动寻找最优解的过程。

3.2

梯度下降 (Gradient Descent)

🎯

优化的艺术

梯度下降是机器学习中最重要的优化算法。它的核心思想非常直观:沿着函数下降最快的方向(负梯度方向)移动, 逐步逼近最优解。

更新规则
θ ← θ - α · ∂L/∂θ

θ (theta)

待优化的参数

α (alpha)

学习率(步长)

∂L/∂θ

损失函数的梯度

梯度下降的优势

  • 适用于高维问题
  • 不需要矩阵求逆
  • 可处理大规模数据
  • 容易并行化
⚠️

学习率的选择

  • 太小:收敛缓慢
  • 太大:可能震荡或发散
  • 建议:从小开始逐步调整
🎮

梯度下降可视化(2D)

调整学习率和初始位置,观察优化过程。红色虚线表示当前的梯度方向(损失函数的切线),紫色路径显示参数的更新轨迹。

当前状态

迭代次数:0
参数 x:8.000
损失 L(x):37.000
梯度 ∂L/∂x:12.000

更新规则: x ← x - α·∂L/∂x

━ 蓝色曲线

损失函数 L(x) = (x-2)² + 1

● 橙色圆点

当前参数位置

━ ━ 红色虚线

当前梯度方向(切线)

· · · 紫色路径

优化轨迹

🌐

3D损失曲面可视化

探索不同损失函数的三维形状,观察梯度下降在3D空间中的优化轨迹。拖拽旋转视角,体验从简单凸优化到复杂地形的挑战。

0.10

二次函数 (Quadratic)

最简单的凸优化问题,全局最优解在原点

损失函数公式:
L(w₁, w₂) = w₁² + w₂²
梯度:
∇L = [2w₁, 2w₂]
起点
优化路径
终点
💡 拖拽旋转 · 滚轮缩放 · 右键平移
🎓

3D损失曲面可视化

  • 曲面颜色:蓝色表示低损失,红色表示高损失
  • 梯度下降路径:绿色起点沿着最陡下降方向移动到红色终点
  • 学习率影响:学习率过大会导致震荡,过小会收敛缓慢
  • 不同地形:体验从简单凸优化到复杂地形的优化难度差异
  • 交互探索:旋转视角观察损失函数的三维形状
💻

代码实践:实现梯度下降

动手实现简单的梯度下降算法,加深对优化过程的理解。

💻实现梯度下降算法

完成 gradient_descent 函数,使用梯度下降优化二次函数 f(x) = x²

代码编辑器

Python
Loading...

输出结果

点击 "运行代码" 查看输出结果
期望输出
最终 x 值: 0.000000
最终 f(x) 值: 0.000000
优化路径长度: 21

(期望结果:x 应该收敛到 0 附近)
💡
提示
  • • 编辑器支持代码高亮和自动补全
  • • 使用 Ctrl+S (Cmd+S) 保存代码
  • • 支持多行编辑:按住 Alt 键拖动鼠标
  • • 当前为演示环境,实际项目需要后端支持代码执行
3.3

逻辑回归 (Logistic Regression)

🔄

从回归到分类

尽管名字里有 "回归",但逻辑回归实际上是一个分类算法。 它通过 Sigmoid 函数将线性模型的输出映射到 (0, 1) 区间,表示样本属于正类的概率。

Sigmoid 函数
σ(z) = 1 / (1 + e⁻ᶻ)

其中 z = w₁·x₁ + w₂·x₂ + ... + b(线性组合)

z → +∞

σ(z) → 1

z = 0

σ(z) = 0.5

z → -∞

σ(z) → 0

✂️

决策边界

当 σ(z) = 0.5 时,即 z = 0,这就是决策边界。 对于二维特征空间,决策边界是一条直线:w₁·x₁ + w₂·x₂ + b = 0。 这条线将空间划分为两个区域,分别对应两个类别。

🎮

交互式演示

调整权重和偏置参数,观察决策边界如何移动。背景颜色表示分类概率:蓝色表示倾向于正类,红色表示倾向于负类。白色虚线是 P=0.5 的决策边界。

数据来源

模型参数

决策边界方程:

1.00·x₁ + 1.00·x₂ + 0.00 = 0

分类性能

0.0%

准确率

Sigmoid 函数

σ(z) = 1 / (1 + e⁻ᶻ)

其中 z = w₁·x₁ + w₂·x₂ + b

输出范围: (0, 1)
决策阈值: 0.5

● 绿色圆点

正类样本 (label = 1)

● 红色圆点

负类样本 (label = 0)

━ ━ 白色虚线

决策边界 (P = 0.5)

🎨 背景颜色表示分类概率:红色区域倾向于类别0,蓝色区域倾向于类别1。 调整参数观察决策边界如何移动。

3.4

正则化 (Regularization)

🛡️

防止过拟合的利器

正则化通过在损失函数中添加惩罚项来限制模型复杂度,防止过拟合。 两种最常用的正则化方法是 L1 和 L2 正则化。

🔵

L2 正则化(Ridge)

L = L₀ + λ·Σwᵢ²
  • 惩罚权重的平方和
  • 倾向于产生小但非零的权重
  • 适合特征之间相关性高的情况
  • 解析解存在(可直接求解)
🟣

L1 正则化(Lasso)

L = L₀ + λ·Σ|wᵢ|
  • 惩罚权重的绝对值和
  • 倾向于产生稀疏解(很多权重为0)
  • 可用于特征选择
  • 更具解释性
⚖️

正则化系数 λ (lambda)

λ 控制正则化的强度:

  • λ = 0:无正则化,可能过拟合
  • λ 太大:欠拟合,模型过于简单
  • λ 适中:在偏差和方差之间取得平衡
📐

L1 vs L2:几何直观

L2: 圆形约束

在参数空间中,L2 正则化的约束区域是一个圆(或高维的球)。 损失函数等高线与圆的切点通常不在坐标轴上,所以权重不会变成 0。

L1: 菱形约束

L1 正则化的约束区域是菱形(或高维的超菱形)。 等高线更容易在菱形的顶点(坐标轴)处相交,导致某些权重精确为 0。

📝

本章小结

线性回归通过最小化均方误差学习线性函数,可用解析解或梯度下降求解

梯度下降是核心的优化算法,沿负梯度方向迭代更新参数

学习率是关键超参数,需要仔细调整以平衡收敛速度和稳定性

逻辑回归使用 Sigmoid 函数将线性输出映射为概率,用于二分类问题

正则化(L1/L2)通过惩罚项控制模型复杂度,防止过拟合

L1 倾向于稀疏解(特征选择),L2 倾向于权重衰减