Presentazione di TensorFlow Similarity

Nodo di origine: 1079311

Presentazione di TensorFlow Similarity

TensorFlow Similarity è una libreria rilasciata di recente da Google che facilita l'addestramento, l'indicizzazione e l'interrogazione dei modelli di somiglianza. Scopri di più qui.


Spesso abbiamo bisogno di essere in grado di trovare cose che sono come altre cose. Ricerca per somiglianza è una tecnica utile per farlo. Nella scienza dei dati, apprendimento contrastivo può essere utilizzato per costruire modelli di similarità che possono poi essere utilizzati per la ricerca di similarità.

Modelli di somiglianza sono addestrati per produrre incorporamenti in cui gli elementi sono incorporati in uno spazio metrico, determinando una situazione in cui elementi simili sono vicini l'uno all'altro e più lontani da elementi dissimili. Questo è direttamente correlato - sia intuitivamente che matematicamente - agli incorporamenti di parole, con i quali hai già familiarità; Parigi e Londra sono vicine l'una all'altra, così come la senape e il ketchup, ma questi due gruppi sono relativamente più distanti l'uno dall'altro.

Allo stesso modo, potremmo usare un modello di somiglianza per confrontare, ad esempio, i veicoli. Ad esempio, le berline BMW e Mercedes sarebbero integrate l'una vicino all'altra, mentre le moto Yamaha e Kawasaki si troverebbero strettamente integrate. Le motociclette sarebbero relativamente più lontane dalle berline, che a loro volta sarebbero distanziate da altri veicoli dissimili come barche, camper, furgoni, biciclette, ecc.

figura
Panoramica del modello di somiglianza (source)

 

L'apprendimento profondo viene utilizzato per addestrare le reti neurali che spesso si trovano utilizzate per questi modelli di somiglianza. Per facilitare la formazione di tali modelli, Google ha rilasciato molto di recente Somiglianza TensorFlow.

Tensorflow Similarity offre algoritmi all'avanguardia per l'apprendimento delle metriche e tutti i componenti necessari per ricercare, addestrare, valutare e servire modelli basati sulla somiglianza.

Dopo che un modello è stato addestrato, viene creato un indice degli incorporamenti per facilitare la ricerca. Per la ricerca, TF Similarity utilizza la ricerca Fast Approximate Nearest Neighbor (ANN) per recuperare le corrispondenze più vicine. Poiché la distanza tra gli elementi incorporati è una funzione di una metrica di distanza, le ricerche sono sia veloci che accurate utilizzando ANN.

I modelli di similarità sono anche flessibili ed estensibili, consentendo l'aggiunta di un numero illimitato di classi di elementi al modello senza riqualificazione; è sufficiente calcolare nuovi incorporamenti di elementi rappresentativi e aggiungerli all'indice esistente.

figura
Panoramica sulla somiglianza di TensorFlow (source)

 

TensorFlow Similarity facilita l'addestramento dei modelli di similarità, così come la successiva interrogazione, intuitiva, soprattutto con l'introduzione del nuovo modello Keras SimilarityModel(), che supporta l'incorporamento dell'indicizzazione e delle query. Con TF Similarity, l'addestramento e l'interrogazione del modello end-to-end sono semplici.

Per dimostrare, ecco un codice di esempio dalla somiglianza TF Archivio GitHub che addestra, indicizza e interroga in modo conciso il set di dati MNIST.

from tensorflow.keras import layer # Incorporamento del livello di output con norma L2 from tensorflow_similarity.layers import MetricEmbedding # Perdita metrica specializzata da tensorflow_similarity.losses import MultiSimilarityLoss # Modello keras sottoclasse con supporto per l'indicizzazione da tensorflow_similarity.models import similarityModel # Dataset sampler direttamente dal catalogo del set di dati tf da tensorflow_similarity.samplers import TFDatasetMultiShotMemorySampler # Visualizzatore del vicino più vicino da tensorflow_similarity.visualization import viz_neigbors_imgs # Campionatore di dati che genera batch bilanciati dal set di dati MNIST sampler = TFDatasetMultiShotMemorySampler class'10) utilizzando i livelli standard Keras input = layer.Input(shape=(28, 28, 1)) x = layer.Rescaling(1/255)(input) x = layer.Conv2D(64, 3,activate='relu')( x) x = layer.Flatten()(x) x = layer.Dense(64,activation='relu')(x) outputs = MetricEmbedding(64)(x) # B uild un modello di similarità specializzato model = SimilarityModel(input, outputs) # Addestra il modello di similarità usando la perdita di contrasto model.compile('adam', loss=MultiSimilarityLoss()) model.fit(sampler, epochs=5) # Index 100 esempi MNIST incorporati per renderli ricercabili sx, sy = sampler.get_slice(0,100) model.index(x=sx, y=sy, data=sx) # Trova i primi 5 esempi MNIST indicizzati più simili per un dato esempio qx, qy = sampler. get_slice(3713, 1) nns = model.single_lookup(qx[0]) # Visualizza l'esempio di query e i suoi primi 5 vicini viz_neigbors_imgs(qx[0], qy[0], nns)


Se ti ritrovi a cercare cose che sono come altre cose, TensorFlow Similarity potrebbe essere in grado di aiutarti. Puoi trovare di più sul loro Repository GitHub, Oppure visitare il Ciao a tutti esempio per capirlo.

 
Leggi Anche:

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

Timestamp:

Di più da KDnuggets