目录
用向量表示单词的方法大致可以分为两种:一种是基于计数的方法;另一种是基于推理的方法。本节主要讲基于推理的方法。
基于计数的方法使用整个语料库的统计数据(共现矩阵和PPMI等),通过一次处理(SVD等)获得单词的分布式表示。而基于推理的方法使用神经网络,通常在mini-batch数据上进行学习。这意味着神经网络一次只需要看一部分学习数据(mini-batch),并反复更新权值。这种学习机制上的差异如图:

基于推理的方法主要操作是“推理”,即当给出周围的单词(上下文)时,预测“?”处会出现什么单词。
从模型视角来看,推理任务如下图所示:

也就是基于推理的方法引入了某种模型,我们将神经网络作为这种模型。输入为:上下文,输出为:(可能出现的)各个单词的出现概率。
在这样的框架下,使用语料库来学习模型,使之能做出正确的预测。另外,作为模型学习的产物,我们得到了单词的分布式表示。
也就是将单词转化为固定长度的向量,常用的方法是:采用one-hot编码。例如:
1、假设语料库中含有7个单词,分别为:"you"、"say"、"goodbye"、"i"、"hello"、"."。要想将单词转化为one-hot表示,就需要准备元素个数与词汇个数相等的向量,将单词ID对应得元素设置为1,其余元素设置为0.

将单词得向量元素得个数确定下来之后,神经网络中输入层得神经元个数也确定下来了。

输入层的神经元个数就等于向量的元素个数。
2、以基于神经网络的全连接层变换为例

经过一个矩阵的变换之后,将7维的向量压缩为3维。比如:

word2vec中主要使用的两个神经网络:CBOW和skip-gram。本节以CBOW为例。
CBOW模型是根据上下文预测目标词的神经网络(“目标词”是指中间的单词,它周围的单词是“上下文”)。
(1)CBOW模型的网络结构

它有两个输入层(上下文仅考虑两个单词),经过中间层到达输出层。这里,从输入层到中间层的变换由相同的全连接层(权重为Win)完成,从中间层到输出层的变换由另一个全连接层(权重为Wout)完成。
(2)语料库
语料库:"you"、"say"、"goodbye"、"i"、"hello"、"."。
(3)转化为one-hot形式
以"you"、"goodbye"为例:
you:[1,0,0,0,0,0,0];"goodbye":[0,0,1,0,0,0,0]
(4)实现CBOW推理

现在利用CBOW模型可以实现输入上下文,推测目标词了,但是准不准还需要多CBOW模型进行训练。
对CBOW模型进行学习只是使用以下softmax函数和交叉熵损失。首先使用softmax函数将得分转化为概率,再求这些概率和监督标签之间的交叉熵误差,并将其作为损失进行学习,这一过程如下图所示:

word2vec中使用的网络有两个权重,分别是输入侧的全连接层的权重(Win)和1输出侧的全连接层的权重(Wout)。一般而言,输入侧的权重的每一行对应于各个单词的分布式表示,输出侧的权重在列方向上保存了各个单词的分布式表示。如下图所示:

就word2vec而言,选择输入侧的权重作为单词的分布式表示。