Bagaimana vektor kata dilatih bersama dengan vektor paragraf di doc2vec DBOW?

Saya tidak mengerti bagaimana vektor kata terlibat sama sekali dalam proses pelatihan dengan doc2vec dalam mode DBOW (dm=0). Saya tahu ini dinonaktifkan secara default dengan dbow_words=0. Namun apa yang terjadi jika kita menyetel dbow_words ke 1?

Dalam pemahaman saya tentang DBOW, kata konteks diprediksi langsung dari vektor paragraf. Jadi satu-satunya parameter model adalah vektor paragraf berdimensi N p ditambah parameter pengklasifikasi.

Namun berbagai sumber mengisyaratkan bahwa dalam mode DBOW dimungkinkan untuk melatih bersama vektor kata dan dokumen. Contohnya:

Jadi, bagaimana cara melakukannya? Klarifikasi apa pun akan sangat kami hargai!

Catatan: untuk DM, vektor paragraf dirata-rata/digabungkan dengan vektor kata untuk memprediksi kata target. Dalam hal ini, jelas bahwa vektor kata dilatih secara bersamaan dengan vektor dokumen. Dan ada N*p + M*q + classifier parameter (di mana M adalah ukuran kosakata dan q ruang vektor kata redup).


person Antoine    schedule 09.04.2019    source sumber


Jawaban (1)


Jika Anda menyetel dbow_words=1, maka pelatihan vektor kata lewati gram ditambahkan ke loop pelatihan, disisipkan dengan pelatihan PV-DBOW normal.

Jadi, untuk kata target tertentu dalam sebuah teks, pertama-tama kandidat vektor dokumen digunakan (sendiri) untuk mencoba memprediksi kata tersebut, dengan penyesuaian propagasi mundur kemudian terjadi pada model & vektor dokumen. Kemudian, sekelompok kata di sekitarnya digunakan, satu per satu dengan cara skip-gram, untuk mencoba memprediksi kata target yang sama – dengan penyesuaian lanjutan yang dilakukan.

Kemudian, kata target berikutnya dalam teks mendapat PV-DBOW yang sama ditambah perlakuan skip-gram, dan seterusnya, dan seterusnya.

Adapun beberapa akibat logis dari hal ini:

  • pelatihan membutuhkan waktu lebih lama daripada PV-DBOW biasa - sekitar satu faktor yang sama dengan parameter window

  • vektor kata secara keseluruhan mendapatkan lebih banyak perhatian pelatihan total daripada vektor dokumen, sekali lagi dengan faktor yang sama dengan parameter window

person gojomo    schedule 09.04.2019
comment
terima kasih banyak atas jawaban yang cepat dan bermanfaat! (1) Saya memahami bahwa dalam pengaturan ini, vektor kata dan dokumen memang dilatih pada saat yang sama, tetapi keduanya tidak berinteraksi. Oleh karena itu, dalam hal kualitas mungkin tidak ada peningkatan vs. melatih vektor kata dan dokumen secara terpisah? (2) Saya menyimpulkan bahwa ketika dm=0 dan dbow_words=0, vektor kata masih dibuat tetapi tidak pernah digunakan/dilatih. Tahukah Anda cara menghilangkannya untuk mengurangi ukuran model pada disk dan RAM? - person Antoine; 10.04.2019
comment
menguraikan (1): Saya mungkin salah memahami sesuatu, tetapi bukankah penjelasan Anda bahwa vektor kata dan dokumen dilatih secara bersamaan tetapi tanpa interaksi bertentangan dengan hasil yang disajikan dalam kertas (bagian 5) bahwa vektor kata pra-pelatihan meningkatkan kualitas vektor dokumen dbow? Jika tidak ada kebocoran di antara kedua tugas tersebut, hal ini tidak akan mengubah apa pun, bukan? - person Antoine; 10.04.2019
comment
Tidak ada cara yang didukung untuk membuang vektor kata yang dialokasikan dan tidak terlatih dalam kasus dbow_words=0. Jika Anda sudah selesai dengan pelatihan dan inferensi (yang juga merupakan sejenis pelatihan), dan hanya perlu mengakses vektor dokumen yang telah dilatih, Anda mungkin dapat del properti d2v_model.wv terkait - tetapi itu mungkin mencegah operasi save()/load() lainnya berfungsi, saya tidak yakin. - person gojomo; 10.04.2019
comment
Dalam mode dbow_words=1, vektor kata dilatih dengan beberapa pasangan (kata_konteks-›kata_target), lalu vektor dokumen dilatih dengan pasangan (kata_kata_target)), lalu diulangi dengan cara disisipkan. Jadi tidak ada contoh pelatihan mikro individual yang melibatkan keduanya. Namun hal tersebut juga terjadi pada banyak kata, dalam pelatihan kata normal - namun kata-kata tersebut tetap berada pada posisi relatif yang berguna. Hal ini karena semua contoh pelatihan berbagi lapisan keluaran tersembunyi yang sama pada jaringan saraf. Jadi, contoh-contoh yang kontras masing-masing mengubah beberapa parameter bersama, dan secara tidak langsung saling mempengaruhi. - person gojomo; 10.04.2019
comment
Apakah menambahkan dbow_words membantu atau merugikan akan sangat spesifik untuk data, sasaran, dan parameter meta Anda. Apakah penyemaian model Doc2Vec dengan vektor kata terlatih akan membantu – sebuah opsi yang tidak memiliki dukungan resmi gensim – akan bergantung pada seberapa cocok kosakata terlatih tersebut dengan dokumen Anda, dan mode model. Dan dalam mode dbow_words=0, vektor kata yang dimuat sebelumnya tidak dapat mempunyai efek apa pun, langsung atau tidak langsung, pada vektor dokumen - sejauh yang disarankan oleh makalah, hal ini membingungkan. (Saya juga menyampaikan hal ini di: groups.google.com/d/ pesan/gensim/4-pd0iA_xW4/UzpuvBOPAwAJ ) - person gojomo; 10.04.2019
comment
Anda dapat menemukan lebih banyak kekhawatiran saya tentang klaim/pengujian/kesenjangan spesifik makalah tersebut dalam beberapa diskusi di masalah proyek github – mulai dari github.com/RaRe-Technologies/gensim/issues/ – dan di tautan grup diskusi lain dari terbitan tersebut. - person gojomo; 10.04.2019
comment
terima kasih banyak atas waktu Anda memberikan penjelasan mendetail dan tautan yang bermanfaat, sangat kami hargai. Memang benar, Anda benar tentang pengaruh tidak langsung. Saya tidak mempertimbangkan fakta bahwa matriks proyeksi-›output digunakan bersama oleh vektor kata dan doc. Terima kasih lagi! - person Antoine; 11.04.2019