pytorch 入门 - L1,L2正则,Dropout

本文介绍了Dropout技术,主要用于解决深度学习中的过拟合问题。Dropout在训练时随机关闭部分神经元,以此降低模型对特定特征的依赖,增强泛化能力。此外,还探讨了Dropout的工作流程、数学表达式以及在PyTorch中的实现,并对比了L1和L2正则化的应用。
摘要由CSDN通过智能技术生成

Dropout

dropout 主要用于解决训练过程中模型出现过拟合的问题。在模型训练过程中,当训练集上的正确率很高,但验证集上的正确率很低时,即发生了过拟合。解决过拟合的方法有很多,例如利用集成学习的方法,训练多个模型进行组合;减少网络训练的层数;提前终止训练等。此外,Dropout可以比较有效的缓解过拟合的发生,在一定程度上达到正则化的效果。

dropout 简介

(以下参考深度学习中Dropout原理解析
dropout可解决模型的过拟合问题,其原理是在模型训练的每个批次中,随机的让一半的隐层节点值变为0,这种做法可以让隐层节点之间的相互作用变弱(隐层之间的相互作用是指 某些检测器依赖其他检测器才能发挥作用)。

总而言之,就是在前向传播的过程中,以概率P让某个神经元失活,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征,用图片表示上述过程:

在这里插入图片描述

dropout具体工作流程

首先,定义一个标准的神经网络模型;
使用dropout之后,过程变成如下:
1.随机删掉网络中的一半的隐藏神经元(备份被删除的神经元参数);
2.将输入的x通过修改后的网络做前向传播,得到的损失函数做反向传播;一小批训练样本执行这个过程之后,利用梯度下降法更新没有被删除的神经元参数。
3.恢复被删除的神经元,即被删除的神经元参数保持原样(回复备份的参数);
4.重复上述过程

dropout 数学表达

由于dropout在训练时是随机将隐藏层节点设置为0的,所以在前向计算时需要添加一个概率流程。
在这里插入图片描述
上述为标准网络和dropout网络前向计算的流程,其中 y i ( l ) y_i^{(l)} yi(l)为这一隐藏层的输入, w i ( l + 1 ) w_i^{(l+1)} wi(l+1)是权重向量, b i ( l + 1 ) b_i^{(l+1)} bi(l+1)是偏倚项, r j ( l ) r_j{(l)} rj(l)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值