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

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

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

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

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

डीएनएन का एक संभावित मॉडल सॉफ़्टमैक्स होता है. यह समस्या को मल्टी-क्लास अनुमान लगाने की समस्या मानता है, जिसमें:

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

इनपुट

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

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

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

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

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

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

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

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

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

  • \(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}}\).