李宏毅深度学习笔记1-案例学习视频点击次数预测
深度学习笔记 1.1:案例学习 —— 视频点击次数预测
一、问题背景
假设某内容创作者希望通过视频平台(如 YouTube、Bilibili 等)获得收益。为了评估收益潜力,他需要预测明天该频道的总观看次数。平台后台提供了丰富的历史数据,例如:
- 前一天的观看次数
- 点赞数
- 订阅人数等
我们的目标是:根据这些已知信息,构建一个模型来预测未来的观看次数。
二、机器学习三步法
第一步:定义模型(Model)
我们首先提出一个带有未知参数的函数,即模型。
最简单的线性模型形式为:
$$ y = b + w x_1 $$
其中:
- $ y $:要预测的目标(如今天总观看次数)
- $ x_1 $:输入特征(如昨天的观看次数)
- $ w $:权重(weight)
- $ b $:偏置(bias)
注意:$ w $ 和 $ b $ 是未知参数,需通过数据学习得到。这个过程依赖一定的领域知识(domain knowledge)——比如我们认为“今天的观看量可能与昨天相关”。
该函数称为模型,其本质是一个带参数的函数。
第二步:定义损失函数(Loss Function)
损失函数衡量当前参数的好坏。给定一组参数 $ (w, b) $,我们可以用它对历史数据做预测,并与真实值比较。
示例:
设 $ w = 1, b = 500 $,则模型为: $$ \hat{y} = 500 + x_1 $$
若 2017 年 1 月 1 日观看数为 4800,则预测 1 月 2 日为 5300,但实际为 4900。误差为: $$ e_1 = |\hat{y} - y| = |5300 - 4900| = 400 $$
对所有训练样本(如 2017–2020 年每天的数据)计算误差后,取平均得到损失:
$$ L(w, b) = \frac{1}{N} \sum_{n=1}^{N} e_n $$
常见的损失函数包括:
- 平均绝对误差(MAE):$ e = |\hat{y} - y| $
- 均方误差(MSE):$ e = (\hat{y} - y)^2 $
- 交叉熵(Cross Entropy):适用于概率输出任务
将不同 $ (w, b) $ 组合代入损失函数,可绘制出误差表面(Error Surface)。颜色越蓝表示损失越小,预测越准。
例如:当 $ w \approx 1, b \approx 100 $ 时,损失最小,说明“用前一天观看数近似预测当天”是合理的。
第三步:优化参数(Optimization)
目标:找到使损失 $ L(w, b) $ 最小的参数 $ w^, b^ $。
常用方法:梯度下降(Gradient Descent)
基本思想:
- 随机初始化参数(如 $ w_0, b_0 $)
- 计算损失对参数的偏导数(梯度): $$ \frac{\partial L}{\partial w}, \quad \frac{\partial L}{\partial b} $$
- 沿梯度反方向更新参数: $$ w_{t+1} = w_t - \eta \frac{\partial L}{\partial w} \ b_{t+1} = b_t - \eta \frac{\partial L}{\partial b} $$ 其中 $ \eta $ 是学习率(learning rate),属于超参数(需人工设定)。
迭代过程:
- 不断更新参数,直到满足停止条件(如达到最大迭代次数,或梯度接近 0)
- 理想情况下收敛到全局最小值(global minima)
- 但可能陷入局部最小值(local minima) —— 不过在高维空间中,这通常不是主要问题
实际结果:
使用真实数据训练后,得到最优参数:
- $ w^* = 0.97 $
- $ b^* = 100 $
- 平均预测误差约为 480 人次
这说明模型能较准确地用“前一天观看量”预测“当天观看量”。
三、关键概念总结
| 概念 | 说明 |
|---|---|
| 模型(Model) | 带未知参数的函数,如 $ y = b + w x_1 $ |
| 特征(Feature) | 输入变量,如昨天的观看次数 $ x_1 $ |
| 标签(Label) | 真实目标值,如今天的实际观看次数 $ y $ |
| 损失函数(Loss) | 衡量预测误差,指导参数优化 |
| 梯度下降 | 通过计算梯度逐步调整参数,最小化损失 |
| 超参数(Hyperparameter) | 如学习率 $ \eta $,需人工设定,不通过数据学习 |
四、思考与延伸:走向“结构化学习”的黑暗森林
在传统机器学习中,我们常将任务分为回归(预测连续值,如观看次数)和分类(预测离散标签,如垃圾邮件与否)。然而,现实世界中的许多问题远比这两类复杂——它们的输出不是单个数字或类别,而是一个具有内部结构的对象:一段自然语言、一张电路图、一份建筑施工图、一个电力系统拓扑,甚至是一整套符合行业规范的设计方案。
李宏毅老师将这类任务称为 “Structured Learning”(结构化学习),并形象地称之为 “回归与分类之外的黑暗森林” ——之所以是“黑暗”,是因为其输出空间庞大、离散、非线性,且高度依赖上下文约束;之所以是“森林”,是因为其中蕴藏着丰富而复杂的结构关系,等待被建模与生成。
这正与我的工作方向高度契合:电力设计的最终产物并非单一数值,而是一套结构化图纸(如一次接线图、二次原理图、设备布置图等),这些图纸不仅包含几何信息,还内嵌了电气逻辑、安全规范、设备参数、连接拓扑等多维约束。如何让机器“理解”这些约束,并自动生成合规、可施工、可优化的电力设计方案,正是结构化学习在工程领域的典型挑战。
例如:
- 输入可能是负荷需求、场地尺寸、电压等级;
- 输出则是一张完整的变电站一次系统图,其中包含断路器、隔离开关、母线、变压器等元件的空间排布与电气连接关系;
- 任意两个元件的位置不能重叠(几何约束);
- 电流路径必须闭合且符合继电保护逻辑(电气约束);
- 所有设备选型需满足短路容量与绝缘等级(规范约束)。
这类问题无法用简单的回归或分类模型解决。我们需要的是能够联合建模输入与复杂结构化输出之间映射关系的学习框架——这正是 Structured Learning 的核心。
当前,该方向已衍生出多种技术路径:
- 序列到序列(Seq2Seq) 用于生成文本或代码;
- 图神经网络(GNN) 用于生成分子结构或电路拓扑;
- 扩散模型 + 约束求解器 用于生成符合物理规则的布局;
- 符号-神经混合系统 将领域知识(如电力设计规范)以规则形式嵌入神经网络。
对我而言,探索如何将电力设计中的隐性经验(如老工程师的布线直觉)与显性规范(如GB/T、IEC标准)转化为可学习的结构化目标函数,进而驱动 AI 自动生成高质量图纸,不仅是一个技术前沿,更是一次工程智能化的范式跃迁。
这片“黑暗森林”虽深邃,却也充满可能——而我们,正手持算法之灯,准备踏入其中。
📌 提示:本案例展示了机器学习最核心的流程——建模 → 评估 → 优化。掌握这一框架,是理解深度学习的基础。
更多推荐
所有评论(0)