shenweichen / DSIN

Code for the IJCAI'19 paper "Deep Session Interest Network for Click-Through Rate Prediction"
https://arxiv.org/abs/1905.06482
Apache License 2.0
433 stars 132 forks source link

关于结果 #11

Closed DoubleYing closed 2 years ago

DoubleYing commented 4 years ago

想问一下您,在taobao ad数据集上,最终的AUC是能够得到论文中结果的嘛? 因为我按照您的这个流程走下来,使用了5%的ad数据集(受硬件环境限制),但是最后AUC只有0.5+, 我就很怀疑是我哪里没有弄对吗?

shenweichen commented 4 years ago

可以看下readme里最后一段关于dsin的一些解释,dsin在我们离线实验的数据集偶然会出现loss变成nan的情况,怀疑是和参数的初始化有关系,这种情况下训练的到的auc很有可能是0.5+。建议观察下训练开始时的loss情况,如果出现异常请停止训练重新开始。

DoubleYing commented 4 years ago

嗯,感谢您的回复,我增大了数据集,使用了25%的ad数据,结果能达到0.6+了。

但是,我仍然有一个问题,就是在Session Interest Interacting Layer,您的论文中是用了Bi-LSTM来做的,我觉得换成其他模块,比如self-attention应该也能达到同样的效果吧,但是好像结果并不理想,在训练过程中loss持续升高,这让我很费解。 或许您能给我一些建议来解决这个问题吗?

649435349 commented 4 years ago

嗯,感谢您的回复,我增大了数据集,使用了25%的ad数据,结果能达到0.6+了。

但是,我仍然有一个问题,就是在Session Interest Interacting Layer,您的论文中是用了Bi-LSTM来做的,我觉得换成其他模块,比如self-attention应该也能达到同样的效果吧,但是好像结果并不理想,在训练过程中loss持续升高,这让我很费解。 或许您能给我一些建议来解决这个问题吗?

不好意思来晚了。。 我自己实验的时候换成 self-attention 会略跌一点,而且每个模块(Bi-LSTM or CNN or self-attention)应该有自己的特殊作用,主要看你想做什么。我们想捕捉用户的 session interest 的渐进和演化,那似乎用 Bi-LSTM 会更贴切这个目标;想捕捉用户 session interest 之间的关系,那 self-attention 更合适。当然我是感觉前者更合适哈。

DoubleYing commented 4 years ago

嗯,感谢您的回复,我增大了数据集,使用了25%的ad数据,结果能达到0.6+了。 但是,我仍然有一个问题,就是在Session Interest Interacting Layer,您的论文中是用了Bi-LSTM来做的,我觉得换成其他模块,比如self-attention应该也能达到同样的效果吧,但是好像结果并不理想,在训练过程中loss持续升高,这让我很费解。 或许您能给我一些建议来解决这个问题吗?

不好意思来晚了。。 我自己实验的时候换成 self-attention 会略跌一点,而且每个模块(Bi-LSTM or CNN or self-attention)应该有自己的特殊作用,主要看你想做什么。我们想捕捉用户的 session interest 的渐进和演化,那似乎用 Bi-LSTM 会更贴切这个目标;想捕捉用户 session interest 之间的关系,那 self-attention 更合适。当然我是感觉前者更合适哈。

嗯,我也是想要去学习兴趣的演化过程,然后是对Bi-LSTM有疑问,就是它学习了两个方向的演化,这不存在泄漏未来信息的问题吗?(self-attention是可以通过mask避免未来信息泄漏的问题的吧。) 所以我才想去尝试更改这个模块。 如果按照您的实验结果是略跌一点,那可能是我修改代码的问题,因为我始终停留在了0.5+,T-T 最后,也感谢您的回复。

649435349 commented 4 years ago

嗯,感谢您的回复,我增大了数据集,使用了25%的ad数据,结果能达到0.6+了。 但是,我仍然有一个问题,就是在Session Interest Interacting Layer,您的论文中是用了Bi-LSTM来做的,我觉得换成其他模块,比如self-attention应该也能达到同样的效果吧,但是好像结果并不理想,在训练过程中loss持续升高,这让我很费解。 或许您能给我一些建议来解决这个问题吗?

不好意思来晚了。。 我自己实验的时候换成 self-attention 会略跌一点,而且每个模块(Bi-LSTM or CNN or self-attention)应该有自己的特殊作用,主要看你想做什么。我们想捕捉用户的 session interest 的渐进和演化,那似乎用 Bi-LSTM 会更贴切这个目标;想捕捉用户 session interest 之间的关系,那 self-attention 更合适。当然我是感觉前者更合适哈。

嗯,我也是想要去学习兴趣的演化过程,然后是对Bi-LSTM有疑问,就是它学习了两个方向的演化,这不存在泄漏未来信息的问题吗?(self-attention是可以通过mask避免未来信息泄漏的问题的吧。) 所以我才想去尝试更改这个模块。 如果按照您的实验结果是略跌一点,那可能是我修改代码的问题,因为我始终停留在了0.5+,T-T 最后,也感谢您的回复。

其实在 NLP 里面也经常有这样的疑问,不过确实双向模型一般比单向好,可能确实有顺序关系。泄漏未来信息只要不是透露 label 相关的信息就行。如果是0.5+,可以重跑或者去掉 bias encoding 试试,我们会持续跟进这个问题~ 多谢关注~