SakuraXiaMF

Results 13 comments of SakuraXiaMF

₍˄·͈༝·͈˄*₎◞ ̑̑谢谢 ---- 回复的原邮件 ---- | 发件人 | Jin ***@***.***> | | 日期 | 2022年11月03日 09:39 | | 收件人 | ***@***.***> | | 抄送至 | ***@***.******@***.***> | | 主题 |...

并且当我删除 alignment, uniformity这两个差异指标之后,效果越来越好了…… # INFO best valid : {'recall@5': 0.0594, 'recall@10': 0.1029, 'recall@20': 0.1718, 'recall@50': 0.3393, 'mrr@5': 0.0327, 'mrr@10': 0.0382, 'mrr@20': 0.0429, 'mrr@50': 0.0482, 'ndcg@5': 0.0392, 'ndcg@10': 0.053, 'ndcg@20': 0.0704,...

> 当前代码复现的效果是DuoRec ≈ SASRec > CLS4Rec,但根据实际Paper中的应该是DuoRec > CLS4Rec > SASRec 我搞定了,参考清华的https://github.com/THUwangcy/ReChorus, 是人大的这个对比学习他们在进行对比学习标签设置的时候,暴力的将所有标签设置为0导致的。

等过几天吧,最近在赶ddl,有点忙 ---- 回复的原邮件 ---- | 发件人 | ***@***.***> | | 日期 | 2023年05月10日 22:17 | | 收件人 | ***@***.***> | | 抄送至 | ***@***.***>***@***.***> | | 主题 | Re: [RUCAIBox/RecBole-DA]...

` logits_mask = torch.scatter( torch.ones_like(mask), 1, torch.arange(mask.shape[0]).view(-1, 1).to(mask.device), 0 )#对角线为0,其他为1,(2*batch,2*batch) mask = mask * logits_mask #为512个1,其他为0,(2*batch,2*batch),正样本为1,其他为0 mask = ~mask mask = mask.fill_diagonal_(0) # print(mask.shape,torch.sum(~mask)) # mask [2*batch,2*batch], 对脚线是False,其他是true negative_samples =...

> 我大概明白你对正负样本的取法了,但是如果你沿用了他代码里sim的计算的话,正样本不是分布在对角线上的,应该是在对角线上下距离N的副对角线上,对角线上分布的是样本对自身的相似度,取cos会恒为1,取dot就是平方,这部分在计算对比损失时是没有意义的 不好意思,最近太忙了,忘记回复了。我是按照Thu的那个代码库写的。具体的来说,就是你这个思路

> @SakuraXiaMF 谢谢你! 不过代码有点乱,有点看不明白5555 不好意思,我把原来的代码注释了。为了让你知道我改了哪里~

logits_mask = torch.scatter( torch.ones_like(mask), 1, torch.arange(mask.shape[0]).view(-1, 1).to(mask.device), 0 )#对角线为0,其他为1,(2batch,2batch) mask = mask * logits_mask #为512个1,其他为0,(2batch,2batch),正样本为1,其他为0 mask = ~mask mask = mask.fill_diagonal_(0) # print(mask.shape,torch.sum(~mask)) # mask [2batch,2batch], 对脚线是False,其他是true negative_samples = sim[mask].reshape(N,...

> > > > 我大概明白你对正负样本的取法了,但是如果你沿用了他代码里sim的计算的话,正样本不是分布在对角线上的,应该是在对角线上下距离N的副对角线上,对角线上分布的是样本对自身的相似度,取cos会恒为1,取dot就是平方,这部分在计算对比损失时是没有意义的 > > > > > > 不好意思,最近太忙了,忘记回复了。我是按照Thu的那个代码库写的。具体的来说,就是你这个思路 > > 哦哦,但我意思是这并不能表明他原来的写法有问题,你的新写法得到的指标,在加入对比学习的loss以后会显著提升吗,我对这个事比较疑惑 你试试?他原来的写法,我的Recall,NDCG一直没有单独的CE效果好。但我感觉加入对比学习,loss不一定会降低很快但最后的acc一点会上去。因为对比学习除了CE还要加CL_loss,这个cl_loss还是很高的。这是我训练的效果,我不确定是否是对比学习的极限,但提高个1%~2%? 我看CL4Rec这个论文里的提升也就是0.5%?