4、多目标优化数学基础:帕累托最优、帕累托前沿、多目标优化问题的数学形式化、权重法、约束法
各位同学,欢迎来到第四讲。
上一章我们聊了推荐系统为什么要做多目标优化。说白了,就是用户既要点击率高,又要转化好,还得时长够长。你想想看,一个模型怎么可能同时把这三件事都做到极致?
嗯,这就要引入我们今天的主角——多目标优化的数学基础了。
4.1 多目标优化问题的数学形式化
先给个严谨的定义。一个多目标优化问题,数学上长这样:
minimize F(x) = [f₁(x), f₂(x), ..., fₖ(x)]ᵀ
subject to x ∈ Ω
其中,x 是决策变量(比如你的模型参数),Ω 是可行域(参数取值范围),F(x) 是一个向量函数,包含了 k 个目标函数。
注意看,这里有个关键点:我们不是要最小化一个数,而是要最小化一个向量。向量怎么比大小?没法直接比。这就引出了帕累托最优的概念。
核心理解:多目标优化不是找一个「最优解」,而是找一组「不坏的解」。这组解构成了帕累托前沿。
4.2 帕累托最优
什么叫帕累托最优?我用自己的话给你翻译一下:
假设有两个解 x₁ 和 x₂。如果 x₁ 在所有目标上都优于或等于 x₂,并且至少在一个目标上严格优于 x₂,那么我们就说 x₁ 帕累托支配 x₂。
反过来,如果一个解不被任何其他解支配,它就是 帕累托最优解。
举个例子。你在调推荐模型时,有两个候选方案:
- 方案A:点击率 0.12,转化率 0.05,时长 120s
- 方案B:点击率 0.11,转化率 0.04,时长 130s
方案A在点击率和转化率上都优于B,但时长不如B。所以A不支配B,B也不支配A。它们俩都是帕累托最优解。
我的经验:我在做短视频推荐时,经常遇到这种情况。点击率高的视频往往时长短,时长长的视频往往点击率低。你没法说哪个更好,只能看业务要什么。
4.3 帕累托前沿
所有帕累托最优解构成的集合,在目标空间中的像,就是 帕累托前沿。
你可以把它想象成一条曲线(或曲面)。在这条曲线上,你无法在不牺牲一个目标的前提下,提升另一个目标。
举个例子,两个目标(点击率、转化率)的帕累托前沿可能长这样:
| 解编号 | 点击率 | 转化率 |
|---|---|---|
| 1 | 0.10 | 0.08 |
| 2 | 0.12 | 0.06 |
| 3 | 0.14 | 0.04 |
你看,从解1到解3,点击率越来越高,但转化率越来越低。这就是帕累托前沿的典型特征——目标之间互相冲突。
注意:帕累托前沿上的解没有绝对的好坏之分。你不能说解1比解3好,只能说它们代表了不同的权衡。
4.4 权重法
好了,理论讲完了,咱们来点实际的。怎么从帕累托前沿里选一个解出来?
最常用的方法就是 权重法(也叫线性加权法)。
思路很简单:给每个目标赋一个权重 wᵢ,然后优化加权和:
minimize Σ wᵢ · fᵢ(x)
subject to x ∈ Ω, Σ wᵢ = 1, wᵢ ≥ 0
权重代表了你对各个目标的重视程度。比如:
- w₁ = 0.7(点击率),w₂ = 0.3(转化率)—— 你更看重点击率
- w₁ = 0.3(点击率),w₂ = 0.7(转化率)—— 你更看重转化率
不同的权重组合,会得到帕累托前沿上不同的点。
关键点:权重法只能找到凸的帕累托前沿上的点。如果前沿是非凸的,权重法会漏掉一些解。
我在项目中遇到过这个问题。有一次我们用权重法调模型,怎么调都找不到某个区域的解。后来才发现,那个区域的帕累托前沿是凹的,权重法根本覆盖不到。
4.5 约束法
那遇到非凸前沿怎么办?别急,还有 约束法(也叫ε-约束法)。
约束法的思路是:选一个目标作为主目标,其他目标都转成约束条件。
minimize f₁(x)
subject to f₂(x) ≤ ε₂, f₃(x) ≤ ε₃, ..., fₖ(x) ≤ εₖ
x ∈ Ω
比如,你想最大化点击率,同时保证转化率不低于0.05:
minimize -点击率(x)
subject to 转化率(x) ≥ 0.05
x ∈ Ω
通过调整 ε 的值,你可以遍历整个帕累托前沿,包括非凸的部分。
我的建议:在实际工程中,我通常先用权重法快速找到一个大致的区域,再用约束法精细调优。这样既快又准。
4.6 两种方法的对比
| 特性 | 权重法 | 约束法 |
|---|---|---|
| 适用前沿形状 | 凸前沿 | 凸前沿 + 非凸前沿 |
| 计算复杂度 | 低(一次优化) | 高(多次优化) |
| 权重/阈值设置 | 权重直观 | 阈值难设 |
| 工程落地 | 容易 | 较复杂 |
你看,没有银弹。权重法简单但有限制,约束法全面但麻烦。具体用哪个,得看你的业务场景。
避坑指南:我曾经在某个项目中,直接用权重法调了三个月,结果线上效果一直不理想。后来换成约束法,才发现权重法漏掉了一个关键区域。嗯,从那以后,我每次做多目标优化,都会先用约束法扫一遍前沿的形状。
4.7 小结
这一章我们讲了多目标优化的数学基础。核心就三件事:
- 帕累托最优:不被任何解支配的解
- 帕累托前沿:所有帕累托最优解的集合
- 求解方法:权重法(简单但有限制)、约束法(全面但复杂)
下一章,我们会把这些数学工具真正用到推荐系统中去。到时候你会看到,这些看似抽象的概念,其实每天都在你的推荐模型里发挥作用。
好了,今天就到这里。有问题随时问我。
公众号:蓝海资料掘金营,微信deep3321