词表征 2:word2vec、CBoW、Skip-Gram、Negative Sampling、Hierarchical Softmax
原文地址:https://www.jianshu.com/p/5a896955abf0
2)基于迭代的方法直接学
相较于基于SVD的方法直接捕获所有共现值的做法,基于迭代的方法一次只捕获一个窗口内的词间共现值。
好的语言模型中,有意义的句子高概率,无意义的句子即使语法正确也低概率。
在得到输入词向量和输出词向量后如何得到最终词向量?常取输入词向量(word2vec)、拼接、相加(GloVe)等。
主要有以下3种模型算法:
- word2vec
- GloVe
- fastText
(三)word2vec
基本设计:1层隐藏层的神经网络结构,隐藏层使用线性激活函数。why?
一是因为快;二是因为训练词向量可以被认为是提取特征,后续可能会使用deep结构,现阶段没有必要deep。

1、Continuous Bag of Words(CBoW)
根据上下文词预测中心词。
1)前向过程

希望\(\hat{y}\)与\(y\)即\(x_c\)尽可能相同。
2)反向过程

2、Skip-Gram
根据中心词预测上下文词。
引入strong/naive条件独立假设:给定中心词,所有输出词间完全独立。
1)前向过程


2)反向过程

CBoW和Skip-Gram都存在着的问题:代价函数中的softmax需要对\(|V|\)进行求和,时间复杂度为\(O(|V|)\),当\(|V|\)很大时,代价很高。
解决方式:Negative Sampling和Hierarchical Softmax。
3、Negative Sampling
负采样的基本思想是用采样一些负例的方式近似代替遍历整个词汇。以\(P_n(w)\)的概率分布进行采样,\(P_n(w)\)与词汇词频相匹配。目前看,最佳\(P_n(w)=\frac{count(w)^{\frac{3}{4}}}{\sum_{w\in V}count(w)^{\frac{3}{4}}}\),实现了低频词被采样概率的上升比例高于高频词。采样前,将长度为1的线段分成\(M\)等份,其中,\(M>>|V|\)。这样子可以保证每个词对应的线段都会被划分成不同的小块,\(M\)份的每一份都会落在某一个词对应的线段上。每个词对应的线段长度为\(len(w)=P_n(w)\)。采样时,从\(M\)个未知
中采样出\(Neg\)个位置即可,对应线段所属词即为负例词。word2vec中\(M\)默认为\(10^8\),与Skip-Gram合作时,采样到中心词就跳过。
1)目标函数


2)反向过程
(1)CBoW

(2)Skip-Gram

4、Hierarchical Softmax
Hierarchical Softmax中无词的输出表示,词为输出词的概率等于从根节点走到词叶子节点的概率,代价由\(O(|V|)\)变为\(O(log_2|V|)\)。Hierarchical Softmax中不更新每个词的输出词向量,更新的是二叉树上节点对应的向量。这个方法的速度由二叉树的构建方式以及词到叶子节点的分配方式决定。其中,Huffman树尤其适合,因为其分配给高频词短路径,使其花费更短时间被找到。
1)目标函数


2)反向过程
(1)CBoW

(2)Skip-Gram

5、word2vec小结
1)CBoW vs Skip-Gram
- CBoW更快一些。CBoW对于高频词效果较好,低频词常受到较少注意。窗口大小常5左右。
- Skip-Gram更慢一些。Skip-Gram对于低频词效果更好,小数据下表现依旧好。窗口大小常10左右。
对于"Yesterday was really a ____ day.":
CBoW认为最可能是beautiful/nice,delightful受到较少注意;Skip-Gram则不会将delightful与beautiful/nice比较,而是作为一组新观测值。
2)Hierarchical Softmax vs Negative Sampling
- Hierarchical Softmax
优点是对低频词的效果更好。因为表示低频词的叶子节点会不可避免地继承祖先节点的向量表示,这个祖先节点可能会受到其他高频词的影响。
缺点是如果所需要的输出词很生僻,得一直往下走很久。 - Negative Sampling
对高频词效果更好。向量维度较低时效果更好,维度高时近似误差会比较大。
word2vec对句子进行处理时还采用了高频词亚采样的trick,其能够带来2~10倍的性能提升,并且能够提升低频词的表示精度。具体来说,\(w_i\)被丢弃的概率\(P(w_i)=1-\sqrt{\frac{sample}{freq(w_i)}}\)。\(sample\)常取值\(10^{-5}\)~\(10^{-3}\),\(sample\)越小,达到相同的丢弃率所需的\(frequency\)则越小,即更多词会被丢弃。高频词亚采样的目的是以一定的概率拒绝高频词,使得低频词有更多的出境率。低频词被丢弃的概率低,高频词被丢弃的概率高。
词表征 2:word2vec、CBoW、Skip-Gram、Negative Sampling、Hierarchical Softmax的更多相关文章
- word2vec原理(三) 基于Negative Sampling的模型
word2vec原理(一) CBOW与Skip-Gram模型基础 word2vec原理(二) 基于Hierarchical Softmax的模型 word2vec原理(三) 基于Negative Sa ...
- word2vec原理(二) 基于Hierarchical Softmax的模型
word2vec原理(一) CBOW与Skip-Gram模型基础 word2vec原理(二) 基于Hierarchical Softmax的模型 word2vec原理(三) 基于Negative Sa ...
- DL4NLP——词表示模型(三)word2vec(CBOW/Skip-gram)的加速:Hierarchical Softmax与Negative Sampling
上篇博文提到,原始的CBOW / Skip-gram模型虽然去掉了NPLM中的隐藏层从而减少了耗时,但由于输出层仍然是softmax(),所以实际上依然“impractical”.所以接下来就介绍一下 ...
- NLP从词袋到Word2Vec的文本表示
在NLP(自然语言处理)领域,文本表示是第一步,也是很重要的一步,通俗来说就是把人类的语言符号转化为机器能够进行计算的数字,因为普通的文本语言机器是看不懂的,必须通过转化来表征对应文本.早期是基于规则 ...
- 学习笔记CB009:人工神经网络模型、手写数字识别、多层卷积网络、词向量、word2vec
人工神经网络,借鉴生物神经网络工作原理数学模型. 由n个输入特征得出与输入特征几乎相同的n个结果,训练隐藏层得到意想不到信息.信息检索领域,模型训练合理排序模型,输入特征,文档质量.文档点击历史.文档 ...
- word2vec改进之Negative Sampling
训练网络时往往会对全部的神经元参数进行微调,从而让训练结果更加准确.但在这个网络中,训练参数很多,每次微调上百万的数据是很浪费计算资源的.那么Negative Sampling方法可以通过每次调整很小 ...
- 词表征 3:GloVe、fastText、评价词向量、重新训练词向量
原文地址:https://www.jianshu.com/p/ca2272addeb0 (四)GloVe GloVe本质是加权最小二乘回归模型,引入了共现概率矩阵. 1.基本思想 GloVe模型的目标 ...
- 词嵌入之Word2Vec
词嵌入要解决什么问题 在自然语言系统中,词被看作最为基本的单元,如何将词进行向量化表示是一个很基本的问题,词嵌入(word embedding)就是把词映射为低维实数域向量的技术. 下面先介绍几种词的 ...
- word2vec 中的数学原理具体解释(五)基于 Negative Sampling 的模型
word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了非常多人的关注. 因为 word2vec 的作者 Tomas ...
随机推荐
- 【码上开心】Windows环境mysql数据库使用(二)skip-grant-tables 与用户名密码修改
skip-grant-tables #跳过数据库权限验证 我们安装MySql 设置my.ini配置文件的时候,常常会在my.ini中添加 skip-grant-tables ,这时接数据库可以使用任意 ...
- 1.Sentinel源码分析—FlowRuleManager加载规则做了什么?
最近我很好奇在RPC中限流熔断降级要怎么做,hystrix已经1年多没有更新了,感觉要被遗弃的感觉,那么我就把眼光聚焦到了阿里的Sentinel,顺便学习一下阿里的源代码. 这一章我主要讲的是Flow ...
- 牛客-小a的旅行计划 + 数学推导
小a的旅行计划 题意: 小a终于放假了,它想在假期中去一些地方游玩,现在有N个景点,编号为,同时小b也想出去游玩.由于一些特殊♂原因,他们的旅行计划必须满足一些条件 首先,他们可以从这N个景点中任意选 ...
- CodeForces-38B-Chess枚举+思维
CodeForces-38B-Chess 这是一道与下象棋有关的题目,题意是给你一个车和马的坐标,然后再给你一个马,让你判断最后三者都不会被吃掉的可能性,注意的是三者是三个独立的个体. 这道题要知道一 ...
- CodeForces 715B Complete The Graph 特殊的dijkstra
Complete The Graph 题解: 比较特殊的dij的题目. dis[x][y] 代表的是用了x条特殊边, y点的距离是多少. 然后我们通过dij更新dis数组. 然后在跑的时候,把特殊边都 ...
- HDU 1018 Big Number 斯特林公式
Big Number 题意:算n!的位数. 题解:对于一个数来算位数我们一般都是用while去进行计算,但是n!这个数太大了,我们做不到先算出来在去用while算位数. while(a){ cnt++ ...
- codeforces 830 B. Cards Sorting(线段树)
题目链接:http://codeforces.com/contest/830/problem/B 题解:其实这题就是求当前大小的数到下一个大小的数直接有多少个数,这时候可以利用数据结构来查询它们之间有 ...
- hdu 1269 迷宫城堡(trajan判环)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1269 题意:略 题解:trajan模版直接求强连通分量. #include <iostream& ...
- codeforces 361 D. Levko and Array(dp+二分)
题目链接:http://codeforces.com/contest/361/problem/D 题意:最多可以修改K次数字,每次修改一个数字变成任意值,C=max(a[i+1]-a[i]):求操作之 ...
- codeforces 762 D. Maximum path(dp)
题目链接:http://codeforces.com/problemset/problem/762/D 题意:给出一个3*n的矩阵然后问从左上角到右下角最大权值是多少,而且每一个点可以走上下左右,但是 ...