كيف تعمل أنظمة التوصية؟
يتم تشغيل أنظمة التوصية بواسطة خوارزميات لها بدايات متواضعة تساعد البشر على غربلة البريد الإلكتروني غير المرغوب فيه. في عام 1990، استخدم المخترع دوغ تيري خوارزمية تصفية تعاونية لفرز البريد الإلكتروني المرغوب فيه من البريد غير المرغوب فيه. بمجرد "إبداء الإعجاب" أو "الكراهية" لرسالة بريد إلكتروني، بالتعاون مع آخرين يفعلون الشيء نفسه مع محتوى بريد مماثل، يمكن للمستخدمين تدريب أجهزة الكمبيوتر بسرعة على تحديد ما يجب دفعه إلى صندوق الوارد الخاص بالمستخدم - وما يجب عزله إلى مجلد البريد غير الهام.
بشكل عام، أنظمة التوصيات هي خوارزميات تقدم اقتراحات ذات صلة للمستخدمين. يمكن أن تكون الاقتراحات أفلامًا للمشاهدة، أو كتبًا للقراءة، أو منتجات للشراء، أو أي شيء آخر حسب السيناريو أو الصناعة. هذه الخوارزميات موجودة في كل مكان حولنا، وتؤثر على المحتوى الذي نستهلكه والمنتجات التي نشتريها من شركات التكنولوجيا الكبرى مثل Youtube وAmazon وNetflix وغيرها الكثير.
يمكن أن تكون أنظمة التوصيات المصممة بشكل جيد مصدراً أساسياً للإيرادات ومخفضاً للتكاليف ومُفاضلاً تنافسياً. وبفضل التكنولوجيا مفتوحة المصدر وانخفاض تكاليف الحوسبة، أصبحت أنظمة التوصيات المخصصة أكثر سهولة من أي وقت مضى. تشرح هذه المقالة كيفية استخدام Milvus، وهي قاعدة بيانات متجهة مفتوحة المصدر؛ PinSage، وهي شبكة عصبية تلافيفية للرسم البياني (GCN)؛ مكتبة الرسم البياني العميق (DGL)، وهي حزمة بيثون قابلة للتطوير للتعلم العميق على الرسوم البيانية؛ ومجموعات بيانات MovieLens لبناء نظام توصية قائم على الرسم البياني.
الانتقال إلى:
- كيف تعمل أنظمة التوصية؟
- أدوات لبناء نظام توصية
- بناء نظام توصية قائم على الرسم البياني باستخدام Milvus
كيف تعمل أنظمة التوصية؟
هناك طريقتان شائعتان لبناء أنظمة التوصية: التصفية التعاونية والتصفية القائمة على المحتوى. يستخدم معظم المطورين إحدى الطريقتين أو كلتيهما، وعلى الرغم من أن أنظمة التوصية يمكن أن تختلف في التعقيد والبناء، إلا أنها تتضمن عادةً ثلاثة عناصر أساسية
- نموذج المستخدم: تتطلب أنظمة التوصية نمذجة خصائص المستخدم وتفضيلاته واحتياجاته. تبني العديد من أنظمة التوصية اقتراحاتها على مدخلات ضمنية أو صريحة على مستوى العنصر من المستخدمين.
- نموذج العنصر: تقوم أنظمة التوصية أيضًا بنمذجة العناصر من أجل تقديم توصيات للعناصر بناءً على صور المستخدم.
- خوارزمية التوصية: المكون الأساسي لأي نظام توصية هو الخوارزمية التي تشغل توصياته. وتشمل الخوارزميات الشائعة الاستخدام التصفية التعاونية، والنمذجة الدلالية الضمنية، والنمذجة القائمة على الرسم البياني، والتوصية المدمجة، وغيرها.
على مستوى عالٍ، تقوم أنظمة التوصية التي تعتمد على التصفية التعاونية ببناء نموذج من سلوك المستخدم السابق (بما في ذلك مدخلات السلوك من مستخدمين مشابهين) للتنبؤ بما قد يهتم به المستخدم. تستخدم الأنظمة التي تعتمد على التصفية المستندة إلى المحتوى علامات منفصلة ومحددة مسبقًا استنادًا إلى خصائص العنصر للتوصية بعناصر متشابهة.
ومن الأمثلة على التصفية التعاونية محطة راديو مخصصة على Spotify تستند إلى سجل استماع المستخدم واهتماماته ومكتبته الموسيقية وغير ذلك. تقوم المحطة بتشغيل الموسيقى التي لم يقم المستخدم بحفظها أو التعبير عن اهتمامه بها، ولكن غالبًا ما يكون لدى المستخدمين الآخرين ذوي الذوق المماثل. من أمثلة التصفية القائمة على المحتوى محطة إذاعية تستند إلى أغنية أو فنان معين تستخدم سمات المدخلات للتوصية بموسيقى مشابهة.
أدوات لبناء نظام توصية
في هذا المثال، يعتمد بناء نظام توصية قائم على الرسم البياني من الصفر على الأدوات التالية:
بينساج: شبكة التفافية للرسم البياني
PinSage عبارة عن شبكة تلافيفية للرسم البياني عشوائية المشي قادرة على تعلم التضمينات للعقد في الرسوم البيانية على نطاق الويب التي تحتوي على مليارات من الكائنات. تم تطوير هذه الشبكة من قبل شركة Pinterest، وهي شركة للوحات الدبابيس على الإنترنت، لتقديم توصيات مرئية موضوعية لمستخدميها.
يمكن لمستخدمي Pinterest "تثبيت" المحتوى الذي يثير اهتمامهم في "لوحات"، وهي مجموعات من المحتوى المثبت. مع وجود أكثر من 478 مليون مستخدم نشط شهريًا (MAU) وأكثر من 240 مليار عنصر محفوظ، تمتلك الشركة كمية هائلة من بيانات المستخدمين التي يجب أن تبني تكنولوجيا جديدة لمواكبة ذلك.
1.png
يستخدم PinSage الرسوم البيانية ثنائية الأجزاء للوحات الدبابيس لتوليد تضمينات عالية الجودة من الدبابيس التي تُستخدم للتوصية بمحتوى متشابه بصرياً للمستخدمين. على عكس خوارزميات GCN التقليدية، التي تقوم بإجراء عمليات التلافيف على مصفوفات السمات والرسم البياني الكامل، تقوم PinSage بأخذ عينات من العقد/الدبابيس القريبة وتقوم بإجراء عمليات تلافيف محلية أكثر كفاءة من خلال البناء الديناميكي للرسوم البيانية الحسابية.
سينتج عن إجراء عمليات التلافيف على كامل المنطقة المجاورة للعقدة رسم بياني حسابي ضخم. ولتقليل متطلبات الموارد، تقوم خوارزميات GCN التقليدية بتحديث تمثيل العقدة من خلال تجميع المعلومات من جوارها الذي يحتوي على عدد k-قفزة. تقوم PinSage بمحاكاة المشي العشوائي لتعيين المحتوى الذي تتم زيارته بشكل متكرر كجوار رئيسي ثم تقوم ببناء التواء بناءً عليه.
نظرًا لوجود تداخل في كثير من الأحيان في أحياء القفزات k-قفزة في كثير من الأحيان، ينتج عن الالتفاف المحلي على العقد عمليات حسابية متكررة. لتجنب ذلك، يقوم PinSage في كل خطوة تجميعية بتعيين جميع العقد دون حساب متكرر، ثم يربطها بعقد المستوى الأعلى المقابلة، وأخيراً يسترجع تضمينات عقد المستوى الأعلى.
مكتبة الرسم البياني العميق: حزمة بايثون قابلة للتطوير للتعلم العميق على الرسوم البيانية
dgl-framework-building-gramraph-based-recommender-milvus.png
مكتبة الرسومالبيانية العميقة(DGL ) هي حزمة بايثون مصممة لبناء نماذج الشبكات العصبية القائمة على الرسوم البيانية على رأس أطر التعلم العميق الحالية (مثل PyTorch وMXNet وGluon وغيرها). تشتمل DGL على واجهة خلفية سهلة الاستخدام، مما يجعل من السهل زرعها في الأطر القائمة على الموتر والتي تدعم التوليد التلقائي. تم تحسين خوارزمية PinSage المذكورة أعلاه للاستخدام مع DGL و PyTorch.
Milvus: قاعدة بيانات متجهة مفتوحة المصدر مصممة للذكاء الاصطناعي والبحث عن التشابه
كيف-يفعل-ميلفوس-عمل.png
Milvus هي قاعدة بيانات متجهات مفتوحة المصدر مصممة لتشغيل تطبيقات البحث عن التشابه المتجهي والذكاء الاصطناعي (AI). على مستوى عالٍ، يعمل استخدام Milvus للبحث عن التشابه على النحو التالي:
- تُستخدم نماذج التعلم العميق لتحويل البيانات غير المهيكلة إلى متجهات مميزة، والتي يتم استيرادها إلى Milvus.
- يقوم ميلفوس بتخزين وفهرسة متجهات السمات.
- عند الطلب، يبحث Milvus عن المتجهات الأكثر تشابهًا مع متجه الإدخال ويعيدها.
بناء نظام توصية قائم على الرسم البياني باستخدام Milvus
beike-intelligent-house-platform-diagram.jpg
3-بناء نظام توصية قائم على الرسم البياني. png
يتضمن بناء نظام توصية قائم على الرسم البياني باستخدام Milvus الخطوات التالية:
الخطوة 1: المعالجة المسبقة للبيانات
تتضمن المعالجة المسبقة للبيانات تحويل البيانات الخام إلى تنسيق يسهل فهمه. يستخدم هذا المثال مجموعات البيانات المفتوحة MovieLens[5] (m1-1m)، والتي تحتوي على 1,000,000 تقييم لـ 4,000 فيلم ساهم بها 6,000 مستخدم. تم جمع هذه البيانات بواسطة GroupLens وتتضمن أوصاف الأفلام وتقييمات الأفلام وخصائص المستخدم.
لاحظ أن مجموعات بيانات MovieLens المستخدمة في هذا المثال تتطلب الحد الأدنى من تنظيف البيانات أو تنظيمها. ومع ذلك، إذا كنت تستخدم مجموعات بيانات مختلفة فقد تختلف الأميال التي تقطعها.
للبدء في بناء نظام توصية، قم ببناء رسم بياني ثنائي بين المستخدم والفيلم لأغراض التصنيف باستخدام بيانات المستخدم والفيلم التاريخية من مجموعة بيانات MovieLens.
graph_builder = PandasGraphBuilder()
graph_builder.add_entities(users, 'user_id', 'user')
graph_builder.add_entities(movies_categorical, 'movie_id', 'movie')
graph_builder.add_binary_relations(ratings, 'user_id', 'movie_id', 'watched')
graph_builder.add_binary_relations(ratings, 'movie_id', 'user_id', 'watched-by')
g = graph_builder.build()
الخطوة 2: تدريب النموذج باستخدام PinSage
متجهات تضمين متجهات الدبابيس التي تم إنشاؤها باستخدام نموذج PinSage هي متجهات ميزات لمعلومات الفيلم المكتسبة. قم بإنشاء نموذج PinSage استنادًا إلى نموذج PinSage استنادًا إلى الرسم البياني الثنائي g وأبعاد متجه سمة الفيلم المخصص (256 د افتراضيًا). بعد ذلك، قم بتدريب النموذج باستخدام PyTorch للحصول على تضمينات h_item لـ 4000 فيلم.
# Define the model
model = PinSAGEModel(g, item_ntype, textset, args.hidden_dims, args.num_layers).to(device)
opt = torch.optim.Adam(model.parameters(), lr=args.lr)
# Get the item embeddings
for blocks in dataloader_test:
for i in range(len(blocks)):
blocks[i] = blocks[i].to(device)
h_item_batches.append(model.get_repr(blocks))
h_item = torch.cat(h_item_batches, 0)
الخطوة 3: تحميل البيانات
قم بتحميل تضمينات الفيلم h_item التي تم إنشاؤها بواسطة نموذج PinSage في Milvus، والتي ستعيد المعرفات المقابلة. قم باستيراد المعرفات ومعلومات الفيلم المقابلة إلى MySQL.
# Load data to Milvus and MySQL
status, ids = milvus.insert(milvus_table, h_item)
load_movies_to_mysql(milvus_table, ids_info)
الخطوة 4: إجراء بحث التشابه المتجهي
احصل على التضمينات المقابلة في Milvus استنادًا إلى معرّفات الأفلام، ثم استخدم Milvus لإجراء بحث التشابه مع هذه التضمينات. بعد ذلك، حدد معلومات الفيلم المقابلة في قاعدة بيانات MySQL.
# Get embeddings that users like
_, user_like_vectors = milvus.get_entity_by_id(milvus_table, ids)
# Get the information with similar movies
_, ids = milvus.search(param = {milvus_table, user_like_vectors, top_k})
sql = "select * from " + movies_table + " where milvus_id=" + ids + ";"
results = cursor.execute(sql).fetchall()
الخطوة 5: الحصول على توصيات
سيوصي النظام الآن بالأفلام الأكثر تشابهًا مع استعلامات بحث المستخدم. هذا هو سير العمل العام لبناء نظام توصيات. لاختبار أنظمة التوصية وتطبيقات الذكاء الاصطناعي الأخرى ونشرها بسرعة، جرّب مخيم Milvus التمهيدي.
يمكن لـ Milvus تشغيل أكثر من أنظمة التوصية
Milvus هو أداة قوية قادرة على تشغيل مجموعة كبيرة من تطبيقات الذكاء الاصطناعي وتطبيقات البحث عن التشابه المتجه. لمعرفة المزيد عن المشروع، اطلع على الموارد التالية:
- أدوات لبناء نظام توصية
- بناء نظام توصية قائم على الرسم البياني باستخدام Milvus
- يمكن لـ Milvus تشغيل أكثر من أنظمة التوصية
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word