第一周:和平之城中的鸟类识别(案例研究)

本文是结构化机器学习的笔记。

1.1 为什么是ML策略?

  • 快速判断那些方向比较适合继续研究,以免浪费时间。

1.2 正交化(Orthogonalization)

  • 正交化的含义:各个分量互不影响。所以可以分开来考虑。

我们需要达到4个目标

  1. 训练集上好
  2. Dev集上好
  3. Test集上好
  4. 现实情况下好

因此我们的目的是为这4种情况,设计4个独立的按钮,从而可以在降低训练集准确率的前提下,提升Dev集的准确率。

1.3 单一数字评估指标

  • 问题:如果一个分类器在Precision里面比较好,另一个在Recall里面比较好,该怎么选?

  • Sol:

    • F1 Score: F 1   S c o r e = 2 1 P r e c i s i o n + 1 R e c a l l F1\text{ }Score=\frac{2}{\frac{1}{Precision}+\frac{1}{Recall}} F1 Score=Precision1+Recall12
  • 例子2:

    • 不同地区的错误率不同
  • Sol: 计算平均错误率

1.4 满足和优化指标

  • 问题:准确率+时间的指标

  • 优化指标"Accuracy"(需要最值的指标),满足指标"Running Time"(不等式的指标)

  • Sol:
    m a x ( A c c u r a c y )  and  r u n n i n g T i m e ≤ 100 m s max(Accuracy) \text{ and } runningTime\leq100ms max(Accuracy) and runningTime100ms

  • 问题:“准确率”+“False Positive”

  • Sol:
    m a x ( A c c u r a c y )  and  F a l s e P o s i t i v e ≤ 1 次 / 天 max(Accuracy) \text{ and } False Positive\leq1次/天 max(Accuracy) and FalsePositive1/

1.5 训练 / 开发 / 测试集划分

如何设立Dev Set和Test Set?

  • Dev Set: hold out cross validation set

  • 例子:
    假设哦我们有以下地区的数据:

    • US
    • UK
    • India
    • China

    一种划分开发/测试数据的方法是US/UK作为开发数据,另外的两个国家作为测试集。

  • 这是一个糟糕的想法,因为我们可能根据Dev Set的数据设计了一效果很好的模型,但是因为开发集和测试集并没有同样的分布,所有会有问题。

  • 这就好比是一个人训练射中50m的靶,然后真正使用的时候是100m的靶。

设立Dev/Test的方法

关键⚠️ :确保开发集和训练集来自同一个分布。(在上面例子中,各个数据集里都需要有这4个地区的数据)
所以我们可以将所有数据随机洗牌,放入开发集和测试集。

1.6 开发集和测试集的大小

可以只有Train+Dev集,而没有Test集合。

1.7 ⚠️ 什么时候改变开发/测试集和指标

当没有达到预期目的的常见解决思路:

  1. 及时改变Metric以适应目的
  2. 改变Dev/Test数据集,以确保两者为相同的分布。
  • 如果发现选出来的算法存在缺陷,则需要及时改变Metric的定义。
  • 例子:
算法错误率其他
A3%会有一定几率传递不良图片
B5%

此时,为了避免传递不良信息这个巨大的错误,我们需要及时修改metric。
E r r o r = 1 ∑ i w ( i ) ∑ i = 1 m d e v w ( i ) I ( y p r e d ( i ) ≠ y ( i ) ) Error=\frac{1}{\sum_iw^{(i)}}\sum_{i=1}^{m_{dev}}w^{(i)} I(y_{pred}^{(i)} \neq y^{(i)}) Error=iw(i)1i=1mdevw(i)I(ypred(i)=y(i))

其中

  • m d e v m_{dev} mdev表示dev集的样本数量
  • w ( i ) = { 1  如果x不是不良信息 100  如果x是不良信息 w^{(i)}=\left\{\begin{matrix} 1 \text{ 如果x不是不良信息}\\ 100 \text{ 如果x是不良信息} \end{matrix}\right. w(i)={1 如果x不是不良信息100 如果x是不良信息相当于一个乘法项目
  • I ( y p r e d ( i ) ≠ y ( i ) ) = 1 I(y_{pred}^{(i)} \neq y^{(i)})=1 I(ypred(i)=y(i))=1 如果 y p r e d y_{pred} ypred预测错误

步骤:

  1. 确定Metric(放靶)
  2. 达到目标(放箭),可以通过微调Cost Function的定义。我们总是可以适时地观察我们已经训练的模型,从而根据我们的需要修改模型,从而达到我们的预期目的。

1.8 为什么是人的表现

  • 贝叶斯最优误差(Bayes Optimal Error):准确率的上限。( x → y x\to y xy映射的最优上限)
  • 我们观察到当准确率超过人类时,准确率上升速率就变慢了
  • 可能的解释:
    • 人的表现已经贝叶斯最优误差很接近了。
    • 只要Algs比人类能力强,一些方法就不再有效了。
  • 当Algs不比人类强,有一些可能有效的方法:
    • 获得更多有标签的数据
    • 人工对算法误差进行分析
    • 对Bias和Variance方差进行分析

1.9 可避免偏差

  • 人类水平的误差估计来代替贝叶斯最优误差,这在计算机视觉里面比较常见。
  • Avoidable Bias= Human-level error
  • Variance= Training error
  • 例子:
    在这里插入图片描述

1.10 理解人的表现

  • Recap:

人类水平的误差估计来代替贝叶斯最优误差

  • 问题:怎么定义人类水平?

  • 例子:医疗影响分析
    在这里插入图片描述

  • Hyp:

我们看的是最高水平,因为人类(或者任何系统)都只能趋近于(小于等于)贝叶斯最优误差。如果能超过人类水平,则可以部署我们训练的模型了。

当算法水平很高的时候,我们不太确定是否要继续改善模型(减小Bias)还是减小方差。因为我们不知道怎么估计贝叶斯最优误差

1.11 超过人的表现

例如:

  • 人的表现 0.5%
  • Train Error 0.3%
    这时候我们不知道贝叶斯最优误差是否小于0.3%,因为有过拟合的风险。

目前算法比人类强的地方:
这些都是从Structed Data中得到的结果,并不是自然感知任务(如计算机视觉)。

  • 开车路线的时间
  • 贷款
  • 广告投放

1.12 改善模型表现

  1. 对Train Set拟合很好 -> Bias
  2. 在dev/test Set上也很好 -> Variance

改进方向

  • Avoidable Bias改善方法:
  1. 训练一个更大的模型
  2. 多训练一会
  3. 改善网络结构
  • Variance改善方法:
  1. 输入更多的数据
  2. 正则化(L2,Dropout)
  3. 改善网络结构

第一周测试总结:

  1. 我们需要确定一个评估指标,否则会降低工作效率。我们可以通过优化指标满足指标将多个指标缩小为一个指标。例如 m a x ( 准 确 率 )  and  内 存 ≤ 10 M b max(准确率) \text{ and } 内存\leq10Mb max() and 10Mb
    这里准确率就是优化指标,内存就是满足指标
  2. 深度学习领域一般数据集的划分为
训练集开发集测试集
95%2.5%2.5%
  1. 应该用人类最高水平来估计贝叶斯最优误差。但这里有一个前提,即统计的人数足够多,这样的百分数才比较准确。
  2. 学习算法的性能可以优于人类表现,但它永远不会优于贝叶斯错误的基准线。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值