先定义要预测什么

监督学习用带标签的数据学习输入到输出的映射,模型通过损失函数衡量误差。任务定义要同时说明输入、标签、使用场景与错误代价。机器人动作预测和图像分类具有不同约束,不能只比较一个抽象的准确率。

一条完整流程包括:采集与检查数据、划分数据、建立简单基线、训练模型、用验证集调参、最后用测试集评估。预处理参数也必须只从训练部分估计,否则会把评估数据的信息泄漏到训练中。

一个不训练模型的基线

train_targets = [2.0, 4.0, 6.0]
prediction = sum(train_targets) / len(train_targets)
test_targets = [3.0, 5.0]
mse = sum((prediction - y) ** 2 for y in test_targets) / len(test_targets)
assert prediction == 4.0 and mse == 1.0

这个常数基线很弱,但提供了可检查的比较起点。复杂模型如果无法超过适当基线,应先检查标签、划分、特征与评估实现,再扩大模型。

泛化与分布变化

训练误差很低、验证误差较高,可能提示过拟合,也可能暴露划分差异或数据问题。正则化、更多有效数据与更合适的模型都可能有帮助,具体选择要通过实验判断。

序列与机器人任务按独立轨迹、场景或时间段划分,避免相邻帧跨训练和测试集合。部署后观察输入分布变化、失败案例和延迟;一次离线高分不能覆盖运行中的全部条件。

练习

对一组回归数据实现均值基线和线性模型,固定训练/验证/测试划分,记录损失与运行时间。再故意把同一轨迹的相邻帧随机拆开,解释评估为何可能过于乐观。

区分模型参数、超参数和预处理参数,能解释为什么标准化、特征选择与数据清洗也需要遵守评估边界。

参考资料