CS224N笔记——高级词向量表示

本文围绕词向量展开,先复习了word2vec主要思想,介绍了skip - gram模型和负采样,还提及CBOW模型。接着阐述基于窗口的共现矩阵及问题与解决方法,如奇异值分解。综合优势提出GloVe模型,最后介绍词向量评测方法,包括内部和外部评估,对比了不同模型效果。

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

目录

复习

近似:skip-gram模型和负采样

其他方法

综合两者优势:GloVe

评测词向量


  • 复习

word2vec主要思想

  • 遍历整个语料库中的每个单词
  • 预测每个单词(窗口的中心词)的上下文词汇

  • 在每个窗口进行随机梯度下降法(SGD)

词向量的随机梯度

在每个窗口,只有最多2m+1个单词,\bigtriangledown _{\theta }J_{t}(\theta )非常稀疏。

我们也可以只更新实际出现过的词向量。

解决方案:每次更新只更新W矩阵中的少数列,或者为每个词语建立到词向量的哈希映射。

  • 近似:skip-gram模型和负采样

词表V的量级非常大,以至于下式的分母很难计算:

因此需要负采样来实现skip-gram模型,主要思路是训练一对正例(中心词和在它上下文窗口中的词)与一些负例(中心词与随机词配对)的二元逻辑回归。

论文:《单词和短语的分布表示以及它们的语义合成性》(Mikolov et al. 2013)

整个目标函数:

其中k是负采样的个数,使用sigmoid函数:

然后我们最大化两个词同时发生概率的对数。那么这个目标函数就是要最大化中心词与上下文的相关概率,最小化与其他词语的概率。

明确的符号:

为每个窗口取k个负样本,然后最小化这些随机词出现在中心词附近的概率。

从简单的一元模型分布U(w)中采样获取观测这些词大致出现的频率,然后基于频率去采样,避免频繁采样到那些经常出现的词,取其频率指数为3/4的值:

P(w)=U(w)^{3/4}/Z

CBOW模型

连续词袋模型(CBOW)的主要思想:通过中心词周围的词来预测中心词。而skip-gram模型是通过中心词来预测上下文中的词。

word2vec通过在空间中把相似的词放在附近来改进目标函数

总结word2vec

word2vec将窗口视作训练单位,每个窗口或者几个窗口都要进行一次参数更新。要知道,很多词串出现的频次是很高的。能不能遍历一遍语料,迅速得到结果呢?

早在word2vec之前,就已经出现了很多得到词向量的方法,这些方法是基于统计共现矩阵的方法。如果在窗口级别上统计词性和语义共现,可以得到相似的词。如果在文档级别上统计,则会得到相似的文档(潜在语义分析LSA)。

  • 其他方法

基于窗口的共现矩阵

设窗口长度为1(通常有5到10个窗口),假设有一个对称的窗口(不在意在中心词左边或右边),且已有语料库。

例如:

I like deep learning.

I like NLP.

I enjoy flying.

对于该语料库的基于窗口的共现矩阵为:

存在的问题:

  1. 如果词典有一个新单词,那么词向量就会发生变化
  2. 这个向量的维度会非常高
  3. 在训练机器学习模型时会存在稀疏性问题

解决方法:低维向量

并不只是存储所有共同出现的次数,每个单独的数字还存储重要的信息,即用25到1000的低维稠密向量来储存重要信息。如何降维呢?

奇异值分解SVD

对共现矩阵X进行奇异值分解,其中\widehat{X}是与原来共现矩阵最相似的秩k。

在python中,已有语料库和共现矩阵X:

取出U的头两列并且画出它们:

改进

  1. 限制高频词的频次,或者干脆停用词
  2. 根据与中央词的距离衰减词频权重
  3. 用皮尔逊相关系数代替词频

SVD的问题

  1. 计算复杂度高:对n×m的矩阵是O(mn^{2})
  2. 不方便处理新词或新文档
  3. 与其他深度学习模型训练套路不同

基于计数vs基于窗口或直接预测

  • 综合两者优势:GloVe

目标函数:

这里的P_{ij}是两个词共现的频次,f是一个max函数:

优点是训练快,可以拓展到大规模语料,也适用于小规模语料和小向量。

如何处理两组向量u和v

最终从所有的向量u和v(列向量)得到矩阵U和V,两者本质上都捕获了共现的计数,事实证明把它们相加效果是最好的:

X_{final}=U+V

  • 评测词向量

两种方法:Intrinsic(内部) vs extrinsic(外部)

Intrinsic:专门设计单独的试验,由人工标注词语或句子相似度,与模型结果对比。好处是是计算速度快,但不知道对实际应用有无帮助。有人花了几年时间提高了在某个数据集上的分数,当将其词向量用于真实任务时并没有多少提高效果。

Extrinsic:通过对外部实际应用的效果提升来体现。耗时较长,不能排除是否是新的词向量与旧系统的某种契合度产生。需要至少两个子系统同时证明。这类评测中,往往会用预训练的向量在外部任务的语料上重新训练。

词向量的内部评估

单词向量类比:

语义和句法类比是通过这些向量中的余弦距离捕捉到的。

Glove可视化

公司-CEO:

形容词-比较级-最高级:

更有趣的配对:

类比评测

在不同大小的语料上,训练不同维度的词向量,在语义和语法数据集上的结果如下:

GloVe的效果显著地更好。另外,高维度并不一定好。而数据量越多越好。

超参数

窗口是否对称(还是只考虑前面的单词),向量维度,窗口大小:

大约300维,窗口大小8的对称窗口效果挺好的。

对GloVe来讲,迭代次数越多越小,效果很稳定:

维基百科语料上得到的效果比新闻语料要好:

另一个词向量内部评估的数据集

人工标注词语相似度(WordSim353):

和Sweden最近的词(余弦相似度):

词向量距离及其与人类判断的相关性:

词向量的外部评估

命名实体识别:

GloVe效果依然更好,但从数据上来看只好那么一点点。

视频中还谈了谈一些适合word vector的任务,比如单词分类。有些不太适合的任务,比如情感分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值