Learning to Rank – To the Moon and Back (-propagation): Wie Deep Neural Networks lernen, was du liebst
Stell dir vor, du suchst etwas in einem Onlineshop und findest sofort genau das, was du brauchst. Kein Scrollen, keine Frustration. Nur Volltreffer.
Was herausfordernd klingt, ist die tägliche Mission unserer Suchteams. Mithilfe von Machine Learning lernen wir aus Millionen von Nutzerinteraktionen, was unsere Nutzer*innen anklicken, was sie kaufen und was sie lieben.
Um die Rankingfunktion und Suchrelevanz bei OTTO zu optimieren, setzen wir auf Learning to Rank (LTR)– ein Verfahren zur Ranking-Optimierung. Im Gegensatz zu regelbasierten Algorithmen lernen LTR-Modelle die Relevanz von Produkten für eine Suchanfrage, indem sie historische Nutzerinteraktionen analysieren. Die grundlegende Funktionsweise von LTR kannst du in unseren älteren Blogbeiträgen erfahren:
Unser bisheriges LTR-Modell war ein Gradient Boosted Decision Tree (GBDT). Da jedoch aktuelle E-Commerce-Forschung zunehmend aufzeigt, dass Deep Neural Networks (DNNs) GBDT-basierte Modelle übertreffen können, sahen wir eine Chance, unsere Suchrelevanz weiter zu verbessern. Deshalb sind wir von unserem bewährten GBDT-Modell auf ein Deep-Learning-basiertes Relevanzmodell umgestiegen.
Nach zahlreichen Iterationen beim Feature Engineering unseres GBDT-Rankingmodells hatten wir einen Punkt erreicht, an dem jede Optimierung unsere Tech-Architektur komplexer machte, während die Performance-Gewinne stetig abnahmen. Um dieses Plateau zu überwinden, verlagerten wir den Fokus von manuellem Feature Engineering auf die Modellarchitektur.
Deep Neural Networks bieten einen flexiblen und skalierbaren Rahmen für Innovationen. Das liegt an der flexiblen Struktur, mit der diese Relevanzmodelle komplexe Beziehung abbilden können und ihrer Fähigkeit, mit massiven Datenmengen effizient umzugehen. Dies reduziert den Bedarf an manuellem Feature Engineering erheblich, da relevante Merkmale direkt aus den Daten gelernt werden können.
In diesem Beitrag stehen die Data-Science-Innovationen hinter unseren LTR-Modellen im Mittelpunkt. Wenn du mehr über den Software-Engineering-Teil erfahren möchtest, freue dich auf unseren zweiten Blogpost dieser Reise! Dort erfährst du, wie wir Clojure einsetzen, um skalierbare Big-Data-Pipelines aufzubauen und was das Ganze mit Raumfahrt zu tun hat.

Du willst noch tiefer in die technischen Feinheiten unserer LTR-Architektur eintauchen? Unser umfassendes Paper liefert alle Details, auf denen dieser Blogpost aufbaut.
Im Kontext von Learning to Rank ermöglichen Daten den Modellen, die Relevanz von Produkten für eine bestimmte Anfrage zu identifizieren und die Reihenfolge der Suchergebnisse zu optimieren. Unser LTR-Modell wird auf anonymisierten Nutzerinteraktions-Logs trainiert und nutzt dabei drei Hauptkategorien von Daten:
Diese Daten bilden die Grundlage für alle Machine Learning Modelle, denn sie liefern den nötigen Input für Rankingfunktionen, damit die Modelle Muster erkennen und auf neue Szenarien generalisieren können.
Nach umfangreichen Experimenten haben wir uns für eine Two-Tower-Deep-Neural-Network-Architektur entschieden. Dieser Ansatz vereint Performance und Skalierbarkeit. In zentralen Kennzahlen wie Klicks und Umsatz übertraf dieser Ansatz unser vorheriges Gradient Boosted Decision Tree-Modell sowohl in Offline-Experimenten als auch in einem Online-A/B-Test.
Das Two-Tower-DNN besteht aus zwei neuronalen Netzen, die unterschiedliche Inputdaten verarbeiten und ihre Outputs kombinieren, um einen Relevanz-Score für jedes Suchanfrage-Produkt-Paar zu berechnen.
Die vom Query-Tower und Product-Tower erzeugten Dense-Vectors werden über ein Skalarprodukt kombiniert. Das Ergebnis ist ein Relevanz-Score, der quantifiziert, wie relevant ein Produkt für die jeweilige Suchanfrage ist. Im nächsten Abschnitt tauchen wir tief in die Modellarchitektur ein.
Die folgende Abbildung zeigt die Two-Tower-Architektur unseres LTR-Modells. Wir führen durch alle Schritte des Modelltrainings, vom Vorbereiten der Rohdaten bis zur Berechnung des Trainings-Loss.

1) Feature Engineering
Unsere Daten werden mit drei verschiedenen Ansätzen prozessiert, die jeweils vom Datentyp abhängen:
2.1a) Query-Embedding
Der Query-Tower verarbeitet die Suchanfrage und Kontextsignale. Die Suchanfragen werden tokenisiert, und die Tokens mithilfe eines Embedding-Layers in Dense-Vectors transformiert.
2.2a) Aggregation
Diese Suchanfragen-Token-Embeddings werden aufsummiert, um einen einzelnen Dense-Vector zu erzeugen, der den Kontext der Suchanfrage repräsentiert.
2.1b) Produkt-Encodings
In diesem Schritt werden alle Features transformiert und in eine Dense-Vector-Repräsentation für jedes Produkt zusammengeführt.
Die resultierenden Embeddings und normalisierten numerischen Features werden zu einem einzigen Dense-Vector konkateniert, der anschließend in das Deep Neural Network eingespeist wird.
2.2b) Deep Neural Network
Das DNN im Product‑Tower ist dafür verantwortlich, die Dense-Product-Vectors aus dem Schritt des Product-Encodings in kompakte Embeddings zu transformieren. Diese Embeddings erfassen die komplexen Feature-Interaktionen, die für das nachgelagerte Relevanz-Scoring erforderlich sind.
Netzwerkarchitektur:
Der Product-Tower verarbeitet die konkatenierten Feature-Vektoren durch eine Abfolge von Fully-Connected-Layern. Jedes Layer folgt einer Sequenz von Operationen:
Das Netzwerk besteht aus drei solchen Layern, die jeweils auf dem vorherigen Aufbauen, um bessere Produktrepräsentationen zu lernen. Der finale Output ist ein Dense-Vector fester Größe (512 Dimensionen), der das Produkt so repräsentiert, dass es für das Relevanz-Scoring in Kombination mit den Suchanfragen-Embeddings genutzt werden kann.
Das Two-Tower-Modell wird mit dem Adam Optimizer trainiert. Die beste Konfiguration des Product-Towers umfasst 3 Layer, eine Hidden-Size von 1024 und eine Dropout-Rate von 0.
3) Dot-Product
Der letzte Schritt in der Two-Tower-Architektur kombiniert die Outputs des Query-Towers und des Product-Towers, um einen Relevanz-Score für jedes Produkt zu berechnen. Dies geschieht über ein Skalarprodukt, das die Übereinstimmung zwischen Suchanfragen- und Produkt-Embeddings quantifiziert.
Das Suchanfragen-Embedding, erzeugt vom Query-Tower, repräsentiert den Kontext der Suchintention des Nutzers, während das Produkt-Embedding, erzeugt vom Product-Tower, die Features eines bestimmten Produkts enkodiert.
Das Skalarprodukt zwischen diesen beiden Embeddings ergibt einen Skalarwert, der angibt, wie gut das Produkt zur Suchanfrage passt.
Mathematisch lässt sich dies ausdrücken als:

Hierbei ist h_c das Suchanfragen-(Context)-Embedding und h_p das Produkt-Embedding.
4) Softmax
Nachdem die Relevanz-Scores für alle Kandidatenprodukte pro Suchanfrage berechnet wurden, erfolgt im nächsten Schritt die Normalisierung dieser Scores in Wahrscheinlichkeiten. Dies geschieht durch die Softmax-Funktion, die Scores in eine Wahrscheinlichkeitsverteilung transformiert. Für eine gegebene Suchanfrage wird die Wahrscheinlichkeit p_i, das Produkt i aus der Kandidatenmenge auszuwählen, berechnet als:

Hierbei bezeichnet s_i den Relevanz-Score für das Produkt i, und n ist die Gesamtzahl der Kandidatenprodukte für diese Suchanfrage. Diese Normalisierung ist entscheidend für das Training mit der Cross-Entropy-Loss-Funktion, weil sie den Vergleich zwischen vorhergesagten Wahrscheinlichkeiten und Ground-Truth-Labels ermöglicht.
5) Cross-Entropy-Loss
Der Cross-Entropy-Loss (CE-Loss) ist der letzte Schritt beim Training unseres Learning to Rank-Modells. Er misst den Unterschied, zwischen den durch die Softmax-Funktion erzeugten, vorhergesagten Wahrscheinlichkeiten und den Ground-Truth-Wahrscheinlichkeiten, die aus realen Nutzerinteraktionen wie Klicks oder Bestellungen abgeleitet werden. Wir interpretieren Interaktionen als implizite Relevanzlabels und überführen sie in Wahrscheinlichkeiten; der Cross-Entropy-Loss richtet daraufhin die Ranglisten des Modells an den Nutzerpräferenzen aus.
In der folgenden Abbildung stellen die roten Balken die vom Modell vorhergesagten Relevanz-Wahrscheinlichkeiten dar, während die blauen Balken die tatsächliche Ground-Truth-Relevanz basierend auf Nutzerinteraktionen zeigen.
Der Cross-Entropy-Loss misst die Abweichung zwischen diesen beiden Verteilungen. Für sehr relevante Produkte (z. B. Produkt 1 und 2, bei denen die blauen Balken hoch sind) zwingt der Loss das Modell dazu, die vorhergesagte Wahrscheinlichkeit (roter Balken) zu erhöhen. Für irrelevante Produkte (z. B. Produkt 3 bis 10, bei denen die blauen Balken für Ground-Truth-Relevanz null sind) bestraft der Loss hohe vorhergesagte Wahrscheinlichkeiten und reduziert sie.
Dieser Mechanismus stellt sicher, dass das Modell lernt, relevanten Produkten hohe Wahrscheinlichkeiten und irrelevanten Produkten niedrige Wahrscheinlichkeiten zuzuordnen.

Mathematisch ist der CE-Loss definiert als:

Wobei (y_i ) ̃ das normalisierte Ground-Truth-Label für Produkt i ist und p_i die durch die Softmax-Funktion vorhergesagte Wahrscheinlichkeit darstellt. Durch die Minimierung dieses Loss lernt das Modell den Produkten, mit denen mehr interagiert wird, höhere Wahrscheinlichkeiten zuzuordnen. Das verbessert die Ranking-Qualität.
In einem 8-wöchigen A/B-Test lieferte unser neuronales Ranking-Modell:
• +1,86 % Klicks
• +0,56 % Umsatz
Diese Verbesserungen zeigen, dass unsere Suchergebnisse für Nutzer*innen relevanter und ansprechender geworden sind. Auf Basis dieser starken Ergebnisse haben wir entschieden, das neue Modell auszurollen und damit die Suche bei OTTO noch relevanter zu machen.
Nach dem Live-Gang unseres neuen LTR-Modells steht schon die nächste Rakete in Richtung Personalisierung auf der Startrampe. Durch die Integration nutzerspezifischer Signale wollen wir die die Rankingfunktionen noch genauer an individuelle Präferenzen anpassen. Durch Personalisierung wird unsere Suche nicht nur hochrelevant, sondern auch einzigartig auf jede*n Nutzer*in zugeschnitten. Wir haben eine starke und vielseitige Grundlage für zukünftige Verbesserungen geschaffen und freuen uns auf die Möglichkeiten, die vor uns liegen.
Möchtest du Teil des Teams werden?


We have received your feedback.