首页 > 编程知识 正文

哈夫曼编码步骤,哈夫曼树的建立及哈夫曼编码

时间:2023-05-03 15:02:41 阅读:9526 作者:2352

1 .快速文本的模型体系结构快速文本的体系结构非常简单。 输入层非显示层输出层

输入图层:文档嵌入式之后的向量,包含n-gram特性

隐藏级别:输入数据的总平均值

输出级别:文档感知标签

如下图所示。

现在我再复习一下n-gram的理解

1、单词袋模型

bag of word又称bow,又称词袋,是只计数词数的手段

例如,在机器学习中,朴素贝叶斯预测文本类别,我们学习的countVectorizer和TfidfVectorizer都可以理解为bow模型

2、N-gram模型

但是,词袋模型往往不满足我们的要求

例如,我爱她和她爱我在词袋模型下,概率完全一样,但其含义确实非常不同

为了解决这个问题,建立了N-gram模型。 他不仅说话的频率,而且现在话前的话,比如我爱。 她爱着

在N-gram模型中,认为第n个单词的出现与前n-1个单词相关,不像朴素贝叶斯那样与当前事件a的发生和当前事件b的发生相关

例如,i love deep learning语句在n=2的情况下为{i love}、{love deep}、{deep learning} n=3的情况下为{i love deep}、{lovedeepleep}

将n=2称为bi-gram n=3称为tri-gram,具体而言,可以看到NLP学习笔记的N-gram的章节

因此,在fasttext的输入层中不仅包含分词后的词,还包含包含n-gram的组合词作为输入

2 .快速文本模型中的分层softmax

为了提高效率,在fastText中计算分类标签的概率时,不使用传统的softmax进行多分类的计算,而是使用利用哈夫曼树分层后的softmax进行概率的计算

2.1霍夫曼树和霍夫曼编码

2.1.1霍夫曼树的定义给出霍夫曼树概念:个权重作为n个叶的节点,构建一棵二叉树。 当该树的加权路径长度最小时,将这样的二叉树称为最佳二叉树,也称为huffman tree霍夫曼树

哈夫曼树是加权路径长度最短的树,附近有权重较大的节点

2.1.2霍夫曼树的概念路径和路径长度:在一个树中,从一个节点向下到达的儿孙节点之间的路径称为路径。 将路径中分支数称为路径长度,将根节点的层数设为1时,从根节点到第l层节点的路径长度为L-1

节点的权重和加权路径长度:如果赋予树中的节点具有某种意义的值,则将该值称为该节点的权重。 节点加权路径长度是从根结点到该节点的路径长度与该节点的权重的积

树的加权路径长度:树的加权路径长度被规定为所有叶节点的加权路径长度之和

树的高度:树中节点的最大层次,包含n个节点的二叉树的高度至少为log2(n1 )

2.1.3霍夫曼树的构造算法1.{w1、w2、w3.wn}视为n树森林

2 .选择森林中根节点权重最小的两棵树进行整合,作为新的左右子树,新树的根节点权重如下

左右子树之和

3 .删除以前选择的子树,将新树放入森林

4 .重复2-3步直到森林里只有一棵树,这就是那棵树想要的霍夫曼树

图标如下所示。

可显示:

1 .权重越大,越接近根节点

2 .设叶的个数为n,构成霍夫曼树的新节点的个数为n-1

这样就保证了哈夫曼的整个树中

2.2.1霍夫曼编码

分层softmax的好处:

传统的softmax的时间复杂度是l (标签数),但通过使用将softmax分层后的时间复杂度的log ) l (二叉树的高度和宽度的近似),在多分类的场景中效率得到提高

在每次从当前标签以外的标签中选择几个负样本时,negative sampling (负样本negative sampling )被添加到损耗函数中,作为出现负样本的概率

好处:

1 .加快训练速度,具体举例

2 .改善效果,部分增加负样本,可以模拟实际场景中的噪声情况,提高模型的鲁棒性

例如,假设与语句1对应的类别为Label1、Label2、Label3、Label4、label5这5个,如果语句1属于Label2,则以使P(Label2|语句1 )的概率最大为目标

但是,换个方法想想吧。 使用负样本时,如果Label2为正样本,其他为负样本,则p(d=1|语句1,Label2)和P(D=0|语句1,Label1)计算前5/2倍的参数即可

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。