L1 范数正则化器的 lambda 是否应该与可训练权重的数量成反比?

数据挖掘 机器学习 深度学习 喀拉斯 张量流 正则化
2022-03-02 11:49:23

假设我想在 keras 中实现 Conv2D,对于每个 Conv2D 层,如果我在深度为 10 的输入上应用 20 个 [2,3] 过滤器,那么将有 20*(2*3*10+1) = 1220 个可训练的重量。

L1 范数的值将成比例地增加更多的可训练权重。对于 L2 范数也是如此。

那么 lambda 不应该像 kernel_regularizer=l1(lambda) 那样与可训练权重的数量成反比吗?

对我来说,直观地说,如果 0.1 的 lambda 对 10,000 个权重有效,那么对 100 万个权重应用相同或更大的 lambda 对我来说没有意义。

2个回答

反向传播不会像这样处理正则化,
即如果你在想“ 10 个权重会导致惩罚 100,所以 100 个权重会导致惩罚 1000。所以让我们有一个更小的λ

反向传播使用 Loss 的偏微分
现在损失有一个额外的Σwi2因此导数将有一个额外的部分,该部分与权重成正比(的导数 x2=2x)。
每个权重都是分开的,所以权重的数量不会有影响

方程将是 -
wi=wi- (像以前一样反向传播东西) -λ*wi

λ只是一个旋钮。你也有任何与成比例的价值wi例如5 %w.

一般来说,lambda 是一个超参数,应该通过特定的技术来确定。最常见的一种是通过网格搜索。

为 10.000 找到一个好的 lambda 值可以让您了解 1M 权重的网格范围,但您不应该使用由经验法则确定的单个值。

在改变模型的权重数量时更是如此,通常这也意味着获取更多数据,这些数据可能具有真正不同的属性(如预测能力较低)。考虑到优化问题,这可能导致 lambda 的值非常不同。基本上你的坚韧在优化步骤之前是有效的,但不是之后,因为重量可以获得不同的值。