Ein Tiefergang in die Empfehlungsalgorithmen mit Netflix Fallstudie und NVIDIA Deep Learning Technologie

Was sind Empfehlungsalgorithmen?

Empfehlungssysteme sind der Geheimtipp hinter jeder Internettransaktion, egal ob Amazon, Netflix, Flipkart, YouTube, TikTok, selbst LinkedIn, Facebook, X(Twitter), Snapchat, Medium, Substack, HackerNoon usw. – fast jedes Portal und fast jeder Inhaltscurator oder Produktmarktplatz im Internet macht seinen großen Geldbeutel mit Hilfe von Empfehlungsalgorithmen.

Einfach gesagt, baut ein Empfehlungsalgorithmus ein Modell Ihrer Lieblings-, Negativ- und Favoriten, Ihrer Vorlieben, Genres und Waren auf und wenn auf dem Site eine Transaktion durchgeführt wird, lesen sie praktisch Ihren Gedanken und predigen die nächste Waren, die Sie am ehesten kaufen werden. Einige der Empfehlungsalgorithmen auf YouTube und TikTok sind so genau, dass sie die Nutzer für Stunden hinhalten können. Ich würde mich wundern, wenn es auch nur einen Leser gäbe, der keine YouTube-Schwanengesang-Session berichtet hätte, die nur aus Scrollen und Klicken/Tippen für etwa zehn Minuten hervorging.

Dadurch ergeben sich bessere Kundenbindung, eine bessere Kunden-Erfahrung, erhöhter Umsatz und mehr Geld für die Plattform selbst. Die Abhängigkeit wird auf der Genauigkeit und der beunruhigenden Leistung dieser ultras optimize Algorithmen aufgebaut.

So bauen diese Giganten ihre Zuschauer auf.

Die monatlichen Besucherzahlen von YouTube, TikTok, Instagram und Facebook sind (Quelle):

  • Facebook: 2,9 Milliarden
  • YouTube: 2,2 Milliarden
  • Instagram: 1,4 Milliarden
  • TikTok: 1 Milliarde

Und der Geheimtipp zu ihrem Erfolg: fantastische Empfehlungsalgorithmen.

Arten von Empfehlungsalgorithmen

Kollaboratives Filtern (Benutzerbasiert)

Benutzerbasiertes kollaboratives Filtern ist eine Empfehlungstechnik, die davon ausgeht, dass Benutzer mit ähnlichen Vorlieben auch ähnliche Geschmäcker haben. Es nutzt die Daten über die Interaktion von Benutzern mit Inhalten, um Ähnlichkeiten zwischen Benutzern zu erkennen. Dies geschieht oft mit Hilfe von Maßen wie Kosinussimilitätskoeffizient oder Pearson-Korrelation. Die Methode prognostiziert die Bewertungen oder Vorlieben eines Benutzers auf der Basis der Bewertungen, die ähnliche Benutzer gegeben haben.

Allerdings kann es mit Herausforderungen konfrontiert sein, wie beispielsweise das Problem des kalten Starts für neue Benutzer, die noch nicht mit dem System interagiert haben, und Skalierungsprobleme können auftreten, wenn man mit vielen Benutzern befasst ist.

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

  • Verwendet den Kosinussimilitätskoeffizienten, um Benutzerähnlichkeiten zu berechnen
  • Findet die k ähnlichsten Benutzer zum Zielbenutzer
  • Kumuliert die Bewertungen von ähnlichen Benutzern, um Empfehlungen zu generieren
  • Gibt die Durchschnittsbewertung für jedes Element von ähnlichen Benutzern zurück
  • Einfache Implementierung, die leicht verändert oder erweitert werden kann

Kollaboratives Filtern (Inhaltsbasiert)

Bei der objektbasierten kollaborativen Filterung wird davon ausgegangen, dass die Nutzer Objekte bevorzugen, die denen ähnlich sind, die ihnen in der Vergangenheit gefallen haben. Sie berechnet die Ähnlichkeit zwischen Elementen auf der Grundlage von Benutzerbewertungen oder Interaktionen. Dieser Ansatz ist oft besser skalierbar als die benutzerbasierte kollaborative Filterung, insbesondere wenn es viele Benutzer und weniger Elemente gibt. Er ermöglicht die Vorberechnung von Ähnlichkeiten zwischen Elementen, was zu schnelleren Echtzeitempfehlungen führen kann.

Die Methode kommt zwar besser mit neuen Benutzern zurecht als benutzerbasierte Methoden, hat aber möglicherweise Probleme mit neuen Artikeln, die nicht ausreichend bewertet wurden. Außerdem wird es weniger von Änderungen der Benutzerpräferenzen im Laufe der Zeit beeinflusst.

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

  • Transponiert die Bewertungsmatrix zur Berechnung der Ähnlichkeiten zwischen ObjektenItem-Ähnlichkeiten
  • Findet die k ähnlichsten Items zum Ziel-Item
  • Zusammenfassen der Nutzer-Bewertungen für ähnliche Items
  • Gibt die durchschnittliche Bewertung für jeden Nutzer auf der Grundlage ähnlicher Items zurück
  • Effizient für Systeme mit mehr Nutzern als Items

Matrixfaktorisierung

Die Matrixfaktorisierung zerlegt die Nutzer-Item-Interaktionsmatrix in niederdimensionale Matrizen, Dabei wird davon ausgegangen, dass die Präferenzen der Nutzer und die Eigenschaften der Items durch latente Faktoren dargestellt werden können. Techniken wie die Singular Value Decomposition (SVD) oder Alternating Least Squares (ALS) werden zu diesem Zweck häufig eingesetzt.

Dieser Ansatz kann effizient mit großen, spärlichen Datensätzen umgehen und bietet oft eine bessere Genauigkeit im Vergleich zu speicherbasierten kollaborativen Filtermethoden. Außerdem können Regularisierungstechniken eingesetzt werden, um eine Überanpassung zu verhindern und die Generalisierung des Modells auf ungesehene Daten zu verbessern.

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

  • Implementiert einen grundlegenden Matrixfaktorisierungsalgorithmus
  • Verwendet Gradientenabstieg, um den Fehler zwischen vorhergesagter und tatsächlicher Bewertung zu minimieren
  • Integriert Regularisierung, um eine Überanpassung zu verhindern
  • Aktualisiert iterativ latente Faktoren für Benutzer und Artikel
  • Hält an, wenn der Fehler unter einen Schwellenwert fällt oder maximale Schritte erreicht sind

InhaltInhaltsbasierte Filterung

Die inhaltsbasierte Filterung empfiehlt Artikel auf der Grundlage ihrer Merkmale und Benutzerpräferenzen. Es wird ein Profil für jeden Benutzer und jedes Objekt auf der Grundlage seiner Eigenschaften erstellt.

Gemeinsam werden Techniken wie TF-IDF (Term Frequency-Inverse Document Frequency) für die Textanalyse und Cosinus-Ähnlichkeit für das Matching eingesetzt. Mit diesem Ansatz lässt sich das Problem der neuen Elemente wirksam angehen, da er nicht auf vorherige Benutzerinteraktionen angewiesen ist.

Es kann jedoch zu einer Überspezialisierung kommen, was zu einer mangelnden Vielfalt der Empfehlungen führt. Darüber hinaus erfordert eine effektive Implementierung ein gutes Feature-Engineering, um sicherzustellen, dass die relevanten Merkmale der Objekte genau erfasst werden.

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

  • Verwendet TF-IDF, um Textbeschreibungen in numerische Vektoren umzuwandeln
  • Berechnet die Cosinus-Ähnlichkeit zwischen Benutzerprofil und Artikelbeschreibungen
  • Gibt die k Artikel zurück, die dem Benutzerprofil am ähnlichsten sind
  • Effizient für Systeme mit gut definierten Artikelmerkmalen
  • Kann leicht auf mehrere Merkmalstypen erweitert werden

Hybrides Empfehlungssystem

Hybride Empfehlungssysteme kombinieren zwei oder mehr Empfehlungstechniken, um deren jeweilige Stärken zu nutzen. Durch die Integration mehrerer Ansätze können hybride Systeme die Schwächen einzelner Methoden wie das cold-start Problem abmildern. Verbreitete Kombinationen schließen zusammen kollaborative und inhaltbasierte Filterung ein. Für die Kombination dieser Techniken werden verschiedene Methoden verwendet, wie gewichtete Summen, Wechsel, gemischte oder metaebene Ansätze.

Hybride Systeme liefern oft robuster und präzisere Empfehlungen als einzelne Ansatzsysteme. Allerdings erfordert eine effektive Implementierung sorgfältiges Abstimmung, um die verschiedenen Komponenten zu balancieren und eine optimale Leistung zu gewährleisten.

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

  • Kombiniert kollaboratives Filtern und inhaltbasierte Ähnlichkeiten
  • Verwendet einen gewichteten Summenansatz mit dem Parameter alpha
  • Findet Nutzer mit hybridem Ähnlichkeit auf
  • Generiert Empfehlungen aus den Bewertungen von ähnlichen Nutzern
  • Erlaubt eine einfache Justierung des Gleichgewichts zwischen CF und inhaltbasierten Ansätzen

Singuläre Wertzerlegung (SVD)

Singuläre Wertzerlegung (SVD) ist eine Matrixzerlegungstechnik, die eine Matrix in drei Komponenten aufteilt: U, Σ und V^T. In dieser Zerlegung repräsentieren U und V die linken bzw. rechten singulären Vektoren, während Σ die singulären Werte enthält.

SVD reduziert die Dimensionalität, indem nur die top k singulären Werte beibehalten werden, was hilft, latente Faktoren in den Nutzereingaben zu entdecken.

Diese Methode ist effizient im Umgang mit großen, spärlichen Matrizen, wie sie in Empfehlungssystemen häufig vorkommen. Außerdem bietet SVD ein gutes Gleichgewicht zwischen Genauigkeit und Berechnungseffizienz, was sie zu einer beliebten Wahl für die Erstellung von Empfehlungen macht.

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

  • Verwendet die Funktion svds von scipy, um eine verkürzte SVD durchzuführen
  • Rekonstruiert die Bewertungsmatrix, indem nur die obersten k Singulärwerte verwendet werden
  • Ergibt eine dichte Matrix von vorhergesagten Bewertungen für alle Benutzer-Element-Paare
  • Effizient für große, spärliche Bewertungsmatrizen
  • Kann leicht in ein größeres Empfehlungssystem integriert werden

Tensor-Faktorisierung

Die Technik der Tensor-Faktorisierung erweitert die traditionelle Matrix-Faktorisierung auf mehrdimensionale Daten und ermöglicht die Einbeziehung von Kontextinformationen wie Zeit und Ort in Empfehlungen. Dabei kommen Methoden wie die CP-Zerlegung zum Einsatz, bei der ein Tensor in eine Summe von Komponententensoren zerlegt wird, wodurch komplexe Wechselwirkungen zwischen mehreren Faktoren erfasst werden. Dieser Ansatz erfordert im Vergleich zu zweidimensionalen Methoden mehr Daten und Rechenressourcen, da er mit höherdimensionalen Arrays arbeitet.

Es kann jedoch hochgradig personalisierte und kontextbezogene Empfehlungen liefern, indem es die zusätzlichen Datendimensionen nutzt. Die erhöhte Komplexität der Datenstruktur ermöglicht ein differenzierteres Verständnis der Nutzerpräferenzen in verschiedenen Kontexten, was die allgemeine Empfehlungsgenauigkeit erhöht.

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

  • Verwendet die TensorLy-Bibliothek für Tensoroperationen und -zerlegung
  • Wendet PARAFAC-Zerlegung auf den Eingabetensor an
  • Wiederherstellung des Tensors aus den zerlegten Faktoren
  • Gibt den wiederhergestellten Tensor als Empfehlungen zurück
  • Kann mehrdimensionale Daten verarbeiten (z.B., Nutzer-Artikel-Kontext)

Neuronale Kooperatives Filtern

Tiefe Lernsysteme basierend auf den Empfehlungssystemen kombinieren kooperative Filterverfahren mit neuronalen Netzwerken. Dieser Ansatz ermöglicht die Lernung nichtlinearer Nutzer-Artikel-Interaktionen, die traditionelle Matrixfaktorisierungsmethoden zu tun mag. Tiefe Lernempfehlungssysteme verwenden typischerweise Embedding-Schichten, um Nutzer und Artikel in einem dichten, niedrigdimensionalen Raum zu repräsentieren. Dies ermöglicht die einfache Integration zusätzlicher Merkmale oder Nebeninformationen, wie z.B. Nutzerdemografie oder Artikelbeschreibungen, um die Empfehlungsleistung zu verbessern.

Wenn auf großen Datenmengen trainiert, können tiefe Lernsysteme häufig die Genauigkeit traditioneller Matrixfaktorisierungsmethoden übersteigen. Dieser Vorteil kommt jedoch mit der Erhöhung der Rechenkomplexität und dem Bedarf an großen Datenmengen zu einem Preis.

Tiefe Lernempfehlungssysteme erfordern auch sorgfältige Hyperparameter-Tuning, um optimale Ergebnisse zu erzielen, was sie im Vergleich zu einfachereren kooperativen Filterverfahren schwieriger zu implementieren und zu warten macht.

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

  • VerwendetTensorFlowund Keras, um ein neuronales Netzmodell aufzubauen
  • Erstellt Embedding-Schichten für Nutzer und Artikel
  • Konkateniert Nutzer- und Artikel-Embeddings
  • Fügt dichten Schichten hinzu, um nichtlineare Interaktionen zu lernen
  • Gibt ein kompiliertes Modell zurück, das für das Training bereit ist

Die Fallstudie von Netflix

Die Entwicklung des Netflix-Empfehlungsalgorithmus begann im Jahr 2000 mit CineMatch, einem Algorithmus zur kollaborativen Filterung, der anhand der Bewertungen der Mitglieder schätzte, wie sehr ein Nutzer einen Film mögen würde. Im Jahr 2006 wurde der Netflix-Preis in Höhe von 1 Million USD ausgeschrieben, um Datenwissenschaftler herauszufordern, ein Modell zu entwickeln, das CineMatch um 10 % übertrifft. Der siegreiche Algorithmus wurde dann in die internen Daten von Netflix implementiert.

Netflix begann bald, Nutzer zu akkumulieren, und im Jahr 2007 erfolgte eine Umstellung auf Streaming-Daten. Die Zuschauer wurden mit Reinforcement-Learning-Algorithmen und Clustering-Algorithmen konfrontiert, die Vorschläge in Echtzeit generierten. Mit der Verbesserung des Algorithmus wechselten immer mehr Nutzer zu Netflix, einfach aufgrund der Wirksamkeit des Empfehlungsalgorithmus. Fast 80 % der auf Netflix angesehenen Inhalte werden vom Empfehlungsalgorithmus vorgeschlagen.

Das Unternehmen schätzt, dass es aufgrund der Effektivität des Empfehlungsalgorithmus jährlich 1 Milliarde an verlorenen Nutzern einspart.

Netflix verwendet fortschrittliche Techniken des maschinellen Lernens und Clustering mit einem System von über 1300 Clustern, die auf den Metadaten der Filme basieren, die die Nutzer ansehen. Auf diese Weise können sie ihren Nutzern hochgradig optimierte Vorschläge unterbreiten. Doch schon bald stieß Netflix auf ein Problem: die Skalierung. Als die Zahl der monatlichen Nutzer in die Hunderte von Millionen und die Gesamtzahl der Nutzer auf über 200 Millionen stieg, entschied sich Netflix für Cloud Computing.

Einfach ausgedrückt, wurden ab 2008 alle Daten zu Amazon Web Services (AWS) migriert. Der gesamte Übergangsprozess dauerte Jahre und wurde 2015 abgeschlossen. Berichten zufolge spart Netflix mit AWS 1 Milliarde pro Jahr. AWS bietet auch integrierte Unterstützung für maschinelles Lernen, die Netflix in vollem Umfang nutzt. Berichten zufolge nutzte Netflix im Jahr 2022 über 100.000 AWS-Server und 1.000 Kinesis-Shards für sein globales Publikum.

Seit 2015 bietet Netflix auch eigene Produktionen an, über Tausende von Filmen und Shows in einer Vielzahl von Formaten. Die Empfehlungsalgorithmen von Netflix sind hochgradig automatisiert und führen täglich Tausende von A/B-Tests für die Nutzer durch. Heute hat Netflix mehr als 280 Millionen Abonnenten.

Während Netflix jetzt mit starker Konkurrenz konfrontiert ist, insbesondere von Disney+, das die Marvel- und Star Wars-Franchise erworben hat, will das Unternehmen bis 2025 500 Millionen Abonnenten erreichen.

Im vergangenen Jahr erwirtschaftete Netflix satte 31 Milliarden Umsatz.

Die wichtigsten Bestandteile des aktuellen Empfehlungssystems sind:

  1. Reinforcement Learning: Je nach Nutzerverhalten ändert Netflix die Inhalte auf dem Bildschirm in Echtzeit. Das System ist also ständig in Bewegung und ändert sich je nach den Interaktionen des Nutzers.
  2. Tiefe neuronale Netze: Aufgrund des Umfangs der Daten (über 15.000 Sendungen und fast 300 Millionen Nutzer) sind standardmäßige ML-Techniken nicht einfach anzuwenden. Deep Learning wird ausgiebig eingesetzt, wobei die Technologie von NVIDIA verwendet wird. (Am Ende dieses Artikels finden Sie ein Programm, das die neueste Merlin Deep Learning-Technologie von NVIDIA verwendet).
  3. Matrixfaktorisierung: Durch die effektive Durchführung der Singular Value Decomposition (SVD) auf sehr dünn besiedelten und sehr großen Matrizen schätzt Netflix die Bedeutung und die Anziehungskraft jedes Nutzers für bestimmte Genres und Sendungen.
  4. Ensemble-Lernen: Durch geschickte Kombinationen der oben genannten Algorithmen werden die Empfehlungen im laufenden Betrieb angepasst, so dass keine zwei Nutzer den gleichen Bildschirm sehen. Diese Personalisierung bringt das große Geld und hält Netflix an der Spitze aller OTT-Plattformen.

Und all diese Modelle und Optimierungen laufen Hunderttausende Male am Tag für Hunderttausende von Nutzern.

Moderne Deep Learning-Technologie

Bei solchen Größenordnungen kann kein einzelner Computer diese ML-Modelle allein ausführen. Deshalb führt AWS ML-Algorithmen verteilt auf Tausenden von Computern aus.

NVIDIA hat kürzlich mehrere Produkte veröffentlicht, die Empfehlungssysteme in großem Maßstab ermöglichen. NVIDIAs GPU-Cluster spielen auch eine große Rolle bei der Ausführung von ML-Algorithmen. NVIDIA hat kürzlich Merlin veröffentlicht, einen hochleistungsfähigen Empfehlungsalgorithmus, der für die Ausführung auf Tausenden von Rechnern optimiert ist und hervorragende Ergebnisse liefert. Dies war vielleicht nur eine Frage der Zeit, da die Größe der Datensätze weit über das hinausgeht, was einzelne Computer verarbeiten können.

Moderne Empfehlungssysteme nutzen Deep Learning in großem Umfang. Als Teil von DL werden GPU/TPU-Computing-Systeme ausgiebig genutzt, um die Berechnungen zu beschleunigen.

Zu den jüngsten Angeboten von NVIDIA für Merlin gehören:

NVIDIA Recommender Systems

(Von Announcing NVIDIA Merlin: An Application Framework for Deep Recommender Systems)

Erhältlich als Open-Source-Projekt:

NVTabular

NVTabular ist eine Bibliothek für das Feature-Engineering und die Vorverarbeitung, die für die schnelle und einfache Bearbeitung von Terabyte großen Datensätzen entwickelt wurde. Sie eignet sich besonders für Empfehlungssysteme, die eine skalierbare Möglichkeit zur Verarbeitung zusätzlicher Informationen wie Benutzer- und Artikel-Metadaten sowie kontextbezogener Informationen benötigen. Es bietet eine High-Level-Abstraktion zur Vereinfachung des Codes und beschleunigt die Berechnungen auf dem Grafikprozessor mit Hilfe der RAPIDS cuDF-Bibliothek. Mit NVTabular können Sie mit nur 10-20 Zeilen High-Level-API-Code eine Data-Engineering-Pipeline einrichten und eine bis zu 10-fache Beschleunigung im Vergleich zu optimierten CPU-basierten Ansätzen erreichen, ohne dass die Größe des Datensatzes eingeschränkt wird, unabhängig von der GPU/CPU-Speicherkapazität.

HugeCTR

HugeCTR ist ein hocheffizientes GPU-Framework, das für das Training von Empfehlungsmodellen entwickelt wurde und sowohl auf hohe Leistung als auch auf Benutzerfreundlichkeit abzielt. Es unterstützt sowohl einfache tiefe Modelle als auch moderne hybride Modelle wie W&D, Deep Cross Network und DeepFM. Wir arbeiten auch daran, DLRM mit HugeCTR zu ermöglichen. Die Modelldetails und Hyperparameter können einfach im JSON-Format spezifiziert werden, was eine schnelle Auswahl aus einer Reihe gängiger Modelle ermöglicht.

TensorRT und Triton Server for Inference

NVIDIA TensorRT ist ein SDK für hochleistungsfähige DL-Inferenz. Es enthält einen DL-Inferenz-Optimierer und eine Laufzeit, die niedrige Latenz und hohen Durchsatz für Inferenzanwendungen liefert. TensorRT kann trainierte neuronale Netze von allen DL-Frameworks über eine gemeinsame Schnittstelle, das Open Neural Network Exchange Format (ONNX), akzeptieren.

NVIDIA Triton Inference Server bietet eine für NVIDIA GPUs optimierte Cloud-Inferenzlösung. Der Server stellt einen Inferenzdienst über einen HTTP- oder gRPC-Endpunkt bereit, der es Remote-Clients ermöglicht, Inferenzen für jedes vom Server verwaltete Modell anzufordern. Triton Server kann DL-Empfehlungsmodelle mit verschiedenen Backends bedienen, darunter TensorFlow, PyTorch (TorchScript), ONNX Runtime und TensorRT Runtime.

Codebeispiel

Das folgende Codebeispiel zeigt einen tatsächlichen Vorverarbeitungs-Workflow, der für die Umwandlung des 1-TB Criteo Ads-Datensatzes erforderlich ist und mit nur einem Dutzend Codezeilen unter Verwendung von NVTabular implementiert wurde. Kurz gesagt, es werden numerische und kategorische Spalten angegeben. Anschließend wird ein NVTabular-Workflow definiert und ein Satz von Trainings- und Validierungsdateien bereitgestellt. Dann werden dem Workflow Vorverarbeitungsoperationen hinzugefügt, und die Daten werden auf der Festplatte gespeichert. Im Vergleich dazu können benutzerdefinierte Verarbeitungscodes, wie z. B. das NumPy-basierte data util in der DLRM-Implementierung von Facebook, 500-1000 Codezeilen für dieselbe Pipeline umfassen.

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
 
# initialize Workflow
proc = nvt.Worfklow(cat_names=cat_names, cont_names=cont_names, label_name=label_names)
 
# create datsets from input files
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)
 
# add feature engineering and preprocessing ops to Workflow
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))
 
# compute statistics, transform data, export to disk
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))

Der gesamte Technologie-Stack ist im folgenden GitHub-Repository zu finden:

Fazit

Empfehlungssysteme haben einen langen Weg hinter sich.

Von einfacher statistischer Modellierung, inhaltsbasierter Filterung und kollaborativer Filterung haben wir jetzt neuronale Netze mit tiefem Lernen, HPC-Knoten, Matrixfaktorisierung und ihre Erweiterung auf größere Dimensionen, die Tensorfaktorisierung.

Das profitabelste Empfehlungssystem für Streaming ist NVIDIA, und sie lassen ihre gesamten Algorithmen für maschinelles Lernen in der Cloud bei AWS laufen.

Empfehlungssysteme werden überall eingesetzt, von Google über Microsoft bis hin zu Amazon und Flipkart. Sie sind ein wichtiger Bestandteil des modernen Unternehmens, und es gibt kein Unternehmen, das sie nicht in der einen oder anderen Form nutzt.

Es gibt heute viele Unternehmen, die maßgeschneiderte Empfehlungssysteme online anbieten.

Zu den führenden gehören:

  1. Netflix: Bekannt für seine ausgeklügelte Empfehlungsmaschine, die die Sehgewohnheiten der Benutzer analysiert, um Filme und Fernsehsendungen vorzuschlagen
  2. Amazon: Verwendet eine leistungsstarke Empfehlungsmaschine, die Produkte auf der Grundlage der Kaufhistorie und des Surfverhaltens der Benutzer vorschlägt
  3. Spotify: Nutzt ein Empfehlungssystem, das Musikwiedergabelisten und Liedvorschläge basierend auf der Musikhistorie des Nutzers zusammenstellt.
  4. YouTube: Verwendet einen Empfehlungssystem, um Videos auf der Basis der Ansichts- und Präferenzen des Benutzers zu empfehlen.
  5. LinkedIn: Empfiehlt Arbeitsplätze, Verbindungen und Inhalte auf der Basis von Benutzerprofilen und beruflicher Geschichte.
  6. Zillow: Schlägt Immobilienangebote vor, die auf Benutzererwartungen und Suchgeschichte abgestimmt sind.
  7. Airbnb: Stellt Unterkunfts Empfehlungen bereit, die auf der Basis von Reisehistorie und Präferenzen des Nutzers generiert werden.
  8. Uber: Empfiehlt Fahrtenoptionen auf der Basis von Nutzerpräferenzen und vorherigen Fahrten.
  9. IBM Corporation: Marktführer im Bereich der Empfehlungssysteme, bietet verschiedene AI-getriebene Lösungen an.
  10. Google LLC (Alphabet Inc.): Stellt Empfehlungssysteme auf verschiedenen Plattformen bereit und nutzt umfassende Datenanalyse.

Hoffentlich wird dein Unternehmen eines Tages zu dieser elitären Liste gehören. Alles Gute für Ihre Unternehmung!

Egal in welchem Sektor du tust, wenn du eine Online-Präsenz hast, musst du Empfehlungssysteme auf eine Art oder die andere verwenden. Fortfahren Sie in diesem Bereich zu erkunden und wenn du fachkundig bist, ist sicher, dass du sehr gefragt sein wirst.

Lass dich nie lernen. Behalte die Enthusiasmus aufrecht. Glaube immer an deine unbegrenzten Möglichkeiten für Wachstum. Ihr Zukunft liegt in deinen Händen. Mache sie außergewöhnlich!

Referenzen

  1. Recommender System – Wikipedia
  2. Was sind Empfehlungssysteme? – GeeksforGeeks
  3. Arten von Empfehlungssystemen: Wie sie funktionieren & Anwendungsfallen (almabetter.com)
  4. Empfehlungssysteme und maschinelles Lernen (itransition.com)
  5. Empfehlungssysteme in Python 101 (kaggle.com)
  6. Empfehlungsalgorithmen: Ein Überblick – KDnuggets

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