Autoencodere til repræsentationslæring
Encoder-decoder-arkitektur, bottleneck, reconstruction loss, anvendelser inden for anomalidetektion.
Autoencodere til repræsentationslæring er en gratis Lær AI med Python-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Lær AI med Python, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Lær AI med Python-kurset indeholder 4 lektioner i alt.
Hvad er en autokoder?
En autokoder lærer at komprimere data til en lille kode og genskabe dem. Den har to dele: en indkoder, der komprimerer, og en afkoder, der bygger dataene op igen. Indsnævringen i midten tvinger den til at lære, hvad der er vigtigt.
import torch
import torch.nn as nnIdéen med flaskehalsen
Det smalle mellemlag er flaskehalsen eller den latente kode. Ved at tvinge al information gennem nogle få tal skal netværket kassere støj og bevare datasættets væsentlige struktur.
Opbygning af indkoderen
For billeder på 28x28 (784 pixels) gør indkoderen inputtet mindre trin for trin: 784 til 256 til en latent kode med 64 dimensioner. Hvert Linear-lag efterfølges af en ReLU-ikke-linearitet.
encoder = nn.Sequential(
nn.Linear(784, 256),
nn.ReLU(),
nn.Linear(256, 64)
)Opbygning af dekoderen
Dekoderen spejler encoderen og udvider koden på 64 dimensioner tilbage til 784 pixels. En afsluttende Sigmoid begrænser uddata til [0,1], så de passer til de normaliserede pixelværdier.
decoder = nn.Sequential(
nn.Linear(64, 256),
nn.ReLU(),
nn.Linear(256, 784),
nn.Sigmoid()
)Den komplette autoencoder
Sæt encoderen og dekoderen sammen i ét modul. Det fremadgående gennemløb koder først og dekoder derefter, så der returneres en rekonstruktion med samme form som inddataene.
class AutoEncoder(nn.Module):
def __init__(self, enc, dec):
super().__init__()
self.enc, self.dec = enc, dec
def forward(self, x):
z = self.enc(x)
return self.dec(z)Rekonstruktionstab (MSE)
Træningsmålet er selve inddataene. Middelkvadratisk fejl måler, hvor langt rekonstruktionen er fra den oprindelige pixel for pixel. Ved at minimere den lærer modellen at komprimere trofast.
criterion = nn.MSELoss()
x_flat = x.view(x.size(0), -1)
recon = model(x_flat)
loss = criterion(recon, x_flat)Træning af autoencoderen
Træningen foregår uden opsyn: ingen etiketter, kun inddata. Løkken er den sædvanlige zero_grad, forward, backward, step, men tabet sammenligner uddatene med inddataene.
optimizer.zero_grad()
recon = model(x_flat)
loss = criterion(recon, x_flat)
loss.backward()
optimizer.step()Det latente rum
Efter træningen afbilder encoderen hvert inddata til et punkt i det latente rum. Lignende inddata lander tæt på hinanden, så denne kode på 64 dimensioner er en indlært, kompakt repræsentation af dataene.
z = model.enc(x_flat)
print(z.shape) # [batch, 64]Visualisering med t-SNE
Det latente rum på 64 dimensioner er svært at se. t-SNE projicerer det til 2D, så det kan vises i et diagram. Klyngerne i diagrammet viser, at autoencoderen har samlet lignende elementer uden nogensinde at se etiketter.
from sklearn.manifold import TSNE
codes = model.enc(all_data).detach().numpy()
proj = TSNE(n_components=2).fit_transform(codes)
# scatter plot proj colored by true labelAnomalidetektion
En autoencoder, der er trænet på normale data, rekonstruerer dem godt, men har svært ved anomalier, den aldrig har set. En høj rekonstruktionsfejl markerer en afviger og fungerer som en effektiv anomalidetektor uden opsyn.
errors = ((model(data) - data) ** 2).mean(dim=1)
anomalies = errors > thresholdHvorfor lære repræsentationer?
Den egentlige gevinst er den latente kode: en indlært egenskabsvektor, som du kan bruge til klyngedannelse, visualisering, anomalidetektion eller som inddata til en anden model, alt sammen lært uden etiketter.
Hurtig kontrol
Afprøv din forståelse af autoencodere.
Opsummering: Autoencodere
Du byggede en encoder (784 til 256 til 64) og en spejlet dekoder, som blev trænet med MSE-rekonstruktionstab og uden etiketter. Du brugte den latente kode til at lære repræsentationer, visualiserede den med t-SNE og detekterede anomalier via høj rekonstruktionsfejl.
Lær Python med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 53
- Lektioner
- 225
Ofte stillede spørgsmål
Er lektionen “Autoencodere til repræsentationslæring” gratis?
Ja — alle 3 lektioner i læringssporet Lær AI med Python, inklusive “Autoencodere til repræsentationslæring”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Lær AI med Python-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Autoencodere til repræsentationslæring”?
Encoder-decoder-arkitektur, bottleneck, reconstruction loss, anvendelser inden for anomalidetektion. Du øver dig i Lær AI med Python med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Lær AI med Python?
Der kræves ingen tidligere erfaring. Lær AI med Python på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Autoencodere til repræsentationslæring”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Lær AI med Python-lektion?
Ja. Alle Lær AI med Python-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Autoencodere til repræsentationslæring
- Variational autoencodere (VAE)
- GAN'er: generator og discriminator
- Betingede GAN'er og style transfer