微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 CNN 和 LSTM 元素改进文本分类模型?

如何解决如何使用 CNN 和 LSTM 元素改进文本分类模型?

我创建了一个 neural network提取方面、情绪或修饰语。你可以在下面找到我的代码。我得到了大约 62% 的 F1 分数,但我不知道为什么它给了我这么糟糕的结果。您对如何改进我的模型和 f1 分数有什么建议吗?目前包括 glove 100d、tensorflow、keras、python 3.7。

model =  Sequential()
model.add(Embedding(vocab_size,100,weights=[embedding_vectors],input_length=max_seq_length,trainable= False))

model.add(Conv1D(1000,1,activation=LeakyReLU(alpha=0.1)))
model.add(Conv1D(200,activation=LeakyReLU(alpha=0.1)))
model.add(Dropout(0.2))

model.add(Bidirectional(LSTM(units=100,dropout = 0.5,recurrent_dropout = 0.5,return_sequences=True,kernel_regularizer=regularizers.l2(0.000001))))
model.add(Dropout(0.5))

model.add(Timedistributed(Dense(512,activation=LeakyReLU(alpha=0.1))))
model.add(Dense(n_tags,activation='softmax'))

opt = RMSprop(learning_rate=0.0008)
model.compile(loss="categorical_crossentropy",optimizer=opt,metrics=["categorical_accuracy"])
model.summary()

# fit model on train data
model.fit(x_train,y_train,batch_size=32,epochs=10)

解决方法

几个问题:

  • “糟糕的训练数据”是什么意思?
  • 您的数据使用什么语言?
  • 预训练嵌入来自哪里?

尝试一些事情(没有特定的顺序,也绝不是详尽无遗的):

  • 使用转换器代替 LSTM,如果使用正确的语言,甚至可以使用经过预训练的转换器(例如 BERT)
  • 增加 LSTM 和/或 CNN 的层数
  • 查找更大维度的嵌入(GloVE 通常为 300-d)
  • 为您的 LSTM 添加(多头)自注意力
  • 使用验证集提前停止

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。