NLP - 共现矩阵、Glove、评估词向量、词义

文章讨论了Word2vec算法的优化,重点介绍了使用随机梯度下降法加速训练过程,以及共现矩阵和神经网络模型如Glove在表示词义和解决多义性问题中的应用。还提到了负采样在更有效训练中的作用和词向量的内在评估和外在评估方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Word2vec算法优化

在这里插入图片描述
J(θ): 损失函数

问题:进行每个梯度更新时,都必须遍历整个语料库,需要等待很长的时间,优化将非常缓慢。
解决:不用梯度下降法,用随机梯度下降法 (SGD)
减少噪音,做得更好,也可以更快的计算。

词向量的随机梯度

我们只更新实际出现的向量(当前中心词和上下文)

Word2vec算法:更多细节

为什么需要两个向量表示一个词:

  • 更容易优化,最后取平均最终表示词
  • 可以只用一个向量,不过做微分复杂很多

Word2vec算法实际是一个算法家族

  1. Skip-grams (SG) (更常用,合理自然)
  2. Continuous Bag of Words (CBOW)

目前介绍的都是简单的 softmax等式来训练
在这里插入图片描述

更有效的训练方法:负采样(SGNS)

Skip-grams负采样

在这里插入图片描述

目标函数

我们希望中心词和真实上下文词的向量点积最大,中心词和随机词的向量点积最小。
k是我们负采样的样本数目(随机采样的数量)

在这里插入图片描述

unigram分布是 单词在语料库中实际出现的频率。
(10000个词出现50次 => 50/10000)

Why not capture co-occurrence counts directly?

共现矩阵,将单词表示为共现向量(单词之间共同出现的次数)

在这里插入图片描述
两种方式实现共现矩阵:

  1. windows:与Word2vec类似,在每个单词周围都使用window。捕获了位置和一些更细微的句法和近似语义。
  2. full document:将窗口大小设置为段落大小或整个网页,并计算其中的共现。经常用于信息检索(潜在的语义分析)

在这里插入图片描述

第一种方法:Dimensionality Reduction on X (SVD)

为了得到低维度的词表示。
它能够在给定的维度内,尽可能的恢复到原始的共现矩阵。
在这里插入图片描述
在这里插入图片描述
问题
最终得到的单词计数不是正态分布的。因为有大量的常用词和稀有词。

第二种方法:Hacks to X

按比例调整计数,处理词频较高的问题。
对原始计数取log/限制最大计数/扔掉虚数
接下来运行SVD来获得更有用有效的词向量。

总结

两种词向量表示方法:

  1. 共现矩阵,然后使用线性代数方法(SVD)
    (问题:词之间没有意思层面的联系,只是相似性;过分重视大计数)
  2. 随机初始,然后使用迭代神经网络更新算法(梯度下降法 负采样)
    (问题:语料库很大,分母太难计算;没有有效利用数据)

在这里插入图片描述
Glove:将两种表示方法结合起来 => 在神经网络中使用计数矩阵
|||
V

向量差异的编码意义

关键思想:共现概率的比值可以对meaning component进行编码
重要的不是单一的概率大小,而是他们的比值,蕴含着meaning component。

在这里插入图片描述

ice 和 solid 共现的概率是 P 1 = 1.9 × 1 0 − 4 P1 = 1.9 \times 10 ^ {-4} P1=1.9×104
steam 和 solid 共现的概率是 P 2 = 2.2 × 1 0 − 5 P2 = 2.2 \times 10 ^ {-5} P2=2.2×105
ice和solid共现概率 steam和solid共现概率 的比值是 P 1 P 2 \frac{P1}{P2} P2P1

我们如何将这些共现概率的比率 作为线性的meaning components来捕获?因此,在我们的词向量空间中,我们可以加上和减去线性的meaning components。(能够得到 king-man = queen-woman)<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值