@songying
2019-03-26T22:09:22.000000Z
字数 1617
阅读 2583
deep-learning
对于sigmoid ,来说,当x很大或很小时,其导数都趋近于0。 而tanh在x很大或很小时,其导数也都趋近于0.
实际上,Tanh相当于sigmoid的平移:
优点:
- 从计算的角度,Sigmoid 和 tanh 激活函数均需要计算指数,复杂度高,而Relu 只需要一个阈值就可得到激活值。
- Relu 的非饱和性可以有效的解决梯度消失问题,提供相对宽的激活边界
- Relu 的单侧抑制提供了网络的稀疏表达能力
局限性:
- Dead Relu问题。 这是由于Relu在 x<0 时导数为0,且在之后也不能被任何数据激活,即刘静该神经元的梯度永远为0,不对任何数据产生响应。
- 实际训练中,如果学习率设置过大,会导致超过一定比例的神经元不可逆死亡,进而参数梯度无法更新,整个训练过程失败。
- LRelu 解决了Dead Relu问题, 但是a的选择增加了问题难度,需要较强的人工先验或多次重复训练以确定合适的参数值。
- PRelu 与LRelu的主要区别在于将负轴部分斜率a作为网络中一个可学习的参数
- RRelu 增加了随机化机制,在训练过程中,a作为一个满足某种分布的随机采样;测试时再固定下来。 其在一定程度上能起到正则化的作用。
过拟合解决办法: 数据增强,正则化,集成学习, Dropout, Batch Normalization 。
不行。 考虑全连接的深度神经网络, 同一层中的任意神经元都是同构的,它们拥有相同的输入和输出,如果再将参数全部初始化为同样的值,那么无论前向传播还是反向传播的取值都是完全相同的。学习过程将永远无法打破这种对称性,最终同一网络层中的各个参数仍然是相同的。
对于包含 N 个神经元节点的网络,在Dropout 的作用下可看作为 个模型的集成。这 个模型可认为是原始网络的子网络, 它们共享部分权值,并且具有相同的网络层数,而模型整体的参数数目不变,这就大大简化了运算。
对于任意神经元,每次训练中都与一组随机挑选的不同的神经元集合共同进行优化,这个过程会减弱全体神经元之间的联合适应性, 减少过拟合的风险,增强泛化能力。
使用Dropout 包括训练, 预测两个阶段。 训练阶段中,每个神经元节点都有一个概率系数。 在测试阶段中,需要取消Dropout过程。
是针对每一批数据, 在网络的每一层输入之前增加归一化处理(均值为0 ,标准差为1)
随着网络训练的进行, 每个隐层的参数变化使得后一层的输入发生变化,从而每一批训练数据的分布也随之改变,致使网络在每次迭代中都需要拟合不同的数据分布,增大训练的复杂度以及过拟合的风险。