避免输出稀疏的琐碎解决方案

数据挖掘 深度学习
2022-03-09 12:47:53

我有一个网络,其输出是一个大向量(比方说~2000)。地面实况输出非常稀疏和二进制——在 2000 个值中,大多数值为 0,只有少数为 1。澄清一下,每个样本在不同位置都有 1,存在一些不均匀的可能性在任何给定的神经元处为 1。

我很确定,如果我运行这个网络,它会很快找到输出全 0 的简单解决方案并留在那里。

您如何建议轻推网络以避免这种微不足道的解决方案?

我想以某种方式对样本进行加权,以使每个样本都赋予等于 1 的神经元较高的权重。这似乎很难有效地实现。如何在 tensorflow/keras 中轻松高效地实现这一点?

另一个想法是将所有 0 设置为以 0.5 为中心的随机值,并在网络训练时将它们慢慢减少到零。

其他想法?

1个回答

我从其他人那里得到的一些有趣的建议:

  1. 拆分网络,以便每个子网络负责类的一个子集。
  2. 使用非常适合这种情况的 Dice loss 或 jaccard loss。
  3. 仅使用不太流行的类进行预训练,并在 epoch 上添加类。这需要非常小心地完成。