【动手学习深度学习】6 丢弃法+数值稳定性+模型初始化和激活函数

目录

6.1 丢弃法

6.1.1 定义

6.1.2 使用

6.1.3 代码实现

6.2 数值稳定性 

6.3 模型初始化和激活函数

6.3.1 让训练更加稳定

6.3.2 合理的权重初始化

6.3.3 激活函数


6.1 丢弃法

                        ——在层之间加噪音

6.1.1 定义

 易求及对x加入噪声得到的x',E[x']=x

6.1.2 使用

通常用在隐藏全连接层的输出上

丢弃概率是控制模型复杂度的超参数

预测推理时不用dropout,因为dropout是为了降低模型复杂度,而预测推理时只有一个样本,不用更新模型。而训练时模型是不断更新的,使用dropout就可以降低模型复杂度。

一个看到的例子,觉得解释的很有意思:在training的时候,会丢掉一些neuron,就好像是你要练轻功的时候,会在脚上绑一些重物;然后,你在实际战斗的时候,就是实际testing的时候,是没有dropout的,就相当于把重物拿下来,所以你就会变得很强。

6.1.3 代码实现

net = nn.Sequential(nn.Flatten(),
        nn.Linear(784, 256),
        nn.ReLU(),
        # 在第一个全连接层之后添加一个dropout层
        nn.Dropout(dropout1),
        nn.Linear(256, 256),
        nn.ReLU(),
        # 在第二个全连接层之后添加一个dropout层
        nn.Dropout(dropout2),
        nn.Linear(256, 10))

6.2 数值稳定性 

1、梯度爆炸:在梯度下降的过程中,数值不断增大

问题:

 

2、梯度消失:在梯度下降的过程中,数值不断减小

 当输入数值较大时,梯度接近0

问题:

6.3 模型初始化和激活函数

6.3.1 让训练更加稳定

1、目标:让梯度在合理范围内

2、方法:将乘法变加法;归一化、梯度剪裁;合理的权重初始和激活函数

6.3.2 合理的权重初始化

           ——Xavier初始化

Xavier初始化表明,对于每一层,输出的方差不受输入数量的影响,任何梯度的方差不受输出数量的影响。

6.3.3 激活函数

sigmiod作为激活函数时,有可能会导致梯度消失,而ReLU激活函数缓解了梯度消失问题,这样可以加速收敛。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值