सॉफ़्टमैक्स ट्रेनिंग

पिछले पेज पर बताया गया था कि किसी सुझाव सिस्टम के लिए, सॉफ़्टमैक्स लेयर को डीप न्यूरल नेटवर्क में कैसे शामिल किया जाए. यह पेज इस सिस्टम के ट्रेनिंग डेटा को बारीकी से देखता है.

ट्रेनिंग डेटा

सॉफ़्टमैक्स ट्रेनिंग डेटा में, क्वेरी से जुड़ी सुविधाएं \(x\) और उन आइटम का वेक्टर शामिल होता है जिनसे उपयोगकर्ता इंटरैक्ट करता है. इसे प्रॉबेबिलिटी डिस्ट्रिब्यूशन \(p\)के तौर पर दिखाया जाता है. इन्हें नीचे दिए गए डायग्राम में नीले रंग में मार्क किया गया है. मॉडल के वैरिएबल, अलग-अलग लेयर में महत्व हैं. नीचे दिए गए डायग्राम में इन पर नारंगी रंग का निशान लगाया गया है. इस मॉडल को आम तौर पर किसी भी तरह के ढलान वाले ग्रेड का इस्तेमाल करके ट्रेनिंग दी जाती है.

सॉफ़्टमैक्स न्यूरल नेटवर्क की ट्रेनिंग को हाइलाइट करने वाली इमेज

नकारात्मक सैंपलिंग

हानि फ़ंक्शन दो सं संभावना वाले वेक्टर की तुलना करता है \(p, \hat p(x) \in \mathbb R^n\) (मॉडल का ट्रूथ और आउटपुट मॉडल) के होने पर, हानि का ग्रेडिएंट की गणना करना एक ही क्वेरी ( \(x\)) के लिए शायद बहुत ज़्यादा हो सकता है, अगर ब्लॉक का आकार बहुत बड़ा है \(n\) .

आप सिर्फ़ पॉज़िटिव आइटम पर ग्रेडिएंट की गिनती करने के लिए, एक सिस्टम सेट अप कर सकते हैं (ग्राउंड ट्रूथ वेक्टर में चालू आइटम). हालांकि, अगर सिस्टम सिर्फ़ पॉज़िटिव जोड़ों पर ट्रेनिंग देता है, तो मॉडल को फ़ोल्ड करने में दिक्कत हो सकती है, जैसा कि नीचे बताया गया है.

फ़ोल्डिंग
एक हवाई जहाज़ की इमेज, जिस पर फ़ोल्ड करके फ़ोल्ड किए हुए हैं. इस क्वेरी में, स्क्वेयर के तीन अलग-अलग ग्रुप दिख रहे हैं, जबकि क्वेरी में गोले दिख रहे हैं. हर ग्रुप का रंग अलग होता है. साथ ही, क्वेरी सिर्फ़ उसी ग्रुप के आइटम से इंटरैक्ट करती हैं. नीचे दिए गए डायग्राम में, मान लें कि हर रंग की क्वेरी और आइटम की कैटगरी अलग-अलग है. हर क्वेरी को स्क्वेयर के तौर पर दिखाने का ज़्यादातर तरीका, सिर्फ़ एक ही रंग वाले आइटम के साथ इंटरैक्ट करना है. इसे सर्कल के तौर पर दिखाया जाता है. उदाहरण के लिए, YouTube पर हर कैटगरी को एक अलग भाषा मानें. आम तौर पर, एक सामान्य उपयोगकर्ता किसी खास भाषा के वीडियो से इंटरैक्ट करता है.

यह मॉडल, किसी रंग के लिए क्वेरी/आइटम को एक-दूसरे से जोड़ने का तरीका सीख सकता है (उस रंग में समानता को सही तरीके से कैप्चर कर सकता है). हालांकि, अलग-अलग रंगों से जोड़ने से, एम्बेड करने की जगह में एक ही जगह पर पहुंच सकते हैं. पेज के ऊपरी हिस्से के रूप में जानी जाने वाली इस घटना से नकली सुझाव मिल सकते हैं: क्वेरी के समय, मॉडल किसी दूसरे ग्रुप के आइटम के लिए गलत तरीके से ज़्यादा स्कोर का अनुमान लगा सकता है.

नेगेटिव उदाहरण, दी गई क्वेरी के लिए ऐसे आइटम होते हैं जिन्हें "कोटेशन, काम का नहीं", और लेबल किया गया है. ट्रेनिंग के दौरान, मॉडल के नेगेटिव उदाहरण दिखाने से मॉडल को यह जानकारी मिलती है कि अलग-अलग ग्रुप को जोड़ने के लिए, उन्हें एक-दूसरे से दूर ले जाना चाहिए.

ग्रेडिएंट का हिसाब लगाने के लिए सभी आइटम का इस्तेमाल करने के बजाय (जो बहुत महंगा हो सकता है) या सिर्फ़ पॉज़िटिव आइटम का इस्तेमाल करने के लिए (जो मॉडल को फ़ोल्ड करने की संभावना पैदा करते हैं), नेगेटिव सैंपलिंग का इस्तेमाल किया जा सकता है. ज़्यादा सटीक तरीके से, आप इन आइटम का इस्तेमाल करके, अनुमानित ग्रेडिएंट का हिसाब लगाते हैं:

  • सभी पॉज़िटिव आइटम (वे आइटम जो टारगेट लेबल में दिखते हैं)
  • नेगेटिव आइटम का एक नमूना (\(j\) में \({1, …, n}\))

नमूने के विश्लेषण के लिए कई रणनीतियां हैं:

  • एक जैसे सैंपल के तौर पर सैंपल लिया जा सकता है.
  • ज़्यादा स्कोर की संभावना वाले j आइटम को ज़्यादा संभावना \(\psi(x) . V_j\)दी जा सकती है. साफ़ तौर पर कहा जाए, तो ये ऐसे उदाहरण हैं जो ग्रेडिएंट का सबसे ज़्यादा इस्तेमाल करते हैं; इन उदाहरणों को अक्सर नेगेटिव कहा जाता है.

ऑनसाइट मैट्रिक्स बनाम बनाम सॉफ़्टमैक्स

डीएनएन मॉडल, मैट्रिक्स फ़ैक्टर से जुड़ी कई सीमाओं की समस्या हल करते हैं. हालांकि, आम तौर पर उनमें ट्रेनिंग और क्वेरी करना ज़्यादा महंगा होता है. नीचे दी गई टेबल में दोनों मॉडल के बीच के बीच कुछ अंतर बताए गए हैं.

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

आम तौर पर, क्वेरी को एम्बेड करते समय, क्वेरी को एम्बेड किया जाता है. इससे, मॉडल काम करने के लिए काफ़ी महंगा हो जाता है.

सारांश में:

  • आम तौर पर, बड़े कॉर्पस के लिए मैट्रिक्स फ़ैक्टरिंग एक बेहतर विकल्प है. इसे स्केल करना आसान है, क्वेरी करने में कम खर्च होता है, और फ़ोल्ड करने की संभावना कम होती है.
  • डीएनएन मॉडल, लोगों की पसंद के हिसाब से उनकी पसंद को बेहतर तरीके से कैप्चर कर सकते हैं. हालांकि, वे ट्रेनिंग के लिए मुश्किल होते हैं और क्वेरी करने में ज़्यादा डेटा खर्च करते हैं. DNN मॉडल, स्कोरिंग के लिए मैट्रिक्स फ़ैक्टर के लिए बेहतर हैं, क्योंकि DNN मॉडल, प्रासंगिकता को बेहतर ढंग से कैप्चर करने के लिए ज़्यादा सुविधाओं का इस्तेमाल कर सकते हैं. इसके अलावा, डीएनएन मॉडल को फ़ोल्ड करने के लिए भी आम तौर पर इस्तेमाल किया जा सकता है, क्योंकि आपके पास ज़्यादातर ऐसे फ़िल्टर का इस्तेमाल करने की इच्छा होती है जो पहले से फ़िल्टर किए गए उम्मीदवार के क्रम में हों.