Machine learning Keras:内核正则化器和活动正则化器之间的区别

Machine learning Keras:内核正则化器和活动正则化器之间的区别,machine-learning,keras,keras-layer,Machine Learning,Keras,Keras Layer,我注意到,在Keras中,weight_正则化器不再可用,取而代之的是活动正则化器和内核正则化器。 我想知道: 内核正则化器和活动正则化器之间的主要区别是什么 我可以用活动正则化器代替权重正则化器吗 活动正则化器作为网络输出的函数,主要用于正则化隐藏单位,而权重正则化器,顾名思义,作用于权重(例如,使其衰减)。基本上,您可以将正则化损失表示为输出(activity\u regularizer)或权重(weight\u regularizer)的函数 新的kernel\u正则化器取代了weigh

我注意到,在Keras中,weight_正则化器不再可用,取而代之的是活动正则化器和内核正则化器。 我想知道:

  • 内核正则化器和活动正则化器之间的主要区别是什么
  • 我可以用活动正则化器代替权重正则化器吗

活动正则化器作为网络输出的函数,主要用于正则化隐藏单位,而权重正则化器,顾名思义,作用于权重(例如,使其衰减)。基本上,您可以将正则化损失表示为输出(
activity\u regularizer
)或权重(
weight\u regularizer
)的函数

新的
kernel\u正则化器
取代了
weight\u正则化器
——尽管文档中不太清楚

根据
内核正则化器的定义:

核正则化器:应用于
内核
权重矩阵 (请参见正则化器)

活动\u正则化器

活动\正则化器:正则化器函数应用于 层的输出(其“激活”)。 (请参见正则化器)

重要编辑:请注意,activity_正则化程序中存在一个缺陷,仅在Keras版本2.1.4中修复(至少使用Tensorflow后端)。实际上,在旧版本中,“活动正则化器”功能应用于层的输入,而不是应用于输出(层的实际激活,如预期)。因此,如果您使用的是旧版本的Keras(2.1.4之前),请注意,活动规则化可能无法按预期工作

您可以在上看到提交


这个答案有点晚了,但对未来的读者很有用。 所以,正如他们所说,需要是发明之母。我只有在需要的时候才明白。
上面的答案并没有真正说明差异,因为它们最终都会影响权重,那么对权重本身的惩罚和层的输出有什么区别呢?
答案是这样的:我遇到了这样一种情况:网的重量很小,很好,介于[-0.3]到[+0.3]之间。
所以,我真的不能惩罚他们,他们没有什么错。内核正则化器是无用的。然而,该层的输出在100年代是巨大的。

请记住,层的输入也很小,始终小于1。但这些小值和权重的交互作用产生了大量的输出。在这里,我意识到我需要的是一个活动正则化器,而不是内核正则化器。有了这个,我惩罚了那些大输出层,我不在乎权重本身是否小,我只是想阻止它达到这种状态,因为这会使我的乙状结肠激活饱和,并导致大量其他问题,如消失梯度和停滞。

你完全确定
内核正则化器
替换
权重正则化器
?我发现许多使用内核正则化器的例子,但不适用于活动正则化器。你能评论一下activity_Regulationizer的使用案例吗?为什么你想规范化隐藏层的输出?这是因为我们将输入标准化为范围(-1,1)或(0,1)的原因吗。这是为了使后续层的输入更小,以帮助SGD过程?@Nagabhushanbadi看到这个答案:@FinncentPrice我只能假设它曾经在那里,现在它不再是真正直观的了。