在语言模型中(包括word2vec),由于参数空间过大、数据过于稀疏,计算不方便,所以只考虑近邻n个词对其影响,以简化计算。即为N-gram模型,N为超参数。
word2vec的用途:如何把词转化为向量。
神经网络:
目标是层层之间的参数、还有优化后的输入向量。如何优化:求最大似然函数,即为目标函数最大值(词出现在该环境中的最大可能)。用提度上升求最大似然函数。
先更新的是层层参数(最大似然函数对参数求偏导),然后再更新输入向量(最大似然函数对投影层和向量求偏导,直接将和向量的更新量整个应用到每个单词词向量上去)。因为要最好的层层参数,所以原料要好,所以随便更新输入词向量(副产品),但是副产品我们刚好需要的。
输入层:上下文单词的onehot编码,先随机初始化矩阵W,one-hot和W相乘为输入向量,然后不断迭代优化。
映射层:把输入向量首位相加
隐藏层:
输出层:
CBOW:continuous-bag-of-words
需要定义loss function(一般为交叉熵代价函数),采用梯度下降算法更新W。训练完毕后,输入层的每个单词与矩阵W相乘得到的向量的就是我们想要的词向量(word embedding),也就是说,任何一个单词的onehot乘以这个矩阵都将得到自己的词向量。