Tensorflow:分层Softmax实现

16

我目前有用向量表示的文本输入,并且我想对它们进行分类。因为它们是多级别的分类,所以我打算使用Hierarchical Softmax

Example:

 - Computer Science
     - Machine Learning
     - NLP
 - Economics
 - Maths
     - Algebra
     - Geometry
我不知道如何在Tensorflow中实现它。我遇到的所有示例都使用其他框架。
谢谢

你能写下你想要实现的确切公式吗? - MZHm
我需要首先构建分层树。假设1个输入的输出树路径为[A1-> A10-> A101],那么loss_of_that_input = softmax_cross_entropy(A1|Ax) + softmax_cross_entropy(A10|A1x) + softmax_cross_entropy(A101|A10x) - Viet Phan
@MZHm,您可以在此处查看一个实现示例(但它并未使用TensorFlow):https://talbaumel.github.io/softmax/ - Viet Phan
2个回答

13

如果您的总类别数在数百到数千个范围内(少于50K),实际上您无需考虑使用分层Softmax。这种方法是为了在分类成数百万类别时(例如词汇表中单词的数量)更快地运行训练而设计的。

根据我的经验(使用朴素贝叶斯和神经网络),在训练时利用分层结构不一定会提高您的分类质量。

然而,如果您有兴趣实现分层Softmax,那就是另外一回事了。


1
你是否有权威的来源或测量数据,关于普通softmax与具有10,000-100,000个类别的分层softmax的性能比较?因为其他(非正式)教程中提到,在达到10,000个标记时应开始考虑使用自适应或分层softmax... - Maarten

5

使用分层softmax网络后,你的准确率有所提高吗? - LiuJia
@LiuJia 我使用分层softmax得到了更好的结果(约+10%,但不是很确定)。将其视为全能型人才:如果一个人可以从A、B、C...到Z做许多工作,那么通常他/她不会成为其中任何一项的专家。而只在他们整个生命中做A或B的人将成为专家。同样,如果一个神经元单元被迫为每个类别(例如0-9数字)进行训练,它就不像我按相似数字分组时那样高效:(1,4,7),(5,6),(3,8),... - Viet Phan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接