أنظمة التوصية2017متوسط11 دقيقة قراءة
التصفية التعاونية العصبية
Neural Collaborative Filtering
He, X. · Liao, L. · Zhang, H. · Nie, L. · Hu, X. · Chua, T.-S. — WWW
المشكلة
سيطر على مجال لعقد كامل بعد مسابقة Netflix، لكنّ آلية التفاعل فيه — وهي مجرد ضرب نقطي بين متجهات المستخدم والعنصر — خطية في صميمها. هذه الخطية تعجز عن التقاط الأنماط المعقدة واللاخطية في سلوك المستخدمين، وتتفاقم المشكلة مع (نقرات، مشاهدات، مشتريات) حيث الإشارة مشوّشة ولا وجود لتغذية راجعة سلبية صريحة.
الإسهام
NCF: إطار عصبي عام يستبدل في تحليل المصفوفات ببنية عصبية قابلة للتعلّم. يقدّم ثلاثة نماذج — تحليل المصفوفات المُعمَّم (GMF) الذي يُعيد إنتاج تحليل المصفوفات التقليدي كحالة خاصة، (MLP) الذي يبني طبقات كثيفة فوق تضمينات ملتصقة لتعلّم تفاعلات لاخطية، وNeuMF الذي يدمج المسارين معاً. يُدرَّب النموذج مع اشتقاق العيّنات السلبية، وحقّق تفوّقاً على BPR وeALS في مجموعتَي MovieLens وPinterest.
الأثر
أثبت NCF أنّ الشبكات العصبية قادرة — بل ينبغي لها — أن تحلّ محل دوال التفاعل المصمَّمة يدوياً في أنظمة التوصية. فتح هذا العمل الباب أمام نماذج التوصية العميقة — من DeepFM وWide & Deep إلى BERT4Rec وDIN — وأحدث تحوّلاً في المجال من نماذج الخطية إلى بنى تتعلّم من طرف إلى طرف. اليوم، يكاد كل نظام توصية تجاري يعتمد على دوال تفاعل عصبية تنحدر من هذه الفكرة.
تخيّل أنك تدير مطعماً وتريد أن تتنبّأ بالأطباق التي سيطلبها كل زبون. الأسلوب القديم — تحليل المصفوفات — يختصر كل زبون في قائمة أرقام تعبّر عن ذوقه: حبّ التوابل 0.8، حبّ الحلويات 0.3، وهكذا. ولكل طبق أرقام مقابلة. حين تريد تخمين ما إذا كان زبون سيحبّ طبقاً معيّناً، تضرب هذه الأرقام وتجمعها. الطريقة تعمل بشكل معقول، لكنها تُفوّت التفاصيل الدقيقة: مثلاً، قاعدة «يحب الحار إلا في الحلويات» لا يمكن لعملية ضرب بسيطة أن تعبّر عنها.
ما يفعله NCF هو أنه يستبدل عملية الضرب تلك بـلجنة تذوّق ذكية: تأخذ ملفّ الزبون وملفّ الطبق، تمرّرهما عبر طبقات متعاقبة تتعلّم أنماط الذوق، ثم تُخرج درجة توافق دقيقة. هذه اللجنة قادرة على تعلّم أي قاعدة ذوقية معقّدة — حتى تلك التي يستحيل على عملية الضرب أن تلتقطها.
التحدّي: كيف تتعلّم من الصمت؟
قبل 2017، ركّزت معظم أبحاث التوصية على التغذية الراجعة الصريحة — تقييمات بالنجوم أو إعجاب وعدم إعجاب. لكن في الواقع العملي، الغالب هو التغذية الراجعة الضمنية: نقرات، مشاهدات، مشتريات، وقت قضاه المستخدم. المشكلة هنا أنّ هذا النوع من البيانات لا يُخبرك إلا بما تفاعل معه المستخدم فعلاً. الصفر لا يعني أنّ المستخدم لم يحب العنصر — قد يعني ببساطة أنه لم يره أصلاً. لا توجد عيّنات سلبية حقيقية، بل فقط تفاعلات إيجابية مُشاهَدة وبحر واسع من المجهول.
الأسلوب السائد كان تحليل المصفوفات: تمثّل كل مستخدم بمتجه وكل عنصر بمتجه ، ثم تتنبّأ بالتفاعل عبر بينهما: . انتشر هذا الأسلوب بعد مسابقة Netflix، وطوّره BPR (الترتيب البايزي المُخصَّص) ليعمل مع التغذية الراجعة الضمنية.
لماذا يصطدم الضرب النقطي بسقف؟
الضرب النقطي في تحليل المصفوفات هو في جوهره تركيب خطي للأبعاد الكامنة — كل بُعد يعمل باستقلال ويُسهم بنفس الوزن. هذا يضع سقفاً لقدرة النموذج التعبيرية. لنأخذ المثال الشهير من الورقة: أربعة مستخدمين بأنماط تفاعل يستحيل تمثيلها بدقة في منخفض الأبعاد بالضرب النقطي وحده.
المستخدم أقرب في سلوكه إلى ، ثم ، ثم . لكن بمجرد تثبيت مواقع و و في الفضاء الكامن، لن تجد موقعاً لـ يحافظ على ترتيبات التشابه الثلاثة في آنٍ واحد. الضرب النقطي يفرض هندسة أكثر جموداً من أن تستوعب أنماط التفاعل الحقيقية — تخيّل أنك تحاول رسم خريطة علاقات صداقة على ورقة مسطّحة، بينما العلاقات الفعلية متشابكة عبر أبعاد كثيرة.
إطار NCF: دَع الشبكة تتعلّم دالة التفاعل
الفكرة المحورية في NCF بسيطة لكنها عميقة الأثر: استبدل الضرب النقطي الثابت بـشبكة عصبية تتعلّم من البيانات نفسها. بدلاً من أن تفترض أنّ توافق المستخدم مع العنصر يُحسب بضرب نقطي، اترك الشبكة تكتشف بنفسها أي دالة — خطية أو لاخطية — تُعطي أفضل تنبؤ.
يمرّ الإطار بأربع مراحل. أولاً، يتحوّل معرّف المستخدم ومعرّف العنصر إلى متجهات . ثانياً، تُسقط طبقة هذه المتجهات المتفرقة إلى متجهات كامنة كثيفة. ثالثاً — وهنا جوهر الأمر — تمرّ التضمينات عبر طبقات التصفية التعاونية العصبية، وهي الجزء الذي يختلف من نموذج فرعي لآخر. رابعاً، تُنتج طبقة الإخراج درجة تنبؤ بين 0 و1.
ثلاثة نماذج فرعية: GMF وMLP وNeuMF
NCF إطار عامّ وليس نموذجاً واحداً. تطرح الورقة ثلاثة نماذج فرعية تختلف في الطريقة التي تدمج بها تضمينات المستخدم والعنصر:
تحليل المصفوفات المُعمَّم (GMF) يأخذ بين متجهَي تضمين المستخدم والعنصر، ثم يمرّر الناتج عبر طبقة إخراج بأوزان قابلة للتعلّم مع . حين تكون كل الأوزان مساوية للواحد ولا توجد دالة تنشيط، يتحوّل GMF إلى تحليل المصفوفات التقليدي بالضبط. لكنّ الأوزان القابلة للتعلّم تتيح لكل بُعد كامن أن يُسهم بقدر مختلف — بعض الأبعاد أهمّ من غيرها في تحديد التوافق.
البيرسبترون متعدد الطبقات (MLP) يُلصق تضمينَي المستخدم والعنصر في متجه واحد ويمرّره عبر سلسلة من بتنشيط . كل طبقة تستخلص أنماط تفاعل ذات مرتبة أعلى من سابقتها. البنية تأخذ شكل برج يضيق تدريجياً (مثلاً 64←32←16←8)، وهذا التضييق يجبر الشبكة على تكثيف التفاعلات المعقّدة في إشارة تنبؤ مركّزة.
تحليل المصفوفات العصبي (NeuMF) يجمع بين المسارين: يُشغّل GMF وMLP بالتوازي بمجموعتَي تضمين مستقلّتين، ثم يُلصق مخرجاتهما الأخيرة ويمرّر المتجه الموحّد عبر طبقة تنبؤ نهائية. بهذا الشكل يلتقط النموذج خطية تحليل المصفوفات ولاخطية الشبكات العميقة في آنٍ واحد.
GMF: حين يدخل تحليل المصفوفات عصر الشبكات العصبية
النموذج الفرعي الأول يبدأ من تحليل المصفوفات التقليدي ثم يوسّعه. الفكرة أنيقة: احسب الضرب العنصري بين تضمينَي المستخدم والعنصر — وهذا بالضبط ما يحدث داخل الضرب النقطي — لكن بدلاً من جمع كل الأبعاد بالتساوي، مرّر الناتج عبر طبقة إخراج بأوزان قابلة للتعلّم. هذا يعني أنّ النموذج يتعلّم أيّ الأبعاد أكثر أهمية لكل سيناريو.
MLP: تعلّم التفاعلات اللاخطية
مسار البيرسبترون متعدد الطبقات يتبع نهجاً مختلفاً تماماً. بدلاً من ضرب التضمينات عنصراً بعنصر، يُلصقها في متجه واحد ويدفعه عبر برج من الطبقات الكثيفة. كل طبقة تُجري تحويلاً خطياً يتبعه تنشيط ReLU. تخيّل الأمر كحوار بين تمثيل المستخدم وتمثيل العنصر: كل طبقة تسمح لهما بالتفاعل على مستوى أعلى من التجريد.
البنية البرجية تضيق تدريجياً. لو كانت عوامل التنبؤ 8 مثلاً، فإنّ طبقات MLP قد تكون 32←16←8 بحجم تضمين 16 لكل جانب. هذا الاختناق يُجبر الشبكة على تكثيف أنماط التفاعل الأكثر فائدةً للتنبؤ.
NeuMF: الجمع بين أفضل ما في المسارين
NeuMF هو النموذج الأساسي في الورقة. يُشغّل GMF والبيرسبترون متعدد الطبقات بالتوازي، ولكل منهما مجموعة تضمينات خاصة به. هذا الفصل جوهري: لو تشاركا التضمينات ذاتها، لاضطرّ كلا المسارين إلى استخدام التمثيل نفسه، وهذا يحدّ من قدرة النموذج. بالفصل بينهما، يتمكّن GMF من التركيز على الأنماط الخطية التي يبرع فيها، بينما يتولّى MLP التقاط الأنماط اللاخطية.
تُلصق الطبقتان الأخيرتان من كلا المسارين ويُغذّى المتجه الموحّد لعصبون إخراج وحيد بتنشيط سيغمويد. α يتحكّم في موازنة الإسهام بين المسارين عند التهيئة بـ.
التدريب: الإنتروبيا التقاطعية الثنائية واشتقاق العيّنات السلبية
من القرارات التصميمية المفصلية في NCF أنه يتعامل مع مهمة التوصية باعتبارها تصنيفاً ثنائياً وليس انحداراً. لكل تفاعل مُشاهَد تكون التسمية 1. أمّا الأزواج التي لم يُشاهَد فيها تفاعل، فتُسحب منها عيّنات عشوائية بتسمية 0 لتكون أمثلة سلبية — وهذا ما يُعرف بـ. عدد العيّنات السلبية لكل عيّنة إيجابية مُعامل قابل للضبط، ووجدت الورقة أنّ النسبة المثلى تتراوح بين 3 و6.
هي الإنتروبيا التقاطعية الثنائية (خسارة اللوغاريتم)، وهي الخيار الطبيعي هنا لأنّ النموذج يُخرج احتمال تفاعل المستخدم مع العنصر . هذا أنسب من مربّع الخطأ حين يكون الهدف ثنائياً، لأنّ الإنتروبيا التقاطعية تُعاقب التنبؤات الخاطئة الواثقة بشدّة أكبر بكثير.
التدريب المسبق: تمهيد NeuMF للانطلاق
تدريب NeuMF من تهيئة عشوائية ليس سهلاً، لأنّ النموذج غير محدّب ومليء بالنقاط . الحلّ الذي تقترحه الورقة: درِّب GMF وMLP كلاً على حدة باستخدام محسِّن Adam أولاً، ثم خُذ المعاملات التي تعلّمها كلّ منهما واستخدمها لتهيئة NeuMF. الأوزان الوحيدة التي تبدأ من الصفر هي أوزان طبقة الإخراج في النموذج المدمج، وتُهيَّأ كتركيبة موزونة يتحكّم فيها المعامل α (يُضبط عند 0.5 لإسهام متساوٍ من كل مسار).
بعد هذه التهيئة، يُضبط NeuMF باستخدام العادي وليس Adam. والسبب أنّ Adam يحتفظ بمعلومات زخم تراكمت خلال مسار أمثَلة مختلف، فاستخدامه مع معاملات جاءت من تدريب مسبق مختلف سيُربك التحديثات. هذا النمط — تدريب مسبق للمكوّنات ثم للنموذج الكامل — أصبح لاحقاً أسلوباً شائعاً في نماذج التوصية العميقة.
الفكرة نفسها في شيفرة برمجية
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-np.clip(x, -500, 500)))
def relu(x):
return np.maximum(0, x)
def neumf_predict(user_id, item_id, params):
"""التمرير الأمامي لـ NeuMF: تشغيل GMF + MLP بالتوازي."""
# --- مسار GMF ---
p_gmf = params['user_emb_gmf'][user_id] # تضمين المستخدم لـ GMF
q_gmf = params['item_emb_gmf'][item_id] # تضمين العنصر لـ GMF
gmf_out = p_gmf * q_gmf # ضرب عنصري
# --- مسار MLP ---
p_mlp = params['user_emb_mlp'][user_id]
q_mlp = params['item_emb_mlp'][item_id]
x = np.concatenate([p_mlp, q_mlp]) # إلصاق التضمينات
for W, b in params['mlp_layers']:
x = relu(W @ x + b) # طبقة كثيفة + ReLU
# --- الدمج ---
concat = np.concatenate([gmf_out, x]) # دمج المسارين
score = sigmoid(params['h'] @ concat) # التنبؤ النهائي
return score # احتمال التفاعلما الذي أظهرته التجارب؟
اختبرت الورقة نماذجها على مجموعتَي بيانات: MovieLens 1M (مليون تقييم من 6 آلاف مستخدم على 4 آلاف فيلم، حُوِّلت إلى تغذية راجعة ضمنية) وPinterest (1.5 مليون تفاعل من 55 ألف مستخدم على 9,900 صورة، وهي ضمنية بطبيعتها). مقاييس التقييم كانت معدّل الإصابة (Hit Rate) ومقياس NDCG عند أعلى K عنصر، بأسلوب «اترك واحداً للاختبار» (leave-one-out).
جاءت النتائج واضحة ومتّسقة: NeuMF تفوّق على كل خطوط الأساس في كلتا المجموعتين. ترتيب الأداء ثابت دائماً: NeuMF > MLP > GMF > BPR > eALS > ItemKNN. كلّما زاد عمق بنية البيرسبترون متعدد الطبقات تحسّن الأداء، وهذا يؤكد أنّ إضافة طبقات لاخطية تُحدث فرقاً حقيقياً. نسبة اشتقاق العيّنات السلبية مهمّة أيضاً — عيّنة سلبية واحدة لكل إيجابية أضعفت الأداء، في حين أنّ 3 إلى 6 عيّنات حقّقت التوازن الأفضل.
والأهمّ من ذلك أنّ استراتيجية التدريب المسبق حسّنت أداء NeuMF باستمرار مقارنةً بالتهيئة العشوائية، مما يُثبت جدوى التدريب على مرحلتين.
لماذا غيَّر NCF مسار أبحاث التوصية؟
2009
BPR — الترتيب البايزي المُخصَّص
صاغ ريندل وزملاؤه إطاراً للتعلّم الزوجي مع التغذية الراجعة الضمنية، بحيث يُحسَّن ترتيب العناصر المُشاهَدة فوق غير المُشاهَدة. كان خط الأساس المهيمن قبل ظهور NCF.
2017
NCF — التصفية التعاونية العصبية
استبدل He وزملاؤه الضرب النقطي بشبكات عصبية، وأثبتوا أنّ تحليل المصفوفات حالة خاصة وأنّ النماذج الأعمق تعطي توصيات أفضل.
2018
شبكة الاهتمام العميق (DIN)
أضاف نموذج DIN من علي بابا آليات انتباه تلتقط أيّ السلوكيات السابقة للمستخدم لها صلة بالعنصر المرشّح، ممّا وسّع التوصية العصبية لتشمل السلوك التسلسلي.
2019
BERT4Rec
طبّق فكرة نمذجة اللغة المُقنَّعة من BERT على التوصية التسلسلية — بإخفاء عناصر من سجلّ المستخدم والتنبؤ بها اعتماداً على السياق ثنائي الاتجاه.
2020
التصفية التعاونية بالشبكات البيانية العصبية
وسّع أفكار NCF عبر نشر التضمينات على الرسم البياني لتفاعلات المستخدمين والعناصر، ممّا مكّن من التقاط أنماط ترابط من مراتب أعلى.
فكرة NCF — أنّ دالة التفاعل ينبغي أن تُتعلَّم — فكرة بسيطة، لكنها أعادت رسم ملامح مجال بأكمله. كل نموذج توصية رئيسي منذ 2017، من DIN إلى BERT4Rec، يقف على هذا الأساس.
المرجعHe, Liao, Zhang, Nie, Hu, Chua. Neural Collaborative Filtering. WWW, 2017.
مصطلحات هذه الورقة
- التصفية التعاونيةCollaborative Filtering
- تحليل المصفوفاتMatrix Factorization
- التغذية الراجعة الضمنيةImplicit Feedback
- البيرسبترون متعدد الطبقاتMulti-Layer Perceptron (MLP)
- التضمينEmbedding
- التعيين السلبيNegative Sampling
- نظام التوصيةRecommender System
- العوامل الكامنةLatent Factors
- الضرب النقطيDot Product
- العشوائية المتقاطعةCross Entropy