غوص عميق في خوارزميات التوصية مع دراسة حالة Netflix وتكنولوجيا التعلم العميق من NVIDIA

ما هي خوارزميات التوصية؟

محركات التوصية هي السر وراء كل عملية على الإنترنت، سواء كانت أمازون أو نتفليكس أو فليبكارت أو يوتيوب أو تيكتوك، وحتى لينكدإن، وجوجل، إكس (تويتر)، سنابشات، ميديوم، سبستاك، هاكرنون… جميع هذه المواقع ومعظم مواقع ترشيد المحتوى أو معارض السلع على الإنترنت تجني أكبر أجزاء من أموالها من خوارزميات التوصية.

ببساطة، خوارزمية التوصية تبني نموذج لما تحب، وما تكره، والمفضلات، الأشياء التي تفضلها، الأنواع التي تفضلها، والأشياء التي تفضلها، وعند إجراء معاملة واحدة على الموقع، يقرأون بشكل ما تماماً عقلك ويتوقعون السلعة التالية التي تكون على وشك شرائها بشكل أكبر. بعض خوارزميات التوصية على يوتيوب وتيكتوك هو الدقة بما فيها الكفاية لإبقاء المستخدمين مرتبطين لساعات. سأتفاجأ إذا لم يقم أي مستخدم بإبلاغ عن جهل يوتيوب الذي نتج من التمرير والنقر/اللمس لما يقارب العشر دقائق.

هذا يؤدي إلى تحسين إشتراك العملاء، وتحسين تجربة العملاء، وزيادة الأرباح، والمزيد من المال للمنصة نفسها. يبني الإدمان على دقة وأداء الخوارزميات المتطورة للغاية.

هكذا بنت هذه العمالقة جمهورها.

عدد المشاركين الشهريين ليوتيوب، تيكتوك، إنستغرام وجوجل هو (المصدر):

  • جوجل: 29 مليار
  • يوتيوب: 22 مليار
  • إنستغرام: 1.4 مليار
  • TikTok: 1 مليار

وسر نجاحها: خوارزميات التوصية الرائعة.

أنواع خوارزميات التوصية

التصفية التعاونية (القائمة على المستخدم)

التصفية التعاونية القائمة على المستخدم هي تقنية توصية تفترض أن المستخدمين ذوي التفضيلات المتشابهة سيكون لديهم أذواق متشابهة. وهي تستخدم بيانات التفاعل بين المستخدم والعنصر لتحديد أوجه التشابه بين المستخدمين، وغالبًا ما تستخدم مقاييس مثل تشابه جيب التمام أو ارتباط بيرسون. تتنبأ هذه الطريقة بتقييمات المستخدم أو تفضيلاته استنادًا إلى التقييمات التي قدمها مستخدمون متشابهون.

ومع ذلك، يمكن أن تواجه هذه الطريقة تحديات، مثل مشكلة البداية الباردة للمستخدمين الجدد الذين لم يتفاعلوا مع النظام بعد، وقد تنشأ مشكلات قابلية التوسع عند التعامل مع عدد كبير من المستخدمين.

Python

 

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

def user_based_cf(ratings_matrix, user_id, k=5):
    similarities = cosine_similarity(ratings_matrix)
    user_similarities = similarities[user_id]
    similar_users = np.argsort(user_similarities)[::-1][1:k+1]
    
    recommendations = np.zeros(ratings_matrix.shape[1])
    for similar_user in similar_users:
        recommendations += ratings_matrix[similar_user]
    
    return recommendations / k

  • يستخدم تشابه جيب التمام لحساب أوجه التشابه بين المستخدمين
  • يجد المستخدمين الأكثر تشابهًا مع المستخدم المستهدف
  • يجمع تقييمات المستخدمين المتشابهين لتوليد توصيات
  • يعيد متوسط التقييم لكل عنصر من المستخدمين المتشابهين
  • تنفيذ بسيط يمكن تعديله أو توسيعه بسهولة

تصفية تعاونية (قائمة على العنصرقائم على العنصر)

ar
يفترض الفلترة التعاونية القائمة على البندات أن المستخدمين سيفضلون البندات المماثلة للآلئك التي أحبوا في الماضي. يحسب تشابه بين البندات بناءً على تقييمات المستخدمين أو التفاعلات. هذه الطريقة غالية التوسعة أكثر من الفلترة التعاونية القائمة على المستخدم، خصوصاً عندما يكون العديد من المستخدمين والبندات الأقل. يسمح بحساب تشابه البندات مسبقاً، مما يسرع الإقتراحات في الوقت الحقيقي. 

بينما يتعامل مع المستخدمين الجدد أفضل من الطرق القائمة على المستخدم، قد يواجه مشاكلاً مع البندات الجديدة التي ينقصها التقييمات الكافية. بالإضافة إلى ذلك، فإنها تُؤثر أقل بتغيرات تفضيلات المستخدمين مع مرور الوقت.

Python

 

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

def item_based_cf(ratings_matrix, item_id, k=5):
    similarities = cosine_similarity(ratings_matrix.T)
    item_similarities = similarities[item_id]
    similar_items = np.argsort(item_similarities)[::-1][1:k+1]
    
    recommendations = np.zeros(ratings_matrix.shape[0])
    for similar_item in similar_items:
        recommendations += ratings_matrix[:, similar_item]
    
    return recommendations / k

  • تحويل المصفوفة التقييمية لحساب تشابه بين البندات
  • يجد البندات الـ k الأكثر تشابهاً بالبند الهدف
  • تجميع تقييمات المستخدم للبندات المماثلة
  • ترجع معدل التقييم لكل مستخدم بناءً على البندات المماثلة
  • فعال للأنظمة التي تحوي المزيد من المستخدمين من البندات

تفكيك المصفوفة

تفكيك المصفوفة يقوم بتفكيك مصفوفة تفاعلات المستخدم والبند إلى مصفوفات أبعد الأبعاد، يفترض أن تفضيلات المستخدم وصفات البند يمكن أن تُمثّل بعوامل خفية. تتم استخدام تقنيات مثل التفكيك القيم الفريد (SVD) أو أقل الأقرب مرتبة (ALS) لهذا الغرض. 

هذه الطريقة يمكن أن تتعامل بكفاءة مع أكبر البيانات النابضة، وفي العادة توفر دقة أفضل مقارنة بطرق الفلترة التعاونية القائمة على الذاكرة. بالإضافة إلى ذلك، يمكن أن تتضمن تقنيات التجديد لمنع التعبير الزائد، مما يعزز قدرات النموذج على التعميم للبيانات غير المرئية

Python

 

import numpy as np

def matrix_factorization(R, P, Q, K, steps=5000, alpha=0.0002, beta=0.02):
    Q = Q.T
    for step in range(steps):
        for i in range(len(R)):
            for j in range(len(R[i])):
                if R[i][j] > 0:
                    eij = R[i][j] - np.dot(P[i,:], Q[:,j])
                    for k in range(K):
                        P[i][k] += alpha * (2 * eij * Q[k][j] - beta * P[i][k])
                        Q[k][j] += alpha * (2 * eij * P[i][k] - beta * Q[k][j])
        
        e = 0
        for i in range(len(R)):
            for j in range(len(R[i])):
                if R[i][j] > 0:
                    e += pow(R[i][j] - np.dot(P[i,:], Q[:,j]), 2)
                    for k in range(K):
                        e += (beta/2) * (pow(P[i][k], 2) + pow(Q[k][j], 2))
        if e < 0.001:
            break
    return P, Q.T

  • تطبيق خوارزمية التفكيك الأساسية للماتريكس
  • استخدام التنزيل التّصاعدي لتقليل الخطأ بين التقديرات المتوقعة والفعلية
  • تضمين التقويم لمنع التغلبة الزائد
  • تحديث تكراري للعوامل الخفية للمستخدمين والعناصر
  • توقف عندما يتناقص الخطأ تحت الحدود الأدنى أو تُصل إلى العدد الأقصى من الخطوات

فلترة المحتوى

فلترة المحتوى تقوم بإيفاء توصيات بناءً على ميزات العناصر وترجيات المستخدمين. يبني بروفايل لكل مستخدم وعنصر بناءً على مواصفاتهم. 

تستخدم تقنيات مثل TF-IDF (تردد الكلمة-المعدل الرجعي للمستند) لتحليل النص والتشابه الكوسايني للمطابقة. هذه الطريقة تحل مشكلة العنصر الجديد بشكل فعال، لأنها لا تعتمد على التفاعلات السابقة للمستخدمين. 

ورغم ذلك، قد تعاني من التخصص الزائد، مما يؤدي إلى نقص في تنوع توصياتها. إضافة إلى ذلك، يتطلب الاشتغال الفعال تصميم ميزات جيد لضمان أن مواصفات العناصر المهمة تُمسك بصورة دقيقة.

Python

 

import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

def content_based_filtering(item_descriptions, user_profile, k=5):
    vectorizer = TfidfVectorizer()
    item_vectors = vectorizer.fit_transform(item_descriptions)
    user_vector = vectorizer.transform([user_profile])
    
    similarities = cosine_similarity(user_vector, item_vectors)
    top_items = np.argsort(similarities[0])[::-1][:k]
    
    return top_items

  • استخدام TF-IDF لتحويل وصفات النص إلى متجهات رقمية
  • حساب التشابه الكوسايني بين بروفايل المستخدم ووصفات العناصر
  • إرجاع الـ k الأكثر شباهة بين بروفايل المستخدم
  • فعال للأنظمة التي تمتلك ميزات العناصر المحددة بشكل جيد
  • يمكن توسيعه بسهولة لتضمين أنواع متعددة من الميزات

نظام توصية هجين

تتكامل النظم التوصية التجانية المزيدة من تقنيتين أو أكثر من التقنيات المختلفة لتستفيد من قواتهم المختلفة. من خلال تكامل مناهج مختلفة، يمكن للأنظمة التجانية المزيدة تخفيض أعباء التقنيات المنفردة، مثل مشكلة البدء البارد. تتم تكامل معين من هذه التقنيات بواسطة طرق مختلفة، مثل التعامل الوزني، التحول المتناظر، المزيد أو المعاملات الوصفية العالية.

توفر الأنظمة التجانية المزيدة أكثر قوة ودراية من الأنظمة التجانية الواحدة. ومع ذلك، يتطلب تنفيذ فعال تحديد التوازين بشكل دقيق لتوازين المكونات وتضمن أداء أفضل.

Python

 

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity

def hybrid_recommender(ratings_matrix, content_matrix, user_id, alpha=0.5, k=5):
    cf_similarities = cosine_similarity(ratings_matrix)
    content_similarities = cosine_similarity(content_matrix)
    
    hybrid_similarities = alpha * cf_similarities + (1 - alpha) * content_similarities
    user_similarities = hybrid_similarities[user_id]
    
    similar_users = np.argsort(user_similarities)[::-1][1:k+1]
    
    recommendations = np.zeros(ratings_matrix.shape[1])
    for similar_user in similar_users:
        recommendations += ratings_matrix[similar_user]
    
    return recommendations / k

  • تركب التوصية التعاونية والتوصية المبنية على المحتوى
  • يستخدم تحقيق مجموعة وزنية مع ما يسمى بالفائض
  • يجد مساهمين متشابهين بناءاً على التشابه المزيد
  • ينتج توصيات من تقييمات مساهمين متشابهين
  • يتيح تحكم سهل في التوازين بين المنهجين CF ومبني على المحتوى

تشريح قيم الفرد الواحد (SVD)

تشريح قيم الفرد الواحد (SVD) هي تقنية توزيع المصفوفة التي تقوم بتفكيك المصفوفة إلى ثلاث مكونات: U، Σ، و V^T. في هذا التفكيك، تمثل U و V المتواليات الجانبية والخلفية، بينما تمثل Σ قيم الفرد الواحد.

يقلل SVD الأبعاد بمحافظة فقط أعلى k قيم الفرد الواحد، وهذا يساعد على كشف عوامل سريعة في التفاعلات المس

هذه الطريقة فعالة للتعامل مع المصفوفات الكبيرة والمتناثرة التي توجد عادةً في أنظمة التوصيات. بالإضافة إلى ذلك، توفر طريقة SVD توازنًا جيدًا بين الدقة والكفاءة الحسابية، مما يجعلها خيارًا شائعًا لتوليد التوصيات.

Python

 

import numpy as np
from scipy.sparse.linalg import svds

def svd_recommender(ratings_matrix, k=5):
    U, s, Vt = svds(ratings_matrix, k=k)
    
    sigma = np.diag(s)
    predicted_ratings = np.dot(np.dot(U, sigma), Vt)
    
    return predicted_ratings

  • يستخدم دالة Scipy’s <رمز svdلإجراء SVD المقطوع
  • يعيد بناء مصفوفة التصنيف باستخدام أعلى <رمز k القيم المفردة فقط
  • يعيد مصفوفة كثيفة من التقييمات المتوقعة لجميع أزواج المستخدم والعنصر
  • كفاءة في مصفوفات التقييم الكبيرة, مصفوفات تقييم متناثرة وكبيرة
  • يمكن دمجها بسهولة في نظام توصيات أكبر

تقنية تحليل الموتر

توسع تقنية تحليل الموتر من تحليل المصفوفات التقليدية إلى بيانات متعددة الأبعاد، مما يسمح بدمج المعلومات السياقية مثل الوقت والموقع في التوصيات. وهي تستخدم طرقًا مثل تحلل الموتر CP، الذي يحلل الموتر إلى مجموع موترين مكونين، مما يجسد التفاعلات المعقدة بين عوامل متعددة. يتطلب هذا النهج المزيد من البيانات والموارد الحاسوبية مقارنةً بالطرق ثنائية الأبعاد، حيث إنه يتعامل مع مصفوفات ذات أبعاد أعلى.

ومع ذلك، يمكن أن يوفر توصيات مخصصة للغاية ومدركة للسياق من خلال الاستفادة من الأبعاد الإضافية للبيانات. يسمح التعقيد المتزايد لهيكل البيانات بفهم أكثر دقة لتفضيلات المستخدم في سياقات مختلفة، مما يعزز دقة التوصيات بشكل عام.

Python

 

import numpy as np
import tensorly as tl
from tensorly.decomposition import parafac

def tensor_factorization_recommender(tensor, rank=10):
    factors = parafac(tensor, rank=rank)
    reconstructed_tensor = tl.kruskal_to_tensor(factors)
    return reconstructed_tensor

  • يستخدم مكتبة TensorLy لعمليات الموتر والتحلل
  • يطبق تحليل PARAFAC على موتر الإدخال
  • يعيد بناء الموتر من العوامل المفككة
  • يعيد بناء الموتر المعاد بناؤه كتوصيات
  • يمكنه التعامل مع البيانات متعددة الأبعاد (على سبيل المثال، سياق المستخدم-العنصر)

التصفية التعاونية العصبية

تجمع أنظمة التوصية القائمة على التعلم العميق بين تقنيات التصفية التعاونية والشبكات العصبية. يسمح هذا النهج بتعلم التفاعلات غير الخطية بين المستخدم والعنصر، وهو ما قد تواجهه طرق تحليل المصفوفات التقليدية. عادةً ما تستخدم أدوات توصيات التعلُّم العميق طبقات التضمين لتمثيل المستخدمين والعناصر في مساحة كثيفة منخفضة الأبعاد. يتيح ذلك سهولة تكامل الميزات الإضافية أو المعلومات الجانبية، مثل التركيبة السكانية للمستخدم أو أوصاف العناصر، لتعزيز أداء التوصيات.

عند التدريب على مجموعات بيانات كبيرة، يمكن للأنظمة القائمة على التعلّم العميق أن تتفوق في كثير من الأحيان على أساليب تحليل المصفوفات التقليدية من حيث الدقة. ومع ذلك، تأتي هذه الميزة على حساب زيادة التعقيد الحسابي والحاجة إلى كميات كبيرة من البيانات.

تتطلب أيضًا أدوات التوصية بالتعلم العميق ضبطًا دقيقًا للمعاملات الفائقة لتحقيق أفضل النتائج، مما يجعلها أكثر صعوبة في التنفيذ والصيانة مقارنةً بأساليب التصفية التعاونية الأبسط.

Python

 

import tensorflow as tf
from tensorflow.keras.layers import Input, Embedding, Flatten, Dense, Concatenate
from tensorflow.keras.models import Model

def neural_collaborative_filtering(num_users, num_items, embedding_size=100):
    user_input = Input(shape=(1,), dtype='int32', name='user_input')
    item_input = Input(shape=(1,), dtype='int32', name='item_input')

    user_embedding = Embedding(num_users, embedding_size, name='user_embedding')(user_input)
    item_embedding = Embedding(num_items, embedding_size, name='item_embedding')(item_input)

    user_vecs = Flatten()(user_embedding)
    item_vecs = Flatten()(item_embedding)

    concat = Concatenate()([user_vecs, item_vecs])
    dense1 = Dense(128, activation='relu')(concat)
    dense2 = Dense(64, activation='relu')(dense1)
    output = Dense(1, activation='sigmoid')(dense2)

    model = Model(inputs=[user_input, item_input], outputs=output)
    model.compile(optimizer='adam', loss='binary_crossentropy')

    return model

  • يستخدم TensorFlow وKeras لبناء نموذج شبكة عصبية
  • يُنشئ طبقات تضمين للمستخدمين والعناصر
  • يجمع بين تضمينات المستخدم والعناصر
  • يضيف طبقات كثيفة لتعلم التفاعلات غير الخطية
  • يعطيك نموذج متكامل جاهز للتعلم

دراسة حالة نتفليكس

بدأ رحلة خوارزمية توصيات نتفليكس بـ CineMatch في عام 2000، وهي خوارزمية التقارب التعاوني تستخدم تقييمات الأعضاء لتقدير مدى إستمتاع المستخدم بالفيلم. في عام 2006 ، بدأ مسابقة نتفليكس بمنحة 1 مليون دولار لتحدي علماء البيانات لإنشاء نموذج سيكون أفضل ب10% من CineMatch. ومن ثم تم تطبيق الخوارزمية الرابحة داخل نتفليكس الداخلية.

بدأ نتفليكس بتجميد المستخدمين وهناك تحول إلى بيانات التسجيل في عام 2007. وتم تعرض المشاهدين لتلك الخوارزميات التي تعمل بالتمكين التعلمي والتكتيكات التي تولد الاقتراحات في الوقت الحقيقي. وبتحسين الخوارزمية ، بدأ معظم المستخدمين بالانتقال إلى نتفليكس ببساطة بسبب فعالية الخوارزمية التوصياتية. تقريبًا 80% من المحتويات التي يشاهدونها على نتفليكس تم إقتراحها بواسطة الخوارزمية التوصياتية.

تقدير الشركة أنها توفر 1 بليون دولار سنويًا من المتبقاء المفقود بسبب فعالية الخوارزمية التوصياتية.

تستخدم نتفليكس تقنيات متقدمة للتعلم الآلي والتكتيكات بمجموعة تزيد عن 1300 تقسيم بناءاً على المعلومات الفرعية للأفلام التي يشاهدونها المستخدمون. هذا يسمح لهم بتوفير اقتراحات محسنة لمستخدميهم. ولكن نتفليكس بمجرد وقت قصير و

ببساطة، انتقلوا جميع البيانات إلى خدمات وسائط الإنترنت العامة (AWS)، بدءًا من عام 2008. واستغرقت عملية الانتقال الكاملة سنوات لتنتهي وانتهت في 2015. تبلغ نتفلix من الخفض بما يقارب 1 بليون دولار سنويًا باستخدام AWS. يتمت دعم AWS بالتعلم الآلي بشكل بني، وتستخدم نتفلix هذا الدعم بالكامل. تبلغ نتفلix الاستخدام بأكثر من 100 ألف سرور في AWS و1 ألف شريحة لكينيسيس لتقوم مع جمهورها العالمي بالزمن المنصرم 2022.

منذ عام 2015، بدأ نتفلix أيضًا في تقديم من إنتاجها الخاص، ما يزيد عن آلاف الأفلام والبرامج في تنوع واسع من الأنماط. وتعتمد نماذج النتفلix التوصية على التعلم الآلي بشكل كبير وتقوم بعدة أختبارات A/B للمستخدمين باليوم. يتجاوز عدد مستخدمين نتفلix الاشتراك اليوم 380 مليون نسمة.

بينما يواجه نتفلix تنافرًا قاسيًا بالفعل، خاصة من قبل Disney+ الذي اشترك بمجموعة Marvel وStar Wars، تتوجه شركة إلى تحقيق 500 مليون مستخدم بحلول عام 2025.

العام الماضي حقق نتفلix 31 بليون دولار من الدخل.

أجزاء رئيسية لنظم التوصية الحالية لها تشمل:

  1. التعلم التعاملي: وفقًا للسلوك المتغير للمستخدمين، تغير نتفلix المحتويات على الشاشة في الوقت الحالي. لذا، يعمل النظام في حالة تغير مستمر ويتغير وفقًا بتفاعليات المس
  2. الشبكات العصبية العميقة: بسبب حجم البيانات (أكثر من 15000 برنامجًا وأقرب لـ300 مليون مستخدم), لا يمكن تطبيق تقنيات المعلومات المتقدمة الاعتيادية. يستخدم بشكل كبير التعلم العميق وهو يستخدم تكنولوجيات نيفيديا. (راود قائمة ببرنامج يستخدم أحدث تكنولوجيات نيفيديا من مجموعة ميرلين).
  3. تخزين المصفوفة: من خلال قيامه بتفكيك المصفوفات الخالية جدًا والضخمة بالتشكيل الأولي للقيم (SVD) تقدير نتائج نتاج نتاج تأثير كل مستخدم في بعض الأفراد والبرامج.
  4. التعلم الجماعي: توالي مزيج أذكياء من الخوارزميات الملغمة أعلاه تقوم بتكييف أوشياء التوصية بشكل مباشر لكي لا يرى شاشة متشابهة لأي مستخدمين. هذا التخصيص هو ما يولد الكثير من المال ويحافظ نيتفليكس على أعلى كل منتجات البث المباشر عبر الإنترنت.

وكل هذه النماذج والتنظيمات تشتغل من مئات الآلاف مرة يوميًا لمئات الآلاف من المستخدمين.

تكنولوجيا التعلم العميق الحديث

ومع هذا الحجم، لا يمكن للحاسبة الواحدة أن تقوم بتشغيل هذه النماذج التقنية بمفردها. لهذا تشتغل شركة الوعن (AWS) بالتكنولوجيات التقنية المعلوماتية بشكل موزع عبر آلاف الآلات.

تم إنشاء نظم توصية حديثة تستخدم التعلم العميق بشكل كبير. تشمل هذه النظم إستخدام الوحدات الصغيرة للمعالجات الجيدة للتعلم العميق والتي تساعد في تسريع إجراء الخوارزميات. وهناك المعالجات الجيدة للتعلم العميق التي تساعد في تحسين أداء النظم التوصية.

وهناك النظم التوصية الحديثة التي تستخدم التعلم العميق بشكل كبير. وتشمل هذه النظم إستخدام الوحدات الصغيرة للمعالجات الجيدة للتعلم العميق والتي تساعد في تسريع إجراء الخوارزميات.

بعض من منتجات نيوفايكا الحديثة لـ “ميرلين” تشمل:

نظم توصية نيوفايكا

(من إعلان نيوفايكا ميرلين: إطار تطبيق لنظم التوصية العميقة)

تتوفر كمشروع مفتوح المصدر:

NVTabular

NVTabular هو مكتب لتنمية الميزات والمعالجة المتقدمة التي صممت لتتعامل بسرعة وبسهولة مع قاعدات بيانات بحجم التيرابايت. وهي من المناسبة لأنظمة التوصية الشبكية، التي تتطلب طريقة قابلة للتكامل لمعالجة المعلومات الإضافية، مثل بيانات المستخدم والعنصر والمعلومات السياسية. وتوفر تعالي للتواريخ لتبسيط البرمجيات وتسرع الحوسبة في الGPU باستخدام مكتبة RAPIDS cuDF. باستخدام NVTabular، ومن خلال 10-20 سطراً من الوسيط العالي للبرمجيات، يمكنك أن تأسس قناة للتكنولوجيا المعدنية وتحقق بتعقيد بحوالي 10 مرات بالمقارنة بالأساليب الموجهة للCPU المساعدة بدون قيود لحجم القاعدة البياناتية، سواء كان الGPU أو الCPU.

HugeCTR

HugeCTR هي إطار جهاز الGPU الكافي للتعلم التعقيدي لنماذج التوصية، التي تهدف إلى الأداء العالي والسهولة الاستخدام. إنها تدعم كلاً من النماذج العميقة البسيطة وأيضًا نماذج مزدوجة متقدمة مثالية مثل W&D، Deep Cross Network و DeepFM. نحن أيضًا نعمل على تمكين DLRM مع HugeCTR. يمكن تحديد التفاصيل والمتغيرات الفرعية بسهولة في تقاليد الJSON، مما يسمح للاختيار بسرعة من مجموعة واسعة من النماذج الشائعة.

TensorRT وخدمة Triton للتخمين

تعتبر NVIDIA TensorRT معرف للتشغيل التقني ذي الأداء العالي للتخمينات العميقة. وهو يشمل منازع تحسين التخمينات العميقة والتشغيل الفترة النهائية التي توفر مناسبة التخمينات العميقة والأعلى من المعاملات. يمكن لتensorRT أن يقبل شبكات الخوارزميات العصبية الم entrenadas من جميع أنظمة الخوارزميات العصبية العميقة من خلال واجهة مشتركة، وهي تنمية الشبكة العصبية المفتوحة (ONNX).

يقدم NVIDIA Triton Inference Server حلول تشغيل التخمينات في السحابة متكاملة لأوانيديا الGPUs. يقدم الخوادم الخدمة للتخمينات عبر نقطة نهاية HTTP أو gRPC، مما يسمح للعملاء البعيدين بطلب التخمينات لأي نموذج يديره الخوادم. يمكن لتريتون سيرفر تخمينات المواصفات التوجيهية بواسطة عدة خلالف، بما في ذلك TensorFlow و PyTorch (TorchScript) والتشغيل الفترة النهائية ONNX والتشغيل الفترة النهائية TensorRT.

مثال الشيء

يظهر في المثال التالي عملية التحضير الحقيقية المطلوبة لتحويل قاعدة البيانات للإعلانات التجارية لـ1-TB Criteo وهي تم تنفيذها مع حوالي عشر أخطوات من البرمجيات بواسطة NVTabular. بإختصار، تم تعيين الأعمدات الرقمية والتصنيفية. من ثم، تم تعيين ترتيبية NVTabular وتم تقديم مجموعة من الملفات التدريبية والمحاولين. بعد ذلك، تم إضافة عمليات التحضير الى الترتيبية، وتم تخزين البيانات على القرص. في مقارنة، قد يكون لأسلوب بناء المعالجة المختصر مثل المعالجة ال

Python

 

import nvtabular as nvt
import glob
 
cont_names = ["I"+str(x) for x in range(1, 14)] # specify continuous feature names
cat_names = ["C"+str(x) for x in range(1, 27)] # specify categorical feature names
label_names = ["label"] # specify target feature
columns = label_names + cat_names + cont_names # all feature names
 
# تعيين الجوارك
proc = nvt.Worfklow(cat_names=cat_names, cont_names=cont_names, label_name=label_names)
 
# إنشاء مجموعات بيانات من الملفات المدخلة
train_files = glob.glob("./dataset/train/*.parquet")
valid_files = glob.glob("./dataset/valid/*.parquet")
 
train_dataset = nvt.dataset(train_files, gpu_memory_frac=0.1)
valid_dataset = nvt.dataset(valid_files, gpu_memory_frac=0.1)
 
# إضافة عمليات هندسة الخصائص والتحليل المبدأي إلى الجوارك
proc.add_cont_feature([nvt.ops.ZeroFill(), nvt.ops.LogOp()])
proc.add_cont_preprocess(nvt.ops.Normalize())
proc.add_cat_preprocess(nvt.ops.Categorify(use_frequency=True, freq_threshold=15))
 
# حاسبة الإحصاءات وتحويل البيانات وتصديرها على القردة
proc.apply(train_dataset, shuffle=True, output_path="./processed_data/train", num_out_files=len(train_files))
proc.apply(valid_dataset, shuffle=False, output_path="./processed_data/valid", num_out_files=len(valid_files))

يمكن العثور على تقنية التكوين الكاملة في المشاركة العلمي التالي على GitHub:

الخلاصة

لقد تم تطور الأنظمة التوصية بشكل كبير.

من التعبير بالنماذج الإحصائية البسيطة وتصفية المحتويات وتصفية التعاونية ، ونحن الآن نمتلك شبكات العمل العميقة والعقود الرقمية وتعبير المصادر وتوسعتها الى أبعاد أكبر.

أحسن أنظمة التوصية المربحة للتسجيل المباشر هي NVIDIA ويجرون جميع خوارزمياتهم التعلمية على السحابة مع AWS.

يستخدم الأنظمة التوصية في كل مكان من Google إلى Microsoft إلى Amazon إلى Flipkart. إنها جزء حسن الشركات الحديثة ولا شركة على الإنترنت تعمل دون استخدامها بأي شكل.

هناك العديد من الشركات اليوم التي تقدم أنظمة التوصية الخاصة على الإنترنت.

بعض أفضلها يشمل:

  1. Netflix: معروف بجهازه المتقدم للتوصية الذي يتناول سلوك المشاهدين التابعين للأفلام والبرامج التلفازية التي تقترح
  2. Amazon: يستخدم جهازه القوي للتوصية الذي يقترح منتجات بسبب تاريخ شراء المستخدمين وسلوكهم
  3. Spotify: يستخدم نظام توصية يصنع قوالب الموسيقى وتوصيات الأغاني بناءً على تاريخ الاستماع للمستخدم
  4. YouTube: يستخدم محرك توصية لإقتراح الفيديوهات بناءً على النمطين الإعجابين للمستخدمين وتفضيلاتهم
  5. LinkedIn: يوصي بالوظائف، والاتصالات، والمحتوى بناءً على البروفايلات الشخصية وتاريخهم المهني
  6. Zillow: يقترح العقارات الملكية وفقاً لتفضيلات المستخدم وتاريخ البحث
  7. Airbnb: يوفر توصيات للمأواخذ بناءً على تاريخ السفر وتفضيلات المستخدم
  8. Uber: يوصي بخيارات الرحلة بناءً على تفضيلات المستخدم والرحلات السابقة
  9. IBM Corporation: قائد في سوق محركات التوصية، يقدم مجموعة من حلول الذكاء الاصطناعي
  10. Google LLC (Alphabet Inc.): يوفر نظم التوصية عبر منصاتها، باستخدام تحليلات البيانات الواسعة

نأمل أن يكون يوماً ما شركتك واحدة من هذه القائمة النخبية. وكل التحية لأعمالك.

غض النظر عن القطاع الذي تعمل فيه، إذا كان لديك وجود إلكتروني، فإنك بحاجة إلى استخدام نظم التوصية بطريقة واحدة أو أخرى. استمر في إكتشاف هذا القسم، وإذا كان لديك خبرة ممتازة، فلا تتردد في أنك ستكون مطلوباً بشدة.

لا تتوقف عن التعلم. إبقى جاهزاً. دائماً تؤمن بإمكانيةك التنمية اللانهائية. مستقبلك في أيديك. قم بجعلها مذهلة!

المراجع

  1. نظام التوصية – ويكيبيديا
  2. ما هي نظم التوصية؟ – GeeksforGeeks
  3. أنواع نظم التوصية: كيف تعمل وأحالاتها (almabetter.com)
  4. نظم التوصية والتعلم الماكين (itransition.com)
  5. نظم التوصية في بينات 101 (kaggle.com)
  6. تجزئة عن ألغوريمات نظم التوصية – KDnuggets

Source:
https://dzone.com/articles/a-deep-dive-into-recommendation-algorithms-with-ne