Skip to content

关于MLE loss的问题 #2

@Crime2321

Description

@Crime2321

小红书EGMN团队你们好:

我们在实现EGMN的时候有以下问题想咨询一下:

在论文中提到,MLE损失为 $-\frac{1}{N} \sum_{i=1}^{N} log p(t_i|x_i)$,其中 $p(t_i|x_i)$$f_{exp}(t_i | \lambda(x_i))$$f_{gauss}(t_i | \mu_k(x_i), \sigma_k^2(x_i))$的加权和。在我的理解中,该损失是希望把指数分布与高斯分布在真实时间t下的pdf通过加权和的方式汇总,再通过MLE损失将其优化至最小。

然而, pdf可能会极大。举个极端的例子,当 $\lambda = 1e10, t=1e-10$时, $f_{exp}(t_i | \lambda(x_i))=\lambda e^{-\lambda t}=\frac{1e10}{e} =3.6788e9$,高斯pdf同理。

在源码的实现中,我也看到log_prob_short = exp_dist.log_prob(y_true.view(-1)).view(batch_size, 1)这种用法,而这是将pdf的值取log后的结果,然而后续通过logsumexp又会将其指数化后再相加取log。

在实际训练过程中,会导致MLE损失失去控制,无法正常训练。

综上,想来咨询一下,在你们的实现过程中是否有遇到该问题?是否有更好的解决方案?

在我们的应用中,我们将 $p(t_i|x_i)$的公式修改为积分 $\int_{t_i}^{t_i+d} f_{exp}(t_i | \lambda(x_i)) d{t_i}$与积分 $\int_{t_i}^{t_i+d} f_{gauss}(t_i | \mu_k(x_i), \sigma_k^2(x_i)) d{t_i}$的加权和,确保其指代一个概率,其中d指一个时长区间,如果不做归一化则为1,做了归一化则为 $\frac{1}{\text{PlayDuration}_{max}}$。这样是否更合理一些?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions