Word Embedding的学习

Word Embedding的概述:

根据之前对One Hot的介绍,我们发现它不能够表现出词语之间的相似度,因此提出Word Embedding。

首先,我们提一下分布式表示(distributed representation):若干元素的连续表现形式,将词的语义分布式地存储在各个维度中,与之相反的是独热向量(One Hot)。

Word Embedding的学习

Word Embedding(词嵌入)是基于神经网络的分布式表示,也可称之为词向量,是将自然语言表示的单词转换为计算机能够理解的向量或矩阵形式的技术。总的来说,它是一个词的低维向量表示。在有一个词向量之后,各种基于向量的运算就可以实施,如用向量之间的相似度来度量词之间的语义相关性。它是基于分布式假设,即出现在相同上下文(context)下的词意思应当相近。

 

其有两种实现方法:

· word2vec:从直观上理解,Skip-Gram是给定input word来预测上下文。而CBOW是给定上下文,来预测input word。

      skip-gram

      CBOW

· Glove

下面只对这些作一下简单介绍:

Word2Vec模型实际上分为了两个部分,第一部分为建立模型,第二部分是通过模型获取嵌入词向量。Word2Vec的整个建模过程实际上与自编码器(auto-encoder)的思想很相似,即先基于训练数据构建一个神经网络,当这个模型训练好以后,我们并不会用这个训练好的模型处理新的任务,我们真正需要的是这个模型通过训练数据所学得的参数。

1、CBOW

CBOW的思想是取目标词w的上下文(前后相邻词)而不是仅之前的词作为预测前提,类似于共现矩阵的窗口,不同于NLM的是,Context(w)的向量不再是前后连接,而是求和,我们记为Word Embedding的学习Xw,此外还将NLM的隐藏层去掉了。

以“我爱北京天安门”这句话为例。假设我们现在关注的词是“爱”,C=2时它的上下文分别是“我”,“北京天安门”。CBOW模型就是把“我” “北京天安门” 的one hot表示方式作为输入,也就是C个1xV的向量,分别跟同一个VxN的大小的系数矩阵W1相乘得到C个1xN的隐藏层hidden layer,然后C个取平均所以只算一个隐藏层。这个过程也被称为线性**函数。然后再跟另一个NxV大小的系数矩阵W2相乘得到1xV的输出层,这个输出层每个元素代表的就是词库里每个词的事后概率。输出层需要跟ground truth也就是“爱”的one hot形式做比较计算loss。

2、skip-gram

skip-gram的思想与CBOW是相反的,即输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量。

Word Embedding的学习

skip-gram、CBOW每次都是用一个窗口中的信息更新出词向量,但是Glove则是用了全局的信息(共线矩阵),也就是多个窗口进行更新。

3、Glove

Glove是基于全局词汇共现的统计信息来学习词向量,从而将统计信息与局部上下文窗口方法的优点都结合起来。其方法首先要基于语料库构建词的共现矩阵,然后基于共现矩阵和GloVe模型学习词向量。
       开始 -> 统计共现矩阵 -> 训练词向量 -> 结束

记词汇的共现矩阵为X,其中,每一个元素Xij​表示词汇 j 出现在词汇 i 上下文中的次数总和,令Xi​=∑k​Xik表示所有出现在词汇 i 上下文中的词汇的次数总和,令Word Embedding的学习表示词汇 j 出现在词汇 i 上下文的概率。

关于Glove详细原理介绍可见:https://blog.****.net/linchuhai/article/details/97135612