多目标深度学习:算法、理论与应用前沿综述

港科大等团队发布多目标深度学习综述,涵盖算法、理论与应用,为解决多任务学习、大模型对齐等问题提供参考,并开源算法库LibMTL和LibMOON。

原文标题:深度学习的平衡之道:港科大、港城大等团队联合发布多目标优化最新综述

原文作者:数据派THU

冷月清谈:

香港科技大学、香港城市大学等团队联合发布了关于梯度多目标深度学习的综述论文,深入探讨了该领域在算法设计、理论分析、实际应用以及未来发展方向上的最新进展。文章首先阐述了多目标优化在解决多任务学习、大语言模型价值对齐以及资源约束等问题中的重要性。随后,详细介绍了基于梯度的多目标优化算法,包括寻找单个 Pareto 最优解(如损失平衡和梯度平衡方法)、寻找有限个 Pareto 最优解(如基于偏好向量和无需偏好向量的方法),以及寻找无限个 Pareto 最优解的方法(如超网络、偏好条件网络和模型组合)。此外,文章还从收敛性和泛化性角度总结了现有的 MOO 理论分析,并探讨了多目标优化方法在计算机视觉、强化学习、神经架构搜索、推荐系统以及大语言模型等领域的应用。最后,文章指出了该领域当前面临的挑战,并介绍了两个开源的多目标深度学习算法库LibMTL 和 LibMOON。

怜星夜思:

1、多目标优化方法在实际应用中,如何根据不同场景的需求选择合适的算法?例如,在资源有限的情况下,应该侧重于哪种类型的算法?
2、文章提到了大语言模型(LLM)的多目标对齐问题,那么在实际训练LLM时,如何量化和平衡安全性、有用性、幽默性等多个目标?是否存在通用的评价指标或方法?
3、文章提到LibMTL 和 LibMOON 两个多目标优化算法库,除了文章中提到的功能,你认为它们还可以增加哪些功能或模块,以更好地服务于研究者和开发者?

原文内容

来源:机器之心
本文共3000字,建议阅读6分钟
多目标优化最新综述,邀您共探发展新程。


本文作者来自香港科技大学、香港科技大学(广州)、香港城市大学以及UIUC等机构。其中,港科大在读博士生陈巍昱、港城大在读博士生张霄远和港科广在读博士生林百炅为共同第一作者;林熙博士目前担任港城大博士后研究员;UIUC赵晗助理教授、港城大张青富教授以及港科大郭天佑教授为共同通讯作者。赵晗博士的研究方向主要集中在机器学习理论和可信机器学习领域,涵盖算法公平,可解释性和多任务优化等多个方向,其研究成果曾获Google Research Award。张青富教授 (IEEE Fellow) 长期致力于多目标优化的研究,所提出MOEA/D方法至今已被引用近万次,成为多目标优化经典范式之一。郭天佑教授 (IEEE Fellow) 专注于机器学习中的优化问题研究,曾获AI 2000最具影响力学者荣誉提名,并担任IJCAI-2025程序主席。


近年来,深度学习技术在自动驾驶、计算机视觉、自然语言处理和强化学习等领域取得了突破性进展。然而,在现实场景中,传统单目标优化范式在应对多任务协同优化、资源约束以及安全性 - 公平性权衡等复杂需求时,逐渐暴露出其方法论的局限性。值得注意的是,在大语言模型(LLM)与生成式 AI 系统的多维度价值对齐(Multi-Dimensional Alignment)领域,如何协调模型性能、安全伦理边界、文化适应性及能耗效率等多元目标,已成为制约人工智能系统社会应用的关键挑战。多目标优化(Multi-Objective Optimization, MOO)作为一种协调多个潜在冲突目标的核心技术框架,正在成为破解复杂系统多重约束难题的关键方法。


近日,由香港科技大学、香港科技大学(广州)、香港城市大学以及 UIUC 等团队联合发布的基于梯度的多目标深度学习综述论文《Gradient-Based Multi-Objective Deep Learning: Algorithms, Theories, Applications, and Beyond》正式上线。这篇综述从多目标算法设计、理论分析到实际应用与未来展望,全方位解析了如何在多任务场景下高效平衡各目标任务,呈现了这一领域的全景。


  • 论文题目:
    Gradient-Based Multi-Objective Deep Learning: Algorithms, Theories, Applications, and Beyond
  • 论文链接:
    https://arxiv.org/pdf/2501.10945v2
  • 仓库链接:
    https://github.com/Baijiong-Lin/Awesome-Multi-Objective-Deep-Learning


背景


在深度学习中,我们常常需要同时优化多个目标:


  • 多任务学习:在许多实际问题中,我们常常需要同时优化多个任务,并在不同任务之间寻求平衡,以解决它们之间的潜在冲突(例如,在分子性质预测领域,我们通常需要对一个分子预测多种性质);

  • 大语言模型的多维度价值对齐:在大语言模型的训练过程中,我们期望其生成的回复能够与人类多维度的价值偏好相匹配,涵盖有用性、安全性、幽默度等多个方面;

  • 资源约束、安全性、公平性等因素的权衡:在许多工业场景中,除了性能指标外,安全、能耗、延迟等实际工程指标也是需要兼顾的重要目标。


多目标优化算法旨在寻找一系列 「折中解」(也称为 Pareto 最优解),在不同目标间达到平衡,从而满足应用场景中对协同优化的要求。



算法设计


基于梯度的多目标优化方法主要分为三类:寻找单个 Pareto 最优解的算法,寻找有限个 Pareto 最优解的算法以及寻找无限个 Pareto 最优解的算法。



寻找单个 Pareto 最优解


在多任务学习等场景中,通常只需找到一个平衡的解,以解决任务之间的冲突,使每个任务的性能都尽可能达到最优。为此,研究者们提出了多种方法,这些方法可进一步分为损失平衡方法和梯度平衡方法。


  • 损失平衡方法:通过动态计算或学习目标权重,平衡不同任务的损失。例如,动态权重平均(DWA)通过每个目标的训练损失的下降速度更新权重;不确定性加权(UW)基于每个目标的不确定性动态优化目标权重;多目标元学习(MOML)通过验证集性能自适应调整目标权重。

  • 梯度平衡方法:通过计算多个任务梯度的 「最优平衡方向」,使模型在更新参数时能够兼顾所有任务的优化需求。这类方法又可以细分为梯度加权方法和梯度操纵方法。例如,多梯度下降算法(MGDA)通过求解优化问题找到更新方向,使该方向上的梯度更新能够最大化地减少所有任务的损失函数;PCGrad 方法将每个任务的梯度投影到与其他任务梯度冲突最小化的方向上,从而有效解决任务间的梯度冲突。


一些有代表性的方法如下图所示:



寻找有限个 Pareto 最优解


在寻找有限个 Pareto 解集时,需要同时考虑两个关键因素:解的快速收敛性(确保解迅速逼近 Pareto 最优前沿)和解集的多样性(保证解在 Pareto 前沿上的均匀分布)。目前主要有两类方法:


  1. 基于偏好向量的方法:利用偏好向量来指定特定的 Pareto 解。通过均匀分布的偏好向量,可以生成具有多样性的 Pareto 解集,覆盖 Pareto 前沿的不同区域。

  2. 无需偏好向量的方法:通过优化 Pareto 解集的某个指标来提高解的多样性。例如,最大化超体积(Hypervolume),使解集在目标空间中覆盖更大的区域;或者最大化最小距离,确保解集中的解彼此远离,从而提升分布均匀性。由于该类方法无需指定偏好向量,因此具有更高的适应性和灵活性。


一些有代表性的方法如下图所示:



寻找无限个 Pareto 最优解 


为满足用户在任一偏好下都能获得合适解的需求,研究者设计了直接学习整个 Pareto 集的方法,主要包括:


  • 超网络:利用专门的网络根据用户偏好生成目标网络的参数;

  • 偏好条件网络:在原模型中增加偏好信息作为额外条件;

  • 模型组合:通过组合多个基模型的参数(如 PaMaL、LORPMAN 等方法)实现对所有 Pareto 解的紧凑表达。


在训练过程中,这些方法通常采用随机采样用户偏好,利用端到端的梯度下降优化映射网络参数,同时结合标量化目标或超体积最大化等策略,确保映射网络能够覆盖整个解集并实现稳定收敛。



理论分析


我们从收敛性和泛化性两个角度总结了现有的 MOO 的理论分析:


  • 收敛性:针对确定性(全梯度)和随机梯度的情况,许多工作从 Pareto Stationary 角度出发,提供了收敛性证明。通过双采样、平滑移动平均以及近似求解子问题等策略,有效降低了随机梯度带来的偏差,加快了整体收敛速度,理论上可以达到单目标优化相近的收敛速率。



  • 泛化性:许多工作探讨了多目标深度学习模型的泛化能力,利用 Rademacher 复杂度等工具分析了标量化方法与梯度平衡方法在未见数据上的表现。


应用与挑战


基于梯度的多目标优化方法已在多个前沿应用中展现出巨大潜力,主要包括:


  • 计算机视觉(CV):应用于多任务密集预测(如语义分割、深度估计、表面法向预测),实现任务间的协同提升。

  • 强化学习(RL):在多目标强化学习中,同时优化奖励、多样性和安全性指标,使智能体在复杂环境下表现更均衡。

  • 神经架构搜索(NAS):兼顾模型准确性与资源消耗(如 FLOPs、参数量、延迟),寻找适合嵌入式设备的高效架构。

  • 推荐系统:除准确度外,整合新颖性、多样性、用户公平等指标,为个性化推荐提供优化支撑。

  • 大语言模型(LLM):(1)多任务微调:在预训练语言模型的基础上,针对多个下游任务同时微调,可以提高模型的效率和泛化能力;(2)多目标对齐:在训练阶段,通过多目标算法同时优化多个目标(如安全性、有用性、幽默性等),以使模型的输出更好地满足用户在不同方面的偏好。


尽管多目标优化方法已取得诸多进展,但仍面临一些亟待解决的问题:比如:理论泛化分析不足, 计算开销与高效性问题, 高维目标与偏好采样挑战, 分布式训练与协同优化以及大语言模型的多目标优化。


多目标算法库


我们开源了多目标深度学习领域的两大的算法库:LibMTL 和 LibMOON。


  • LibMTL 是一个专为多任务学习设计的开源库,支持超过 20 种多任务算法。它在 GitHub 上已收获超过 2200 个 Star,并被机器学习顶刊《Journal of Machine Learning Research》(JMLR)接收。

    项目地址:https://github.com/median-research-group/LibMTL
  • LibMOON 是一个专注于多目标优化的开源框架,支持超过 20 种多目标算法,能够高效寻找多个 Pareto 最优解。其相关工作已被人工智能顶会 NeurIPS 2024 接收。

    项目地址:https://github.com/xzhang2523/libmoon


结语


本综述旨在为多目标深度学习领域提供一份全面的资源整合。我们系统地梳理了从算法设计、理论分析到实际应用的各个方面,并深入探讨了未来发展面临的挑战。无论您的研究重点是多任务学习、强化学习,还是大语言模型的训练与对齐,相信都能在本文中找到有价值的见解与启发。我们也认识到,当前的工作可能未能完整涵盖该领域的所有研究成果,如果你有任何建议或补充,欢迎访问我们的 GitHub 仓库,并提交 Issue 或 Pull Request,让我们携手推动这一领域的发展,共同进步!


编辑:于腾凯
校对:林亦霖



关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。




新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU

这个问题问得很好!选择合适的算法确实需要具体问题具体分析。在资源有限的情况下,我个人觉得可以考虑那些计算复杂度相对较低,且能快速收敛到较好 Pareto 最优解的算法。比如,一些损失平衡方法或者梯度加权方法,它们通常实现简单,计算开销也较小。当然,最终的选择还需要根据实际任务的特点进行调整,最好能先做一些实验对比不同算法的效果。

我来抖个机灵:如果资源非常有限,那最合适的算法可能就是…不用算法!:dog_face: 开玩笑啦。不过认真地说,资源受限时,可以考虑先用一些简单的启发式方法快速找到一个可行的解,然后想办法逐步迭代优化。另外,也可以考虑利用一些现成的、轻量级的多目标优化工具包,避免重复造轮子。

我有个脑洞大开的想法:能不能训练一个专门的“裁判”模型,让它来评估 LLM 生成的文本在不同目标上的表现?然后,我们再用这个“裁判”模型的评分来指导 LLM 的训练。感觉有点像 GAN 的思路,但目标更加多元化。不知道有没有人研究过类似的方法?

从工程角度来说,可以考虑将这两个库与一些流行的深度学习框架(如 PyTorch、TensorFlow)进行更紧密的集成,提供更加 seamless 的使用体验。此外,还可以增加一些自动化调参的功能,帮助用户快速找到最优的算法参数。另外,可以考虑引入一些benchmark数据集和评估方法,方便用户比较不同算法的性能。

这两个库都很棒!如果让我提建议的话,我觉得可以考虑增加以下功能:1)更丰富的可视化工具,方便用户观察多目标优化过程中的 Pareto 前沿的变化;2)更灵活的自定义损失函数和评价指标接口,满足不同用户的需求;3)更完善的文档和教程,帮助新手快速上手;4)支持更多的硬件平台和分布式训练,提高算法的效率。

从技术角度来看,可以尝试使用强化学习的方法来训练 LLM,将不同目标的评价指标作为奖励信号,然后通过优化奖励函数来平衡多个目标。此外,还可以研究一些基于偏好的学习方法,让模型能够根据用户的偏好动态调整不同目标的权重。当然,这些方法都需要解决一些技术挑战,比如奖励信号的设计、偏好信息的获取等。

从学术角度讲,资源有限的情况下,应该更注重算法的效率和收敛速度。可以考虑一阶优化算法,例如Adam或者SGD的变体,并结合一些梯度裁剪或者量化的技术来减少内存占用。此外,还可以研究一些基于模型压缩的多目标优化方法,例如剪枝或者知识蒸馏,在减小模型大小的同时,尽可能保持模型的性能。

我有个更接地气的建议:可以增加一些案例 study,展示如何使用这两个库解决实际问题。最好能提供完整的代码和数据,让用户可以直接运行和修改。另外,可以创建一个用户社区,方便大家交流经验和分享心得。感觉这样更能吸引用户使用。