score_cbow_pair in word2vec (gensim)
我想在gensim中学习单词和doc矢量时输出对数概率。我已经看过了" slow plain numpy"版本中score函数的实现。
1 2 3 4 5 | def score_cbow_pair(model, word, word2_indices, l1): l2a = model.syn1[word.point] # 2d matrix, codelen x layer1_size sgn = (-1.0)**word.code # ch function, 0-> 1, 1 -> -1 lprob = -log(1.0 + exp(-sgn*dot(l1, l2a.T))) return sum(lprob) |
得分函数应利用在等级softmax训练中学习的参数。但是在对数概率的计算中,应该假设有一个S形函数(word2vec参数学习解释方程(45))。
gensim真的会计算
我将计算出对数概率如下:
是否使用此方程式,因为它会爆炸接近零的值,或者通常是错误的吗?
我忽略了S型函数的对数可以重写:
因此,代码确实计算了对数似然。