0%

Word2vec

前言

最近的课程要求掌握 word2vec 算法,推了 CS224n 课程,但是真心看不大懂…… 于是找了一些相关的资料。

参考资料:

https://www.cnblogs.com/peghoty/p/3857839.html Word2Vec 中文教程

https://www.bilibili.com/video/BV19b411n7K1/ CS224n 2019 英文字幕课程

https://web.stanford.edu/class/cs224n/#schedule CS224n 官网

正文

准备知识

联合概率与链式法则

联合概率就是多事件同时发生的概率。即$P(AB)$或者$P(A,B)$ 。

此处的链式法则非微积分那里的链式法则。

首先我们引入熟悉的条件概率公式。
$$
P(A|B) = \frac{P(A,B)}{P(B)}
$$
所以我们可以推出
$$
P(A,B) = P(A|B) * P(B)
$$
类似的,我们用另一个条件概率也可以计算联合概率。
$$
P(A,B) = P(B|A)*P(A)
$$
那么对于多变量的情况下,就会变成一长链。
$$
P(A,B,C) = P(A | B,C) * P(B,C) = P(A|B,C) * P(B|C) * P(C)
$$
值得一提的是,这里的分开的顺序有很多,也就是说这个联合概率可以用多种方式求解,取决于手上的数据用什么方便。

word 的向量表示

2012年以前,人们都在用 one hot 方法表示单词,就是一个超大维度的向量,每一个维度是 1 或 0,每个向量只有一个维度是1,表示他是某一个单词,但是效果很差。这种表示法叫做 localist representation.

然后有了新的思想(其实也很早被提出了),一个单词的含义由它的上下文决定,我们要认知一个单词,只需要观察他前后的单词。同时我们也用一个 稠密的 向量表示单词。这种叫做 distributed representation.

Word vectors are sometimes called word embeddings or word representations.

Word2Vec

2013年 由 Mikolov et al. 提出的用于学习 word vectors 的框架。

  • 我们有庞大语料库
  • 每个词用向量表示
  • 遍历文本的每个位置 t ,有对应的 center word : c,和上下文(outside) :o。
  • 用向量间的相似度(similarity)计算给定c,o的概率(或者反过来)
  • 调整词向量,然后最大化概率。

以上部分译自 cs224n 2019 第一讲的PPT。

image-20200401162642272

上面的图片摘自 https://web.stanford.edu/class/cs224n/slides/cs224n-2020-lecture01-wordvecs1.pdf。