我想创建一个损失函数,鼓励自动编码器嵌入的输出密集。我没有关于如何定义密度的明确条件,但一种选择是应该最小化一个点与其 k 个最近邻居之间的平均距离,其中 k 是某个参数。这与重建误差相平衡,因此嵌入点不会全部收敛到相同的值。有没有办法以允许每个点周围的平均密度通过自动编码器反向传播的方式构造这个或类似的损失函数?
神经网络的密集输出
数据挖掘
深度学习
损失函数
自动编码器
2022-03-07 15:40:23
2个回答
非常好的问题!
实现目标的一种方法是Center loss。如果一个班级的分数聚集在一个中心周围,那么损失就会得到回报。您可以为您的自动编码器调整这种方法。
您可以直接使用最近邻损失。你可以通过它进行反向传播,尽管它的梯度不是很稳定。
也许更好的是使用软最近邻损失,例如,参见 Salakhutdinov 和 Hinton,“通过保留类邻域结构学习非线性嵌入”,2007。这提供了更稳定的梯度。
这两者都将非常慢,因为它们需要将每个点与训练集中的每个其他点进行比较。加速它的一个技巧是仅与同一小批量中的其他样本进行比较。
可能还有许多其他方法。