您的当前位置:首页正文

深度学习笔记11_机器学习工作流程

来源:要发发知识网

机器学习工作流程

定义问题,收集数据集

定义问题

  • 你的输入数据是什么?你要预测什么?
  • 你面对的是什么类型的问题?确定问题类型有助于你选择模型架构、损失函数等
    • 是二分类问题、多分类问题、标量回归问题、向量回归问题
    • 还是多分类、多标签问题
    • 比如聚类、生成或强化学习

收集数据集

两个假设:

  • 假设输出是可以根据输入进行预测的。
  • 假设可用数据包含足够多的信息,足以学习输入和输出之间的关系。

非平衡问题数据集的收集,比如预测服装推荐,就要考略周期性问题:人们购买服装的种类是随着季节变化的。
解决的方法是:正确的做法是不断地利用最新数据重新训练模型,或者在一个问题是平稳的时间尺度上收集数据。

机器学习只能用来记忆训练数据中存在的模式。你只能识别出曾经见过的东西。

选择衡量成功的指标

衡量成功的指标将指引你选择损失函数,主要的手段有:

  • 精度
  • 准确率(precision)
  • 召回率(recall)
  • 客户保留率
  • ...

一般的推荐是:

  • 平衡分类问题:精度和接收者操作特征曲线下面积
  • 对于类别不平衡的问题,你可以使用准确率和召回率
  • 对于排序问题或多标签分类,你可以使用平均准确率均值 (mean average precision)。
  • 可以浏览 Kaggle 网站上的数据科学竞赛,里面有各种指标推荐

确定评估方法

三种常见的评估方法:

  • 留出验证集。数据量很大时可以采用这种方法。
  • K 折交叉验证。如果留出验证的样本量太少
  • 重复的 K 折验证。如果可用的数据很少,同时模型评估又需要非常准确,那么应该使用这种方法。

准备数据

具体步骤如下:

  • 将数据格式化为张量。
  • 缩放为较小的值,比如在 [-1, 1] 区间或 [0, 1] 区间。
  • 不同的特征具有不同的取值范围(异质数据),那么应该做数据标准化。
  • 能需要做特征工程,尤其是对于小数据问题。

开发比基准更好的模型

的目标是获得统计功效(statistical power),即开发一个小型模型,它能够打败纯随机的基准(dumb baseline)。

如果遇到无法打败随机基准,需要退回到数据集的两个假设:

  • 假设输出是可以根据输入进行预测的。
  • 假设可用数据包含足够多的信息,足以学习输入和输出之间的关系。

构建第一个模型的三个关键参数:

  • 最后一层的激活。它对网络输出进行有效的限制。
  • 损失函数。它应该匹配你要解决的问题的类型。
  • 优化配置。你要使用哪种优化器?学习率是多少?大多数情况下,使用 rmsprop 及其默认的学习率是稳妥的。

具体推荐如下:

为模型选择正确的最后一层激活和损失函数

扩大模型规模:开发过拟合的模型

需要确定的参数:

  • 添加更多的层
  • 让每一层变得更大
  • 训练更多的轮次

要始终监控训练损失和验证损失,以及你所关心的指标的训练值和验证值

模型正则化与调节超参数

需要不断地调节模型、训练、在验证数据上评估(这里不是测试数据)、再次调节模型,然后重复这一过程,直到模型达到最佳性能。你应该尝试以下几项:

  • 添加 dropout
  • 尝试不同的架构:增加或减少层数
  • 添加 L1 和 / 或 L2 正则化
  • 尝试不同的超参数(比如每层的单元个数或优化器的学习率),以找到最佳配置
  • (可选)反复做特征工程:添加新特征或删除没有信息量的特征

注意:每次使用验证过程的反馈来调节模型,都会将有关验证过程的信息泄露到模型中
一旦开发出令人满意的模型配置,你就可以在所有可用数据(训练数据 + 验证数据)上训练最终的生产模型,然后在测试集上最后评估一次。

小结

  • 定义问题与要训练的数据。收集这些数据,有需要的话用标签来标注数据。
  • 选择衡量问题成功的指标。你要在验证数据上监控哪些指标?
  • 确定评估方法:留出验证? K 折验证?你应该将哪一部分数据用于验证?
  • 开发第一个比基准更好的模型,即一个具有统计功效的模型。
  • 开发过拟合的模型。
  • 基于模型在验证数据上的性能来进行模型正则化与调节超参数。许多机器学习研究往往只关注这一步,但你一定要牢记整个工作流程

分享关于人工智能,机器学习,深度学习以及计算机视觉的好文章,同时自己对于这个领域学习心得笔记。想要一起深入学习人工智能的小伙伴一起结伴学习吧!扫码上车!

瓦力人工智能 - 扫码上车