Word Vector的综述

历史

在这里插入图片描述
欢迎关注微信公众号:

词向量大致经过3个时期:

  • 最早在做检索系统,或者推荐系统时候,需要计算query和文档,或者user和文档之间的相关性,涉及到相关性,很直观的利用到了向量的欧式距离活着余弦距离。所以这个时期的向量化主要是基于整体数据的矩阵分解,使用的是整体数据的global信息。
  • 词向量的是一个主题回归的过程,相同主题的词的向量彼此就比较接近。
  • 分布式语义的表示,使用机器学习的方式,然后选择合适的学习目标,然后词的向量作为变量来学习迭代。

下面是整体大纲:

  1. Global Matrix Factorization
    1.1 Vector Space Model (VSM)
    1.2 Latent Semantic Analysis (LSA)
    2.3 Latent Dirichlet Allocation (LDA)
  2. Distributed Word Embedding
    2.1 A Neural Probabilistic Language Model
    2.2 CBOW and SKip-Gram by Tomas Mikolov
    2.3 Global Vector by Manning
  3. out of vocab training
    Learning to Compute Word Embeddings On the Fly
    [Character Embedding] (https://arxiv.org/abs/1601.01343)

1. Global Matrix Factorization

这个阶段的向量空间大致是基于词和文档组成的矩阵,然后根据某种规则来降维,达到学习词和文档的向量化表示。因为类似处理矩阵的信息,所以用到了全局的信息,是一个Global算法。 这样的算法的优势是利用了全局的统计信息,对于文档的表示具有优势。 但是对于单个词来说,还是比较缺乏个性化的训练,对词的语义表示来说是比较匮乏的。 在维度上和计算量方面都是一个挑战,在大预料库上面训练基本是不太可能的。

1.1 Vector Space Model-高纬向量空间

Salton & Buckley

这个阶段向量是用来表示文本段的,比如一个query,一个文档,还没有具体落到一个词上面

最初使用向量空间模型的是在搜索场景,假设Query 和 Document都可以用一个向量来表示,
那么计算Query和Document的相关性可以直接转化为求解他们向量的距离(如:欧式距离,余弦距离等)

最初的做法是用基于BOW(词袋)的思想,向量的维数是词的个数,每一个维度代表文档中对应词是否出现出现为1否则为0(或者其他的权重变形,如:增加tf-idf信息)

假设:

Q = ( t 1 , w t 1 ; t 2 , w t 2 ; . . . ; t q , w t q ) Q = (t_1,w_{t1};t_2,w_{t2};...;t_q,w_{tq}) Q=(t1,wt1;t2,wt2;...;tq,wtq)
D = ( q 1 , w q 1 ; q 2 , w q 2 ; . . . , q d , w q d ) D = (q_1,w_{q1};q_2,w_{q2};...,q_d,w_{qd}) D=(q1,wq1;q2,wq2;...,qd,wqd)

其中向量的维度为包含的词的个数,这样 Query 和Document的相似性为:

$similarity(Q,D)=Cosin(Q_w,D_w )=\frac{\sum_k w_{tk}w_{qk} }{\sqrt{|w_q|^2 |w_d|^2}} \\ $

然后Query 和 Document 的term的权重计算方式

term的权重都是基于term在全局和Query或者Document里面的统计值进行计算
主要用到的是tf-idf及各种变形来进行

主要方式如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IjkXZZfE-1648569920475)(media/15140793556870/15140939862823.jpg)]
这里写图片描述
这个阶段向量的计算已经解决了部分相似性和计算量的问题。
但是完全基于词是否出现这样的向量的弊端很明显
比如:
高兴/愉快, ship/boat 在这里是完全不同的词,但是实际上他们的语义是接近的

弊端:

  1. 在语义表示(Sematic)方面非常弱
  2. 向量的维度非常高

1.2 Latent Semantic Analysis-低维潜在语义

上面讲的高纬度的向量空间,为了解决

  1. 向量的维度过高,导致计算复杂度上升;
  2. 完全基于词频的统计会导致计算损失过多的语义方面的信息。很接近的,但是如果基于词频,就是完全不同的两个id

这个阶段是将高纬向量利用SVD方式进行降维,保留词的语义表示。

基于SVD分解:

假设 term 和 Document组成的矩阵为$ X \in R^{[m,n]} $
其中m为term的个数,n为Document的个数。
根据SVD分解,我们可以知道,X可以分解为一个左正交矩阵 * 对角矩阵 * 右对角矩阵的格式
X = T S D T X = TSD^T X=TSDT
其中 T ∈ R [ m , m ] , D ∈ R [ n , n ] T \in R^{[m,m]}, D \in R^{[n,n]} TR[m,m],DR[n,n]分别是左右正交矩阵
S ∈ R [ m , n ] S \in R^{[m,n]} SR[m,n]是对角矩阵,它的元素是矩阵 X T X X^TX XTX的特征值开方,它的值按对角线递减,其他元素是0的矩阵

注: X = T S D T X = TSD^T X=TSDT
所以 X T X = ( T S D T ) T T S D T = D S T T T T S D T = D S T S D T X^TX=(TSD^T)^T TSD^T=DS^TT^TTSD^T=DS^TSD^T XTX=(TSDT)TTSDT=DSTTTTSDT=DSTSDT
因为 S T S S^TS STS是对角方阵,它的对角元素是矩阵 X T X X^TX XTX的特征值,所以 S S S的元素是 X T X X^TX XTX特征值的开方。

如果S的元素是从大到小排列的,那么这种分解是唯一的

基于特征值降维/降噪解释

这里我们简单的回顾下特征值和特征向量的作用:

假设一个矩阵A分解后的特征向量是一组正交基 v i v_i vi, 特征值为 λ i \lambda_i λi, 那么 A V = λ V AV=\lambda V AV=λV
这里 A V AV AV表示矩阵A作用在这组正交基下面的正交旋转,正交变换不损失信息,那么 A V AV AV的表示可以转化为对 λ V \lambda V λV的研究上面
V是一组正交基,那么所有这个空间的向量都可以表示为V的线性组合
所以 λ V \lambda V λV表示在正交基上面的张量,该方向上面的权重为对应的特征值。
所以不同的特征值大小代表矩阵在这个方向上面的重要程度,如果绝对值趋于0,那么这个方向上面的信息是不重要,或者可能是噪音。

假设我们要简化线性组合表示,是表示变的简单,且不希望我们的信息损失太多。
这里很直观的是:直接将绝对值排在后面的特征值置为0

应用

S是一个对角矩阵,且它的对角元素是非负递减的,所以如果我们需要保留r维的向量,我们只要舍弃S的第r个元素后面的秩,将这些元素置为0。
这样我们得到矩阵 S R S_R SR,将 S R S_R SR 代入原式我们得到:
X R = T S R D T X_R=TS_RD^T XR=TSRDT

X R X_R XR的每一行都只有R个元素是非0的,其他都为0,这样达到了将为的目的

优势:

  1. 既得到词的语义向量,又得到Document的向量,所以不仅可以做词的聚类,可以做Document的聚类
  2. 降维作用明显,又保留重要的信息
  3. 这是全局的算法,基于的是所有词和所有Document的信息,所以得到的解是全局最优的
  4. 是一个topic算法:每一个term的表示都是这些特征向量方向上面的线形组合,这些特征向量是彼此没有交集的,所以一个特征方向是一个很好的topic表示

类似:

  1. 不能解决一词多义的问题
  2. SVD的计算非常复杂,增量训练困难
  3. r的选择不是学习的

1.3 Latent Dirichlet Allocation

LDA
上面介绍LSI,它是一个topic算法,

这里的LDA介绍的也是类似的算法,每一个词得到一个k维的向量,每一个向量是在这个topic下面的概率

假设有k个topic,我们得到每一个词的表示是一个k维的向量,里面的每一个元素代表这个词在这个topic下面的概率

方法的目标:
给定topic数k, 计算每个词在这些topic下面的概率,得到词的概率向量
β = > β i j = p ( w j = 1 ∣ z i = 1 ) \beta => \beta_{ij}=p(w^j=1|z^i=1) β=>βij=p(wj=1zi=1) 表示在topic z i z^i zi下面出现词 w j w^j wj的概率

求解方式是构造概率模型,然后以概率最大化的方式计算得到 β \beta β

一些不证明的先验知识:

  1. 给定一个文档Document,它属于哪个topic是服从多项式分布的,但是分布服从的参数$\theta $是不同
  2. 给定一个topic,在这个topic出现某个词也是服从多项式分布。
  3. 假设 θ \theta θ的先验分布是Dirichlet分布,那么,先验 Dirichlet分布 + 多项式分布=后验Dirichlet分布,所以这里 θ \theta θ的先验分布选择Dirichlet分布,另外一方面Dirichlet经常被用来作为非均衡自由度下的向量采样(比如Beta分布是它的1个自由度的形式,我们经常使用Beta分布来拟合点击率或者转化率分布,然后将拟合出来的分布作为ctr预估的先验分布,或者作为e && e策略的先验分布)。

最大似然函数
l ( α , β ) = ∑ d = 1 M l o g p ( D d ∣ α , β ) l(\alpha, \beta)=\sum_{d=1}^M log p(D_d|\alpha, \beta) l(α,β)=d=1Mlogp(Ddα,β)
p ( D d ∣ α , β ) = ∫ p ( θ ∣ α ) ( ∏ n = 1 N ∑ z n p ( z n ∣ θ ) p ( w n ∣ z n , β ) ) d θ p(D_d|\alpha,\beta)=\int p(\theta|\alpha)(\prod_{n=1}^N\sum_{z_n}p(z_n|\theta)p(w_n|z_n,\beta ))d\theta p(Ddα,β)=p(θα)(n=1Nznp(znθ)p(wnzn,β))dθ

这里跟着这个式子,通俗的介绍下这个式子的符号代表的意思:

  1. α , β \alpha,\beta α,β是需要求的参数,分别代表 θ \theta θ先验Dir分布的
    这里先简单的用通俗的表达说下统计知识:

  2. 一个Document在样本中属于哪一个topic服从多项式分布,这个多项式的分布参数我们认为它服从Dirichlet分布(如果二元参数就是一个Beta分布),那么它的后验校正分布也是是一个Dirichlet分布。

  3. 我们都知道先验分布是独立于单个样本的,只和整体的统计有关系,假定Dirichlet先验分布的参数$\alpha 是 一 个 要 学 习 的 参 数 。 那 么 给 定 文 档 i , 我 们 从 先 验 D i r i c h l e t 概 率 分 布 得 到 是一个要学习的参数。那么给定文档i,我们从先验Dirichlet概率分布得到 iDirichlet\theta$, 它是多项式分布的参数。

  4. 得到的 θ \theta θ,就得到这个文档在各个topic下面的概率 z n z_n zn

  5. 假设概率矩阵为 β \beta β β i j = p ( w j = 1 ∣ z i = 1 ) \beta_{ij}=p(w^j=1|z^i=1) βij=p(wj=1zi=1),当topic 为i时,每个词出现的概率。

  6. 给定 z n z_n zn β \beta β,我们就可以得到,这样就可以在 p ( w n ∣ z n , β ) p(w_n|z_n,\beta) p(wn

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值