一
Introduction
Word2Vec 是 Google 在 2013 年开源的一个词向量(Word Embedding)计算工具,其用来解决单词的分布编码问题,因其简单高效引起了工业界和学术界极大的关注。
我们先尝试着回答几个问题,以检测下自己对 Word2Vec 的理解。- Word2Vec 两个算法模型的原理是什么,网络结构怎么画?
- 网络输入输出是什么?隐藏层的激活函数是什么?输出层的激活函数是什么?
- 目标函数/损失函数是什么?
- Word2Vec 如何获取词向量?
- Word2Vec 的两个模型哪个效果好哪个速度快?为什么?
- 推导一下参数如何更新?
- Word2Vec 加速训练的方法有哪些?
- 介绍下 Hierarchical Softmax 的计算过程,怎么把 Huffman 放到网络中的?参数是如何更新的?对词频低的和词频高的单词有什么影响?为什么?
- 介绍下 Negative Sampling,对词频低的和词频高的单词有什么影响?为什么?
- Word2Vec 有哪些参数,有没有什么调参的建议?
- Word2Vec 有哪些局限性?
二
Word Embedding
在聊 Word2Vec 之前,我们先来了解一下词向量,我们都知道字符变量在送到神经网络训练之前需要将其编码成数值变量,常见的编码方式有两种:- One-Hot 编码:以字符变量的种类为向量长度,向量中仅一个元素为 1 其它均为 0,这种编码方式的缺点是数据稀疏,不适合作为神经网络的输入(参数更新慢,收敛速度慢,计算量大),且无法捕捉到词与词之间的关系(相互正交);
- 分布编码:将字符变量映射到固定长度的向量中,向量空间中的点可以表示某个字符变量,且字符间的距离有意义。理想状况下,两个对象越相似其在空间中的距离就越近。
2.1 Structure
Word2Vec 有两种网络结构:CBOW 和 Skip-Gram,其结构如下图所示:![1d2f1e351a0d00683a0386f2571eedd5.png](https://i-blog.csdnimg.cn/blog_migrate/09ce43c96011fdc5820e713128d8f1bd.jpeg)
![3bc2eae67f5ddd6d6f4f84781a3ab9ff.png](https://i-blog.csdnimg.cn/blog_migrate/eaf5b249436ccac22fbdba42902a48aa.jpeg)
![c34e5d90ab0c95bb2f79d1bed93ac4e1.png](https://i-blog.csdnimg.cn/blog_migrate/683133f2b4a6e2e35d8ed58a9dfda096.jpeg)