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
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.