B: Model af en svingning
Sinus-fase, kvadratisk loss, gradient og PyTorch gradient-nedstigning.
Et elektrisk kredsløb, som varierer ved en sinus-svingning, kan beskrives med
hvor $\hat{y}$ er modellen af det målte signal, $t$ er tiden, og $\theta$ er en ukendt parameter (fasen). Måledata:
| $t$ | 0 | 1 |
|---|---|---|
| $y$ | 0.8 | 0.9 |
Kvadratisk fejl som loss:
Falder denne model inden for det vi kalder “lineær regression”? Beskriv hvorfor / hvorfor ikke.
Vis svar Skjul svar
Her er tale om en regressionsmodel, men det er ikke lineær regression, da funktionen ikke er lineær i parameteren $\theta$.
Nej — ikke lineær regression (ikke lineær i θ).
Beregn loss-funktionens værdi for $\theta=0$.
Vis svar Skjul svar
1.45
Beregn gradienten af loss-funktionen for $\theta=0$.
Vis svar Skjul svar
−3.4
Hvad skal der stå på spørgsmålstegnets plads i PyTorch-koden?
t, y = torch.tensor([0., 1.]), torch.tensor([0.8, 0.9])
theta = torch.tensor([0.], requires_grad=True)
lr = 0.1
for step in range(100):
loss = torch.sum((y - torch.sin(2*torch.pi*t + theta))**2)
loss.backward()
with torch.no_grad():
theta -= ? # Gradient descent update
theta.grad.zero_()Vis svar Skjul svar
Gradient-opdateringen mangler: gradienten ganges med learning rate.
lr * theta.grad