您的位置:首页 > 其它

word embedding and word2vec 理解

2018-03-04 23:24 99 查看
该篇博文纯属个人观点,本着共同交流学习的想法,其中有错误和不足还请大佬们指正。
在NLP处理中,词向量是网络的基本输入,那么该如何获得词向量呢?
    两种方法,一种是one-hot representation(中文:独热表示,不建议记中文名,以后均是英文),另一种是distribute representation。
一、One-hot representation
    问什么称之为one-hot就是因为它每个词之间的表示都是独立的,比如我们有10000个词[a,an,alone,be,base........,often,usual.....],那么在One-hot representation表示方法下,an的向量表示[0,1,0,0,.........0,0.....],其余的自己脑补下,也就是只有自己所在的位置为1,其余的都为0。这种方法的缺点很明显,首先(1)上下文之间没有连接关系,这里举一个Andrew.Ng老师的例子,句子1:He said Teddy is a good teacher.   句子2:He said Teddy bear is lovely. 一个是人名一个是泰迪熊,所以上下文之间的关系是非常重要的,而one-hot中的0\1显然不具有这个能力。(2)每个词的向量过大,比如上例中的“an”,它就是一个10000的vector。
二、distribute representation
    先从大的方面说,它又分为三种表示方法,基于矩阵的表示、基于聚类的表示、基于神经网络的表示。其中基于矩阵常见的模型是Glove(Global Vector)(乍然一看名字挺唯美PS:这里分享一个有趣的小知识,大家知道神经网络的前身叫什么嘛,感知机/多层感知机!但是一直不温不火的,最后取了个高大上的名字一下子火了(当然还有很重要的学术因素在推动),可见名字的重要性啊。)基于聚类的就不说了,没什么有名的。基于神经网络的有CBow,skip-gram,negative sampling模型。
    下面来通俗的解释一下在NLP学习中的几个名词
    1、什么是word embedding
         eg: I have 10000 words , and I set 300 features manually, just like this

 manwomenkingapple
gender-11-10.01
age0.070.020.30.04
fruit0.0020.010.010.97
......    
......    
    拿“king”这个词举例,它的feature 1 为gender(性别),很明显国王是男的,这里为了区分男女所以有了正负;feature  2为age,国王的年龄一般偏大,肯定不会是小孩,可以把这里的数值大小当成可信度;feature 3为fruit,国王怎么能是一个水果呢,所以这里数值趋近于0.
    所以“king”这个词的向量为[-1,0.3,0.01,.......](300*1),向量的大小就是feature的数量,是不是相比于one-hot小了很多。
所谓的word embedding,我理解的为:人工做出来一个300D的空间,然后每个词按照其300个feature数值大小,嵌入该空间里去。
2、什么事word2vec
     其实word2vec是一个工具包,里面包含了几种word embedding的方法,其中这些方法中最突出的模型就是前面提到的CBow,skip-gram,negative sampling。利用这三种神经网络训练的到的embedding vector特别好,维度小,便于计算,同时上下文之间的联系又好。(这才是我们最终想要的东西)
最后得到vector就可以输入到你的RNN或其他网络里面继续训练了(也可以下载网上现成的,可能效果更好)。
(由于时间过于了一段时间,记忆有些模糊,理解错误之处还请指出)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  deep learning RNN NLP