بخش قبل به شما نشان داد که چگونه از فاکتورسازی ماتریس برای یادگیری جاسازی استفاده کنید. برخی از محدودیت های فاکتورسازی ماتریس عبارتند از:
- دشواری استفاده از ویژگی های جانبی (یعنی هر ویژگی فراتر از شناسه درخواست/شناسه مورد). در نتیجه، مدل را فقط می توان با یک کاربر یا آیتم موجود در مجموعه آموزشی پرس و جو کرد.
- ارتباط توصیه ها همانطور که در اولین Colab دیدید، اقلام محبوب معمولا برای همه توصیه می شود، به خصوص زمانی که از محصول نقطه به عنوان معیار تشابه استفاده می شود. بهتر است علایق کاربران خاص را به دست آورید.
مدلهای شبکه عصبی عمیق (DNN) میتوانند این محدودیتهای فاکتورسازی ماتریس را برطرف کنند. DNN ها به راحتی می توانند ویژگی های پرس و جو و ویژگی های آیتم را (به دلیل انعطاف پذیری لایه ورودی شبکه) ترکیب کنند، که می تواند به جذب علایق خاص کاربر و بهبود ارتباط توصیه ها کمک کند.
Softmax DNN برای توصیه
یکی از مدلهای احتمالی DNN softmax است که مشکل را به عنوان یک مسئله پیشبینی چند کلاسه در نظر میگیرد که در آن:
- ورودی کوئری کاربر است.
- خروجی یک بردار احتمال با اندازه برابر با تعداد آیتم های موجود در مجموعه است که نشان دهنده احتمال تعامل با هر آیتم است. به عنوان مثال، احتمال کلیک کردن یا تماشای یک ویدیوی YouTube.
ورودی
ورودی DNN می تواند شامل موارد زیر باشد:
- ویژگی های متراکم (به عنوان مثال، زمان تماشا و زمان از آخرین تماشا)
- ویژگیهای پراکنده (به عنوان مثال، تاریخچه تماشا و کشور)
برخلاف رویکرد فاکتورسازی ماتریسی، میتوانید ویژگیهای جانبی مانند سن یا کشور را اضافه کنید. بردار ورودی را با x نشان می دهیم.
معماری مدل
معماری مدل پیچیدگی و بیان مدل را تعیین می کند. با افزودن لایههای پنهان و توابع فعالسازی غیرخطی (مثلا ReLU)، مدل میتواند روابط پیچیدهتری را در دادهها ثبت کند. با این حال، افزایش تعداد پارامترها معمولاً آموزش مدل را سختتر و سرویس دهی را گرانتر میکند. خروجی آخرین لایه پنهان را با \(\psi (x) \in \mathbb R^d\)نشان خواهیم داد.
خروجی Softmax: توزیع احتمال پیش بینی شده
این مدل خروجی آخرین لایه، \(\psi (x)\)را از طریق یک لایه softmax به توزیع احتمال \(\hat p = h(\psi(x) V^T)\)، که در آن:
- \(h : \mathbb R^n \to \mathbb R^n\) تابع softmax است که توسط \(h(y)_i=\frac{e^{y_i}}{\sum_j e^{y_j}}\)ارائه شده است.
- \(V \in \mathbb R^{n \times d}\) ماتریس وزن لایه softmax است.
لایه softmax بردار امتیازهای \(y \in \mathbb R^n\)(گاهی اوقات logits نامیده می شود) را به یک توزیع احتمال ترسیم می کند.
عملکرد از دست دادن
در نهایت یک تابع ضرر تعریف کنید که موارد زیر را با هم مقایسه کند:
- \(\hat p\)، خروجی لایه softmax (یک توزیع احتمال)
- \(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\)می نامیم.
DNN و فاکتورسازی ماتریس
در هر دو مدل softmax و مدل فاکتورسازی ماتریسی، سیستم یک بردار جاسازی شده\(V_j\) را در هر مورد \(j\)یاد میگیرد. آنچه ما در فاکتورسازی ماتریس ماتریس جاسازی آیتم \(V \in \mathbb R^{n \times d}\) نامیدیم اکنون ماتریس وزن لایه softmax است.
با این حال، جاسازی های پرس و جو متفاوت است. به جای یادگیری یک جاسازی \(U_i\) در هر پرس و جو \(i\)، سیستم یک نقشه برداری از ویژگی پرس و جو \(x\) به جاسازی \(\psi(x) \in \mathbb R^d\)می آموزد. بنابراین، میتوانید این مدل DNN را بهعنوان تعمیم فاکتورسازی ماتریس در نظر بگیرید، که در آن سمت پرس و جو را با یک تابع غیرخطی \(\psi(\cdot)\)میکنید.
آیا می توانید از ویژگی های آیتم استفاده کنید؟
آیا می توانید همین ایده را در قسمت مورد استفاده کنید؟ یعنی به جای یادگیری یک جاسازی در هر آیتم، آیا مدل می تواند یک تابع غیرخطی را یاد بگیرد که ویژگی های آیتم را به یک جاسازی نگاشت می کند؟ آره. برای انجام این کار، از یک شبکه عصبی دو برج استفاده کنید که از دو شبکه عصبی تشکیل شده است:
- یک جستار نقشه شبکه عصبی دارای\(x_{\text{query}}\) تا 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\)تعریف کرد. توجه داشته باشید که این دیگر یک مدل softmax نیست. مدل جدید برای هر جفت \((x_{\text{query}}, x_{\text{item}})\)به جای بردار احتمال، یک مقدار را برای هر جفت l10n- \(x_{\text{query}}\)پیش بینی می کند.