前言
最近的课程要求掌握 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。
上面的图片摘自 https://web.stanford.edu/class/cs224n/slides/cs224n-2020-lecture01-wordvecs1.pdf。