fasttext 文本分类_fastText(一):分类模型

fasttext实际上分为两部分

  • 分类模型 (跟CBOW比较像)
  • 词向量学习(跟SG比较像)

FastText分类模型

Bag of Tricks for Efficient Text Classification Abstract
“本文探索了一种简单有效的 基准文本分类模型,我们的实验显示,我们的快速文本分类器fastText和深度学习分类器 在准确度上旗鼓相当,在训练和评估速度上还比深度学习分类器 快上几个数量级,我们使用标准多核CPU在不到10分钟的时间内用fastText训练超过10亿个单词,并且一分钟之内可以对50万个句子31.2万个类别的数据做分类。“

与CBOW的异同

This architecture is similar to the cbow model of Mikolov et al. (2013), where the middle word is replaced by a label.

fasttext在模型结构上和CBOW几乎是一样的,只是把预测中心词换成了预测类别,具体来说:

  1. CBOW是将window_size的上下文词的向量做平均,提取的是上下文词特征;fasttext是将一个句子所有词做平均,提取的是句子的特征;
  2. 根据1,CBOW提取上下文词特征去预测中心词,fasttext提取句子特征预测句子分类
  3. 根据2,CBOW是无监督学习,无需标注语料,fasttext是监督学习,需要标注语料

另外还有几点CBOW和fasttext无区别,但是容易误解的点:

  • CBOW和fastText都是用平均值来预测的。(CBOW不是求和,是求平均)
  • N-gram对于CBOW和fastText都是锦上添花的元素,不是标配。
  • 词向量初始化都是随机的,fastText并没有在word2vec预训练词嵌入的基础上再训练。

这段来自:https://zhuanlan.zhihu.com/p/138019676

模型结构

9b392cdc4623b6ee093dc9323cbb7016.png

即一个句子的N个n-gram特征

​, 经过embedded和averaged,送到隐层,再到输出层就完事了

原文损失函数:

其中​是

句子的特征,AB分别是embedding层和Linear层参数,​
是类别,f是softmax函数.

问题和优化

有两个问题:

  • 可以看到最后还是用的softmax,那必然就会有速度慢的问题,
  • 这里​
    就是一个词袋思想把所有词塞一起,必然就忽略了词序的信息,BTW,CBOW连续词袋模型和传统BOW模型区别的这个continuous就体现在,CBOW没有用词频,而是连续的分布式表示(有点跑题,就是记录一下)

根据论文中的小标题:

  1. Model architecture
    2.1 Hierarchical softmax
    2.2 N-gram features

作者做了两步优化解决上述两个问题:

  1. 层次softmax:原本计算复杂度
    ​,k是类别数,h是文本表示的维度,经过基于哈弗曼树的层次Softmax,复杂度降到​
  2. N-gram 特征:完全词袋特征忽略词序肯定不行,考虑词序又是个很费计算的事,怎么办,作者是在原来词袋里再附加一些n-grams词,这样可以捕捉到一些局部的词序信息。词太多又影响了效率和内存,作者这里用了一个hashing trick,对n-grams词,可以多个词用一个向量,优化内存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值