فاکتورسازی ماتریسی

فاکتورسازی ماتریسی یک مدل جاسازی ساده است. با توجه به ماتریس بازخورد 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)، یعنی بیش از مقادیر غیر صفر در ماتریس بازخورد جمع می کنید. با این حال، تنها جمع کردن مقادیر یک ایده خوبی نیست - ماتریسی از همه آنها حداقل ضرر را خواهد داشت و مدلی را تولید می کند که نمی تواند توصیه های مؤثری ارائه دهد و تعمیم ضعیفی دارد.

تصویر سه ماتریس: فقط فاکتورسازی ماتریس مشاهده شده، فاکتورسازی وزنی، و تجزیه ارزش منفرد.

شاید بتوانید مقادیر مشاهده نشده را به عنوان صفر در نظر بگیرید و روی تمام ورودی های ماتریس جمع کنید. این مربوط به به حداقل رساندن فاصله Frobenius مجذور بین \(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 با مقداردهی اولیه جاسازی ها به طور تصادفی کار می کند، سپس بین:

  • رفع \(U\) و حل برای \(V\).
  • رفع \(V\) و حل برای \(U\).

هر مرحله می تواند دقیقاً حل شود (از طریق حل یک سیستم خطی) و می تواند توزیع شود. این تکنیک تضمین شده است که همگرا شود زیرا هر مرحله تضمین شده است که ضرر را کاهش دهد.

SGD در مقابل WALS

SGD و WALS مزایا و معایبی دارند. اطلاعات زیر را مرور کنید تا نحوه مقایسه آنها را ببینید:

SGD

بسیار منعطف - می توان از سایر عملکردهای ضرر استفاده کرد.

قابل موازی سازی است.

آهسته تر - به سرعت همگرا نمی شود.

رسیدگی به ورودی های مشاهده نشده سخت تر است (نیاز به استفاده از نمونه گیری منفی یا جاذبه).

والز

فقط به Loss Squares تکیه کنید.

قابل موازی سازی است.

سریعتر از SGD همگرا می شود.

رسیدگی به ورودی های مشاهده نشده آسان تر است.