Hi! Thanks for releasing UltraGCN.
I’m trying to match the paper objective with the implementation. In the paper, the user–item objective is written as (L = L_O + \lambda L_C), where (L_O) is the unweighted BCE (Eq.13) and (L_C) is the (\beta)-weighted constraint loss (Eq.12).
In the code, cal_loss_L appears to use a single BCE-with-logits where each (u,i)/(u,j) term is weighted by omega_weight (built from beta_uD and beta_iD, with w1,w2,w3,w4). I don’t see an explicit separate (L_O) term—so it seems the user–item objective may be implemented as a single weighted BCE.
Could you confirm the intended correspondence? Specifically: is (L_O) intentionally omitted (i.e., using only the weighted form), or is (L_O) implicitly represented (e.g., via the w1/w3 offsets) or elsewhere in the training code?
Thanks a lot for the clarification!
Hi! Thanks for releasing UltraGCN.
I’m trying to match the paper objective with the implementation. In the paper, the user–item objective is written as (L = L_O + \lambda L_C), where (L_O) is the unweighted BCE (Eq.13) and (L_C) is the (\beta)-weighted constraint loss (Eq.12).
In the code,
cal_loss_Lappears to use a single BCE-with-logits where each (u,i)/(u,j) term is weighted byomega_weight(built frombeta_uDandbeta_iD, withw1,w2,w3,w4). I don’t see an explicit separate (L_O) term—so it seems the user–item objective may be implemented as a single weighted BCE.Could you confirm the intended correspondence? Specifically: is (L_O) intentionally omitted (i.e., using only the weighted form), or is (L_O) implicitly represented (e.g., via the
w1/w3offsets) or elsewhere in the training code?Thanks a lot for the clarification!