带有 L2 正则化的 RNN 停止学习

机器算法验证 神经网络 深度学习 正则化 循环神经网络
2022-03-17 10:01:09

我使用双向 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 个时间戳,这些时间戳谈论该特征。

在这种情况下,是否有一些通用的指导方针?我什么也找不到。

1个回答

Bengio 等人的文章“关于训练循环神经网络的难度”给出了关于为什么 L2 正则化可能会扼杀 RNN 性能的提示。从本质上讲,对 RNN 细胞进行正则化的 L1/L2 也会损害细胞随时间学习和保留信息的能力。

对循环权重使用 L1 或 L2 惩罚有助于梯度爆炸。假设权重被初始化为小的值,最大的奇异值λ1Wrec可能小于 1。L1/L2 项可以确保在训练期间λ1保持小于 1,并且在这种情况下梯度不会爆炸。这种方法将模型限制为原点处的单点吸引子,其中插入模型中的任何信息都会以指数方式快速消失。这会阻止模型学习生成器网络,也不能表现出长期记忆痕迹。