PaddleRec
PaddleRec copied to clipboard
关于escm2算法的疑问
def counterfact_ipw(self, loss_cvr, ctr_num, O, ctr_out_one):
PS = paddle.multiply(
ctr_out_one, paddle.cast(
ctr_num, dtype="float32"))
min_v = paddle.full_like(PS, 0.000001)
PS = paddle.maximum(PS, min_v)
IPS = paddle.reciprocal(PS)
batch_shape = paddle.full_like(O, 1)
batch_size = paddle.sum(paddle.cast(
batch_shape, dtype="float32"),
axis=0)
#TODO this shoud be a hyparameter
IPS = paddle.clip(IPS, min=-15, max=15) #online trick
IPS = paddle.multiply(IPS, batch_size)
IPS.stop_gradient = True
loss_cvr = paddle.multiply(loss_cvr, IPS)
loss_cvr = paddle.multiply(loss_cvr, O)
return paddle.mean(loss_cvr)
IPW方法为什么要乘batch_size,论文中也没发现需要做这个操作?IPS = paddle.multiply(IPS, batch_size)