डीप न्यूरल नेटवर्क मॉडल

पिछले सेक्शन में, मैट्रिक्स गुणनखंडन (मैट्रिक्स फ़ैक्टराइज़ेशन) का इस्तेमाल करने का तरीका बताया गया था, ताकि एम्बेड करना सीखें. मैट्रिक्स गुणनखंडन की कुछ सीमाओं में ये शामिल हैं:

  • साइड सुविधाओं का इस्तेमाल करने में कठिनाई (यानी, इनसे आगे की कोई भी सुविधा) क्वेरी आईडी/आइटम आईडी). इस वजह से, मॉडल से सिर्फ़ क्वेरी की जा सकती है ट्रेनिंग सेट में मौजूद कोई उपयोगकर्ता या आइटम.
  • सुझावों की प्रासंगिकता. जैसा कि आपने पहले Colab, लोकप्रिय आइटम का सुझाव सभी को दिया जाता है, खास तौर पर जब डॉट प्रॉडक्ट को समानता के माप के तौर पर शामिल करें. किसी खास चीज़ को कैप्चर करना बेहतर होता है उपयोगकर्ता रुचियां.

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

सुझाव के लिए सॉफ़्टमैक्स DNN

सॉफ़्टमैक्स एक हो सकता है. जो इस समस्या को मल्टीक्लास अनुमान की समस्या के तौर पर देखता है. इसमें:

  • इनपुट के तौर पर उपयोगकर्ता की क्वेरी डाली जाती है.
  • आउटपुट एक प्रॉबबिलिटी वेक्टर है, जिसका साइज़ कॉर्पस में मौजूद आइटम, इनसे इंटरैक्ट करने की संभावना का पता चलता है हर आइटम; उदाहरण के लिए, किसी वीडियो पर क्लिक करने या उसे देखने की YouTube वीडियो.

इनपुट

डीएनएन के इनपुट में ये चीज़ें शामिल हो सकती हैं:

  • ज़्यादा सुविधाएं (उदाहरण के लिए, पिछली बार देखने के बाद से अब तक, वीडियो देखने का कुल समय और कुल समय)
  • कम सुविधाएं (उदाहरण के लिए, देखने का इतिहास और देश)

मैट्रिक्स के फ़ैक्टराइज़ेशन के तरीके से अलग, इसमें दूसरी सुविधाएं जोड़ी जा सकती हैं, जैसे कि उम्र या देश. हम इनपुट वेक्टर को x से दिखाएंगे.

सॉफ़्टमैक्स डीप न्यूरल नेटवर्क में इनपुट लेयर को हाइलाइट करने वाली इमेज
पहली इमेज. इनपुट लेयर, x.

मॉडल का आर्किटेक्चर

मॉडल आर्किटेक्चर, मॉडल की जटिलता और एक्सप्रेसिविटी तय करता है. छिपी हुई लेयर और नॉन-लीनियर ऐक्टिवेशन फ़ंक्शन जोड़कर, जैसे कि ReLU, मॉडल, डेटा में ज़्यादा जटिल संबंधों को कैप्चर कर सकता है. हालांकि, पैरामीटर की संख्या बढ़ाना आम तौर पर मॉडल को ट्रेन और इनको दिखाना ज़्यादा खर्चीला है. हम आखिरी बार छिपाए गए आउटपुट का डेटा दिखाएंगे लेयर \(\psi (x) \in \mathbb R^d\).

सॉफ़्टमैक्स डीप न्यूरल नेटवर्क में छिपी हुई लेयर को हाइलाइट करने वाली इमेज
दूसरी इमेज. छिपी हुई लेयर का आउटपुट, \(\psi (x)\).

सॉफ़्टमैक्स आउटपुट: अनुमानित प्रॉबबिलिटी डिस्ट्रिब्यूशन

यह मॉडल,सॉफ़्टमैक्स के ज़रिए \(\psi (x)\), आखिरी लेयर के आउटपुट को मैप करता है प्रॉबबिलिटी डिस्ट्रिब्यूशन \(\hat p = h(\psi(x) V^T)\)में लेयर करें, जहां:

  • \(h : \mathbb R^n \to \mathbb R^n\) सॉफ़्टमैक्स फ़ंक्शन है, \(h(y)_i=\frac{e^{y_i}}{\sum_j e^{y_j}}\)ने दिया
  • \(V \in \mathbb R^{n \times d}\) , सॉफ़्टमैक्स लेयर.

सॉफ़्टमैक्स लेयर, स्कोर के वेक्टर को मैप करती है \(y \in \mathbb R^n\) (कभी-कभी इसे लॉजिट) प्रॉबबिलिटी डिस्ट्रिब्यूशन तक.

सॉफ़्टमैक्स डीप न्यूरल नेटवर्क में, अनुमानित प्रॉबबिलिटी डिस्ट्रिब्यूशन को दिखाने वाली इमेज
तीसरी इमेज. प्रॉबबिलिटी का अनुमानित डिस्ट्रिब्यूशन, \(\hat p = h(\psi(x) V^T)\).

लॉस फ़ंक्शन

आखिर में, इनकी तुलना करने वाला लॉस फ़ंक्शन तय करें:

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

उदाहरण के लिए, क्रॉस-एंट्रॉपी लॉस का इस्तेमाल किया जा सकता है, क्योंकि दो प्रॉबबिलिटी डिस्ट्रिब्यूशन.

सॉफ़्टमैक्स डीप न्यूरल नेटवर्क में लॉस फ़ंक्शन को दिखाने वाली इमेज
चौथी इमेज. लॉस फ़ंक्शन.

सॉफ़्टमैक्स एम्बेडिंग

आइटम की संभावना \(j\) इसके हिसाब से दी जाती है \(\hat p_j = \frac{\exp(\langle \psi(x), V_j\rangle)}{Z}\), जहां \(Z\) एक नॉर्मलाइज़ेशन कॉन्स्टेंट है जो \(j\)पर निर्भर नहीं करता.

दूसरे शब्दों में, \(\log(\hat p_j) = \langle \psi(x), V_j\rangle - log(Z)\), इसलिए, किसी आइटम के लॉग होने की प्रॉबबिलिटी \(j\) यह (योज्य स्थिरांक तक) होती है दो \(d\)-विमीय सदिशों का डॉट गुणनफल, जिसे समझा जा सकता है क्वेरी और आइटम एम्बेड करने के तौर पर इस्तेमाल करें:

  • \(\psi(x) \in \mathbb R^d\) पिछली छिपी हुई लेयर का आउटपुट है. हम इसे क्वेरी \(x\)की एम्बेडिंग कहते हैं.
  • \(V_j \in \mathbb R^d\) वज़न का वेक्टर है जो आखिरी छिपी हुई लेयर को आउटपुट j से जोड़ता है. हम इसे आइटम \(j\)का एम्बेड करना कहते हैं.
सॉफ़्टमैक्स डीप न्यूरल नेटवर्क में एम्बेडिंग को दिखाने वाली इमेज
पांचवीं इमेज. आइटम की एम्बेडिंग \(j\), \(V_j \in \mathbb R^d\)

डीएनएन और मैट्रिक्स गुणनखंड

सॉफ़्टमैक्स मॉडल और मैट्रिक्स फ़ैक्टराइज़ेशन मॉडल, दोनों में, सिस्टम एक एम्बेडिंग वेक्टर को सीख लेता है \(V_j\) हर आइटम के लिए \(j\). हमने क्या मैट्रिक्स में आइटम एम्बेड करने वाला मैट्रिक्स \(V \in \mathbb R^{n \times d}\) फ़ैक्टराइज़ेशन अब सॉफ़्टमैक्स लेयर के वेट का मैट्रिक्स है.

हालांकि, क्वेरी एम्बेड करने की प्रोसेस अलग-अलग होती है. सीखने के बजाय \(U_i\) हर क्वेरी \(i\)के हिसाब से एम्बेड करने पर, सिस्टम मैपिंग को सीखता है क्वेरी सुविधा से \(x\) एम्बेड करने की प्रक्रिया \(\psi(x) \in \mathbb R^d\)में जोड़ दिया जाता है. इसलिए, इस डीएनएन मॉडल को मैट्रिक्स के सामान्य ट्रैफ़िक के तौर पर देखा जा सकता है फ़ैक्टराइज़ेशन, जिसमें आप क्वेरी को एक नॉनलीनियर से बदल देते हैं फ़ंक्शन \(\psi(\cdot)\)है.

क्या आप आइटम की सुविधाओं का इस्तेमाल कर सकते हैं?

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

  • एक न्यूरल नेटवर्क मैप क्वेरी की सुविधाएं क्वेरी एम्बेड करने के लिए\(x_{\text{query}}\) \(\psi(x_{\text{query}}) \in \mathbb R^d\)
  • एक न्यूरल नेटवर्क मैप आइटम की सुविधाएं \(x_{\text{item}}\) आइटम एम्बेड करने के लिए \(\phi(x_{\text{item}}) \in \mathbb R^d\)

इस मॉडल के आउटपुट को \(\langle \psi(x_{\text{query}}), \phi(x_{\text{item}}) \rangle\). ध्यान दें कि यह अब सॉफ़्टमैक्स मॉडल नहीं है. नए मॉडल का अनुमान हर जोड़े के लिए एक वैल्यू \((x_{\text{query}}, x_{\text{item}})\) \(x_{\text{query}}\)के लिए प्रॉबबिलिटी वेक्टर के बजाय प्रॉबबिलिटी वेक्टर का इस्तेमाल करें.