Word Vector

Word Vector 也就是词向量可以分为两种

  • Count Based:这种方法是通过统计完全局的信息最后来做特征提取
  • Direct Prediction:这种方法只选取来局部的统计,但是能够直接进行计算

有一种方法能够统一上面两种性质称为 GloVe

那么我们来介绍一下几种常见的方法

  • SVD
  • CBOW
  • SkipGram
  • GloVe

词向量也就是把单词转换成为向量的表示,这样方便计算机进行计算
运算

首先,英语单词的数量很多有将近 13m,同时我们定义所有的单词集合为 $V$,以及单词的数量为 $|V|$

最简单的词向量是 one-hot Vector


在讲词向量时,我们先来引出共现矩阵 co-occurrence matrix 的概念,我们假设共现矩阵为 X ,其元素 $X_{i,j}$ 表示单词 i 和单词 j 在同一个窗口一起出现的次数的统计,这里的统计是对于某个数据库下的统计。
共现矩阵在很多的算法中都会出现,为了让共现矩阵更加完善,我们会作出一下修改和限制,比如,我们会抑制共现矩阵中出现的较大元素让他们 $\leq 100$ ,比如一些常见的单词 ‘the’ ‘he’ 等等造成的统计
使用 ramp window 也就是共现矩阵中的元素更新不再是 +1 而是根据离中心词的距离加权考虑


SVD Method

直接对于共现矩阵做 SVD 分解,分解后选取前 k 大的特征值对应的特征向量来作为词向量

这个方法其实是有很多缺点的

  • 矩阵是稀疏的,因为很多次是不会一起出现的
  • 矩阵的维度很大,所以做 SVD 很花费时间

CBOW (Continuous Bag of words Models)

CBOW 其实就是计算以某个单词为中心,固定一个窗口,计算周围单词出现的概率乘积,然后对于这个乘积就是这个事件的概率,与此同时在训练的过程中,我们

首先我们来看看这个问题的几个参数

  • $w_i$ : 在字典 $|V|$ 中的单词 i
  • $V (n\times |V|)$ : context 词向量矩阵
  • $U (n\times |V|)$ : center 词向量矩阵
  • $v_i (n\times 1)$ : V 矩阵的某一列,也就是 $w_i$ 的上下文词向量
  • $u_i (n\times 1)$ : U 矩阵的某一列,也就是 $w_i$ 的中心词向量
  • $m$ : 窗口的大小
CBOW Algorithm
  • 对于 context 单词,我们生成 2m 个的 one-hot 向量 $[ x^{(c-m)},…,x^{(c-1)},x^{(c+1)},x^{(c+m)} ]$
  • 用 context 词向量矩阵乘以 one-hot vector 从而得到 context 单词对应的 context 词向量 $v_i = Vx^i$
  • 将这些得到的 context 词向量取均值得到 $\hat{v} = \frac{v_{c-m}+…+v_{c+m}}{2m}$
  • 用 center 词向量矩阵去乘以上面得到的 context 均值词向量矩阵得到:所有单词以中心词向量表示于所有 context 的乘积,结果就是对于每个单词的一个 score : $z = U\hat{v}$
  • 我们将 score 转换成概率,用 softmax 来实现:$\hat{y} = softmax(z)$
  • 首先我们是知道真实的分布的也就是中心单词的 one-hot vector ,为 $y$ , 这样我们就可以用各种 loss function 来优化了,一般是 cross entropy 。。



上面这张图 $W$ 相当于 context matrix ,$W^{\prime}$ 相当于 center matrix


Skip-Gram

Skip-Gram Algorithm
  • 对于 center 单词,生成它的 one-hot 向量
  • 然后再获取中心单词的词向量 $v_c = V x$
  • 用上面的中心词向量乘以 context 词向量矩阵得到一个 $|V|$ 维向量
  • 对于这一个向量,我们取不同的位置的值做 softmax 预测,从而生成对应的 loss function

上面一张图是 CBOW 和 Skip-Gram 算法之间的比较,总的来说

  • CBOW :根据周围单词,来估计中心单词出现的概率
  • Skip-Gram :根据中心单词,来估计周围单词出现的概率

GloVe

直接写出 Glove 模型的优化函数吧:

对于上面这个公式,f 其实是一个权重函数,$\theta$ 是所有的变量 $U,V$


Dependecy Parsing

如何描述语法,有两种主流观点,其中

  • 一种是短语结构文法:这种短语语法用固定数量的rule分解句子为短语和单词、分解短语为更短的短语或单词。。。
  • 一种是依存结构:用单词之间的依存关系来表达语法。如果一个单词修饰另一个单词,则称该单词依赖于另一个单词。

为什么要引用描述语法呢,因为一个句子,可以看作是几个单词的组合,但是机器要理解的是这些单词传递给人的意思,所以不仅仅是单词的出现,这些单词是如何表达意思的同样重要,因为这些句子可能会有多种意思的表达。。

比如这句活就可能有两个意思,但是确定了句法树,也就是上面的箭头,一个句子的意思就得到了确定。