我使用Keras在BiLSTM网络上尝试了时间序列学习问题。这是模型架构:
### BiLSTM
BiLSTM = Sequential()
BiLSTM.add(Embedding(input_dim,
50,
weights=[embedding_matrix],
input_length=max_sequence_length,
trainable=False))
BiLSTM.add(layers.Bidirectional(layers.LSTM(64,kernel_regularizer=l2(0.01),
recurrent_regularizer=l2(0.01),
bias_regularizer=l2(0.01))))
BiLSTM.add(layers.Dropout(.5))
BiLSTM.add(Dense(1, activation='sigmoid'))
BiLSTM.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
history = BiLSTM.fit(train_x,
train_y,
epochs=15,
batch_size=32,
validation_data=(valid_x, valid_y))
我的模型过度拟合,因此我一直在添加正则化技术(辍学,L2以及尝试更多/更少的#hidden单位)。该架构产生了以下精度/损耗曲线。我的损失曲线看起来越来越好,但我的准确性曲线仍然看起来很疯狂。如何解释呢?这仍然是一个过拟合的问题,还是我应该走另一个方向?