提高深度神经网络性能的一些技巧

深度神经网络的性能提高可主要关注于以下几个方面首先是不同激活函数的性能,其次是神经网络需要包含多少个隐藏层,还有网络设置的迭代次数。
首先,我在此先介绍一下深度神经网络中经常使用的Sigmoid激活函数的局限性:
sigmid激活函数的局限性在于当自变量x增大或者减小时,它的梯度也会变的越来越小,如果优化函数采用梯度下降方法或者说是类似的方法,这就是一个很大的问题,该问题在学术界被称之为梯度消失问题。因为随着梯度的不断减小,将会极大的减缓模型学习的速率。为什么会发生这种情况呢?简而言之,就是sigmoid激活函数将实际的数据值映射到[0,1]相对较小的区间范围,当sigmoid激活函数饱和在1或者0时,这些区域的梯度就会非常之小,几乎为0;
然后,在此我们提出另外一个激活函数—线性整流单元(ReLU):其定义时F(x) = max(0,x),由于它只是一个简单的取最大值的操作,使用线性整流函数的网络比sigmoid函数的网络要快很多,同时,线性整流函数提高了神经网络的稀疏性,因为,当使用ReLU激活函数时,整个网络中的大约一般的神经元都将被设置为0
其次是选择最佳层数的原则以及选择多小个迭代次数的问题,
然后,还有如何避免过度拟合问题,为了降低深度神经网络的复杂度并提高泛化能力的一个常见的网络限制方法就是正则化,正则化限制了模型的复杂性(也就是过度拟合问题)。除非绝对必要,正则化将通过抑制网络权重避免其变得非常大,这通常通过添加衰减参数来惩罚较大的权重来实现。
drop out(辍学的威力):
共适应:
双曲正切激活函数:F(u) = tanh(cu)
如何从小批量的方法中获益:它将在几个训练样本之上一起计算梯度
不平衡样本:准确率取平均准确率,严重失衡的样本可能会导致深度学习模型表现不佳。重新采样数据有助于解决该问题