什么是体重衰减损失?

时间:2017-08-07 06:50:52

标签: machine-learning tensorflow deep-learning linear-algebra

我最近开始使用ML和TensorFlow。在浏览网站上的CIFAR10-tutorial时,我发现了一段对我来说有点混乱的段落:

  

训练网络执行N路分类的常用方法是多项逻辑回归,也就是说。 softmax回归。 Softmax回归将softmax非线性应用于网络的输出,并计算标准化预测与标签的1-hot编码之间的交叉熵。对于正则化,我们还将通常的权重衰减损失应用于所有学习变量。模型的目标函数是交叉熵损失和所有这些权重衰减项的总和,由loss()函数返回。

我已经阅读了关于论坛上什么是重量衰减的一些答案,我可以说它用于正规化的目的,因此可以计算权重值以获得最小损失和更高的准确度。

现在在上面的文字中,我理解loss()是由交叉熵损失(这是预测和正确标签值的差异)和重量衰减损失组成的。

我很清楚交叉熵损失,但是这个重量衰减损失是什么,为什么不仅仅是体重衰减?这个损失是如何计算的?

3 个答案:

答案 0 :(得分:6)

Weight decay只是权重的L2 regularisation,可以使用tf.nn.l2_loss来实现。

正则化的损失函数由下式给出:

enter image description here

上述等式的第二项定义了权重(θ)的L2-regularization。通常添加它以避免过度拟合。这会惩罚峰值权重并确保考虑所有输入。 (很少有峰值权重意味着只有那些与之相关的输入被考虑用于决策。)

在梯度下降参数更新期间,上述L2正则化最终意味着每个权重都线性衰减:W_new = (1 - lambda)* W_old + alpha*delta_J/delta_w。这就是为什么它通常称为Weight decay

答案 1 :(得分:0)

重量衰减损失,因为它增加了成本函数(损失是特定的)。参数根据损耗进行优化。使用重量衰减,您希望通过损失功能使整个网络可以看到效果。 TF L2 loss

Cost = Model_Loss(W) + decay_factor*L2_loss(W)
# In tensorflow it bascially computes half L2 norm
L2_loss = sum(W ** 2) / 2

答案 2 :(得分:0)

你的教程试图通过“体重衰减损失”来说,与你从非规范化模型中得到的交叉熵成本相比(即你的模型对训练数据的预测距离有多远),你的新成本函数不仅会惩罚预测误差,还会惩罚网络中权重的大小。而在您仅优化训练集中标签的正确预测之前,现在您正在优化正确的标签预测以及具有较小的权重。这种修改的原因在于,当通过梯度下降训练的机器学习模型产生大的权重时,很可能它们是响应于训练数据中的特性(或噪声)而到达的。当暴露于保持测试数据时,该模型将不会表现良好,因为它对训练集过度拟合。应用重量衰减损失(通常称为 L2正则化)的结果是训练数据的准确度会下降一点但测试数据的准确性会急剧上升。这就是你最终追求的目标:一种能够很好地概括在培训期间没有看到的数据的模型。 因此,您可以更加深入地掌握重量衰减的机制,让我们看看L2正则化网络中权重的学习规则:

enter image description here

其中etalambda分别是用户定义的学习率正则化参数n是训练样例(如果你不熟悉的话,你必须查阅那些希腊字母)。由于值eta和(eta * lambda)/ n都是给定迭代训练的常数,因此足以将重量衰减的学习规则解释为“对于给定的权重,相对于该权重减去成本函数导数的一小部分,并减去权重本身的一小部分。“

让我们看看虚拟网络中的四个权重以及上述学习规则如何影响它们。正如您所看到的,红色显示的正则化项无论如何都会将权重推向零。它旨在最小化权重矩阵的幅度,它通过最小化单个权重的绝对值来实现。在这些图中需要注意的一些关键事项:

  1. 当成本导数和符号的符号重量相同时,正则化项加速了权重的最佳路径!
  2. 正则化项影响重量更新的量与该权重的当前值成比例。我已在图中显示了这一点,其中小红色箭头显示权重的贡献,当前值接近于零,而较大的红色箭头表示具有较大电流幅度的权重。
  3. enter image description here