RNN的梯度消失/爆炸问题

背景:我目前正在训练一个用于文本情感分析的循环神经网络。
数据集是一组被二元分类为正面或负面的句子集合。

问题:神经网络在处理较短的句子(少于3-4个词)时运行正常(即损失随时间减少),但对于较长的句子,成本会迅速上升,直到整个程序崩溃。

这是否是梯度消失/爆炸问题的例子?
如果是,哪一种问题,并且我该如何解决?

我认为,对于简单的RNN,梯度消失问题不是一个大问题。通常情况下,RNN在不使用LTSM/GRU架构的情况下能够处理多少时间步?

编辑1:我在这个网络中没有使用LSTM或GRU架构。
编辑2:我认为这可能是梯度消失问题,因为梯度在较长的句子中接近于零。
编辑3:我注意到,当我进行梯度检查时,反向传播梯度和数值计算梯度之间的差异是不一致的。
有时它们非常相似:

Estimated gradient: -0.03798713081426541Actual gradient: -0.03798713058052253Estimated gradient: 0.09233359214502745Actual gradient: 0.09233359179904115Estimated gradient: 0.0769223445411249Actual gradient: 0.07692234419615167Estimated gradient: 0.12397360958732451Actual gradient: 0.12397360903699521

*这些不是相邻的检查 – 只是手动挑选的良好梯度检查的例子。
其他时候,它们差异很大:

Estimated gradient: -4.0245362598057e-07Actual gradient: 3.4145999078185475e-12Gradient Check ERRORRelative error: 1.0Estimated gradient: -4.241412776551101e-08Actual gradient: -2.1161111156415113e-16Gradient Check ERRORRelative error: 0.9999999900216686Estimated gradient: 0.0Actual gradient: -4.450453565269026e-32Gradient Check ERRORRelative error: 1.0

回答:

重新实现RNN并采用LSTM架构解决了这个问题。梯度消失是问题的根源。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注