मैट्रिक्स गुणांक

मैट्रिक्स फ़ैक्टर का इस्तेमाल करना, एक आसान एम्बेडिंग मॉडल है. फ़ीडबैक मैट्रिक्स 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) का इस्तेमाल कर सकते हैं. हालांकि, एसवीडी भी एक अच्छा तरीका नहीं है, क्योंकि असल ऐप्लिकेशन में, मैट्रिक्स \(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 की फ़्रीक्वेंसी का फ़ंक्शन है.

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

मकसद के फ़ंक्शन को कम करने के लिए सामान्य एल्गोरिदम में ये शामिल हैं:

  • Stochastic ग्रेडिएंट डिसेंट (एसजीडी) उपयोगकर्ता को नुकसान पहुंचाने वाले फ़ंक्शन को कम करने का तरीका है.

  • बारी-बारी से चुने गए सबसे कम स्क्वेयर (WALS) को इस खास मकसद के लिए बनाया गया है.

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

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

हर चरण को ठीक तरह से (एक लीनियर सिस्टम के ज़रिए) हल किया जा सकता है और उसे बांटा जा सकता है. इस तकनीक से कन्वर्ज़न मिलने की गारंटी है. ऐसा इसलिए है, क्योंकि इससे यह पक्का हो जाता है कि हर चरण में नुकसान कम हो सकता है.

SGD बनाम WALS

एसजीडी और डब्ल्यूएएलएस के फ़ायदे और नुकसान हैं. नीचे दी गई जानकारी की समीक्षा करके देखें कि वे तुलना कैसे करते हैं:

सिंगापुर डॉलर

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

पैरलल किया जा सकता है.

धीमी प्रक्रिया—ज़्यादा तेज़ नहीं होती.

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

वॉल

सिर्फ़ लॉस स्क्वेयर पर भरोसा करें.

पैरलल किया जा सकता है.

SGD की तुलना में तेज़ी से बदलता है.

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