[笔记]word2vec 的cbow模型和skip-gram模型

博客围绕Word2Vec展开,介绍了其原理及获取词向量的相关知识,指出用神经网络训练语言模型的起源。还提到PCA降维可应对庞大权重矩阵问题,阐述了Word2Vec作者在第二篇论文中的三个创新,如处理词组、抽样高频词、采用负采样,同时介绍了抽样率和负采样的作用。

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

word2vec原理(二) 基于Hierarchical Softmax的模型

word2vec 中的数学原理详解(三)背景知识

如何获取词向量?
大部分情况下,词向量和语言模型都是捆绑的,训练完成后,两者同时得到。

用神经网络来训练语言模型的思想最早由百度IDL的徐伟提出。这方面最经典的文章是bengio于2003年发表的《a neural probabilisitc language model》 后来有了谷歌公司的word2vec

PCA降维
PCA : principal component analysis ( 主成分分析)

举个栗子,我们拥有10000个单词的词汇表,我们如果想嵌入300维的词向量,那么我们的输入-隐层权重矩阵和隐层-输出层的权重矩阵都会有 10000 x 300 = 300万个权重,在如此庞大的神经网络中进行梯度下降是相当慢的。更糟糕的是,你需要大量的训练数据来调整这些权重并且避免过拟合。百万数量级的权重矩阵和亿万数量级的训练样本意味着训练这个模型将会是个灾难(太凶残了)。
Word2Vec 的作者在它的第二篇论文中强调了这些问题
下面是作者在第二篇论文中的三个创新:

  1. 将常见的单词组合(word pairs)或者词组作为单个“words”来处理。
  2. 对高频次单词进行抽样来减少训练样本的个数。
  3. 对优化目标采用“negative sampling”方法,这样每个训练样本的训练只会更新一小部分的模型权重,从而降低计算负担。

抽样率

word2vec的C语言代码实现了一个计算在词汇表中保留某个词概率的公式。

ωi 是一个单词,Z(ωi) 是 ωi 这个单词在所有语料中出现的频次。举个栗子,如果单词“peanut”在10亿规模大小的语料中出现了1000次,那么 Z(peanut) = 1000/1000000000 = 1e - 6。

在代码中还有一个参数叫“sample”,这个参数代表一个阈值,默认值为0.001(在gensim包中的Word2Vec类说明中,这个参数默认为0.001,文档中对这个参数的解释为“ threshold for configuring which higher-frequency words are randomly downsampled”)。这个值越小意味着这个单词被保留下来的概率越小(即有越大的概率被我们删除)。
详情见一文详解 Word2vec 之 Skip-Gram 模型(训练篇)

负采样每次让一个训练样本仅仅更新一小部分的权重,这样就会降低梯度下降过程中的计算量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值