gensim에서 word 및 doc 벡터를 학습하는 동안 log-probability를 출력하고 싶습니다. 나는 "slow plain numpy"버전에서 스코어 함수의 구현을 살펴 보았다.word2vec (gensim)의 score_cbow_pair
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)
스코어 기능은 계층 적 소프트 맥스 교육 중에 습득 한 매개 변수를 사용해야합니다. 그러나 로그 확률 계산시 시그 모이 드 함수 (word2vec Parameter Learning Explained equation (45))가 있어야합니다. 그래서 gensim은 실제로 로그 확률을 lprob
으로 계산하거나 비교를위한 점수 일뿐입니다.
: -log(1.0/(1.0+exp(-sgn*dot(l1, l2a.T))))
이 제로에 가까운 값을 폭발 때문에이 방정식을 사용하지 않거나 일반 잘못이다?