我有一个机器学习模型(即自动编码器),它试图通过在目标函数中添加一个简单的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
,...]
在后一种稀疏码中,非零元素的数量可能与前一种相似,但每个非零元素之间都有一定数量的零。
是否有一个简单的目标函数惩罚可以用来诱导这种形式的稀疏性?