在LSTM中,验证损失/准确性始终达到某个阈值

我有一个序列预测问题,在给定序列中的最后m个项目(6)的情况下,我需要预测下一个项目。现在有N = 60k个序列,对于每个序列n,我有6个事件,我想预测下一个(在这种情况下为第7个)事件。数据集看起来像这样

seq_inputs = [
["AA1","BB3","CC4","DD5","AA2","CC8","CC11"],#CC11 is target
["FF1","DD3","FF6","KK8","AA5","AA2"]   #AA2 will be target
..
..
] 

在对输入的目标数据进行标记和分离之后,我将数据重塑为(对于多步一特征多对一预测)

seq = [[[ 1],[10],[200],[5],[3],[90],],[[ 95],[15],[4],[11],[78],...
       ...
      ... #60,000 of them
      ]
  
 targets = [40,3,...,... ]

我大约有60,000 sequences940 unique events (vocabulary size),无论我使用哪种架构,我的验证精度都达到19%(验证损失3.5),并且开始下降,在测试中我得到的结果不超过20%数据。

我已经在LSTM层中尝试了dropoutrecurrent_dropout(最高为0.2),并且已经将LSTM架构简化为如下所示的非常简单的架构,但是在验证精度方面仍然没有超过19%(我猜过拟合)。我也尝试减小嵌入大小。这是我没有运气的最简单的模型

model = Sequential()
model.add(Embedding(vocabulary_size,32,input_length=seq_len)) #seq_length
model.add(LSTM(40,return_sequences=True,input_shape=(6,1),dropout=0.1,recurrent_dropout=0.1))
model.add(LSTM(20))
model.add(Dense(120,activation='relu'))
model.add(Dense(vocabulary_size,activation='softmax'))
sgd = optimizers.SGD(lr=0.01,decay=1e-6,momentum=0.9,nesterov=True)
model.compile(loss='categorical_crossentropy',optimizer=sgd,metrics=['accuracy'])

在此之前,我使用的是大型网络,之前每层3/4层lstm的大小分别为40-80,还尝试嵌入最大500的大小,但是验证和测试的性能相同,甚至达到20%如果培训达到90%。

除了19-20%之外,验证和测试准确性没有改善的原因是什么?

iCMS 回答:在LSTM中,验证损失/准确性始终达到某个阈值

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1733438.html

大家都在问