--- rl_score_centering.v1.py 2026-11-04 02:50:30.462151190 +0000 +++ rl_score_centering.py 2026-11-04 02:50:30.471151150 +0000 @@ -22,7 +22,7 @@ p_tail = torch.clamp(1 - p_head.sum(-1), min=EPS); q_tail = torch.clamp(1 - q_head.sum(-1), min=EPS) rho = q_tail / p_tail alpha = rho * w(1 / rho) - head_weight = w(torch.exp(head_logp - samp_head)) + head_weight = w(torch.exp(torch.where(hm > 0, head_logp - samp_head, torch.zeros_like(head_logp)))) # empty slots hold -1e9 residual = (q_head * head_weight - alpha[:, None] * p_head) * hm correction = (residual.detach() * head_logp).sum(-1) token_weight = w(torch.exp(token_logp - samp_tok))