准备

了解fasttext需要先从其原理涉及的知识开始。

层次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接口及使用示例代码。

 
目前共有0条评论
  • 暂无Trackback
你目前的身份是游客,评论请输入昵称和电邮!