Introductie van TensorFlow-overeenkomst

Bronknooppunt: 1079311

Introductie van TensorFlow-overeenkomst

TensorFlow Similarity is een nieuw uitgebrachte bibliotheek van Google die het trainen, indexeren en opvragen van gelijkenismodellen vergemakkelijkt. Bekijk hier meer.


Vaak moeten we dingen kunnen vinden die op andere dingen lijken. Gelijkenis zoeken is daarvoor een handige techniek. In de gegevenswetenschap, contrastief leren kan worden gebruikt om gelijkenismodellen te bouwen die vervolgens kunnen worden gebruikt voor het zoeken naar overeenkomsten.

gelijkenis modellen zijn getraind om inbeddingen uit te voeren waarin items zijn ingesloten in een metrische ruimte, wat resulteert in een situatie waarin vergelijkbare items dicht bij elkaar liggen en verder van ongelijke items. Dit is direct gerelateerd - zowel intuïtief als wiskundig - aan woordinbeddingen, waarmee u al bekend bent; Parijs en Londen liggen dicht bij elkaar, evenals mosterd en ketchup, maar deze 2 groepen liggen relatief verder van elkaar.

Op dezelfde manier zouden we een gelijkenismodel kunnen gebruiken om bijvoorbeeld voertuigen te vergelijken. BMW- en Mercedes-sedans zouden bijvoorbeeld dicht bij elkaar worden ingebed, terwijl Yamaha- en Kawasaki-motorfietsen dicht bij elkaar zouden zijn ingebed. De motorfietsen zouden relatief verder verwijderd zijn van de sedans, die op hun beurt op afstand zouden staan ​​van andere ongelijke voertuigen zoals boten, campers, bestelwagens, fietsen, enz.

Figuur
Overeenstemmingsmodel overzicht ((bron))

 

Deep learning wordt gebruikt om de neurale netwerken te trainen die vaak worden gebruikt voor deze gelijkenismodellen. Om de training van dergelijke modellen te vergemakkelijken, heeft Google zeer recent uitgebracht TensorFlow-overeenkomst.

Tensorflow Similarity biedt state-of-the-art algoritmen voor metrisch leren en alle benodigde componenten voor het onderzoeken, trainen, evalueren en bedienen van op overeenkomsten gebaseerde modellen.

Nadat een model is getraind, wordt een inbeddingsindex gebouwd om het zoeken te vergemakkelijken. Voor het zoeken gebruikt TF Similarity Fast Approximate Nearest Neighbor search (ANN) om de dichtstbijzijnde overeenkomsten te vinden. Aangezien de afstand tussen ingesloten items een functie is van een afstandsmetriek, zijn zoekopdrachten zowel snel als nauwkeurig met behulp van ANN.

Gelijkenismodellen zijn ook flexibel en uitbreidbaar, waardoor een onbeperkt aantal klassen van items aan het model kunnen worden toegevoegd zonder omscholing; bereken eenvoudig representatieve inbedding van nieuwe items en voeg ze toe aan de bestaande index.

Figuur
Overzicht TensorFlow-overeenkomst ((bron))

 

TensorFlow Gelijkwaardigheid vergemakkelijkt de training van gelijkenismodellen, evenals de daaropvolgende bevraging, intuïtief, vooral met de introductie van het nieuwe Keras-model SimilarityModel(), die het insluiten van indexering en query's ondersteunt. Met TF-overeenkomst is end-to-end modeltraining en query's eenvoudig.

Om te demonstreren, is hier een voorbeeldcode van de TF-overeenkomst: GitHub-opslagplaats die de MNIST-dataset beknopt traint, indexeert en doorzoekt.

van tensorflow.keras importlagen # Inbedding van uitvoerlaag met L2-norm van tensorflow_similarity.layers import MetricEmbedding # Gespecialiseerd metrisch verlies van tensorflow_similarity.losses import MultiSimilarityLoss # Subclassed Keras Model met ondersteuning voor indexering van tensorflow_similarityMo.models Dataset import Gelijkenis rechtstreeks uit de tf-datasetcatalogus van tensorflow_similarity.samplers import TFDatasetMultiShotMemorySampler # Nearest buur visualizer van tensorflow_similarity.visualization import viz_neigbors_imgs # Datasampler die gebalanceerde batches genereert uit MNIST dataset sampler = TFDatasetMultiSampler-klassen = TFDatasetMultiShotMemorySnameler met behulp van standaard Keras-lageninvoer = lagen.Input(shape=(10, 28, 28)) x = layers.Rescaling(1/1)(inputs) x = layers.Conv255D(2, 64, activation='relu')( x) x = lagen.Flatten()(x) x = lagen.Dense(3, activatie='relu')(x) uitgangen = MetricEmbedding(64)(x) # B gebruik een gespecialiseerd gelijkenismodelmodel = Gelijkwaardigheidsmodel (invoer, uitvoer) # Train Gelijkwaardigheidsmodel met contrastief verlies model.compile('adam', loss=MultiSimilarityLoss()) model.fit(sampler, epochs=64) # Index 5 ingebedde MNIST-voorbeelden om ze doorzoekbaar te maken sx, sy = sampler.get_slice(100) model.index(x=sx, y=sy, data=sx) # Zoek de top 0,100 meest gelijkaardige geïndexeerde MNIST-voorbeelden voor een gegeven voorbeeld qx, qy = sampler. get_slice(5, 3713) nns = model.single_lookup(qx[1]) # Visualiseer het queryvoorbeeld en zijn top 0 buren viz_neigbors_imgs(qx[5], qy[0], nns)


Als je merkt dat je op zoek bent naar dingen die op andere dingen lijken, kan TensorFlow Similarity je misschien helpen. Je kunt meer vinden op hun GitHub repo, Of bekijk de Hallo Wereld voorbeeld om er direct mee aan de slag te gaan.

 
Verwant:

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

Tijdstempel:

Meer van KDnuggets