Przedstawiamy podobieństwo TensorFlow

Węzeł źródłowy: 1079311

Przedstawiamy podobieństwo TensorFlow

TensorFlow Similarity to nowo wydana biblioteka Google, która ułatwia uczenie, indeksowanie i odpytywanie modeli podobieństwa. Sprawdź więcej tutaj.


Często musimy być w stanie znaleźć rzeczy, które przypominają inne rzeczy. Wyszukiwanie podobieństw jest przydatną techniką, aby to zrobić. W nauce o danych uczenie kontrastowe można wykorzystać do budowy modeli podobieństwa, które następnie można wykorzystać do wyszukiwania podobieństw.

Modele podobieństwa są wyszkoleni do wyprowadzania osadzeń, w których elementy są osadzone w przestrzeni metrycznej, co powoduje sytuację, w której podobne elementy znajdują się blisko siebie i dalej od niepodobnych elementów. Jest to bezpośrednio związane — zarówno intuicyjnie, jak i matematycznie — z osadzaniem słów, które już znasz; Paryż i Londyn są blisko siebie, podobnie jak musztarda i keczup, ale te dwie grupy są stosunkowo dalej od siebie.

W ten sam sposób moglibyśmy wykorzystać model podobieństwa do porównywania, powiedzmy, pojazdów. Na przykład sedany BMW i Mercedes byłyby osadzone blisko siebie, podczas gdy motocykle Yamaha i Kawasaki byłyby osadzone blisko siebie. Motocykle byłyby stosunkowo dalej od sedanów, które z kolei byłyby oddalone od innych niepodobnych pojazdów, takich jak łodzie, samochody kempingowe, furgonetki, rowery itp.

Postać
Przegląd modelu podobieństwa (źródło)

 

Głębokie uczenie służy do trenowania sieci neuronowych, które często są wykorzystywane w tych modelach podobieństwa. Aby ułatwić szkolenie takich modeli, Google niedawno wydało TensorFlow Podobieństwo.

Tensorflow podobieństwo oferuje najnowocześniejsze algorytmy do uczenia się metryk i wszystkie niezbędne komponenty do badania, szkolenia, oceny i obsługi modeli opartych na podobieństwie.

Po wytrenowaniu modelu budowany jest indeks osadzeń w celu ułatwienia wyszukiwania. Do wyszukiwania funkcja TF Similarity używa szybkiego wyszukiwania najbliższego najbliższego sąsiada (ANN) w celu wyszukania najbliższych dopasowań. Ponieważ odległość między osadzonymi elementami jest funkcją metryki odległości, wyszukiwania przy użyciu SSN są zarówno szybkie, jak i dokładne.

Modele podobieństwa są również elastyczne i rozszerzalne, co pozwala na dodawanie do modelu nieograniczonej liczby klas elementów bez konieczności ponownego szkolenia; po prostu oblicz reprezentatywne osadzenia nowego elementu i dodaj je do istniejącego indeksu.

Postać
Przegląd podobieństwa TensorFlow (źródło)

 

TensorFlow Similarity ułatwia trenowanie modeli podobieństwa, a także późniejsze intuicyjne odpytywanie, zwłaszcza po wprowadzeniu nowego modelu Keras SimilarityModel(), który obsługuje indeksowanie osadzania i zapytania. Dzięki podobieństwu TF kompleksowe szkolenie i zapytania dotyczące modelu są proste.

Aby zademonstrować, oto przykładowy kod z podobieństwa TF Repozytorium GitHub który zwięźle trenuje, indeksuje i wysyła zapytania do zestawu danych MNIST.

from tensorflow.keras import layer # Osadzanie warstwy wyjściowej w normie L2 from tensorflow_similarity.layers import MetricEmbedding # Specjalistyczna utrata metryki z tensorflow_similarity.losses import MultiSimilarityLoss # Podklasy model keras z obsługą indeksowania z tensorflow_similarity import Data sample that.models bezpośrednio z katalogu zbiorów danych tf from tensorflow_similarity.samplers import TFDatasetMultiShotMemorySampler # Wizualizator najbliższego sąsiada z tensorflow_similarity.visualization import viz_neigbors_imgs # Próbnik danych generujący zrównoważone partie z zestawu danych MNIST sampler = TFDatasetMultiShotn_Memory_names, class10) przy użyciu standardowych warstw Keras input = layer.Input(shape=(28, 28, 1)) x = warstwy.Rescaling(1/255)(input) x = layer.Conv2D(64, 3, aktywacja='relu')( x) x = warstwy.Flatten()(x) x = warstwy.Dense(64, aktywacja='relu')(x) outputs = MetricEmbedding(64)(x) # B uild wyspecjalizowany model podobieństwa = SimilarityModel(wejścia, wyjścia) # Trenuj model podobieństwa za pomocą kontrastywnej straty model.compile('adam', loss=MultiSimilarityLoss()) model.fit(sampler, epochs=5) # Indeks 100 przykładów osadzonych MNIST aby można je było przeszukiwać sx, sy = sampler.get_slice(0,100) model.index(x=sx, y=sy, data=sx) # Znajdź 5 najbardziej podobnych indeksowanych przykładów MNIST dla danego przykładu qx, qy = sampler. get_slice(3713, 1) nns = model.single_lookup(qx[0]) # Wizualizuj przykład zapytania i jego 5 największych sąsiadów viz_neigbors_imgs(qx[0], qy[0], nns)


Jeśli okaże się, że szukasz rzeczy, które przypominają inne rzeczy, funkcja TensorFlow podobieństwa może być w stanie Ci pomóc. Więcej znajdziesz na ich GitHub repoLub sprawdzeniu Witaj świecie przykład, aby dostać się do tego.

 
Związane z:

Źródło: https://www.kdnuggets.com/2021/09/introducing-tensorflow-similarity.html

Znak czasu:

Więcej z Knuggety