深度学习第20天_项目1_fasttext原理

fastText原理剖析

  1. fastText的模型架构

    fastText的架构有三层:输入层,隐含层,输出层

    输入层:是对文档embedding之后的向量,包含又N-gram特征
    隐藏层:是对输入数据的求和平均
    输出层:是文档对应标签

    如下图所示:
    在这里插入图片描述
    (1)N-gram的理解

    a. bag of word(词袋)
    在这里插入图片描述
    bag of word 又称为bow,称为词袋。是一种只统计词频的手段。

    b. N-gram模型

    但在很多情况下,词袋模型是不满足我们的需求的

    例如:我爱她 和 她爱我 在词袋模型下,概率完全相同,但其含义差别很大
    

    为了解决这个问题,就有了N-gram模型,它不仅考虑词频,还考虑当前词前面的词语,比如我爱 她爱。

    N-gram模型的描述是:第n个词出现与前n-1个词相关。而与其他任何词不相关

    例如:I love deep learning这个句子,在n=2的情况下,可以表示为{i love},{love deep},{deep learning},在n=3的情况下,可以表示为{I love deep},{love deep learning}。
    

    在n=2的情况下,这个模型被称为Bi-gram(二元n-gram模型)
    在n=3的情况下,这个模型被称为Tri-gram(三元n-gram模型)

    所以在fasttext的输入层,不仅有分词之后的词语,还包含有N-gram的组合词语一起作为输入

    (2)fastText模型中的层次化softmax

    为了提高效率,在fastText中计算分类标签的概率的时候,不再是使用传统的softmax来进行多分类的计算,而是使用哈夫曼树,使用层次化的softmax来进行概率的计算
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    层次化softmax的好处:传统的softmax的时间复杂度为L(labels的数量),但是使用层次化softmax之后的时间复杂度为log(L),从而在多分类的场景提高了效率

    (3)负采样(negative sampling)

    negative sampling,即每次从除当前label外的其他label中选择几个作为负样本,作为出现负样本的概率加到损失函数中
    好处:

    1.提高训练速度
    2.改进效果,增加部分负样本,能够模拟真实场景下的噪声情况,能够让模型的稳健性更强
    

    例如:
    假设句子1对应的类别有label1,label2,label3,label4,label5这5个类别,假设句子1属于label2,如果按照之前的方法,在反向传播时需要对5个类别的所有参数进行求导更新,这样计算量很大。而使用负采样的话,就可以只更新将句子1判定为label2的参数和不判定为label2的参数,这样计算量不仅小了,而且也可以真实情况下不仅仅只有5种label的情况

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值