TensorFlow实战之Trick

困难

神经网络中的隐层极大的提升了神经网络的表达能力,理论上只要隐层的节点足够多,即使只有一个隐含层的神经网络也可以拟合任意函数,隐层越多就越容易拟合复杂函数。使用层数较深的神经网络会遇到许多困难,比如:容易过拟合、参数难以调试、梯度弥漫等,针对这些问题有很多trick解决。

过拟合

过拟合是机器学习的一个常见问题,它是指模型预测准确率在训练集上升高了,在测试集上反而下降了。这通常是因为模型的泛化性不好,只记忆了当前数据的特征,不具备推广能力。
1.Dropout是解决过拟合问题的一种简单有效的方法,它的大致思路是在训练时,将神经网络的某一层的输出节点数据随机丢弃一部分。我们可以理解成每次丢弃节点是对特征的一种采样,这种方法相当于随机创造了很多新的样本,通过增大样本量,减少特征数量来防止过拟合。
2.权值衰减 。在每次迭代过程中以某个小因子降低每个权值,这等效于修改E的定义,加入一个与网络权值的总量相应的惩罚项,此方法的动机是保持权值较小,避免weight decay,从而使学习过程向着复杂决策面的反方向偏。
3.使用正则。通过把每层的正则加到最终的损失函数里,使得更多的参数为零,简化模型。
4.数据增强。在图像识别领域,可以通过颜色,PCA,尺度,剪裁缩小,旋转平移,仿射变换,加噪声,类别不平衡等扩大标注样本集。模型大,数据少,可能导致过拟合,通过增强数据,可以解决样本少的问题。
5.Cross-validation with some patterns。交叉验证方法,k-fold交叉方法。
6.提早结束训练(early stopping)。在梯度下降过程中,有时候会遇到,训练集的代价函数或者准确率随迭代轮次单调递减,到了验证集代价函数会先下降后上升,这时候就需要提早结束。出现这种情况,往往是因为越往后,参数w越来越大,出现过拟合。使用正则一般不会出现这种情况,但使用正则的话,参数λ的搜索空间比较大,所以有时候为了时间减少,可以在不使用正则的情况下,在不同的迭代轮次结束训练,选择较小的一组w。

参数难以调试

神经网络通常不是一个凸优化的问题,充满了局部最优,当然我们也不期望能够达到全局最优,就像每个人对这个世界的认知都是局部的,但是也妨碍在绝大多数情况下做出正确的判断。不同机器学习问题的参数需要反复调试设置,非常繁琐,尤其是SGD的参数,对SGD设置不同的学习速率,最后得到的结果可能差异巨大,因为不同的学习速率可能导致神经网络落入截然不同的局部最优之中。因此,有很多像Adagradm,Adam,Adadelta等自适应的方法可以减轻调试参数的压力,对于这些优化算法,通常我们使用它们默认的参数就可取得较好的结果。

梯度弥散

解决办法:sigmoid,ReLU,BN等。在ReLU激活函数出现之前,都是采用Sigmoid激活函数的。但是当网络层数较多时,Sigmoid函数在反向传播中梯度值会逐渐减小,经过多层的传递后会呈指数级急剧减小。
ReLU能够完美地解决梯度弥散问题,它是一个非常简单的非线性函数y=max(0,x),经过多层的反向传播,梯度依旧不会大幅减小,该函数从正面解决了梯度弥散的问题,而不需要通过无监督的逐层训练初始化权重来绕行。
ReLU相比于Sigmoid函数的主要变化有如下3点:
(1)单侧抑制
(2)相对宽阔的兴奋边界
(3)稀疏激活性
BN:在每次SGD时,通过mini-batch来对相应的activation做规范化操作,使得结果(输出信号各个维度)的均值为0,方差为1. 而最后的“scale and shift”操作则是为了让因训练所需而“刻意”加入的BN能够有可能还原最初的输入,从而保证整个network的capacity。 BN可以应用于网络中任意的activation set。文中还特别指出在CNN中,BN应作用在非线性映射前,即对x=Wu+b做规范化。在BN中,通过将activation规范为均值和方差一致的手段使得原本会减小的activation的scale变大。可以说是一种更有效的local response normalization方法。
机器学习中我们可以对超参数进行手动设定并不断试错。
第一,学习率(LR)越大,训练时间越短,速度越快,LR越小,训练准确度越高,我们可以设置可变的学习率,在训练过程中记录最佳准确率,在连续n轮没达到最佳准确率时,便认为不再提高停止训练(early stopping),此时,让LR减半,第二次LR不变时再减半,从而提高准确度。
第二,mini-batch大小决定了权重的更新规则,例如,在做年龄性别检测实验中,第一次训练大小为32,就是把32个样本的梯度全部计算完,然后求平均值,去更新权重。批次越大训练的速度越快,可以利用矩阵、线性代数库来加速,但是权重更新频率略低,批次越小训练的速度越慢,可自行结合机器的硬件性能以及数据大小来设定。
第三,正则项系数。当网络出现过拟合增加此项,初设为0,确定好的LR后根据准确率进行精细调整。
调参推荐:https://www.zhihu.com/question/25097993

猜你喜欢

转载自blog.csdn.net/qq_20657717/article/details/82150384