当前位置:网站首页>【多任务模型】Progressive Layered Extraction: A Novel Multi-Task Learning Model for Personalized(RecSys‘20)
【多任务模型】Progressive Layered Extraction: A Novel Multi-Task Learning Model for Personalized(RecSys‘20)
2022-08-01 19:53:00 【chad_lee】
腾讯的视频推荐团队,建模的目标包含用户的多种不同的行为:点击,分享,评论等等。每次请求,候选的排序分根据公式计算:
score = p V T R w V T R × p V C R w V C R × p S H R w S H R × … × p C M R w C M × f ( video l e n ) \text { score }=p V T R^{w V T R} \times p V C R^{w V C R} \times p S H R^{w S H R} \times \ldots \times p_{C M R}^{w C M} \times f(\text { video } l e n) score =pVTRwVTR×pVCRwVCR×pSHRwSHR×…×pCMRwCM×f( video len)
其中w是超参,表示相对重要性
多目标之间经常会有比较复杂的关系,因此同时建模多目标经常会出现跷跷板的现象,即多个任务negative transfer的问题:
GCG
MMOE理论上存在一种可以自动选特征的最优情况,但这个情况依赖:1、gate能不能选出来;2、也依赖expert能不能产生多样性的特征(所有expert输出类似,无可奈何)。
因此本文提出的Customized Gate Control把这个问题变得简单了一些,把专家分为大同行和小同行,既有共享的expert们,每个task也有专门的expert们,难度小了一些。
这样EA只被taskA训,EB只被taskB训,至少可以保底。
input是x,任务k的输出是
y k ( x ) = t k ( g k ( x ) ) y^{k}(x)=t^{k}\left(g^{k}(x)\right) yk(x)=tk(gk(x))
其中 t k t^k tk是这个任务的NN tower, g k ( x ) g^{k}(x) gk(x) 是第k个任务的门控网络的输出:
g k ( x ) = w k ( x ) S k ( x ) g^{k}(x)=w^{k}(x) S^{k}(x) gk(x)=wk(x)Sk(x)
其中x是原始输入, w k ( x ) w^{k}(x) wk(x)是一个加权函数,分别对应每个专家的权重,是一个softmax的输出:
w k ( x ) = Softmax ( W g k x ) w^{k}(x)=\operatorname{Softmax}\left(W_{g}^{k} x\right) wk(x)=Softmax(Wgkx)
其中 W g k ∈ R ( m k + m s ) × d W_{g}^{k} \in R^{\left(m_{k}+m_{s}\right) \times d} Wgk∈R(mk+ms)×d,mk和ms是 shared experts 和 specific experts 的个数。 S k ( x ) S^{k}(x) Sk(x)是所有专家的输出向量contack在一起的称之为selected matrix:
S k ( x ) = [ E ( k , 1 ) T , E ( k , 2 ) T , … , E ( k , m k ) T , E ( s , 1 ) T , E ( s , 2 ) T , … , E ( s , m s ) T ] T S^{k}(x)=\left[E_{(k, 1)}^{T}, E_{(k, 2)}^{T}, \ldots, E_{\left(k, m_{k}\right)}^{T}, E_{(s, 1)}^{T}, E_{(s, 2)}^{T}, \ldots, E_{\left(s, m_{s}\right)}^{T}\right]^{T} Sk(x)=[E(k,1)T,E(k,2)T,…,E(k,mk)T,E(s,1)T,E(s,2)T,…,E(s,ms)T]T
PLE
但是分了小同行后也有问题,不同task的辅助监督信号的作用又小了(因为和独立模型的区别就只有一个共享expert,能力有限)。所以PLE就是多接几层专家网络,让共享expert更强一些。
优化方法
一半多目标任务优化是针对不同的子任务设置不同的权重,损失函数加权:
L ( θ 1 , … … , θ K , θ s ) = ∑ k = 1 K ω k L k ( θ k , θ s ) L\left(\theta_{1}, \ldots \ldots, \theta_{K}, \theta_{s}\right)=\sum_{k=1}^{K} \omega_{k} L_{k}\left(\theta_{k}, \theta_{s}\right) L(θ1,……,θK,θs)=k=1∑KωkLk(θk,θs)
但是这篇文章更精细的考虑了训练样本空间不一致的问题:
比如用户只有点击后才能进行分享和评论。本文是在 Loss 上进行一定的优化,联合训练这些任务,在计算每个任务的损失时需要把样本空间相同的合并,并忽略不在自己样本空间的样本,即不同的任务仍使用其各自样本空间中的样本。我理解的意思是一次模型更新的时候,不会同时用SHR和CTR的loss来更新
同时这篇还考虑了不同任务设置一个动态权重,比如task k的初始loss权重为 ω k , 0 \omega_{k, 0} ωk,0,那么在第t个epoch的时候loss权重为:
ω k ( t ) = ω k , 0 × γ k t \omega_{k}^{(t)}=\omega_{k, 0} \times \gamma_{k}^{t} ωk(t)=ωk,0×γkt
其中 γ k t \gamma_{k}^{t} γkt 是上一步的更新率。
边栏推荐
- 内网穿透 lanproxy部署
- 30天刷题计划(五)
- Creo5.0草绘如何绘制正六边形
- [Server data recovery] Data recovery case of offline multiple disks in mdisk group of server Raid5 array
- nacos安装与配置
- 大神经验:软件测试的自我发展规划
- From ordinary advanced to excellent test/development programmer, all the way through
- How PROE/Croe edits a completed sketch and brings it back to sketching state
- 智能硬件开发怎么做?机智云全套自助式开发工具助力高效开发
- JS数组过滤
猜你喜欢
如何看待腾讯云数据库负责人林晓斌借了一个亿炒股?
【kali-信息收集】(1.3)探测网络范围:DMitry(域名查询工具)、Scapy(跟踪路由工具)
使用微信公众号给指定微信用户发送信息
OSPO 五阶段成熟度模型解析
Try compiling QT test on Allwinner V853 development board
【kali-信息收集】(1.6)服务的指纹识别:Nmap、Amap
18. Distributed configuration center nacos
智能硬件开发怎么做?机智云全套自助式开发工具助力高效开发
安全作业7.25
为什么限制了Oracle的SGA和PGA,OS仍然会用到SWAP?
随机推荐
大神经验:软件测试的自我发展规划
JS数组过滤
面试突击70:什么是粘包和半包?怎么解决?
Win11怎么安装语音包?Win11语音包安装教程
锐捷交换机基础配置
The graphic details Eureka's caching mechanism/level 3 cache
工作5年,测试用例都设计不好?来看看大神的用例设计总结
【七夕特别篇】七夕已至,让爱闪耀
有点奇怪!访问目的网址,主机能容器却不行
AcWing 797. 差分
第55章 业务逻辑之订单、支付实体定义
数值矩阵的图形表示
DAO development tutorial [WEB3.0]
Database Plus 的云上之旅:SphereEx 正式开源 ShardingSphere on Cloud 解决方案
Try compiling QT test on Allwinner V853 development board
不要再使用MySQL online DDL了
【周赛复盘】LeetCode第304场单周赛
多线程之生产者与消费者
【Redis】缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存击穿、缓存降级
Pytorch模型训练实用教程学习笔记:二、模型的构建