fasttext论文 Bag of Tricks for Efficient Text Classification


fasttext是Facebook AI 实验室在2016年开源的词向量训练和文本分类的工具。

Abstract

fasttext是一种情感分类和词向量表示的简单且有效的方法。在准确率上和一些深度学习分类器效果相当,在训练和测试的速度上,比深度学习的模型快了很多数量级。使用标准的多核CPU,10min以内可以训练1billion级的单词量,可在1min以内对50w量级的句子做312k类的分类。

1 Introduction

在信息检索、排序、文档分类等问题中,文本分类的文本表示是一个重要的任务。近期,越拉越多的应用一些基于深度学习的模型得到句子表示,并且取得了不错的效果,这些模型再训练和测试时比较慢,限制了它们在一些非常大的数据集上的应用。

一些简单的线性模型效果也不错,而且计算效率高。这些线性模型通常学习单词级别的表示,而后再进行组合得到句子级别的表示。本文的工作就是扩展这些模型以直接学习句子表示。通过合并一些像bag of n-grams的统计学方法,该方法的准确率和深度模型差别不大,但比深度模型快很多数量级。

本文的工作和1998年标准线性文本分类器的一些方法很类似。受一些用于非监督学习词表示的模型,本文探索了一些简单的方法。不同于14年Le和Mikolov提出的句子表示的学习方法,本文的方法在测试阶段不需要复杂的推论,可以将得到的文本表示在其它问题中复用。本文在标签预测和情感分析两类问题上对本文的模型进行评测。

2 Model architecture

句子分类的一种简单有效的方法就是通过用bag of words的方法表示句子然后训练一个线性分类器,如LR和SVM。然而线性分类器在不同的特征和类别上,参数无法共享,泛化性较差。普遍的解决方法是把线性分类器分解到低轶矩阵或者用多层的神经网络。在神经网络中,信息是通过隐藏层实现共享的。
图1 fast sentence classification模型结构
图1 fast sentence classification模型结构

模型结构中第一列的权重矩阵可以看成是句子中词的查询表(look-up table)。词的表示经过平均后得到整个文本的表示。这个结构和word2vec中的CBOW模型类似,差别在于输出层的词变成了标签。这个模型把有序的单词序列作为输入,然后得到基于之前定义好的类别的概率分布,概率是通过softmax函数计算得到。

模型的训练和word2vec类似,用随机梯度下降和反向传播法。本文利用多个CPU进行异步训练。

2.1 Hierarchical softmax

当目标类别比较多的时候,线性分类器的计算量非常大,k为类别,d为隐藏层的维度,则时间复杂度为O(kd)。为了提高时间效率,本文采用了基于Huffman编码树的层级softmax方法,时间复杂度降到了 O ( d l o g 2 ( k ) ) O(dlog_2(k)) O(dlog2(k))。在树结构中,目标即为叶子节点。

在测试阶段,确定当前单词最有可能的类别,层级的softmax也比较耗时。每个节点都有一个概率进行描述,这个概率是从根节点到当前节点的路径概率,如果某节点在第 l + 1 l+1 l+1层,祖先节点分别是 n 1 , n 2 , . . . , n l n_1, n_2,...,n_l n1,n2,...,nl,则该节点对应的概率为 P ( n l + 1 ) = ∏ i = 1 l P ( n i ) . P(n_l+1) = \prod_{i=1}^lP(n_i). P(nl+1)=i=1lP(ni).

根据公式可知,每个节点的概率都比其祖先节点的概率小。在树中,要找的是最大概率的叶节点,因此在追踪路径走向时,可以在某一层中抛弃那些概率较小的结点,也就是忽略那些概率较小的路径。所以测试阶段的时间复杂度降到了 O ( d l o g 2 ( k ) ) O(dlog_2(k)) O(dlog2(k)),这个方法则通过二叉树,把计算Top T的目标分类的时间复杂度降到了 O ( d l o g T ) O(dlogT) O(dlogT)

2.2 N-gram features

词袋模型忽略了词的顺序,但是考虑词的顺序则会增加时间复杂度。而本文利用n-gram的机制作为额外的特征来获取词语顺序的一些局部信息。这一招在实际过程中很管用,效果和直接使用词语顺序的方法差不多。

通过使用hash的trick,本文实现了一种快速且空间利用率高的n-gram的空间映射,当n为2时,只需要10M,其他情况下100M。

3 Experiments

3.1 Sentiment analysis

Datasets and baseline. 本文在8个数据集上进行了实验,采用了和Zhang el al.1相同的评测指标,选取的baseline是来自Zhang el al.论文里的N-grams、TFIDF、字母级别的卷积模型(char-CNN)和来自Conneau et al.2深度卷积模型(VDCNN),还和Tang et al.3的论文方法做了比较。

实验设置:10 hidden units,5 epochs,lr在验证集上{0.05, 0.1, 0.25, 0.5}.

准确率对比表
准确率对比表
bigram的引入对准确率提升1-4%,准确率随着n-grams中的n增加相应地增加,如n=3时,在Sougou数据集上提升到97.1%。

效率对比表
效率对比表

3.2 Tag prediction

Datasets and baseline. YFCC100M dataset, 包括100M带描述、标题和标签的图片。任务是通过标题和描述预测标签。移除出现次数少于100的词和标签,词典大小为297,141,共312,116个标签。训练数据集包括91,188,648个样例(1.5B token),验证集包括930,497个样例,测试集包括543,424个样例。

实验设置:5 epochs,baseline的方法Tagspace的hidden layer设为50或200. fasttext引入bigrams对效果提升明显。
测试时,Tagspace需要计算所有类别的分数,导致速度很慢,fasttext在数据类别很大时(> 300k)在速度上表现出明显优势。

准确率和效率对比表
准确率和效率对比表


  1. Character-level convolutional networks for text classification ↩︎

  2. Very deep convolutional networks for natural language processing ↩︎

  3. Document modeling with gated recurrent neural network for sentiment classification ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值