如何诱导"制服"机器学习模型中的稀疏/稀疏编码?

时间:2018-04-03 00:48:23

标签: machine-learning deep-learning mathematical-optimization autoencoder regularized

我有一个机器学习模型(即自动编码器),它试图通过添加到目标函数的简单l1惩罚项来学习输入信号的稀疏表示。在学习矢量表示中的大多数元素为零的意义上,这确实有助于促进稀疏矢量表示。但是,我需要对稀疏性进行结构化,使得非零元素在向量上展开&/ 34; /分布/均匀。具体地说,对于给定的输入信号,我的模型产生一个稀疏表示,如下所示:

当前的稀疏代码: [...,0,0,0,0,0,0,0,0,0,0,0, 0.2,0.3,0.5,0.9,0.3,0.2,0.1 ,0,0,0,0,0,0,0,0,0,0,0,0,...]

您可以理解大多数元素都是零,具有小的非零元素簇。相反,我希望稀疏性是这样的,非零元素被排斥"排斥"因此,使得所有非零元素被至少一个或多个零包围,并且在矢量中很少或没有非零元素相邻;具体来说,看起来应该更像这样:

所需的稀疏代码: [...,0,0,0,0,0, 0.2 ,0,0,0,0, 0.9 ,0,0,0,0, 0.5 ,0,0,0,0,0,0, 0.7 ,0,0,0, 0.4 ,0,0, 0.6 ,...]

在后一个稀疏代码中,非零元素的数量可能与前者相似,但每个非零元素彼此分开一定数量的零。

我是否可以使用直接的客观函数惩罚来诱导这种形式的稀疏性?

1 个答案:

答案 0 :(得分:0)

Kullback Leibler散度测量目标分布与样本分布之间的距离,是潜在空间模型/变分自动编码器的标准实践。它的许多实现存在于多个库中。它允许您在输出上强制执行均匀分布,这将(在一定程度上)导致更均匀的间隔值。额外的硬编码约束也可以帮助你;即惩罚输出向量的切片总和之间的均方差将惩罚不均匀的扩散值。