use*_*934 5 sparse-matrix neural-network lstm
我有一个有趣的问题,可以简化为这个简单的任务。考虑一个神经网络(LSTM 或其他网络),它将学习复制稀疏度约为 1% 的稀疏二进制矩阵。
如果我们查看仅猜测所有条目的 0 的成本函数,其稀疏度约为 100%,因此仅通过猜测全 0 即可获得非常高的准确度。
有没有办法通过改变稀疏矩阵表示或成本函数来使神经网络摆脱这个巨大的局部最小值?
谢谢!
我发现这个问题已经存在了不到 3 年了,所以我的答案可能对你来说不是最相关的,但对于任何偶然发现这个问题并寻找答案的人来说:
这在很大程度上取决于所使用的损失函数、优化器和激活函数的类型。我主要是从分类的角度来说,因为我在这方面有更多的经验,以免误导。
解决此问题的方法可能会有所不同,因为 1% 的稀疏度可能意味着这些矩阵由 99 个 0 元素和单个 1 元素(1.)填充。与 990 个零元素和 10 个值为 1 (2.)的元素的情况相比,可以以更高的精度来解决此问题。
对于前者,对我来说,一个合理的方法似乎是在输出上使用softmax激活函数,确保输出值的总和在 0 到 1 之间,并伴有分类交叉熵损失和一些现代优化器(我更喜欢Adam)。
在后一种情况下,我们不能使用softmax,因为输出上有更多 1 值元素,因此输出层元素的总和不能为 1。出于同样的原因,我们不能使用分类交叉熵。在这种情况下,输出层上的sigmoid激活函数、二元交叉熵损失和Adam优化器应该能够轻松克服预测全零向量的巨大便利。
这里在非常高的稀疏性下的相关考虑可能是尝试以一种方式制定您自己的损失,即在损失中考虑零值的正确预测,并按非零值的准确性进行加权。这样,神经网络将不会关心零值的准确性,直到非零值的准确性很高。考虑一个非常原始的损失 A,定义为,
A=A 1 +A 1 A 0 ,
其中 A 1是非零值的精度,A 0是零值的精度。对于这种损失,预测正确值为 [0,1,0,0,0,0,0] 的 [0,0,0,0,0,0,0] 将产生 0 的准确度,这使得以前的局部最小值相当陡峭。
| 归档时间: |
|
| 查看次数: |
2457 次 |
| 最近记录: |