首页 > 编程知识 正文

使用技巧是个什么软件,dropout的作用

时间:2023-05-04 02:54:18 阅读:45662 作者:1496

1引言ML中存在两类严重问题:过拟合学习时间开销大

在拟合过程中,所得模型在训练集中会得到非常好的结果,但新数据的预测结果非常不理想。 为了解决过拟合问题,为了解决单模过拟合问题,我们通常会训练多种模型。 但是,也会带来时间开销大的问题。 Dropout很好地解决了这个问题,在单模下防止了过拟合。 时间开销大的是梯度下降,学习率衰减可以解决梯度下降中的时间开销问题。

Dropout在训练过程中,是随机忽略一部分神经元。 也就是说,在前向传播过程中,这些被忽视的神经元对下游神经元的贡献暂时消失,在反向传播时,这些神经元没有权重更新。

其他具体介绍可以转到深度学习中的Dropout原理分析

2掉话的使用方法(1)验证结果表明,隐式节点掉话率为0.5时最好,此时掉话随机生成的网络结构最多。 作为添加噪声的方法,Dropout也可以用于输入层。 如果输入级别接近1,则输入的变化不会太大,例如0.8。

)2)通常在网络中Dropout率为0.2~0.5。 0.2是一个好的起点,过低的概率产生的作用有限,过高的概率可能导致网络训练不充分。

)3)在大型网络中使用Dropout可能会产生更好的结果,因为Dropout会减少模型训练过程中的干扰

)4)输入层和隐藏层使用Dropout。 或者,在网络的所有层使用Dropout可以获得更好的结果。

(5)使用较高的学习率,通过设定学习率的衰减和较大的运动量值,使学习率提高10~100倍,并且运动量值为0.9或0.99。

在Keras中,momentum是动量的值

SGD=SGD(lr=0.1、momentum=0.8、decay=0.0、nesterov=False ) )。

(6)限制网络权重的大小,命中的学习率可能导致非常大的网络权重,限制网络权重的大小。 例如,大小为4或5的最大范数归一化(Max-norm Regularizationi )。

在Keras中,通过在Dense中指定kernel_constrain=maxnorm(x )来限制网络权重

参考资料: dropout : asimplewaytopreventneuralnetworksfromoverfitting

3 Dropout的扩展r-dropout(1)介绍

简单来说,就是在模型中加入dropout,在训练阶段的预测阶段,用相同的数据预测两次,两次追求的结果尽可能接近,这一点体现在损失函数上。 虽然是相同的数据,但模型中的Dropout随机丢弃神经元,因此两次丢弃的神经元不同,预测结果也不同。 R-Dropout思想是指为了实现控制,尽量使两次预测一致,优化模型。 不仅在NLP领域,在其他NLU、NLG、CV的分类等多项任务中对R-Drop进行了比较实验,大部分实验效果可以说“明显提高”。

具体的详细说明请作为参考

前重量[15] | R-Dropout——一次不行就两次,Dropout两次! 这次实现了有监督任务的sotar-drop : regularizeddropoutforneuralnetworks (2)的使用方法

与常规的Dropout方法不同,封装的API可以在单行代码中使用。 自定义R-Dropout的使用需求、模型输入和损耗函数。 例如,参照NLP的Pytorch来实现R-Dropout

# define your task model,whichoutputstheclassifierlogitsmodel=task model (def compute _ KL _ loss ) self,p,qad _ mask=dim=-1 )、F.softmax(q ) q、dim=-1 )、f.softmax(p,dim=-1 )、 reduction='none ' ) # pad _ maskisforseq-leveltasksifpad _ maskisnotnone 3360 p _ loss0. ) q _ loss.masked _ fill _ 0.) # youcanchoosewhethertousefunction ' sum ' and ' mean ' dependingonyourtaskp _ loss=p _ loss.sum (q _ loss=q lolos ) keepdropoutandforwardtwicelogits=模型(x ) logits2=模型(x ) # crossentropylossforclassifierce _ loss=0.5 * (cross ) label ) cross_entropy_loss ) logitits label () KL_loss=compute_KL_loss(logits,logits2) # carefufuts

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。