Word2vec原理+常见优化手段
官网地址:https://code.google.com/archive/p/word2vec/
我觉得原理讲的比较好的:https://www.cnblogs.com/pinard/p/7160330.html
最近发现学习知识还是尽量找官网的解释,比较全,别人讲过的会帮助你理解,但是会漏掉一些知识
word2vec是训练词向量的一款非常好用的工具,由谷歌发明,主要有:
1.2种模型: cbow(连续词袋模型)和skip-gram(跳字模型)
2.2种近似训练的方法:层次softmax和nagative_sampling(负采样)
一:2种模型 CBOW vs Skip-Gram
CBOW:输入特定词的上下文向量,输出是所有词的softmax的概率,训练的目标是使得特定词的softmax概率最大
Skip-Gram:输入特定词,输出是所有词的softmax概率,训练目标是使得特定词上下文的对应的词的出现概率最大
二:二种训练技巧
Word2vec实际上是一个浅层的神经网络,由输入层-隐藏层-输出层构成,输出层本来的目标是特定次的softmax概率,如果不加以优化,复杂度是V(词汇表大小),复杂度相当高,所以Word2vec提出了2种近似的训练办法,用以提升训练速度
1.Hierarchical Softmax
输入层到隐藏层,使用的是所有输入向量求和并取平均。而在隐藏层-输出层,则是构建了一颗霍夫曼树来替代隐层到输出层的映射,根节点的词向量对应着我们投影后的词向量,树的内部节点就相当于是所有隐藏层的神经元,而树的叶子节点就相当于是softmax输出层的神经元,树的叶子节点的大小就是词汇表的大小。
映射不是一下子完成的,而是沿着树节点一步步完成的,所以也叫做层次softmax。
具体是使用逻辑回归,用词向量和树的内部节点的参数,计算出往左还是往右走的概率,目标就是找到合适的所有节点的词向量和所有内部节点θ, 使训练样本达到最大似然
使用梯度上升进行优化
优点:将复杂度从V降低到了log2(V),且满足贪心的优化思想,越常出现的词汇,越靠近根节点
cbow:对2c个输入进行迭代
skip-gram:对2c个输出进行迭代
2.Nagative Sampling
hs的缺点是:虽然极大地提升了效率,但是如果是一个生僻词,那么需要向下走很久,所以采用ns来求解
取一个中心词作为正例,neg个采样出来的词作为负例,通过二元逻辑回归,得到每个词的词向量和对应的参数
如何采样?
按照每个词出现的频次,取四分之三次幂,得到每个词的出现的概率,按照这个概率来采样。(其实是概率*M,其中 M>>V,将1等分成M个线段,每个词汇根据自己的概率得到对应的长度,采样的到哪段就取对应段的词汇作为负例)
三、表现和适用情况:
1.结构:skip-gram (慢,但对罕见词效果更好) vs CBOW (fast)
2.训练方法:hierarchical softmax (对罕见词效果更好) vs negative sampling (对常见词效果更好,对低维度的词效果更好)
3.sub-sampling(下采样):在大数据集上,可以提升准确度和训练速度,1e-3 to 1e-5
4.维度:一般是越大越好,(也有可能会有反例)
5.窗口大小:skip-gram:10左右,cbow:5左右
所以如果要追求速度的话:CBOW+nagative sampling
要追求罕见词的表现的话:skip-gram+ hierarchical softmax
四、其他:
预训练的词向量
GoogleNews-vectors-negative300.bin.gz.
https://drive.google.com/file/d/0B7XkCwpI5KDYNlNUTTlSS21pQmM/edit?usp=sharing
如何衡量准确率:
./demo-word-accuracy.sh
词聚类:
./demo-classes.sh
从词到词汇(我理解是组合词)
./demo-phrases.sh
词的类比关系:
demo-analogy.sh
Word2vec原理+常见优化手段相关推荐
- mysql哪些优化手段_mysql explain 及常见优化手段
在工作中如果遇到慢sql通常都可以用explain进行解析. 先列一下各个列名以及含义 列名 描述 id 在一个大的查询中每一个查询关键字都对应一个id select type select关键字对应 ...
- MySQL中order by语句的实现原理以及优化手段
相信很多人在面试过程中,总被问到有没有 SQL 调优经验,对于工作经验年限较少的求职者,通常都是在面试之前从网上百度一些答案,提前背熟,然后面试的时候直接将提前背好的答案说出来.笔者作为一名菜鸟,在刚 ...
- 【重要】MySQL中order by语句的实现原理以及优化手段
写在前面 filesort排序算法参考 :https://blog.csdn.net/lijingkuan/article/details/70341176 双路排序:是首先根据相应的条件取出相应的排 ...
- 现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障
1.前言 众所周之,通常我们开发一个移动端应用,会直接调用系统提供的网络请求接口去服务端请求数据,再针对返回的数据进行一些处理,或者使用iOS中的开源AFNetworking/OKHttp这样的网络库 ...
- Nginx 是如何实现高并发?常见的优化手段有哪些?
点击关注公众号,实用技术文章及时了解 来源:toutiao.com/i6698255904053133827 这是一位读者带回来的面试题 Nginx 是如何实现并发的?为什么 Nginx 不使用多线程 ...
- 网络品牌推广带大家了解网站中有哪些常见的URL优化手段?
网络品牌推广中网站想要获得更高的排名和权重,自然是离不开优化人员的努力,坚持做好优化工作,巧用优化手段,探索新的优化技巧等帮助网站欧爱明更好,其中对于URL优化要怎么做才能帮助网站发挥更大的价值呢?下 ...
- mysql 优化关键字_Mysql之Explain关键字及常见的优化手段
Explain关键字字段描述: Explain关键字字段详情描述 id 我们写的查询语句一般都以SELECT关键字开头,比较简单的查询语句里只有一个SELECT关键字,但是下边两种情况下在一条查询语句 ...
- ASO优化优缺点各是什么?带你学会常见的优化手段
ASO优化优缺点各是什么? 优点:获客精准,投入金钱较低 缺点:优化时间长,因为优化标题和关键词修改时,需要应用市场审核. 安卓一般需要一到两天时间. 苹果如果审核被拒的话,有可能需要一周或者更长时间 ...
- MySQL 常见的数据库查询性能优化手段
简单介绍了一些常见MySQL数据库优化手段,比如减少数据访问.使用索引.使用关联查询等等. 文章目录 1 优化数据访问 2 重构查询 2.1 优化子查询 2.2 优化GROUP BY和DISTINCT ...
最新文章
- 服务器mysql数据库安装教程视频教程_MySQL数据库管理系统安装实际操作_MySQL教程视频 - 动力节点...
- Excel中将时间格式转化成时间戳格式
- 【遥感物候】Hants NDVI时间序列谐波分析法数据重构,植被生长季曲线效果可佳(附Hants软件下载)
- 阿里P8亲自讲解!java实例变量和类变量
- ORA-01552 :非系统表空间 'xxxx'不能使用系统回退段
- Hibernate→ORM、简介、第一个Hibernate实现、核心XML配置、Hibernate执行流程、操作数据库对象session、事务、映射XML配置、单例CRUD、get与load
- POST的Response数据问题
- mysql查询表记录总数sql_SQL Server-快速查询表中的记录总数
- 【博弈论】耶鲁大学公开课--博弈论Problem Set 1--Solution
- matlab复化梯形公式误差,数值分析复化梯形公式,复化Simpson公式MATLAB程序
- 微信小程序 实现拨打电话
- 使用 代码 读取 build.gradle 中的自定义配置信息
- 对于电脑命令你了解多少?电脑命令大全
- C语言学习经典书籍推荐
- asp毕业设计——基于asp+access的校园网上购物平台设计与实现(毕业论文+程序源码)——网上购物平台
- 中文地址的英文翻译方法
- C语言经典100题——求一个二维数组的鞍点
- 陌生QQ号聊天,QQ咨询对话框,QQ临时对话框链接代码
- [附源码]计算机毕业设计springboot南通大学福利发放管理系统
- js对当前表格各列数据的求和