2017-05-16 3 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の値を変更しない2つのコード行の間には違いはありません。

代わりにDBOWトレーニングdm=0に変更してから、デフォルトのdbow_words=0設定を使用した場合、元の「Paragraph Vectors」紙に記載されているように、モデルは純粋なPV-DBOWになります。 Docベクトルは、テキスト例の単語を予測するように訓練されるが、単語ベクトルが訓練される。 (モデルにランダムに初期化された単語ベクトルがいくつかありますが、トレーニング中に使用されたり改善されたりしません。このモードは高速で、まだまだ効果があります。

dbow_words=1の設定を追加すると、スキップグラムワードベクトルトレーニングがインターリーブされた方法でトレーニングに追加されます。 (テキスト例ごとに、テキスト全体にわたる両方のドキュメントベクトル、次に各スライドコンテキストウィンドウ上のワードベクトルが訓練される)。これにより、windowパラメータの関数として、より多くの訓練例が追加されるので、大幅に遅くなる。 (例えば、window=5の場合、単語訓練を追加すると、約5倍遅くなります)

これは、DBOWのdocベクトルと単語ベクトルを同じスペースに配置する利点があります。 doc-vectorsは、単語との親近性によってより解釈可能です。

この混在したトレーニングは、各コンテキストウィンドウをミニドキュメントに変えて、結果として生じるドキュメント/ベクター埋め込みの表現力を向上させる一種のコーパス拡張の役割を果たします。 (特に、十分に大きく多様な文書セットがある場合は、純粋なDBOWと比べてパス数を増やす価値があるかもしれません)

+0

@goiomoあなたは次のように書いています: 'これはDBOWのdoc-vectorsと単語ベクトルを「同じ空間」に変換する。 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

関連する問題