मैं नीचे दिए गए पेपर को पढ़ रहा हूं और मुझे कुछ परेशानी है, नकारात्मक नमूने की अवधारणा को समझना।
http://arxiv.org/pdf/1402.3722v1.pdf
किसी की मदद कर सकते हैं, कृपया?
मैं नीचे दिए गए पेपर को पढ़ रहा हूं और मुझे कुछ परेशानी है, नकारात्मक नमूने की अवधारणा को समझना।
http://arxiv.org/pdf/1402.3722v1.pdf
किसी की मदद कर सकते हैं, कृपया?
जवाबों:
के विचार word2vec
शब्द है जो एक साथ करीब दिखाई पाठ में (एक दूसरे के संदर्भ में) के लिए वैक्टर के बीच समानता (डॉट उत्पाद) को अधिकतम, और शब्द है कि नहीं की समानता को कम करना है। आपके द्वारा लिंक किए गए पेपर के समीकरण (3) में, एक पल के लिए प्रतिपादक की उपेक्षा करें। आपके पास
v_c * v_w
-------------------
sum(v_c1 * v_w)
अंश मूल रूप से शब्दों c
(संदर्भ) और w
(लक्ष्य) शब्द के बीच समानता है । हर अन्य सभी संदर्भों c1
और लक्ष्य शब्द की समानता को दर्शाता है w
। इस अनुपात को अधिकतम करने से उन शब्दों को सुनिश्चित किया जाता है जो पाठ में एक साथ दिखाई देते हैं, उन शब्दों की तुलना में अधिक समान वैक्टर होते हैं जो नहीं करते हैं। हालांकि, इसकी गणना बहुत धीमी हो सकती है, क्योंकि कई संदर्भ हैं c1
। नकारात्मक नमूनाकरण इस समस्या को दूर करने के तरीकों में से एक है- बस c1
यादृच्छिक पर कुछ संदर्भों का चयन करें । अंतिम परिणाम यह है कि यदि cat
के संदर्भ में प्रकट होता है food
, तो वेक्टर कई अन्य यादृच्छिक रूप से चुने गए शब्दों के वैक्टर की तुलना में food
वेक्टर के समान cat
(उनके डॉट उत्पाद द्वारा उपाय) के समान है।(उदाहरण के लिए democracy
, greed
, Freddy
), के बजाय भाषा में अन्य सभी शब्द । यह word2vec
बहुत तेजी से प्रशिक्षित करने के लिए बनाता है।
word2vec
किसी भी शब्द के साथ , आपके पास ऐसे शब्दों की एक सूची है, जो उसके (सकारात्मक वर्ग) के समान होने की आवश्यकता है, लेकिन नकारात्मक वर्ग (शब्द जो तारकोल शब्द के समान नहीं हैं) को नमूने द्वारा संकलित किया गया है।
सॉफ्टमैक्स की गणना करना (यह निर्धारित करने के लिए कि कौन से शब्द वर्तमान लक्ष्य शब्द के समान हैं) महंगा है क्योंकि वी (हर) में सभी शब्दों के लिए संक्षेप की आवश्यकता होती है , जो आमतौर पर बहुत बड़ा होता है।
क्या किया जा सकता है?
सॉफ्टमैक्स को अनुमानित करने के लिए विभिन्न रणनीतियों का प्रस्ताव किया गया है । इन दृष्टिकोणों को सॉफ्टमैक्स-आधारित और नमूना-आधारित दृष्टिकोणों में वर्गीकृत किया जा सकता है । सॉफ्टमैक्स-आधारित दृष्टिकोण ऐसे तरीके हैं जो सॉफ्टमैक्स परत को बरकरार रखते हैं, लेकिन इसकी कार्यक्षमता में सुधार करने के लिए इसकी वास्तुकला को संशोधित करते हैं (जैसे पदानुक्रमित सॉफ्टमैक्स)। दूसरी ओर नमूना-आधारित दृष्टिकोण पूरी तरह से सॉफ्टमैक्स परत के साथ दूर करते हैं और इसके बजाय सॉफ्टमैक्स का अनुमान लगाने वाले कुछ अन्य नुकसान फ़ंक्शन का अनुकूलन करते हैं (वे ऐसा सॉफ्टमैक्स के हर में सामान्यीकरण को अनुमानित करके कुछ अन्य नुकसान के साथ करते हैं जो गणना करने के लिए सस्ता है नकारात्मक नमूना)।
Word2vec में नुकसान फ़ंक्शन कुछ इस प्रकार है:
कौन सा लघुगणक में विघटित हो सकता है:
कुछ गणितीय और ढाल के फार्मूले के साथ ( 6 पर अधिक विवरण देखें )
जैसा कि आप देखते हैं कि यह द्विआधारी वर्गीकरण कार्य (y = 1 सकारात्मक वर्ग, y = 0 नकारात्मक वर्ग) में परिवर्तित हो गया है। हम लेबल की जरूरत है जैसा कि हमारे द्विआधारी वर्गीकरण कार्य करने के लिए, हम सभी संदर्भ शब्द को नामित ग सच लेबल (y = 1, सकारात्मक नमूना), और के रूप में k बेतरतीब ढंग से कॉर्पोरा से चयनित झूठे लेबल (y = 0, नकारात्मक नमूना) के रूप में।
निम्नलिखित पैराग्राफ को देखें। मान लें कि हमारा लक्षित शब्द " Word2vec " है। 3 की खिड़की के साथ, हमारे संदर्भ शब्द हैं: The
, widely
, popular
, algorithm
, was
, developed
। ये संदर्भ शब्द सकारात्मक लेबल के रूप में मानते हैं। हमें कुछ नकारात्मक लेबल भी चाहिए। हम बेतरतीब ढंग से कोष से कुछ शब्दों को लेने ( produce
, software
, Collobert
, margin-based
, probabilistic
) और उन्हें नकारात्मक नमूने के रूप में विचार करें। इस तकनीक को हमने कोरपस से कुछ बेतरतीब ढंग से उदाहरण के रूप में चुना है जिसे नकारात्मक नमूनाकरण कहा जाता है।
संदर्भ :
मैंने यहां नकारात्मक नमूने के बारे में एक ट्यूटोरियल लेख लिखा है ।
हम नकारात्मक नमूने का उपयोग क्यों करते हैं? -> कम्प्यूटेशनल लागत को कम करने के लिए
वेनिला स्किप-ग्राम (एसजी) और स्किप-ग्राम नकारात्मक नमूनाकरण (एसजीएनएस) के लिए लागत समारोह इस तरह दिखता है:
ध्यान दें कि T
सभी वोकैब की संख्या है। के बराबर है V
। दूसरे शब्दों में, T
= V
।
p(w_t+j|w_t)
SG में संभाव्यता वितरण की गणना V
कॉर्पस के सभी वोकैब के साथ की जाती है:
V
स्किप-ग्राम मॉडल के प्रशिक्षण के दौरान आसानी से हज़ार से अधिक हो सकते हैं। संभावना को गणना V
समय की आवश्यकता होती है , जिससे यह कम्प्यूटेशनल रूप से महंगा हो जाता है। इसके अलावा, हर में सामान्यीकरण कारक को अतिरिक्त V
गणना की आवश्यकता होती है।
दूसरी ओर, SGNS में संभाव्यता वितरण की गणना निम्न के साथ की जाती है:
c_pos
सकारात्मक शब्द के लिए एक शब्द वेक्टर है, और आउटपुट वजन मैट्रिक्स में W_neg
सभी K
नकारात्मक नमूनों के लिए शब्द वैक्टर है । SGNS के साथ, संभावना को केवल K + 1
समय की गणना करने की आवश्यकता होती है , जहां K
आम तौर पर 5 ~ 20 के बीच होता है। इसके अलावा, भाजक में सामान्यकरण कारक की गणना करने के लिए कोई अतिरिक्त पुनरावृत्तियों आवश्यक नहीं है।
SGNS के साथ, प्रत्येक प्रशिक्षण नमूने के लिए केवल वजन का एक अंश अपडेट किया जाता है, जबकि SG प्रत्येक प्रशिक्षण नमूने के लिए सभी लाखों वजन अपडेट करता है।
SGNS इसे कैसे प्राप्त करता है? -> बहु-वर्गीकरण कार्य को द्विआधारी वर्गीकरण कार्य में परिवर्तित करके।
SGNS के साथ, शब्द वैक्टर अब केंद्र शब्द के संदर्भ शब्दों की भविष्यवाणी करके नहीं सीखे जाते हैं। यह शोर वितरण से बेतरतीब ढंग से खींचे गए शब्दों (नकारात्मक) से वास्तविक संदर्भ शब्दों (सकारात्मक) को अलग करना सीखता है।
वास्तविक जीवन में, आप आमतौर पर regression
यादृच्छिक शब्दों के साथ निरीक्षण नहीं करते हैं Gangnam-Style
, या pimples
। विचार यह है कि यदि मॉडल संभावित (सकारात्मक) जोड़े बनाम असम्भव (नकारात्मक) जोड़े के बीच अंतर कर सकता है, तो अच्छे शब्द वैक्टर सीख जाएंगे।
उपरोक्त आकृति में, वर्तमान सकारात्मक शब्द-संदर्भ जोड़ी है ( drilling
, engineer
)। K=5
नकारात्मक नमूने रहे बेतरतीब ढंग से तैयार से शोर वितरण : minimized
, primary
, concerns
, led
, page
। जैसा कि मॉडल प्रशिक्षण के नमूनों के माध्यम से पुनरावृत्त होता है, वज़न को अनुकूलित किया जाता है ताकि सकारात्मक जोड़ी के लिए संभावना उत्पादन हो p(D=1|w,c_pos)≈1
, और नकारात्मक जोड़े के लिए संभावना उत्पादन हो p(D=1|w,c_neg)≈0
।
K
करते हैं V -1
, तो नकारात्मक नमूना वैनिला स्किप-ग्राम मॉडल के समान है। क्या मेरी समझ सही है?