GloVe

文章目录
  1. 1. 介绍
  2. 2. 带全局语料统计的跳元模型
  3. 3. GloVe模型
  4. 4. 参考资料

介绍

相比Word2Vec的局部训练,GloVe可以使用全局的语料统计信息来训练,可以预先计算全局语料库统计数据来提高训练数据.

带全局语料统计的跳元模型

\(q_{ij}\)表示词\(w_j\)的条件概率\(P(w_j|w_i)\),在跳元模型中给定词\(w_i\),我们有

\[ q_{ij}=\frac{exp(\bm u^T_j\bm v_i)}{\sum_{k \in V}exp(\bm u^T_k\bm v_i)} \]

记录\(w_i\)在所有出现地方的上下文构成一个可重集合\(C_i\),其中元素j的数目记为\(x_{ij}\),损失函数定义为

\[ -\sum_{i\in V}\sum_{j\in V}x_{ij}log\ q_{ij} \]

\(x_i\)表示\(|C_i|\),用\(p_{ij}\)表示概率\(x_{ij}/x_i\),则损失函数可以改写为

\[ -\sum_{i\in V}x_i\sum_{j\in V}p_{ij}log\ q_{ij} \]

我们发现\(-\sum_{j\in V}p_{ij}log\ q_{ij}\)就是计算全局语料统计的条件分布\(p_{ij}\)和模型预测的条件分布\(q_{ij}\)的交叉熵。

GloVe模型

考虑到计算成本的问题,以及大量罕见事件被损失建模,GloVe模型基于平方损失对模型进行了以下修改:

  • 使用变量\(p^{'}_{ij}=x_ij\)\(q^{'}_{ij}=exp(\bm u^T_{j}\bm v_i)\),并取两者对数,所以平方损失为\((log\ p^{'}_{ij}-log\ q^{'}_{ij})^2=(\bm u^T_{j}\bm v_i-log\ x_{ij})^2\).
  • 为每个词\(w_i\)添加中心词偏执\(b_i\)和上下文词偏置\(c_i\)
  • 用权重函数\(h(x)\)替代损失项权重,其中\(h(x)\)在[0,1]的间隔内递增.

最后总的损失函数为:

\[ \sum_{i\in V}\sum_{j\in V}h(x_{ij})(\bm u^T_{j}\bm v_i+b_i+c_j-log\ x_{ij})^2 \]

由于对称性,有\(x_{ij}=x_{ji}\),而Word2Vec没有拟合对称性,GloVe拟合了对称性.因此,在GloVe模型中,词的上下文向量\(u_i\)和中心词向量\(v_i\)应该是相等的,但在实际应用中,由于训练过程的随机化导致两个向量有轻微不同,因此GloVe将两者相加作为输出向量.

参考资料1也提供了另一种理解GloVe模型的思路,和cs224n里面类似.

参考资料

由于评论系统依托于Github的Discuss存在,因此默认评论者会收到所有通知。可以在邮件里点击"unsubscribe"停止接受,后续也可以点击下列仓库进行通知管理: bg51717/Hexo-Blogs-comments
Since the comment system relies on GitHub's Discussions feature, by default, commentators will receive all notifications. You can click "unsubscribe" in the email to stop receiving them, and you can also manage your notifications by clicking on the following repositories: bg51717/Hexo-Blogs-comments