2017-05-16 9 views
1

나는이 page을 읽었지만 다음 코드를 기반으로 만들어진 모델 간에는 어떤 차이가 있는지 이해하지 못합니다. dbow_words가 0 일 때 doc-vectors에 대한 학습이 빠릅니다.dbow_words가 1 또는 0으로 설정된 경우 doc2vec 모델간에 다른 점은 무엇입니까?

첫 번째 모델

model = doc2vec.Doc2Vec(documents1, size = 100, window = 300, min_count = 10, workers=4) 

두 번째 모델

model = doc2vec.Doc2Vec(documents1, size = 100, window = 300, min_count = 10, workers=4,dbow_words=1) 

답변

2

DBOW 모델 훈련 때 dbow_words 매개 변수는 효과가 있습니다 - 기본이 아닌 dm=0 매개 변수, 입니다.

코드의 두 예제 라인 사이에 기본 dm=1 값을 변경하지 않고 차이가 없습니다.

대신 DBOW 교육 dm=0으로 전환 한 다음 기본값이 dbow_words=0 인 경우 원래 'Paragraph Vectors'용지에 설명 된대로 모델이 순수한 PV-DBOW입니다. 닥 - 벡터는 텍스트 예제 단어를 예측하도록 훈련되지만, 워드 - 벡터가 훈련된다. (모델에는 무작위로 초기화 된 단어 벡터가 여전히 존재하지만 훈련 중에는 사용되거나 개선되지 않습니다.)이 모드는 빠르지 만 여전히 잘 작동합니다.

dbow_words=1 설정을 추가하면 스킵 그램 워드 벡터 학습이 인터리빙 된 방식으로 학습에 추가됩니다. (각 텍스트 예제에서 전체 텍스트에 대한 의사 - 벡터와 각 슬라이딩 컨텍스트 창에 대한 단어 벡터가 학습됩니다.) 이로 인해 window 매개 변수의 함수로 더 많은 학습 예제가 추가되기 때문에 상당히 느려집니다 . 예를 들어 window=5을 사용하면 단어 학습을 추가하면 학습 속도가 약 5 배 느려집니다.

이렇게하면 DBOW 의사 벡터와 단어 벡터를 같은 공간에 배치 할 수 있습니다. doc-vectors는 단어와의 친밀도에 의해 더 해석 가능합니다.

이 혼합 교육은 각 문서 창을 미니 문서로 변환하여 결과 문서 - 벡터 포함의 표현력을 개선하는 데 도움이되는 일종의 코퍼스 확장 기능을 제공 할 수 있습니다. (특히, 충분히 크고 다양한 문서 세트가있는 경우, 더 많은 패스로 pure-DBOW와 비교해 볼 가치가 있습니다.)

+0

@goiomo 당신은 다음과 같이 썼습니다 : '이것은 DBOW 문서 벡터와 단어 - 벡터를 "같은 공간"으로 doc2vec 모델을 구축하는 다른 방법에서 word2vec 벡터와 doc2vect 벡터가 같은 공간에 없다는 것을 의미합니까? – user3092781

+0

'dbow_words = 1 '이없는 PV-DBOW ('dm = 0')에서 단어 벡터는 훈련되지 않고 남은 무작위입니다. PV-DM ('dm = 1')에서는 doc-vectors와 word-vector가 함께 평균화되므로 비교 가능성을 위해 다시 같은 공간에있게됩니다. 고급/실험적'dm_concat = 1' 모드 ('dm = 1'에 추가됨 & 권장하지 않음)에서는 doc-vectors와 word-vector가 별도의 장소에서 예측 신경망에 입력되므로 비교할 수 없습니다. 다른 공간에서 왔습니다. – gojomo