Keras 混合正则化子有意义吗?

Keras 混合正则化子有意义吗?,keras,neural-network,regularized,Keras,Neural Network,Regularized,混合正则化子有意义吗?例如,使用L1选择第一层中的要素,而使用L2选择其余的要素 我创建了这个模型: model = Sequential() # the input layer uses L1 to partially serve as a feature selection layer model.add(Dense(10, input_dim = train_x.shape[1], activation = 'swish', kernel_regularizer=regularizers.

混合正则化子有意义吗?例如,使用L1选择第一层中的要素,而使用L2选择其余的要素

我创建了这个模型:

model = Sequential()
# the input layer uses L1 to partially serve as a feature selection layer
model.add(Dense(10, input_dim = train_x.shape[1], activation = 'swish', kernel_regularizer=regularizers.l1(0.001)))
model.add(Dense(20, activation = 'swish', kernel_regularizer=regularizers.l2(0.001)))
model.add(Dense(20, activation = 'swish', kernel_regularizer=regularizers.l2(0.001)))
model.add(Dense(10, activation = 'softmax'))
但我不确定混合使用L1和L2是否是个好主意,在我看来,在输入层中使用L1作为特征选择器似乎是合乎逻辑的。但在任何地方,我都能看到对所有层使用相同正则化器的代码


(该模型似乎给出了相当好的结果,在多类分类问题中的预测正确率>95%)

在不同层中添加不同的正则化不是问题。有关于这个话题的论文。然而,这里有几件事需要注意

  • 在第一层中添加l1正则化本身不会进行特征选择。如果未选择某个要素,则该要素无法连接到下一层中的任何节点。l1正则化不能完全删除特征的连接。您将需要一个新的解决方案
  • 这些正则化的实现,特别是对于稀疏性,在keras本身并没有得到很好的支持。您需要在每次迭代中手动添加阈值函数。可以在中找到一个算法