神经网络输出的奇怪分布

数据挖掘 神经网络 分类 rnn
2022-02-13 21:54:13

我在训练神经网络时遇到了不寻常的行为。

问题是预测一个样本是第一类还是第二类。(2级分类)。班级不平衡(~ 5 / 95)。我使用加权交叉熵。

我看到的是每个样本的两个类别的概率,对我来说似乎很奇怪,无论我等待多长时间(时期数),概率都在 [0, 0.9) 范围内,并且没有样本接近概率1.0。我想,不平衡和加权损失 + 低起始学习率的 ADAM 可能会导致这种情况,但我不确定。

有没有人遇到过同样的情况?

1个回答

这并不奇怪。您可能在输出上有一个激活函数,在无穷大时只能达到 0 或 1。要达到那个 0 或 1,您需要让最后一个隐藏层输出 +/- 无穷大。考虑到重量结构,这很难。它可以做的最好的事情是输出极大的正值或负值。

这可能是一个问题,因为在校准过程中(这是一个优化问题),您将花费大量资源和时间来尝试达到 +/- 无穷大。值得注意的是,这是著名的梯度爆炸问题的原因之一。

如何处理?Efficient Backpropagation(LeCun 等人,1998 年)中,作者建议使用能够达到所需输出的激活函数。它指出一个好的激活函数需要具有以下属性:

  1. f(±1)=±1

  2. 处的最大值x=1

  3. 有效增益接近1

你的问题是你没有类似于第一个条件的东西。为了尊重这些条件,LeCun 建议使用激活函数:1.7159tanh(23x)您可能不需要在所有图层中都使用它。现在您的问题可能是找到一个允许自定义激活功能的框架。