阅读笔记

阅读笔记

本文探索了一种简单有效的文本分类的基线,我们的实验表明,我们的快速文本分类器fastText在准确性方面通常与深度学习分类器相当,并且在训练和评估方面快了许多数量级,我们可以用一个标准的多核CPU在不到10分钟的时间内训练超过十亿字的fastText模型,并且可以在不到一分钟的时间内对31万类中的500w个句子进行分类。

1 介绍

文本分类是自然语言处理中的一项重要任务,有许多应用,如作为网络搜索,信息检索,排名和文档分类(Deerwester et al., 1990;Pang and Lee, 2008),最近,基于神经网络的模型变得越来越受欢迎(Kim, 2014; Zhang and LeCun, 2015; Conneau et al., 2016),尽管这些模型在实践中表现很好,但是他们在训练和测试中都相对较慢,限制了他们在非常大的数据集上的使用。

 

同时,线性分类器通常被认为是文本分类问题的强基线(Joachims, 1998; McCallum and Nigam, 1998; Fan et al., 2008),尽管他们很简单,但如果使用正确的特征,它们通常会获得当前最好的结果(Wang and Manning, 2012),他们也有可能扩展到非常大的语料库。

在这项工作中,我们探索了在文本分类的问题中,将这些基线方法扩展到高纬度输出空间与超大型语料库,受到近期有效词表征学习的启发,我们发现,秩约束和快速损失近似的线性模型在达到当前最好水平的性能的同时,可以在十分钟内训练十亿个单词。我们在标签预测和情感分析两个不同的任务上评估了我们的fastText方法的质量。

 

2模型架构

本文描述的简单高效的句子分类器是使用词袋(BoW)表征句子,然后使用一个线性分类器对词袋表征的句子进行训练,这个线性分类器可以是逻辑回归模型或支持向量机(Joachims, 1998;Fan et al., 2008)然而线性分类器不会在特征和分类间共享参数,这可能限制高维输出空间上下文的泛化,一些类可能只有很少的训练样本。此问题的常见解决方案是将线性分类器分解为低秩矩阵或使用多层神经网络。

图一显示了一个简单的带秩约束的线性模型,第一个权值矩阵A是基于单词的查找表,

然后单词表征平均转换为文本表征,依次输入线性分类器,文本表征是可重用的隐藏变量,这种架构类似于Mikolov等人的Cbow模型(2013),其中单词被标签替换,我们使用softmax函数f来计算已知分类的概率分布,对于N个文档而言,这会导致在分类上负对数似然的最小化:

阅读笔记

 

其中Xn是第n个文档的标准化特征袋,Yn是对应的特征标签,A和B是权值矩阵,这个模型在多CPU中使用随机梯度下降和线性衰减的学习速率,以异步方式训练。

阅读笔记

 

2.1分层softmax

当分类数量非常大的时候,线性分类器的计算代价非常大,更准确的说,计算复杂度为O(kh),其中k为分类数目,h为文本表征的维数,为了减少运行时间,我们基于哈夫曼编码树(Mikolov等,2013)使用了分层的softmax(Goodman,2001)。在训练过程中,计算复杂度降至O(h log2(k))。

分层softmax在测试分类的时候也能很快搜索相似分类。每个节点都与一个概率相关联,该概率是从根到该节点的路径的概率。如果节点的深度为l + 1,父节点为n1,...。 。 。 ,nl,其概率为

阅读笔记

这意味着子节点的概率总是低于其双亲节点,深度优先搜索树在叶子节点中跟踪最大概率时,允许我们裁剪小概率分支。在实践中,我们发现复杂度在测试分类时,降低到了(h log2(k)),这种方法进一步使用二叉堆的时候,将复杂度进一步降低到O(log(T))。T是堆顶目标函数。

 

2.2N-gram特征

词袋对单词顺序是固定不变的,但是明确地计算这种词序往往是非常复杂,相反,我们使用n-gram袋,作为附加特征来留存一些局部词顺序的部分信息。在实践中这是非常有效的,同时可以获得与显式使用词顺序的方法相当的结果(Wang和Manning,2012)。我们使用哈希算法 (温伯格 et al.2009年) 来维持一个高效的内存N-gram映射,同样的哈希函数也出现在 Mikolov 等人(2011年)算法。这么做,我们可以把1亿特征的映射成1千万的二元映射。

3实验

我们在两个不同的任务上评估fastText。首先,我们将它与现有的文本分类器进行情感分析问题的比较,然后,我们评估它在标签预测数据集上扩展到高维输出空间的能力。请注意,我们的模型可以通过Vowpal Wabbit库来实现,但我们在实践中观察到,我们量身定制的实现至少快2-5倍。

 

3.1情感分析

数据集和基线:我们采用与Zhang等人相同的8个数据集和评估方法(2015)。N-gram和TFIDF采用了张等人的研究(2015),字符级卷积模型(char CNN)采用张和LeCun(2015)的研究,基于字符的卷积递归网络(char-crnn)采用了(xiao and cho2016)的研究,非常深的卷积网络(VDCNN)

我们采纳了唐等人 (2015 年)的评估办法,我们也在报告中采用他们的基线,以及基于递归网络(Conv GRNN 和 LSTM-grnn 神经网络)的两种方法。

阅读笔记

 

结论:

表一中显示的是我们的结果,我们使用十个隐藏单元,并对fastText迭代了5遍,同时设置验证集的学习速率为{0.05 0.1 0.25 0.5},在此任务中,增加双向映射信息,可将性能提高1%-4%。总体而言,我们的精度比char-CNN和char-CRNN稍好,但比VDCNN差一些,请注意,我们可以通过使用更多的n-gram来提高精度,例如与三字母组合,在Sogougoes上的表现高达97.1%,最终,图三显示我们的方法和Tang等人(2015)的方法相比也具有竞争力,我们调整验证集上的超参数,并观察到使用5个n-gram可获得最佳性能。与Tang等人不同(2015),fastText不使用预训练的词嵌入,这也解释了1%的精度差异。

阅读笔记

训练时间:char-CNN和VDCNN均在NVIDIA Tesla K40 GPU上进行训练,而我们的模型是在20个逻辑CPU上进行训练的,表2显示了使用卷积的方法比fastText慢几个数量级,通过使用最新版的cuda,可以将char-CNN的速度提高10倍,而fastText花费不到一分钟的时间来训练这些数据集,Tang等人的GRNNs方法(2015)在单个逻辑CPU上迭代一次大约需要12小时,与基于神经网络的方法相比,我们的提速随着数据集的大小而增加,提速至少达到15,000倍。

阅读笔记

3.2标签预测

数据集和基准:为了测试我们方法的可扩展性,对YFCC100M数据集进行进一步评估(Thomee et al., 2016),其中包含将近1亿张带有说明文字,标题和标签的图像。我们专注于根据说明文字和标题预测标签(我们不使用图像),我们删除了出现频率少于100次的单词和标签,并将数据分为训练,验证和测试集。训练集包含91,188,648个示例,验证集有930,497个示例,测试集543,424个示例。词汇量为297,141,共有312,116个唯一标签,我们将发布一个脚本来重新创建该数据集,以便可以复现我们的结果。

我们考虑一种基于频率的基准预测来检测高频标签,我们还将比较了Tagspace(Weston等人,2014)的研究,这是一个类似于我们的标签预测模型,但是是基于Weston等人的Wsabie模型。虽然 Tagspace 模型描述了使用卷积,我们的线性版本能够以更快的运算速度达到差不多的性能。

阅读笔记

结果和训练时间:

表5给出了fastText和基线的比较,我们将fastText迭代5次,并将其与两种大小的隐藏层的Tagspace相比,两个模型在小尺寸的隐藏层上有相似的表现,但是添加二元组可以大大提高准确性,在测试时,Tagspace需要计算所有类别的分数,这使得它相对较慢,而当类数很大(此处超过300K)时,我们的快速推断可显着提高速度。总体而言,我们可以更快地获得质量更高的模型,测试阶段的加速甚至更为显著(600倍加速)。 表4显示了一些定性示例

 

 

讨论和结论

在这项工作中,我们提出了一种简单的基线方法用于文本分类,与word2vec中未经监督训练的单词向量不同,我们的单词特征可以一起平均以形成良好的句子表示,在一些任务中,fastText获得的性能与受深度学习启发而提出的最新方法相当,但是速度上却更快。尽管深度神经网络在理论上有很多代表能力比浅层模型高,尚不清楚简单的文本分类问题(例如情感分析)是否是评估它们的正确方法,我们将公布代码,以便研究机构可以轻松地在我们的工作基础上进行构建。