结构化机器学习项目

机器学习策略(一)

这节主要讲深度学习中的一些策略,或许可以帮助我们少走一些弯路(比如你寻找了很久的数据,但其实是算法本身出了问题。)

正交化:一个“按钮”只做一件事。不要互相影响


多个指标通常不能很好指示出算法效果。所以最好是用单一评估指标来平价


在有多个指标时,可以将其中一个设为优化目标,其他的可以为满足目标,也就是在满足一个阈值范围内的都可以。


训练集,验证集,测试集都要在同一分布下。一般项目的循环是:idea——》code——》change


传统划分这几个集时,按照前两种就可,因为数据量其实并不大。但是在深度学习时代,假设数据达到百万级别,当你的测试集为1%时,也有一千条数据了,所以 像第三种情况设置也是可以的惹


                                                             虽然只看数据,A效果好,但是A无法过滤“色情图片”,(Andrew视频里就是这个例子啊~)让用户很不满意(?)   ,所以可以把 将色情图片误分的权重增加十倍。最后使用所有的权重和进行归一化。    

感觉这一部分很多方法论的东西。1.找好你的metric(就是要达到的目标)2.想方设法的接近它


比较人和计算机的性能,绿色的线是贝叶斯最优误差,就是自然能达到的最大精度,不是所有的问题都能达到百分百精度的哦~



human-training error为可避免偏差,training -development error为方差,在这里把human能达到的精度视为贝叶斯最优误差了。


对于很多非自然感知问题,机器的水平事实上比人高了。就像下图几种领域。在部分的自然感知领域,计算机的水平也已经超越了单个人类





机器学习策略(二)

对误差分析时,有时可以采取人工误差分析来判断要把改正的重点放在哪一个方面上。


凡事分情况考虑,在右边的例子中由于打错标签使得这一项占总错误率的30%,那么及时修正这些标签就变得很重要了


一些小tricks。最后一条,修正dev and test集合中的数据可能相对于容易点,那这样的话,train的分布可能会与这有一点点不同,但是没关系,本周后面会讲到这种分布不同的情况下怎么弄~


当你开始在一个领域搭建系统的时候,可以像敏捷开发那样,先构建原型进行快速迭代,然后再迭代中发现着重要解决的问题。


看图理解了,当训练集和测试集的分布不一致时,如何处理,不建议shuffle。将实际的一半的数据分在训练集中。

可以用先前收集到的数据作为训练集,划分方式和上面一样

当训练集和dev的分布不一致时:可以在训练集新分出来train-dev集,用来判断数据是bias还是不匹配问题。


这几个集合之间的关系


更加general的方法来进行误差分析


如何解决数据不匹配问题。1.人工检查是哪些问题引起的数据不匹配问题 2.构造数据使得训练集和开发集数据尽可能地一致。---》比较普遍的做法是使用人工合成数据。


迁移学习:当目标的数据太少时,可以先使用别的多的数据进行预训练,但是可能会有用,但别指望会很多用,以下是迁移学习的一些目标和条件。


multi-task:同一张图片能够区分出多个特征,与softmax回归不同的是,虽然它们输出的很像,但是softmax通常输入只包含一种类型~


在实际中,迁移学习比multi task用的更多

上面是流水线方法,端到端就是在输入和输出只放入一个巨大的神经网络


有时候可以适时地分解任务,因为对应的两个子任务,它们各自拥有更多的数据集来训练,而如果直接端到端反而没有那么多数据来训练。


端到端学习的重点:要有大量的数据。以下是它的优缺点



你可能感兴趣的:(结构化机器学习项目)