Auto-Encoder: Vad Är Det? Och Vad Används Det För? (Del 1)

en mild introduktion till Auto-Encoder och några av dess vanliga användningsfall med Python-kod

Bakgrund:

Autoencoder är ett oövervakat artificiellt neuralt nätverk som lär sig hur man effektivt komprimerar och kodar data och lär sig hur man rekonstruerar data tillbaka från den reducerade kodade representationen till en representation som ligger så nära den ursprungliga ingången som möjligt.

Autoencoder, genom design, minskar datadimensioner genom att lära sig att ignorera bruset i data.

här är ett exempel på input/output bilden från MNIST dataset till en autoencoder.

Autoencoder för MNIST

Autoencoder komponenter:

Autoencoders består av 4 huvuddelar:

1 – kodare: där modellen lär sig att minska ingångsdimensionerna och komprimera indata till en kodad representation.

2-flaskhals: vilket är det lager som innehåller den komprimerade representationen av ingångsdata. Detta är de lägsta möjliga dimensionerna för ingångsdata.

3-avkodare: där modellen lär sig att rekonstruera data från den kodade representationen för att vara så nära den ursprungliga ingången som möjligt.

4-Rekonstruktionsförlust: detta är metoden som mäter mäta hur bra avkodaren utför och hur nära utgången är till den ursprungliga ingången.

träningen innebär då att man använder ryggutbredning för att minimera nätverkets återuppbyggnadsförlust.

du måste undra varför skulle jag träna ett neuralt nätverk bara för att mata ut en bild eller data som är exakt samma som ingången! Denna artikel kommer att täcka de vanligaste användningsfall för Autoencoder. Låt oss komma igång:

Autoencoder Architecture:

nätverksarkitekturen för autoencoders kan variera mellan ett enkelt FeedForward-nätverk, LSTM-nätverk eller Convolutional Neural Network beroende på användningsfallet. Vi kommer att utforska några av dessa arkitekturer i de nya nästa raderna.

det finns många sätt och tekniker för att upptäcka avvikelser och avvikelser. Jag har täckt detta ämne i ett annat inlägg nedan:

men om du har korrelerat indata kommer autoencoder-metoden att fungera mycket bra eftersom kodningsoperationen bygger på de korrelerade funktionerna för att komprimera data.

låt oss säga att vi har tränat en autoencoder på MNIST dataset. Med hjälp av en enkel FeedForward neuralt nätverk, kan vi uppnå detta genom att bygga en enkel 6 lager nätverk enligt nedan:

utsignalen från koden ovan är:

som du kan se i utmatningen är den senaste rekonstruktionsförlusten/felet för valideringsuppsättningen 0.0193 vilket är bra. Nu, om jag skickar någon normal bild från mnist-datasetet, kommer rekonstruktionsförlusten att vara mycket låg (< 0.02) men om jag försökte skicka någon annan annan bild (outlier eller anomali) kommer vi att få ett högt återuppbyggnadsförlustvärde eftersom nätverket misslyckades med att rekonstruera bilden/ingången som anses vara en anomali.

meddelande i koden ovan kan du bara använda kodardelen för att komprimera vissa data eller bilder och du kan också bara använda avkodningsdelen för att dekomprimera data genom att ladda avkodningsskikten.

nu, låt oss göra några anomali upptäckt. Koden nedan använder två olika bilder för att förutsäga anomali-poängen (rekonstruktionsfel) med hjälp av autoencoder-nätverket som vi tränade ovan. den första bilden är från MNIST och resultatet är 5.43209. Det betyder att bilden inte är en anomali. Den andra bilden jag använde är en helt slumpmässig bild som inte hör till träningsdataset och resultaten var: 6789.4907. Detta höga fel innebär att bilden är en anomali. Samma koncept gäller för alla typer av dataset.

Lämna ett svar

Din e-postadress kommer inte publiceras.