赞
踩
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的情况
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。