Student-t negative-log-likelihood misfit¶
Definition¶
Modelling the residual \(r = d_{\mathrm{syn}} - d_{\mathrm{obs}}\) as Student's-t with \(\nu\) degrees of freedom and scale \(\sigma\), the data-dependent part of the negative log-likelihood is
\[
\rho^{\nu,\sigma}(r) \;=\; \frac{\nu+1}{2}\,\log\!\Bigl(1 + \tfrac{1}{\nu}(r/\sigma)^2\Bigr).
\]
Heavy tails ⇒ the influence function
\[
\rho'(r) = \frac{(\nu+1)\,r}{\nu\sigma^2 + r^2}
\]
saturates as \(|r|\to\infty\), hence strong outlier resistance.
Limits¶
- \(\nu = 1\): Cauchy/Lorentzian (matches
CauchyLoss(c=sigma)up to the fixed factor \(2/\sigma^2\)). - \(\nu \to \infty\): Gaussian / L2 (matches
L2Loss(half=True)/sigma^2). full_nll=Trueadds the data-independent normalisation constants of the log-pdf so the loss is the complete negative log-likelihood — useful if you want to compare runs at different \((\nu,\sigma)\) on an absolute scale.
When to use¶
Field data with heavy-tailed noise and an unknown number of bad traces. Tune \(\nu\) to control how aggressively outliers are down-weighted (\(\nu=1\) is most aggressive; \(\nu=5\)–\(20\) is a common compromise; large \(\nu\) degrades to L2).
API¶
from sweep_loss import StudentTLoss, student_t_loss
StudentTLoss(nu=4.0, sigma=0.5)(syn, obs)
student_t_loss(syn, obs, nu=4.0, sigma=0.5, full_nll=False)
Tests¶
tests/test_student_t.py checks:
- point-wise formula on hand-picked residuals,
- zero at zero,
- the \(\nu=1\) ↔ Cauchy correspondence,
- the \(\nu\to\infty\) ↔ L2 correspondence (float64),
full_nll=Trueadds exactly the analytic constant,- gradient saturates at large \(|r|\),
- invalid parameters raise.
References¶
- Aravkin, A. Y., van Leeuwen, T. & Herrmann, F. J. (2011). Robust FWI using Student-t distribution. SEG Technical Program Expanded Abstracts, pp. 2669-2673. doi:10.1190/1.3627747
- Aravkin, A., Burke, J. V. & Friedlander, M. P. (2013). Variational properties of value functions. SIAM J. Optim. 23 (3), 1689-1717. doi:10.1137/120899157