word2vec原理(一) CBOW与Skip-Gram模型基础
word2vec作为神经概率语言模型的输入,其本身其实是神经概率模型的副产品,是为了通过神经网络学习某个语言模型而产生的中间结果。具体来说,“某个语言模型”指的是“CBOW”和“Skip-gram”。具体学习过程会用到两个降低复杂度的近似方法——Hierarchical Softmax或Negative Sampling。两个模型乘以两种方法,一共有四种实现。 一、CBOW 1.一个单词上下文 2.参数更新 23多个单词上下文 二、Skip-gram 1.网络结构 2.参数更新 三、优化 原始的CBOW模型和Skip-Gram 模型的计算量太大,非常难以计算。 模型在计算网络输出的时候,需要计算误差 。对于CBOW 模型,需要计算$V$个误差(词汇表的大小),对于 Skip-Gram 模型,需要计算$CV$个误差。 另外,每个误差的计算需要用到 softmax 函数,该 softmax 函数涉及到O(V)复杂度的运算:$\sum _{j=1} ^ V exp(u_j)$ 。 每次梯度更新都需要计算网络输出。 如果词汇表有 100万 单词,模型迭代 100 次,则计算量超过 1 亿次。 虽然输入向量的维度也很高,但是由于输入向量只有一位为 1,其它位均为 0,因此输入的总体计算复杂度较小。 word2vec 优化的主要思想是: 限制输出单元的数量。 事实上在上百万的输出单元中