L2 正则化如何惩罚 TensorFlow 中的权重?

数据挖掘 Python 张量流 美国有线电视新闻网
2022-03-14 21:05:46

我知道 L2 正则化技术用于减少过度拟合和惩罚大权重。在不止一个地方,我看到它像 TensorFlow 库中的以下代码一样使用:

reg = tf.nn.l2_loss(w_conv1) + tf.nn.l2_loss(w_conv2) + \
      tf.nn.l2_loss(w_conv3) + tf.nn.l2_loss(w_conv4) + \
      tf.nn.l2_loss(w_conv5) + tf.nn.l2_loss(w_fc1) + \ 
      tf.nn.l2_loss(w_out)

    loss = tf.reduce_mean(loss + reg * beta)

我对这段代码如何惩罚权重感到困惑?它将 L2 添加到权重,然后将结果添加到损失中。谁能为我解释一下?

1个回答

L2 损失基于网络权重的平方。随着给定重量的大小增加,损失将呈指数增长(准确地说是二次方)。因此,神经网络被“推动”以在每一层上更均匀地分布权重值,因为对于这样的二次损失因子,最好有很多较小的权重,而不是几个非常大的权重。权重值和损失之间的指数关系是大权重受到惩罚的原因。当您的模型遭受过度拟合时,L2 损失通常很有用,因为跨层的权重重新分配有助于防止少数神经元陈旧所有“解释能力”并产生过度拟合。

(L2 损失的主要缺点是模型对异常值更加敏感,因此鲁棒性降低。)

希望这会有所帮助,否则请告诉我。