赞
踩
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
1. 能够说出fastText的架构
2. 能够说出fastText速度快的原因
3. 能够说出fastText中层次化的softmax是如何实现的
提示:以下是本篇文章正文内容,下面案例可供参考
fastText的结构非常简单,有三层:输入层、隐藏层、输出层(softmax)
**输入层:**是对文档embedding之后的向量,包含N-gram特征
**隐藏层:**是对输入数据的求和平均
**输出层:**是文档对应标签
如图所示:
bag of word 又称为词袋,是一种只统计词频的手段,在fastText的输入层,不仅有分词之后的词语,还有包含有N-gram的组合词语一起作为输入。在机器学习中countVectorizer和TfidfVectorizer都可以理解为一种bow模型。
为了提高效率,在fastText中计算分类标签概率的时候,不再使用传统的softmax来进行多分类的计算,而是使用哈夫曼树,使用层次化的softmax来进行概率的计算。
哈夫曼树概念:给定n个权值作为n个叶子节点,构造一个二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的节点离根较近。
**二叉树:**每个节点最多有2个子树的有序树,两个子树分别称为左子树、右子树。有序的意思是:树有左右之分,不能颠倒。
**叶子节点:**一棵树当中没有子节点的节点称为叶子节点。
**路径和路径长度:**在一棵树中,从一个节点往下可以到达孩子或孙子节点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定跟接地那的层数为1,则从跟接地那到第L层节点的路径长度为L-1。
**节点的权及带权路径长度:**若将树中节点赋予一个有某种含义的数值,则这个数值称为该节点的权,节点的带权路径长度为:从根节点到该节点之间的路径长度与该节点的权的乘积。
**树的带权路径长度:**树的带权路径长度规定为所有叶子节点的带权路径长度之和。
**树的高度:**树中节点的最大层次。包含n个节点的二叉树的高度至少为
l
o
g
2
(
n
+
1
)
log_2(n+1)
log2(n+1)。
为了提高数据传送的效率,同时为了保证在任一字符的编码都不是另一个字符编码的前缀,这种编码称为前缀编码,可以使用哈夫曼树生成哈夫曼编码解决问题。
可用字符集中的每个字符作为叶子节点生成一颗编码二叉树,为了获得传送保温的最短长度,可将每个字符的出现频率作为字符节点的权值赋予该节点上,显然字使用频率越小权值越小,权值越小叶子就越靠下,于是频率小编码常,频率高编码短,这样就保证了此树的最小带权路径长度效果上就是传送保温的最短长度。
层次化的softmax的好处:传统的softmax的时间复杂度为L(labels的数量),但是使用层次化softmax之后时间复杂度的log(L)(二叉树的高度和宽度的近似),从而在多分类的场景提高了效率。
negative sampling,即每次从除当前label外的其他label中选择几个作为负样本,作为出现负样本的概率加到损失函数中。
好处:
例如:
假设句子1对应的类别有Label1,Label2,Label3,Label4,Label5总共5个类别,假设句子1属于label2,那么我们的目标就是让P(Label2|句子1)这个概率最大,但是我们需要同时计算其他四类的概率,并再利用反向传播进行优化的时候需要对词向量都进行更新。这样计算量很大。
但是我们换个方式考虑:使用负采样的时候,把Label2认为是正样本,其他认为是负样本,那么只需要计算P(D=1|句子1,Label2)和P(D=0|句子1,Label2)们只需要计算之前的2/5倍的参数,那么负采样每次让一个训练样本仅仅更新一部分的权重,这样就会降低梯度下降过程中的计算量。
对softmax优化的方法有:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。