【问题标题】:How to induce "uniform" sparsity/sparse coding in machine learning model?如何在机器学习模型中诱导“均匀”稀疏/稀疏编码?
【发布时间】:2018-04-03 00:48:23
【问题描述】:

我有一个机器学习模型(即自动编码器),它尝试通过添加到目标函数的简单 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,...]

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-02-09
      • 2012-11-09
      • 2021-01-29
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      • 2017-12-16
      • 2018-08-22
      • 2015-12-05
      相关资源
      最近更新 更多