对词汇的表示,常见的有One-hot represention
和 Distributed Representation
两种形式。
One-hot represention 将词汇用二进制向量表示,这个向量表示的词汇,仅仅在词汇表中的索引位置处为1,其他地方都为0。例子如下图所示:
这样的方式表示词汇虽然简单,但是也有如下缺点:
Distributed Representation 也可以理解为Word Embedding,具体形式为:
注意到,使用Word Embedding得到的向量维度远小于词汇表的个数。如果将上面的向量在空间中表示,可以得到:
上图告诉我们,通过词向量之间的距离可以度量他们之间的关系,意思相近的词在空间中的距离比较近。出现这种现象的原因是最后得到的词向量在训练过程中学习到了词的上下文。
那么,Distributed Representation 要如何得到?
word2vec是google在2013年推出的一个NLP工具,它的特点是将所有的词向量化,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系。在正式讲解 word2vec 前,还需要对一些基本概念有所了解。
CBOW模型(Continuous Bag-of-Words Model)和Skip-gram模型(Continuous Skip-gram Model)。如下图所示:
由图可见,两个模型都包含三层:输入层、投影层和输出层。区别在于:
CBOW 模型是 在已知上下文
w
t
−
2
,
w
t
−
1
,
w
t
+
1
w
t
+
2
w_{t-2}, w_{t-1}, w_{t+1} w_{t+2}
wt−2,wt−1,wt+1wt+2的前提下预测当前词
w
t
w_t
wt 。后面我们用
c
o
n
t
e
x
t
(
w
)
context(w)
context(w)来表示词
w
w
w的上下文中的词,通常,我们取词
w
w
w前后
2
2
2c个单词来组成
c
o
n
t
e
x
t
(
w
)
context(w)
context(w)。下图给出了CBOW模型的网络结构:
它包括三层:输入层、投影层、输出层。
神经网络语言模型(NNLM)中大部分计算集中在隐藏层和输出层之间的矩阵向量运算,以及输出层上的softmax归一化运算,CBOW模型对此进行了改进。与传统的神经网络语言模型相比:
Skip-gram 模型的结构也是三层,下面以样本
(
w
,
c
o
n
t
e
x
t
(
w
)
(w,context(w)
(w,context(w)为例说明。如下图所示:
它也包括三层:输入层、投影层、输出层。
对于Skip-gram模型,已知的是当前词
w
w
w,需要对其上下文
c
o
n
t
e
x
t
(
w
)
context(w)
context(w)中的词进行预测,所以:
类似于CBOW,所以:
其中:
所以我们的优化目标是:
采用随机梯度上升法将这个函数最大化。