Word2Vec

来源:互联网 发布:dateadd sql server 编辑:程序博客网 时间:2024/05/17 22:06

背景

首先,了解下大体的词处理方法:
http://blog.csdn.net/mytestmy/article/details/26961315

  1. 词向量

最原始的,One-Hot Representation,用一个很长的向量来代表一个词,有就是1,没有就是0。
“话筒”表示为 [0 0 0 1 00 0 0 0 0 0 0 0 0 0 0 …]
“麦克”表示为 [0 0 0 0 00 0 0 1 0 0 0 0 0 0 0 …]
问题来了,话筒 和 麦克风 的相似性体现不出来;而且维数灾难…

然后,Distributed Representation。就是直接用一个普通的向量表示一个词,这种向量一般长成这个样子:[0.792, −0.177, −0.107, 0.109, −0.542, …],也就是普通的向量表示形式。维度以 50 维和 100 维比较常见。
怎么得到这种词向量呢,就有很多方法了,向n-gram,word2vec。

由于是用向量表示,而且用较好的训练算法得到的词向量的向量一般是有空间上的意义的。比如可以计算它们的距离等等。

从N-gram说起

基础的语言模型。
语言模型形式化的描述就是给定一个T个词的字符串s,看它是自然语言的概率P(w1,w2,…,wt)。w1 到 wT 依次表示这句话中的各个词。有个很简单的推论是:
这里写图片描述
上面那个概率表示的意义是:第一个词确定后,看后面的词在前面的词出现的情况下出现的概率。
简化下就是酱紫:
这里写图片描述

然后就是怎么计算这个p(w_i|Context_i)了。如果真的是全部都统计一遍,计算量太大了,所以就有很多偷懒的模型——比如N-gram。在context里,N-gram就是只管这个词前面的n-1个词,加上它自己,总共n个词的情况。一般2,3就差不多了。

再来一步,按照词性来分。
有些大牛觉得N-gram还不行,因为第i个词很多情况下是条件依赖于它前面的词的语法功能的,所以又弄出来一个n-pos模型,n-pos模型也是用来计算的,但是有所改变,先对词按照词性(Part-of-Speech,POS)进行了分类,具体的数学表达是:
这里写图片描述

上面的方法,基于统计的方式,就可以计算出来了。但是其实还不够,比如,词向量间仍然不具有距离的可比性,不知道两个词的词义是否相近。

再引入参数,使用极大似然作为目标函数来建立模型。一系列的方法如下:
这里写图片描述

接着,就可以有很多不同的方法来计算这些参数了,word2vec是其中一种。

word2vec

终于到正题了,参考这篇文章:
http://www.tuicool.com/articles/fmuyamf

两种模型 cbow和Skip-gram。还有各自的抽样。
这么理解,cbow建的模型是 P(w|context),取这个词w前后一定个数范围的词,组成context,它们的词向量加载一起。
Skip-gram建的模是 P(c1|w),P(c2|w)… w作为前提。再将这些概率连乘,得到这个词w的上下文概率。

其实,这两个模型的应用,都是用来判断一句话是不是自然语言。不过过程中,可以训练得到很有用的词向量。比如,就有 king-queen 约等于 man-woman。

  • cbow
    样子如下:
    这里写图片描述
    第一层,就是context里,各个词累加起来,形成第二层的隐层。第二层的隐层,会与下面的每一个非叶子节点相连。
    在下面的大框里,是一个霍夫曼树。叶子节点,表示一个个的词。非叶子节点,也是一个向量,代表一类的词。
    然后要计算P(w|context)时,就是找路径,看怎么才能到达霍夫曼树的w的这个叶子节点。而它的值,就跟这个路径上经过的非叶子结点有关。

至于怎么去算,就基于神经网络的能量函数,然后转而对计算P(A|C),转化成能量函数的形式。并且,可以采用不断二分的方法,一步步化简下来。最终得到计算的方法:
这里写图片描述
这里就超级巧妙,往左往右,对应上面的不断二分的方法,而且与这个词的叶子节点的霍夫曼编码dk序列有关。就可以计算了。

好了,有了上面转成能量函数的形式,以及化简后的形式。得到似然函数的形式。
并且由于是不断二分,相当于不断分类,采用霍夫曼树向左认为正类、向右认为负类。就可以计算了,比如随机梯度下降等等。(这里没太明白最大似然的东东)

  • * skip-gram*
    大概长这样,少了隐层:
    这里写图片描述
    其他的都差不多。

扩展

这里有讲到其他的一些处理,比如LDA,比如句向量…
http://www.flickering.cn/ads/2015/02/%E8%AF%AD%E4%B9%89%E5%88%86%E6%9E%90%E7%9A%84%E4%B8%80%E4%BA%9B%E6%96%B9%E6%B3%95%E4%BA%8C/

0 0
原创粉丝点击