MTL框架:模型、权重与融合公式
文章目录
- 模型设计
- 1. 任务依赖关系
- 2. 底层表示共享
- Loss设计
- 1. loss如何选择?
- 2. 权重如何调整?
- 目标融合
- 1. 公式如何设计?
- 2. 如何在线优化?
一矢多穿:多目标排序在爱奇艺短视频推荐中的应用
多任务多目标 CTR 预估技术
多任务学习的两个主要研究方向:
- 网络结构的构造;
- 多目标优化的方法;
模型设计
AI上推荐之MMOE
1. 任务依赖关系
- 任务序列依赖关系建模:适合于不同任务之间有一定的序列依赖关系。
比如电商场景里面的ctr和cvr,其中cvr这个行为只有在ctr之后才会发生。这种依赖关系如果能加以利用,可以解决任务预估中的样本选择偏差(SSB)和数据稀疏性(DS)问题。
- 样本选择偏差: 后一阶段的模型基于上一阶段采样后的样本子集训练,但最终在全样本空间进行推理,带来严重泛化性问题
- 样本稀疏: 后一阶段的模型训练样本远小于前一阶段任务
1. ESMM
多任务学习模型之ESMM介绍与实现
CVR预估面临两个关键问题:
-
Sample Selection Bias (SSB)
训练数据为点击数据,但需要预测曝光数据,即训练数据和预测数据分布不一致,带来严重泛化性问题。
-
Data Sparsity (DS)
CVR预估任务训练使用的点击样本远小于CTR预估训练使用的曝光样本
x,y,z分别表示曝光,点击,转换,则
p ( y = 1 , z = 1 ∣ x ) ⏟ p C T C V R = p ( y = 1 ∣ x ) ⏟ p C T R × p ( z = 1 ∣ y = 1 , x ) ⏟ p C V R \underbrace{p(y=1, z=1 \mid x)}_{p C T C V R}=\underbrace{p(y=1 \mid x)}_{p C T R} \times \underbrace{p(z=1 \mid y=1, x)}_{p C V R} pCTCVR p(y=1,z=1∣x)=pCTR p(y=1∣x)×pCVR p(z=1∣y=1,x)
注意到,在全部样本空间中,CTR对应的label为click,而CTCVR对应的label为click & conversion,这两个任务是可以使用全部样本的。因此,ESMM通过学习CTR,CTCVR两个任务,再根据上式隐式地学习CVR任务。具体结构如下:
- 共享Embedding。 CVR-task和CTR-task使用相同的特征和特征embedding,即两者从Concatenate之后才学习各自独享的参数;
- 隐式学习pCVR。pCVR 仅是网络中的一个variable,没有显示的监督信号,反映在目标函数中:
L ( θ c v r , θ c t r ) = ∑ i = 1 N l ( y i , f ( x i ; θ c t r ) ) + ∑ i = 1 N l ( y i & z i , f ( x i ; θ c t r ) ∗ f ( x i ; θ c v r ) ) L\left(\theta_{c v r}, \theta_{c t r}\right)=\sum_{i=1}^N l\left(y_i, f\left(\boldsymbol{x}_i ; \theta_{c t r}\right)\right)+\sum_{i=1}^N l\left(y_i \& z_i, f\left(\boldsymbol{x}_i ; \theta_{c t r}\right) * f\left(\boldsymbol{x}_i ; \theta_{c v r}\right)\right) L(θcvr,θctr)=i=1∑Nl(yi,f(xi;θctr))+i=1∑Nl(yi&zi,f(xi;θctr)∗f(xi;θcvr))
2. DBMTL
多任务学习模型之DBMTL介绍与实现
常见的多目标优化模型是从每个优化目标单独的模型网络出发,通过让这些网络在底层共享参数,实现各目标相关模型的适当程度的独立性和相关性。不论底层如何共享参数,此类网络的概率模型可以用下述公式描述:
P
(
l
,
m
∣
x
,
H
)
=
P
(
l
∣
x
,
H
)
⋅
P
(
m
∣
x
,
H
)
P(l, m \mid x, H)=P(l \mid x, H) \cdot P(m \mid x, H)
P(l,m∣x,H)=P(l∣x,H)⋅P(m∣x,H)其中l,m 为目标,x为样本特征,H为模型。这里做了各目标独立的假设。
利用贝叶斯公式,以上模型可以改为 P ( l , m ∣ x , H ) = P ( l ∣ m , x , H ) ⋅ P ( m ∣ x , H ) P(l, m \mid x, H)=P(l \mid m,x, H) \cdot P(m \mid x, H) P(l,m∣x,H)=P(l∣m,x,H)⋅P(m∣x,H)
2. 底层表示共享
-
Shared Bottom->MMoE:MMoE将shared bottom分解成多个Expert,然后通过门控网络自动控制不同任务对这些Expert的梯度贡献。
Shared Bottom最大的优势是Task越多, 任务之间过拟合的风险越小。 但是劣势也非常明显,就是底层强制的shared layers难以学习到适用于所有任务的有效表达, 尤其是任务之间存在冲突或者两个任务相关性没那么好(比如排序中的点击率与互动,点击与停留时长)。 -
MMoE->PLE:PLE在MMoE的基础上又为每个任务增加了自有的Expert,仅由本任务对其梯度更新。
MMoE做了一个聪明的事情,“化整为零”,把一个共享参数矩阵化成多个结合gate的共享Expert。不同的loss在存在相互冲突时,在不同的expert上,不同loss可以有相对强弱的表达,那么出现相互抵消的情况就可能减少,从而达到“各有所得”的状态,即部分experts受某task影响较大,部分experts受其他task主导。但是MMoE并不保证“各有所得”,PLE增加了specific experts,保障“各有所得”,能够在“共享参数”的撕扯争夺上,有了最基础的保障。
Loss设计
1. loss如何选择?
- 观看时长:weighted logistic regression
- ctr/pr:cross entropy
对于回归目标,采用正逆序对比(PNR,positive-negative-ration)来评估多目标预估值融合后的排序效果。
2. 权重如何调整?
- Magnitude(Loss量级):Loss值有大有小,出现取值大的Loss主导的现象,怎么办?
- Velocity (Loss学习速度): 任务有难有易,Loss学习速度有快有慢,怎么办?
- Direction(Loss梯度冲突):多个Loss的反向梯度,更新方向冲突,出现翘翘板、负迁移现象,怎么办?
2.1 Magnitude
深度学习多目标优化的多个loss应该如何权衡
AI上推荐 之 多任务loss优化(自适应权重篇)
Uncertainty weight(2018)
Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics
多任务学习中损失函数权重的自动调整
自动学习任务的uncertainty,给uncertainty大的任务小weight
- 偶然不确定性:数据本身的误差,可分为同方差(数据依赖)和异方差(任务依赖)
- 认知不确定性:模型的误差,衡量input data是否存在已有的数据中
利用同方差自动计算任务权重( 1 / 2 σ 2 1/2\sigma^2 1/2σ2)
2. 2 Velocity
Gradnorm(2018)
GradNorm: Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks
作者认为,任务不平衡会阻碍模型的训练,而这种阻碍其实体现在了反向传播时参数的梯度不平衡。所以通过动态调整loss权重,让参数的梯度保持平衡。
定义了一个gradient loss,用来衡量每个任务的loss权重,即实际权重和理想权重的差距
L g r a d ( t ; w i ( t ) ) = ∑ i ∣ G W ( i ) ( t ) − G ‾ W ( t ) × [ r i ( t ) ] α ∣ 1 \mathrm{L}_{\mathrm{grad}}\left(\mathrm{t} ; \mathrm{w}_{\mathrm{i}}(\mathrm{t})\right)=\sum_{\mathrm{i}}\left|\mathrm{G}_{\mathrm{W}}^{(\mathrm{i})}(\mathrm{t})-\overline{\mathrm{G}}_{\mathrm{W}}(\mathrm{t}) \times\left[\mathrm{r}_{\mathrm{i}}(\mathrm{t})\right]^\alpha\right|_1 Lgrad(t;wi(t))=i∑∣ ∣GW(i)(t)−GW(t)×[ri(t)]α∣ ∣1
- W : 一般选shared layer的最后一层参数,能节省计算量
- G W ( i ) ( t ) = ∥ ∇ W w i ( t ) L i ( t ) ∥ 2 \mathrm{G}_{\mathrm{W}}^{(\mathrm{i})}(\mathrm{t})=\left\|\nabla_{\mathrm{W}} \mathrm{w}_{\mathrm{i}}(\mathrm{t}) \mathrm{L}_{\mathrm{i}}(\mathrm{t})\right\|_2 GW(i)(t)=∥∇Wwi(t)Li(t)∥2 :每个单任务 w i ( t ) L i ( t ) \mathrm{w}_{\mathrm{i}}(\mathrm{t}) \mathrm{L}_{\mathrm{i}}(\mathrm{t}) wi(t)Li(t) 对于参数 W \mathrm{W} W 的梯度的L2范数,表示t次训练每个任务对于W传回的梯度大小。这个梯度越大,说明了任务主导性就越强,应该减小 w i \mathrm{w}_{\mathrm{i}} wi 。
- G ‾ W ( t ) = E t a s k [ G W ( i ) ( t ) ] \overline{\mathrm{G}}_{\mathrm{W}}(\mathrm{t})=\mathrm{E}_{\mathrm{task}}\left[\mathrm{G}_{\mathrm{W}}^{(\mathrm{i})}(\mathrm{t})\right] GW(t)=Etask[GW(i)(t)] :各个任务传回的参数梯度范数的平均值,从而得到每个任务对参数梯度的相对大小。
- L ~ i ( t ) = L i ( t ) / L i ( 0 ) \tilde{\mathrm{L}}_{\mathrm{i}}(\mathrm{t})=\mathrm{L}_{\mathrm{i}}(\mathrm{t}) / \mathrm{L}_{\mathrm{i}}(0) L~i(t)=Li(t)/Li(0) : 一定程度上衡量了 i \mathrm{i} i 任务的训练速度。
- r i ( t ) = L ~ i ( t ) / E t a s k [ L ~ i ( t ) ] \mathrm{r}_{\mathrm{i}}(\mathrm{t})=\tilde{\mathrm{L}}_{\mathrm{i}}(\mathrm{t}) / \mathrm{E}_{\mathrm{task}}\left[\tilde{\mathrm{L}}_{\mathrm{i}}(\mathrm{t})\right] ri(t)=L~i(t)/Etask[L~i(t)] : 相对训练速度,即 r i ( t ) \mathrm{r}_{\mathrm{i}}(\mathrm{t}) ri(t) 越大,说明 L i ( t ) \mathrm{L}_{\mathrm{i}}(\mathrm{t}) Li(t) 越大,说明loss下降的幅度小,这个任务训练的慢。
在每次优化中, L t a s k L_{task} Ltask和 L g r a d L_{grad} Lgrad交替训练。
DWA(2019)
End-to-End Multi-Task Learning with Attention
定义loss下降速度,计算对应权重,GradNorm的简化版
r
i
(
t
−
1
)
=
L
i
(
t
−
1
)
L
i
(
t
−
2
)
r_i(t-1)=\frac{\mathcal{L}_i(t-1)}{\mathcal{L}_i(t-2)}
ri(t−1)=Li(t−2)Li(t−1)
w
i
(
t
)
=
exp
(
r
i
(
t
−
1
)
/
T
)
∑
n
exp
(
r
i
(
t
−
1
)
/
T
)
w_i(t)=\frac{\exp \left(r_i(t-1) / T\right)}{\sum_n \exp \left(r_i(t-1) / T\right)}
wi(t)=∑nexp(ri(t−1)/T)exp(ri(t−1)/T)
2.3 Direction
PE-LTR
A Pareto-Efficient Algorithm for Multiple Objective Optimization in E-Commerce Recommendation
推荐系统里的多目标调参-pareto efficient
用户级别的Pareto优化
m i n ∥ ∑ i = 1 K ω i ∇ θ L i ( θ ) ∥ 2 2 min \quad \left\|\sum_{i=1}^K \omega_i \nabla_\theta L_i(\theta)\right\|_2^2 min∥ ∥∑i=1Kωi∇θLi(θ)∥ ∥22 s.t. ∑ i = 1 K ω i = 1 , ω 1 , ⋯ , ω K ≥ 0 \sum_{i=1}^K \omega_i=1, \omega_1, \cdots, \omega_K \geq 0 ∑i=1Kωi=1,ω1,⋯,ωK≥0
目标融合
关于推荐系统多目标融合排序的进一步思考
多目标排序在快手短视频推荐中的实践
一矢多穿:多目标排序在爱奇艺短视频推荐中的应用
1. 公式如何设计?
推荐系统多目标优化专题(2)—融合公式设计思路
1.线性加法
a
∗
p
E
v
t
r
+
b
∗
p
L
t
r
+
…
+
g
∗
f
(
p
W
a
t
c
h
Time
)
\mathrm{a} * \mathrm{pEvtr}+\mathrm{b} * \mathrm{pLtr}+\ldots+\mathrm{g} * \mathrm{f}(\mathrm{pWatch} \text { Time })
a∗pEvtr+b∗pLtr+…+g∗f(pWatch Time )
目标权重就代表了在融合公式中的重要度,哪个目标应该更重要 (或者想涨哪个指标) 调大,但这个系数对于所有用户都是一样的比例
2.指数乘法
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
R
×
f
(
video_len
)
\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 \cdots \times p_{C M R}{ }^{w_{C M R}} \times f( \text { video\_len} )
score =pVTRwVTR×pVCRwVCR×pSHRwSHR×⋯×pCMRwCMR×f( video_len)
融合公式对于不同用户是有一定个性化的
指数3是预估值越大,单目标在融合公式的影响力也越强;(比如弹幕/点赞这种稀疏目标,预估值高的权重大一些;对于那些喜欢发弹幕的用户,不妨让他们的弹幕目标影响力大一些)
指数0.3则是预估值越大,单目标在融合公式的影响力进行抑制(通俗来讲,即有没有很重要,多还是超级多不关心)
3.带权指数加法
score
=
∑
i
=
1
n
factor
(
α
i
+
score
i
)
β
i
\text { score }=\sum_{i=1}^n \text { factor }\left(\alpha_i+\text { score }_i\right)^{\beta_i}
score =i=1∑n factor (αi+ score i)βi
- factor(组合权重):调节单目标整体的影响力
- beta(提升比例):基于预估分数调节单目标影响力,即融合公式有一定用户个性化
- alpha(灵敏度):起到一定兜底作用,同时保证factor只调大单一目标权重,而不是作用于融合公式整体
缺点:加法形式特别容易被最大的目标主导,而稀疏目标一般都有比较大的factor
- 带权指数乘法
score = ∏ i = 1 n factor ( α i + score i ) β i \text { score }=\prod_{i=1}^n \text { factor }\left(\alpha_i+\text { score }_i\right)^{\beta_i} score =i=1∏n factor (αi+ score i)βi
2. 如何在线优化?
多目标搜参,首先初始化参数;通过融合公式得到每个视频最终的排序分,并计算各子目标的AUC;根据指标的重要性对分类的AUC、回归的PNR等确定权重,定义总的优化目标:
max
Obj
=
∑
i
w
i
∗
A
U
C
(
t
i
)
+
∑
j
w
j
∗
P
N
R
(
r
j
)
\text{max} \quad \text { Obj }=\sum_i w_i * A U C(t_i)+\sum_j w_j * P N R(r_j)
max Obj =i∑wi∗AUC(ti)+j∑wj∗PNR(rj)
通过持续迭代,使得总评估目标Obj最大,即得到各子目标的超参数α、β。
- PSO(粒子群)算法
- ES(进化)策略