Fasttext

article/2025/8/26 19:30:45

Fasttext

Paper

Fasttext特点

  1. 模型简单,只有一层的隐层以及输出层,因此训练速度非常快
  2. 不需要训练词向量,Fasttext自己会训练
  3. 两个优化:Hierarchical Softmax、N-gram

Fasttext模型架构

fastText模型架构和word2vec中的CBOW很相似, 不同之处是fastText预测标签而CBOW预测的是中间词,即模型架构类似但是模型的任务不同。

CBOW架构


(1) word2vec将上下文关系转化为多分类任务,进而训练逻辑回归模型,这里的类别数量 V V V词库大小。
通常的文本数据中,词库少则数万,多则百万,在训练中直接训练多分类逻辑回归并不现实。
(2) word2vec中提供了两种针对大规模多分类问题的优化手段, negative sampling 和hierarchical softmax。在优化中,negative sampling 只更新少量负面类,从而减轻了计算量。hierarchical softmax 将词库表示成前缀树,从树根到叶子的路径可以表示为一系列二分类器,一次多分类计算的复杂度从|V|降低到了树的高度。整体的复杂度从。

Fasttext架构


fastText模型架构:其中 x 1 , x 2 , … , x N − 1 , x N x_1,x_2,…,x_{N−1},x_N x1,x2,,xN1,xN表示一个文本中的n-gram向量,每个特征是词向量的平均值。这和前文中提到的cbow相似,cbow用上下文去预测中心词,而此处用全部的n-gram去预测指定类别。

  • x 1 , x 2 , … , x N − 1 , x N x_1,x_2,…,x_{N−1},x_N x1,x2,,xN1,xN一个句子的特征,初始值为随机生成也可以采用预训练的词向量
  • hidden: X i X_i Xi 的平均值 x
  • output: 样本标签

目标函数


N N N:样本个数
y n y_n yn:第n个样本对应的类别
f f f:损失函数softmaxt
x n x_n xn:第n个样本的归一化特征
A A A:权重矩阵(构建词,embedding)
B B B:权重矩阵(隐层到输出层)

词向量初始化
一个句子的embedding为 [ i w 1 , i w 2 , … . i w n , o w 1 , o w 2 , … o w s ] [iw_1,iw_2,….iw_n,ow_1,ow_2,…ow_s] [iw1,iw2,.iwn,ow1,ow2,ows]
i w i iw_i iwi:语料中出现的词,排在数组的前面
o w i ow_i owi:n-gram或n-char特征
初始化为随机数, 如果提供预训练的词向量,对应的词采用预训练的词向量

层次softmax


当语料类别较多时,使用hierarchical Softmax(hs)减轻计算量 hs利用Huffman 树实现,词生成词向量或label分类问题作为叶子节点 根据词或label的count构建Huffman树,则叶子到root一定存在一条路径利用逻辑回归二分类计算loss。

n-gram和n-char

Fasttext方法不同与word2vec方法,引入了两类特征并进行embedding。其中n-gram颗粒度是词与词之间,n-char是单个词之间。两类特征的存储均通过计算hash值的方法实现。

n-gram
示例: who am I? n-gram设置为2
n-gram特征有,who, who am, am, am I, I
n-char
示例: where, n=3, 设置起止符<, >
n-char特征有,<wh, whe, her, ere, er>

FastText词向量与word2vec对比

  • 模型的输出层
    • word2vec的输出层,对应下一个单词的概率最大值;fasttext的输出层是分类的label
  • 模型的输入层:
    • word2vec的输入层,是 context window 内的word;而fasttext 对应的整个sentence的内容,包括word,也包括 n-gram的内容;

代码

import fasttext
## 1 is positive, 0 is negativef = open('train.txt', 'w')
f.write('__label__1 i love you\n')
f.write('__label__1 he loves me\n')
f.write('__label__1 she likes baseball\n')
f.write('__label__0 i hate you\n')
f.write('__label__0 sorry for that\n')
f.write('__label__0 this is awful')
f.close()f = open('test.txt', 'w')
f.write('sorry hate you')
f.close()## 训练
trainDataFile = 'train.txt'classifier = fasttext.train_supervised(input=trainDataFile, ## 文件输入label_prefix='__label__', ## label前缀dim=2,# 词向量维度epoch=2, ## epoch次数lr=1, # 学习率lr_update_rate=50, # 多少步更新学习率min_count=1, # 最少的单词出现次数loss='softmax', ## loss function &#123;ns, hs, softmax&#125; [softmax] word_ngrams=2, # n-gram 窗口大小bucket=1000000) ## 叶子数## 保存模型
classifier.save_model("Model.bin")## 测试集测试testDataFile = 'test.txt'
classifier = fasttext.load_model('Model.bin')
result = classifier.test(testDataFile)
print ('测试集上数据量', result[0])
print ('测试集上准确率', result[1])
print ('测试集上召回率', result[2])res = classifier.predict(text=testDataFile)
print(res)

Fasttext 参数

The following arguments are mandatory:-input              training file path-output             output file pathThe following arguments are optional:-verbose            verbosity level [2]The following arguments for the dictionary are optional:-minCount           minimal number of word occurrences [1]-minCountLabel      minimal number of label occurrences [0]-wordNgrams         max length of word ngram [1]-bucket             number of buckets [2000000]-minn               min length of char ngram [0]-maxn               max length of char ngram [0]-t                  sampling threshold [0.0001]-label              labels prefix [__label__]The following arguments for training are optional:-lr                 learning rate [0.1]-lrUpdateRate       change the rate of updates for the learning rate [100]-dim                size of word vectors [100]-ws                 size of the context window [5]-epoch              number of epochs [5]-neg                number of negatives sampled [5]-loss               loss function {ns, hs, softmax} [softmax]-thread             number of threads [12]-pretrainedVectors  pretrained word vectors for supervised learning []-saveOutput         whether output params should be saved [0]The following arguments for quantization are optional:-cutoff             number of words and ngrams to retain [0]-retrain            finetune embeddings if a cutoff is applied [0]-qnorm              quantizing the norm separately [0]-qout               quantizing the classifier [0]-dsub               size of each sub-vector [2]

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

相关文章

[NLP]文本分类之fastText详解

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

FastText:高效的文本分类工具

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

FastText的简单介绍

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

快速文本分类(FastText)

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

FastText:快速的文本分类器

转载请注明作者和出处&#xff1a;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是一个框架&#xff0c;让深度模型可以学习到数据的分布&#xff0c;从而通过数据的分布生成新的数据(服从同一分布)。 其由一个判别器和一个生成器构成&#xff0c;生成器负责生成“仿造数据”&#xff0c;判别器负责判断“仿造数据”的质量。两者一起…

GAN论文阅读——DCGAN

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

DCGAN整理总结

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

DCGAN论文翻译

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

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

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

DCGAN 源码解析

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

pytorch搭建DCGAN

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

tensorflow实现DCGAN

1、DCGAN的简单总结 【Paper】 &#xff1a; 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进行介绍。在向其展示许多真实名人的照片之后&#xff0c;我们将训练一个生成对抗网络&#xff08;GAN&#xff09;来产生新名人。此处的大多数代码来自pytorch / examples中的dcgan实现 &#xff0c;并且本文档将对该实现进行详尽的…

DCGAN原文讲解

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

DCGAN

转自&#xff1a;https://blog.csdn.net/liuxiao214/article/details/74502975 首先是各种参考博客、链接等&#xff0c;表示感谢。 1、参考博客1&#xff1a;地址 ——以下&#xff0c;开始正文。 2017/12/12 更新 解决训练不收敛的问题。 更新在最后面部分。 1、DCGAN的…

深度学习之DCGAN

这一此的博客我给大家介绍一下DCGAN的原理以及DCGAN的实战代码,今天我用最简单的语言给大家介绍DCGAN。 相信大家现在对深度学习有了一定的了解,对GAN也有了认识,如果不知道什么是GAN的可以去看我以前的博客,接下来我给大家介绍一下DCGAN的原理。 DCGAN DCGAN的全称是Deep Conv…

对抗神经网络(二)——DCGAN

一、DCGAN介绍 DCGAN即使用卷积网络的对抗网络&#xff0c;其原理和GAN一样&#xff0c;只是把CNN卷积技术用于GAN模式的网络里&#xff0c;G&#xff08;生成器&#xff09;网在生成数据时&#xff0c;使用反卷积的重构技术来重构原始图片。D&#xff08;判别器&#xff09;网…

对抗生成网络GAN系列——DCGAN简介及人脸图像生成案例

&#x1f34a;作者简介&#xff1a;秃头小苏&#xff0c;致力于用最通俗的语言描述问题 &#x1f34a;往期回顾&#xff1a;对抗生成网络GAN系列——GAN原理及手写数字生成小案例 &#x1f34a;近期目标&#xff1a;写好专栏的每一篇文章 &#x1f34a;支持小苏&#xff1a;点赞…

DCGAN理论讲解及代码实现

目录 DCGAN理论讲解 DCGAN的改进&#xff1a; DCGAN的设计技巧 DCGAN纯代码实现 导入库 导入数据和归一化 定义生成器 定义鉴别器 初始化和 模型训练 运行结果 DCGAN理论讲解 DCGAN也叫深度卷积生成对抗网络&#xff0c;DCGAN就是将CNN与GAN结合在一起&#xff0c;生…