机器学习-tips for DNN

本文介绍了在深度学习中遇到的训练与测试结果不一致问题,探讨了过度拟合和激活函数的选择。针对训练不佳的情况,建议调整激活函数,如从sigmoid、tanh到ReLU及其变种,以应对梯度消失问题。同时,提到了Maxout神经网络和优化算法如RMSProp、动量法以及Adam,这些方法能有效改善神经网络的训练过程。
摘要由CSDN通过智能技术生成

1.
在training之后,如果发现training结果不太好,那么就应该回头看那三步,看修改哪一步
在这里插入图片描述
2.

如果在training结果上比较好,但是在testing上结果不好,那就overfitting了。也要回去修改前三步。

3.
在这里插入图片描述
上图,横轴是training次数。
看到testing error,56层比20层error大,但是这不是overfitting,因为我们看到training error中,56层已经比20层差了。
56层比20 层是可能的,因为不一定总能层数多而得到更好的效果。

所以,不一定是overfitting!!!

4.Dropout
在这里插入图片描述
但是使用这个需要在training上结果还可以,再来用来改善testing。

5.在training上结果不好的tips
(1)改变activation function(激活函数)
在这里插入图片描述
就像上图,training上的结果在layer>8之后就很差了

下面来比较各种激活函数
activation function 是inputs加权求和之后的作用function。

a.为什么要使用激活函数activation function?
引入非线性function,使得神经网络应用到非线性问题模型中。

b.sigmoid function

sigmoid 函数也叫logistic函数,取值范围为(0,1)
在这里插入图片描述
其导数如下:
在这里插入图片描述
在特征相差比较复杂或是相差不是特别大时效果比较好。

sigmoid缺点:
激活函数计算量大,反向传播求误差梯度时,求导涉及除法
反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练
Sigmoids函数饱和且kill掉梯度。
Sigmoids函数收敛缓慢
在这里插入图片描述
由上图,红色是sigmoid函数的导数,从 0 开始很快就又趋近于 0 了,易造成“梯度消失”现象,导数太小容易使得梯度下降停止,也就梯度消失了。

可能的解决方法是使用不同的learning rate。

(2) Tanh函数

在这里插入图片描述
也称为双切正切函数,取值范围为[-1,1]。
tanh在特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果。
与 sigmoid 的区别是,tanh 是 0 均值的,因此实际应用中 tanh 会比 sigmoid 更好。

(3) ReLU(rectified linear unit)
在这里插入图片描述
输入信号 <0 时,输出都是0,>0 的情况下,输出=输入
对于神经元小于0的输入,相当于把这个神经元删除了,因为它为0;大于0的神经元输出就等于输入
但是整体的network还是非线性的

ReLU 的优点

Krizhevsky et al. 发现使用 ReLU 得到的 SGD 的收敛速度会比 sigmoid/tanh 快很多
可以解决梯度消失的问题

ReLU 的缺点
训练的时候很”脆弱”,很容易就”die”了
例如,一个非常大的梯度流过一个 ReLU 神经元,更新过参数之后,这个神经元再也不会对任何数据有激活现象了,那么这个神经元的梯度就永远都会是 0.
如果 learning rate 很大,那么很有可能网络中的 40% 的神经元都”dead”了。

在这里插入图片描述

Maxout Neural Network可以自动学习激活函数,可以把ReLU看做是Maxout的一种特殊情况
下面是Maxout的示意图,就是线性之后选取最大值
在这里插入图片描述

下面是Maxout如何简化成为ReLU的示意图
在这里插入图片描述
在这里插入图片描述

Maxout如何training?
已经知道,比较的最大值作为输出,那么那个比较小的值就直接被当做删除掉,这样也是一种线性的输入输出关系,就可以使用backpropagation反向传播来training网络。
在这里插入图片描述

RMSProp方法

目的:平坦的地方梯度比较大,陡峭的地方梯度比较小。对比与AdaGrad增加了一个衰减系数α来控制历史信息的获取多少
在这里插入图片描述
在这里插入图片描述

在之前的梯度下降中,很可能出现local minimum
引入动量:
如下图,想象一个球沿着坡道向下滚落,当到达一个凹点的时候,由于惯性还会继续向前滚落,我们希望把这种物理上的惯性应用到gradient descent中。

在这里插入图片描述
如下图,除了计算偏导数来梯度下降之外,我们还考虑一个参数是“惯性”,图中绿色表示“惯性”的大小,可以看到即使在导数为0 的小凹里面,由于“惯性”的影响,还会继续进行梯度下降。
注:在小 的凹里面是可以解决的,但是当这个凹比较大的时候,至少比“惯性大的时候还是会出现local minimum的。
在这里插入图片描述
如下图,两个参数都在更新
在这里插入图片描述
基于上面的动量Nesterov(或者说惯性Momentum)+RMSProp=Adam

再看看结合Nesterov动量的RMSProp,直观上理解就是:
RMSProp改变了学习率,Nesterov引入动量改变了梯度,从两方面改进更新方式。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值