稀疏输出的神经网络

5

我有一个有趣的问题,它可以简化为这个简单的任务。考虑一个神经网络(LSTM或其他),它将学习复制稀疏二进制矩阵,这些矩阵的稀疏度约为1%。

如果我们看一下只猜测所有条目都是0时的代价函数,它将约为100%-稀疏度,因此你可以通过猜测所有0来获得非常高的准确性。

是否有任何方法通过改变稀疏矩阵表示或成本函数来使神经网络跳出这个巨大的局部最小值?

谢谢!

1个回答

6

我看到这篇文章已经发布了将近3年的时间,所以我的答案可能对您来说不是最相关的,但对于任何搜索答案的人:

这很大程度上取决于使用的损失函数、优化器和激活函数类型。我会主要从分类的角度进行讨论,因为我在其中拥有更多的经验。

解决这个问题的方法有很多种,因为1%的稀疏性可能意味着这些矩阵由99个值为0和单个值为1的元素组成(1.)。这可以通过使用输出上的softmax激活函数(确保输出值之和在0和1之间)、分类交叉熵损失和一些现代优化器(我喜欢Adam)来解决。

  1. 对于前者,我认为一个合理的方法是在输出上使用softmax激活函数,这可以确保输出值之和在0和1之间,伴随着分类交叉熵损失和一些现代优化器(我喜欢Adam)。

  2. 对于后者,我们不能使用softmax,因为输出中有更多的值为1的元素,因此输出层元素的总和不能为1。出于同样的原因,我们不能使用分类交叉熵。在这种情况下,在输出层上使用sigmoid激活函数、二元交叉熵损失和Adam优化器可以轻松地克服预测全部为零向量的困境。

在极高的稀疏度下,相关的考虑可能是尝试以一种权重为非零值准确性的形式来制定您自己的损失,以将对零值的正确预测视为损失,并根据非零值准确性进行加权。这样,神经网络在非零值的准确性高之前不会关心零值的准确性。考虑一个非常基本的损失A,定义为:

A=A1+A1A0,

其中A1表示非零值的准确率,A0表示零值的准确率。使用这种类型的损失,当预测一个[0,0,0,0,0,0,0]而正确的值是[0,1,0,0,0,0,0]时,我们得到的准确率为0,使得先前的局部极小点更陡峭。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接