环境:Win8.1 TensorFlow1.0.1
软件:Anaconda3 (集成Python3及开发环境)
TensorFlow安装:pip install tensorflow (CPU版) pip install tensorflow-gpu (GPU版)
参考文档:
1. TensorFlow 官方文档中文版——字词的向量表示
2. peghoty@CSDN——word2vec 中的数学原理详解(五)基于 Negative Sampling 的模型
3. multiangle@CSDN——tensorflow笔记:使用tf来实现word2vec
完整代码参考 multiangle,修改部分 API 可在 @DiamonJoy下载
1. Word2vec
本文将解析建立 TensorFlow 模型 word2vec 学习文字的向量表示即 词嵌套(word embedding)。
关于 word embedding 的基本介绍可查看参考文档1,学习目标总结为将离散符号组成的词汇嵌套于一个连续的向量空间,且语义近似的词汇被映射为相邻的数据点。同时,学习模型还依赖于分布式假设,其核心思想为出现于上下文情景中的词汇都有相类似的语义,因此预测方法则试图直接从某词汇的邻近词汇对其进行预测,在此过程中利用已经学习到的小型且稠密的嵌套向量。
Word2vec 是一种可以进行高效率词嵌套学习的预测模型。其两种变体分别为:连续词袋模型(CBOW)及Skip-Gram 模型。CBOW 根据源词上下文词汇('the cat sits on the')来预测目标词汇(例如,‘mat’),而 Skip-Gram 模型做法相反,它通过目标词汇来预测源词汇。相比之下,Skip-Gram 模型将每个“上下文-目标词汇”的组合视为一个新观察量,这种做法在大型数据集中会更为有效。本文基于 Skip-Gram 建立 TensorFlow 模型。
2. 噪声对比估计(NCE)
神经概率化语言模型通常使用极大似然法 (ML) 进行训练,其中通过 softmax function 来最大化当提供前一个单词 h (代表 "hi