因果推断推荐系统工具箱 - CauseRec(二)

文章名称

【SIGIR-2021】【Zhejiang University, China/National University of Singapore】CauseRec: Counterfactual User Sequence Synthesis for Sequential Recommendation

核心要点

文章旨在解决用户行为序列系数且具有噪声,对模型稳定性和鲁棒性造成的影响。作者从观测序列中识别不可或缺的和可替换的concepts,concepts包括物品粒度和兴趣粒度两个层级。通过替换观测序列中这两种concepts,可以得到反事实的行为序列分布(counterfactual data distribution,相当于数据增广)。通过在观测行为和反事实行为上进行对比训练(contrastive learning),解决前述问题。

上一节介绍了问题的背景,作者的思路和整体框架以及作者提出的baseline。本节将详细介绍CauseRec的3个组成部分。

方法细节

问题引入

上一节描述了CauseRec的整体框架(如下图所示),可以分为3各部分。那么问题转化为,

  • 如何识别indispensable/dispensable concepts。
  • 如何替换indispensable/dispensable concepts以生成反事实序列(out-of-distribution counterfactual user sequences)。
  • 如何构建优化目标(作者利用了对比学习)学习模型参数。
CauseRec Framework

具体做法

Formulation

首先,回顾一下问题的形式化定义,

  • (所有)用户可能的行为序列空间记作\mathcal{ X},物品总空间记作\mathcal{Y}
  • 观测到的用户行为数据集为\mathcal{ D} = \{ (x_{u,t}, y_{u,t}) \}_{u=1,..N, t=1,..,T_u}。其中,u, t分别表示用户的序号和其行为序列的序号(一个人可能有多条行为序列),T_u表示该用户产生的(或者说观测到的)行为序列交互的总数。
  • x_{u,t} = \{ (y_{u,1:t-1}) \}表示用户的行为序列(指的是其中一条序列)。
  • SRS的目标是在给定x_{u,t}的情况下准确的预测y_{u,t},预测概率记作p(y_{u,t}=y|x_{u,t})

值得注意的是,作者表示,文章旨在解决召回阶段的问题,而非排序阶段。

Identification of Indispensable/Dispensable concepts

作者利用concept score来识别indispensable/dispensable concepts。

如前所述,这种识别可以在物品和兴趣两个粒度进行,

  • 物品粒度。作者利用行为序列C = X中的每一个物品c_i与target物品y(也就是行为序列中的最后一个)的相似度作为concept score,即p_i^{item} = \phi_\theta(c_i, y)\phi可以是任意计算相似度的函数,作者采用点积。
  • 兴趣粒度。作者利用attention机制,把用户行为序列转换为C = A\top X,其中A为attention张量(shape \mathbb{R}^{t\times K}),其计算公式如下图所示。最终,利用相似度函数,得到每个兴趣粒度的concepts score。
    Interest-level Attention

    Interest-level concepts scores

有了concepts scores,作者把排序后前50%的concepts当做是indispensable concepts,后50%的concepts当做是dispensable concepts。

Counterfactual Transformation

为了生成反事实行为序列,作者采用替换概率r_{rep}来替换indispensable/dispensable concepts(注意,这里的替换概率是常数,对indispensable/dispensable concepts采用同一个值,只是在标记为positive还是negative的时候,才用indispensable/dispensable区分)。

值得注意的是,作者强调可以直接从原始行为序列中删除某些行为。然而,这样会影响整体行为序列的长度,也会影醒行为在C序列中的相对位置,进而影响整体语义。

这里之前写的不清楚,作者是借鉴CLRec [83]的做法,维护了一个mini-batch的队列,每一个mini-batch的时候作为concept的缓存(包括indispensable和dispensable,这个队列的设计可以是不区分两者,也可以是两者分别用一个队列存储,作者做了区分),下一个mini-batch的时候就从这个队列里出队一些concepts进行替换,完成transformation。原文的描述如下。

We maintain a first-in-first-out queue as a concept memory for each level
and use dequeued concepts as substitutes. We enqueue the concepts extracted from the current mini-batch.

在生成counterfactually positive/negative user representations的时候,也可以分为3种不同的方法,

  • CauseRec-Item。利用物品粒度生成的反事实序列和baseline模型,学习counterfactually positive/negative user representations。
  • CauseRec-Interest。利用兴趣粒度生成的反事实序列和baseline模型,学习counterfactually positive/negative user representations。
  • CauseRec-H(ierarchical)。利用物品粒度生成的反事实序列,结合兴趣concept score的提取过程,得到兴趣行为序列(**作者强调,这里不会在进行concepts score的计算。如果再做替换,会引入噪声。Concepts score是在物品粒度计算好的,替换也是在物品粒度发生的,只是在兴趣粒度汇总(也就是过个变换和attention而已。)。

Learning Objectives

经过Counterfactual Transformation得到的counterfactually positive/negative行为序列分别记作\{ x^{+, m} \}_{m=1,...,M}, \{ x^{-, n} \}_{n=1,...,N}

为了增强模型鲁棒性,模型应该对indispensable concepts不敏感。因此,替换了indispensable concepts的序列得到的counterfactually positive user representations应该与原行为序列得到的user representations距离比较远(核心兴趣被改变了)。

为了增强模型准确性,模型应该更依赖indispensable concepts。因此,替换了dispensable concepts的序列得到的counterfactually negative user representations应该与原行为序列得到的user representations距离比较(核心兴趣没有改变)。

其具体计算公式如下图所示,其中x^q是原始行为序列得到的用户特征,作者采用L_2作为距离函数d,并从多次实验和经验的角度,令\Delta_{co}=1

Contrast between Counterfactual and Observation

此外,作者利用L2-normalized之后的target物品embedding和用户行为序列embedding(\tilde{y}, \tilde{x}^{+, m}, \tilde{x}^{-, n})进行对比学习,防止模型学习到平凡解。其计算公式如下图所示,且\Delta_{ii} = 0.5

Contrast between Interest and Items

最终,整体的学习目标如下图所示,其中\mathcal{L}_{matching}是匹配得分损失(相似度计算后的最大似然)。

Total Loss

心得体会

Concept Score

作者利用item和最后target的相似度作为concept score,感觉像是marginal的行为序列贡献值。

Counterfactual Transformation

个人感觉,作者采用的依概率r_{rep}随机替换的方法过于简单了,相比于其他类似反事实解释生成的方法,生成的序列里决策边界可能比较远,或者对模型训练提供的信息不够充分,也就是说不够hard。

Contrastive Learning

个人感觉,作者设计的对比学习,是方法亮点之一。只是解释的时候逻辑上稍微有一点别扭,明明说鲁邦是对dispensable concepts不敏感,那不应该是让改变了dispensable的行为序列和原行为序列接近么?反而解释的是改变了indispensable的行为序列和原始行为序列距离拉远...虽然思路上没啥问题,总感觉说反了。(当然,可能不同的角度不同的理解)

文章引用

[83] Chang Zhou, Jianxin Ma, Jianwei Zhang, Jingren Zhou, and Hongxia Yang. 2020. Contrastive Learning for Debiased Candidate Generation at Scale. CoRR (2020).

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容