AAAI 2025 | UC Berkeley、阿里提出NMT,四行代码解决搜推任务中的目标冲突问题

018eca7dbafcf717ae80b80d9e7a15bb.gif

©PaperWeekly 原创 · 作者 | 咕咕

230ffb39f68e9534e320b7e9aba2c9a3.png

背景:工业界中的目标冲突问题

在工业界实际的搜广推系统中,一个模型通常需要兼顾多个目标。例如,在通用搜索场景中,需要兼顾 CTR、相关性、商业化效率等目标;在电商推荐中,需要同时兼顾成交效率、丰富性等目标。

在实践中,我们发现,绝大多数目标之间或多或少都存在目标冲突的问题,多个目标之间往往不能兼得。例如,在电商推荐系统中,如果希望最大化成交效率,通常在丰富性上会有较大的损失。一个更常见的例子是广告收入和自然流量效率之间的矛盾,两者的此消彼长几乎存在于所有广告系统中。

常见的解决方案是一个多目标学习策略(Multi-task Learning, MTL),即在损失函数中,同时加入多个目标的 loss,并使用 loss 的权重来调整不同目标对模型带来的影响。然而,权重调整是一个费心费力的工作,经常会出现“面多了加水,水多了加面”这样的重复劳动。

此外,多目标学习中,没有考虑到目标之间的优先级,如果存在一个高优先级、牢不可破的目标,那么加入的次优先级的目标几乎一定会破坏高优先级目标的学习。这样一来,就无法保证高优先级目标的不可破坏性。

举一个简单的例子,我们希望同时兼顾系统的相关性和广告收入。我们的目标是在用户体验(即相关性)不受影响的情况下,尽可能最大化广告收入。基于权重调整的方法就会尝试不同的广告收入对应的权重。

然而,这种权重的调整是极其困难的,通常会出现权重过大就影响了相关性、权重过小就不能最大化广告收入这一尴尬境地。并且,如果目标增多至三个、四个,这种权重调整的方法就会变得无比困难。

在这篇工作中,作者提出了一个被称为 NMT 的方法。该方法旨在解决多目标学习中,建模高优先级目标的方式。在 NMT 方法中,不需要调整参数,就可以实现在高优先级目标不受破坏的前提下,最大化次有目标的效果。代码实现只有四行,感兴趣的读者可以直接跳到附录部分。

0729bd98bff37141a65d1f14b346d0ac.png

论文标题:

No More Tuning: Prioritized Multi-Task Learning with Lagrangian Differential Multiplier Methods

论文链接:

https://arxiv.org/abs/2412.12092

9b59cd3b3c065c434cb5e936acae5a12.png

建模:高优先级目标的强约束

不失一般性,我们先讨论只有两个目标的情况。我们定义两个目标: 和 ,其中 是高优先级目标, 是低优先级目标。业务上,我们需要对目标 做强保证,即在加入 目标的时候,模型在目标 上的表现不能被减弱。

对于两个目标,我们分别将其建模为机器学习中的两个损失函数 和 ,则我们的任务可以建模为:

fba8fed3cf8dc3d84bc9b831ed44b120.png

其中, 是 的极小值点,可以通过优化 容易地得到。

得到了上述问题,我们就需要在神经网络的框架下来求解这个带约束的优化问题。于是,我们把带优先目标的多目标优化建模成了两个阶段:

阶段 1,只优化高优先目标 直到模型收敛,获得高优先目标的最优解 ;

阶段 2,以高优先目标为约束,优化低优先目标 。

阶段 1 只需要使用标准的优化流程(如梯度下降)即可解决。但对于阶段 2,基于梯度的方法无法直接优化带约束的优化任务。在 2.2 中我们将重点讨论如何在目前基于梯度的优化框架下,优化带约束的最优化任务。

下图展示了 NMT 方法的优化过程。在第一阶段,NMT 方法首先专注于优化高优先级任务。在高优先级任务被优化到最优后,NMT 方法开始在高优先级任务的约束下,优化低优先级任务。在第二阶段中,低优先级任务的优化始终受到高优先级任务的约束,因此可以做到低优先级任务不对高优先级任务产生影响。

4cc9d2a088fe30381f081d708f9a8de0.png

ef421aff2cde1263c55f99d0b9c0d1e6.png

实现:基于梯度的拉格朗日最优化

本节中,我们讨论如何使用基于梯度的方法解优化问题:

9e937fa92b44a8fa13b10af8cfb6207e.png

解决带约束的优化问题,基本的思路就是把带约束的优化问题转化为无约束的优化问题。不难想到,我们可以用拉格朗日乘子法来解决这个问题。

上述问题的拉格朗日函数为:

c843fb644c8f6037fb2b7fb3145710bc.png

其对应的 KKT 条件为:

981e87db1b0b93614dfb243127e24e79.png

KKT 条件要求我们找到拉格朗日函数 的驻点,即为优化问题的解。然而我们知道,梯度下降法只寻找函数的最小值,不能用来寻找函数的驻点,因此该目标不能直接使用梯度下降法求解。我们旨在找到一种能够和目前优化框架(梯度下降)完全兼容的优化手段。

基于这个思路,我们提出了 NMT 方法。我们提出,只需要在正常神经网络参数 做梯度下降的同时,对拉格朗日函数中的 做梯度上升,即可达到优化目标。不难看出,,因此 每次的更新公式为 。

我们在论文中对这部分内容作了详细的理论分析,有兴趣的同学请参阅论文《No More Tuning: Prioritized Multi-Task Learning with Lagrangian Differential Multiplier Methods》的 Theoretical Analysis 一节。本文将不再对理论部分做深入探讨。

因此,在第二阶段,我们的优化目标变成拉格朗日函数 ,在对 做梯度下降的同时,对 做梯度上升即可。

重缩放技巧

在实验的过程中,我们发现当参数 较大时,损失函数的约束项 会变得非常大,从而导致在梯度下降中参数 发生大幅度的更新。这些过大幅度的更新可能会使学习过程不稳定。鉴于此,在更新 时,我们采用了重缩放的损失函数。在对 进行梯度下降时,损失函数形式为:

5c98a8f68756b7c9c114ede92673e329.png

这种重缩放的形式确保了每个损失的组合是一个规范化的凸组合,从而防止了损失函数可能出现的爆炸现象。在我们的所有实验中,优化过程中均纳入此重缩放的损失函数形式。实验表明,重缩放技巧会显著提高训练过程的稳定性。

b693bae56ed774b501d15b3d04a7762d.png

总结:方法流程

4.1 总体流程

基于上述讨论,我们总结了 NMT 的总体流程。NMT 分为两个主要阶段:

1. 优化主要任务首先,我们对第一个任务(主要任务)进行优化,以找到能够最小化目标函数 的参数 。这个阶段会持续进行,直到目标函数收敛为止。

2. 迭代优化剩余任务在主要任务优化完成后,我们会优化低优先级的任务。对于次要任务,我们将模型参数初始化为 ,并将拉格朗日乘数设置为初始值 。接着,利用梯度下降算法更新模型参数,同时用梯度上升算法更新拉格朗日乘数。这个过程会持续到收敛为止。

4.2 迈向更多目标:任意 个有序目标的联合优化

前文中,我们讨论了 NMT 应用在两个目标上的方法。上述框架可以自然地扩展到任意数量的任务,这些任务通过损失函数 表示,其中任务 1 具有最高优先级,而任务 具有最低优先级。问题可以表述为:

e7e797d120308d67c29ab047cf1a8f74.png

优化步骤如下:

1. 最小化 (最高优先级)以获得 和 。

2. 在 的约束条件下,最小化 (次优先级)以获得 。

3. 在 和 的约束条件下,最小化 (再次优先级)以获得 。

4.针对后续任务继续该过程。

对于每个任务 ,问题的表述为:

b6d8989f0cbcfd191ef76a6ea663b9bc.png

这种方法确保每个任务 按顺序被优化直到第 个任务,同时保留所有更高优先级任务的最优值。

算法:用于 个任务的 NMT 算法

输入:

  • :模型参数的学习率

  • :拉格朗日乘子的学习率

  • :任务 的目标函数 ()

  • :拉格朗日乘子的初始值

步骤:

步骤 1:优化主要任务(任务1)以最小化 ,直到收敛。将优化后的参数保存为 。

对于每个任务 从 2 到

  • 使用 初始化 ,使用 初始化 ,其中 。

  • 重复以下步骤直到收敛:

  1. 计算任务 的聚合损失:

    766b57dada569bf5956ed65de4619c8c.png

  2. 使用梯度下降更新 :

  3. 使用梯度上升更新每个 :

用优化后的 更新 。

8923a999e44396b86865446802889198.png

Appendix: 代码实现

# clip for stability  
diff = tf.clip_by_value(primary_loss - optimal_primary_loss, clip_value_min=-1, clip_value_max=1)  
  
# update lambda  
# lagrange_lr is a hyper-parameter  
lagrange_mul = tf.assign(lagrange_mul, tf.clip_by_value(tf.assign_add(lagrange_mul, training_config.lagrange_lr * diff),  
                                                        clip_value_min=0,  
                                                        clip_value_max=training_config.lagrange_clip))  
  
lagrange_loss = self.lagrange_mul * (primary_loss - optimal_primary_loss)  
  
# use re-scaling method  
final_loss = (secondary_loss + lagrange_loss) * (1 / (1 + self.lagrange_mul))

更多阅读

03e5172446f488aea94c78a84edfc58a.png

3b76d8d9b650d91a6e2bd2f0efa903ae.png

b4981256bbe9fd718fa904bce91a2bc8.png

6cda0aee65294225a37319b6c9ecb391.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

adfe8bb41d8271575ab0ad7a65255d8e.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

·

9200f010a029a842034c1d15603e8987.jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值