词向量模型(word2vec)总结笔记

Brigitte ·
更新时间:2024-09-21
· 940 次阅读

引言

自从Mikolov在他2013年的论文“Efficient Estimation of Word Representation in Vector Space”提出词向量的概念后,NLP领域仿佛一下子进入了embedding的世界,Sentence2Vec、Doc2Vec、Everything2Vec。词向量基于语言模型的假设——“一个词的含义可以由它的上下文推断得出“,提出了词的Distributed Representation表示方法。相较于传统NLP的高维、稀疏的表示法(One-hot Representation),Word2Vec训练出的词向量是低维、稠密的。

在上一篇文章里,我们用onehot将词转换成向量的形式,如下所示:
在这里插入图片描述
假设有二、三、四元词进行onehot,我们可能得到的特征为:

feature1=[01,10]
feature2=[001,010,100]
feature3=[0001,0010,0100,1000]

而如果依照上面的特征,我们发现会出现正交的情况,那么根据余弦相似度的关系,a⋅b=∣a∣∣b∣cos⁡θ\boldsymbol{a}\cdot \boldsymbol{b}=\left| \boldsymbol{a} \right|\left| \boldsymbol{b} \right|\cos \thetaa⋅b=∣a∣∣b∣cosθ,这将导致任何一对词的余弦相似度为0,而它得到的特征也将是离散稀疏的。

word2vec介绍

关于word2vec,我们知道的CBOW(Continuous Bag-of-Words Model)和Skip-gram (Continuous Skip-gram Model),都是它的两种训练模式。而负采样(Negative Sample)和层次softmax(Hierarchical Softmax)则是两种加速训练的方法。

跳字模型(skip-gram)

在跳字模型中,词典索引集V={0,1,…,∣V∣−1}\mathcal{V} = \{0, 1, \ldots, |\mathcal{V}|-1\}V={0,1,…,∣V∣−1}。假设给定一个长度为TTT的文本序列,设时间步ttt的词为w(t)w^{(t)}w(t)。假设给定中心词的情况下背景词的生成相互独立,当背景窗口大小为mmm时,跳字模型的似然函数即给定任一中心词生成所有背景词的概率

∏t=1T∏−m≤j≤m, j≠0P(w(t+j)∣w(t)), \prod_{t=1}^{T} \prod_{-m \leq j \leq m,\ j \neq 0} P(w^{(t+j)} \mid w^{(t)}),t=1∏T​−m≤j≤m, j​=0∏​P(w(t+j)∣w(t)),

m为窗口大小,比如说m=2也就是滑窗大小为5,T为文本序列的总长度,上式也为给定中心词的极大似然估值。而在之前的softmax章节中提到过,若要使得整个联合概率最大化,这个联合概率最大化就等价于最小化这个损失函数,那么上式就能等价于:

−1T∑t=1T∑−m≤j≤m, j≠0log P(w(t+j)∣w(t)) -\frac{1}{T} \sum_{t=1}^{T} \sum_{-m \leq j \leq m,\ j \neq 0} \text{log}\, P(w^{(t+j)} \mid w^{(t)})−T1​t=1∑T​−m≤j≤m, j​=0∑​logP(w(t+j)∣w(t))

我们可以用vvv和uuu分别代表中心词和背景词的向量。换言之,对于词典中一个索引为iii的词,它在作为中心词和背景词时的向量表示分别是viv_{i}vi​和uiu_{i}ui​。而词典中所有词的这两种向量正是跳字模型所要学习的模型参数。为了将模型参数植入损失函数,我们需要使用模型参数表达损失函数中的中心词生成背景词的概率。设中心词 wcw_{c}wc​ 在词典中索引为



word 词向量 word2vec 模型

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章