fastText模型

article/2025/8/26 19:34:00

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 目标
  • 一、fastText的模型架构
    • 1. N-gram的理解
      • 1.1 bag of word
    • 2. fastTex模型中层次化的softmax
      • 2.1 哈夫曼树和哈夫曼编码
        • 2.1.1 哈夫曼树的定义
        • 2.1.2 哈夫曼树的相关概念
        • 2.1.3 哈夫曼树的构造算法
        • 2.1.3 哈夫曼树编码
        • 2.1.4 梯度计算
    • 3. 负采样


目标

1. 能够说出fastText的架构
2. 能够说出fastText速度快的原因
3. 能够说出fastText中层次化的softmax是如何实现的


提示:以下是本篇文章正文内容,下面案例可供参考

一、fastText的模型架构

fastText的结构非常简单,有三层:输入层、隐藏层、输出层(softmax)
**输入层:**是对文档embedding之后的向量,包含N-gram特征
**隐藏层:**是对输入数据的求和平均
**输出层:**是文档对应标签
如图所示:
在这里插入图片描述

1. N-gram的理解

1.1 bag of word

在这里插入图片描述
bag of word 又称为词袋,是一种只统计词频的手段,在fastText的输入层,不仅有分词之后的词语,还有包含有N-gram的组合词语一起作为输入。在机器学习中countVectorizer和TfidfVectorizer都可以理解为一种bow模型。

2. fastTex模型中层次化的softmax

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

2.1 哈夫曼树和哈夫曼编码

在这里插入图片描述

2.1.1 哈夫曼树的定义

哈夫曼树概念:给定n个权值作为n个叶子节点,构造一个二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的节点离根较近。

2.1.2 哈夫曼树的相关概念

**二叉树:**每个节点最多有2个子树的有序树,两个子树分别称为左子树、右子树。有序的意思是:树有左右之分,不能颠倒。
**叶子节点:**一棵树当中没有子节点的节点称为叶子节点。
**路径和路径长度:**在一棵树中,从一个节点往下可以到达孩子或孙子节点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定跟接地那的层数为1,则从跟接地那到第L层节点的路径长度为L-1。
**节点的权及带权路径长度:**若将树中节点赋予一个有某种含义的数值,则这个数值称为该节点的权,节点的带权路径长度为:从根节点到该节点之间的路径长度与该节点的权的乘积。
**树的带权路径长度:**树的带权路径长度规定为所有叶子节点的带权路径长度之和。
**树的高度:**树中节点的最大层次。包含n个节点的二叉树的高度至少为 l o g 2 ( n + 1 ) log_2(n+1) log2(n+1)

2.1.3 哈夫曼树的构造算法

  1. W 1 , W 2 , W 3.... W n {W1,W2,W3....Wn} W1W2W3....Wn看成n棵树的森林
  2. 在森林中选择两个根节点权值最小的树进行合并,作为一颗新树的左右子树,新树的根节点权值为左右子树的和
  3. 删除之前选择出的子树,把新树加入森林
  4. 重复2-3步骤,直到森林只有一颗树为止,该树就是所求的哈夫曼树。
    在这里插入图片描述
    可见:
  • 权重越大,距离根节点越近
  • 叶子的个数为n,构造哈夫曼树中新增的节点的个数为n-1

2.1.3 哈夫曼树编码

为了提高数据传送的效率,同时为了保证在任一字符的编码都不是另一个字符编码的前缀,这种编码称为前缀编码,可以使用哈夫曼树生成哈夫曼编码解决问题。
可用字符集中的每个字符作为叶子节点生成一颗编码二叉树,为了获得传送保温的最短长度,可将每个字符的出现频率作为字符节点的权值赋予该节点上,显然字使用频率越小权值越小,权值越小叶子就越靠下,于是频率小编码常,频率高编码短,这样就保证了此树的最小带权路径长度效果上就是传送保温的最短长度。
在这里插入图片描述

2.1.4 梯度计算

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
层次化的softmax的好处:传统的softmax的时间复杂度为L(labels的数量),但是使用层次化softmax之后时间复杂度的log(L)(二叉树的高度和宽度的近似),从而在多分类的场景提高了效率。

3. 负采样

negative sampling,即每次从除当前label外的其他label中选择几个作为负样本,作为出现负样本的概率加到损失函数中。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

好处:

  1. 提高训练速度,选择了部分数据进行计算损失,同时整个对没一个label而言都是一个二分类,损失时计算更加简单,只需要让当前label的值的概率尽可能大,其他label的都为反例,概率尽可能小。
  2. 改进效果,增加部分负样本,能够模拟真实场景下的噪声情况,能够让模型的稳健性更强

例如:
假设句子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优化的方法有:

  1. 层次化的softmax
  2. 负采样


http://chatgpt.dhexx.cn/article/DF8fYsom.shtml

相关文章

fastText Python 教程

诸神缄默不语-个人CSDN博文目录 fastText Python官方GitHub文件夹网址:fastText/python at main facebookresearch/fastText 本文介绍fastText Python包的基本教程,包括安装方式和简单的使用方式。 我看gensim也有对fasttext算法的支持(ht…

玩转Fasttext

Fasttext是Facebook AI Research最近推出的文本分类和词训练工具,其源码已经托管在Github上。Fasttext最大的特点是模型简单,只有一层的隐层以及输出层,因此训练速度非常快,在普通的CPU上可以实现分钟级别的训练,比深度…

FastText详解

词向量对比word2vec https://zhuanlan.zhihu.com/p/75391062 0、实战经验 word2vec vs fastText区别? 思想:将整篇文档的词及n-gram向量叠加平均得到文档向量,然后使用文档向量做softmax多分类。 word2vec vs fastText区别? …

FastText原理

一、简介 fasttext是facebook开源的一个词向量与文本分类工具,在2016年开源,典型应用场景是“带监督的文本分类问题”。提供简单而高效的文本分类和表征学习的方法,性能比肩深度学习而且速度更快。 fastText结合了自然语言处理和机器学习中最…

Fasttext

Fasttext Paper Fasttext特点 模型简单,只有一层的隐层以及输出层,因此训练速度非常快不需要训练词向量,Fasttext自己会训练两个优化:Hierarchical Softmax、N-gram Fasttext模型架构 fastText模型架构和word2vec中的CBOW很相…

[NLP]文本分类之fastText详解

Word2vec, Fasttext, Glove, Elmo, Bert, Flair pre-train Word Embedding 一、fastText简介 fastText是一个快速文本分类算法,与基于神经网络的分类算法相比有两大优点: 1、fastText在保持高精度的情况下加快了训练速度和测试速度 2、fastText不需要预…

FastText:高效的文本分类工具

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

FastText的简单介绍

0、引言 FastText是facebook开源的一款集word2vec、文本分类等一体的机器学习训练工具。在之前的论文中,作者用FastText和char-CNN、deepCNN等主流的深度学习框架,在同样的公开数据集上进行对比测试,在保证准确率稳定的情况下,Fa…

快速文本分类(FastText)

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

FastText:快速的文本分类器

转载请注明作者和出处:http://blog.csdn.net/john_bh/ 一、简介二、FastText原理 2.1 模型架构2.2 层次SoftMax2.3 N-gram特征 三、 基于fastText实现文本分类 3.1 fastText有监督学习分类3.2 fastText有监督学习分类 三、总结 3.1 fastText和word2vec的区别3.2 小…

DCGAN的PyTorch实现

DCGAN 1.什么是GAN GAN是一个框架,让深度模型可以学习到数据的分布,从而通过数据的分布生成新的数据(服从同一分布)。 其由一个判别器和一个生成器构成,生成器负责生成“仿造数据”,判别器负责判断“仿造数据”的质量。两者一起…

GAN论文阅读——DCGAN

论文标题:Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks 论文链接:https://arxiv.org/abs/1511.06434 参考资料:http://blog.csdn.net/liuxiao214/article/details/73500737      …

DCGAN整理总结

DCGAN整理总结 GAN什么是GAN?GAN重要参数及损失函数 DCGAN什么是DCGAN?DCGAN结构TensorFlow版本MINIST手写体生成模型Pytorch版本人脸生成模型 GAN 什么是GAN? GAN是一个教深度学习模型捕捉训练数据的布局来从该布局中生成新数据的框架。最早…

DCGAN论文翻译

UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS (使用DCGAN的无监督表示学习) ABSTRACT(摘要) In recent years, supervised learning with convolutional networks (CNNs) h…

机器学习中的DCGAN-Tensorflow:用于更稳定的训练

https://www.toutiao.com/a6666031263536644621/ 自从Ian Goodfellow的论文以来,GAN已应用于许多领域,但其不稳定性一直存在问题。GAN必须解决极小极大(鞍点)问题,因此这个问题是固有的。 马鞍点的滑稽表示 许多研究人…

DCGAN 源码解析

为什么写Blog现在还没找到理由。不过用心看下去你会觉得更有意义。 我们以生成图片为例子: G就是一个生成图片的网络,它接受一个随机的噪声z,然后通过这个噪声生成图片,生成的数据记做G(z)。D是一个判别网络,判别一张图片是不是…

pytorch搭建DCGAN

我们知道gan的过程是对生成分布拟合真实分布的一个过程,理想目标是让判别器无法识别输入数据到底是来源于生成器生成的数据还是真实的数据。 当然这是一个博弈的过程并且相互促进的过程,其真实的过程在于首先判别器会先拟合真实数据的分布,然…

tensorflow实现DCGAN

1、DCGAN的简单总结 【Paper】 : http://arxiv.org/abs/1511.06434 【github】 : https://github.com/Newmu/dcgan_code theano https://github.com/carpedm20/DCGAN-tensorflow tensorflow https://github.com/jacobgil/keras-dcgan keras https://github.c…

DCGAN TUTORIAL

Introduction 本教程将通过一个示例对DCGAN进行介绍。在向其展示许多真实名人的照片之后,我们将训练一个生成对抗网络(GAN)来产生新名人。此处的大多数代码来自pytorch / examples中的dcgan实现 ,并且本文档将对该实现进行详尽的…

DCGAN原文讲解

DCGAN的全称是Deep Convolution Generative Adversarial Networks(深度卷积生成对抗网络)。是2014年Ian J.Goodfellow 的那篇开创性的GAN论文之后一个新的提出将GAN和卷积网络结合起来,以解决GAN训练不稳定的问题的一篇paper. 关于基本的GAN的原理,可以…