【发布时间】:2018-02-22 12:16:03
【问题描述】:
我在keras + tensorflow上创建了一个基于char的CNN模型用于文本分类——主要使用Conv1D,主要基于:
http://www.wildml.com/2015/12/implementing-a-cnn-for-text-classification-in-tensorflow/
该模型在测试数据集上的表现非常好,准确率超过 80%。但是我有误报的问题。原因之一可能是最后一层是具有softmax 激活函数的Dense 层。
为了了解模型的性能,我使用包含 31 个类别和 1021 个样本的数据集来训练模型,在 25% 的测试数据集上性能约为 85%
但是,如果包含假阴性,则性能会很差(我没有运行另一个带有假阴性的测试数据,因为手动测试很明显)- 每个输入都有相应的预测。例如一个句子acasklncasdjsandjas 可以产生一个类ask_promotion。
在这种情况下如何处理误报是否有任何最佳做法? 我的想法是:
- 实现一个
noise类,其中样本只是一组完全随机的文本。然而,这似乎没有帮助,因为噪声不包含任何模式,因此很难训练模型 - 将 softmax 替换为不需要所有输出概率为 1 的东西,这样无论其他值如何,小值都可以保持较小。我对此进行了一些研究,但没有太多关于更改此特定案例的激活函数的信息
【问题讨论】:
-
您能否发布混淆矩阵或提供更多关于类数、类平衡以及哪些类有误报(如果不是全部)的详细信息
-
@AhmedS 我在问题中添加了更多详细信息。
标签: tensorflow machine-learning nlp keras convolution