强化学习的风还是吹到了多目标融合!
多目标融合机制前言
当下推荐系统的排序模块往往会涉及多个 xtr 目标的预估以及预估分数的融合:
目标预估阶段,多采用多目标联合学习的模块来进行,一般模块的最后会并行建立多个塔完成各目标的预估任务。
对于分数融合阶段,业界目前比较公认的方案是根据业务目标预先定义一个融合函数 g ,然后将该函数输出的分数作为最终的排序依据以 点击率 CTR、长播率 LVTR 和关注率 WTR 为例,融合函数 g 的形式如下:
这种方法很直观简洁,但也丧失了灵活性(融合函数的参数空间被限制)和及时性(人为设置超参数的方式不能对变化及时响应)。
个性化融分
Pantheon: Personalized Multi-objective Ensemble Sort via Iterative Pareto Policy Optimization
今天分享的论文提供了一种新的思路——通过在融合阶段引入神经网络来直接输出最终的融合分数(记为 score),并通过强化学习的方法来实现对超参数的自适应调整(在模型评估指标给定的情况下)。
首先介绍融合分数 score 的学习方法,
特征输入:传统框架下以多个预测的 xtr 值作为输入得到融合分数 score。而 Pantheon 则选择以每个 xtr 塔的隐藏层输出作为模型的输入指标,同时也会引入 user 和 item 特征来以实现个性化的融合分数。另外,Pantheon 也会对隐藏层的输出做 stop gradient 处理,避免梯度回传到 xtr 塔中。
网络结构:因为复用了 xtr 塔的隐状态输出,因此 Pantheon 的网络结构相对简单,只需要全连接神经网络和 Sigmoid 激活函数即可,网络的输出即为融合分数 score。
训练损失:多目标预估框架下每个 xtr 塔各自有一个输出概率来计算交叉熵损失,考虑到 Pantheon 塔的输出是作为最终融合分数的输出。因此在 Pantheon 中,直接使用融合分数 score 作为各 xtr 塔的输出概率,将计算得到的交叉熵损失作为 Pantheon 的训练损失函数。
作者的实践经验发现 Pantheon 的学习对损失函数中的权重系数比较敏感,接下来将介绍 Pantheon 如何通过强化学习来实现这些超参数的自适应调整,即通过强化学习实现的超参数自适应调整(论文中叫 IPPO,Iterative Pareto Policy Optimization)。
强化学习是一个智能体通过与环境交互做出决策来最大化累计奖励的过程,在 Pantheon 中,智能体的决策是权重系数,环境则是 app 中收集的用户行为日志,奖励函数是智能体能否给出优于基础模型的权重系数(多任务加权的 GAUC 更高)。因此 IPPO 模块最后实现的是 Agent 基于用户行为日志的变化来给出更合适的权重系数,使得各任务的学习更接近帕累托最优的状态(即每个任务想获得 AGUC 的提升必须以其他任务 AGUC 的下降为代价)。

具体来说,IPPO 引入了 一个 Base Model 作为参考,Agent 的决策也是一种 rule-based 的方法:
- 替换基础模型: 如果 Agent 给出的权重系数组合在各任务的 GAUC 上都优于基础模型,则将 Agent 的权重系数组合作为新的基础模型。
- 更新权重系数: 对于 AGUC 指标相差最大的任务,Agent 会对其权重系数进行小幅度的更新(有点网格搜索参数更新的意思)。
从这个视角出发, Base Model 的水位会随着 Agent 的更新而不断提升,Agent 也会在 Base Model 的水位上进行探索和更新,如果 Agent 的更新不能超越 Base Model,那么 Agent 一直都不会获得奖励, 相应地也说明 Base Model 的权重系数组合已经是最优的,即所谓的帕累托最优。
原论文也给出了 Pantheon 在离线和在线实验的效果,同时还给做了一些消融实验。
关于这篇论文,我在理解上还有点疑惑,也想蹲一蹲大佬解释下。目前我的理解来看,IPPO 只是给参数搜索套了个强化学习的壳子,每组权重系数的评估都需要对 Pantheon 进行重新训练,这样效率会不会低很多?
最后,这里之所以以【强化学习的风还是吹到了多目标融合】是因为这篇文章让我想到了快手之前有篇文章也尝试基于强化学习方法来实现去公式化的目标分数融合,虽然两篇文章的实现思路有所不同,但是出发点都是希望通过引入强化学习的方法来脱离手动设置融分公式带来的参数空间限制。