Auto-Encoder: Wat Is Het? En Waar Wordt Het Voor Gebruikt? (Deel 1)

een zachte introductie tot Auto-Encoder en enkele veelvoorkomende gebruikssituaties met Python-Code

Achtergrond:

Autoencoder is een niet-gecontroleerd kunstmatig neuraal netwerk dat leert hoe gegevens efficiënt te comprimeren en te coderen en vervolgens leert hoe de gegevens terug te reconstrueren van de gereduceerde gecodeerde representatie naar een representatie die zo dicht mogelijk bij de oorspronkelijke input ligt.

Autoencoder reduceert gegevensdimensies door te leren de ruis in de gegevens te negeren.

hier is een voorbeeld van de invoer/uitvoer afbeelding van de MNIST dataset naar een auto-encoder.

Autoencoder voor MNIST

Autoencodercomponenten:

Autoencoders bestaat uit 4 hoofdonderdelen:

1-Encoder: waarin het model leert hoe de invoerafmetingen te verminderen en de invoergegevens te comprimeren tot een gecodeerde weergave.

2-knelpunt: dat is de laag die de gecomprimeerde weergave van de invoergegevens bevat. Dit is de laagst mogelijke afmetingen van de invoergegevens.

3-Decoder: waarin het model leert hoe de gegevens van de gecodeerde representatie zo dicht mogelijk bij de oorspronkelijke invoer te reconstrueren.

4-Reconstruction Loss: dit is de methode die meet hoe goed de decoder presteert en hoe dicht de uitgang bij de oorspronkelijke ingang staat.

de training omvat het gebruik van rugpropagatie om het herstelverlies van het netwerk tot een minimum te beperken.

u vraagt zich vast af waarom ik een neuraal netwerk zou trainen om een afbeelding of data uit te voeren die precies hetzelfde is als de invoer! Dit artikel zal betrekking hebben op de meest voorkomende use cases voor Autoencoder. Laten we beginnen:

Autoencoder architectuur:

de netwerkarchitectuur voor autoencoders kan variëren tussen een eenvoudig FeedForward netwerk, LSTM netwerk of Convolutioneel neuraal netwerk, afhankelijk van de use case. We zullen een aantal van die architecturen in de nieuwe volgende paar regels verkennen.

er zijn vele manieren en technieken om anomalieën en uitschieters op te sporen. Ik heb dit onderwerp behandeld in een ander bericht hieronder:

echter, als u gecorreleerde invoergegevens hebt, zal de auto-encoder-methode zeer goed werken omdat de codering afhankelijk is van de gecorreleerde functies om de gegevens te comprimeren.

stel dat we een auto-encoder hebben getraind op de MNIST-dataset. Met behulp van een eenvoudig FeedForward neuraal netwerk, kunnen we dit bereiken door het bouwen van een eenvoudig 6 lagen netwerk zoals hieronder:

de uitvoer van de bovenstaande code is:

zoals u kunt zien in de uitvoer, is de laatste reconstructie verlies/fout voor de validatieset 0,0193 wat geweldig is. Als ik nu een normale afbeelding van de MNIST-dataset doorgeef, zal het herstelverlies erg laag zijn (< 0,02) maar als ik probeerde een andere Andere afbeelding door te geven (uitschieter of anomalie), zullen we een hoge waarde voor herstelverlies krijgen omdat het netwerk de afbeelding/invoer die als anomalie wordt beschouwd niet kon reconstrueren.

let op in de bovenstaande code kunt u alleen het encodergedeelte gebruiken om bepaalde gegevens of afbeeldingen te comprimeren en u kunt ook alleen het decodergedeelte gebruiken om de gegevens te decomprimeren door de decoderlagen te laden.

laten we nu wat anomalie detectie doen. De code hieronder gebruikt twee verschillende afbeeldingen om de anomaliescore (reconstructiefout) te voorspellen met behulp van het autoencoder netwerk dat we hierboven hebben getraind. de eerste afbeelding is van de MNIST en het resultaat is 5.43209. Dit betekent dat het beeld geen anomalie is. De tweede afbeelding die ik gebruikte, is een volledig willekeurige afbeelding die niet tot de trainingsdataset behoort en de resultaten waren: 6789.4907. Deze hoge fout betekent dat het beeld een anomalie is. Hetzelfde concept geldt voor elk type dataset.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.