[Machine Learning 2021] 回归(Regression)
Categories Machine Learning 2021
Tags
回归(Regression)
机器学习:寻找函数
机器学习可以概括为“寻找函数” ($f$):
- 语音识别:输入声音,输出文本(如 $f(\text{声音}) = \text{“How are you”}$)。
- 图像识别:输入图片,输出类别(如 $f(\text{图片}) = \text{“Cat”}$)。
- 下围棋:输入棋局,输出下一步棋的走法。
不同类型的函数
回归(Regression):函数输出一个标量 (scalar)。
- 例子:预测明天的 PM2.5 浓度。
分类(Classification):函数输出正确的类别。
- 例子:垃圾邮件过滤 ($f(\text{邮件}) = \text{Yes/No}$)。
- 例子:下围棋中预测下一步棋,可视为 $19 \times 19$ 类的分类问题。
结构化学习(Structured Learning):生成具有结构的输出(如图像、文档),比回归与分类更进一步。
寻找函数:案例研究
案例:预测 YouTube 频道(李宏毅教授)在 2/26 的观看次数 $y$。
目标:找到函数
$$y = f(\text{输入特征})$$
一般步骤:
- 函数模型假设:假设具有未知参数的函数。
- 定义损失函数 (Loss):度量预测结果与真实值的差异。
- 优化 (Optimization):通过最小化损失函数找到最优参数。
1. 函数模型假设(线性模型)
假设一个简单的线性模型:
$$y = b + w x_1$$
其中:
- $y$:目标值(观看次数)
- $x_1$:特征(前一天观看次数)
- $w$:权重 (weight)
- $b$:偏差 (bias)
$w$ 和 $b$ 是需要从数据中学习的未知参数。
2. 定义损失函数 (Loss)
损失函数 $L(b, w)$ 衡量参数好坏:
- 均方误差 (MSE):$$e = (y - \hat{y})^2$$
- 平均绝对误差 (MAE):$$e = |y - \hat{y}|$$
- 交叉熵 (Cross-entropy):用于概率分布型任务。
误差曲面 (Error Surface):展示损失 $L$ 随参数 $(w, b)$ 变化的图像。
目标是找到使 $L$ 最小的点。
3. 优化 (Optimization)
目标:
$$w^, b^ = \arg \min_{w, b} L$$
梯度下降 (Gradient Descent)
- 随机初始化 $w^0, b^0$
- 计算梯度
$$\frac{\partial L}{\partial w}, \frac{\partial L}{\partial b}$$ - 更新参数
$$
\begin{aligned}
w^{t+1} &\leftarrow w^t - \eta \frac{\partial L}{\partial w}
b^{t+1} &\leftarrow b^t - \eta \frac{\partial L}{\partial b}
\end{aligned}
$$
其中 $\eta$ 是学习率 (learning rate)。
结果(示例):
$$y = 0.1k + 0.97x_1$$
在训练集上最小损失 $L = 0.48k$,测试集上 $L’ = 0.58k$。
线性模型局限性:过于简单(存在模型偏差),难以拟合复杂数据。
寻找更复杂的模型(非线性)
分段线性与 Sigmoid
- Sigmoid 函数:
$$
y = c \cdot \frac{1}{1 + e^{-(b + w x_1)}}
$$
通过调整 $w, b, c$ 可以控制斜率、平移和高度。
多个 Sigmoid 的线性组合可以近似任意非线性函数:
$$
y = b + \sum_i c_i \cdot \text{sigmoid}(b_i + w_i x_1)
$$
新模型:多特征与 Sigmoid 层
扩展到多个特征:
$$
y = b + \sum_i c_i \cdot \text{sigmoid}\left(b_i + \sum_j w_{ij} x_j\right)
$$
向量形式:
$$
\mathbf{r} = \mathbf{b} + \mathbf{W}\mathbf{x}, \quad
\mathbf{a} = \sigma(\mathbf{r}), \quad
y = b + \mathbf{c}^T \mathbf{a}
$$
未知参数集合:
$$
\theta = {\mathbf{W}, \mathbf{b}, \mathbf{c}, b}
$$
新模型的优化
目标:
$$
\theta^* = \arg \min_{\theta} L
$$
梯度下降更新:
$$
\theta^{t+1} = \theta^t - \eta \nabla L(\theta^t)
$$
批量梯度下降(Mini-batch SGD)
- 每次使用一个批次 (batch) 计算梯度。
- 一个 epoch:遍历全部样本一次。
- 更新次数:$\text{总样本数} / \text{批次大小}$。
更多模型变化
激活函数变化:Sigmoid → ReLU
- ReLU(Rectified Linear Unit):
$$
\max(0, b + w x_1)
$$ - 使用 ReLU 的模型:
$$
y = b + \sum_i c_i \cdot \max(0, b_i + \sum_j w_{ij} x_j)
$$
深度学习
- 多层网络:将 Sigmoid/ReLU 层堆叠,形成隐藏层。
- 神经元 (Neuron):计算单元。
- 神经网络 (Neural Network):具有多层隐藏层的模型。
- 深度学习 (Deep Learning):拥有多层结构(如 ResNet 有 152 层)。
模型复杂度与过拟合(Overfitting)
实验:
使用 56 天观看次数为输入,每层 100 个 ReLU 神经元。
| 模型 | 训练损失 (2017–2020) | 测试损失 (2021) |
|---|---|---|
| 1 层 | 0.28k | 0.43k |
| 2 层 | 0.18k | 0.39k |
| 3 层 | 0.14k | 0.38k |
| 4 层 | 0.10k | 0.44k |
结论:
- 随着层数增加,训练损失持续下降。
- 但测试损失上升 → 出现过拟合。
模型选择 (Model Selection):在后续任务中需平衡复杂度与泛化性能。
总结
本讲通过预测 YouTube 观看次数的例子,系统介绍了机器学习的三大核心步骤:
- 模型假设:设定具有未知参数的函数。
- 定义损失函数:衡量预测误差。
- 优化过程:使用梯度下降找到最优参数。
从简单的线性模型到非线性 Sigmoid / ReLU,再到多层神经网络(深度学习),逐步揭示模型复杂度与泛化之间的平衡关系,并指出过拟合是模型选择中的关键挑战。
Page views: Loading... · Visitors: Loading...
Except where otherwise noted, original content on this site is dedicated to the public domain under CC0 1.0.
Powered by Hexo & Theme mdsuper
沪ICP备2026040813号