本文是我自己学习吴恩达老师在DeepLearning系列课程的第三部分:Structuring Machine Learning Project的笔记和感想。
首先我们来看这部分我们将学到什么以及必要性
You will learn how to build a successful machine learning project. If you aspire to be a technical leader in AI, and know how to set direction for your team's work, this course will show you how.
you will:
- Understand how to diagnose errors in a machine learning system, and- Be able to prioritize the most promising directions for reducing error
- Understand complex ML settings, such as mismatched training/test sets, and comparing to and/or surpassing human-level performance
- Know how to apply end-to-end learning, transfer learning, and multi-task learning
所以这部分内容讲的是如何从Project角度来应用DL,要点是1. 理解如何去分析系统产生的误差 2. 通过误差分析如何找到最有效的误差优化方向 3. 在实际应用中由于数据的原因,我们遇到训练数据和我们的目标(test set)不匹配的情况怎么处理以及同human-level的对比 4. 知道什么是end-to-end learning,transfer,multi-task learning及其适用范围。以下我们分点来说
1. 评价模型标准
如何评价一个模型的好坏,我们可以建立一个指标矩阵(Evaluation Matrix),常见的指标有Precision和Recall. Precision(准确率)=True positive/Predicted positive Recall(查全率)=True positive/All Positive 这两个指标其实很好理解,比如下面对A,B两个分类器的比较
分类器A的Recall高,说明能更好的覆盖数据但是做出的预测准确率会有所下降。分类器B的Recall低说明它对整个数据集不能很好覆盖,但在它所适用的范围内做的预测准确性相应高。 有了求全和求准这两个指标,我们还需要一个这两个综合起来(Trading off)的指标,所以我们引入F1 Score = 2/(1/P+1/R),F1 Score可看作两个指标的平均。所以我们再看A,B两个分类器,可以判定A分类器更优。
除了上述这些指标,实际情况下我们还会遇到其他指标比如运行时间,占内存大小等。当用多个指标建立起Evaluation Matrix,我们要考虑清楚哪个是我们主要优化的指标,剩下的就是达到一定程度即可的指标,比如下图所示的runing time, 只要在100ms内我们都可以接受,那就排除了C分类器在A,B两个中选择准确率相对高的B
2. 训练/开发/测试集(Training/Develop/Test Set)
首先选择数据要尽可能贴近我们现实中要解决的目标。开发集和测试集要从数据中随机抽取且来自同一分布。对于训练,开发,测试集大小的划分,在大数据情况下一般给予开发,测试各1%即可。
在实际中有时我们要根据情况来改变指标,这是一个确定最终目标的过程。比如一个猫的分类器,第一开始我们的目标是选出猫的图片,但是发现可能会把色情图片误认为猫,那么将色情图片当成猫推送出去就是严重问题(虽然电脑看来色情图片只是错误分类里普通的一种),那我们就需要改变评价指标为: 选出猫的同时排除色情图片。我们可以通过加入权重来定义指标。在计算误差时给予色情图片高的权重,这样就能反应出哪个分类器能相对更好地屏蔽掉色情图片。
小结: 评价一个模型好坏要建立相应的指标; 指标要针对现实情况进行优化以反映正确需求
3. 人类级别表现
我们拿人类的表现作为参考,是因为在一些方面人类还是比ML做的要好,只要人类的表现高于模型的准确率,那么就可以提供更多的labeled数据和人类方面的洞察。理论上的误差极限被称作Bayes optimal error,我们可以看到随着训练时间的增加模型的准确率在上升,但是超过人类级别之后上升趋于缓慢。但是注意并不是所有领域ML都可以超过人类级别。在自然感知(Natrual perception)方面比如语音识别,视觉处理方面ML并不是很容易能超过人类。但是在一些综合性的任务中比如online advertizing, product recommendation之类的ML要强于人类。
我们可以把人类级别看成Bayes Erro的近似,那么通过Human,Training,Dev erro的对比我们可以确定下一步优化的方向: 可避免误差(Avoidable Bias)还是方差(Variance)
为了减少可避免误差,我们可以采取以下策略: 训练更大的model, 训练时间更长用更好的算法,尝试不同的NN结构和调参
为了减少方差,我们可以采取以下策略: 使用更多数据,正则化,尝试不同NN结构和调参
网友评论