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