أنظمة التوصية2016مبتدئ9 دقيقة قراءة
التعلُّم العريض والعميق لأنظمة التوصية
Wide & Deep Learning for Recommender Systems
Cheng, H.-T. · Koc, L. · Harmsen, J. · Shaked, T. · Chandra, T. · Aradhye, H. · Anderson, G. · Corrado, G. · Chai, W. · Ispir, M. · Anil, R. · Haque, Z. · Hong, L. · Jain, V. · Liu, X. · Shah, H. — DLRS (Workshop at RecSys)
المشكلة
في أنظمة التوصية الكبيرة، النماذج الخطية التي تعتمد على السمات التقاطعية بارعة في الأنماط المتكررة — مثلاً: مَن ثبّت Netflix غالباً يُثبّت Pandora — لكنها لا تستطيع على توليفات جديدة لم تصادفها إلا بهندسة سمات يدوية مُرهقة. في المقابل، الشبكات العصبية العميقة تتعلّم تمثيلات كثيفة تُعمِّم جيداً على توليفات غير مسبوقة، لكن مشكلتها أنها قد تبالغ في التعميم — فتتوقع صلةً بين كل مستخدم وكل عنصر حتى لو كانت بيانات التفاعل شحيحة، فتصبح التوصيات فضفاضة وأقل دقة.
الإسهام
إطار التعلُّم العريض والعميق: نموذج واحد يُدرَّب فيه مُكوِّنان معاً — مُكوِّن خطي عريض (انحدار لوجستي بسمات تقاطعية يتولّى الحِفظ) ومُكوِّن عصبي عميق (شبكة تغذية أمامية بتضمينات مُتعلَّمة تتولّى التعميم). بفضل عبر الانتشار العكسي، يُكمِّل كل جزء الآخر: الجزء العريض يكتفي بعدد قليل من السمات التقاطعية بدل نموذج مستقل كامل، بينما يتكفّل الجزء العميق باكتشاف الأنماط الجديدة. طُبِّق النظام على متجر Google Play (أكثر من مليار مستخدم ومليون تطبيق) فرفع معدل تثبيت التطبيقات بنسبة 3.9% مقارنة بالنموذج العريض وحده، و1% مقارنة بالعميق وحده.
الأثر
تحوّل هذا النموذج إلى البنية المرجعية للتوصية في Google، وألهم جيلاً كاملاً من النماذج الهجينة. الفكرة المحورية — أن الحِفظ والتعميم يكمّلان بعضهما ولا يتنافسان — أثّرت مباشرةً في نماذج مثل DeepFM وDCN (شبكة التقاطع العميق) وDIN (شبكة الاهتمام العميق). كذلك رسّخت الورقة قناعةً مهمة: أنظمة التوصية الصناعية تحقق أفضل النتائج حين تجمع بين مُكوِّنات بسيطة يسهل تفسيرها وشبكات عميقة، بدلاً من الاستغناء عن أحدهما لصالح الآخر.
تخيّل أمينة مكتبة مُخضرَمة ومتدرّباً فضولياً يجلسان معاً خلف مكتب الاستعلامات.
أمينة المكتبة تحفظ طلبات الروّاد منذ سنوات طويلة: «كل مَن يبحث في قانون العقود يطلب بعده قانون الضرر.» هي سريعة وموثوقة، لكن اسألها عن موضوع لم يمرّ عليها من قبل وستعجز عن مساعدتك.
المتدرّب اطّلع على مجالات مختلفة ويستطيع أن يُعمِّم: «هذا الشخص يحب الروايات القانونية المشوّقة، لعله يستمتع بالدراما القضائية أيضاً.» اقتراحاته تكشف أشياء جديدة ومفيدة، لكنه أحياناً يبالغ في التخمين فيقترح كتب طبخ لباحثٍ في القانون!
الفكرة في هذا النموذج أنه يُجلسهما جنباً إلى جنب: ذاكرة أمينة المكتبة القائمة على تلتقط الأنماط المُجرَّبة، و المتدرّب تكشف أنماطاً جديدة، وحلقة مشترك تضبط أداء كليهما وتُبقيهما على المسار الصحيح.
التوتُّر: الحِفظ مقابل التعميم
هناك توتّر جوهري في بين قدرتين متعارضتين ظاهرياً:
الحِفظ هو قدرة النموذج على تعلُّم الأنماط المتكرّرة من البيانات التاريخية. نموذج مع سمات تقاطعية مثل AND(user_installed_app=Netflix, impression_app=Pandora) يلتقط مباشرةً أن مَن ثبّت Netflix يميل إلى تثبيت Pandora. هذه السمات قوية ومفهومة، لكن بناءها يحتاج يدوية مُرهقة، ولا تنفع مع توليفات لم يصادفها النموذج من قبل.
التعميم هو القدرة على استكشاف توليفات لم تظهر في بيانات التدريب أو ظهرت نادراً. النماذج القائمة على التضمينات — مثل تحليل المصفوفات أو الشبكات العصبية العميقة — تتعلّم متجهاً كثيفاً لكل سمة، بحيث تقع السمات المتشابهة قريبة من بعضها في فضاء التضمين. بهذه الطريقة يستنتج النموذج أن مستخدماً يحب تطبيق بثٍّ معيّناً قد يحب تطبيقاً مشابهاً، حتى بدون تكرار مشترك صريح. لكن حين تكون بيانات التفاعل شحيحة (مستخدمون متخصصون وعناصر نادرة)، تبالغ التضمينات في التعميم — فتتوقع صلةً في كل مكان وتُضعف دقة التوصيات.
المُكوِّن العريض: آلة الحِفظ
الجزء العريض في جوهره — أي انحدار لوجستي بالأساس. السلاح الرئيسي فيه هو ما يُسمّى التحويلات التقاطعية: سمات ثنائية لا تُفعَّل إلا حين تنشط سمتان أساسيتان أو أكثر في الوقت نفسه.
مثلاً، التقاطع AND(gender=female, language=en) قيمته 1 فقط حين يتحقق الشرطان معاً. هذا يُنتج سمة مُتناثرة لكنها بالغة الدقة، تُرمِّز العلاقة بين الجنس واللغة ترميزاً مباشراً.
تخيّل الأمر كلوحة أدلة عند محقق: كل سمة تقاطعية خيطٌ يربط بين دليلين. كلما زادت الخيوط، زادت الأنماط التي تستطيع تذكّرها. لكنك لا تستطيع ربط أدلة لم تضعها على اللوحة أصلاً — وهنا حدود الحِفظ: لا يعمل إلا مع ما رأيته فعلاً.
المُكوِّن العميق: آلة التعميم
الجزء العميق عبارة عن . السمات التصنيفية — مثل language=en أو installed_app=Netflix — تُحوَّل أولاً إلى متجهات تضمين كثيفة بأبعاد تتراوح عادةً بين 10 و100. هذه التضمينات تُتعلَّم مع التدريب.
الفكرة أشبه بتحويل خزانة ملفات ضخمة — فيها دُرج مستقل لكل تطبيق من مليون تطبيق — إلى بصمة مدمجة لكل تطبيق. التطبيقات التي تؤدي أدواراً متقاربة ستحصل على بصمات متشابهة، وبالتالي تستطيع الشبكة استنتاج علاقات لم تصادفها صراحةً في البيانات.
بعد ذلك تُسلسَل هذه التضمينات (مع أي سمات مستمرة) وتمرّ عبر بتنشيط ReLU، فتتعلّم الشبكة تفاعلات لاخطية معقدة. في نظام Google Play مثلاً، استُخدمت ثلاث طبقات ReLU بأحجام 1024 ثم 512 ثم 256، تتغذّى على متجه تضمين مُسلسَل بنحو 1200 بُعد.
التدريب المشترك: نموذج واحد، دالة خسارة واحدة
القرار التصميمي المحوري هنا هو التدريب المشترك وليس التجميع (ensemble). في التجميع، يُدرَّب كل نموذج على حدة ثم تُدمَج تنبؤاتهما وقت فقط، وكل نموذج يجب أن يكون كبيراً بما يكفي ليعمل جيداً بمفرده. أما في التدريب المشترك، فالمُكوِّنان يتشاركان لوجستية واحدة، وتتدفق إلى كليهما في آنٍ واحد عبر .
هذا الفرق جوهري عملياً: المُكوِّن العريض لا يحتاج إلا عدداً قليلاً من السمات التقاطعية — يكفيه ما يعالج أنماط الاستثناءات التي يبالغ فيها الجزء العميق. لا حاجة لأن يكون نموذج انحدار لوجستي ضخماً ومستقلاً. الجزءان يتعلّمان توزيع العمل بينهما تلقائياً.
في التطبيق العملي، استخدم المؤلفون مُحسِّناً مختلفاً لكل جزء: مع تنظيم L1 للجزء العريض (لتشجيع التناثر في أوزان السمات التقاطعية)، و للجزء العميق.
خط الأنابيب الكامل: من البيانات إلى الخدمة
تصف الورقة نظام توصية يعمل فعلياً في الإنتاج على متجر Google Play، ويمرّ بثلاث مراحل:
توليد البيانات: تصرفات المستخدم (مثل تثبيت التطبيقات) تتحوّل إلى أمثلة تدريبية. السمات التصنيفية تُربط بمُعرِّفات عددية عبر جداول مفردات، والسمات المستمرة تُسوَّى إلى النطاق [0, 1] باستخدام التقسيم بالشرائح المئوية.
التدريب: يُدرَّب النموذج على أكثر من 500 مليار مثال. وللتعامل مع البيانات المتجددة دون إعادة التدريب من الصفر، يُستخدم أسلوب : النموذج الجديد يبدأ من تضمينات وأوزان النموذج السابق.
خدمة النموذج: عند وصول طلب، يُرشَّح عدد من التطبيقات أولاً عبر نظام استرجاع سريع، ثم يُقيِّمها النموذج المدرَّب. في أوقات الذروة، تُقيِّم الخوادم أكثر من 10 ملايين تطبيق في الثانية. توزيع العمل على خيوط متعددة أنزل زمن الاستجابة من 31 إلى 14 ملي ثانية.
نتائج التجارب: متجر Google Play
أجرى الفريق اختبار A/B مباشراً على Google Play لمدة ثلاثة أسابيع، بثلاث مجموعات:
مجموعة التحكم (العريض فقط): نموذج انحدار لوجستي مُحسَّن بعناية بـسمات تقاطعية غنية — وهو النموذج المُستخدم فعلياً في الإنتاج. النموذج العميق فقط: البنية العصبية نفسها بدون المُكوِّن العريض. النموذج العريض والعميق: يجمع بين الاثنين.
النتائج جاءت واضحة: النموذج المشترك رفع معدل تثبيت التطبيقات بنسبة 3.9%+ على مجموعة التحكم و1.0%+ على النموذج العميق وحده (الفرقان ذوا دلالة إحصائية). اللافت أن مقياس على بيانات الاختبار كان متقارباً بين النماذج الثلاثة (0.726–0.728)، ما يعني أن المكاسب الحقيقية ظهرت في البيئة المباشرة حيث يمتزج الحِفظ بالتعميم لإنتاج توصيات استكشافية فعلاً.
الفكرة ذاتها في شيفرة برمجية
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def cross_product(features, crosses):
"""حساب السمات التقاطعية الثنائية.
features: قاموس {اسم_السمة: 0 أو 1}
crosses: قائمة بصفوف أسماء السمات، مثل [("gender_F", "lang_en")]
"""
result = []
for combo in crosses:
result.append(int(all(features.get(f, 0) for f in combo)))
return np.array(result, dtype=float)
def wide_and_deep(x_wide, x_deep_embed, W_deep, b_deep, w_wide, w_out, b_out):
"""
x_wide: السمات التقاطعية (متناثرة، ثنائية)
x_deep_embed: متجه التضمينات المُسلسَل (~1200 بُعد)
W_deep: قائمة مصفوفات الأوزان للطبقات المخفية
b_deep: قائمة متجهات الانحياز للطبقات المخفية
w_wide: متجه أوزان المُكوِّن العريض
w_out: متجه أوزان التنشيط النهائي
b_out: انحياز عددي
"""
# --- الجانب العريض: خطي ---
wide_out = w_wide @ x_wide
# --- الجانب العميق: 3 طبقات ReLU ---
h = x_deep_embed
for W, b in zip(W_deep, b_deep):
h = np.maximum(0, W @ h + b) # تنشيط ReLU
# --- الدمج ---
logit = wide_out + w_out @ h + b_out
return sigmoid(logit) # P(تثبيت | مستخدم، تطبيق)
# الجانب العريض يحفظ؛ الجانب العميق يُعمِّم.
# التدريب المشترك يعني أن تدرُّجات دالة خسارة واحدة تُحدِّث الجانبين معاً.لماذا كانت هذه الورقة مفصليّة
قبل هذه الورقة، كانت أنظمة التوصية تنقسم عادةً إلى معسكرين: نماذج خطية تعتمد على هندسة سمات يدوية، أو شبكات عصبية بحتة. ما أثبتته الورقة أن الحل الأفضل غالباً هو الجمع بين الاثنين: مُكوِّن خطي صغير يسهل تفسيره يتولّى الأنماط المؤكدة، وشبكة عميقة تكتشف الأنماط الجديدة، ويُدرَّبان معاً من البداية إلى النهاية.
فلسفة التصميم هذه — المزج بين البساطة والعمق، بين الحِفظ والتعميم — أثّرت في كل بنية توصية صناعية تقريباً بعدها. DeepFM استبدل التقاطعات اليدوية بآلة تحليل عاملي. DCN (شبكة التقاطع العميق) أتمتت استخراج السمات التقاطعية بشبكة تقاطع صريحة. DIN (شبكة الاهتمام العميق) أضافت آلية على تسلسلات سلوك المستخدم. كلها تشترك في المخطط الأساسي ذاته: مُكوِّن يحفظ ومُكوِّن يُعمِّم يعملان جنباً إلى جنب.
2009
جائزة Netflix وتحليل المصفوفات
أثبت الترشيح التعاوني بتحليل المصفوفات أن العوامل الكامنة تكفي لتوليد توصيات دقيقة، لكنه واجه صعوبات مع البداية الباردة وشُح البيانات.
2013
التعلُّم العميق للتنبؤ بنسبة النقر
المحاولات المبكرة لاستخدام الشبكات العميقة في التنبؤ بنسبة النقر أظهرت نتائج واعدة في تعلُّم تفاعلات السمات تلقائياً، لكنها كانت أضعف في الحِفظ مقارنةً بالسمات المصنوعة يدوياً.
2016
التعلُّم العريض والعميق
جمع قوة المقاربتين: حِفظ السمات التقاطعية مع تعميم التضمينات في نموذج واحد يُدرَّب بشكل مشترك. حقّق تحسّناً بنسبة 3.9% في معدل التثبيت على Google Play.
2017
DeepFM
استبدل التقاطعات اليدوية بآلة تحليل عاملي تتولّى الحِفظ تلقائياً، مع الإبقاء على المُكوِّن العميق للتعميم.
2017
DCN (شبكة التقاطع العميق)
قدّمت شبكة تقاطع صريحة تتعلّم تفاعلات السمات تلقائياً طبقةً بعد طبقة، فاستغنت عن الحاجة إلى تصميم سمات تقاطعية يدوياً.
2018
DIN (شبكة الاهتمام العميق)
أضافت آلية انتباه فوق تسلسل سلوك المستخدم، فأصبح النموذج يُعطي وزناً مختلفاً لكل تفاعل سابق بحسب العنصر المرشح الحالي.
2019
NCF (الترشيح التعاوني العصبي)
وسّع فكرة تحليل المصفوفات باستخدام شبكات عصبية، فأصبح قادراً على تعلُّم تفاعلات لاخطية بين المستخدم والعنصر عبر طبقات MLP.
المرجعCheng, Koc, Harmsen, Shaked, Chandra, Aradhye, Anderson, Corrado, Chai, Ispir, Anil, Haque, Hong, Jain, Liu, Shah. Wide & Deep Learning for Recommender Systems. DLRS (Workshop at RecSys), 2016.
مصطلحات هذه الورقة
- الحفظMemorization
- التعميمGeneralization
- نظام التوصيةRecommender System
- التحويل التقاطعيCross-Product Transformation
- التضمينEmbedding
- الانحدار اللوجستي الاحتماليLogistic Regression
- التصفية التعاونيةCollaborative Filtering
- هندسة البيانات السماتيةFeature Engineering
- التدريب المشتركJoint Training
- التغذية الراجعة الضمنيةImplicit Feedback