neural-network - 具有稀疏输出的神经网络

标签 neural-network sparse-matrix lstm

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

如果我们查看只为所有条目猜测 0 的成本函数,它将是大约 100-% 的稀疏性,因此您可以通过猜测所有 0 来获得非常高的准确度。

有没有办法通过改变稀疏矩阵表示或成本函数来使神经网络脱离这个巨大的局部最小值?

谢谢!

最佳答案

我看到这已经在这里将近 3 年了,所以我的答案此时可能与您不是最相关的,但对于任何偶然发现这个问题以寻找答案的人来说:

这在很大程度上取决于使用的损失函数、优化器和激活函数的类型。我主要讲分类 因为我有更多的经验,不要误导。

如何解决这个问题可能会有所不同,因为 1% 的稀疏性可能意味着这些矩阵由 99 个元素填充,这些元素为 0 和单个 1 元素 (1.)。与 990 个零元素和 10 个值为 1 (2.) 的元素相比,可以以更高的精度解决此问题。

  • 在前者的情况下,对我来说一个合理的方法似乎是使用 softmax 上的激活函数输出 ,确保输出值的总和介于 0 和 1 之间,并伴随 分类交叉熵 损失和一些现代优化器(我更喜欢 Adam )。
  • 在后一种情况下,我们不能使用 softmax,因为输出中有更多的 1 值元素,因此输出层元素的总和不能为 1。出于同样的原因,我们不能使用分类交叉熵。在这种情况下, sigmoid 上的激活函数输出 层,二元交叉熵损失和亚当 优化器应该能够轻松克服预测全零向量的极大便利。

  • 此处在非常高的稀疏性下的相关考虑可能是尝试以一种方式来制定您自己的损失,即在损失中考虑零值的正确预测,并按非零值的准确性进行加权。这样,神经网络不会关心零值的准确度,直到非零值的准确度很高。考虑一个非常原始的损失 A,定义为,

    A=A1+A1A0,

    其中 A1 是非零值的精度,A0 是零值的精度。有了这种损失,预测一个 [0,0,0,0,0,0,0] ,其中正确的值是 [0,1,0,0,0,0,0] 将使我们的准确度为 0 ,这使得以前的局部最小值相当陡峭。

    关于neural-network - 具有稀疏输出的神经网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36577238/

    相关文章:

    audio - 音频数据的CNN无法学习

    Java 矩阵处理时间

    c++ - Eigen 稀疏 vector :求最大系数

    python - Keras LSTM 输入维度设置

    python - 在使用 Keras LSTM 拟合和预测数据期间,如何使用不同大小的训练数据和测试数据以及不同的 batch_sizes?

    python - scikit-learn 中多层感知分类器中神经元的输出

    machine-learning - 减少错误预测类别的权重

    python - 哪种 SciPy 稀疏矩阵类最适合计算距离矩阵?

    python - 具有可变句子长度的 Keras LSTM——传递给模型的 Numpy 数组列表,而不是模型预期的大小

    algorithm - 神经网络基础