b、Skip-Gram Model y 是 x 的上下文,所以 y 只取上下文里一个词语的时候,语言模型就变成: 用当前词 x 预测它的下一个词 y但如上面所说,一般的数学模型只接受数值型输入,这里的 x 该怎么 表示呢? 显然不能用 Word2vec,因为这是我们训练完模型的产物,现在我们想要的是 x 的一个原始输入形式。 答案是:one-hot encoder
b、Skip-Gram Model 下图Skip-gram 的网络结构了,x 就是上面提到的 one-hot encoder形式的输入,y 是在这 V (字典)个词上输出的概率,我们希望跟真实的 y 的 one-hot encoder 一样。
b、Skip-Gram Model 隐层的激活函数其实是线性的,相当于没做任何处理(这也是Word2vec 简化之前语言模型的独到之处),我们要训练这个神经网络,用反向传播算法,本质上是链式求导,在此不展开说明了,当模型训练完后,最后得到的其实是神经网络的权重,比如现在输入一个 x 的 one-hot encoder: [1,0,0,…,0],对应刚说的那个词语『吴彦祖』,则在输入层到隐含层的权重里,只有对应 1 这个位置的权重被激活,这些权重的个数,跟隐含层节点数是一致的,从而这些权重组成一个向量 vx 来表示x,而因为每个词语的 one-hot encoder 里面 1的位置是不同的,所以,这个向量 vx 就可以用来唯一表示 x。
b、Skip-Gram Model word2vec对这个模型做了改进,首先,对于从输入层到隐藏层的映射,没有采取神经网络的线性变换加激活函数的方法,而是采用简单的对所有输入词向量求和并取平均的方法。比如输入的是三个4维词向量:(1,2,3,4),(9,6,11,8),(5,10,7,12),那么我们word2vec映射后的词向量就是(5,6,7,8)。由于这里是从多个词向量变成了一个词向量。
|