簡體   English   中英

如何使用 Genism 在 Word2vec model 中進行在線培訓

[英]How did online training work in the Word2vec model using Genism

使用 Genism 庫,我們可以加載 model 並在添加新句子時更新詞匯表。 這意味着如果您保存 model,您可以稍后繼續訓練。 我檢查了樣本數據,假設我的詞匯表中有一個之前訓練過的詞(即“女性”)。 在那之后,假設我有新句子並使用 model.build_vocab(new_sentence, update=True) 和 model.train(new_sentence),Z20F35E630DAF439D8C3F68F 現在,在我的 new_sentence 中,我有一些在前一個詞匯表中已經存在的單詞(“women”),還有一些在前一個詞匯表中不存在的新詞(“girl”)。 更新詞匯后,我的語料庫里既有新詞也有新詞。 我使用 model.wv['women'] 檢查,向量在更新和訓練新句子后更新。 另外,獲取一個新詞的詞嵌入向量,即 model.wv['girl']。 之前訓練過且不在 new_sentence 中的所有其他詞,這些詞向量沒有改變。

model = Word2Vec(old_sentences, vector_size=100,window=5, min_count=1) 
model.save("word2vec.model")
model = Word2Vec.load("word2vec.model") //load previously save model 
model.build_vocab(new_sentences,update=True,total_examples=model.corpus_count, epochs=model.epochs)   
model.train(new_sentences)

但是,只是不了解在線培訓如何運作的深入解釋。 請讓我知道是否有人知道詳細信息。 我得到了代碼,但想了解在線培訓在理論上是如何工作的。 是否從頭開始在新舊訓練數據上重新訓練 model?

這是我關注的鏈接:在線培訓

當您執行對.train()的新調用時,它僅對新數據進行訓練。 所以只有新數據中的單詞可能會被更新。

並且在新數據可能更小、單詞使用更特殊的情況下,新數據中的任何單詞都將被訓練為僅與新數據中正在訓練的其他單詞保持一致。 (根據新數據的大小,以及選擇的訓練參數(如alphaepochs ),它們可能會通過新示例任意拉離其舊位置 - 因此開始失去與之前訓練的單詞的可比性。)

(另請注意,當提供與原始語料不同的語料庫時,您不應使用類似total_examples=model.corpus_count的參數,重用model.corpus_count ,這是 model 中從早期數據中提取的值。相反,參數應該描述當前一批數據。)

坦率地說,我不喜歡這個功能。 它可能對高級用戶有用。 但是大多數被它吸引的人可能會誤用它,期望任何數量的微小增量更新來不斷擴展和改進 model - 當沒有對這種想法的良好支持時,這種想法會在幼稚的使用中可靠地發生。

事實上,有理由懷疑這種更新通常是一個好主意。 對於 neural-network 的增量更新破壞其先前性能的風險,甚至有一個既定術語:災難性遺忘

為新的擴展數據更新詞向量的直接且最有根據的方法是從頭開始重新訓練,因此所有詞都處於平等地位,並且 go 在相同的統一優化 (SGD) 計划上通過相同的交錯訓練。 (在這樣的過程結束時新的新向量將不在兼容的坐標空間中,但應該同樣有用,或者如果數據現在更大更好,則更好。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM