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