DRSY / EMO

[ICLR 2024]EMO: Earth Mover Distance Optimization for Auto-Regressive Language Modeling(https://arxiv.org/abs/2310.04691)
114 stars 14 forks source link

关于emo loss的疑问 #7

Open Vincent-Poirot opened 11 months ago

Vincent-Poirot commented 11 months ago

gt_q = (q_grad * one_hot).detach() q_final = q_grad - gt_q

理论上改完之后loss的值应该不变,但现在使用公式$1 − ( EQ{\theta})^TEP$算出来修改之前和之后的结果不同,又验证了公式$Q{\theta}^TCP$,修改前后相同,应该是$Q{\theta}$本身发生了变化导致$Q{\theta}^TP$的值不等于1了,所以 emo_loss = (1 - torch.sum(p_contextual_repr q_contextual_repr, dim=-1))是不是需要再减去一项 torch.sum(gt_q stable_onehot, dim=-1)?

另外,在ground-truth token处因为$1-E^TE$对角线一直为0,梯度本身也会乘以这个值,相当于ground-truth token处的梯度为0,也不需要更新梯度,这两行代码是否还有存在的必要?

DRSY commented 11 months ago

理论上确实不需要这两行代码,这也是我们先前版本的实现,发现在某些特定训练设置下会出现Loss越来越大的情况。后来经过调整发现目前repo里的实现方式能达到和MLE一个比较好的结合,下游效果也比较好。我们正在调试测试原来的实现,有结果会及时更新的。