【吴恩达深度学习】— 参数、超参数、正则化

32.jpg

1.参数 VS 超参数

1.1 什么是超参数(Hyperparameters )?

比如算法中的 learning rate(学习率)、 iterations(梯度下降法循环的数量)、L(隐藏层数目)、(隐藏层单元数目)、 choice of activation function(激活函数的选择)都需要你来设置,这些数字实际上控制了最后的参数Wb的值,所以它们被称作超参数。

实际上深度学习有很多不同的超参数,之后我们也会介绍一些其他的超参数,如momentum、 mini batch size、 regularization parameters 等等。

1.2 如何寻找超参数的最优值?

今天的深度学习应用领域,还是很经验性的过程,通常你有个想法,比如你可能大致知道一个最好的学习率值,可能说= 0.01最好,我会想先试试看,然后你可以实际试一下,训练一下看看效果如何。然后基于尝试的结果你会发现,你觉得学习率设定再提高到 0.05 会比较好。如果你不确定什么值是最好的,你大可以先试试一个学习率,再看看损失函数J的值有没有下降。

这可能的确是深度学习比较让人不满的一部分,也就是你必须尝试很多次不同可能性。

2.神经网络中的正则化

在深度学习神经网络中,除了传统的L2正则化,还有Dropout正则化方式,正则化的目的在于降低模型的过拟合程度,除了常用的这两种方式,降低过拟合程度还可以采用数据扩增和early stopping的方式。

2.1 L2正则化

在之前的机器学习第三周的文章中,我们介绍了线性回归和逻辑回归中的正则化,这种正则化方式称为:L2正则化https://zhuanlan.zhihu.com/p/73404297

2.2 Dropout正则化

在深度学习模型中,由于引入了神经元,故正则化的方式也有新的方式,我们可以采用Dropout正则化(Dropout Regularization),Dropout当然不能翻译为辍学,其意思为随机失活,即对神经网络中的神经元做随机失活处理。

1.png

假设你在训练上图这样的神经网络,它存在过拟合,这就是 dropout 所要处理的,我们复制这个神经网络, dropout 会遍历网络的每一层,并设置消除神经网络中节点的概率。假设网络中的每一层,每个节点都以抛硬币的方式设置概率,每个节点得以保留和消除的概率都是 0.5,设置完节点概率,我们会消除一些节点,然后删除掉从该节点进出的连线,最后得到一个节点更少,规模更小的网络,然后用 backprop 方法进行训练。

4.png
5.png

这是网络节点精简后的一个样本,对于其它样本,我们照旧以抛硬币的方式设置概率,保留一类节点集合,删除其它类型的节点集合。对于每个训练样本,我们都将采用一个精简后神经网络来训练它,这种方法似乎有点怪,单纯遍历节点,编码也是随机的,可它真的有效。

简单来说,dropout正则化不仅可以精简网络,加速训练,还可以防止过拟合。dropout如何实施?方法有很多,常用的有inverted dropout,具体内容参考视频:https://mooc.study.163.com/learn/2001281003?tid=2001391036

2.3 数据扩增

假设你正在拟合猫咪图片分类器,如果你想通过扩增训练数据来解决过拟合,但扩增数据代价高,而且有时候我们无法扩增数据,但我们可以通过添加这类图片来增加训练集。例如,水平翻转图片,并把它添加到训练集。所以现在训练集中有原图,还有翻转后的这张图片,所以通过水平翻转图片,训练集则可以增大一倍,因为训练集有冗余,这虽然不如我们额外收集一组新图片那么好,但这样做节省了获取更多猫咪图片的花费。

2.png

除了水平翻转图片,你也可以随意裁剪图片,这张图是把原图旋转并随意放大后裁剪的,仍能辨别出图片中的猫咪。通过随意翻转和裁剪图片,我们可以增大数据集,额外生成假训练数据。和全新的,独立的猫咪图片数据相比,这些额外的假的数据无法包含像全新数据那么多的信息,但我们这么做基本没有花费,代价几乎为零,除了一些对抗性代价。以这种方式扩增算法数据,进而正则化数据集,减少过拟合比较廉价。

像这样人工合成数据的话,我们要通过算法验证,图片中的猫经过水平翻转之后依然是猫。大家注意,我并没有垂直翻转,因为我们不想上下颠倒图片,也可以随机选取放大后的部分图片,猫可能还在上面。
对于光学字符识别,我们还可以通过添加数字,随意旋转或扭曲数字来扩增数据,把这些数字添加到训练集,它们仍然是数字。为了方便说明,我对字符做了强变形处理,所以数字 4 看起来是波形的,其实不用对数字 4 做这么夸张的扭曲,只要轻微的变形就好,我做成这样是为了让大家看的更清楚。实际操作的时候,我们通常对字符做更轻微的变形处理。因为这几个 4 看起来有点扭曲。所以,数据扩增可作为正则化方法使用,实际功能上也与正则化相似。

2.4 early stopping

early stopping顾名思义,就是及早停止的意思,意味着在训练神经网络模型中及早的停止训练。那么在哪里停止?为什么要停止?

因为在训练过程中,我们希望训练误差,损失函数越来越小,我们可以绘制训练误差或损失函数J和迭代次数的关系曲线,同时,我们也可以用验证集来绘制同样的曲线,通常验证集的误差却会经历先下降后上升的过程,于是这个最低点就是我们需要停止训练的点。

为什么 ?因为我们的目标是防止模型过拟合,为了在一个合适的地方停止模型,防止过拟合,我们用,即弗罗贝尼乌斯范数来表示,w即参数矩阵,在模型训练开始时由于是随机初始化,故最小,随着模型训练,越大,我们需要在取一个中间值,即在下图紫色线段上的最低点,此时我们停止模型训练,这个点的处于中间值,即不过大也不过小,模型过拟合程度较低。

3.png

优点:

Early stopping 的优点是,只运行一次梯度下降,你可以找出w的较小值中间值和较大值,而无需尝试L2正则化超级参数λ的很多值。节约了模型训练的时间。

缺点:

及早停止了训练,可能过拟合程度降低了,但是模型的损失J并没有降低到最小,即模型并未达到全局最优。

你可能感兴趣的:(【吴恩达深度学习】— 参数、超参数、正则化)