• 深度学习——结构化机器学习项目(学习策略1)[8]


    目录

    • 机器学习策略与正交化
    • 单一数字评估指标
    • train/dev/test数据集
    • 可避免偏差avoiable bias
    • human-level performance

    一、机器学习策略与正交化

    当需要对网络进行调整的时候,你可以有很多不同的方向,但是怎么选择一个方向呢?这就是机器学习策略

    正交化

    对一个功能的调整应该尽量不影响到其它功能

    互成90度,每个功能由一个单独的装置控制,通过对各装置调整以实现对一个综合效果的实现

    比如想要让车有90的速度和60的角度,那么通过两个单独的按钮分别控制这两个要素来实现(而不是用一个按钮同时控制)

    正交化与机器学习

    机器学习的目标有四个阶段,保证每个阶段结果好的方法尽量正交化,也就是不会同时影响两个阶段的结果。(如early stopping就不是很好,会对train/dev都有影响)

    目标 调整方法
    在training set上表现好

    bigger network、Adam算法...

    在dev set上表现好 Regularization, bigger train set
    在test set上表现好 bigger dev set
    在实际应用上表现好 change dev set or cost function

    二、单一数字评估指标(single number evaluation metric)

    当你有多个模型时,如果有多项评估指标,则很难一下子找出哪个模型是比较好的。所以一般采用一个dev set 和一个评估指标

    例:对猫的识别

    有两个指标:precision查准率(识别成猫的中有多少真的是猫),recall查全率(有多少猫被识别出来),那可以采用调和平均数(F1 score = 1 / (1/p + 1/r))来作为评估指标,而不是用两个

    例:下面这个是更多大一点的,就更难找出哪个是最好的。那么,可以计算出平均值,以平均值来评估

    Algorithm US China India Other Average
    A  3% 7% 5% 9% 6% 
    B  5% 6%  5%  10%  6.5% 
    C  2% 3%  4%  5%  3. 5%
    D  5%  8%  7%  2%  5.25%
    E 4%  5%  2%  4%  3.75% 
    F 7%  11%  8%  12%  9.5% 

    优化指标和满足指标

    如果不方便把所有指标合并成单一值,那么可以变成两个,一个是优化指标(尽量做到更好),一个是满足指标(只要符合一定要求即可)

    一般地,有N个指标,可以把一个当成优化指标,其它当成满足指标

    例:唤醒设备的语音识别,比如hi,siri等

    那要评估的指标有说出相应词唤醒的成功率(优化指标),以及没有真的说话时被错误唤醒的次数(满足指标)

    三、train/dev/test数据集

    怎么选择dev/test数据集

    要来自同一个分布!dev其实是设定了一个目标,如果test和dev分布不同,那么就会让后来的目标与原来的目标有偏差,结果并不好

    例:用中等收入的zip code作为dev数据集评估他们是否有还款能力,以便决定是否可以放款。最后却用低收入区域的zip code作为test进行测试,这将导致结果不正确,你还需要重新再训练

    train和dev的大小

    现在数据量很大,可以采用98%/1%/1%,1%给dev/test其实就已经足够了。有时人们会不设置test,而是直接在dev上进行迭代评估,如果dev足够大,不会过拟合,这种方案也是可以的

    什么时候应该改变dev/test或metric

    例:一个对猫进行分类的分类器,两个model,一个错误率为3%,另一个为5%,可是3%的可能会把黄色图片当成猫,而这是不能被允许的。这里可以修改metric,增加权重,当出现这种情况时得到更大的处罚值

    为了能使用这种错误率计算公式,你就需要先人工先进行评估

    Metric:分类错误

    算法A: 3%错误

    算法B: 5%错误

    错误率:$frac{1}{m_{dev}}sum_{i=1}^{m_{dev}}L{y_{pred}^i eq y^{(i)}}$

    =>$frac{1}{sum_{i}w^{(i)}}sum_{i=1}^{m_{dev}}w^{(i)}L{y_{pred}^i eq y^{(i)}}$

    $w^{(i)}=egin{cases}1 & ext{ if } x^{(i)} non-porn\ 10 & ext{ if } x^{(i)} pornend{cases}$

    设定一个评价metric,和如何达到好的结果两个应该分开考虑

    例:在dev/test上结果很好,如识别图片(dev/test是高清的),但是用户的图片是比较模糊的,所以在实际中运用结果并不理想,这时应该修改dev/test

    四、可避免偏差avoiable bias

    人类的错误率(用来估计贝叶斯错误)和train上错误率的差值:可避免偏差

    train上和dev上错误率差值:方差

    根据偏差大还是方差大来决定应该调整的方向

    human-level performance 人类对一件事的判断错误率

    不同的群体对一件事的错误率是不同的,而最优的那个一般才是用来估计贝叶斯错误

    减少偏差和方差

    Human-level

    Avoiable bias

    train bigger model

    Train longer/better optimization algorithms

      - Momentum, RMSprop, Adam

    NN architecture/hyperparameters search

    Training error

    More data

    Regularization

      - L2, dropout, data augmentation

    NN architecture/hyperparameters search

    Dev error  

    超越人类?

    如果给够多的数据、结构化的数据,非感观的评判,那么机器可能会比人类做得好。比如广告点击、运输时间等

    目前在感观上的某些领域机器也会做得很好,比如语音识别。这种情况下,以人类水平的错误率估计的贝叶斯错误率可能会比train的错误要高

  • 相关阅读:
    利用jquery获取html中被选中的input的值
    获取表单选中的值(利用php和js两种方式)
    复习
    Ajax请求中的async:false/true的作用
    Jquery
    C#创建控制台项目引用Topshelf的方式,部署windows服务。
    你循环的时候就可以给他们赋值了,那么就不用addClass,再根据类选择器处理,代码能一气呵成就别写成两段了
    SQL server 数据库中插入中文变???格式乱码的问题另一种容易忽略的情况(C#操作dapper)
    SQL 两个表有关联,通过其中一个表的列,更新另一个表的列。
    SQL server 存储过程中 列传行
  • 原文地址:https://www.cnblogs.com/coolqiyu/p/8650272.html
Copyright © 2020-2023  润新知