带有softmax的活动正则化器?

Posted

技术标签:

【中文标题】带有softmax的活动正则化器?【英文标题】:Activity regularizer with softmax? 【发布时间】:2018-10-31 05:44:26 【问题描述】:

我的生成神经网络的最后一层有一个 l1 activity_regularizer=l1:

outputs = Dense(200, activation='softmax', activity_regularizer=l1(1e-5))(x)

它使我的结果更好,但我不明白为什么它会改变 softmax 激活的任何内容。输出之和 = 1 ,所有正值总是如此,因此正则化器无论如何都应该给出完全相同的损失。

activity_regularizer=l1(1e-5) 在我的培训中做什么?

【问题讨论】:

【参考方案1】:

由于 Softmax,L1-Regularization 对总成本的贡献实际上是恒定的。

但是,正则化项的梯度是非零的,等于非零激活的数量(abs的梯度是符号 em>,所以我们有 signs 的总和,由于 softmax 是正的)。

您可以尝试在使用和不使用 L1 项的情况下运行,并检查您最终得到了多少非零元素。

【讨论】:

因此它会惩罚非零的数量。这将解释我的输出。在这种所有正输出的情况下,每次更新的梯度都会是一个常数? 假设所有输出始终非零,梯度项(来自正则化器)将始终相同(我认为“常数”这个词不合适,因为它暗示它不'不依赖于输入,这是不正确的)。然而,L1 正则化通常会导致一些输出被推到零,因此会降低梯度项。 不是恒定的,是的。

以上是关于带有softmax的活动正则化器?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Keras 中正确实现自定义活动正则化器?

如何在分类损失和正则化器之间取得正确的平衡? [关闭]

正则化器导致“ValueError:Shapes must be equal rank”

吴恩达-深度学习-课程笔记-8: 超参数调试Batch正则化和softmax( Week 3 )

输出keras中的损失/成本函数

RNN 正则化:要正则化哪个组件?