先前感谢您阅读我的问题!

我一直在使用CNN使用KERAS和TF对文本进行分类。我的数据是字符串“我阅读新闻”或“我阅读机器学习新闻”,标签是标签:数据科学,记者,孩子...

我的问题是,每个文本都可以附带多个标签。我应该如何构建目标以使我可以捕获每个多个输出中的每一个?

Description, Tag "I read the news", Child "I read the news", Reporter "I read machine learning news", Data Science "I read machine learning news", Reporter

有帮助吗?

解决方案

CNN(通常)使用SoftMax作为最后一层的激活函数,这给出了所有可能的标签上的概率分布。您可以使用某种损失函数来优化CNN,以生成新样本的“右”标签。

在这种情况下使用的损失函数是跨凝性损失或KL差异,该损失量衡量了两个分布的距离。对于多类分类(与您的情况不同,每个输入示例只有一个标签),所需的分布为(0,0,....,1,1,...,0),其中1在实际标签的位置出现。损失函数惩罚与该分布“远”的分布。

对于您的情况,您可以将输出编码为(0、0、1、0,... 1,..),因此,将其放在标签位置的位置,与输入相关联,并将KL-Divergence用作损失功能并优化您的CNN以最大程度地减少损失。

许可以下: CC-BY-SA归因
scroll top