深度学习——解决过拟合问题

本文介绍了两种常见的防止过拟合的技术:权重衰减(L2正则化)和Dropout。权重衰减通过在损失函数中加入权重的2-范数来限制模型复杂度;Dropout则是在训练过程中随机丢弃一部分神经元的连接,以此提高模型泛化能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决过拟合的方法

参考>>12 权重衰退【动手学深度学习v2】

L 2 L_2 L2正则化

权重衰减(weight decay)是最广泛使用的正则化的技术之一, 它通常也被称为 L 2 L_2 L2正则化。
简单来说就是在loss函数中加入一个权重的2-范数约束,这样能够保证权重向量比较小(W较小说明模型简单),更不容易过拟合。
L ( w , b ) + λ 2 ∥ w ∥ 2 L(\mathbf{w}, b) + \frac{\lambda}{2} \|\mathbf{w}\|^2 L(w,b)+2λw2
其中
L ( w , b ) = 1 n ∑ i = 1 n 1 2 ( w ⊤ x ( i ) + b − y ( i ) ) 2 L(\mathbf{w}, b) = \frac{1}{n}\sum_{i=1}^n \frac{1}{2}\left(\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}\right)^2 L(w,b)=n1i=1n21(wx(i)+by(i))2
权重更新的表达式为:
w ← ( 1 − η λ ) w − η ∣ B ∣ ∑ i ∈ B x ( i ) ( w ⊤ x ( i ) + b − y ( i ) ) \mathbf{w} \leftarrow \left(1- \eta\lambda \right) \mathbf{w} - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \mathbf{x}^{(i)} \left(\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}\right) w(1ηλ)wBηiBx(i)(wx(i)+by(i))

1 − η λ 1-\eta\lambda 1ηλ 的值一般取1e-2、1e-3、1e-4

l2_loss = tf.nn.l2_loss(W1) + tf.nn.l2_loss(b1) + tf.nn.l2_loss(W2) + tf.nn.l2_loss(b2) + tf.nn.l2_loss(W3) + tf.nn.l2_loss(b3)
# 带有l2_loss的交叉熵代价函数
loss = tf.compat.v1.losses.softmax_cross_entropy(y,prediction) + 0.0005*l2_loss

dropout

原理:在某层神经元上不采用全连接方式,而只是部分神经元和上一层神经元间有连接,多用在多层感知机上,CNN上用的少。

dropout只能在训练时候用,在推理时候不用dropout

m = nn.Dropout(p=0.2)# 推理时候p=0
input = torch.randn(20, 16)
output = m(input)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值