CS224n笔记三之词向量模型与GloVe


词向量模型

  • 语言学家J. R. Firth提出,通过一个单词的上下文可以得到它的意思,所以我们可以定义一个以预测某个单词的上下文的模型:

    p(context|wt)= ...

  • 我们的目标当然是希望概率p越大越好,所以我们可以定义一个目标函数:

    J(θ)=t=1Tmjm, j0P(wt+j|wt;θ)

  • 我们的目的就是最大化上面这个目标函数。但一般来说,我们都是想最小化目标函数的,所以我们可以改写目标函数为:

    J(θ)=1Tt=1Tmjm,j0log P(wt+j|wt;θ)

  • 所以我们接下来的目标就是如何计算 P(wt+j|wt;θ) ,或者说如何定义 P(wt+j|wt;θ)


定义 P(wt+j|wt;θ)

P(wt+j|wt;θ) exp(uTovc)Vw=1exp(uTwvc)

  • 其中, vc 就是中心词 wt 的词向量, uo 就是 wt+j 的词向量,这就是softmax。所以我们的目标就是不断调整词库中每个词的词向量,使得这个P最大。所以我们的参数就是词库中的这些词向量,并且每个词都有两个词向量,一个是作为中心词的时候(即 v ),一个是作为上下文的时候(即 u )。所以参数 θ 如下:
    CS224n笔记三之词向量模型与GloVe_第1张图片

计算梯度

mjm,j0log P(wt+j|wt;θ)

  • 在对上式进行求梯度时,其实只对 2m+1 个词向量进行了求导(一个 vc ,2m个 uo ),所以 θJt(θ) 是非常稀疏的。即:
    CS224n笔记三之词向量模型与GloVe_第2张图片
  • 视频中只是演示了对 vc 的求导,其实还需要对 uo 求导,因为 θ 里面包含有v,u两部分向量,当然都需要求导啦。

GloVe

  • GloVe模型的目标函数是:

    J(θ)=12i,j=1Wf(Pij)(uTivjlogPij)2

  • 其中, Pij 是两个词的共现频次,也就是两个词同时出现的次数(在拿到数据的时候就可以统计出来了)。f是一个max函数,如下所示:

    CS224n笔记三之词向量模型与GloVe_第3张图片

  • 从图中可以看出,频次 Pij 越高, f(Pij) 的值一开始也会越大,达到 xmax 之后,即使频次再高, f(Pij) 值也不会再增加了,这在一定程度上对共现频次太高的词起到了抑制作用。
  • 前面说到的 θ 包含了v和u两部分向量,也就是每个词都有两个词向量的,那么最后究竟要选哪一个作为最终的词向量呢?最佳方案是将它们相加作为最终的词向量:
    Xfinal=U+V

你可能感兴趣的:(NLP)