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
假设 和 这两个 word 经常在一篇文章中同时出现,他们的 word vector 分别用 和 表示,则 和 会比较接近。假设 是 和 这两个词汇在相同文章中同时出现的次数,我们希望它和 越接近越好
Prediction based
给定一个 sentence,我们要训练一个神经网络,它要根据当前的 word 来预测下一个可能出现的 word 是什么。整个神经网络把 的 1-of-N encoding 当作 input,经过网络的计算,output 代表每个 word 为 的概率。经过充分训练之后,我们取该网络第一个隐藏层的输入当作 word vector ,用它来代表 word 。
参数共享

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








