一步一步理解自然语言处理之word2vec工具相关算法演进

本文介绍了word2vec的发展历程,从马尔可夫链到分布式表示,再到神经网络语言模型,最后到CBOW和Skip-gram模型。word2vec利用神经网络学习词向量,克服了one-hot表示的不足,能有效捕捉词与词之间的相似性。此外,文章还探讨了预训练词向量的应用场景和训练自己的词向量的方法。
摘要由CSDN通过智能技术生成

2013年,Google的Mikolov et al开源了一款用于词向量计算的工具——word2vec,引起了工业界和学术界的关注。首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;其次,该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。
word2vec的成长历程。站在巨人的肩膀上

第一阶段Statistical Language Model(1906)

先来看马尔可夫链(Markov Chain)是什么?在1906年安德烈·马尔可夫(俄罗斯人,物理-数学博士)提出
马尔可夫链 描述了一种状态序列,其每个状态值取决于前面有限个状态。
这里写图片描述
这里x为过程中的某个状态。上面这个恒等式可以被看作是马尔可夫性质。

举个简单例子:分析一个人在某一阶段内由一个职位调到另一个职位的可能性,即调动的概率。该模型的一个基本假设就是,过去的内部人事变动的模式和概率与未来的趋势大体相一致。实际上,这种方法是要分析企业内部人力资源的流动趋势和概率,如升迁、转职、调配或离职等方面的情况,以便为内部的人力资源的调配提供依据。

对于一段文本序列S=w1,w2,…,wTS=w1,w2,…,wT,这段文本的概率可以表示为:
这里写图片描述

如bigram模型(N=2)和trigram模型(N=3)。事实上,由于计算量,模型复杂度和预测精度的限制,我们很少会考虑N>3的模型。

第二阶段Distributed Representation(1986)

第一点:最简单的词向量方式是 one-hot representation,就是用一个很长的向量来表示一个词,向量的长度为词典的大小,向量的分量只有一个 1,其他全为 0, 1 的位置对应该词在词典中的位置。但这种词表示有几个缺点:
(1)容易受维数灾难的困扰,尤其是将其用于 Deep Learning 的一些算法时;
(2)不能很好地刻画词与词之间的相似性。
(3)面对百万字典,单个词的向量化是一个超级稀疏向量。

第二点:基于统计模型仍有其局限性。首先,由于参数空间的爆炸式增长,它无法处理更长程的context(N>3)。其次,它没有考虑词与词之间内在的联系性。

Distributed Representation,它最早是 Hinton 于 1986 年提出的,可以克服 one-hot representation 的缺点。

人们就自然而然地想到,能否用一个连续的稠密向量去刻画一个word的特征呢?这样,我们不仅可以直接刻画词与词之间的相似度,
还可以建立一个从向量到概率的平滑函数模型,使得相似的词向量可以映射到相近的概率空间上。这个稠密连续向量也被称为word的distributed representation。

第三阶段Neural Network Language Model(2003)

2003年,Bengio等人发表了一篇开创性的文章:A neural probabilistic language model。在这篇文章里,他们总结出了一套用神经网络建立统计语言模型的框架(Neural Network Language Model,以下简称NNLM),并首次提出了word embedding的概念(虽然没有叫这个名字),从而奠定了包括word2vec在内后续研究word representation learning的基础。
NNLM模型的基本思想可以概括如下:

  1. 假定词表中的每一个word都对应着一个连续的特征向量;
  2. 假定一个连续平滑的概率模型,输入一段词向量的序列,可以输出这段序列的联合概率;
  3. 同时学习词向量的权重和概率模型里的参数。

值得注意的一点是,这里的词向量也是要学习的参数。
这里写图片描述
我们可以将整个模型拆分成两部分加以理解:

  1. 首先是一个线性的embedding层。它将输入的N−1个one-hot词向量,通过一个共享的D×V的矩阵C,映射为N−1个分布式的词向量(distributedvector)。其中,V是词典的大小,D是embedding向量的维度(一个先验参数)。C矩阵里存储了要学习的word vector。
  2. 其次是一个简单的前向反馈神经网络g。它由一个tanh隐层和一个softmax输出层组成。通过将embedding层输出的N−1个词向量映射为一个长度为V的概率分布向量,从而对词典中的word在输入context下的条件概率做出预估:
    p(wi|w1,w2,…,wt−1)≈f(wi,wt−1,…,wt−n+1)=g(wi,C(wt−n+1),…,C(wt−1))

我们可以通过最小化一个cross-entropy的正则化损失函数来调整模型的参数θ:
这里写图片描述

仔细观察这个模型就会发现,它其实在同时解决两个问题:一个是统计语言模型里关注的条件概率p(wt|context)p(wt|context)的计算;一个是向量空间模型里关注的词向量的表达。而这两个问题本质上并不独立。通过引入连续的词向量和平滑的概率模型,我们就可以在一个连续空间里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值