fastTEXT论文解读并附实例代码

news2024/11/15 17:54:32

上一篇博文是入门使用级别,但对于面试来说则不够,毕竟领导一问三不知必定over,其基本原理还是要搞清楚,因而有此博文。paper在此

0,绪论

考虑紧致特征以减少存储空间,提出在PQ( product quantization,也是笛卡尔乘积)基础之上存储词向量。文本分类可用于垃圾过滤。fastTEXT基于n-gram特征,降维,以及更快的softmax分类器,一些关键部分,特征剪枝,量化,hash,再训练使得文本分类模型很小(一般小于100kB)而并没有明显的牺牲acc和速度。由于不受纯二进制代码的约束,采用了更传统的编码方式,即采用矢量的幅度/方向参数化。因此,只需要编码/压缩一个酉d维向量,这很好地符合上述LSH和PQ方法。

1,方法

在文本分类中,线性分类器依旧是有竞争力的,而且训练更快。在线性文本分类中最有效的trick是使用一个低等级的约束减少计算负担,同时在不同类别之间共享信息。这在更大输出空间中更有效,尤其是一些类别训练样本较少时。本文中,一个类似的模型,取N个document的softmax loss的最小值,

\sum_{n=1}^{N}loss(y_{n},BAx_{n})

xn是one-hot向量的bag,yn是第n个document的label,在大的词典和大的输出空间中,矩阵A,B是大的,可占据GB内存,因此我们的目的就是减少此内存。

PQ 是一个在压缩域(compressed-domain)近似近邻检索中流行的方法。一个隐式的定义:

一个d维度的向量x近似为:\hat{x}=\sum_{i=1}^{k}q_{i}(x),那么PQ在压缩域估计内积为:x^{T}y\approx \hat{x}^{T}y

存储空间更依赖于词典大小,词典可能很大,而有很大部分的词典是无用的,或者多余的,直接减少高频词并不能令人满意,比如高频词“the” 和“is”. 发现哪个词或n-gram必须保留是特征选择的问题。hash也可进一步减少内存。

分类器中的B也经过压缩。总之这篇paper就是介绍的一个压缩技术PQ,而模型还是线性模型,激活函数可以是softmax,还可以是hierarchical softmax,也就是哈夫曼树:一个带权的路径长度最短的二叉树,也叫最优二叉树。

下图右边即是哈夫曼树,其权值为数值与深度的乘积和,13*1+7*2+2*3+5*3=48,此值小于左边的

 右边字母的分类可以表示为:D-0,B-10,C-110,A-111,是多个二分类综合在一起的。

其中的二分类由sigmoid来做,

3,压缩实例:参考博文

依旧以博文中的dbpedia数据为例:

#训练
fasttext supervised -input dbpedia.train -output train_out -dim 10 -lr 0.1 -wordNgrams 2 -minCount 1 -bucket 10000000 -epoch 5 -thread 4
#压缩
fasttext quantize -output train_out  -input dbpedia.train -qnorm -retrain -epoch 1 -cutoff 100000
#测试原模型
fasttext test    train_out.bin dbpedia.test
#测试压缩模型
fasttext test train_out.ftz dbpedia.test

关注本专栏获取更多。 

愿我们终有重逢之时,而你还记得我们曾经讨论的话题 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/57861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三、CANdelaStudio入门-视图类型(View type)

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的各个视图类型:Standard View、Expert V…

Jmeter的使用教程(安装)

前言:之前在工作中未接触过Jmeter,只是知道这个Java语言开发的工具主要是测试接口的,还能做一些性能和压力的测试、并发什么的。目前市面上的有postman、apifox,request、swagger。 一、下载: 1、可以直接到官网下载&a…

(Cascade extended state observer)级联ADRC的simulink仿真和程序---送给中国研究学者的精华版

在这里先声明一下,级联CESO由美国学者Rafal Madonski的论文 《Cascade extended state observer for active disturbance rejection control applications under measurement noise》提出,本人只是将他给的模型给中国学者研究, 模型适用于各…

做了几年“斜杠青年”,我在ZStack立志做国产云计算的研发

在浅黑科技《ZStack:这群做云的人有点“轴”》一文中,作者史中提到,这是一篇国产云计算佼佼者ZStack的创业史,文中记录了因为热爱而聚集起来的最早一批ZStacker,他们生活没有退路,但热爱未有止息。 实际上…

概率论与数理统计_第1章_几何概型

1 定义 若一个试验具有下列两个特征: (1)试验的所有可能结果是无限多个, 且全体结果可以用一个有度量的几何区域 Ω 来表示; (2)每个可能结果 都相同概率可能发生, 则该试验称为几何…

Pytorch:Torch数据类型学习整理与记录

文章目录前言一、Tensor数据类型简介Tensor数据类型是什么?Tensor数据类型有哪些指定调用的API生成相关数据类型dtype属性指定Tensor内置的简单数据类型二、Tensor数据类型的基本使用Tensor初始化基于list列表和nparrayTensor相关API基于指定Tensor类型进行初始化基于Randn生成…

postgres源码解析40 表创建执行全流程梳理--4

本文讲解非系统表的创建逻辑&#xff08;[<fontcolor0000dd>普通表和索引表]&#xff09;&#xff0c;其入口函数为heap_create&#xff0c;内部公共接口函数为RelationBuildLocalRelation和RelationCreateStorage相关知识回顾见&#xff1a; postgres源码解析38 表创建执…

Mac M1使用UTM安装centos7 x86_64虚拟机

一、环境说明 1. 宿主机环境 macbook m1 pro 16G 2. UTM版本 UTM是基于QEMU的系统模拟器和虚拟机主机&#xff0c;适用于iOS和macOS。 UTM is a full featured system emulator and virtual machine host for iOS and macOS. It is based off of QEMU. 最新版下载地址&…

带你玩转序列模型之NLP与词嵌入(二)

目录 一.Word2Vec 二.负采样 三.GloVe词向量 四.情绪分类 五.词嵌入除偏 一.Word2Vec 在上个视频中你已经见到了如何学习一个神经语言模型来得到更好的词嵌入&#xff0c;在本视频中你会见到 Word2Vec算法&#xff0c;这是一种简单而且计算时更加高效的方式来学习这种类…

用于 Python 降维的主成分分析

减少预测模型的输入变量数称为降维。 较少的输入变量可以产生更简单的预测模型&#xff0c;该模型在对新数据进行预测时可能具有更好的性能。 也许机器学习中最流行的降维技术是主成分分析&#xff0c;简称PCA。这是一种来自线性代数领域的技术&#xff0c;可用作数据准备技术…

耗时大半个月收整全套「Java架构进阶pdf」

花了我大半个月时间收整了全套的「Java架构进阶pdf」&#xff0c;这一波下来&#xff0c;刷完你就会知道&#xff0c;真真香啊&#xff0c;我的心血果然&#xff0c;没白费&#xff01; 请注意&#xff1a;关于全套的「Java架构进阶pdf」&#xff0c;我会从面试-筑基-框架-分布…

【Android App】实战项目之仿微信的视频通话(附源码和演示 超详细必看)

需要源码请点赞关注收藏后评论区留言私信~~~ 虽然手机出现许多年了&#xff0c;它具备的功能也越来越丰富&#xff0c;但是最基本的通话功能几乎没有变化。从前使用固定电话的时候&#xff0c;通话就是听声音&#xff1b;如今使用最新的智能手机&#xff0c;通话仍旧是听声音。…

无刷三相直流电机电动工具驱动方案设计

电动工具是一种工具&#xff0c;其致动通过附加的动力源和机构比仅其他手工劳动与使用手工工具&#xff0c;电动工具用于工业、建筑、花园、做饭、清洁等家务劳动&#xff0c;以及在房子周围用于驱动&#xff08;紧固件&#xff09;、钻孔、切割、成型、打磨、研磨、布线、抛光…

【微服务】Java agent 使用详解

一、前言 于一个即将上线的应用来说&#xff0c;系统监控是必不可少的&#xff0c;为什么需要监控呢&#xff1f;应用是跑在服务器上的&#xff0c;应用在运行过程中会发生各自意想不到的问题&#xff0c;像大家熟知的OOM&#xff0c;mysql故障&#xff0c;服务器宕机&#xff…

cubeIDE开发,基于已有的STM32CubeMX (.ioc)创建工程文件

一、STM32Cube 生态系统 可以在其官网查看&#xff0c;支持中文。 STM32Cube - Discover the STM32Cube Ecosystem - STMicroelectronics ​ 截取官网的STM32Cube家族的软件工具描述&#xff1a; 【1】STM32CubeMX, 面向任意STM32设备的配置工具。这款简单易用的图形用户界面为…

ubuntu根目录清理

0.防范于未然&#xff08;就像给window电脑清理垃圾&#xff09; 清理ubuntu用不上的东西的常用命令 # 系统自带清理命令 sudo apt-get autoclean sudo apt-get clean sudo apt-get autoremove# 查看目录占用空间 sudo du -cks * | sort -rn | head -10 sudo du --max-depth1…

[附源码]计算机毕业设计JAVA血库管理系统

[附源码]计算机毕业设计JAVA血库管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Ma…

Effective C++条款24:若所有参数皆需类型转换,请为此采用non-member函数

Effective C条款24&#xff1a;若所有参数皆需类型转换&#xff0c;请为此采用non-member函数&#xff08;Declare non-member functions when type conversions should apply to all parameters&#xff09;条款24&#xff1a;若所有参数皆需类型转换&#xff0c;请为此采用no…

Swift基础语法 - 枚举

枚举的基本用法 定义&#xff1a;枚举简单的说也是一种数据类型&#xff0c;只不过是这种数据类型只包含自定义的特定数据&#xff0c;它是一组有共同特性的数据的集合。 enum Direction {case northcase southcase eastcase west }enum Direction {case north,south,east,we…

数理统计笔记10:回归分析

引言 数理统计笔记的第10篇介绍了回归分析&#xff0c;从相关关系开始介绍&#xff0c;然后介绍回归分析&#xff0c;主要介绍了一元回归模型和多元回归模型&#xff0c;并对其中的原理和检验进行了叙述&#xff0c;最后简单介绍了一下可以化为线性回归模型的非线性回归模型。 …