《深度学习入门》第6章:与学习相关的技巧


前言

笔者最近阅读了《深度学习入门——基于Python的理论与实现》这本书的第六章,这一章主要讲述了深度学习相关的技巧,包括权重参数最优化方法、寻找权重参数的初始值等等。下面,笔者将对书上的内容进行简要梳理。


一、参数的更新

最优化(optimization):寻找最优参数的过程被称作“最优化”,目的是找到使得损失函数的值尽可能小的参数。
关于参数的更新,主要有以下几种方法:SGD随机梯度下降、Momentum、AdaGrad、Adam。具体可见这篇博文:博文传送门

二、权重的初始值

在神经网络的学习中,权重的初始值非常重要。那么,权重的初始值该怎么选择比较好?直接上总结。

当激活函数使用ReLU的时候,权重初始值使用He初始值。
当激活函数使用sigmoid或者tanh等S型曲线函数的时候,权重初始值使用Xavier初始值。

补充两个概念,梯度消失和梯度爆炸。
梯度消失:在梯度下降中, 随着算法反向的反馈, 梯度会越来越小,最终没有变化,此时并没有收敛到比好的解,这就是梯度消失的问题。
梯度爆炸:梯度爆炸原理跟梯度消失一样,反向传播时,导数大于1,导致梯度增加。

三、Batch Normalization

在实际运用中,如果各层的激活值分布有适当的广度,那么就更有可能进行顺利地学习。为了使得各层拥有适当的广度,“强制性”地调整激活值的分布,这就是Batch Normalization产生的基础。

Batch Normalization的思路是调整各层的激活值分布使其拥有适当的广度。为此,要向神经网络中插入对数据分布进行正规化的层,即下图中的Batch Norm层。

Batch Normalization的具体含义和计算方法在下图中也有介绍。使用Batch Norm层之后,学习的速度明显变快了。
在这里插入图片描述
在这里插入图片描述

四、正则化

过拟合:指的是模型只能拟合训练数据,但不能很好地拟合其他数据。也就是说,模型的泛化能力太差。

发生过拟合的原因,主要可以归结于以下两点:
①模型拥有大量参数,表现力强
②训练数据少

抑制过拟合的方法主要有以下两种:
①权值衰减
该方法通过在学习的过程中对大的权重进行惩罚,来抑制过拟合。比如:为损失函数加上权重的平方范数(L2范数)。
②dropout
dropout是一种在学习的过程中随机删除神经元的方法。训练的时候,随机选出隐藏层的神经元,然后将其删除。

五、超参数的验证

超参数指的是各层的神经元数量、batch大小、学习率等等。如果这些超参数没有设置合适的值,模型的性能就会很差。虽然超参数的取值非常重要,但是在决定超参数的过程中,一般会伴随很多的试错。

注意,调整超参数的时候,不能用测试数据进行调整。如果用测试数据,就会导致超参数的值对测试数据发生过拟合,从而导致模型的泛化能力较差。因此,调整超参数的时候,必须使用超参数专用的确认数据。用于调整超参数的数据,一般被称为验证数据(validation data)。

超参数的最优化遵循以下4个步骤:
①设定超参数的范围。(设定一个大致的范围就好,像0.001到1000这样)
②从设定的超参数范围中随机采样。
③使用步骤②中采样到的超参数的值进行学习,通过验证数据评估识别精度(但是要将epoch设置得很小)。
④重复步骤②、步骤③(100次等),根据它们的识别精度的结果,缩小超参数的范围

猜你喜欢

转载自blog.csdn.net/rellvera/article/details/128044598