首页 > 其他分享 >DE-RRD: A Knowledge Distillation Framework for Recommender System

DE-RRD: A Knowledge Distillation Framework for Recommender System

时间:2023-09-22 20:16:17浏览次数:53  
标签:教师 DE Recommender Knowledge cdot RRD Distillation exp

目录

Kang S., Hwang J., Kweon W. and Yu H. DE-RRD: A knowledge distillation framework for recommender system. CIKM, 2020.

知识蒸馏应用于推荐系统 (同时迁移隐层 + 输出层特征).

DE-RRD

  • DE-RRD 主要包括两个部分, 一个是对中间隐变量的信息迁移, 另一个则是对教师给出的排名的一个利用.

Distillation Experts (DE)

  • DE 部分是利用多个专家模型来迁移教师的隐变量的信息, 用多个的原因是作者认为一个的能力有限.

  • 对于每一个, 专家就是一个普通的网络 \(E(\cdot)\). 假设 \(h_t(\cdot)\) 返回教师模型的隐变量, \(h_s(\cdot)\) 返回学生模型的隐变量. \(E(h_s(u))\) 将 \(h_s(u)\) 映射到和教师模型一个空间.

  • 倘若总共有 \(M\) 个专家, DE 通过一个 selection network \(S\) 来计算每个的重要性:

    \[\mathbf{e}^u = S(h_t(u)), \\ \alpha_m^u = \frac{\exp(e_m^u)}{\sum_{i=1}^M \exp(e_i^u)}, \quad m = 1,2,\ldots, M. \]

  • 然后, 我们要求:

    \[\mathbf{s}^u \sim \text{Multinouli}_M (\{\alpha_M\}), \\ \mathcal{L}(u) = \|h_t(u) - \sum_{m=1}^M s_m^u \cdot E_m(h_s(u)) \|_2, \]

    这部分要求通过权重重加权后的学生近似于教师的. 这里具体的系数 \(\mathbf{s}^u \in \{0, 1\}^{M}\) 采样自多重伯努利分布 (通过 gumbel-softmax 实现), 越重要的专家信息与需要被保留 (我认为这是一个多余的设计).

Relaxed Ranking Distillation (RRD)

  • 首先, 让学生模型去模仿教师模型的排名是一个被广泛接受的蒸馏方法, 但作者认为这种方式对于学生的难度有点大. 所以 RRD 希望只正对那些少部分的更有意义的 items, 然后模仿他们的排名. 具体的, RRD 会依据教师模型给出的排名, 然后按照:

    \[p_k \propto e^{-k/\tau} \]

    来采样 \(K\) 个 interesting items, 然后再 均匀采样 \(L\) 个 uninteresting items.

  • 接着, 定义如下的概率 (我不知道怎么推出来的):

    \[p(\bm{\pi}_{1:K}^u|\mathbf{r}^u) = \prod_{k=1}^K \frac{\exp(r_{\pi_i}^u)}{\sum_{i=1}^K \exp(r_{\pi_i}^u) + \sum_{j=K}^{K+L} \exp(r_{\pi_j}^u)}. \]

  • 然后极大似然优化.

代码

[official]

标签:教师,DE,Recommender,Knowledge,cdot,RRD,Distillation,exp
From: https://www.cnblogs.com/MTandHJ/p/17723232.html

相关文章

  • 题解 AtCoder Beginner Contest 267 A~H
    ABC267solutionhttps://atcoder.jp/contests/abc267/ProblemA.Saturday题目描述输入一个表示星期的英文字符串,输出:还有多少天到星期六?solution依题意模拟。\(O(1)\)。ProblemB.Split?题目描述Robin有十个小球,如图排列成这样,然后Robin将一些球击飞了,他告诉你哪些......
  • AtCoder Beginner Contest 318 ABCDE
    AtCoderBeginnerContest318A-FullMoon思路:等差数列求项数//AConemoretimes//nndbk#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintmod=1e9+7;constintN=2e5+10;intmain(){ios::sync_with_stdio(false);......
  • AtCoder Beginner Contest 320 ABCDE
    AtCoderBeginnerContest320A-LeylandNumber思路:直接快速幂//AConemoretimes//nndbk#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintmod=1e9+7;constintN=2e5+10;llqmi(lla,llb){llans=1;whil......
  • AtCoder Beginner Contest 253 E
    AtCoderBeginnerContest253E-DistanceSequence思路:前缀和优化DP要求$|a[i]-a[i+1]|>=k\(定于\)dp[i][j]:\(前\)i\(个数以\)j\(结尾的合法序列数列\)dp[i][j]+=dp[i-1][1~(j-k)]+dp[i-1][(j+k)~m]$直接写的话复杂度是\(O(nm^2)\)的会TLE,我们发现可以做一个前缀和优化......
  • Codeforces Round 898 (Div. 4)(A-H)
    CodeforcesRound898(Div.4)A.给abc的某个排列,问能否最多交换一次让排列变成abc直接看有几个不在原位就行查看代码#include<iostream>usingnamespacestd;voidsolve(){ chara,b,c; cin>>a>>b>>c; intans=0; if(a!='a')ans++; if(b!='b')ans++; ......
  • vue3 defineEmits的使用
    1.计数器案例父组件:<template><h2>当前计数为:{{counter}}</h2><HelloWorld@add1="add1"@decre1="decre1"></HelloWorld></template><scriptsetup>import{ref}from'vue'import......
  • Tinkoff Internship Warmup Round 2018 and Codeforces Round 475 (Div. 1) D. Freque
    Problem-D-Codeforces题意给定一个字符串,n次询问,每次询问一个字符串在给定字符串的子串中出现k次时子串的最小长度分析多模式匹配,想到使用AC自动机,由于询问子串总长度不超过M=1E5,那么对于长度不同的串最多有$\sqrt{M}$,那么我们队fail树中最长的链长度小于$\sqrt{M}$,对原......
  • LeetCode3题学透链表初始化、查找、插入删除、逆置操作
    1.题目要求LeetCode203移除链表指定元素LeetCode707设计链表LeetCode206反转链表  这三个题目包含了链表的初始化、插入头尾结点、插入删除第n个结点,删除指定内容的结点、链表的逆置等,下面我将一一讲解并展示源代码。2.具体操作2.1LeetCode中链表的初始化  我下面所讲......
  • P5836 [USACO19DEC] Milk Visits S - 洛谷题解
     题目链接:[P5836] USACO19DEC] MilkVisitsS-洛谷|计算机科学教育新生态(luogu.com.cn)这道题可以用并查集来解决。题目中每个结点只有两个状态:H和G。那么我们可以推断出,只有当起点和终点间每个结点的状态相同但是起点(或者终点或起点到终点之间的某一点)与所需状态不同......
  • Delphi XE 时间和时间戳互转换
    usesSystem.DateUtils;functionTForm1.Gettamptime(vlen:Integer):string;varss:string;beginifvlen=13thenbeginss:=DateTimeToTimeStamp(now).time.ToString;Result:=IntToStr(DateTimeToUnix(Now,false))+Copy(ss,Length(ss)-......