FastText与word2vec的区别
准备
了解fasttext需要先从其原理涉及的知识开始。
- N-gram和cbow(参考:Word2vec And Doc2vec – 文本向量化 | Ripshun Blog)
- 层次softmax
层次softmox(Hierarchical Softmax)
在前文章中我介绍了一些关于word embedding的算法,而在神将网络算法中word2vec比较流行,在提高速度方面主要介绍了负采样的方法,本章主要介绍Hierarchical Softmax以及其在FastText上的运用。

这是一个哈夫曼树的形状,通过树型结构可以将a,b,c,d四个类别分成3层来表示,而如果将a,b,c,d看成Hierarchical Softmax输出的4个类别。
也就是说Hierarchical Softmax算法可以通过树型结构把普通的softmax输出的7的类别(树中的7个节点)进行分解,最后只运算3层输出4个类别的数据,从而节省了大量的时间。
Hierarchical Softmax在fasttext上的运用
我们知道Hierarchical Softmax主要作用在于减少最后输出的类别达到减少时间的作用,而softmax主要作用于神经网络模型的最后一层。
以cbow为例:

将多个n-gram作为输入,最后通过softmax输出一个trem,通过这个trem进行打分,最后通过计算trem内元素的大小可以得到最终的label,而Hierarchical Softmax直接以label的形式进行输出,省去了一些无用的判断过程,从而得出最终的label。
FastText与word2vec的联系和区别
联系:
- 两者都采用了神将网络模型的词向量表示法。
- FastText和cobw在结构和原理上相似。
区别:
两者的区别主要在于Hierarchical Softmax的使用
word2vec会生成全部label的概率从而通过比较得到最优label。
而fasttext通过树的结构动态的淘汰label,最后只能得到一个labe。
Fasttext的使用
fasttext不仅仅在词向量中,在自然语言文本分类上也有比较好的效果。
fastText 在https://github.com/facebookresearch/fastText/tree/master/python上提供了绑定了fastText库的Python接口及使用示例代码。

浙公网安备 33010602011771号