0

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

当前稀疏代码: [...,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,...]

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

所需的稀疏代码: [...,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,...]

在后一种稀疏代码中,非零元素的数量可能与前一种相似,但每个非零元素之间被一些零分开。

我可以使用直接的目标函数惩罚来诱导这种形式的稀疏性吗?

4

1 回答 1

0

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

于 2018-04-03T06:16:56.593 回答