क्या हम word2vec मॉडल का प्रशिक्षण लेते समय स्थानांतरण सीखने का उपयोग करने का लाभ उठा सकते हैं?


13

मैं पहले से प्रशिक्षित मॉडल जैसे कि Google समाचार डेटा आदि का एक पूर्व-प्रशिक्षित वज़न खोजने के लिए देख रहा हूं। मैंने अपने लिए पर्याप्त मात्रा (10 जीबी आदि) के साथ एक नए मॉडल को प्रशिक्षित करना मुश्किल पाया। इसलिए, मैं ट्रांसफर लर्निंग से लाभ उठाना चाहता हूं, जिसमें मैं अपने डोमेन विशिष्ट शब्दों पर पूर्व-प्रशिक्षित लेयर वेट प्राप्त करने और उन वेट को फिर से प्राप्त करने में सक्षम हूं। तो, निश्चित रूप से प्रशिक्षण में अपेक्षाकृत कम समय लगेगा। किसी भी तरह की मदद की बहुत सराहना की जाएगी। अग्रिम में धन्यवाद :)

जवाबों:


10

हां, आप पूर्व-प्रशिक्षित मॉडल का लाभ उठा सकते हैं। सबसे प्रसिद्ध GoogleNewsData प्रशिक्षित मॉडल है जिसे आप यहां पा सकते हैं।

पूर्व-प्रशिक्षित शब्द और वाक्यांश वैक्टर https://drive.google.com/file/d/0B7XkCwpI5KDYNlNUTTlSS21pQmM/edit?usp=sharing

फिर आप नीचे दिखाए गए अनुसार जेनसिम का उपयोग करके अपने मॉडल में द्विआधारी प्रारूप में वैक्टर को लोड कर सकते हैं।

>>> model = Word2Vec.load_word2vec_format('/tmp/vectors.txt', binary=False)  # C text format
>>> model = Word2Vec.load_word2vec_format('/tmp/vectors.bin', binary=True)  # C binary format

यहाँ अंग्रेज़ी विकिपीडिया के लिए एक अलग पूर्व निर्मित मॉडल है:

https://github.com/idio/wiki2vec/raw/master/torrents/enwiki-gensim-word2vec-1000-nostem-10cbow.torrent

स्रोत: https://github.com/idio/wiki2vec/

एक पूर्वनिर्मित मॉडल का उपयोग करना

Get python 2.7
Install gensim: pip install gensim
uncompress downloaded model: tar -xvf model.tar.gz
Load model in gensim:
from gensim.models import Word2Vec
model = Word2Vec.load("path/to/word2vec/en.model")
model.similarity('woman', 'man')

आप स्टैनफोर्ड एनएलपी दस्ताने का भी उपयोग कर सकते हैं

यहां पूर्व-प्रशिक्षित शब्द 2vec मॉडल का एक बड़ा संकलन है।

कुछ अतिरिक्त पूर्व प्रशिक्षित मॉडल:

यहाँ gensim और कोड पर अधिक: https://radimrehurek.com/gensim/models/word2vec.html

इसी तरह के सवालों के साथ Quora फोरम


2
ठीक है, यह सूचना के अच्छे काम का एक बड़ा टुकड़ा है। लेकिन, क्या मैं एक नए मॉडल को इनिशियलाइज़ करने के लिए प्री-प्रशिक्षित मॉडल लेयर वेट का उपयोग कर सकता हूं और फिर उस मॉडल को अपने वाक्यों के साथ धुन सकता हूं?
नॉमिलुक्स

@ नोमी हां। [Gensim प्रलेखन] ( radimrehurek.com/gensim/models/word2vec.html ) से, एक बार जब आप मॉडल को लोड करते हैं,model = Word2Vec.load(fname) # you can continue training with the loaded model!
गुरु

1
उल्लेखों के ऊपर दस्तावेज़ीकरण लिंक: "नोट: सी प्रारूप से लोड किए गए वैक्टरों को प्रशिक्षित करना जारी रखना असंभव है क्योंकि छिपे हुए भार, शब्दावली आवृत्ति और बाइनरी ट्री गायब है।"
ट्रेलब्लेज़र

3

एक बड़े कॉर्पस पर प्रशिक्षण के आधार पर वितरित प्रतिनिधित्व (दस्ताने) सीधे स्टैनफोर्ड एनएलपी समूह से उपलब्ध हैं। आप सीधे अपने आवेदन में उन शब्द एम्बेडिंग का उपयोग कर सकते हैं (1 गर्म एन्कोडेड वैक्टर का उपयोग करने के बजाय और फिर नेटवर्क को एम्बेडिंग प्राप्त करने के लिए प्रशिक्षण दें)। यदि आपका कार्य बहुत विशिष्ट नहीं है, तो एम्बेडिंग के इस सेट के साथ शुरू करना अभ्यास में अच्छी तरह से काम करेगा।

यह आपको अतिरिक्त संख्या के मापदंडों को प्रशिक्षित करने से बचाएगाm×V जहाँ शब्दावली का आकार है और उस एम्बेडिंग स्पेस का आयाम है जिसे आप प्रोजेक्ट करना चाहते हैं।mVm


लेकिन, मैं अपने नए word2vec मॉडल को पहले से प्रशिक्षित मॉडल भार के साथ आरंभ करना चाहता हूं। क्या नए मॉडल को इनिशियलाइज़ करने के लिए पहले से प्रशिक्षित मॉडल लेयर वेट का उपयोग करना संभव है। आरंभीकरण के बाद मैं उस मॉडल को नए वाक्यों के साथ प्रशिक्षित करना चाहता हूं। क्या यह संभव है?
नॉमिलुक्स

हाँ तुम कर सकते हो। हालांकि मुझे नहीं लगता कि वजन मैट्रिक्स सार्वजनिक रूप से उपलब्ध है
वैबबिट

हाँ, ठीक है ...? यदि हम स्वयं एक मॉडल को प्रशिक्षित करते हैं और Gensim पुस्तकालय का उपयोग करके प्रशिक्षित मॉडल भार तक पहुँचने का प्रयास करते हैं। क्या यह संभव है
नोमिलुक्स

Gensim के बारे में निश्चित नहीं है, लेकिन क्योंकि यह सबसे अधिक सॉफ्टवेयर को अनुकूलित करने के लिए एक पैरामीटर है जो इसे अनुमति देना चाहिए
wabbit

@HrishikeshGanu क्या यह लिंक अभी भी काम कर रहा है? github.com/idio/wiki2vec/raw/master/torrents/… स्रोत: github.com/idio/wiki2vec
अनीश

1

इस पत्र [PDF] पर एक नज़र डालें । मुख्य ध्यान एनईआर कार्य के बारे में है, लेकिन विचार समान है - पूर्व-प्रशिक्षित शब्द 2 वीवीसी वैक्टर लें और उन्हें एक विशिष्ट एप्लिकेशन के लिए अनुकूलित करें।

एनएलपी के लिए कई सामान्य तंत्रिका नेटवर्क आधारित अनुप्रयोग अक्सर पूर्व प्रशिक्षित वैक्टर के साथ शुरू होते हैं। उदाहरण के लिए एक बहुत हालिया पेपर [PDF] (NER और POS टैगिंग कार्य) बस यही करता है।


-1
from gensim.models import Word2Vec 
# Word2Vec is full model which is trainable but takes larger memory

from gensim.models import KeyedVectors  
# KeyedVectors is reduced vector model which is NOT trainable but takes less memory

model = KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True) #load pretrained google w2v 

sen1 = 'w1 w2 w3'    
sen2 = 'word1 word2 word3'    
sentences = [[word for word in sen1.split()],[word for word in sen2.split()]]    
total_examples = model_2.corpus_count    

model_2 = Word2Vec(size=300, min_count=1) #initiate a full model    
model_2.build_vocab(sentences) #add words in training dataset

#load words from pretrained google dataset    
model_2.build_vocab([list(model.vocab.keys())], update=True)    
model_2.intersect_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True, lockf=1.0)

#retrain pretrained w2v from new dataset    
model_2.train(sentences, total_examples=total_examples, epochs=model_2.iter)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.