神经网络中的难点及解决方案

来源:互联网 发布:云计算和软件工程区别 编辑:程序博客网 时间:2024/06/14 01:44

1 神经网络的难点

使用层数较深的神经网络会遇到许多困难,比如:容易过拟合、参数难以调试、梯度弥漫等,针对这些问题有很多trick解决。

2 过拟合

过拟合是机器学习中经常遇到的问题,它是指模型预测准确率在训练集上升高,但是在测试集上反而下降了,这意味着泛化性不好,模型只是记忆了当前数据的特征,不具备推广能力。
Hinton教授团队提出了一个思路简单但非常有效的方法:Dropout。其思路为:在训练时,将神经网络某一层的输出节点数据随机丢弃一部分,这样做法的实质等于创造出了很多新的随机样本,通过增大样本量、减少特征数量来防止过拟合。
PS:在测试时,不要Dropout。

3 参数难以调试

尤其是SGD的参数,对SGD设置不同的学习速率,最后得到的结果可能差异巨大,因为不同的学习速率可能导致神经网络落入截然不同的局部最优之中。
因此,有很多像Adagradm,Adam,Adadelta等(这些调优函数请参见博文 

深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)

)自适应的方法可以减轻调试参数的压力,对于这些优化算法,通常我们使用它们默认的参数就可取得较好的结果。

4  梯度弥散

在ReLU激活函数出现之前,都是采用Sigmoid激活函数的。但是当网络层数较多时,Sigmoid函数在反向传播中梯度值会逐渐减小,经过多层的传递后会呈指数级急剧减小。
ReLU能够完美地解决梯度弥散问题,它是一个非常简单的非线性函数y=max(0,x),经过多层的反向传播,梯度依旧不会大幅减小,该函数从正面解决了梯度弥散的问题,而不需要通过无监督的逐层训练初始化权重来绕行。
ReLU相比于Sigmoid函数的主要变化有如下3点:
(1)单侧抑制
(2)相对宽阔的兴奋边界
(3)稀疏激活性
原创粉丝点击