type
status
slug
summary
tags
category
icon
password
new update day
Property
Oct 22, 2023 01:31 PM
created days
Last edited time
Oct 22, 2023 01:31 PM

定义问题,收集数据集

  1. 输入数据是什么,要预测什么
  1. 面对的是什么问题
    1. 二分类
    2. 多分类
    3. 标量回归
    4. 向量回归
    5. 多分类,多标签
    6. 聚类、生成或强化学习

选择衡量成功的指标

  1. 损失函数的选择
  1. 平衡分类
    1. 精度
    2. 接收者操作特征特征曲线面积(ROC AUC)
  1. 类比不平衡
    1. 准确率
    2. 召回率
  1. 排序问题或多标签分类
    1. 平均准确率均值
  1. 自定义衡量成功指标

确定评估方法

  1. 留出验证集
    1. 数据量很大时
  1. K折交叉验证
    1. 留出验证的样本量太少,无法保证可靠性
  1. 重复的K折交叉验证
    1. 可用数据很少,同时模型评估又需要非常准确

准备数据

  1. 数据格式化为张量(输入与目标数据)
  1. 张量取值缩放为较小的值[-1,1]或[0,1]区间
  1. 若不同的特征具有不同的取值范围(异质数据),应该做数据标准化。
  1. 可能需要特征工程,尤其是小数据问题

开发比基准更好的模型

  1. 目标是获得统计功效(开发一个小型模型,它能够打败纯随机的基准)
  1. 两个假设
    1. 假设输出是可以根据输入进行预测的
    2. 假设可用的数据包含足够多的信息,足以学习输入和输出之间的关系
  1. 构建一个工作模型的三个关键参数
    1. 最后一层的激活
      1. 二分类问题
        1. 最后一层激活
          1. sigmoid
        2. 损失函数
          1. binary_crossentopy
      2. 多分类、单标签
        1. 最后一次激活
        2. 损失函数
    2. 损失函数
    3. 优化配置
      1. 哪种优化器
      2. 学习率
        1. rmsprop默认学习率是稳妥的

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

  1. 让每一层更大
  1. 训练更多的轮次
(要始终监控训练与验证损失,或者其他你关心的指标,如果模型在验证集的性能开始下降,那么就出现了过拟合)

模型正则化与调节超参数

(最费时间,不断调节模型训练、训练、在验证数据集上进行评估(不是测试数据)然后再次调节。
  1. 添加dropout
  1. 尝试不同的架构:增加或者减少层数
  1. 添加L1和/或L2正则化
  1. 尝试不同的超参数(每层的单元个数或优化器的学习率)
  1. (可选)反复做特征工程:添加新特性或删除没有信息量的特征

一旦开发出了令人满意的模型配置,在所有可用数据(训练+验证)上训练最终的生产模型,然后在测试集上评估一次

  1. 可能出现的问题
    1. 如果测试集的性能比验证集上的差很多,那么可能意味着验证流程不可靠
    2. 或在调节模型超参数时在验证数据上出现了过拟合
  1. 解决方式
    1. 换用更加可靠的评估方法,如重复的K折验证。

小节

  • 定义问题与要训练的数据
    • 收集这些数据,有需要的话用标签标注数据
  • 选择衡量问题成功的指标
    • 要在验证数据集上监控哪些指标
  • 确定评估方法
    • 留出验证
    • K折验证
    • 应该将哪部分数据用于验证
  • 开发第一个比基准更好的模型
    • 一个具有统计功效的模型
  • 开发过拟合的模型
  • 基于模型在验证数据上的性能来进行模型正则化与调节超参数。
VirtualBox 之虚拟硬盘多重加载Github Action 获取当前时间并给 docker 镜像打标签