deep-learning - 为什么高级 LSTM 模型的结果并不比简单模型的结果好?
问题描述
我已经实现了这篇文章中提出的模型,它是一个文本分类模型,它使用句子表示,而不仅仅是单词表示来对文本进行分类。
model=tf.keras.Sequential()
embeding_layer=layers.Embedding(self.vocab_size,self.word_vector_dim,weights=[word_embeding_matrix],trainable=False,mask_zero=False)
model.add(TimeDistributed(embeding_layer))
model.add(TimeDistributed(tf.keras.layers.LSTM(50)))
model.add(tf.keras.layers.Bidirectional(costumized_lstm.Costumized_LSTM(50)))
model.add(layers.Dense(6,activation='softmax'))
opt=tf.keras.optimizers.Adam(learning_rate=0.001)
model.compile(optimizer=opt,loss='categorical_crossentropy',metrics=['accuracy',self.f1_m,self.precision_m, self.recall_m])
self.model=model
我使用一个包含 40000 个文档和 6 个不同标签的数据集来训练它。(30000 用于训练,10000 用于测试)。我使用预训练的词嵌入,该模型的输入是(样本、句子、单词)。它达到了 84% 的准确率。问题是我可以用这个简单的模型很容易地达到这个精度:
model=tf.keras.Sequential()
embeding_layer=layers.Embedding(self.vocab_size,self.word_vector_dim,weights=[word_embeding_matrix],trainable=False,mask_zero=False)
model.add(embeding_layer)
model.add(tf.keras.layers.Bidirectional(layers.LSTM(50)))
model.add(layers.Dense(6,activation='softmax'))
opt=tf.keras.optimizers.RMSprop(learning_rate=0.001)
model.compile(optimizer=opt,loss='categorical_crossentropy',metrics=['accuracy',self.f1_m,self.precision_m, self.recall_m])
self.model=model
这个不是基于句子表示的,这个模型的输入是(样本,单词)。第一个模型有什么问题?我的实施错了吗?我应该怎么办?
两种模型的训练过程都过拟合了 84%。我也使用了所有技巧来克服过度拟合,但我没有得到任何结果。请问有什么建议吗?[![在此处输入图像描述][2]][2]
解决方案
推荐阅读
- excel - 如何在不依赖位置文件路径的情况下召唤图片?
- python - 将日期从 0-100 更改为 dd-mm-yy
- android - Android 和 Akka 2.5 集成
- amazon-web-services - AWS:使用 ALB 提供的访问令牌的 API 网关授权方
- typescript - 使用 Typescript 读取和复制文档集合
- google-apps-script - 如何将随机变量保存在同一个位置?
- python - 再营销受众示例代码的问题
- java - Spring GetMapping 注解异常
- scala - 如何在 EMR 上使用 spark 有效读取/解析 s3 文件夹中的大量 .gz 文件
- laravel - 如何在 Laravel 上进行自定义身份验证?