2020-5-18 吴恩达-改善深层NN-w1 深度学习的实用层面(1.3 机器学习基础-诊断/解决偏差(大网络)和方差(大数据)问题)

1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai

1.3 机器学习基础 Basic “recipe” for machine learning

本节主要介绍如何通过组织机器学习来诊断偏差和方差的基本方法,然后选择解决问题的正确操作。

观察下图。训练NN时用到的基本方法。
在这里插入图片描述

初始模型训练完成后,我首先要知道算法的偏差高不高(High bias?),如果偏差较高,试着评估训练集或训练数据的性能。

如果偏差高(Y),甚至无法拟合训练集,那么你要做的就是选择一个新的网络,比如

  • 含有更多隐藏层或者隐藏单元的网络
  • 或者花费更多时间来训练网络
  • 或者尝试更先进的优化算法

采用规模更大的网络通常都会有所帮助,延长训练时间不一定有用,但也没什么坏处。

训练学习算法时,我会不断尝试这些方法,直到解决掉偏差问题,这是最低标准,反复尝试,直到可以拟合数据为止,至少能够拟合训练集。

如果网络足够大,通常可以很好的拟合训练集。一旦偏差降低到可以接受的数值,检查一下方差有没有问题(High variance?)。

为了评估方差,我们要查看验证集性能。我们能从一个性能理想的训练集推断出验证集的性能是否也理想。

如果方差高(Y)

  • 最好的解决办法就是采用更多数据。
  • 如果无法获得更多数据,我们也可以尝试通过正则化来减少过拟合。

有时候我们不得不反复尝试。如果能找到更合适的NN框架,它可能会一箭双雕,同时减少方差和偏差。

总之就是不断重复尝试,直到找到一个低偏差,低方差的框架,这时你就成功了。

有两点需要大家注意

1,高偏差和高方差是两种不同的情况,我们后续要尝试的方法也可能完全不同.

我通常会用训练验证集来诊断算法是否存在偏差或方差问题,然后根据结果选择尝试部分方法。

举个例子,如果算法存在高偏差问题,准备更多训练数据其实也没什么用处,至少这不是更有效的方法,所以大家要清楚存在的问题是偏差还是方差,还是两者都有问题,明确这一点有助于我们选择出最有效的方法。

2,在ML的初期阶段,关于所谓的偏差方差权衡的讨论屡见不鲜,原因是我们能尝试的方法有很多。可以增加偏差,减少方差,也可以减少偏差,增加方差。但是在ML的早期阶段,我们没有太多工具可以做到只减少偏差或方差却不影响到另一方。

但在当前的深度学习和大数据时代,只要持续训练一个更大的网络(解决偏差),只要准备了更多数据(解决方差),那么也并非只有这两种情况。只要正则适度,通常构建一个更大的网络便可以,在不影响方差的同时减少偏差,而采用更多数据通常可以在不过多影响偏差的同时减少方差。

这两步实际要做的工作是:训练网络,选择网络或者准备更多数据,现在我们有工具可以做到在减少偏差或方差的同时,不对另一方产生过多不良影响。

我觉得这就是深度学习对监督式学习大有裨益的一个重要原因,也是我们不用太过关注如何平衡偏差和方差的一个重要原因。

但有时我们有很多选择,减少偏差或方差而不增加另一方。最终,我们会得到一个非常规范化的网络。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章