带有softmax的活动正则化器?

use*_*665 5 machine-learning neural-network keras

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

outputs = Dense(200, activation='softmax', activity_regularizer=l1(1e-5))(x)
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*man 2

由于 Softmax,L1 正则化对总成本的贡献实际上是恒定的。

然而,正则化项的梯度是非零的,并且等于非零激活的数量(abs的梯度是sign ,所以我们有由于softmax而成为正的激活的sign s之和)。

您可以尝试使用或不使用 L1 项来运行,并检查最终有多少个非零元素。