论文《Implicit Feedbacks are Not Always Favorable: Iterative Relabeled OCCF against Noisy Interactio》阅读

论文《Implicit Feedbacks are Not Always Favorable: Iterative Relabeled One-Class Collaborative Filtering against Noisy Interactions》阅读

  • 论文概况
  • 主要贡献及亮点
  • 方法论
    • Pretext Task (Prediction + Relabeling)
      • Prediction Module
      • Relabeling the Positive Labels
      • Relabeling the Negative Labels
      • Iterative Relabeling
    • Downstream Module (Recommendation Model)
    • Optimization
      • Relabeling
      • Downstream Recommendation
  • 总结

今天带来的是由中科院、国科大、中山大学以及鹏城实验室联合出品的关于隐性反馈推荐场景下正反馈噪声消除的作品,发表在ACM MM 2021上,值得推荐。

论文概况

隐式反馈(implicit feedback)场景,本文称之为单类协同过滤(One-Class Collaborative Filtering, OCCF),不同于显示反馈中通过打分来表达喜好,是通过 0/1 的方式(浏览或非浏览、购买或未购买),显然带有很多的噪声。

以往的模型关注于负例中的噪声,即与用户没有交互的物品,用户也不一定不喜欢。在本文中,作者首度关注到了正反馈中的噪声,即与用户交互过的物品也不一定都是作者喜欢的,可能是广告营销点进去的,可能是不小心点错点进去的,等等。

本文即聚焦于此,通过提出一个基于迭代重标注(iterative relabeling)过程的自监督学习(Self-Supervised Learning, SSL)框架,完成单类协同过滤中的隐式反馈噪声去除问题。

主要贡献及亮点

  1. 迭代式重标注方法
  2. 基于自监督的SSL 前置任务(或代理任务,pretext task)方法设计
  3. 伪正例隐式反馈(spurious positive implicit feedback)噪声去除

论文《Implicit Feedbacks are Not Always Favorable: Iterative Relabeled OCCF against Noisy Interactio》阅读_第1张图片

方法论

方法论部分一言以蔽之可以概括为:由于原始的interaction数据中存在噪声,作者基于SSL设计了一个prediction model和一个relabeling process,这两部分相辅相成促进了用户交互历史的提纯。通过迭代上述过程,用户的真正喜好被提取。上述过程即代理任务,提高了数据分布合理性。在此基础上,下游任务的性能就可以提高。具体地,作者使用BPR或者MLP完成具体推荐任务,用于验证SSL的有效性。

prediction model 使用 BPR 方法,通过向量内积计算交互分数,对用户的预测结果进行排序,(1)首先是正例:绝对靠前(前 n + n_+ n+ 个)的叫做confident positive items,比较为 1 1 1;绝对靠后的(后 n − n_- n 个),认为是噪声,叫做confident negative items。中间的一些看比例,相对靠前标 1 1 1,相对靠后标 0 0 0。(2)其次是负例,靠前(负例中前 n + u n o b s e r v e d n_{+}^{unobserved} n+unobserved )的负例也标为 1 1 1,即负例中的noise。

重新标记完事之后,把数据重新喂给prediction model,以此类推,迭代进行,直到收敛。

完事以后,拿训练好的用户与物品的embedding对用户与物品向量进行初始化,在得到的提纯过的交互矩阵上,通过简单的推荐模型完成推荐。

看上面的 Architecture 图比较好理解,看论文原文方法论部分由于符号太多反而不易梳理。下面进行详细又简单地介绍。

Pretext Task (Prediction + Relabeling)

Prediction Module

预测模型通过简单的内积方法及BPR损失完成,具体如下:

min ⁡ θ − ∑ ( u , i , j ) ∈ T log ⁡ σ ( v u ⊤ v i − v u ⊤ v j ) . (1) \min _{\theta}-\sum_{(u, i, j) \in \mathcal{T}} \log \sigma\left(\boldsymbol{v}_{u}^{\top} \boldsymbol{v}_{i}-\boldsymbol{v}_{u}^{\top} \boldsymbol{v}_{j}\right). \tag{1} θmin(u,i,j)Tlogσ(vuvivuvj).(1)

通过上式对预测模型 p θ p_{\theta} pθ 进行训练,得到最终的 embedding 表示 θ ∗ = { v u ∗ , v i ∗ } \theta^{*}=\left\{\boldsymbol{v}_{u}^{*}, \boldsymbol{v}_{i}^{*}\right\} θ={vu,vi}。用户 u u u 与物品 i i i 之间的预测分数表示为内积如下:

s u , i = f ( v u ∗ , v i ∗ ) = v u ∗ ⊤ v i ∗ . (2) s_{u, i}=f\left(\boldsymbol{v}_{u}^{*}, \boldsymbol{v}_{i}^{*}\right)={\boldsymbol{v}_{u}^{*}}^{\top} \boldsymbol{v}_{i}^{*}. \tag{2} su,i=f(vu,vi)=vuvi.(2)

Relabeling the Positive Labels

s u , 1 ↓ > s u , 2 ↓ > ⋯ > s u , ∣ I u + ∣ ↓ , u ∈ [ n user  ] . (3) s_{u, 1}^{\downarrow}>s_{u, 2}^{\downarrow}>\cdots>s_{u,\left|I_{u+}\right|}^{\downarrow},\quad u \in\left[n_{\text {user }}\right]. \tag{3} su,1>su,2>>su,Iu+,u[nuser ].(3)

I u + I_{u+} Iu+ 即用户 u u u 的正例集合,上式就是保持整理个数,重新排序,同时规定一个confident positive 个数 n + n_+ n+,前面的即为绝对正例,表示为 I u + top \mathcal{I}_{u+}^{\text{top}} Iu+top。即:

I u + top  = { i : s u , i ≥ s u , n + ↓ } . (4) \mathcal{I}_{u+}^{\text {top }}=\left\{i: s_{u, i} \geq s_{u, n_{+}}^{\downarrow}\right\}. \tag{4} Iu+top ={i:su,isu,n+}.(4)

规定confident negative 个数 n − n_- n, 后面的就是绝对负例,即:

I u + bottom  = { i : s u , i ≤ s u , n − ↓ } . (5) \mathcal{I}_{u+}^{\text {bottom }}=\left\{i: s_{u, i} \leq s_{u, n_{-}}^{\downarrow}\right\}. \tag{5} Iu+bottom ={i:su,isu,n}.(5)

绝对正例标 1 1 1 ,绝对负例标 0 0 0, 表示如下:

y ^ u , i = { 1 , i ∈ I u + top  0 , i ∈ I u + bottom  (6) \hat{y}_{u, i}=\left\{\begin{array}{ll} 1, & i \in \mathcal{I}_{u+}^{\text {top }} \\ 0, & i \in \mathcal{I}_{u+}^{\text {bottom }} \end{array}\right. \tag{6} y^u,i={1,0,iIu+top iIu+bottom (6)

对于待标注的剩余正例样本,采用 2-范式 距离乘以系数 α \alpha α (超参)的方式进行判断,具体如下:

y ^ u , i = g ( v i ∗ ) = { 1 , α ∥ v i ∗ − v ‾ u + top  ∥ 2 < ∥ v i ∗ − v ‾ u + bottom  ∥ 2 0 ,  otherwise  (7) \hat{y}_{u, i}=g\left(\boldsymbol{v}_{i}^{*}\right)=\left\{\begin{array}{ll} 1, & \alpha\left\|\boldsymbol{v}_{i}^{*}-\overline{\boldsymbol{v}}_{u+}^{\text {top }}\right\|_{2}<\left\|\boldsymbol{v}_{i}^{*}-\overline{\boldsymbol{v}}_{u+}^{\text {bottom }}\right\|_{2} \\ 0, & \text { otherwise } \end{array}\right. \tag{7} y^u,i=g(vi)={1,0,αvivu+top 2<vivu+bottom 2 otherwise (7)

其中, v ˉ u + t o p = 1 n + ∑ i ∈ I u + t o p v i ∗ , v ˉ u + b o t t o m = 1 n − ∑ i ∈ I u + bottom  v i ∗ \bar{\boldsymbol{v}}_{u+}^{\mathrm{top}}=\frac{1}{n_{+}} \sum_{i \in \mathcal{I}_{u+}^{\mathrm{top}}} \boldsymbol{v}_{i}^{*},\quad \bar{\boldsymbol{v}}_{u+}^{\mathrm{bottom}}=\frac{1}{n_{-}} \sum_{i \in \mathcal{I}_{u+}^{\text {bottom }}} \boldsymbol{v}_{i}^{*} vˉu+top=n+1iIu+topvi,vˉu+bottom=n1iIu+bottom vi, α \alpha α 是用于衡量距离的超参。

上述示例表示为 I u + potential  I_{u+}^{\text {potential }} Iu+potential  ,具体如下:

I u + potential  = { i : y ^ u , i = 1 , i ∈ I u + \ ( I u + top  ∪ I u + bottom  ) } (8) I_{u+}^{\text {potential }}=\left\{i: \hat{y}_{u, i}=1, i \in \mathcal{I}_{u+} \backslash\left(\mathcal{I}_{u+}^{\text {top }} \cup \mathcal{I}_{u+}^{\text {bottom }}\right)\right\} \tag{8} Iu+potential ={i:y^u,i=1,iIu+\(Iu+top Iu+bottom )}(8)

Relabeling the Negative Labels

同理,负例中也有noise。一样的思想,靠前的可能是正例,靠后的铁定是负例。因此,排序如下:

s u , 1 ↓ > s u , 2 ↓ > ⋯ > s u , ∣ I u − ∣ ↓ , u ∈ [ n user  ] (9) s_{u, 1}^{\downarrow}>s_{u, 2}^{\downarrow}>\cdots>s_{u,\left|I_{u-}\right|}^{\downarrow}, u \in\left[n_{\text {user }}\right] \tag{9} su,1>su,2>>su,Iu,u[nuser ](9)

排序的label分配如下:
y ^ u , i = { 1 , s u , i ≥ s u , n + u n o b s e r v e d ↓ ; 0 ,  otherwise  (10) \hat{y}_{u, i}=\left\{\begin{array}{ll} 1, & s_{u, i} \geq s_{u, n_{+}^{unobserved}}^{\downarrow} ; \\ 0, & \text { otherwise } \end{array} \right. \tag{10} y^u,i={1,0,su,isu,n+unobserved; otherwise (10)
其中, n + u n o b s e r v e d n_{+}^{unobserved} n+unobserved 表示负例中的标记为 1 1 1 的数量。

Iterative Relabeling

上述过程循环 t t t 次,将最后一次得到的标签作为最终下游任务的输入数据集,同时将 user 和 item 的embedding作为预训练向量。

具体公式如下:

排序过程如下所示,对正例个数和负例个数进行排序:

s u , 1 ( t ) > ⋯ > s u , k ( t ) > ⋯ > s u , ∣ I u + ∣ ( t ) , u ∈ [ n user  ] , k ∈ I u + s u , 1 ( t ) > ⋯ > s u , k ( t ) > ⋯ > s u , ∣ I u − 1 ∣ ( t ) , u ∈ [ n user  ] , k ∈ I u − (11) \begin{array}{l} s_{u, 1}^{(t)}>\cdots>s_{u, k}^{(t)}>\cdots>s_{u,\left|I_{u+}\right|}^{(t)}, u \in\left[n_{\text {user }}\right], k \in I_{u+} \\ s_{u, 1}^{(t)}>\cdots>s_{u, k}^{(t)}>\cdots>s_{u,\left|I_{u-1}\right|}^{(t)}, u \in\left[n_{\text {user }}\right], k \in I_{u-} \end{array} \tag{11} su,1(t)>>su,k(t)>>su,Iu+(t),u[nuser ],kIu+su,1(t)>>su,k(t)>>su,Iu1(t),u[nuser ],kIu(11)

标记过程如下,具体和单次迭代一样,不再赘述:

y u , i ( t ) = g μ ( u , i ) = { 1 , i ∈ I u + top  ( t ) ∪ I u + potential  ( t ) ∪ I u − top  ( t ) ; 0 ,  otherwise  (12) y_{u, i}^{(t)}=g_{\mu}(u, i)=\left\{\begin{array}{ll} 1, & i \in I_{u+}^{\text {top }(t)} \cup I_{u+}^{\text {potential }(t)} \cup \mathcal{I}_{u-}^{\text {top }(t)} ; \\ 0, & \text { otherwise } \end{array}\right. \tag{12} yu,i(t)=gμ(u,i)={1,0,iIu+top (t)Iu+potential (t)Iutop (t); otherwise (12)

最终将第 t t t 次迭代收敛的数据集进行采样完成 ( u , i + , i − ) \left(u, i^+, i^- \right) (u,i+,i) 的三元组数据集合。

T ( t ) = { ( u , i , j ) ∣ y u , i ( t ) = 1 , y u , j ( t ) = 0 } (13) \mathcal{T}^{(t)}=\left\{(u, i, j) \mid y_{u, i}^{(t)}=1, y_{u, j}^{(t)}=0\right\} \tag{13} T(t)={(u,i,j)yu,i(t)=1,yu,j(t)=0}(13)

Downstream Module (Recommendation Model)

作者提供了两种方式:

  1. 一种就是不用下游任务,直接拿现在得到的推荐分数作为最终的排序任务输出值,即 s u , i d = s u , i ( t ∗ ) s_{u, i}^{d}=s_{u, i}^{\left(t^{*}\right)} su,id=su,i(t)
  2. 使用一个多层感知机(MLP)完成预训练向量的非线性关系运算,并完成推荐,具体如下:
    s u , i d = d ϕ ( u , i ) = h ( h c ( v u d , v i d ) ) (14) s_{u, i}^{d}=d_{\phi}(u, i)=h\left(h_{c}\left(\boldsymbol{v}_{u}^{d}, \boldsymbol{v}_{i}^{d}\right)\right) \tag{14} su,id=dϕ(u,i)=h(hc(vud,vid))(14)

其中, d ϕ ( ⋅ ) d_\phi\left(\cdot\right) dϕ() 表示推荐模型, h ( ⋅ ) = h n h ( ⋯ h 1 ( ⋅ ) ⋯   ) h(\cdot)=h_{n_{h}}\left(\cdots h_{1}(\cdot) \cdots\right) h()=hnh(h1()) 表示 n h n_h nh 层的多层感知机模型, h c ( ⋅ , ⋅ ) h_c(\cdot, \cdot) hc(,) 表示 concatenation ( ∥ \| )。

Optimization

Relabeling

θ ( t ) = arg ⁡ min ⁡ θ − ∑ ( u , i , j ) ∈ T ( t − 1 ) log ⁡ σ ( s u , i − s u , j ) . (15) \theta^{(t)}=\arg \min _\theta-\sum_{(u, i, j) \in \mathcal{T}(t-1)} \log \sigma\left(s_{u, i}-s_{u, j}\right). \tag{15} θ(t)=argθmin(u,i,j)T(t1)logσ(su,isu,j).(15)

Downstream Recommendation

min ⁡ ϕ − ∑ ( u , i , j ) ∈ T ( t ∗ − 1 ) L d ( σ ( s u , i d − s u , j d ) ) . (16) \min _{\phi}-\sum_{(u, i, j) \in \mathcal{T}^{\left(t_{*}-1\right)}} \mathcal{L}^{d}\left(\sigma\left(s_{u, i}^{d}-s_{u, j}^{d}\right)\right). \tag{16} ϕmin(u,i,j)T(t1)Ld(σ(su,idsu,jd)).(16)

其中, L d ( ⋅ ) \mathcal{L}^{d}\left( \cdot \right) Ld() 表示单调非递减损失函数。根据具体的下游模型而变化,文中选择了两个: 何向南老师的 NeuMF 模型和 经典 BPR 模型。

总结

文章创新地使用迭代 Relabeling 的方式完成标签自学习过程,提高了隐式反馈数据的信噪比,整个模型易于理解,成果比较突出。

在阅读过程中,有如下一些瑕疵(个人感觉),总结如下:

  1. 单词循环到多层循环的符号表示稍微有些不连贯,造成了一定的阅读困难。
  2. 参考文献的时效性不太好。
  3. Architecture图画得非常清晰,但是和方法论中的叙述不太贴合。

同时,有一下一些疑问,希望阅读过此文的同学能够不吝赐教:

  1. 数据集划分情况作者没有进行说明,如何判断Pretext Task是否收敛。
  2. 在算法中,可以看到模型 p θ p_{\theta} pθ 的更新过程中,使用了固定轮次 p θ − steps p_{\theta}-\text{steps} pθsteps,是说每轮更新过程的iteration次数是固定的吗?

你可能感兴趣的:(论文阅读,深度学习,推荐系统,人工智能,数据挖掘)