吴恩达深度学习第三章第一周——机器学习策略

一、为什么是ML策略(机器学习策略)

假如我们在构建一个喵咪分类器,数据集就是上面几个图,训练之后准确率达到90%。虽然看起来挺高的,但是这显然并不具一般性,因为数据集太少了。那么此时可以想到的ML策略有哪些呢?总结如下:

  • 收集更多的数据
  • 收集更多不同的训练集
  • 结合梯度下降训练算法更长时间
  • 尝试Adam算法
  • 尝试更大的网路
  • 尝试小一点的网络
  • 试着用一下dropout算法
  • 加上L2正则项
  • 改善网络结构,如
    • 激活函数
    • 隐藏层节点数量
    • and so on

二、正交化

正交这个词很好理解,即各个变量之间是相互独立的。我们不希望通过某些修改,而对多个变量同时进行了修改。

我们希望能对自己想修改的变量的进行单独的修改处理,这样的效率才是最高的。就像开车,方向盘的功能就是改变方向的,刹车就是用来减速的,油门就是用来加速的。如果方向盘,刹车,油门都能同时改变速度和方向,难道让司机在行驶过程中拿出纸和笔写个方程,解一下如何使用调配才能达到合适的速度和方向吗???

综上,所以在调参数时我们希望尽可能的正交化,切勿将一大堆的优化方法不动脑的就堆在一起使用。

当设计一个有监督的学习系统时,这四个假设必须是正确的和正交的。

1、在成本函数中很好地匹配训练集

-如果它不适合,使用更大的神经网络或切换到更好的优化算法可能会有所帮助。

2、在成本函数上很好地匹配开发集

-如果它不适合,正规化或使用更大的训练集可能会有所帮助。

3、在成本函数上很好地拟合测试集

-如果它不适合,使用更大的开发集可能会有所帮助

4、在现实世界中表现良好,即真实的使用中

如果它执行得不好,那么开发测试集就没有正确设置,或者成本函数没有评估正确。

 

三、单一数字评估指标

本节大致的思想就是首先按照单一数字评估指标对模型进行评价和优化。以精确率召回率为例,这二者一般来说是一个不可兼得的指标,所以为了更好的衡量模型的好坏,引入F1算法来综合精确率召回率对模型进行评估。

四、满足和优化指标

假如我们有A,B,C三个分类器,各个分类器的准确率和耗时情况如下:

分类器准确率耗时
A90%80ms
B92%95ms
C95%1500ms

此时该如何评价这三个分类器呢?

有如下可选择的方法:

  • 1.线性组合
    基于已知的指标构建一个新的指标:

cost = accuracy - β*time

  • 基于满足指标来观察优化指标
    很显然我们更关心的是最终的准确率,但是同时也希望耗时不要太长,所以我们可以将满足指标设定为耗时,假设是100ms,然后优化指标就是在满足耗时在100ms内的情况下,比较准确率的大小。

五、训练/开发/测试集划分


假设我们有一系列的数据分别来自上面各个国家和地区。现在我们需要将这些数据划分为开发集和测试集, 一般的方法是我们随机选择几个国家的作为开发集,剩下的作为测试集,就如上图所示。

但实际上存在较大的问题,因为开发集和测试集不服从同一分布,这就好像你在准备托福考试,你尽可能的得到了所有的考试技巧和其他资料,最后你的确得到了不错的成绩。但是后来因为工作需求需要你会说俄语,此时如果你用之前托福的资料来对付俄语考试则显得驴头不对马嘴了,这也就是为什么可能开发集准确率挺好的,但是应用的测试集就不行了。

所以为了实现服从同一分布,我们可以这样做,

  • 首先将所有国家和地区的数据打散,混合
  • 按照一定的比例将上面混合打散后的数据划分为开发集和测试集

六、开发集和测试集的大小


当数据很大的时候,我们可以按照98/1/1来划分

七、什么时候该改变开发/测试集合指标

假设现在一个公司在做一个喵咪图片推送服务(即给用户推送喵咪的照片),部署的有两个算法:

  • 算法A: 喵咪图片识别误差是3%,但是可能会一不小心就给用户发了一些少儿不宜的图片
  • 算法B:误差是5%,但是不会给用户推送不健康的图片

所以对于公司来说可能希望准确性高一些的算法A,而用户可能会非常在意你给他推送了某些不想看的东西,也许更喜欢算法B。所以总的来说就是根据实际需要来改变开发/测试集合指标。

八、什么是人的表现

 

因此在实际操作过程中,我们可以以人类准确率为指标来评判我们训练的模型好坏程度,如果准确率不及人类,那么我们可以从以下几个方面进行调整:

  • 获取更多的标签数据
  • 分析为什么模型在这个数据上错误,而人类会正确判断,对模型进行修正
  • 分析和运用偏差和方差

九、可避免偏差

看上面课件的截图可能比我自己重新复述一遍要更加容易理解一些,不过我还需要对上面的课件做一些补充,就是

  • Humans error 与 Training Error之间的差距我们成为Avoidable bias
  • Training Error 与 Dev Error之间的差距我们成为Variance

具体怎么运用看下面一小节内容~

十、理解人的表现

有了课件后我都懒得自己写了(捂脸(/ω\))

还是解释一下课件吧:

Example 1

假如一个医院需要对一个医学影像进行分类识别,普通人,普通医生,有经验的医生和一群有经验的医生识别错误率分别为3%,1%,0.7%,0.5%。上一节中提到过Human Error,那此时的该如何确定Human Error呢?你可能会说取平均值,但这是错误的。我们当然是取最好的结果啦,也就是由一群经验丰富的医生组成的团体得到的结果作为Human Error。另外贝叶斯误差一定小于0.5%。

Example 2

还是以医学影像分类识别为例,假如现在分成了三种情况:

  • Scenario A
    让三类人群来划分后得到的误差分别为1%,0.7%,0.5%,而训练集和测试集误差分别为5%,6%。很显然此时的Avoidable Bias=4%~4.5%Variance=1%,bias明显大于variance,所以此时应该将重心放到减小bias上去。

  • Scenario Bayse
    同理此情况下的Avoidable Bias=0%~0.5%Variance=4%,所以需要减小variance。

  • Scenario C
    Avoidable Bias=0。2%Variance=0.1%,二者相差无几,但是此时训练的模型准确率还是不及人类,所以没办法咱们还得继续优化,都说枪打出头鸟,所以继续优化bias~

十一、超过人的表现

  • Scenario A
    Avoidable Bias=0.1%~0.4%Variance=0.2%,所以此时应该将重心放到减小bias上去

  • Scenario B
    Avoidable Bias=-0.2%~0.7%Variance=0.1%.机器的效率超过了人的表现,这不代表不可以继续进行优化,因为机器在一些大数据的处理上比人类具有更大的优势,比如广告的选择推送,产品的建议,预测物流时间等等。

十二、改善你的模型的表现

可避免偏差的错误:

1.训练更大的神经网络模型

2.训练更好的优化算法

3.神经网络结构和假设函数的搜索

方差的错误:

1.更多的数据集

2.正则化

3.神经网络结构和假设函数的搜索

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值