Jede solche Veranstaltung wird von einem Anstieg des Interesses der Internetnutzer begleitet. Die Leute wollen nicht nur lesen, was passiert ist, sondern sich auch die Bilder ansehen. Sie suchen nach Bildern und erwarten dort frische, relevante Bilder, die es vor einigen Stunden noch nicht gegeben hat. Das Interesse steigt unerwartet und fällt innerhalb weniger Tage auf fast Null.
Die Besonderheit der Situation ist, dass herkömmliche Suchmaschinen nicht für ein solches Szenario ausgelegt sind. Darüber hinaus widerspricht das Kriterium der Aktualität von Inhalten anderen wichtigen Eigenschaften einer guten Suche: Relevanz, Autorität usw. Spezielle Technologien sind erforderlich, um nicht nur neue Inhalte zu finden, sondern auch ein ausgewogenes Ergebnis zu erzielen.
Mein Name ist Denis Sakhnov. Heute werde ich über einen neuen Ansatz für die Bereitstellung neuer Inhalte für Yandex.Images sprechen. Und mein Kollege Dmitry Krivokonkrivokonteilt Details über die Metriken und das Ranking frischer Bilder mit. Sie lernen die alten und neuen Ansätze zur Qualitätsbewertung kennen. Wir werden Sie auch an YT, Logbroker und RTMR erinnern.
Damit die Bildsuche in diesem Teil der Abfragen gut funktioniert, deren Antworten neuen Inhalt enthalten sollten, müssen Sie die folgenden Aufgaben lösen:
- Lernen Sie, schnell neue Bilder zu finden und herunterzuladen.
- Lernen Sie, sie schnell zu verarbeiten.
- Erfahren Sie, wie Sie schnell Dokumente für die Suche anhand von Bildern sammeln können (dieser Punkt wird im Verlauf der Geschichte klarer).
- Formulieren Sie Kriterien für die Qualität der Suche nach frischen Inhalten.
- Erfahren Sie, wie Sie Inhalte im SERP anhand der Qualitätsanforderungen bewerten und mischen.
Beginnen wir mit dem ersten Punkt.
1. Bilder bekommen
Es gibt viele Websites im Internet, von denen viele regelmäßig etwas veröffentlichen, einschließlich Bilder. Damit die Benutzer dies alles in der Bildsuche sehen können, muss der Roboter die Site erreichen und den Inhalt herunterladen. So funktioniert die Suche normalerweise: Wir gehen die Websites, die wir kennen, relativ schnell durch und erhalten neue Bilder. Aber wenn es um Inhalte geht, die momentan plötzlich relevant werden, schlägt dieses Modell fehl. Da das Internet riesig ist, ist es unmöglich, HTML-Dokumente aller Websites der Welt „im Moment“ herunterzuladen und alles schnell zu verarbeiten. Zumindest hat noch niemand auf der Welt ein solches Problem gelöst.
Jemand könnte sich eine Lösung für das Problem auf diese Weise vorstellen: Verfolgen Sie die Anforderungsschübe und verarbeiten Sie zunächst nur die Quellen, die irgendwie mit den Anforderungen übereinstimmen. Aber das klingt nur auf dem Papier gut. Um die Entsprechung von etwas zu etwas zu überprüfen, müssen Sie bereits über Inhalte verfügen. Zweitens, wenn wir nach dem Höhepunkt der Anfragen anfangen, etwas zu tun, sind wir bereits zu spät. So verrückt es auch klingen mag, Sie müssen frische Inhalte finden, bevor Sie sie brauchen. Aber wie prognostizieren Sie das Unerwartete?
Die richtige Antwort ist auf keinen Fall. Wir wissen nichts über den Zeitpunkt von Vulkanausbrüchen. Wir wissen jedoch, auf welchen Websites normalerweise frische und nützliche Inhalte angezeigt werden. Wir gingen von dieser Seite. Wir haben begonnen, eine maschinell erlernte Formel zu verwenden, die das Crawlen unseres Crawlers anhand der Qualität und Relevanz des Inhalts priorisiert. Lassen Sie sich von SEOs verzeihen: Wir werden hier nicht auf Details eingehen. Die Aufgabe des Roboters ist es, uns HTML-Dokumente so schnell wie möglich zu liefern. Erst danach können wir uns ihre Füllung ansehen und neue Texte, Links zu Bildern usw. finden.
Bildlinks sind gut, aber für die Suche bisher nicht besonders nützlich. Zunächst müssen Sie sie bei uns herunterladen. Aber auch hier gibt es zu viele neue Links zu Bildern, um sie sofort herunterzuladen. Das Problem liegt hier nicht nur in unseren Ressourcen: Websitebesitzer möchten auch nicht, dass Yandex sie versehentlich stört. Daher verwenden wir maschinelles Lernen, um Bilddownloads zu priorisieren. Die Faktoren sind unterschiedlich, es gibt viele davon, wir werden nicht alles erklären, aber wir können zum Beispiel sagen, dass die Häufigkeit, mit der das Bild auf verschiedenen Ressourcen erscheint, auch die Priorität beeinflusst.
Wir haben jetzt eine Liste mit Links zu Bildern. Dann laden wir sie uns selbst herunter. Wir nutzen unseren eigenen Logbroker-Service. Dieses Ding fungiert als Transportbus und überlebt erfolgreich große Verkehrsmengen. Unser Kollege Alexey Ozeritsky hat bereits vor einigen Jahren auf Habré über diese Technologie gesprochen .
Hier wird die erste Stufe logisch abgeschlossen. Wir haben die Quellen identifiziert und einige Bilder erfolgreich extrahiert. Nur noch ein bisschen übrig: lernen, wie man mit ihnen arbeitet.
2. Bilder verarbeiten
Die Bilder selbst sind natürlich nützlich, müssen aber noch vorbereitet werden. Das
funktioniert folgendermaßen : 1. Im zustandslosen Computerdienst RTHub werden Versionen unterschiedlicher Größe vorbereitet. Dies ist für die Suche erforderlich, bei der es bequem ist, Miniaturansichten in den Ergebnissen anzuzeigen und den Originalinhalt von der Quellwebsite durch Klicken anzugeben.
2. Neuronale Netzwerkmerkmale werden berechnet. Offline (dh im Voraus und nicht zum Zeitpunkt des Rankings) auf Maschinen mit einer GPU werden neuronale Netze gestartet, deren Ergebnis Vektoren von Bildmerkmalen sind. Außerdem werden die Werte nützlicher Klassifikatoren berechnet: Schönheit, Ästhetik, unangemessener Inhalt und viele andere. Wir brauchen das alles noch.
3. Und dann werden unter Verwendung der aus dem Bild gezählten Informationen Duplikate zusammengeklebt. Dies ist wichtig: Es ist unwahrscheinlich, dass der Benutzer mit Suchergebnissen zufrieden ist, bei denen dieselben Bilder vorherrschen. Gleichzeitig können sie sich geringfügig unterscheiden: Irgendwo schneiden sie die Kante ab, irgendwo wird ein Wasserzeichen hinzugefügt usw. Wir führen das Verkleben von Duplikaten in zwei Schritten durch. Erstens gibt es eine grobe Häufung von Nahbildern unter Verwendung neuronaler Netzwerkvektoren. In diesem Fall stimmen die Bilder im Cluster möglicherweise nicht einmal in ihrer Bedeutung überein, aber dies ermöglicht es uns, die weitere Arbeit mit ihnen zu parallelisieren. Dann kleben wir in jedem Cluster Duplikate, indem wir nach Ankerpunkten in den Bildern suchen. Bitte beachten Sie: Neuronale Netze eignen sich hervorragend zur Suche nach ähnlichen Bildern, aber weniger "modische" Tools sind effektiver, um vollständige Duplikate zu finden. Neuronale Netze können zu klug sein und "dasselbe in unterschiedlich" sehen.
Am Ende dieser Phase haben wir also fertige Bilder in verschiedenen Versionen, die durch Kleben von Duplikaten mit vorberechnetem neuronalen Netzwerk und anderen Merkmalen durchlaufen wurden. Zum Ranking einreichen? Nein, es ist zu früh.
3. Wir sammeln Bilder in Dokumenten
Dokument ist unser Name für die Entität, die am Ranking teilnimmt. Auf der Benutzerseite kann es wie ein Link zu einer Seite (Durchsuchen von Websites), einem Bild (Suchen nach Bildern), einem Video (Suchen nach einem Video), einer Kaffeemaschine (Suchen nach Waren) oder etwas anderem aussehen. Aber hinter jeder Einheit in den Suchergebnissen befindet sich eine ganze Reihe heterogener Informationen. In unserem Fall - nicht nur das Bild selbst, sein neuronales Netzwerk und andere Funktionen, sondern auch Informationen zu den Seiten, auf denen es platziert ist, die Texte, die es auf diesen Seiten beschreiben, Statistiken zum Benutzerverhalten (z. B. Klicks auf das Bild). Alles zusammen - das ist das Dokument. Und bevor Sie direkt mit der Suche fortfahren, muss das Dokument gesammelt werden. Und der Mechanismus zur Bildung der üblichen Suchbasis von Bildern ist hier nicht geeignet.
Die größte Herausforderung besteht darin, dass verschiedene Komponenten eines Dokuments zu unterschiedlichen Zeiten und an unterschiedlichen Orten generiert werden. Der gleiche Logbroker kann Informationen zu Seiten und Texten herunterladen, jedoch nicht gleichzeitig mit Bildern. Echtzeitdaten zum Benutzerverhalten werden über das RTMR- Protokollverarbeitungssystem übertragen . Und das alles wird unabhängig von den Bildern gespeichert. Um ein Dokument zu erfassen, müssen Sie verschiedene Datenquellen konsistent umgehen.
Wir verwenden MapReduce, um die Hauptsuchbasis für Bilder zu bilden. Es ist eine effiziente und zuverlässige Methode, um mit großen Datenmengen zu arbeiten. Für die Aufgabe der Frische ist es jedoch nicht geeignet: Wir müssen sehr schnell alle Daten aus dem Speicher erhalten, die für die Erstellung jedes Dokuments erforderlich sind und nicht MapReduce entsprechen. Daher verwenden wir in der Frische-Schleife eine andere Methode: Heterogene Informationen kommen in das RTRobot-Streaming-Datenverarbeitungssystem, das KV-Speicher verwendet, um verschiedene Datenverarbeitungsflüsse und Fehlertoleranz zu synchronisieren.
In der Frische-Schleife verwenden wir dynamische Tabellen, die auf unserem YT- System basieren, als KV-Speicher... In der Tat ist dies ein Repository für alle Inhalte, die wir möglicherweise benötigen. Mit sehr schnellem Zugang. Von dort aus fordern wir umgehend alles an, was für die Suche nach Bildern, das Sammeln von Dokumenten und die Übertragung mit LogBroker auf Suchserver nützlich sein kann, von wo aus die vorbereiteten Daten zur Suchdatenbank hinzugefügt werden.
Dank eines separaten Schaltkreises für die Arbeit mit Frische, der alle Phasen abdeckt (von der Suche nach Bildern im Web bis zur Vorbereitung von Dokumenten), können wir Hunderte neuer Bilder pro Sekunde verarbeiten und sie durchschnittlich innerhalb weniger Minuten nach ihrem Erscheinen zur Suche liefern.
Es reicht jedoch nicht aus, Bilder zur Suche zu bringen. Sie müssen sie in den Suchergebnissen anzeigen können, wenn sie nützlich sind. Und hier fahren wir mit dem nächsten Schritt fort - der Bestimmung des Nutzens. Ich gebe Dmitry das Wortkrivokon...
4. Wir messen Qualität
Ein allgemeiner Ansatz zur Optimierung der Suchqualität beginnt mit der Auswahl einer Metrik. Bei der Yandex-Bildsuche ist der Metriktyp ungefähr der folgende:
wobei
n die Anzahl der ersten Bilder (Dokumente) des von uns bewerteten Problems ist;
p_i - Positionsgewicht in den Suchergebnissen (je höher die Position, desto mehr Gewicht);
r_i - Relevanz (wie genau das Bild mit der Anfrage übereinstimmt);
w_i… m_i - andere Komponenten der Antwortqualität (Frische, Schönheit, Größe ...);
f (...) ist ein Modell, das diese Komponenten aggregiert.
Einfach ausgedrückt, je höher die nützlichen Bilder in den Suchergebnissen sind, desto höher ist die Menge in diesem Ausdruck.
Ein paar Worte zum f (...) Modell. Sie wird durch paarweisen Vergleich von Bildern mit Polokern trainiert. Eine Person sieht eine Anfrage und zwei Bilder und wählt dann das beste aus. Wenn Sie dies viele, viele Male wiederholen, lernt das Modell vorherzusagen, welche Qualitätskomponente für eine bestimmte Anforderung am wichtigsten ist.
Wenn beispielsweise frische Fotos eines Schwarzen Lochs angefordert werden, hat die Frischekomponente den höchsten Koeffizienten. Und wenn es um eine tropische Insel geht, dann Schönheit, weil nur wenige Menschen nach Amateurfotos von hässlichen Inseln suchen, werden normalerweise attraktive Bilder benötigt. Je optisch die Lieferung von Bildern in solchen Fällen besser aussieht, desto wahrscheinlicher ist es, dass eine Person den Dienst weiterhin nutzt. Aber lassen wir uns davon nicht ablenken.
Die Aufgabe der Ranking-Algorithmen besteht also darin, diese Metrik zu optimieren. Sie können jedoch nicht alle Millionen täglicher Anfragen abschätzen: Dies ist eine enorme Belastung, und vor allem für Toloker. Daher weisen wir zur Qualitätskontrolle eine Zufallsstichprobe (Korb) für einen festgelegten Zeitraum zu.
Es scheint, dass es eine Metrik gibt, in der die Frischekomponente bereits berücksichtigt wird, und es gibt eine Auswahl von Anforderungen für die Qualitätskontrolle. Sie können das Thema hierzu schließen und zum Ranking gehen. Aber nein.
Bei frischen Bildern tritt ein Problem auf. Bei der Bewertung von Algorithmen müssen wir verstehen können, dass wir in dem Moment, in dem die Anforderung in die Suche eingegeben wird, gut auf die Anfrage eines Benutzers reagieren. Die neue Anfrage des letzten Jahres ist jetzt möglicherweise nicht mehr so. Und etwas anderes wäre eine gute Antwort. Daher ist ein fester Korb von Anfragen (z. B. pro Jahr) nicht geeignet.
Als ersten Ansatz zur Lösung dieses Problems haben wir versucht, überhaupt auf den Korb zu verzichten. Nach einer bestimmten Logik haben wir begonnen, frische Bilder in die Ausgabe zu mischen, und dann das Benutzerverhalten untersucht. Wenn es sich zum Besseren verändert hat (zum Beispiel haben die Leute aktiver auf die Ergebnisse geklickt), war das Mischen nützlich. Dieser Ansatz weist jedoch einen Fehler auf: Die Qualitätsbewertung hing direkt von der Qualität unserer Algorithmen ab. Wenn unser Algorithmus beispielsweise für einige Anfragen Inhalte nicht verarbeitet und nicht mischt, gibt es nichts zu vergleichen, was bedeutet, dass wir nicht verstehen, ob dort neue Inhalte benötigt wurden. Wir sind zu dem Schluss gekommen, dass ein unabhängiges Bewertungssystem erforderlich ist, das die aktuelle Qualität unserer Algorithmen anzeigt und nicht von ihnen abhängt.
Unser zweiter Ansatz war wie folgt. Ja, wir können aufgrund der Variabilität neuer Anfragen keinen festen Einkaufswagen verwenden. Aber wir können für den Boden den Teil des Korbs belassen, für den es keine Anforderungen an die Frische gibt, und den frischen Teil dort täglich hinzufügen. Zu diesem Zweck haben wir einen Algorithmus erstellt, der im Strom der Benutzeranforderungen diejenigen auswählt, die höchstwahrscheinlich eine Antwort mit frischen Bildern erfordern. Solche Abfragen enthalten normalerweise unerwartete Details. Natürlich verwenden wir die manuelle Validierung, um Lärm und Schmutz herauszufiltern und spezielle Situationen zu berücksichtigen. Beispielsweise kann eine Abfrage nur für ein bestimmtes Land relevant sein. In diesem Fall wird uns nicht mehr von Tolokern geholfen, sondern von Assessoren: Eine solche Arbeit erfordert besondere Erfahrung und Kenntnisse.
Anfrage [Schwarzes Loch Foto]
Gleichzeitig legen wir nicht nur solche neuen Anfragen zur Qualitätsbewertung in den Warenkorb, sondern speichern auch die Ergebnisse unserer Suche zum Zeitpunkt des Findens der Anfragen. So können wir nicht nur die primäre Qualität der Antwort beurteilen, sondern auch, wie schnell unsere Suche auf das Ereignis reagiert hat.
Fassen wir also die vorläufigen Ergebnisse zusammen. Um auf neue Anfragen gut reagieren zu können, haben wir nicht nur eine schnelle Lieferung an die Suche und Bildverarbeitung sichergestellt, sondern auch die Art und Weise, wie wir die Qualität messen, neu erfunden. Es bleibt abzuwarten, an welcher Qualität wir messen.
5. Rangliste
Ich möchte Sie daran erinnern, dass wir oben den Übergang vom ersten Ansatz zur Bewertung der Qualität der Bildsuche zum zweiten beschrieben haben: von der Mischung der Ergebnisse bis zur täglichen Auffüllung des Akzeptanzkorbs mit neuen Anfragen. Das Paradigma hat sich geändert - die Algorithmen selbst mussten geändert werden. Es ist nicht einfach, es den Lesern von außen zu erklären, aber ich werde es versuchen. Wenn Sie Fragen haben, können Sie diese gerne in den Kommentaren stellen.
Zuvor wurden die Methoden analog zu der Lösung implementiert, über die ich gesprochen habeunser Kollege Alexey Shagraev. Es gibt eine Hauptquelle für Dokumente (Hauptsuchindex). Außerdem gibt es eine zusätzliche Quelle für neue Dokumente, für die die Geschwindigkeit der Suche von entscheidender Bedeutung ist. Dokumente aus verschiedenen Quellen konnten nicht nach einer einzigen Logik eingestuft werden. Daher haben wir ein eher nicht triviales Schema verwendet, um Dokumente aus einer neuen Quelle in das Hauptproblem zu mischen. Als Nächstes haben wir die Metriken der Hauptsuchergebnisse ohne und mit zusätzlichen Dokumenten verglichen.
Jetzt ist die Situation anders. Ja, die Quellen sind physisch immer noch unterschiedlich, aber in Bezug auf die Metriken spielt es keine Rolle, woher das frische Bild stammt. Es kann auch von der Hauptquelle stammen, wenn ein gewöhnlicher Roboter es geschafft hat, dorthin zu gelangen. In diesem Fall sind die Metriken identisch mit der Situation, in der dasselbe Bild über eine separate Quelle zum Problem gelangt ist. Der neue Ansatz bietet eine aussagekräftige Aktualität der Abfrage und des Ergebnisses, und die Quellarchitektur ist nicht mehr so wichtig. Infolgedessen werden sowohl Hauptdokumente als auch aktuelle Dokumente mit demselben Modell bewertet, sodass wir frische Bilder mit einer viel einfacheren Logik als zuvor in die Suchergebnisse mischen können: durch einfaches Sortieren nach Wert am Ausgang eines einzelnen Modells. Dies wirkte sich natürlich auch auf die Qualität aus.
Mach weiter. Um etwas zu bewerten, benötigen Sie einen Datensatz, auf dem das Modell trainiert wird. Für frische Bilder - ein Datensatz mit Beispielen für frischen Inhalt. Wir haben bereits einen Basisdatensatz, wir mussten lernen, wie man Frische-Beispiele hinzufügt. Und hier werden wir an den Warenkorb erinnert, den wir bereits zur Qualitätskontrolle verwenden. Die darin enthaltenen neuen Anforderungen variieren von Tag zu Tag. Dies bedeutet, dass wir bereits am nächsten Tag die neuen Anforderungen von gestern entgegennehmen und zum Training in den Datensatz aufnehmen können. Gleichzeitig riskieren wir keine Umschulung, da nicht dieselben Daten gleichzeitig für Training und Kontrolle verwendet werden.
Durch den Übergang zu einem neuen Schema hat sich die Qualität der Suchergebnisse für frische Bilder erheblich verbessert. Wenn frühere Schulungen in erster Linie auf Benutzerstatistiken zu neuen Anforderungen basierten und wir aus diesem Grund Feedback zum aktuellen Ranking-Algorithmus hatten, werden jetzt objektiv Anforderungskörbe gesammelt, die ausschließlich vom Fluss der Benutzeranforderungen abhängen. Auf diese Weise konnten wir lernen, wie man frische Ergebnisse zeigt, auch wenn es vorher keine gab. Aufgrund der Verschmelzung der Ranglisten-Pipelines der Haupt- und Frischkonturen begann sich diese spürbar schneller zu entwickeln (alle Verbesserungen in einer Quelle erreichen nun automatisch die zweite).
Es ist unmöglich, in einem Beitrag detailliert über die gesamte Arbeit des Yandex-Bildsuchteams zu berichten. Wir hoffen, es ist uns gelungen zu erklären, was es heißt, frische Bilder zu finden. Und warum sind in allen Phasen der Suche Änderungen erforderlich, damit Benutzer schnell neue Fotos von Pluto oder andere relevante Informationen finden können?