cs224n Lecture 2 :Word2Vec Skip-Gram CBOW Negative Sampling 总结

词向量表示法

One-Hot表示法

Word2Vec是NLP里面一个非常重要的模型,以往是将单词映射成一个One-Hot向量。有两个问题,一个是一旦词汇表巨大,每个单词的One-Hot向量维度十分巨大,比如10W个词,单个单词的维度就是10W。二是任意两个非等向量都正交,乘积为0,无法表示出单词间的关系。对于语言而言,这显然是不行的,各个单词之间都或多或少有关系。

Word-Net表示法

后来引入了一种叫Word-Net的方法,把每一个单词分到不同的类别里去,比如“熊猫”,它的类别有“浣熊类”、“食肉动物”、“哺乳动物”,等等。比如英文“Good”,可以是形容词、副词、名词。这样做,的确比One-Hot好多了,可以表示出两个单词的关系,比如“狗”,也有“食肉”、“哺乳动物”等属性,但问题在于,这种离散的表示法无法表示两个单词到底有多像。比如“狗”跟“熊猫”所属的类别,几乎没有差别,但事实上,两种动物无论从形态还是习性上,差别都挺大的。比如“Good”和“Expert”,两者的所属的类也几乎一样,但你不能说“I am good at xxxx”所表达的感情跟"I am an expert in xxx "一样。

Word Vector表示法

为了解决以上问题,引入了一种新的表示法——Word Vector。Word Vecor跟One-Hot形式倒是挺像的,都是一个向量,只不过词向量的Ont-Hot所有元素只有1个1,而Word Vector的值,是不同的连续值。那么如何得到这些不同词向量的值呢?显然,人为去算是不可能的,这个时候就要靠学习算法了,让计算机自己学得词向量。如何学习呢?有两种比较经典的算法,一种是Skip-Gram,一种是CBOW(Continuous Bag of Words 连续词包)。

词向量学习模型

Skip-Gram

SG模型的训练过程,简单来说

第一步:初始化中心词矩阵上下文矩阵、滑窗/半径”的小大。比如词汇表有W个词,每个词D个维度(信息),滑窗大小为4。

第二步:选定一个中心词,找到其上下文词,对每个上下文词,从中心词矩阵中,找到中心词的词向量(1*D),与上下文词矩阵相乘(W*D),得到一个W*1的输出,对这个输出进行Softmax,找到概率最大(argmax)那个,看是什么词,与真实的上下文词进行比较,计算损失。

第三步:通过对损失函数进行梯度下降,更新中心词矩阵上下文矩阵的参数,得到词向量的结果。

具体过程可以查看:

SkipGram教程

CBOW

CBOW跟SG很像,反过来了,输入不是一个中心词向量,而是这个中心词上下文词向量的平均,输出则是这个中心词。两者的关系:

词向量训练优化

Hierarchical Softmax

一种方法是基于传统的Softmax,有个问题,当词汇量很大时,每次迭代计算量十分巨大,要把所有例子加起来算一下softmax,显然不太可取。所以就有了改进的softmax,基于树的结构,可以把计算量从o(V)减小到o(logV)

Negative Sampling

改进的方法就是Negative Sampling,每一次迭代,不再计算所有单词,而是只选择几个“负样本”来进行计算,可以把计算量大大缩小。为什么这么做是合理的?因为在一个庞大的语料里面,跟中心词相关的词很少,大部分词都跟中心词无关,是稀疏的。所以,干脆就随机选择几个词,也不失一般性。

两者具体的数学推导及原理,可以参考:

word2vec原理(三) 基于Negative Sampling的模型

论文可以参考Mikolov的:Distributed representations of words and phrases and their compositionality

代码实现可以参考鄙人的:https://blog.csdn.net/csdn_inside/article/details/86308157

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值