深度学习笔记:1.4 正则化 & 1.5 为什么正则化可以减少过拟合

1.4 正则化 

考虑对LR加正则化,我们可以加L1 norm和L2 norm,如下图所示:

图来自于吴恩达老师深度学习课程PPT

如图所示,我们在cost function上对W添加了正则化(这里不考虑b,假设已经对数据进行了标准化处理)。一范数是指W所有分量(所有系数)的绝对值之和,二范数是指W所有分量的平方和开方,所以二范数的平方为W所有分量的平方和,即W的内积。

根据对目标函数的观察,注意到我们的目标是求目标函数J的最小值,但是加上正则化(惩罚项)之后,我们要优化的目标函数值变大了,因为L1(lasso)、L2(ridge)正则化结果都是正数,所以为了实现我们求最小值的目标,我们会希望惩罚参数lambda(lambda的取值为非负数)能够使一部分的变量值变小或直接为0,其实这也正是一范数和二范数的效果。

一范数和二范数对变量的压缩效果都由惩罚参数lambda决定,lambda越大,变量压缩越明显,当lambda大到一定程度时,对于一范数,正则化可以使所有变量压缩至0;lambda越小,变量压缩越不明显,比如lambda取0时,相当于没有进行正则化。lambda的值需要通过交叉验证来判断。这里啰嗦一点,因为lambda在python中属于保留字段,所以对lambda我们一般写作lambd。

一范数和二范数对变量的压缩效果是不一样的。一范数和二范数的数学形式决定了他们的压缩效果,比如一范数能够使一些取值极小的权重值直接为0,使变量变成稀疏的,只保留那些重要的变量,所以一范数有筛选变量的作用,而二范数不会使这些变量值为0,它只会使变量值变小。那一范数就完全优于二范数吗?其实不是的,一范数无法很好处理多重共线性的问题,如果两个重要变量具有高度相关性,那么使用一范数(lasso)无法完全保留两者,或无法公平均匀保留两者,但二范数对于这种问题可以免疫,且会将值均匀分配给这两个重要变量。所以有的时候我们可以同时使用一范数和二范数,在二者之间做一个比例的调整,这就是弹性网(elastic net)。

上述是对LR加正则化,对NN该怎么加呢?

我们在这里使用二范数。不同于LR的W是向量,NN每一层的W都是一个矩阵,所以对于矩阵使用二范数,我们在范数下标处加一个F,表示是Frobenius范数,它的平方表示求矩阵中的所有元素的平方和。

在反向传播中,我们简单记由反向传播得到的W梯度为from backprop,而加上Frobenius范数正则化之后的梯度如上图绿框所示,将梯度带入W的更新迭代式并化简,我们可以得到最后一行的式子,发现加上正则化之后,W前的系数由1变为(1-alpha*lambda/m),即加上正则化之后,W前系数小于1,这种现象我们称之为‘weight decay’。

1.5 为什么正则化可以减少过拟合

我们可以从两个方向去理解为什么正则化可以减少过拟合。

首先,如下图所示:

随着lambda取值的增大,惩罚项的值自然变大,而我们想要求J的最小值,不能让J的值因为惩罚项而无限变大,所以这时足够大的lambda值能够使矩阵W中一些因素变小。而当lambda非常大时,W矩阵变得非常稀疏,极端情况下我们可以认为W矩阵近似为0矩阵(大多数系数值接近0),这时神经网络的结构如左上图所示,隐藏层元素权重变小,模型显然变得简单,这时模型就由最右边的high variance情况朝最左边的high bias情况慢慢转变,转变程度需通过调lambda控制,中间just right情况才是我们想要的。

简单介绍一下上图中最下面的三个图的形成原因。high bias我们知道,是指高偏差,怎么样会形成这种情况呢?当模型太简单的时候,模型简单的还不足够提炼出数据中所有信息,这时候虽然方差小,但是模型偏差很大,也称欠拟合(underfitting)。

high variance是指高方差,这是因为模型太复杂而产生的,从图中曲线轨迹我们也可以发现,相比于high bias的模型复杂了很多,模型的边界非常不平滑,这是因为模型学习了训练集太多信息,可能将一些冗余的信息也学习了,导致模型方差太大,泛化能力低,也称过拟合(overfitting)。

而介于high bias和high variance之间的just right情况是我们恰恰需要的。从图中可以看到学习的模型相比于high bias稍稍复杂一些,而相比于high variance边界又平滑一些。这时学习到的模型既充分学习到了训练集数据中的信息,也没有过度地将冗余信息学习,泛化能力也强,正是我们想要的模型。

接着,我们从另一个方向考虑正则化作用,如下图:

假设我们使用的激活函数(activation function)是tanh,如上图所示。依上文分析,随着lambda增大,W的元素取值(绝对值)会变小,那么直观理解,Z的取值也会变小,那么Z的取值范围也许仅限于tanh函数画红线部分,而tanh的红线部分可近似看作是线性(linear)的。而我们知道,如果激活函数是线性的,那么整个神经网络可以看作是一个线性模型,模型由复杂变得简单了。这就是为什么正则化可以减少过拟合,因为它让模型变简单了。

 

 

版权声明:尊重博主原创文章,转载请注明出处https://blog.csdn.net/kkkkkiko/article/details/81162098

猜你喜欢

转载自blog.csdn.net/kkkkkiko/article/details/81162098
今日推荐