混合正则化子有意义吗?例如,使用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正则化将不能完全放弃一个特征的连接。你需要一个群套索正则化(也称为l_{1,p}范数(
- 这些正则化的实现,特别是对于稀疏性,在keras本身并没有得到很好的支持。您需要在每次迭代中手动添加阈值函数。在稀疏输入神经网络中可以找到一种算法