当学习率达到sm时,验证集比训练集的精度更高

2024-09-23 04:33:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试测试LSTM RNN和GRU RNN在预测时间序列(如果时间序列上升或下降,则分类为1/0)方面的行为差异。我使用fitçu生成器方法(如Keras François Chollet的书)

我把30个点反馈给网络,下一个点必须分类为向上或向下。训练集样本被重新洗牌,而验证样本当然不是。你知道吗

如果我不改变学习率的默认值(对于adam算法是10-3),那么通常的情况是,训练集在一定次数的epoch之后往往会过度拟合,无论是LSTM还是GRU单元。你知道吗

LSTM 1 layer 128N

请注意,我的绘图是用10个模拟平均的(这样我就摆脱了特定权重的随机初始化)

如果我选择较低的学习率,培训和验证的准确性见下文不同学习率的影响,在我看来,培训集不再能够过度拟合(???)你知道吗

learning rate impact on GRU network

当我比较LSTM和GRU时,更糟糕的是,在LSTM的情况下,验证集比训练集的精度更高。对于GRU的情况,曲线很接近,但训练集仍然较高

2 layer LSTM LR=1e-5

2 layer GRU LR=1e-5

请注意,对于1层LSTM,这一点不太强调

1 layer LSTM LR=1e-5

我已经测试了1或2层和一个不同的验证集,但结果是相似的。你知道吗

我的代码摘录如下:

modelLSTM_2a = Sequential()
modelLSTM_2a.add(LSTM(units=32, input_shape=(None, data.shape[-1]),return_sequences=True))
modelLSTM_2a.add(LSTM(units=32, input_shape=(None, data.shape[-1]),return_sequences=False))
modelLSTM_2a.add(Dense(2))
modelLSTM_2a.add(Activation('softmax'))
adam  = keras.optimizers.Adam(lr=1e-5, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
modelLSTM_2a.compile(optimizer= adam, loss='categorical_crossentropy', metrics=['accuracy'])

有人知道会发生什么吗?你知道吗

我真的对这种行为感到困惑,特别是在LSTM的案例中学习率的影响


Tags: addlayer时间分类情况序列样本shape