From c142ff98f404105dfe7f1719e2d24a4dd1646c95 Mon Sep 17 00:00:00 2001 From: Aner Zakobar Date: Fri, 3 Jul 2026 00:57:18 +0300 Subject: [PATCH] New figure! New content! --- .gitignore | 3 + .../method/figures/threshold_weighting.pdf | Bin 0 -> 34473 bytes .../method/figures/threshold_weighting.png | Bin 0 -> 64985 bytes content/method/figures/threshold_weighting.py | 108 ++++++++++++++++++ content/method/method.tex | 58 ++++++++++ flake.nix | 2 +- 6 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 content/method/figures/threshold_weighting.pdf create mode 100644 content/method/figures/threshold_weighting.png create mode 100644 content/method/figures/threshold_weighting.py diff --git a/.gitignore b/.gitignore index feb61c3..87870a7 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,6 @@ _region_.prv/ # Auto-downloaded LaTeX package files *.sty +*.pdf +.#* +*.xdv diff --git a/content/method/figures/threshold_weighting.pdf b/content/method/figures/threshold_weighting.pdf new file mode 100644 index 0000000000000000000000000000000000000000..844e07588676883367c19fad4ec55ba0dbb0d204 GIT binary patch literal 34473 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

|>N;qRhf5}%$ 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 b3>t^i!vzPo?XNhcg&#L(Pp67~zn=aVs>b3h literal 0 HcmV?d00001 diff --git a/content/method/figures/threshold_weighting.py b/content/method/figures/threshold_weighting.py new file mode 100644 index 0000000..f100309 --- /dev/null +++ b/content/method/figures/threshold_weighting.py @@ -0,0 +1,108 @@ +""" +Illustrates the gradient locality property of KDE-ROLL. + +Upper panel: score distributions for both classes with operating threshold. +Lower panel: gradient magnitude per sample, showing bell-shaped decay from threshold. + +Run from the thesis root: + nix develop --command python3 content/method/figures/threshold_weighting.py +""" + +import numpy as np +import matplotlib +matplotlib.use("Agg") +import matplotlib.pyplot as plt + +# --- Add these configuration rules right here --- +plt.rcParams.update({ + "text.usetex": False, # Rely on Matplotlib's math parser instead of the system compiler + "mathtext.fontset": "cm", # Emulate standard LaTeX Computer Modern styles flawlessly + "pdf.fonttype": 42 # Ensure fonts are embedded as TrueType vector curves instead of Type 3 paths +}) + +OUT_DIR = "content/method/figures" + +np.random.seed(7) + +# --- Data ------------------------------------------------------------------ +n = 120 +alpha = 0.25 # target FPR + +neg_scores = np.sort(np.random.normal(-0.6, 0.75, n)) +pos_scores = np.sort(np.random.normal(1.1, 0.80, n)) + +# Threshold: alpha-quantile of the negative-class scores +tau = np.percentile(neg_scores, 100 * (1 - alpha)) + +# --- Bandwidth (Silverman's rule per class) -------------------------------- +h_neg = 1.06 * neg_scores.std() * n ** (-1 / 5) +h_pos = 1.06 * pos_scores.std() * n ** (-1 / 5) + + +def sigma_prime(x, h): + """Logistic kernel PDF: derivative of the sigmoid-smoothed CDF.""" + e = np.exp(-np.abs(x) / h) + return e / (h * (1 + e) ** 2) + + +# --- KDE-ROLL gradients (eq:kde-grad-combined) ---------------------------- +# y=1: (1/n) * sigma_prime(score - tau) +grad_pos = (1.0 / n) * sigma_prime(pos_scores - tau, h_pos) + +# y=0: -(scale) * sigma_prime(tau - score_i) / sum_j[sigma_prime(tau - score_j)] +# where scale = (1/n) * sum_j[sigma_prime(pos_j - tau)] +neg_kernel = sigma_prime(tau - neg_scores, h_neg) +scale = (1.0 / n) * np.sum(sigma_prime(pos_scores - tau, h_pos)) +grad_neg_signed = -scale * neg_kernel / neg_kernel.sum() +grad_neg_abs = np.abs(grad_neg_signed) + +# --- Smooth reference bell curves ----------------------------------------- +x_ref = np.linspace(neg_scores.min() - 0.3, pos_scores.max() + 0.3, 400) +bell_pos = sigma_prime(x_ref - tau, h_pos) +bell_pos *= (grad_pos.max() / bell_pos.max()) +bell_neg = sigma_prime(tau - x_ref, h_neg) +bell_neg *= (grad_neg_abs.max() / bell_neg.max()) + +# --- Plot ----------------------------------------------------------------- +C_NEG = "#4477AA" +C_POS = "#CC6633" +C_TAU = "#333333" + +fig, (ax1, ax2) = plt.subplots( + 2, 1, figsize=(5.5, 4.2), sharex=True, + gridspec_kw={"height_ratios": [1.3, 1.0]} +) +fig.subplots_adjust(hspace=0.06) + +# — Top: score distributions — +ax1.hist(neg_scores, bins=20, density=True, alpha=0.45, color=C_NEG, + label=r"Negative class ($y=0$)") +ax1.hist(pos_scores, bins=20, density=True, alpha=0.45, color=C_POS, + label=r"Positive class ($y=1$)") +ax1.axvline(tau, color=C_TAU, linestyle="--", linewidth=1.4, + label=rf"Threshold $\tau$ (FPR $=\alpha={alpha}$)") +ax1.set_ylabel("Density", fontsize=9) +ax1.set_yticks([]) +ax1.legend(fontsize=7.5, loc="upper right", framealpha=0.85) + +# — Bottom: gradient magnitudes — +ax2.scatter(neg_scores, grad_neg_abs, color=C_NEG, s=12, zorder=3, + alpha=0.75, label=r"$|\partial\mathcal{L}/\partial f_\theta(\mathbf{x})|$, $y=0$") +ax2.scatter(pos_scores, grad_pos, color=C_POS, s=12, zorder=3, + alpha=0.75, label=r"$\partial\mathcal{L}/\partial f_\theta(\mathbf{x})$, $y=1$") +ax2.plot(x_ref, bell_neg, color=C_NEG, linewidth=1.2, alpha=0.5) +ax2.plot(x_ref, bell_pos, color=C_POS, linewidth=1.2, alpha=0.5) +ax2.axvline(tau, color=C_TAU, linestyle="--", linewidth=1.4) +ax2.set_ylabel("Gradient magnitude", fontsize=9) +ax2.set_xlabel(r"Score $f_\theta(\mathbf{x})$", fontsize=9) +ax2.set_yticks([]) +ax2.legend(fontsize=7.5, loc="upper right", framealpha=0.85) + +for ax in (ax1, ax2): + ax.tick_params(labelsize=8) + ax.spines[["top", "right"]].set_visible(False) + +fig.savefig(f"{OUT_DIR}/threshold_weighting.pdf", bbox_inches="tight") +fig.savefig(f"{OUT_DIR}/threshold_weighting.png", bbox_inches="tight", dpi=180) +print(f"Saved to {OUT_DIR}/threshold_weighting.{{pdf,png}}") +print(f"Sum neg: {np.sum(grad_neg_signed)}, pos: {np.sum(grad_pos)}") diff --git a/content/method/method.tex b/content/method/method.tex index 89b2081..04e35d8 100644 --- a/content/method/method.tex +++ b/content/method/method.tex @@ -763,6 +763,64 @@ additive shift of the raw scores then produces a non-uniform shift of the transf changing the shape of the fitted distribution rather than merely translating it, and the balance property no longer holds. +\paragraph{Gradient locality.} +\label{para:gradient-locality} + +A second structural consequence of the ROLL formulation is that gradient mass is +\emph{concentrated near the operating threshold $\tau$}. Samples whose scores lie +close to $\tau$ receive disproportionately large gradient updates, while samples +already far on the correct side contribute very little. + +This follows directly from \Cref{eq:kde-grad-combined}. For the positive class ($y_i = 1$), +the gradient magnitude is +\[ + \left|\frac{\partial \mathcal{L}}{\partial f_\theta(\mathbf{x}_i)}\right| + = \frac{1}{|\mathcal{B}_1|}\,\sigma_1'(f_\theta(\mathbf{x}_i) - \tau), +\] +which is a bell-shaped kernel PDF that peaks when $f_\theta(\mathbf{x}_i) = \tau$ and +decays to zero as the score moves away from the threshold in either direction. +For the negative class ($y_i = 0$), the gradient is proportional to +$\sigma_0'(\tau - f_\theta(\mathbf{x}_i))$ (normalized over $\mathcal{B}_0$), which is +again bell-shaped and centred on $\tau$. + +The effect is that each gradient step focuses the model's attention on the region that +directly determines the operating-point performance: samples that could plausibly be +re-ranked relative to the threshold at the current step. Samples comfortably classified +on the correct side contribute negligible signal, not because they are deemed unimportant, +but because their contribution to the CDF estimate at $\tau$ is already saturated. + +This stands in contrast to standard losses such as cross-entropy, where the per-sample +gradient is determined by the predicted probability, with no direct dependence on an +operating threshold. Under heavy class imbalance this can cause the dominant class to +``push'' the threshold away from the intended operating point, a problem that gradient +locality avoids by construction. + +\begin{observation}[Gradient locality] +\label{obs:gradient-locality} +For KDE-ROLL, the gradient magnitude of sample $\mathbf{x}_i$ is proportional to +the kernel PDF evaluated at the distance between $f_\theta(\mathbf{x}_i)$ and the +operating threshold $\tau$. Samples nearest to $\tau$ receive the largest updates; +samples far from $\tau$ in either direction contribute negligible gradient. +\end{observation} + +\Cref{fig:threshold-locality} illustrates this for a simulated two-class setting. The +upper panel shows the score distributions and the operating threshold; the lower panel +shows the gradient magnitude of each sample. Both classes exhibit a clear bell-shaped +concentration of gradient mass around $\tau$, with smooth decay on either side. + +\begin{figure}[H] + \centering + \includegraphics[width=0.82\textwidth]{content/method/figures/threshold_weighting.pdf} + \caption{Gradient locality in KDE-ROLL. \textit{Upper}: score distributions for the + negative (blue, $y=0$) and positive (orange, $y=1$) classes; dashed line marks the + operating threshold $\tau$ at FPR $= \alpha$. \textit{Lower}: gradient magnitude + $|\partial\mathcal{L}/\partial f_\theta(\mathbf{x})|$ for each sample. Both classes + show a bell-shaped concentration of gradient mass near $\tau$, with samples far from + the threshold contributing negligible updates. Smooth curves are the kernel PDFs scaled + for reference.} + \label{fig:threshold-locality} +\end{figure} + \subsection{Gradient Computation and the Custom Backward Pass} \label{sec:roll-backward} diff --git a/flake.nix b/flake.nix index 05031b8..b1a8122 100644 --- a/flake.nix +++ b/flake.nix @@ -62,7 +62,7 @@ (pkgs.texlive.combine texPkgs) pkgs.culmus pkgs.fontconfig - (pkgs.python3.withPackages (ps: [ ps.sympy ])) + (pkgs.python3.withPackages (ps: [ ps.sympy ps.numpy ps.matplotlib ])) ]; shellHook = '' export FONTCONFIG_FILE="${fontsConf}"