Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于词向量

关于词向量

作者头像
张凝可
发布于 2019-08-22 02:54:18
发布于 2019-08-22 02:54:18
9720
举报
文章被收录于专栏:技术圈技术圈

参考论文:Efficient Estimation of Word Representations in Vector Space

One-hot Represention

深度学习没有如此如火如荼之前,语言模型的建立依靠的一般还是SVM,CRF等算法,为了将自然语言符号、数值化,One-hot Represention 成为了当时不错简单粗暴的词向量表示方法。 每个词都是茫茫词海中的一个1。 假设语料库中有V个词,那么语料库中的任一词都可以表示为一个长度为V的向量,另外,每个词都有一个unique的id,one-hot将向量中词id相应位置置为1,其他位置为0来表示这个词。因而,可以想象如果将V个词的one-hot represention形成V*V的矩阵,那么这个矩阵是多么稀疏。 优点:简单 缺点:1>容易形成词汇鸿沟,即不能刻词与词之间的相似性。2>当V足够大时,容易形成维数灾难

Distributed Representation

**

NNLM(Feedforward Neural Net Language Model )

** 针对One-hot Representation存在的问题,Distributed Representation最早有Hinton在1986年在《Learning distributed representations of concepts》提出,用一个具有固定长度的向量来表示一个词。Bengio在2003提出了NNLM语言模型训练词向量。NNLM的前向神经网络涉及到线性投射层(Projection Layer)和非线性隐层(Hidden Layer)。 NNLM语言模型的网络结构包括输入层、投射层、隐层和输出层。下图给出了NNLM的网络结构。

从图中可以看出,采用N-Gram训练,考虑当前词的前n-1个词进行训练,并且设置look-up Table表,look-up Table C存放了语料库中V个词的词向量,C为V*m大小的矩阵,其中,V为语料库的总词数,m为词向量的维度。输入n-1个词,n-1个词经过one-hot编码,经过投射层(在C表中查找)投射为(n-1)*m的二维矩阵,NNLM将二维形成排列为长度为(n-1)*m的一维形式输入到隐层中。隐层和输出层为普通神经网络,输出层有V个节点,代表V个词的多分类问题,每个节点

表示下一个词为i的非归一化的log概率。给出公式并未给出从输入层和投射层部分,输入层为词序列的id,投射层为从Look Up表的C中进行取值,组合成向量作为隐层输入。

存在问题: 1,训练复杂度高,NNLM需要训练的权值链接为n*d+n*d*h+h*V 其中,n为输入词,d为词向量的嵌入维,h为隐层节点个数,V为输出层词的个数,也就是输出层节点个数,第一部为输入层与投射层的链接数,第二部分为投射层与隐层的链接数,h*V为隐层与输出层的链接数。显然,NNLM的训练复杂度是比较高,之后的改进基于投射层、隐层和输出层进行改进,改进的目的都是降低训练复杂度。 2,设置大小为n的窗口,N-Gram训练模式

RNNLM(Recurrent Neural Net Language Model)

相对于NNLM,,RNNLM能够训练更为复杂的模式,Mikolov在2012年在论文《Statistical Language Models based on Neural Networks》上采用RNN训练词向量,RNNLM去掉了NNLM中的投射层,只有输入层、隐层和输出层。下图给出了RNNLM的网络结构。

RNNLM最为特别的是在时间维度进行自我展开,尤其是隐层采用了训练连接,给出在时刻t下输入层、隐层和输出的前向传播公式。

其中,f为sigmod函数,g为softmax函数。 RNNLM的训练复杂度为h*h+h*V,其中h=d,说明词向量的嵌入维通常与隐层节点时一致。 上面介绍的两种训练distributed represention词向量的方法,主要训练复杂度是由于隐层的非线性所导致的,通常输出层的h*V可以通过softmax树控制在h*log(V),因而word2vec模型的诞生最初的初衷就是将隐层非线性话,google的大牛提出了New Log-Liner Model(The main observation from the previous section was that most of the complexity is caused by the non-linear hidden layer in the model. While this is what makes neural networks so attractive, we decided to explore simpler models that might not be able to represent the data as precisely as neural networks, but can possibly be trained on much more data efficiently.)

COBW(Continuous Bag-of-Words Model)

COBW模型采用了词袋模型,即并不考虑训练集中词的顺序对映射产生影响,COBW是word2vec模型的重要概念之一,主要由输入层、映射层和输出层,输入层即为某个单词A周围的n-1个单词的词向量。如果n取5,则词A(可记为w(t))前两个和后两个的单词为w(t-2),w(t-1),w(t+1),w(t+2)。这个时候R=2,相对应的,那4个单词的词向量记为v(w(t-2)),v(w(t-1)),v(w(t+1)),v(w(t+2))。从输入层到映射层比较简单,将那n-1个词向量相加即可。从映射层到输出层建立层次softmax树。

。关于层次softmax树的建立将之后讲解。 COBW的训练复杂度为:n*d+d*log(V),显然将非线性的隐层转换为线性的映射层,其实也可以看作为隐层。

Skip-gram(Continuous Skip-gram Model)

Skip-gram也是word2vec模型重要概念之一,与COBW不同是,Skip-gram的输入是当前词的词向量,而输出是周围词的词向量。也就是说通过当前词来预测周围的词。网络结构如下图。

通常用C控制距离多远的词为周围词,假设C=5时,那么对于训练集中的每个词的都从(1,5)中随机选择一个数R,比如R=2,sentence=’我爱吃苹果’,则’吃’的周围词为’我’,’爱’和’苹果’,从当前词向上下出发,那么周围词,即2R个词可以看作是当前词的正确分类因而最终会形成2R的分类情况,因为输出层为周围词的词向量,可以将Skip-gram看作为Lable有2R个的多分类问题,为了降低训练复杂度,输出层仍然会用到层次softmax树。 Skip-gram的训练复杂度为C*d+C*d*log(V)

总结

word2vec模型和一般的distributed represention的相比 首先之前的n-gram的窗口设置转换为来C,表示上下文语境训练区域特征。 传统的训练词向量的方法通常存在隐层,并且设置输入层和隐层是非线性关系,而word2vec去掉了隐层,改为投射层,并且输入层和隐层之间是相对简单的线性关系。引入知乎上邱锡鹏老师的话: 1.极快的训练速度,原来的语言模型最终目标为MLE,词向量为其副产品,当不追求MLE时模型可以大幅度简化,去掉隐层,加快训练速度。 2.man-woman=king-queen的方式 3.负采样的方式

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年12月01日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【NLP】Word2Vec详解(含数学推导)
word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;并且,该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。随着深度学习(Deep Learning)在自然语言处理中应用的普及,很多人误以为word2vec是一种深度学习算法。其实word2vec算法的背后是一个浅层神经网络。
黄博的机器学习圈子
2020/09/04
2.6K0
【NLP】Word2Vec详解(含数学推导)
NLP中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert
一、文本表示和各词向量间的对比 1、文本表示哪些方法? 2、怎么从语言模型理解词向量?怎么理解分布式假设? 3、传统的词向量有什么问题?怎么解决?各种词向量的特点是什么? 4、word2vec和NNLM对比有什么区别?(word2vec vs NNLM) 5、word2vec和fastText对比有什么区别?(word2vec vs fastText) 6、glove和word2vec、 LSA对比有什么区别?(word2vec vs glove vs LSA) 7、 elmo、GPT、bert三者之间有什么区别?(elmo vs GPT vs bert)
zenRRan
2019/06/14
3.9K0
NLP中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert
从Word2Vec到Bert,聊聊词向量的前世今生(一)
原文链接:https://zhuanlan.zhihu.com/p/58425003
zenRRan
2019/08/19
1.5K0
从Word2Vec到Bert,聊聊词向量的前世今生(一)
不是你无法入门自然语言处理(NLP),而是你没找到正确的打开方式
〇、序 之前一段时间,在结合深度学习做 NLP 的时候一直有思考一些问题,其中有一个问题算是最核心一个:究竟深度网络是怎么做到让各种 NLP 任务解决地如何完美呢?到底我的数据在 NN 中发什么了什么呢? 并且,不少的 terms like: 词向量、word embedding、分布式表示、word2vec、glove 等等,这一锅粥的名词术语分别代表什么,他们具体的关系是什么,他们是否处于平级关系? 出于对知识结构追求完整梳理的强迫症的老毛病,于是不停地查资料、思考、keep revolving……
AI研习社
2018/03/19
1.4K0
不是你无法入门自然语言处理(NLP),而是你没找到正确的打开方式
超详细总结之Word2Vec(一)原理推导[通俗易懂]
本章是介绍Word2Vec的原理推导部分,后面还会有基于TensorFlow的Word2Vec代码实现讲解。
全栈程序员站长
2022/08/30
2.6K0
超详细总结之Word2Vec(一)原理推导[通俗易懂]
什么是词向量?(NPL入门)
在自然语言处理任务中,首先需要考虑词如何在计算机中表示。通常,有两种表示方式:one-hot representation和distribution representation。
全栈程序员站长
2022/07/01
2.6K0
什么是词向量?(NPL入门)
Word-Embedding词向量
在自然语言处理任务中,词向量(Word Embedding)是表示自然语言里单词的一种方法,即把每个词都表示为一个N维空间内的点,即一个高维空间内的向量。通过这种方法,实现把自然语言计算转换为向量计算。
灯珑LoGin
2022/10/31
8430
Word-Embedding词向量
大语言模型-1.1-语言模型发展历程
本博客内容是《大语言模型》一书的读书笔记,该书是中国人民大学高瓴人工智能学院赵鑫教授团队出品,覆盖大语言模型训练与使用的全流程,从预训练到微调与对齐,从使用技术到评测应用,帮助学员全面掌握大语言模型的核心技术。并且,课程内容基于大量的代码实战与讲解,通过实际项目与案例,学员能将理论知识应用于真实场景,提升解决实际问题的能力。
IT从业者张某某
2025/03/15
2230
大语言模型-1.1-语言模型发展历程
word2vec原理与Gensim使用[通俗易懂]
与NNLM相比,word2vec的主要目的是生成词向量而不是语言模型,在CBOW中,投射层将词向量直接相加而不是拼接起来,并舍弃了隐层,这些牺牲都是为了减少计算量。不经过优化的CBOW和Skip-gram中 ,在每个样本中每个词的训练过程都要遍历整个词汇表,也就是都需要经过softmax归一化,计算误差向量和梯度以更新两个词向量矩阵(这两个词向量矩阵实际上就是最终的词向量,可认为初始化不一样),当语料库规模变大、词汇表增长时,训练变得不切实际。为了解决这个问题,word2vec支持两种优化方法:hierarchical softmax 和negative sampling。
全栈程序员站长
2022/08/29
1.7K0
word2vec原理与Gensim使用[通俗易懂]
NLP之——Word2Vec详解
2013年,Google开源了一款用于词向量计算的工具——word2vec,引起了工业界和学术界的关注。首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;其次,该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。随着深度学习(Deep Learning)在自然语言处理中应用的普及,很多人误以为word2vec是一种深度学习算法。其实word2vec算法的背后是一个浅层神经网络。另外需要强调的一点是,word2vec是一个计算word vector的开源工具。当我们在说word2vec算法或模型的时候,其实指的是其背后用于计算word vector的CBoW模型和Skip-gram模型。很多人以为word2vec指的是一个算法或模型,这也是一种谬误。接下来,本文将从统计语言模型出发,尽可能详细地介绍word2vec工具背后的算法模型的来龙去脉。
10JQKA
2018/07/25
1.2K0
NLP之——Word2Vec详解
词向量算法「建议收藏」
https://www.cnblogs.com/the-wolf-sky/articles/10192363.html
全栈程序员站长
2022/06/30
9990
词向量算法「建议收藏」
词向量(1)--从Word2Vec到ELMo
若你是做NLP的,一定对词向量很亲切,若你是做推荐的,对词向量也一定不会陌生,以词向量为代表的序列向量化方法已经成为机器学习中必不可少的实战利器。
流川枫
2020/04/24
9840
NLP从词袋到Word2Vec的文本表示
在NLP(自然语言处理)领域,文本表示是第一步,也是很重要的一步,通俗来说就是把人类的语言符号转化为机器能够进行计算的数字,因为普通的文本语言机器是看不懂的,必须通过转化来表征对应文本。早期是基于规则的方法进行转化,而现代的方法是基于统计机器学习的方法。
mantch
2019/07/30
1.4K0
NLP从词袋到Word2Vec的文本表示
大语言模型-01-语言模型发展历程-02-从神经网络到ELMo
早期工作MLP(Multilayer Perceptron,MLP,多层感知机): NNLM(Neural Network Language Model,神经网络语言模型),单词映射到词向量,再由神经网络预测当前时刻词汇。是一种通过神经网络进行语言建模的技术,通常用于预测序列中的下一个词。
IT从业者张某某
2025/03/15
3030
大语言模型-01-语言模型发展历程-02-从神经网络到ELMo
【NLP-词向量】从模型结构到损失函数详解word2vec
上周我们讲到,在进行NNLM训练时,能够得到副产品,词向量。本文介绍一种专门用于词向量制备的方法:word2vec,利用它能够高效的训练出词向量。
用户1508658
2019/09/10
1.2K0
【NLP-词向量】从模型结构到损失函数详解word2vec
博客 | Word2Vec 学习心得
好嘛博主食言了。不过本文没什么干货,主要是前后看了大概一个星期,反复去读源码和解读文章,终于感觉这东西不那么云山雾罩了。同时也发现网上很多材料有点扯淡,99% 的博文不过是把别人的东西用自己的话说一下,人云亦云。好多人自己理解错了而不自知,实在是误人误己。
AI研习社
2018/08/16
5740
词向量表示[通俗易懂]
语音中,用音频频谱序列向量所构成的矩阵作为模型的输入;在图像中,用图像的像素构成的矩阵数据作为模型的输入。这些都可以很好表示语音/图像数据。而语言高度抽象,很难刻画词语之间的联系,比如“麦克风”和“话筒”这样的同义词,从字面上也难以看出这两者意思相同,即“语义鸿沟”现象。
全栈程序员站长
2022/09/01
1.6K0
词向量表示[通俗易懂]
词嵌入技术解析(一)
在讨论词嵌入之前,先要理解词向量的表达形式,注意,这里的词向量不是指Word2Vec。关于词向量的表达,现阶段采用的主要有One hot representation和Distributed representation两种表现形式。
Bo_hemian
2020/09/09
1.5K0
云摘录︱Word2Vec 作者Tomas Mikolov 的三篇代表作解析
——————————————————————————————————————————————
悟乙己
2019/05/26
1.1K0
秒懂词向量Word2vec的本质
授权转自公众号 数据挖掘机养成记 作者 | 穆文 本文只授权『大数据文摘』独家转载,禁止其他一切未经作者许可的转载形式 大家好 我叫数据挖掘机 皇家布鲁斯特大学肄业 我喝最烈的果粒橙,钻最深的牛角尖 ——执着如我 今天我要揭开Word2vec的神秘面纱 直窥其本质 相信我,这绝对是你看到的 最浅白易懂的 Word2vec 中文总结 (蛤?你问我为啥有这个底气? 且看下面,我的踩坑血泪史。。。) 1. Word2vec参考资料总结 (以下都是我踩过的坑,建议先跳过本节,阅读正文部分,读完全文回头再来看) 先大
大数据文摘
2018/05/25
1.6K0
相关推荐
【NLP】Word2Vec详解(含数学推导)
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档