本章小白将继续介绍人工智能之中自然语言处理的章节部分。

连续词袋

连续词袋(CBOW)的工作方式与跳过克非常相似,但是主要区别在于我们尝试从周围词的矢量和预测中心词,有点像跳过克的倒数。

共现矩阵(基于计数的方法)

跳过语法模型一次捕获一个单词的同时出现。例如,我们一次遍历我们的语料库,看到“深度”和“学习”同时发生,因此我们对这些向量进行了更新并继续进行,然后看到它又再次发生,因此我们进行了另一次更新。

这样做似乎并不是很有效。为什么不通过语料库一次并计算它们一起出现多少次,而不是一次进行一次?
好吧,我们可以使用共现矩阵来做到这一点!看起来像下面的矩阵:
人工智能-自然语言处理(2)
在每一行上,我们都有一个用于所有单词的向量,例如,我们看到“喜欢”和“喜欢”有一些重叠,因此它们可能彼此相似,这很好。但是,不仅矢量会随着我们的语料库中的更多单词而改变大小,而且非常大的语料库也会使这些矢量变得巨大,这不好,因为在使用这些矢量训练任何东西时会遇到稀疏性问题。
答案是将维数减少到仅重要数量的固定数量。

一种减少方法是使用SVD(奇异值分解)。然后,我们将SVD的结果用作词向量。

该方法实际上比2005年提出的跳过语法要早一些,但仍然会产生一些不错的结果。

词表示的全局向量-GloVe模型

因此,使用word2vec类型预测方法或基于计数的方法有其优缺点。这些显示如下:
人工智能-自然语言处理(2)
下一步是将这两种方法的优点结合在一起。结果就是GloVe模型。

在GloVe模型中,我们从大共现矩阵开始。现在,而不是像上面那样使用SVD减少这种情况,我们改为尝试通过最小化新的损失函数来创建类似于跳跃语法的词向量:
人工智能-自然语言处理(2)
在这种损失函数中,P是共现矩阵,而u和v是词向量。

GloVe的训练目标是学习单词向量,使其点积等于单词共现概率的对数。

相关文章: