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

मैट्रिक्स का फ़ैक्टराइज़ेशन, एम्बेड करने का एक आसान मॉडल है. यह देखते हुए फ़ीडबैक मैट्रिक्स A \(\in R^{m \times n}\), जिसमें \(m\) उपयोगकर्ताओं (या क्वेरी) की संख्या और \(n\) आइटम की संख्या है, मॉडल सीखता है:

  • एम्बेड करने वाला मैट्रिक्स \(U \in \mathbb R^{m \times d}\), जहां पंक्ति i उपयोगकर्ता i के लिए एम्बेडिंग है.
  • आइटम एम्बेड करने वाला मैट्रिक्स \(V \in \mathbb R^{n \times d}\), जहां पंक्ति j, आइटम j को एम्बेड कर रहा है.

बार-बार आने वाली मूवी के उदाहरण का इस्तेमाल करके, मैट्रिक्स गुणनखंडन का इलस्ट्रेशन.

एम्बेड करने की प्रोसेस इस तरह से सीखी जाती है कि प्रॉडक्ट \(U V^T\) फ़ीडबैक मैट्रिक्स A का अच्छा अनुमान. ध्यान दें कि \((i, j)\) की एंट्री \(U . V^T\) सिर्फ़ एक डॉट प्रॉडक्ट है \(\langle U_i, V_j\rangle\) उपयोगकर्ता के एम्बेड किए गए कॉन्टेंट \(i\) और आइटम \(j\), जिसके आप पास होना चाहते हैं \(A_{i, j}\).

मकसद का फ़ंक्शन चुनना

एक सहज मकसद फ़ंक्शन, स्क्वेयर दूरी है. ऐसा करने के लिए, मॉनिटर की गई एंट्री के सभी जोड़ों में स्क्वेयर गड़बड़ियों के योग को कम करें:

\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \sum_{(i, j) \in \text{obs}} (A_{ij} - \langle U_{i}, V_{j} \rangle)^2.\]

इस मकसद फ़ंक्शन में, मॉनिटर किए गए पेयर (i, j) का ही इस्तेमाल किया जाता है, यानी, फ़ीडबैक मैट्रिक्स में नॉन-ज़ीरो वैल्यू से ज़्यादा. हालांकि, सिर्फ़ संक्षेप में एक अच्छा आइडिया नहीं है—सभी के लिए ज़रूरी है कि कि कम से कम नुकसान हो और ऐसा मॉडल तैयार किया जाए जो असरदार सुझाव न दे और जो आम तौर पर खराब है.

तीन मैट्रिक्स का इलस्ट्रेशन: ऑब्ज़र्व किए गए सिर्फ़ मैट्रिक्स गुणनखंडन, वेटेड फ़ैक्टराइज़ेशन, और सिंगुलर वैल्यू डिकंपोज़िशन.

शायद आप ऑब्ज़र्व नहीं की गई वैल्यू को शून्य और कुल योग के तौर पर ट्रीट कर सकें आव्यूह में एंट्री. इसका मतलब है कि वर्ग फ़्रोबेनियस \(A\) और इसके अनुमान \(U V^T\)के बीच की दूरी:

\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \|A - U V^T\|_F^2.\]

आप इस द्विघात सवाल को इसके ज़रिए हल कर सकते हैं मैट्रिक्स का सिंग्युलर वैल्यू डिकंपोज़िशन (SVD). हालांकि, SVD भी एक अच्छा समाधान नहीं है, क्योंकि वास्तविक एप्लिकेशन में, मैट्रिक्स \(A\) बहुत कम हो सकता है. उदाहरण के लिए, उन सभी वीडियो के बारे में सोचें किसी खास उपयोगकर्ता ने जितने वीडियो देखे हैं, उनकी तुलना में YouTube पर. समाधान \(UV^T\) (जो मॉडल के अनुमान से मेल खाता है की वैल्यू शून्य के करीब होगी. इस वजह से, वैल्यू खराब हो जाएगी परफ़ॉर्मेंस को सामान्य के तौर पर देखें.

इसके उलट, वेटेड मैट्रिक्स फ़ैक्टराइज़ेशन, लक्ष्य को खत्म कर देता है तैयार कर सकते हैं:

  • ऑब्ज़र्व की गई एंट्री का योग.
  • ऑब्ज़र्व नहीं की गई एंट्री का योग (शून्य से दिखाया जाता है).

\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \sum_{(i, j) \in \text{obs}} (A_{ij} - \langle U_{i}, V_{j} \rangle)^2 + w_0 \sum_{(i, j) \not \in \text{obs}} (\langle U_i, V_j\rangle)^2.\]

यहां, \(w_0\) एक हाइपर पैरामीटर है, जो दोनों शब्दों को अहमियत देता है ऐसा करना इसलिए ज़रूरी है, ताकि मकसद पर सिर्फ़ एक या दूसरे लोगों का पूरा असर न हो. इस हाइपर पैरामीटर को ट्यून करना बहुत ज़रूरी है.

\[\sum_{(i, j) \in \text{obs}} w_{i, j} (A_{i, j} - \langle U_i, V_j \rangle)^2 + w_0 \sum_{i, j \not \in \text{obs}} \langle U_i, V_j \rangle^2\]

जहां \(w_{i, j}\) , क्वेरी i और आइटम j की फ़्रीक्वेंसी का फ़ंक्शन है.

मकसद फ़ंक्शन को कम करना

मकसद फ़ंक्शन को छोटा करने के लिए, आम तौर पर इस्तेमाल होने वाले एल्गोरिदम में ये शामिल हैं:

  • स्टोकैस्टिक ग्रेडिएंट ढलान (SGD) लॉस फ़ंक्शन को कम करने का एक सामान्य तरीका है.

  • वेटेड ऑल्टरनेटिंग लीस्ट स्क्वेयर (WALS) को इसके लिए खास तौर पर बनाया गया है का इस्तेमाल किया जा सकता है.

मकसद, U और V के दो मैट्रिक्स में क्वाड्रेटिक है. (ध्यान दें, हालांकि, यह समस्या संयुक्त रूप से नहीं है.) WALS, शुरुआत करके काम करता है रैंडम तरीके से एम्बेड करते हैं और फिर इनके बीच बारी-बारी से:

  • \(V\)की समस्या को ठीक करना \(U\) और समस्या हल करना.
  • \(U\)की समस्या को ठीक करना \(V\) और समस्या हल करना.

हर चरण को रेखीय प्रणाली के समाधान के ज़रिए, ठीक तरह से हल किया जा सकता है और डिस्ट्रिब्यूट किए जा सकते हैं. हर चरण के बाद, इस तकनीक के बेहतर होने की गारंटी मिलती है से नुकसान को कम करने की गारंटी है.

SGD बनाम WALS

SGD और WALS के फ़ायदे और नुकसान भी हैं. नीचे दी गई जानकारी की समीक्षा करके जानें कि वे किस तरह तुलना करते हैं:

SGD

बहुत सुविधाजनक—अन्य नुकसान का इस्तेमाल कर सकते हैं फ़ंक्शन का इस्तेमाल करना चाहिए.

साथ-साथ लोड किया जा सकता है.

धीमा—ज़्यादा तेज़ी से इकट्ठा नहीं होता.

बिना निगरानी वाली एंट्री को मैनेज करना मुश्किल है (ज़रूरी है) ताकि नेगेटिव सैंपलिंग या ग्रैविटी का इस्तेमाल किया जा सके).

WALS

सिर्फ़ Loss Squares पर भरोसा करते हैं.

साथ-साथ लोड किया जा सकता है.

SGD से ज़्यादा तेज़ी से कन्वर्ट होता है.

बिना निगरानी वाली एंट्री को आसानी से मैनेज करना.