第二门课 改善深层神经网络:超参数调试、 正 则 化 以 及 优 化

第一周:深度学习的 实践层面 (Practical aspects of Deep Learning)

 

1.1 训练,验证,测试集(Train / Dev / Test sets)

在配置训练、验证和测试数据集的过程中做出正确决策会在很大程度上帮助大家创建高效的神经网络。训练神经网络时,我们需要做出很多决策,例如: 神经网络分多少层;每层含有多少个隐藏单元;学习速率是多少;各层采用哪些**函数。
 

第二门课 改善深层神经网络:超参数调试、 正 则 化 以 及 优 化

1.2 偏差,方差(Bias /Variance)

 

几乎所有机器学习从业人员都期望深刻理解偏差和方差,这两个概念易学难精
另一个趋势是对偏差和方差的权衡研究甚浅,你可能听说过这两个概念,但深度学习的误差很少权衡二者,我们总是分别考虑偏差和方差,却很少谈及偏差 和方差的权衡问题,下面我们来一探究竟。

第二门课 改善深层神经网络:超参数调试、 正 则 化 以 及 优 化

假设这就是数据集,如果给这个数据集拟合一条直线,可能得到一个逻辑回归拟合,但它并不能很好地拟合该数据,这是高偏差(high bias)的情况,我们称为欠拟合(” underfitting)。 相反的如果我们拟合一个非常复杂的分类器,比如深度神经网络或含有隐藏单元的神经网络,可能就非常适用于这个数据集,但是这看起来也不是一种很好的拟合方式分类器方差 较高(high variance),数据过度拟合(overfitting)。
在两者之间,可能还有一些像图中这样的,复杂程度适中,数据拟合适度的分类器,这个数据拟合看起来更加合理,我们称之为“适度拟合just right)是介于过度拟合和欠拟合中间的一类。
第二门课 改善深层神经网络:超参数调试、 正 则 化 以 及 优 化

 

在这样一个只有????1????2两个特征的二维数据集中,我们可以绘制数据,将偏差和方差可视化。在多维空间数据中,绘制数据和可视化分割边界无法实现,但我们可以通过几个指标,来研究偏差和方差

 

第二门课 改善深层神经网络:超参数调试、 正 则 化 以 及 优 化

       假定训练集误差是 1%,为了方便论证,假定验证集误差是 11%,可以看出训练集设置得非常好,而验证集设置相对较差,我们可能过度拟合了训练集,在某种程度上,验证集并 没有充分利用交叉验证集的作用,像这种情况,我们称之为“高方差
       假设训练集误差是 15%,我们把训练集误差写在首行,验证集误差是 16%,假设该案例中人的错误率几乎为 0%,人们浏览这些图片,分辨出是不是猫。算法并没有在训练集中得到很好训练,如果训练数据的拟合度不高,就是数据欠拟合,就可以说这种算法偏差比较高。
       再举一个例子,训练集误差是 15%,偏差相当高,但是,验证集的评估结果更糟糕,错误率达到 30%,在这种情况下,我会认为这种算法偏差高,因为它在训练集上结果不理想,
而且方差也很高,这是方差偏差都很糟糕的情况。 再看最后一个例子,训练集误差是 0.5%,验证集误差是 1%,用户看到这样的结果会很 开心,猫咪分类器只有 1%的错误率,偏差和方差都很低。
 
我们之前讲过,这样的分类器,会产生高偏差,因为它的数据拟合度低,像这种接近线 性的分类器,数据拟合度低。
 
第二门课 改善深层神经网络:超参数调试、 正 则 化 以 及 优 化
 
但是如果我们稍微改变一下分类器,我用紫色笔画出,它会过度拟合部分数据,用紫色线画出的分类器具有高偏差和高方差,偏差高是因为它几乎是一条线性分类器,并未拟合数据。
 
第二门课 改善深层神经网络:超参数调试、 正 则 化 以 及 优 化
这种二次曲线能够很好地拟合数据。
 
第二门课 改善深层神经网络:超参数调试、 正 则 化 以 及 优 化
这条曲线中间部分灵活性非常高,却过度拟合了这两个样本,这类分类器偏差很高,因为它几乎是线性的。
 
 
 
第二门课 改善深层神经网络:超参数调试、 正 则 化 以 及 优 化
而采用曲线函数或二次元函数会产生高方差,因为它曲线灵活性太高以致拟合了这两个错误样本和中间这些活跃数据。
 
我们讲了如何通过分析在训练集上训练算法产生的误差和验证集上验证算法产生的误差来诊断算法是否存在高偏差和高方差,是否两个值都高,或者两个值都不高,根 据法偏差和方差的具体情况决定接下来你要做的工作,下节课,我会根据算法偏差和方差
的高低情况讲解一些机器学习的基本方法,帮助大家更系统地优化算法
 
 

1.3 机器学习基础(Basic Recipe for Machine Learning)

下图就是我在训练神经网络用到的基本方法:(尝试这些方法,可能有用,可能没用)
 
第二门课 改善深层神经网络:超参数调试、 正 则 化 以 及 优 化
有两点需要大家注意:
        第一点,高偏差和高方差是两种不同的情况,我们后续要尝试的方法也可能完全不同, 我通常会用训练验证集来诊断算法是否存在偏差或方差问题,然后根据结果选择尝试部分方法。举个例子,如果算法存在高偏差问题,准备更多训练数据其实也没什么用处,至少这不是更有效的方法,所以大家要清楚存在的问题是偏差还是方差,还是两者都有问题,明确这 一点有助于我们选择出最有效的方法。
        第二点,在机器学习的初期阶段,关于所谓的偏差方差权衡的讨论屡见不鲜,原因是我
们能尝试的方法有很多。可以增加偏差,减少方差,也可以减少偏差,增加方差,但是在深 度学习的早期阶段,我们没有太多工具可以做到只减少偏差或方差却不影响到另一方。但在 当前的深度学习和大数据时代,只要持续训练一个更大的网络,只要准备了更多数据,那么 也并非只有这两种情况,我们假定是这样,那么,只要正则适度,通常构建一个更大的网络
便可以,在不影响方差的同时减少偏差,而采用更多数据通常可以在不过多影响偏差的同时 减少方差。这两步实际要做的工作是:训练网络,选择网络或者准备更多数据,现在我们有 工具可以做到在减少偏差或方差的同时,不对另一方产生过多不良影响。我觉得这就是深度 学习对监督式学习大有裨益的一个重要原因,也是我们不用太过关注如何平衡偏差和方差的
一个重要原因,但有时我们有很多选择,减少偏差或方差而不增加另一方。最终,我们会得 到一个非常规范化的网络。从下节课开始,我们将讲解正则化,训练一个更大的网络几乎没 有任何负面影响,而训练一个大型神经网络的主要代价也只是计算时间,前提是网络是比较 规范化的
 
 
我在课上不止一次提到了正则化,它是一种非常 实用的减少方差的方法,正则化时会出现偏差方差权衡问题,偏差可能略有增加,如果网络足够大,增幅通常不会太高,我们下节课让大家更好理解如何实现神经网络的正则化。
 

1.4 正则化(Regularization)

深度学习可能存在过拟合问题——高方差,有两个解决方法,一个是正则化,另一个是 准备更多的数据,这是非常可靠的方法,但你可能无法时时刻刻准备足够多的训练数据或者 获取更多数据的成本很高,但正则化通常有助于避免过拟合或减少你的网络误差。