『TensorFlow』读书笔记_Word2Vec
由于暂时不会深入接触NLP相关领域,所以本章的内容就不过多涉及了,以后会进行学习,应该。
Word2Vec又称Word Embeddings,中文称为"词向量"、"词嵌入"等。
One_Hot_Encoder
图像和语音天然可以表示为稠密向量,自然语言处理领域在Word2Vec之前都是使用离散符号,如"中国"表示为5178,"北京"表示为3987这样,即One_Hot_Encoder,一个词对应一个向量(向量中一个值为1其余值为0),这使得整篇文章变为一个稀疏矩阵。而在文本分类领域,常使用Bag of Words模型,将文章对应的稀疏矩阵进行合并,比如"中国"出现23次,则5178位置特征值为23这样。
由于One_Hot_Encoder的特征编码是随机的,完全忽视了字词之间可能的关联。而且稀疏向量作为存储格式时,其效率比较低,即我们需要更多的训练数据,另外,稀疏矩阵计算也非常麻烦。
向量空间模型
向量表达可以有效的解决这些问题,向量空间模型会将意思相近的词映射到邻近的位置。向量空间模型在NLP中依赖的假设是Distributional Hypothesis,即相同语境中出现的词其意义也相近。
向量空间模型有两个子类,
- 其一是计数模型,计数模型会统计相邻词出现的频率,然后将之处理为小而稠密的矩阵
- 其二是预测模型,预测模型则是根据一个词相邻的词去推测出这个词,以及其空间向量
Word2Vec就属于一种预测模型,其分为两个模式,
- CBOW模式从缺词的原始语句推测目标词,适用于小型数据
- Skip-Gram利用目标词逆推原始语句,对大型语料库效果很好
预测模型一般是给定前h个词的情况下去最大化目标词的概率,CBOW模型并不需要计算全部词汇表中的可能性,随机选择k个词汇和目标词汇进行计算loss,这个方法由tf.nn.nce_loss()已经实现了。
以一句话为例;“the quick brown fox jumped over the lazy dog”为例,滑窗尺寸为一时映射关系有:【the、brown】->【quick】这样的,而Skip-Gram中相反,我们希望得到的是(quick,the)、(quick,brown)这样的关系。面对随机生成的负样本时,我们希望概率分布在the的位置尽可能的大。