我使用双向 RNN 来检测不平衡发生的事件。正类比负类少 100 倍。虽然没有使用正则化,但我可以在训练集上获得 100% 的准确率,在验证集上获得 30% 的准确率。我打开 l2 正则化,结果在训练集上也只有 30% 的准确率,而不是更长时间的学习和验证集上的 100% 准确率。
我在想也许我的数据太小了,所以只是为了实验,我将训练集与我以前没有使用过的测试集合并。情况与我使用 l2 正则化的情况相同,但我现在没有。我在训练+测试和验证上获得了 30% 的准确率。
在上述实验中使用 128 个隐藏单元和 80 个时间步当我将隐藏单元的数量增加到 256 个时,我可以再次在训练 + 测试集上过拟合以获得 100% 的准确度,但在验证集上仍然只有 30%。
我确实尝试了很多超参数选项,但几乎没有结果。可能是加权交叉熵导致了这个问题,在给定的实验中,正类的权重为 5。虽然尝试更大的权重,但结果通常更差,准确率约为 20%。
我尝试了 LSTM 和 GRU 单元,没有区别。
我得到的最好的结果。我尝试了 2 个具有 256 个隐藏单元的隐藏层,大约需要 3 天的计算时间和 8GB 的 GPU 内存。我得到了大约 40-50% 的准确率,然后它再次开始过度拟合,而 l2 正则化打开但不是那么强。
我使用 Adam 优化器,其他的效果不太好。我拥有的功能就足够了,因为在使用状态机时,我可以获得 90% 的准确率。在该状态机中,主要特征是基于其他特征属性的求和和阈值化,它的可变长度有时是 10,有时是 20 个时间戳,这些时间戳谈论该特征。
在这种情况下,是否有一些通用的指导方针?我什么也找不到。