神经网络中的难点及解决方案
来源:互联网 发布:云计算和软件工程区别 编辑:程序博客网 时间: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)稀疏激活性
阅读全文
0 0
- 神经网络中的难点及解决方案
- Javascript单元测试现状、难点及解决方案
- 异步编程优势难点及解决方案
- 深度神经网络中的训练难点(vanishing gradient problem)
- 估值:难点、解决方案及相关案例(原书第2版)
- 项目难点一解决方案
- C6203B DSP系统中用FPGA实现UART的技术难点及解决方案
- CRM设计中的难点
- C指针中的难点
- pandas使用中的难点
- 符合1-2年工作经验,开发中的难点及相关优化:
- 符合1-2年android工作经验,开发中的难点及相关优化
- SOCkET编程 难点及要点
- SOCkET编程 难点及要点
- SOCkET编程 难点及要点
- SOCkET编程 难点及要点
- SOCkET编程 难点及要点
- SOCkET编程 难点及要点
- 数据库中截取字符串的简单方法
- this与Thread.currentThread
- 关于双向回呼系统
- HDU 1754(线段树,单点覆盖 询问区间最值)
- 爬虫requests对post的使用方法
- 神经网络中的难点及解决方案
- 【模板】【数据结构】并查集(路径压缩+按秩合并)
- 单链表的操作集合
- php文件上传
- MySQL 查询所有表名
- python入门(十八):os模块
- Redhat修改主机名
- Android中getX()和getRawX()坐标的区别
- “NetSarang的Xmanager和Xshell多种产品被植入后门事件”分析报告