Keras 中具有数千个输出类的文本分类
数据挖掘
机器学习
神经网络
深度学习
喀拉斯
nlp
2021-09-17 11:06:59
3个回答
示例数与类数之比并不大。很少有类的出现次数很高(来自第二张图),并且分布似乎遵循幂律。
在这种情况下,我会建议以下策略,
- 按出现次数对标签进行排序,并丢弃出现次数很少的标签。这将使问题更容易处理。
- 您可以对从经典机器学习技术中获得的准确性进行基准测试。许多经典方法支持多标签输出,您可以在此处查看scikit-learn 库中的支持文档。
- 您可以混合使用无监督学习和最近邻方法。例如,在您的数据中学习 doc2vec 嵌入,包括标签,并从最近的匹配文档中建议标签以用于新输入。根据 doc2vec 标准,文档数量很少,您需要仔细调整 doc2vec 参数。
- 使用神经网络,您可以使用更合适的损失函数,例如多标签软边距损失。
我建议您从经典技术开始,首先对潜在准确性进行基准测试。
实际上,您可以通过深度学习轻松解决这些类型的问题。想一想一个聊天机器人,它可以在给定问题的情况下生成答案。如果我们认为每次都像您提到的那样,最终的 softmax 层应该预测类似于词汇量大小的概率分布。但事实并非如此。我们使用称为噪声对比估计 (NCE_LOSS) 的损失函数。在这里,我们对最可能的单词进行采样并使用它们来计算 softmax 层。这里我会提一下Tensorflow之类的来理解这个场景。
其它你可能感兴趣的问题