超快的 fastText

Word2Vec 作者、脸书科学家 Mikolov 文本分类新作 fastText:方法简单,号称并不需要深度学习那样几小时或者几天的训练时间,在普通 CPU 上最快几十秒就可以训练模型,得到不错的结果。

1. fastText 原理

fastText 方法包含三部分:模型架构、层次 Softmax 和 N-gram 特征。下面我们一一介绍。

1.1 模型架构

fastText 模型架构如下图所示。fastText 模型输入一个词的序列(一段文本或者一句话),输出这个词序列属于不同类别的概率。序列中的词和词组组成特征向量,特征向量通过线性变换映射到中间层,中间层再映射到标签。fastText 在预测标签时使用了非线性激活函数,但在中间层不使用非线性激活函数。

fastText 模型架构和 Word2Vec 中的 CBOW 模型很类似。不同之处在于,fastText 预测标签,而 CBOW 模型预测中间词。

1.2 层次 Softmax

在某些文本分类任务中类别很多,计算线性分类器的复杂度高。为了改善运行时间,fastText 模型使用了层次 Softmax 技巧。层次 Softmax 技巧建立在哈弗曼编码的基础上,对标签进行编码,能够极大地缩小模型预测目标的数量。具体细节参见文章

1.3 N-gram 特征

fastText 可以用于文本分类和句子分类。不管是文本分类还是句子分类,我们常用的特征是词袋模型。但词袋模型不能考虑词之间的顺序,因此 fastText 还加入了 N-gram 特征。“我 爱 她” 这句话中的词袋模型特征是 “我”,“爱”, “她”。这些特征和句子 “她 爱 我” 的特征是一样的。如果加入 2-Ngram,第一句话的特征还有 “我-爱” 和 “爱-她”,这两句话 “我 爱 她” 和 “她 爱 我” 就能区别开来了。当然啦,为了提高效率,我们需要过滤掉低频的 N-gram。

2. fastText VS Tagspace

Mikolov 在 fastTetxt 的论文中报告了两个实验,其中一个实验和 Tagspace 模型进行对比。实验是在 YFCC100M 数据集上进行的, YFCC100M 数据集包含将近 1 亿张图片以及摘要、标题和标签。实验使用摘要和标题去预测标签。Tagspace 模型是建立在 Wsabie 模型的基础上的。Wsabie 模型除了利用 CNN 抽取特征之外,还提出了一个带权近似配对排序 (Weighted Approximate-Rank Pairwise, WARP) 损失函数用于处理预测目标数量巨大的问题。

上面就是实验结果,从实验结果来看 fastText 能够取得比 Tagspace 好的效果,并拥有无以伦比的训练测试速度。但严格来说,这个实验对 Tagspace 有些不公平。YFCC100M 数据集是关于多标记分类的,即需要模型能从多个类别里预测出多个类。Tagspace 确实是做多标记分类的;但 fastText 只能做多类别分类,从多个类别里预测出一个类。而评价指标 prec@1 只评价一个预测结果,刚好能够评价多类别分类。

4. 总结

Facebook Research 已经在 Github 上公布了 fastText 的项目代码。不过这个项目其实是有两部分组成的,一部分是这篇文章介绍的 fastText 文本分类,另一部分是词嵌入学习。按论文来说只有文本分类部分才是 fastText,但也有人把这两部分合在一起称为 fastText,比如这篇文章 Comparison of FastText and Word2Vec。fastText 的词嵌入学习比 word2vec 考虑了词组成的相似性。比如 fastText 的词嵌入学习能够考虑 english-born 和 british-born 之间有相同的后缀,但 word2vec 却不能。fastText 的词嵌入学习的具体原理可以参照 论文

好像大家对 fastText 吐槽甚多,比如在微博和知乎。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深度学习框架大战正在进行,谁将夺取“深度学习工业标准”的荣耀?

    深度学习框架大战正在进行,谁将夺取“深度学习工业标准”的荣耀,我们拭目以待。

    AlgorithmDog
  • Javascript 侵入机器学习?

    大家可能都听说过 “亚特伍德定律” 这个笑话,大意是说任何能够由 JavaScript 所编写的内容最终都会由 JavaScript 进行编写。现在...

    AlgorithmDog
  • 强化学习系列之九:Deep Q Network (DQN)

    我们终于来到了深度强化学习。 ? 1. 强化学习和深度学习结合 机器学习=目标+表示+优化。目标层面的工作关心应该学习到什么样的模型,强...

    AlgorithmDog
  • 文本分类算法带监督的FastText

    FastText是Facebook开发的一款快速文本分类器,提供简单而高效的文本分类和表征学习的方法;其由两部分组成,在文末有连接以及github代码源与文本分...

    学到老
  • 文本分类算法带监督的FastText

    FastText是Facebook开发的一款快速文本分类器,提供简单而高效的文本分类和表征学习的方法;其由两部分组成,在文末有连接以及github代码源与文本分...

    学到老
  • 业界 | Facebook发布新版fastText:拓展至移动端,加入教程

    选自code.facebook 机器之心编译 参与:李泽南 fastText 是 Facebook 开发的一款快速文本分类器,提供简单而高效的文本分类和表征学习...

    机器之心
  • 怎样在小型设备上处理文本?试试 Facebook 的新版 fastText 吧

    近日 FAIR 实验室在官方博客中指出,目前 fastText 资料库已经能够在智能手机及小型电脑上使用,而且内存只需要几百千字节,充分增强了 fastText...

    AI研习社
  • 深度 | 比深度学习快几个数量级,详解Facebook最新开源工具——fastText

    导读:Facebook声称fastText比其他学习方法要快得多,能够训练模型“在使用标准多核CPU的情况下10分钟内处理超过10亿个词汇”,特别是与深度模型对...

    AI科技评论
  • 作为一个有追求的程序员,你应该掌握的七种武器

    1 科学上网 虽然国内互联网一片热闹的景象,但我们不得不承认,从硬件到软件,从协议到标准,我们现在使用的绝大部分技术都是起源于墙外,而Google是检索这些第一...

    企鹅号小编
  • 好雨云祁世垚将参加Qcon并发表主题演讲,欢迎到场聆听

    Rainbond开源

扫码关注云+社区

领取腾讯云代金券