Word Embedding
Word2Vec
Word2Vec有以下几种方式:
1-of-N Encoding:vector中元素的数量=word的数量,对一个单词来说只要vector中对应元素为1,其他元素为0 。但这种表示方式无法建立word之间的联系
Word Class:把具有相同性质的word进行聚类划分成多个class,用word所属的class表示该word。但聚类算法强迫每个样本属于并只属于一个cluster,实际上一个样本会有多个cluster的特征,比如dog的class是动物,flower的class是植物,但它们又同属于生物
Word Embedding:把所有word投影到一个空间,且该空间的维度远低于1-of-N Encoding,这是一个Dimension Reduction的过程。语义相近的word在该投影空间中是比较接近的,且该空间的每一维都有特殊的含义。
Word Embedding是一个无监督的方法,只要让机器阅读大量文章,它就可以知道每一个word在embedding之后的特征向量。我们的任务就是训练一个神经网络,输入为word,输出为word对应的embedding vector。它的基本思路是根据word的上下文获取该word的含义。比如“A担任总统”与“B担任总统”,他会知道A、B前后都有相同/相似的内容,于是就可以推测A与B是类似的
如何做Word Embedding
Counting based
假设$w_i$和$w_j$这两个word经常在一篇文章中同时出现,他们的word vector分别用$V(w_i)$和$V(w_j)$表示,则$V(w_i)$和$V(w_j)$会比较接近。假设$N_{i,j}$是$w_i$和$w_j$这两个词汇在相同文章中同时出现的次数,我们希望它和$V(w_i)·V(w_j)$越接近越好
Prediction based
给定一个sentence,我们要训练一个神经网络,它要根据当前的word$w_{i-1}$来预测下一个可能出现的word$w_i$是什么。整个神经网络把$w_{i-1}$的1-of-N encoding当作input,经过网络的计算,output代表每个word为$w_i$的概率。经过充分训练之后,我们取该网络第一个隐藏层的输入当作word vector$V(w_i)$,用它来代表word$w_i$。
参数共享

公式定义
如下图所示,假设$w_{i-2}$的1-of-N编码为$x_{i-2}$、$w_{i-1}$的1-of-N编码为$x_{i-1}$,它们的维数$|V|$为数据中word的数量,隐藏层的输入向量$z=W_1x_{i-2}+W_2x_{i-1}$,其中$W_1$和$W_2$都是$|Z|$$|V|$维的weight matrix,$z$的长度$|Z|$表示降维后的维数
我们让$W_1=W_2=W$,此时$z=W(x_{i-2}+x_{i-1})$,只要我们得到了这组参数W,就可以与1-of-N编码x相乘得到word embedding的结果$z$。要使$W_1=W_2$,我们只需保证初始值相同并且更新流程相同即可,即
$$
w_i = w_i - \eta \frac{\partial C}{\partial w_i} - \eta \frac{\partial C}{\partial w_j}
$$
$$
w_j = w_j - \eta \frac{\partial C}{\partial w_j} - \eta \frac{\partial C}{\partial w_i}
$$
其它Prediction-based方法
- CBOW(Continuous bag of word model)
拿前后的词汇去预测中间的词汇 - Skip-gram
拿中间的词汇去预测前后的词汇








