0
点赞
收藏
分享

微信扫一扫

#yyds干货盘点# GloVe word vectors

这篇文章是我的笔记分享,内容主要来自吴恩达老师的深度学习课程。^[AI中国官网-全球领先的线上AI教育、实践平台 (deeplearningai.net)]

前边讲了怎么学习embedding matrix,这小节了解一下GloVe^[
Glove: Global Vectors for Word Representation (researchgate.net)
]

GloVe,用词表示的全局变量。该方法的思想是,将整个语料库的统计数据的信息纳入损失函数。

我们之前是使用context - target词对,GloVe是使其关系明确化。

依旧是使用I want a glass of orange juice to go along with my cereal.

$x_{ij}$表示i在j上下文中出现的次数,在这里i和j的功能就等同于之前的context和target。

遍历你的训练集,设定一定的词距,比如上下文各10个词距,你会得到$x{ij} = x{ji}$,如果你设置i必须在j之前,那结果就会大不相同。这里我们使用的是上下文都考虑在内。$x_{ij}$就是单词i和j彼此接近频率的计数器。

GloVe要做的就是

$$
\operatorname{mimimize} \sum{i=1}^{10000} \sum{j=1}^{10000} f\left(X{i j}\right)\left(\theta{i}^{T} e{j}+b{i}+b{j}^{'}-\log X{i j}\right)^{2}
$$

最小化$\sum{i=1}^{10000} \sum{j=1}^{10000} f\left(X{i j}\right)\left(\theta{i}^{T} e{j}+b{i}+b{j}^{'}-\log X{i j}\right)^{2}$,现在我们将其拆解进行分析。

  1. $\left(\theta{i}^{T} e{j}-\log X_{i j}\right)^{2}$

    这一步是计算两个词之间的关联度,即他们同时出现的频率是多少。

  2. $\sum{i=1}^{10000} \sum{j=1}^{10000} \left(\theta{i}^{T} e{j}-\log X_{i j}\right)^{2}$

    之后进行梯度下降,学习参数$\theta{i}^{T}$和$e{j}$。

  3. $\sum{i=1}^{10000} \sum{j=1}^{10000} f\left(X{i j}\right)\left(\theta{i}^{T} e{j}-\log X{i j}\right)^{2}$

    其中$\log X{i j}$当$X{i j}$趋近于0的时候$\log X{i j}$就趋近于负无穷,那此时这个式子是无效的。因此我们要在前边加上一个加权项$f\left(X{i j}\right)$,使$X{ij}$等于0的时候也能正常计算。比如当$X{ij}$等于0时,$f(X_{ij})$也等于0,原始变为$0 \times ∞ = 0$。此外对于一些出现频率很高的词也可以赋值一个较小的权重使其平衡,比如遇到a、the、and之类的词。更详细的可以看文章末尾的论文原文自己探索。

  4. $\sum{i=1}^{10000} \sum{j=1}^{10000} f\left(X{i j}\right)\left(\theta{i}^{T} e{j}+b{i}+b{j}^{'}-\log X{i j}\right)^{2}$

    最后加上$b{i}+b{j}^{'}$这一项(具体什么意义我没去深究。)

最后,这个算法在这θ和e是完全对称的,所以$\theta_i$和$e_j$是对称的,如果你只看数学意义,他们功能是相近的,你可以将其任意排序。因此一种训练该算法的方法是对二者进行同样的初始化,然后使用梯度下降来最小化输出。每个词处理完毕之后再取平均值。

例如给定一个词orange,在处理完毕之后你会得到$e{orange}^{final} = \frac{e{orange}+\theta_{orange}}{2}$。因为在这个特定的公式里θ和e是对称的。

举报

相关推荐

0 条评论