2017-09-14 363 views
4

这更像是一个深度学习的概念问题,如果这不是一个正确的平台,我会在别处考虑。Python Keras LSTM学习在高损失上收敛太快

我正在尝试使用Keras LSTM顺序模型来学习文本序列并将它们映射到数值(回归问题)。

事情是,学习总是在高损失(训练和测试)上过快收敛。我已经尝试了所有可能的超参数,并且我感觉这是一个局部最小问题,会导致模型的高偏见。

我的问题基本上都是:

  1. 如何初始化给出这个问题的权重和偏见?
  2. 要使用哪个优化器?
  3. 我有多深应扩大网络(我怕如果我使用了非常深刻的网络,训练时间将是无法忍受的,模型的方差将增长)
  4. 我应该增加更多的训练数据?

输入和输出用minmax标准化。

我使用SGD与动量,目前3个LSTM层(126256128)和2个致密层(200和1个输出神经元)

我已打印几个信号出现时间后的权重,并注意到许多权重 是零其余的基本上都有1的值(或者非常接近它)。

这里有一些地块从tensorboard:enter image description here

+0

我喜欢使用adam''优化器,它通常会自动找到它的方式。但是,如果没有很多测试和细节,你的答案就无法提供。看起来你的学习率可能太高,但这可能不是唯一可能的原因。 –

+0

你的激活功能是什么? –

回答

5

更快的具有非常高的损耗收敛可能可能意味着你正面临着爆炸的梯度问题。尝试使用像1e-5或1e-6那样低得多的学习速率。您也可以尝试使用渐变裁剪等技术来限制您在高学习率情况下的渐变。

权的回答1

另一个原因可能是初始化,请尝试以下3种方法:本文https://arxiv.org/abs/1502.01852

  • 泽维尔初始化
  • 随机初始化
  • 描述

    1. 方法

    对于很多情况下,第一种初始化方法效果最好。

    答案2

    你可以尝试像

    1. 动量优化
    2. SGD或梯度下降
    3. 亚当优化

    您优化的选择不同的优化应该基于y的选择我们的损失功能。例如:对于MSE作为损失函数的逻辑回归问题,基于梯度的优化器不会收敛。

    答案3

    有多深或宽的网络应该是再完全依赖于你使用什么问题是哪种类型的网络。

    正如您所说的,您正在使用使用LSTM的顺序模型来学习文本的顺序。毫无疑问,你对模型的选择对于这个问题很有用,你也可以尝试4-5个LSTM。

    回答4

    如果你的渐变会0或无限的,它被称为消失梯度或者它只是意味着过早收敛,尝试用正确的学习速度和第一权重初始化技术梯度剪裁。

    我相信这肯定会解决您的问题。