Erklärung des ANN-Algorithmus (Approximate Nearest Neighbor, geschätzter nächster Nachbar)

Falls Sie sich noch an eine Zeit ohne Internet erinnern können, dann wissen Sie bestimmt, dass es nicht immer einfach war, interessante Dinge zu finden. Wir haben neue Bands entdeckt, wenn wir sie zufällig im Radio gehört haben, wir haben ein neues Fernsehprogramm entdeckt, weil wir vergessen hatten, den Sender zu wechseln, und wir haben neue Videospiele praktisch nur nach dem Bild auf dem Verpackungs-Cover ausgewählt.
Heutzutage sind die Dinge ganz anders. Spotify weist uns auf Künstler:innen hin, die unserem Geschmack entsprechen, Netflix hebt Filme und Serien hervor, von denen es weiß, dass sie uns gefallen werden, und die Xbox weiß, was wir wahrscheinlich als Nächstes spielen wollen. Diese Empfehlungssysteme machen es uns so viel leichter, die Dinge zu finden, nach denen wir tatsächlich suchen – und sie werden von Nearest-Neighbor-Algorithmen (NN) angetrieben. NN blickt auf das riesige Informationsmeer, das zur Verfügung steht, und identifiziert das Element, das dem am nächsten kommt, was man mag oder wonach man sucht.
Aber NN-Algorithmen haben eine grundlegende Schwäche. Wenn die analysierte Datenmenge zu groß ist, dauert es ewig, alle Optionen zu durchforsten. Dies ist problematisch, insbesondere angesichts der unaufhörlich wachsenden Datenquellen. An dieser Stelle übernimmt ANN das Ruder von NN und verändert das Spiel grundlegend.
In diesem Artikel behandeln wir die folgenden wichtigen Themen rund um ANN:
Definition von ANN
Wie funktioniert ANN?
Wann macht es Sinn, ANN einzusetzen?
Bedeutung von ANN für die Vektorsuche
Verschiedene Arten von ANN-Algorithmen
Erklärung des ANN-Algorithmus (Approximate Nearest Neighbor, geschätzter nächster Nachbar)
Der Approximate-Nearest-Neighbor-Algorithmus (ANN) ist ein Verfahren, das in einem Datensatz einen Datenpunkt findet, der dem vorgegebenen Abfragepunkt sehr nahe kommt, aber nicht zwingend der absolut nächste sein muss. Während ein NN-Algorithmus alle Daten erschöpfend durchsucht, um die perfekte Übereinstimmung zu finden, begnügt sich ein ANN-Algorithmus mit einem Treffer, der nah genug liegt.
Das klingt zwar zunächst nach einer schlechteren Lösung, ist aber in Wirklichkeit der Schlüssel zu einer schnellen Ähnlichkeitssuche. ANN verwendet intelligente Abkürzungen und Datenstrukturen, um den Suchraum effizient zu durchlaufen. Anstatt also riesige Mengen an Zeit und Ressourcen zu verbrauchen, identifiziert dieser Algorithmus mit viel weniger Aufwand Datenpunkte, die dem Ziel für praxisorientierte Szenarien in der Regel nahe genug sind.
Dabei wird ein Kompromiss eingegangen. Wenn Sie wirklich das absolut beste Ergebnis brauchen, können Sie dies auf Kosten von Geschwindigkeit und Leistung mit NN erreichen. Wenn Sie jedoch winzige Genauigkeitseinbußen hinnehmen können, ist ANN praktisch immer eine bessere Lösung.
Funktionsweise von ANN-Algorithmen
Der erste Teil der Funktionsweise von ANN ist die Dimensionalitätsreduktion. Hierbei besteht das Ziel darin, einen höherdimensionalen Datensatz in einen niedrigdimensionalen zu verwandeln. Das soll die Aufgabe des Vorhersagemodells weniger kompliziert und effizienter machen, als wenn alle Daten analysiert werden müssten.
Diese Algorithmen beruhen auf dem mathematischen Prinzip von metrischen Räumen, die Datenpunkte mit definierten Abständen enthalten. Diese Abstände müssen bestimmte Regeln einhalten (Nichtnegativität, Identität, Symmetrie, Dreiecksungleichheit) und werden mit gängigen Funktionen wie dem Euklidischen Abstand oder der Kosinus-Ähnlichkeit berechnet.
Stellen Sie sich zur Veranschaulichung vor, Sie sind im Urlaub und suchen nach der Villa, die Sie gemietet haben. Anstatt jedes einzelne Gebäude einzeln zu überprüfen (höherdimensional), verwendet man eine Karte, die das Problem auf zwei Dimensionen reduziert (niedrigerdimensional). (Dies ist ein bewusst vereinfachtes Beispiel. ANN-Algorithmen verwenden neben der Reduzierung der Dimensionalität noch weitere Methoden zur Effizienzsteigerung.)
ANN-Algorithmen nutzen zudem clevere Datenstrukturen namens Indizes, um die Effizienz zu steigern. Durch die Vorverarbeitung der Daten in diesen Indizes kann ANN den Suchraum viel schneller durchlaufen. Stellen Sie sich diese wie Straßenschilder vor, die Ihnen helfen, Ihre Position auf der Karte zu finden, damit Sie Ihre Ferienvilla schneller erreichen.
Wann macht es Sinn, ANN für die Suche einzusetzen?
In der schnelllebigen Welt der Data Science ist Effizienz das oberste Gebot. Die Suche nach dem tatsächlichen nächsten Nachbarn (exakte NN-Suche) ist zwar hilfreich, dafür wie erwähnt aber auch oft mit hohem Rechenaufwand verbunden. An dieser Stelle glänzt die ANN-Suche mit einem überzeugenden Kompromiss: rasante Geschwindigkeit mit hoher, aber nicht absoluter Genauigkeit.
Wann ist es jedoch sinnvoll, ANN anstelle anderer Suchmethoden einzusetzen?
Die exakte NN-Suche ist zwar unter Umständen langsam, aber sie ist die beste Option, wenn Genauigkeit für Sie Priorität hat oder Sie kleine Datensätze nutzen. Der k-Nearest-Neighbors-Algorithmus (kNN) ordnet sich zwischen NN und ANN ein, indem er schnellere Ergebnisse liefert und gleichzeitig eine hohe Genauigkeit beibehält. Es kann jedoch schwierig sein, ihn richtig zu konfigurieren, wenn es darum geht, den Wert für k zu bestimmen, und er stößt auch bei hochdimensionalen Daten an seine Grenzen.
Durch die Kombination aus Geschwindigkeit, Effizienz und hoher (aber nicht absoluter) Genauigkeit ist ANN für viele Situationen perfekt geeignet:
Große Datensätze: Wenn man es mit Millionen oder gar Milliarden von Datenpunkten zu tun hat, führt die erschöpfende Natur der exakten NN-Suche zu spürbaren Verzögerungen. ANN hingegen glänzt beim Durchsuchen riesiger Datenlandschaften und liefert Ergebnisse in rasantem Tempo.
Hochdimensionale Daten: Mit steigender Anzahl der Dimensionen explodiert der Rechenaufwand der exakten NN-Suche. Die Techniken zur Dimensionalitätsreduktion von ANN verkleinern den Suchraum effektiv und steigern die Effizienz bei komplexen Daten wie Bildern oder Texten.
Echtzeitanwendungen: Sie benötigen Ergebnisse in Echtzeit? Empfehlungssysteme, Betrugserkennung und Anomalieerkennung sind auf Echtzeit-Erkenntnisse angewiesen. Die Schnelligkeit von ANN macht es zur idealen Lösung für diese Szenarien.
Akzeptable Annäherung: Wenn Ihre Anwendung leichte Ungenauigkeiten bei den Ergebnissen tolerieren kann, erweist sich die Geschwindigkeit von ANN als unschätzbar wertvoll. Bei der Bildsuche kann es beispielsweise völlig ausreichen, visuell ähnliche Bilder zu finden – anstatt des absolut exakt passenden Bildes.
Bedeutung von ANN für die Vektorsuche
Die Vektorsuche arbeitet mit Daten, die als dichte Vektoren codiert sind, wodurch komplexe Beziehungen und eingebettete Bedeutungen erfasst werden. Das macht sie ideal für die Suche nach Inhalten wie Bildern, Texten und Nutzerpräferenzen, bei denen die traditionelle keywordbasierte Suche oft an ihre Grenzen stößt. Doch auch hier greift der Fluch der Dimensionalität: Je mehr Dimensionen diese Vektoren repräsentieren, desto schwerer tun sich traditionelle Suchmethoden, sodass sie langsam und ineffizient werden.
ANN löst dieses Problem, indem nicht nach einer exakten Übereinstimmung, sondern nach einer hinreichenden Annäherung gesucht wird. Diese Methode ist blitzschnell, und Ihre Vektorsuche findet im Handumdrehen ähnliche Vektoren in riesigen Datensätzen. Außerdem ist diese Lösung von Natur aus skalierbar und unterstützt beliebig große Datensätze ohne Geschwindigkeitseinbußen.
Dank dieser Echtzeitergebnisse und der besseren Relevanz und Effizienz ist ANN oft ein entscheidender Faktor, um das wahre Potenzial Ihrer Vektorsuche zutage zu fördern.
Arten von ANN-Algorithmen
ANN bietet zwar einen überzeugenden Geschwindigkeitsvorteil für Ihre Suche, aber der eigentliche Begriff umfasst eine ganze Reihe von Algorithmen. Jeder dieser Algorithmen bietet eigene Vor- und Nachteile, und bei der Auswahl des passenden Tools für Ihre spezifischen Daten- und Suchanforderungen es ist wichtig, diese Eigenheiten zu kennen.
KD-Strukturen
KD-Strukturen organisieren Datenpunkte in einer hierarchischen Baumstruktur und partitionieren den Raum anhand von spezifischen Dimensionen. Diese Methode ermöglicht eine schnelle und effiziente Suche in Räumen mit niedriger Dimensionalität und für Abfragen, die den Euklidischen Abstand verwenden.
KD-Strukturen eignen sich zwar hervorragend für die Suche nach dem nächsten Nachbarn bei niedriger Dimensionalität, leiden jedoch unter dem Fluch der Dimensionalität. Mit zunehmender Anzahl der Dimensionen steigt der Abstand zwischen den Punkten sprunghaft an. In diesen hohen Dimensionalitäten verliert die Strategie der KD-Strukturen, Räume anhand einzelner Achsen zu unterteilen, an Effizienz. Stattdessen muss die Suche einen Großteil der Daten betrachten, wodurch der Effizienzvorteil verloren geht und sich die Geschwindigkeit einer einfachen linearen Suche durch alle Punkte annähert.
Locality-Sensitive Hashing (LSH)
LSH ist eine leistungsstarke ANN-Technik, die Hashes von Datenpunkten in Räumen mit niedriger Dimensionalität so erstellt, dass deren Ähnlichkeitsbeziehungen erhalten bleiben. Dieses Clustering erleichtert die Suche, und LSH eignet sich hervorragend für riesige, hochdimensionale Datensätze wie Bilder oder Texte mit hoher Geschwindigkeit und Skalierbarkeit. Gleichzeitig liefert diese Methode immer noch annehmbare Übereinstimmungen mit hoher Genauigkeit. LSH kann jedoch manchmal falsch positive Ergebnisse (Punkte ohne Ähnlichkeit als ähnlich bewertet) liefern, und die Effektivität der Methode hängt von der Distanzmetrik und dem Datentyp ab. LSH ist dennoch eine vielseitige Methode, weil verschiedene LSH-Familien für unterschiedliche Metriken (Euklidischer Abstand, Jaccard-Ähnlichkeit usw.) entwickelt wurden.
Annoy
Annoy (Approximate Nearest Neighbors Oh Yeah) ist kein einzelner Algorithmus, sondern eine Open-Source-C++-Bibliothek, die eigene Algorithmen zum Erstellen und Abfragen von Strukturen verwendet, ohne LSH oder KD-Strukturen direkt zu implementieren. Diese Bibliothek ermöglicht eine speichereffiziente und schnelle Suche in hochdimensionalen Räumen und eignet sich daher für Echtzeitabfragen. Im Grunde genommen handelt es sich um eine nutzerfreundliche Schnittstelle, die Flexibilität für unterschiedliche Datentypen und Suchszenarien bietet. Annoy bietet den Vorteil, dass Sie einen passenden ANN-Ansatz für Ihre Anforderungen auswählen können. Dabei wird zwar der Prozess vereinfacht, aber für ein optimales Ergebnis ist es nach wie vor wichtig, den richtigen internen Algorithmus in Annoy auszuwählen, und die Effektivität der Lösung hängt weiterhin von Faktoren wie Ihren Daten und Ihren Genauigkeitsanforderungen ab.
Linearer Suchalgorithmus
Obwohl man sie normalerweise nicht als ANN-Technik klassifiziert, ist die lineare Suche erwähnenswert, da es sich um einen Brute-Force-Ansatz handelt, der ähnliche Ergebnisse wie andere ANN-Algorithmen liefert. Sie durchläuft jeden Datenpunkt nacheinander, berechnet die Abstände zwischen den Datensätzen und protokolliert die besten Treffer. Aufgrund der einfachen Struktur des Algorithmus ist er leicht zu implementieren und eignet sich hervorragend für kleine Datensätze. Der Nachteil dieses simpleren Ansatzes besteht darin, dass er bei großen Datenmengen ineffizient, bei hochdimensionalen Daten langsam und für Echtzeitanwendungen unpraktikabel ist.
Auswahl des richtigen ANN-Algorithmus
Bevor Sie sich in die Auswahl eines ANN-Algorithmus stürzen, sollten Sie die folgenden Faktoren berücksichtigen:
Datensatzgröße und Dimensionalität: Verwenden Sie Locality-Sensitive Hashing für große und hochdimensionale Daten und KD-Strukturen für kleinere Daten mit niedrigerer Dimensionalität.
Gewünschte Genauigkeit: Wenn es auf absolute Genauigkeit ankommt, ist eine lineare Suche vermutlich die beste Option. Andernfalls bieten LSH oder Annoy ein gutes Gleichgewicht zwischen Genauigkeit und Geschwindigkeit.
Rechenressourcen: Annoy bietet zwar Flexibilität, aber Sie sollten Ihre Speicher- und Rechenressourcen überprüfen, bevor Sie einen der in Annoy enthaltenen Algorithmen auswählen.
Vergessen Sie nicht: Es gibt keine allgemein gültige Lösung. Probieren Sie verschiedene ANN-Algorithmen aus und bewerten Sie deren Leistung für Ihre spezifischen Daten, um die perfekte Lösung für Ihre Vektorsuche zu finden. Darüber hinaus entwickelt sich die Welt der ANN-Algorithmen ständig weiter, darum lohnt es sich, am Ball zu bleiben, um keine Neuigkeiten zu verpassen, die Ihre Suche revolutionieren könnten.
ANN als Geheimzutat für eine bessere Suche
Die riesige, komplexe Welt der Daten verlangt nach effizienten Werkzeugen, um ihre Labyrinthe zu durchschreiten. Genau hier kann ANN das Erfolgsrezept sein, das Ihre Ähnlichkeitssuche entscheidend verbessert. Es bietet Geschwindigkeit und Skalierbarkeit, wenn auch um den Preis eines kleinen Kompromisses bei der Genauigkeit. Da die Forschung kontinuierlich fortschreitet und wöchentlich neue Entwicklungen hinzukommen, bleibt die Dynamik im ANN-Bereich hoch. Beispielsweise könnten Fortschritte beim Quantencomputing und beim maschinellen Lernen zu neuartigen ANN-Algorithmen führen, die noch schneller und effizienter sind.
Hinter uns liegt der Vergleich verschiedener ANN-Algorithmen samt ihrer jeweiligen Vor- und Nachteile. Die optimale Wahl richtet sich am Ende ganz nach Ihrem konkreten Bedarf. Wägen Sie Faktoren wie Datenmenge, Dimensionalität, Präzisionsansprüche und Ressourcen ab. Testen Sie verschiedene Ansätze, um das volle Potenzial von ANN auszuschöpfen. Von der Bildsuche bis zur Betrugserkennung können diese Algorithmen einen enormen Unterschied machen, indem sie verborgene Verbindungen aufdecken und schnelle, datengestützte Erkenntnisse liefern.
Wenn Sie also wieder einmal nach dem nächsten Lied, Film oder Videospiel suchen, denken Sie an die heimlichen Helden – die ANN-Algorithmen –, die hinter den Kulissen arbeiten und Verbindungen herstellen.
Nächste Schritte
Wir können Ihnen helfen, aus den Daten Ihres Unternehmens Erkenntnisse zu gewinnen. Hier sind vier Vorschläge für Ihre nächsten Schritte:
Starten Sie eine kostenlose Testversion und sehen Sie, wie Elastic Ihrem Unternehmen helfen kann.
Lernen Sie unsere Lösungen bei einer Tour kennen, um zu sehen, wie die Elasticsearch-Plattform funktioniert und wie unsere Lösungen Ihre Anforderungen erfüllen.
Erfahren Sie, wie Sie generative KI in Ihrem Unternehmen nutzen können.
Teilen Sie diesen Artikel mit interessierten Personen. Teilen Sie den Artikel per E-Mail, LinkedIn, X oder Facebook.
Weitere Informationen zu Suchtechnologie (teils nur auf Englisch):
Die Entscheidung über die Veröffentlichung der in diesem Blogeintrag beschriebenen Leistungsmerkmale und Features sowie deren Zeitpunkt liegt allein bei Elastic. Es ist möglich, dass noch nicht verfügbare Leistungsmerkmale oder Features nicht rechtzeitig oder überhaupt nicht veröffentlicht werden.
In diesem Blogpost haben wir möglicherweise generative KI-Tools von Drittanbietern verwendet oder darauf Bezug genommen, die von ihren jeweiligen Eigentümern betrieben werden. Elastic hat keine Kontrolle über die Drittanbieter-Tools und übernimmt keine Verantwortung oder Haftung für ihre Inhalte, ihren Betrieb oder ihre Anwendung sowie für etwaige Verluste oder Schäden, die sich aus Ihrer Anwendung solcher Tools ergeben. Gehen Sie vorsichtig vor, wenn Sie KI-Tools mit personenbezogenen, sensiblen oder vertraulichen Daten verwenden. Alle von Ihnen eingegebenen Daten können für das Training von KI oder andere Zwecke verwendet werden. Es gibt keine Garantie dafür, dass von Ihnen bereitgestellte Informationen sicher oder vertraulich behandelt werden. Setzen Sie sich vor Gebrauch mit den Datenschutzpraktiken und den Nutzungsbedingungen generativer KI-Tools auseinander.
Elastic, Elasticsearch, ESRE, Elasticsearch Relevance Engine und zugehörige Marken, Waren- und Dienstleistungszeichen sind Marken oder eingetragene Marken von Elastic N.V. in den USA und anderen Ländern. Alle anderen Unternehmens- und Produktnamen sind Marken, Logos oder eingetragene Marken ihrer jeweiligen Eigentümer.