word2vec训练优化之Hierarchical Softmax
在word2vec中,我们知道,在最后一层的输出softmax中计算量是非常大的,因为如果词表大小为N,就要计算N个词的概率。而H softmax中则是将N分类问题转变成logN次二分类问题。 因为H softmax中主要就是利用了哈夫曼树(哈夫曼树树相比其他二叉树,更高效、更节省内存编码),这里来个简单介绍:
具体地是结合了哈夫曼树来做,叶子节点代表每个词。非叶子节点对应一个逻辑回归二分类模型。每个词的概率就是从根节点到该叶子节点路径上的所有非叶子节点(逻辑回归的输出概率)之积。这样就不用算N个词的概率那么麻烦,提高一波效率,这就是word2vec的训练trick之一。
哈夫曼树构造步骤: 1、统计语料库中所有词的词频。 2、词频作为叶子节点的权重,构造哈弗曼树。(这样一来,词频高的词更接近根节点,优先更新,提高效率。)
先来一波符号定义: