脸书论文翻译《Bag of Tricks for Efficient Text Classification》

这篇论文挂在arxiv上已经一年了,第一版并没有引起我太多的注意,因为那个时候fastText看上去更像是一个实验室的helloWorld,直到最近我被一遍又一遍刷屏的CNN文本分类弄得有点烦躁,所以想用这篇脸书的软文来平衡一下,同时也让我自己思考,深水区的文本分类怎么做。

本文探讨了一种简单高效的基线文本分类。我们的实验显示,我们的快速文本分类器 fastText 通常是可以在训练的准确性上和深度学习分类器看齐,同时训练和分类速度是要快很多数量级。我们可以在十分钟以内使用标准的多核CPU训练上超过 10 亿字,还可以在不到一分钟的时间,对50万句子,进行多达31万总类别的分类。

1. 介绍

文本分类在自然语言处理的许多应用,例如 web 搜索、 信息检索、 排序和文档分类 (迪尔韦斯特 et al.,1990 年;彭和李,2008年)中发挥重要作用。近年来,基于神经网络的模型已经成为越来越受欢迎 (Kim,2014;张和 LeCun,2015;Conneau et al.,2016年)。尽管这些模型实现很好的性能,在实践中,训练和测试的速度往往是不尽人意,这就极大限制他们在超大数据集上的应用。同时,在文本分类问题里,线性分类器常常被视为强基线分类器 (Joachims,1998 年;麦卡勒姆和噶,1998 年;风扇 et al.,2008年)。虽然它们构造简单,如果能够构造正确的特征,往往能够取得很好的效果 (王和曼宁,2012年)。所以,这些算法也是有可能应用到超大语料库 (Agarwal et al.,2014年)。

在本文描述的工作中,我们探讨了在基于上下文的文本分类问题中,如何扩展这些基线算法去应对大规模语料库与高纬度的输出空间。这些工作的灵感来源于这个有效词表征学习算法 (Mikolov et al.,2013;开徵 et al,2015年),我们发现,带有秩约束和损失快速估计的线性模型可以在十分钟内训练10亿单词。在这篇文中,我们对两个不同的任务,标签预测和情感分析进行了质量评价

2. 模型架构

本文描述的简单高效句子分类器是使用词袋(BoW)表征句子,然后使用一个线性分类器对词袋表征的句子进行训练。这个线性训练器可以是,逻辑回归或支持向量机 (Joachims,1998 年;风扇 et al.,2008年)。然而,传统的线性分类器在特征和分类之间不共享参数,这可能限制高维输出分类空间上下文的泛化,在很高纬度的输出分类中的某些类可能只有很少的训练样本。通常对这一问题的解决办法是为线性分类器因式分解进低秩矩阵 (Schutze,1992 年;Mikolov et al.,2013年) 或使用多层神经网络 (Collobert 和韦斯顿,2008 年;张 et al.,2015年)。图 1 显示了一个简单的带秩约束的线性模型。第一个权重矩阵 A 是基于单词的查找表,这样可以把单词平均转换到文本形式,这样就可以输入线性分类器。

图1

文本表征是可以重用的隐变量。这种模型架构类似于Mikolov 等人提出的CBOW模型 (2013 年),也就是用标签取代之间的单词。我们使用 softmax 函数 f 来计算已知分类的概率分布。对于 N 个文档而言,这就会导致在分类上负对数似然的最小化,公式如下图:

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

2.1 分层Softmax

当分类数量庞大的时候,线性分类器的计算代价十分昂贵。更确切地说,其计算复杂度是 O(kh) ,k是分类数,h 文本表征的维度数。为了提高我们的运行时间,我们使用基于哈夫曼编码树 (Mikolov et al.,2013年) 的分层 softmax (古德曼,2001年)。在训练中,计算复杂度降到 O (h log2 (k))。

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

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

2.2 N-gram 特征

词袋对词序是固定不变的,但是明确地计算这种词序往往是非常复杂。相反,我们使用 N-gram袋作为附加特征来留存一些相近词序的部分信息。这种做法能够和显式使用词序 (王和曼宁,2012年) 的方法得到非常有效和相似的效果。

我们使用哈希算法 (温伯格 et al.2009年) 来维持一个高效的内存N-gram映射,同样的哈希函数也出现在 Mikolov 等人 (2011 年)算法。这么做,我们可以把1亿特征的映射成1千万的二元映射。

3. 实验过程

我们使用 fastText 对两个不同的任务进行了评估。首先,我们将它和现有文本分类的情感分析算法进行比较,然后,我们通过一个超大标签预测数据集来评估其高维输出空间应用能力。请注意,我们的模型可以与 Vowpal Wabbit库一起工作,但我们的实践观察来看,我们的执行速度至少是原生实现2到5倍。

3.1 情感分析

数据集和基线。我们采用相同 的8个数据集和评估办法(张等 2015 年),对于N-gram和TF-IDF算法评估结果,直接采用张等人的研究 (2015 年)。字符级卷积模型 (char CNN)采用 张和 LeCun (2015 年)的结论,字符基于卷积递归网络 (char-CRNN)模型采用 (肖和 Cho,2016年)的研究结论,超深积网络 (VDCNN) 模型采用 Conneau 等人 (2016 年)的研究结论。

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

结论。在下图中显示的是我们的结果。我们使用 10 个隐藏的单位并运行 fastText 5遍,同时设置学习速率 {0.05、 0.1、 0.25、 0.5}。在此任务中,增加双向映射信息,可以提高性能 1-4%。总体而言,我们算法的精度优于 char CNN 和 char CRNN,稍差 VDCNN。请注意,我们可以通过使用更多的N-gram来提升精度,例如使用三元映射,这样做,在Sogou数据集上的性能高达 97.1%。最后,表 3 显示了各类参与比较的算法的结果,这些结论描述在唐等人 (2015 年)的研究。我们调整对验证集的超参,观察到使用 N-gram到五元的时候,可以达到最佳的性能。同时,不像唐等人 (2015 年)的研究,fastText 不使用预先训练的 词嵌入,这就是大家在精度上有 1%差异的原因。

训练时间。不管是Char CNN 还是 VDCNN,它们都是在NVIDIA Tesla K40 GPU上训练的。但是,我们的模型只是在一个20逻辑核的CPU 上运行。上面表 2 显示了使用卷积的方法是比 fastText 慢几个数量级。使用更新版本的CUDA可以对于char CNN提速十倍,fastText还是要快一分钟。GRNNs 方法的唐等人 (2015 年) 每一遍训练在单CPU单线程要花大约 12 小时,我们的算法可以达到15000倍的速度提升。

3.2 标签预测

数据集和基线。为了测试我们的方法的可扩展性,我们进一步评价标签预测算法。这一测试是在 YFCC100M 数据集 (Thomee et al.,2016年)上完成的。这是一个1亿幅具有标题、 标题和标签图像的数据集。我们专注于预测 (我们不使用图像数据) 标题和标题标签。我们删除出现频率低于100的。并且把数据分成训练、 验证和测试三类。训练集包含 91,188,648 个样本 (150亿个标记)。验证集包含930,497 个样本,测试集包含 543,424个样本。字典的大小是 297,141和312,116 的独特标记。我们将发布一个脚本用于重新创建此数据集,以便可以重现我们的运行结果。我们的算法精度达到了 1。

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

结果和培训时间。表 5 给出了 fastText 和基线的比较。我们为 5 世纪运行 fastText 并把它比作 Tagspace 两种大小的隐藏层,即 50 和 200。这两种模型实现类似的性能与小隐藏图层,但添加这种组给我们的精度显著提高。在测试时,Tagspace 需要为所有的类使它相对较慢,而我们快速推理给明显提速,当班级数目较大时 (超过 300 K 这里) 计算分数。总体而言,我们在一个数量级以上更快地获得更好的质量模型。加速的测试阶段是更多拦蓄 (600 × 加速)。表 4 显示了一些定性的示例。


在这项工作,我们提出一种文本分类的简单的基准方法。与 unsupervisedly 训练的词向量从 word2vec,不同我们 word 功能可以将平均在一起到形式好句子的表述方式。在几项任务,fastText 获取与最近提出的方法启发通过深入学习,同时更快的性能。虽然深神经网络理论在多高的表达能力比浅模型,它是不清楚如果情绪分析简单的文本分类问题是正确的对它们进行评估。我们将发布我们的代码,以便研究社区可以轻松地构建在我们的工作。

感谢和参考文献没有列出,大家可以自己去看论文

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容