Andrew Ng's deeplearning Course3Week2 ML Strategy2(结构化机器学习)

来源:互联网 发布:手机淘宝差评怎么改 编辑:程序博客网 时间:2024/06/06 01:36

一、误差分析

1.执行误差分析


如何执行误差分析呢?

我们可以将dev和test集里的错误标记进行人工整理,画张表,最后统计出各个错误的原因所占的比例,这花不了太长时间,但对改善效果可能会有很大帮助,毕竟去改善占比61%的错误总比花大量时间去解决占比8%的错误要来得高效。

2.清除标记错误的例子

有些例子并不是分类分错了,而只是因为某种原因把标记标错了,我们要根据这类错误所占的百分比来决定是否修复它。原理同上。

假如我们决定修复这些例子,有几点我们需要注意,如下图:


二、构建系统的一些建议


如果你要构建的系统没有大量的文献资料参考,你也不是很有经验的人员,那么上图红框部分就是给你的一些建议。

1.设定验证/测试集和指标。

2.快速建立系统。

3.使用偏差和方差分析&错误分析,然后不断迭代。

三、不匹配的训练和验证/测试集

1.在不同的分布上训练和测试


有的时候训练集和测试集的分布并不相同,拿识别猫举例,训练的时候是高清晰度的像素,但是实际上用户上传的图片并没有那么高清。

这个时候我们有200000张高清图片和10000张非高清图片,我们该怎么分配呢,答案如上图所示:

将所有的200000张高清图片加上5000张非高清图片分配给训练集,剩下的5000张均分给验证集和测试集,这样在长远来看,效果会比打乱随机分配的要好很久。

2.在训练和验证/测试集上的数据不匹配


如上图中左边红框所示:训练集误差为1%,验证集误差为10%,2者之间有9%的误差,这在以前我们肯定会认为是方差问题,但现在不一定了,还有可能是2者之间的数据不匹配问题造成的,我们该如何辨别呢?

如上图中右边绿框所示:我们从训练集中分一小部分出来,叫训练-验证集,与训练集相同分布,但不为训练集所用。

从上图右边蓝框所示:假如训练集~训练-验证集为8%,而验证集为10%,那就说明是高方差问题;如果训练集~训练-验证集为0.5%,而验证集为10%,那么这时我们就可以认为是数据不匹配的原因了。

3.如何处理数据不匹配问题

现在并没有系统性的解决方案,不过有几种措施可能会比较不错。


如上图所示:1.人工执行误差分析去判断训练和验证/测试集之间的差异。

2.使训练集更相似于验证/测试集,或收集更多与现有验证/测试集相似的数据。(其中一个方法可以进行人工合成,如合成噪音背景和语音、背景和汽车,虽然不是很好,但会提升精准度)

四、从任务中学习

1.迁移学习

迁移学习就是任务B的数据集很少,但是任务A训练好了,并且有相同的输入x,那么这时我们就可以将任务A模型的最后几层换为任务B进行训练。

可以进行迁移学习的要求如下图:


2.从多任务中学习

在迁移学习中,任务是串行的;在多任务中,是并行的,同时学习几个任务,试图让单个神经网络同时做几件事情,然后希望这里每个任务都能帮助到其他所有任务。

使多任务学习有意义的条件如下图所示:


五、端到端的深度学习

1.什么是端到端的深度学习


如上图所示:以往的语音识别,是从输入x(语音)经历过很多中间步骤如提取特征、转化为文字等最终到达y(识别的文本)。

而端到端的学习就是没有这些中间步骤,输入语音直接得到文本。

但是并不是所有都能成功,这需要大量的端到端的数据支撑才行。如下图的人脸识别:


相比端到端的数量不足,将这个过程分为2步,第一步从图像中找出人脸,截取这个人脸图像。第二步将人脸图像与数据库中对比。这个的数据量级就明显比端到端要多很多。

2.是否使用端到端的深度学习

端到端的优缺点如下图:


最后,最最重要的一点就是应用端到端一定要有足够的数据来映射x-y。


阅读全文
0 0
原创粉丝点击