Einstellung的博客

即使一小步,也愿与你分享

2.1.1 正则化基本介绍

训练/开发、测试集

最好验证集合测试集来自同一分布。

在机器学习中验证集合测试集的含义分别如下:

验证集:对学习出来的模型,调整分类器的参数,如在神经网络中选择隐藏单元数。验证集还用来确定网络结构或者控制模型复杂程度的参数。

测试集:主要是测试训练好的模型的分辨能力(识别率等)

对于深度学习而言,有的时候即使是没有测试集也没有什么关系。测试集的目的是对所选定的网络系统进行无偏估计,如果你不需要无偏估计的话,就可以不用设置测试集。这样我们就需要用训练集来训练处模型让步用验证集来评这些模型,然后不断调整和改进参数,迭代这个过程就可以了。

偏差/方差

如果一个数据在训练集中拟合的不够好,我们就称为它是欠拟合,这种情况下训练结果的 偏差(bias) 比较高。

如果数据在测试集而表现效果不够好,我们就称训练结果的 方差(variance) 比较高

不过,我们上面所说的情况都是基于基本误差很小,而且数据集和测试集都是来自同一分布的假设前提之下。其他更复杂的情况,我们会在稍后进一步说。

正则化

如果你觉得神经网络过度拟合了数据,也就是存在高方差(variance) 的情况,那么你最先想想到的解决办法可能是正则化。另一个解决高方差的情况就是准备更多数据,这也是一个不错的解决办法。但不是什么情况下你都可能获取到足够的大范围数据,因此无论在什么情况下正则化都是一个不错的解决办法,下面我们来介绍一下正则化。

这里写图片描述

如图所示,在逻辑回归中加入正则化只需要加入正则化参数λ,图的上面所使用的正则化称为L2正则化。

为什么我在正则化的时候只加上了w而不加上b呢?

因为w通常是一个高维参数矢量,已经可以表达高方差(variance)问题了,W可能含有很多参数,我们不可能拟合所有的参数。而b只是一个数字,因此加入b可有可无,影响不大,所以我们通常就不加人b。

当然,你可能还听过L1正则化,使用L1正则化的时候,w通常是稀疏的,也就是w向量里面有很多的0。人们在训练模型的时候通常都更倾向于使用L2正则化,L1使用的比较少。

最后需要注意的是:lambda是python中的一个保留字段,因此我们在编程的时候使用lambd来代替lambda

在神经网络中有一个成本函数J,他等于损失函数L/m。如图所示

这里写图片描述

这里的w使用Forbenius范数来定义,他等于矩阵中所有元素的平方和。

那么我们该如何实现梯度下降呢?

和之前更新dw的算法类似的,我们对J的后面新加的和w有关的项也去计算偏导数。

有的时候我们也称此时的w为权重衰减。在图片的最底端的式子中我们可以看出,不论w是什么数,我们都在尝试让他变得更小。实际上相当于我们给矩阵乘以了1αλm倍的权重。

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

这里写图片描述

如图所示,我们通过添加正则项来避免数据的权值过大。当正则化的λ足够大的时候,最后隐藏层的w值会趋近于0。这样,就会减少过拟合现象的发生了。但他并不是会简单到像左下图的逻辑回归函数一样简单,实际上,虽然w的参数影响很小,但他还是有一定的影响,因此最后的结果会更像是中间的那个比较良好的效果。

这里写图片描述

我们再来直观的理解一下,如图所示,如果w的值很小的话,那么就集中在tanh函数中比较线性的一段。z=wx+b,那么z的数值也会变得比较小,整个神经网络就会变得更加线性,很容易就降低过拟合的现象了。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Einstellung/article/details/79958976
个人分类: 深度学习
上一篇练习:Planar data classification with a hidden layer
下一篇2.1.2 Dropout正则化以及其他正则化
想对作者说点什么? 我来说一句

jQuery 2.1.1 官方正式版

2015年03月07日 489KB 下载

vmware unlocker-2.1.1安装MacOs

2017年11月08日 15.45MB 下载

基于正则化方法的SAR图像分割

2011年03月05日 332KB 下载

正则化matlab工具包

2015年04月23日 85KB 下载

没有更多推荐了,返回首页

关闭
关闭