score-based model

En generativ model der lærer gradienten af datæns log-tæthed (score-funktionen) for at generere nye data via Langevin-dynamik.

Kort fortalt

En type model, der lærer, i hvilken retning man skal justere et støjende datapunkt for at gøre det mere realistisk, og bruger denne viden til at generere nye data.

Kategori
model
Niveau
øvet

Betydninger

1
  1. 1

    En generativ model der eksplicit estimerer score-funktionen (∇_x log p(x)) for en datadistribution og anvender Langevin-dynamik til at generere prøver.

    • Score-baserede modeller kan generere højkvalitetsbilleder ved at iterativt denoising.Song & Ermon, 2019
    • Ved at tilføje støj til data og lære at fjerne den, opnår score-baserede modeller state-of-the-art resultater.Song et al., 2021

Hvornår bruges det

Score-baserede modeller anvendes primært til generering af billeder, lyd og andre kontinuerte data. De er grundlaget for mange moderne diffusionmodeller og kan også bruges til betinget generering og inpainting.

Formel

Denoising score matching objective: L(θ) = E_{p_data(x) p_σ(x̃|x)}[½||s_θ(x̃) - (x̃ - x)/σ²||^2]

Kodeeksempel

import torch
import torch.nn as nn

class ScoreNet(nn.Module):
    def __init__(self):
        super().__init__()
        self.net = nn.Sequential(nn.Linear(2, 128), nn.ReLU(), nn.Linear(128, 2))
    def forward(self, x, sigma):
        return self.net(x) / sigma

model = ScoreNet()
optimizer = torch.optim.Adam(model.parameters())
for x in dataloader:
    sigma = 0.1
    noise = torch.randn_like(x) * sigma
    x_noisy = x + noise
    score = model(x_noisy, sigma)
    target = -noise / sigma**2
    loss = ((score - target)**2).mean()
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

Eksempel på træning af et score-netværk med denoising score matching.

Oprindelse

Termen 'score' stammer fra statistik og betegner gradienten af log-sandsynlighedstætheden. 'Score-baseret model' blev introduceret af Song og Ermon i 2019.

Afledte ord

3

Kilder

2