أنظمة التوصية2009متوسط11 دقيقة قراءة
BPR: ترتيب مخصَّص بأسلوب بايزي انطلاقاً من التغذية الراجعة الضمنية
BPR: Bayesian Personalized Ranking from Implicit Feedback
Rendle, S. · Freudenthaler, C. · Gantner, Z. · Schmidt-Thieme, L. — UAI
المشكلة
في الواقع العملي، أغلب أنظمة التوصية لا تحصل على تقييمات صريحة بالنجوم، بل تتعامل مع إشارات ضمنية: نقرات، مشتريات، سجل مشاهدات. المشكلة أن الطرق المعتادة — — تتعامل مع التوصية وكأنها مسألة انحدار: توقَّع درجةً لكل عنصر ثم رتّب العناصر. هذه الطرق تحسّن دقة الدرجات (أي تقليل مربع الخطأ)، لكنها لا تحسّن الترتيب نفسه. والأسوأ أن كل عنصر لم يتفاعل معه المستخدم يُحشر في خانة «سلبي» أو «صفري»، مع أن المستخدم ربما لم يصادفه أصلاً. النتيجة أن ينشغل بالتنبؤ بدرجات دقيقة، بينما ما يهمنا فعلاً هو ترتيب العناصر بالنسبة لبعضها.
الإسهام
يطرح BPR إطاراً رياضياً متيناً للترتيب المخصَّص يقوم على المقارنة الزوجية. الفكرة أنه بدلاً من توقّع درجة مطلقة لكل عنصر، نسأل سؤالاً أبسط: «هل يفضّل المستخدم u العنصر i على العنصر j؟». معيار التحسين BPR-OPT مشتقّ من تحليل بايزي يعظّم الاحتمال اللاحق. أما خوارزمية التعلّم LearnBPR فتعتمد مع سحب عشوائي للثلاثيات (u, i, j). ويُثبت البحث أن BPR-OPT يكافئ تحسين AUC مباشرةً. الإطار لا يرتبط بنموذج بعينه — طبّقه المؤلفون على تحليل المصفوفات وعلى أقرب k جار التكيّفي، وتفوّقوا على طرق المعتادة في كليهما.
الأثر
تحوّل BPR إلى دالة الخسارة الزوجية المرجعية في أنظمة التوصية القائمة على ، وصار من أكثر الأوراق البحثية استشهاداً في هذا المجال. أثّر أسلوبه في التدريب مباشرةً على الترشيح التعاوني العصبي (NCF) وشبكة الاهتمام العميق (DIN) وعلى أغلب أنظمة التوصية الحديثة التي تعتمد تعلّم الترتيب. رسالته الجوهرية واضحة: حسِّن ما يهمك فعلاً — الترتيب — بدلاً من الانحدار. هذه الفكرة أعادت تشكيل طريقة تفكير مجتمع البحث في التوصيات.
تخيّل أنك نادل في مطعم لا يجمع تقييمات. لا تستطيع أن تسأل الزبائن «كيف كان الطبق؟» — كل ما تملكه هو ملاحظة ماذا طلبوا. زبون طلب المعكرونة وتجاوز السلطة؟ غالباً يفضّل المعكرونة، لكن تجاوزه للسلطة لا يعني أنه يكرهها — ربما لم تلفت نظره في القائمة أصلاً.
التقليدية تتعامل مع كل طبق لم يُطلب على أنه «مكروه». BPR أذكى: يكتفي بالقول «هذا الزبون اختار المعكرونة بدلاً من السلطة»، ثم يتدرّب على ملايين المقارنات الزوجية من هذا النوع. مع الوقت، يتعلّم النظام ترتيب القائمة بأكملها لكل زبون على حدة — دون أن يحتاج لسؤال أحد عن تقييم بالنجوم.
المشكلة: نعرف ماذا فعل المستخدم، لكن لا نعرف لماذا
حين يمنحك المستخدم تقييماً صريحاً بالنجوم — كما في Netflix — فالأمر مباشر: صُغ المسألة على أنها ، توقَّع التقييم، ثم رتّب العناصر حسب الدرجة المتوقعة.
لكن في الواقع، أغلب الأنظمة لا تملك رفاهية التقييمات الصريحة. ما تملكه هو تغذية راجعة ضمنية: نقرات، مشتريات، مشاهدات صفحات، عدد مرات التشغيل. وهنا يظهر عدم تناظر جوهري:
- تفاعل ملاحَظ (المستخدم نقر على العنصر) ← غالباً إيجابي، لكن كم هو إيجابي؟ لا نعرف.
- غياب تفاعل (المستخدم لم ينقر) ← مجهول تماماً. ربما لم يعجبه، أو ربما لم يره أصلاً.
طرق مثل تحليل المصفوفات المنتظم الموزون (WR-MF) تتعامل مع هذا الغموض بمعاملة كل عنصر لم يُلاحَظ على أنه سلبي بثقة منخفضة. لكن هذا الأسلوب النقطي يظل يحسّن دقة التنبؤ بالدرجات — وهو الهدف الخاطئ حين يكون ما نريده فعلاً هو الترتيب.
الفكرة المحورية: قارِن بدلاً من أن تتنبأ
جوهر BPR هو تغيير السؤال الذي نطرحه. بدلاً من أن نسأل «كم سيعطي المستخدم العنصرَ ؟»، نسأل سؤالاً أبسط وأصدق: «هل يفضّل العنصرَ على ؟»
من التغذية الراجعة الضمنية يمكننا استخلاص تفضيلات زوجية. لكل مستخدم :
- إذا تفاعل مع العنصر ولم يتفاعل مع ، نفترض أنه يفضّل ، أي .
- إذا تفاعل مع كليهما أو لم يتفاعل مع أيٍّ منهما، لا نفترض شيئاً — ليس لدينا ما يكفي لتحديد أيّهما أفضل.
هذا الأسلوب أكثر أمانةً من النهج النقطي: لا ندّعي أن المستخدم يكره عنصراً ربما لم يصادفه أصلاً، بل نكتفي بالقول إنه أبدى تفضيلاً لما تفاعل معه بالمقارنة مع ما لم يتفاعل معه.
BPR-OPT: معيار بايزي للترتيب
يصوغ BPR مسألة الترتيب من منظور بايزي. الهدف هو إيجاد النموذج التي تعظّم بعد مشاهدة التفضيلات الزوجية:
الطرف الأول — — يعبّر عن مدى توافق النموذج مع تفضيلات المستخدم الملاحَظة. أما الطرف الثاني — — فيلعب دور الذي يحمي من . بافتراض استقلالية المستخدمين واستقلالية أزواج العناصر لكل مستخدم، تتفكك المعقولية إلى حاصل ضرب على جميع ثلاثيات التدريب .
لكل ثلاثية، نحتاج لنمذجة احتمال أن يفضّل على . هنا يأتي دور دالة اللوجستية:
حيث هو الفرق بين الدرجتين المتوقعتين. بأخذ سالب اللوغاريتم للاحتمال اللاحق وتطبيق توزيع مسبق غاوسي على ، نصل إلى معيار BPR-OPT.
تخيّل دالة السيغمويد هنا كـحَكَم يحوّل الفارق بين الدرجتين إلى مستوى ثقة. إذا كان كبيراً وموجباً — أي أن النموذج واثق أن يتقدّم على — فالسيغمويد تعطي قيمة قريبة من 1، واللوغاريتم يكاد يكون صفراً: ضئيلة. أما إذا كان الفارق صغيراً أو سالباً — أي أن النموذج مرتبك أو أخطأ في الترتيب — فالسيغمويد تنخفض وتتصاعد العقوبة بحدّة. بعبارة أخرى، النموذج يُعاقَب أشدّ العقاب على الانتهاكات: الحالات التي يضع فيها العنصر الذي لم يتفاعل معه المستخدم في مرتبة أعلى من العنصر الذي تفاعل معه.
لماذا BPR-OPT مكافئ لمساحة تحت المنحنى (AUC)
تُثبت الورقة علاقة أنيقة: معيار BPR-OPT يكافئ تقريباً قابلاً للاشتقاق من (AUC) لكل مستخدم. ما تقيسه AUC ببساطة هو: إذا اخترنا عشوائياً عنصراً تفاعل معه المستخدم وآخر لم يتفاعل معه، ما احتمال أن النموذج يرتّب الأول أعلى؟ وهذا بالضبط ما تقوم عليه المقارنة الزوجية في BPR.
الفرق التقني أن AUC الخام تستخدم دالة دليلية (1 إذا كان الترتيب صحيحاً، و0 خلاف ذلك)، وهذه الدالة غير قابلة للاشتقاق فلا يمكن حساب لها. BPR يحلّ المشكلة باستبدالها بدالة السيغمويد الناعمة ، مما يتيح استخدام التحسين القائم على التدرّج مع استهداف مقياس الترتيب مباشرةً.
LearnBPR: السحب العشوائي هو الحل
السؤال الآن: كيف نحسّن BPR-OPT عملياً؟ الطريقة البديهية هي المرور على الثلاثيات بالترتيب، لكن هذا يسبّب مشكلة حقيقية: حين تمرّ على ثلاثيات المستخدم نفسه بالتتابع، تحصل على تدرّجات مترابطة بشدة، وهذا يبطئ بشكل ملحوظ.
حل LearnBPR هو : في كل خطوة، اسحب ثلاثية عشوائياً — اختر مستخدماً عشوائياً، ثم عنصراً تفاعل معه، ثم عنصراً لم يتفاعل معه. احسب التدرّج لتلك الثلاثية، حدِّث المعاملات، ثم كرِّر.
تدرّج BPR-OPT لثلاثية واحدة هو:
لاحظ الحد : هو بمثابة إشارة تعلّم ذكية تتكيّف تلقائياً. حين يخطئ النموذج في الترتيب (الفارق سالب)، تكون قريبة من 1 فيكون التحديث كبيراً. وحين يكون الترتيب صحيحاً بالفعل (فارق موجب كبير)، تقترب من 0 ويكاد التحديث يتلاشى. النتيجة أن النموذج ينفق جهده التعلّمي على الأخطاء التي تستحق التصحيح.
تطبيق BPR على تحليل المصفوفات
إطار BPR مستقل عن النموذج المستخدم — يصلح لأي نموذج يُخرج درجة لكل مستخدم وعنصر. الورقة توضّح ذلك بتطبيقه على تحليل المصفوفات، وهو النموذج الأكثر شيوعاً في أنظمة التوصية في تلك الفترة.
الفكرة في تحليل المصفوفات أن كل مستخدم يُمثَّل بـ ، وكذلك كل عنصر يُمثَّل بمتجه . الدرجة المتوقعة هي ببساطة بينهما:
وبالتالي يصبح فارق الدرجات:
بالتعويض في تدرّج BPR-OPT، نحصل على تحديثات بديهية:
- : يُدفع باتجاه — أي تقريب المستخدم من العنصر المفضَّل وإبعاده عن غير المفضَّل.
- : يُدفع نحو — أي تقريب العنصر المفضَّل من المستخدم.
- : يُدفع بعيداً عن — أي إبعاد العنصر غير المفضَّل.
الصورة الهندسية هنا جميلة وبديهية: كل خطوة تدريب تشدّ المستخدم وعناصره المفضَّلة نحو بعضهم في ، بينما تدفع العناصر غير المفضَّلة بعيداً عنه.
الفكرة ذاتها في شيفرة برمجية
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-np.clip(x, -500, 500)))
def bpr_update(W, H, u, i, j, lr=0.01, reg=0.01):
"""خطوة تدرّج واحدة لـ BPR-MF للثلاثية (u, i, j)."""
x_uij = W[u] @ H[i] - W[u] @ H[j] # فارق الدرجات
s = sigmoid(-x_uij) # معامل التدرّج
# حدّث المتجهات الكامنة: قرّب المستخدم من i وأبعده عن j
W[u] += lr * (s * (H[i] - H[j]) - reg * W[u])
H[i] += lr * (s * W[u] - reg * H[i])
H[j] += lr * (s * (-W[u]) - reg * H[j])
def learn_bpr(interactions, n_users, n_items, k=20, epochs=100, lr=0.01):
"""خوارزمية LearnBPR كاملة مع أخذ عيّنات تمهيدية."""
W = np.random.randn(n_users, k) * 0.01
H = np.random.randn(n_items, k) * 0.01
# بناء مجموعات العناصر الإيجابية لكل مستخدم للبحث السريع
user_items = {}
for u, i in interactions:
user_items.setdefault(u, set()).add(i)
all_items = set(range(n_items))
for epoch in range(epochs):
for _ in range(len(interactions)):
# عيّنات تمهيدية: اسحب (u, i, j) عشوائياً بانتظام
u, i = interactions[np.random.randint(len(interactions))]
j = np.random.randint(n_items)
while j in user_items[u]: # أعد السحب حتى يكون j غير ملاحَظ
j = np.random.randint(n_items)
bpr_update(W, H, u, i, j, lr)
return W, H # مصفوفتا المستخدمين والعناصر الكامنة
# التنبؤ بترتيب المستخدم u: رتّب العناصر حسب W[u] @ H[i]
# scores = W[u] @ H.T ← الترتيب التنازلي يعطي الترتيب الشخصيلماذا غيّر المسار
أثبت هذا الإطار متانة لافتة عبر السنين. خسارة BPR الزوجية صارت إشارة التدريب المرجعية لنماذج التغذية الراجعة الضمنية. وحين دخل مجال التوصيات، تبنّت بنية الترشيح التعاوني العصبي والبنى التي تلتها BPR-OPT كدالة خسارة. بل إن فكرة سحب ثلاثيات (مستخدم، عنصر إيجابي، عنصر سلبي) — ما بات يُعرف بـ — يعود في جذوره إلى أسلوب العيّنات التمهيدية في LearnBPR.
المسار بعد BPR
2008
WR-MF (هو، كورين، فولينسكي)
تحليل المصفوفات المنتظم الموزون للتغذية الراجعة الضمنية. اعتبر كل عنصر لم يُلاحَظ سلبياً بثقة منخفضة — وهو الخط المرجعي النقطي الذي جاء BPR ليتفوّق عليه.
2009
BPR (هذه الورقة)
طرح إطار التحسين الزوجي لترتيب التغذية الراجعة الضمنية. أثبت أن BPR-OPT يكافئ AUC تقريباً، وأن السحب العشوائي للعيّنات يتفوق على المرور التسلسلي.
2016
VBPR (هي وماكولي)
وسّع BPR بإضافة سمات بصرية مستخرجة من الشبكات الالتفافية، فصارت صور العناصر جزءاً من التمثيل الكامن، مما حسّن أداء الترتيب خصوصاً مع العناصر الجديدة.
2017
NCF (هي وآخرون)
استبدل الضرب النقطي بشبكة عصبية لكنه احتفظ بخسارة BPR الزوجية. أكّد أن النماذج العميقة تستفيد من أسلوب التدريب الزوجي.
2018
DIN (جو وآخرون)
أضافت آلية انتباه على تسلسل سلوك المستخدم. رغم اعتمادها على خسارة نقطية، إلا أن طريقة سحب العيّنات فيها تحاكي فلسفة BPR في أخذ العيّنات السلبية.
2020
مراجعة BPR (ريندل وآخرون)
أظهر ريندل أن BPR-MF حين يُضبط بعناية يضاهي NCF أو يتفوق عليه في عدّة معايير مرجعية، مما أعاد النقاش حول ما إذا كانت النماذج العميقة متفوقة دائماً في التوصيات.
خسارة BPR الزوجية لا تزال لبنة أساسية في أنظمة التوصية. في كل مرة يسحب فيها نظام توصية حديث ثلاثية (مستخدم، عنصر إيجابي، عنصر سلبي) ويدفع الدرجة الإيجابية لتتقدم على السلبية، فهو يسير على الدرب الذي رسمه BPR. ورسالة الورقة الجوهرية — حسِّن المقياس الذي يهمك فعلاً، لا بديلاً أسهل — تبقى من أهم الدروس في التعلّم الآلي التطبيقي.
المرجعRendle, Freudenthaler, Gantner, Schmidt-Thieme. BPR: Bayesian Personalized Ranking from Implicit Feedback. UAI, 2009.
مصطلحات هذه الورقة
- التغذية الراجعة الضمنيةImplicit Feedback
- التصفية التعاونيةCollaborative Filtering
- تحليل المصفوفاتMatrix Factorization
- نظام التوصيةRecommender System
- زوجيPairwise
- الاحتمال البعدي الـمُحدثPosterior
- تقدير الأرجحية القصوىMaximum Likelihood Estimation
- الانحدار التدريجي العشوائيStochastic Gradient Descent (SGD)
- المساحة تحت منحنى الـ ROCAUC (Area Under the Curve)
- الضبط الهيكليRegularization
- العوامل الكامنةLatent Factors
- المعاينة التمهيديةBootstrap Sampling