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的早期阶段,我们没有太多工具可以做到只减少偏差或方差却不影响到另一方。
但在当前的深度学习和大数据时代,只要持续训练一个更大的网络(解决偏差),只要准备了更多数据(解决方差),那么也并非只有这两种情况。只要正则适度,通常构建一个更大的网络便可以,在不影响方差的同时减少偏差,而采用更多数据通常可以在不过多影响偏差的同时减少方差。
这两步实际要做的工作是:训练网络,选择网络或者准备更多数据,现在我们有工具可以做到在减少偏差或方差的同时,不对另一方产生过多不良影响。
我觉得这就是深度学习对监督式学习大有裨益的一个重要原因,也是我们不用太过关注如何平衡偏差和方差的一个重要原因。
但有时我们有很多选择,减少偏差或方差而不增加另一方。最终,我们会得到一个非常规范化的网络。