Einführung in die TensorFlow-Ähnlichkeit

Quellknoten: 1079311

Einführung in die TensorFlow-Ähnlichkeit

TensorFlow Similarity ist eine neu veröffentlichte Bibliothek von Google, die das Trainieren, Indizieren und Abfragen von Ähnlichkeitsmodellen erleichtert. Sehen Sie hier mehr.


Oft müssen wir in der Lage sein, Dinge zu finden, die wie andere Dinge sind. Ähnlichkeitssuche ist eine nützliche Technik dafür. In der Datenwissenschaft, kontrastives Lernen können verwendet werden, um Ähnlichkeitsmodelle zu erstellen, die dann für die Ähnlichkeitssuche verwendet werden können.

Ähnlichkeitsmodelle werden darauf trainiert, Einbettungen auszugeben, in denen Elemente in einen metrischen Raum eingebettet sind, was zu einer Situation führt, in der ähnliche Elemente nahe beieinander und weiter von unähnlichen Elementen entfernt sind. Dies hängt – sowohl intuitiv als auch mathematisch – direkt mit Worteinbettungen zusammen, mit denen Sie bereits vertraut sind; Paris und London liegen ebenso nah beieinander wie Senf und Ketchup, aber diese beiden Gruppen liegen vergleichsweise weiter auseinander.

Auf die gleiche Weise könnten wir ein Ähnlichkeitsmodell verwenden, um beispielsweise Fahrzeuge zu vergleichen. Zum Beispiel würden BMW- und Mercedes-Limousinen eng beieinander eingebettet, während Yamaha- und Kawasaki-Motorräder eng miteinander verbunden wären. Die Motorräder wären relativ weiter von den Limousinen entfernt, die wiederum von anderen unähnlichen Fahrzeugen wie Booten, Wohnmobilen, Vans, Fahrrädern usw.

Abbildung
Übersicht über Ähnlichkeitsmodelle (Quelle)

 

Deep Learning wird verwendet, um die neuronalen Netze zu trainieren, die oft für diese Ähnlichkeitsmodelle verwendet werden. Um das Training solcher Modelle zu erleichtern, hat Google erst kürzlich TensorFlow-Ähnlichkeit.

Tensorflow Similarity bietet hochmoderne Algorithmen für das metrische Lernen und alle notwendigen Komponenten, um ähnlichkeitsbasierte Modelle zu erforschen, zu trainieren, zu bewerten und bereitzustellen.

Nachdem ein Modell trainiert wurde, wird ein Einbettungsindex erstellt, um die Suche zu erleichtern. Für die Suche verwendet TF Similarity die Fast-Approximate-Nearest-Neighbor-Suche (ANN), um die engsten Übereinstimmungen abzurufen. Da die Entfernung zwischen eingebetteten Elementen eine Funktion einer Entfernungsmetrik ist, sind die Suchvorgänge mit ANN sowohl schnell als auch genau.

Ähnlichkeitsmodelle sind außerdem flexibel und erweiterbar, sodass dem Modell eine unbegrenzte Anzahl von Elementklassen ohne Umschulung hinzugefügt werden kann; Berechnen Sie einfach repräsentative neue Elementeinbettungen und fügen Sie sie dem vorhandenen Index hinzu.

Abbildung
Übersicht über die TensorFlow-Ähnlichkeit (Quelle)

 

TensorFlow Similarity erleichtert das Training von Ähnlichkeitsmodellen, sowie die anschließende Abfrage, intuitiv, insbesondere mit der Einführung des neuen Keras-Modells SimilarityModel(), die das Einbetten von Indizierung und Abfragen unterstützt. Mit TF Similarity ist das End-to-End-Modelltraining und -Abfragen unkompliziert.

Zur Veranschaulichung hier Beispielcode aus der TF-Ähnlichkeit GitHub-Repository die den MNIST-Datensatz prägnant trainiert, indiziert und abfragt.

from tensorflow.keras import layer # Einbetten der Ausgabeschicht mit L2-Norm from tensorflow_similarity.layers import MetricEmbedding # Spezialisierter Metrikverlust aus tensorflow_similarity.losses import MultiSimilarityLoss # Untergeordnetes Keras-Modell mit Unterstützung für die Indizierung von tensorflow_similarity direkt aus dem tf-Dataset-Katalog von tensorflow_similarity.samplers import TFDatasetMultiShotMemorySampler # Nearest Neighbour Visualizer von tensorflow_similarity.visualization import viz_neigbors_imgs # Daten-Sampler, der ausgeglichene Batches aus MNIST-Dataset-Sampler generiert = TFDatasetMultiShotMemory' unter Verwendung von standardmäßigen Keras-Ebenen Eingaben = Ebenen.Eingabe(Form=(10, 28, 28)) x = Ebenen.Reskalierung(1/1)(Eingaben) x = Ebenen.Conv255D(2, 64, Aktivierung='relu')( x) x = Schichten.Flatten()(x) x = Schichten.Dense(3, Aktivierung='relu')(x) Ausgaben = MetricEmbedding(64)(x) # B Erstellen Sie ein spezielles Ähnlichkeitsmodellmodell = Ähnlichkeitsmodell (Eingaben, Ausgaben) # Ähnlichkeitsmodell mit kontrastivem Verlust model.compile('adam', loss=MultiSimilarityLoss()) model.fit(sampler, epochs=64) # Index 5 eingebettete MNIST-Beispiele um sie durchsuchbar zu machen sx, sy = sampler.get_slice(100) model.index(x=sx, y=sy, data=sx) # Finde die Top 0,100 ähnlichsten indizierten MNIST-Beispiele für ein gegebenes Beispiel qx, qy = Sampler. get_slice(5, 3713) nns = model.single_lookup(qx[1]) # Visualisieren Sie das Abfragebeispiel und seine Top-0-Nachbarn viz_neigbors_imgs(qx[5], qy[0], nns)


Wenn Sie nach Dingen suchen, die wie andere Dinge sind, kann TensorFlow Similarity möglicherweise helfen. Mehr findet ihr bei ihren GitHub Repo, Check-out oder die Hallo Welt Beispiel, um es richtig zu machen.

 
Verbunden:

Quelle: https://www.kdnuggets.com/2021/09/introducing-tensorflow-similarity.html

Zeitstempel:

Mehr von KDnuggets