word embedding

1. word的向量表示

    最原始的1-N encoding

    

       这种表示的缺点是无法表现出词汇之间的定量关系,比如猫和狗同属于动物类。即使把词汇做分类(clustering),也无法体现出

       类别之间的关系。

       

          于是就有了word embedding的思想。所谓word embedding,就是把每一个word都project到一个高维空间中(这里的维度

          还是会明显低于1-N encoding中的空间维度)。

          

          在上图中,具有相似语意的词汇会被映射到距离较近的地方。而且每个维度具有明确的意义。比如在上图中,横轴代表的

          意思可能是“生命”,纵轴代笔的含义可能是“运动”。


2. word embedding的架构

       这是一个无监督学习问题。怎么让machine知道每一个词汇的含义呢?只有让machine阅读大量的文章。

       

        每一个词汇的含义可以根据它的context(上下文)得到

        

          如何进行词汇上下文的挖掘呢?基本有两种不同的策略,一种是count based的方法,另一种是predicition based的方法。

          

            在count based的方法里面,考察两个词汇w_i、w_j,如果他们两个很相近,那么他们两个词汇对应的此向量的点积应该

            与他们的共现频次相接近,即v(w_i) * v(w_j) ~= N_ij,和LSI的思想类似?

            

            而prediction based的方法,则是一个neuron network,任务是根据上一个词汇来预测下一个词汇是什么。即,该network

            的input就是上一个词汇的词向量(1-N encoding),output则是一个softmax,维度是词典的size,每一维代表着下一个词是该              词汇的概率。

           

           在这个网络中,input是原始的1-N encoding,是固定不变的,然后呢,我们把第一个hidden layer的输入拿出来作为该词汇

           的此向量。(疑问:为什么是第一个hidden layer呢?)

           

            为什么这样做是可行的呢?

            在下面的例子中,“马英九”和“蔡英文”的后面都跟的是“宣誓就职”,如果在文本中大量出现这两个句子,那么在出现

            ”马英九“或”蔡英文“的时候自然就期待下一个出现的词汇是”宣誓就职“,要想使得在output这一层中,输出“宣誓就职”

            的概率相近,那就要使得整个network中每一层流经的数据很接近!我们把第一个hidden layer里面的数据拿出来,作

            为词汇的向量(之所以是第一个hidden layer,理由可能是第一层的hidden layer是input的直接表征)

           

            

        上面的例子中,是用一个word去预测下一个word,给人的感觉就是太弱了,一般不会只借助于上文的一个词,而是若干

        个词,以下是两个词的例子

        

      当利用上文两个词的时候,在input端,把两个词的1-N encoding连在一起。这里有类似CNN的操作,即sharing parameters。

     

       那怎么保证sharing parameter呢?类似于CNN里的做法

       

     

3. word embedding模型的训练

      这是一个unsupervised的问题,cost function是cross entropy的形式。比如对于下面的例子,input是“潮水”、“退了”,那么你

      期望的output是“就”,输入是“退了”、“就”,则期望的输出是“知道”,等等。(注:在output端,“就”、“知道”这些词也是1-N                    encoding的形式)。

      

      

4. 网路其他形式

     


5. word embedding结果的意义

     

       

          



6. document embedding

      如果直接用bag of words,就会忽略掉词序,而词序是非常重要的

      

      那怎么做呢?可以参考以下文献

     

     

猜你喜欢

转载自blog.csdn.net/u010859324/article/details/78451873