不使用CNN进行短文本分类(对生产标题进行分类)。
该代码来自
http://www.wildml.com/2015/12/implementing-a-cnn-for-text-classification-in-tensorflow/

训练集,测试集,validatino集的准确性非常高:


和损失是不同的。验证丢失是训练集和测试集丢失的两倍。(我不能上传多于2张图片。对不起!)

训练集和测试集是通过爬虫从Web上进行的,然后按7:3进行拆分。验证来自真实的应用消息,并通过手动标记进行标记。

我已经尝试了几乎所有的超参数。

我尝试了上采样,下采样,无采样。

批量大小1024、2048、5096

辍学与0.3、0.5、0.7

embedding_size包含30、50、75

但是这些都不起作用!

现在,我使用以下参数:

批次大小为2048。

embedding_size为30。

句子长度为15

filter_size是3,4,5

dropout_prob为0.5

l2_lambda为0.005

起初我认为这是过拟合的,但是模型在测试集中然后在训练集中表现良好,所以我很困惑!

测试集和训练集之间的分布是否有很大不同?

如何提高验证集的性能?

最佳答案

我认为损失的这种差异是由于验证数据集是从与训练/测试集不同的域中收集的:


  训练集和测试集是由爬虫通过Web进行的,然后将它们拆分
  7:3。验证来自真实的应用程序消息,并通过手动>标记进行标记


该模型在训练期间没有看到任何真实的应用程序消息数据,因此毫不奇怪,它无法在验证集上获得良好的结果。传统上,所有三个集合都是从相同的数据池生成的(例如,以7-1-2分割)。验证集用于超参数调整(batch_size,embedding_length等),而测试集则出于模型性能的客观度量而被保留。

如果您最终担心应用程序数据的性能,我会将数据集拆分为7-1-2(训练验证测试),并使用网络搜寻器数据扩充训练数据。

08-25 05:11