想象你是一家正在快速扩张的互联网公司的CEO,公司同时要追两个KPI:用户活跃度和商业收入。你招了一位能力超强的“大总管”MMoE,他建了一个共享人才池,所有业务线都从这个池子里调人。一开始效果不错,但很快你发现问题——用户增长和广告收入开始互相打架:提高广告曝光就伤用户体验,优化用户体验就掉收入。这两个目标像跷跷板的两端,压下一头就翘起另一头。 正当你焦头烂额时,一位“组织架构师”PLE带着全新的改革方案来了:不再让所有团队共享同一个池子,而是拆分出“共享中台”和“各业务专属团队”,再按照业务层级渐进式地调配资源。结果,两个KPI同时稳步上升,跷跷板被压平了。 这就是我们今天要讲的PLE模型——它正是MMoE在工业界的进阶升级版,通过更精细的专家分工和渐进式路由,解决了多目标排序中最棘手的“跷跷板问题”。
多目标排序是推荐系统从“能用”走向“好用”的关键一步。掌握PLE的架构设计与路由思路,意味着你具备了在真实工业场景中同时优化点击率、转化率、时长等多个指标的能力——这是高级推荐算法工程师的核心竞争力。
可视化演示
动态演示PLE多目标排序的核心机制,通过源头/管道/节点/终端四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
PLE多目标排序:一MMo 一、MMoE局限与跷跷板问题分 二、PLE渐进式分离架构思路 核心机制可视化 PLE多目标排序整体架构与关键组件
多目标背景
回到我们公司改革的起点。为什么非要搞“多目标排序”?因为现实中一个推荐系统绝不是简单预测“用户会不会点”就完事了。你希望用户点击,更希望他购买,还希望他花更多时间沉浸其中,甚至希望广告主满意——这些都是不同的KPI,也就是不同的“目标”。
在工业推荐场景里,单目标模型就像只考核“点击率”一个指标的销售团队。他们确实能把点击率做到极致,但代价是用户在页面上点了一堆“标题党”内容却从不购买,广告主也不愿再投钱。于是CTR(点击率)、CVR(转化率)、停留时长等指标被同时纳入考核,这就是多目标排序的由来。
但传统的加权求和有个致命问题——它假设所有任务可以“一起优化”,可实际场景中任务之间会互相拉扯。这就逼着我们面对那个著名的“跷跷板问题”。正如公司里各团队各抢资源,模型里的各个任务也在争夺共同的参数空间。
- 求和符号把K个任务各自的损失累加,相当于把各条业务线的“扣分项”汇总到一起。
- 任务损失$L_k$ 代表第 $k$ 个任务的损失(如点击任务用交叉熵),它衡量该任务预测得有多“离谱”。
- 权重系数$w_k$ 是每个任务的权重,相当于公司在不同阶段对KPI的侧重——比如新品期更看重转化,成熟期更看重时长。
- 加权求和$w_k \cdot L_k$ 表示每个任务的损失乘以权重后再相加,总损失越小,整体表现越好。
跷跷板问题
你发现公司里最典型的现象:市场部拼命拉新用户,商业化团队拼命提高广告收入,结果拉进来的新用户一看满屏广告立刻流失。这就是所谓的“跷跷板问题”(Seesaw Phenomenon)——一个目标变好,另一个目标就变差。
在深度学习模型里,这个现象源于“负迁移”(Negative Transfer)。不同任务的训练目标存在本质冲突:点击任务希望模型关注“吸睛”特征,转化任务希望模型关注“真实购买意图”,两者的梯度方向经常是相反的。当它们共享底层参数时,梯度更新就会互相“打架”,导致优化过程顾此失彼。
样本分布失衡还会加剧这个问题。点击事件比转化事件多得多,模型天然偏向样本量大的任务,小样本任务被“淹没”。这就像公司里市场部人多势众,说话声音大,商业化团队再怎么喊都被盖过去。
- 总梯度$\nabla_{\theta} L_{total}$ 表示所有任务合并后的参数更新方向,它决定了模型向哪个方向“挪动”。
- 点击梯度$\nabla_{\theta} L_{ctr}$ 是点击任务对参数的偏导方向,好比市场部想要的方向——多推吸引眼球的内容。
- 转化梯度$\nabla_{\theta} L_{cvr}$ 是转化任务给出的更新方向,好比商业化团队想要的方向——多推真实靠谱的商品。
- 梯度叠加当两个方向相反时,叠加后的总梯度可能指向一个“两边都不讨好”的中间地带,甚至互相抵消。这就是踩跷跷板的物理原理:两边同时发力,板子在中间疯狂摇晃。
MMoE原理
为缓解跷跷板问题,MMoE(Multi-gate Mixture-of-Experts)被提出来了。它的思路很聪明:既然任务之间梯度冲突,那就不要所有任务强行共享一套参数,而是建一个“专家池”,每个专家学习不同的特征模式,然后用一个“门控”(Gate)来为每个任务动态选择专家的组合比例。
门控网络相当于每一位业务线主管,他们根据自己的业务特点,从共享专家池中挑选合适的专家来支持自己的工作。比如点击主管可能更看重“标题吸引力”专家的意见,转化主管更看重“商品质量”专家的判断。两者调用的专家不同,梯度冲突自然就缓解了。
MMoE通过“分权”初步缓解了跷跷板问题,但还不够。因为所有专家仍然生活在一个大池子里,每个任务都能对所有专家“指手画脚”。一个专家如果被点击任务带偏了,转化任务还得继续用它——没有“绝对专属”的保障。所以MMoE只是踩跷跷板的两个小孩学会了一个时候用力,但还没有彻底分开。
- 第k个任务输出$y_k$ 是第 $k$ 个任务的最终预估值,比如点击率或转化率。
- 第i个专家$f_i(x)$ 表示第 $i$ 个专家网络对输入特征 $x$ 的处理结果,每个专家相当于一种“看问题的角度”。
- 门控权重$g_i^k(x)$ 是第 $k$ 个任务对第 $i$ 个专家的权重,由门控网络根据输入动态打分产生,数值在0到1之间。
- 加权求和$\sum_{i=1}^{n} g_i^k(x) \cdot f_i(x)$ 把每个专家的输出乘以权重再相加,相当于各部门主管按自己的需求从专家池“点人”组合成团队。
- 塔网络$h_k(\cdot)$ 将融合后的向量映射到最终预测值,相当于把团队成果整理成最后的KPI报告。
PLE核心创新
PLE(Progressive Layered Extraction,渐进式分层提取)的横空出世,相当于一次彻底的组织架构改革。它的核心洞察是:MMoE只做了“选人”,没有做“分人”。而PLE将专家网络分成了两类:任务专属专家(Task-specific Experts)和共享专家(Shared Experts)。
任务专属专家只服务于某一个任务,相当于每个业务线都有自己的嫡系部队。点击部门有自己的“点击专家”,转化部门有自己的“转化专家”,谁都管不着谁。共享专家则相当于公司中台,沉淀各个业务线都通用的基础能力,比如用户画像理解、基础特征提取等,所有任务都可以调用。
这种“共享+专属”的架构从机制上杜绝了负迁移的最大来源——一个任务强行占用另一个任务专属专家的风险。每一个任务都保证有完全属于自己的“自留地”,不会出现资源被抢的尴尬。
- 专属专家部分$\sum_{i=1}^{m_k} g_i^k(x) \cdot E_i^k(x)$ 表示任务 $k$ 调用自己 $m_k$ 个专属专家的加权组合,这部分只听命于该任务。
- 专属专家$E_i^k(x)$ 是第 $k$ 个任务的第 $i$ 个专属专家,它只对该任务的梯度更新负责,不被其他任务干扰。
- 共享专家$E_j^{shared}(x)$ 是第 $j$ 个共享专家,它学习所有任务通用的知识,供所有任务使用。
- 共享门控$g_j^{k,shared}(x)$ 表示任务 $k$ 对第 $j$ 个共享专家的使用权重,不同的任务可以对中台资源有不同的“调用程度”。
- 两部分相加专属和共享之间的比例由门控动态调节,好比各部门既用自己的嫡系部队,又借用中台资源,两者灵活搭配。
CGC模块
PLE中最核心的组成模块叫CGC(Customized Gate Control,定制门控控制)。你可以把它看作公司里一个具体的“部门协作单元”:一人事主管(门控),一批专属员工,一批中台员工。任务输入后,门控决定从哪些员工那里各取多少意见,形成一份综合报告。
在一个CGC模块内部,结构非常清晰:输入特征首先同时送入所有专家(包括专属与共享),然后每个任务对应的门控网络接收原始输入,为所有专家计算一组权重。最终每个任务的输出,就是其专属专家与共享专家输出的加权和。
CGC模块还支持多层堆叠——把多个CGC模块像乐高一样叠起来,每一层都做一次“共享+专属”的信息提取。低层偏向提取基础共性特征(如用户年龄、性别),高层偏向提取任务相关的深层语义(如购买意图强度)。这正好呼应了PLE名字中的“渐进式分层提取”。
- 门控权重向量$g^k(x)$ 是任务 $k$ 对所有专家的权重向量,维度等于“专属专家数 + 共享专家数”。
- 线性变换$W_g^k \cdot x$ 将原始特征映射到专家数量维度的得分,相当于主管快速浏览简历,给每个候选人打个分。
- Softmax归一化将所有得分转换为和为1的概率分布,保证权重非负且总量可控。
路由机制
如果说CGC是“部门协作单元”,那么路由机制就是整个公司的“管理流程”——信息该往哪走、流程该分几步。PLE的路由设计遵循一个关键思想:渐进式。
具体来说,PLE借鉴了多任务深度学习的经验,采用了“分层渐进路由”的策略。在底部几层,共享专家占主导,因为底层特征通常是所有任务共用的基础;越往上走,任务专属专家的比例逐步增加,让模型在高层精细处理任务特有信息。这种路由方式就像公司新员工的培养路径:先在中台轮岗学习通用技能,再下放到具体业务线深耕专业能力。
这种渐进路由让信息在公司里“层层过滤”:底层把通用知识提炼好,顶层把任务特定的理解补上。相比MMoE扁平的一层路由,PLE的层层递进明显更贴近真实工业场景中“共性到个性”的信息处理逻辑。
- 层级比例$l$ 表示当前是第几层,$L$ 是总层数,比例 $\frac{l}{L}$ 越大表示越靠近顶层。
- 专属专家占比$\text{depth\_routing}(l)$ 值越大,当前层分配给专属专家的权重越高——层级越高,专业分工越细。
- 渐进强度$\alpha$ 是超参数,控制从底层到高层“专属化”的速度,$\alpha$ 大则快速转向专属,$\alpha$ 小则保持较长时间的共享。
PLE与MMoE对比
现在我们把MMoE和PLE放在一张表上对比。你可以把MMoE理解成一个“所有团队共享一个公共大办公室”的架构——空间大、省钱,但隐私和冲突避免不了。PLE则是给每个业务线分了独立办公室,同时保留一个共享会议室,沟通效率和专注度都大幅提升。
在结构上,MMoE的所有专家对每个任务都是完全共享的,而PLE引入了任务专属专家与共享专家的分离。这样一来,MMoE的门控需要调和的任务间竞争完全没有发生,每个任务的专属专家可以自由地朝自己的目标优化而不受干扰。在效果上,腾讯的实践论文显示,PLE相比MMoE在多个公开数据集上都有一致的提升,尤其是在任务间相关性较弱时,PLE的优势更加显著。当然,代价是参数量的增加和计算开销的上升,但这是可控的。
所以,选择PLE还是MMoE,本质上是一种投入产出决策:如果任务之间相关性很高、共享逻辑强,MMoE完全够用而且更省;如果任务之间差异明显、跷跷板问题严重,PLE增加的参数换来的是更稳定的多目标增益。
- 专属专家参数$\sum_{k=1}^{K} m_k \cdot P_{expert}$ 是所有任务专属专家参数量之和,每个任务有 $m_k$ 个专属专家,每个专家含 $P_{expert}$ 个参数。
- 共享专家参数$s \cdot P_{expert}$ 是共享专家参数量,$s$ 是共享专家数,通常远小于专属专家总数。
- 门控参数$K \cdot P_{gate}$ 是K个门控网络的参数之和,每个门控的参数量 $P_{gate}$ 都相对精简。
工业落地经验
理论再好,落地才知道深浅。把PLE搬到真实推荐系统里,有几个经验可以分享。首先是特征选择与归一化——这条经验听起来简单,实际是最大的坑。PLE对输入特征的尺度非常敏感,归一化不一致会导致门控权重失衡,某些专家被“饿死”。
其次是训练稳定性的调优。多任务模型最怕“某个任务崩了拖垮整体”,PLE也不例外。实践中需要为每个任务单独设置梯度裁剪阈值和损失权重,甚至采用“动态权重调整”——在训练过程中根据各任务的损失变化来调整权重,就像公司调整KPI权重一样。
第三是线上推理性能。PLE的参数比MMoE多,意味着推理时延可能升高。工业界的常用做法是:在模型上蒸馏(用PLE训练大模型,再蒸馏到小的MMoE或单任务模型做线上预测),或者对专家输出做缓存与剪枝,减少实际计算量。公司要的不是一个“理论完美但上线卡顿”的模型,而是在效果和成本之间找到平衡点。
- 权重更新$w_k^{(t+1)}$ 是第 $k$ 个任务在下一轮的损失权重,它会根据上一轮的表现做自动调整。
- 损失变化率$\frac{\mathcal{L}_k^{(t)} - \mathcal{L}_k^{(t-1)}}{\mathcal{L}_k^{(t-1)}}$ 衡量该任务最近一轮的损失变化幅度。
- 调节系数$\beta$ 控制权重调整的幅度,$\beta$ 过大会导致震荡,过小则反应迟钝。
AI 应用场景
短视频推荐的多目标优化
阶段:模型架构设计
解决的问题:短视频平台同时追求播放时长、点赞率和关注转化率。传统方法用三个独立模型分别预测再融合,效果差且维护成本高;PLE在共享用户兴趣特征的同时,为每个指标保留专属专家,让点击率、时长、关注率各自得到专项优化,跷跷板效应大幅缓解。
具体案例:某短视频App的推荐系统,在使用PLE后,核心的“人均时长”指标提升3.2%,点赞率提升1.8%,且未出现时长上升但点赞率下降的跷跷板现象。
广告竞价系统的多目标出价
阶段:模型训练与调优
解决的问题:广告平台需要同时优化广告主关心的转化率和平台自身的收入。如果只优化转化率,平台收入可能下降;只优化收入,广告主效果变差导致流失。PLE让两个任务拥有各自的专属专家,门控自动平衡转化与出价之间的关系。
具体案例:某广告平台使用PLE同时对“预估转化率”和“预估点击价值”建模,广告收入提升5.6%,同时转化率保持稳定。工程师利用动态损失权重机制,在广告旺季自动加大收入任务的权重。
电商搜索的排序与买家体验
阶段:特征工程与在线推理
解决的问题:电商搜索要同时优化搜索点击率、购买转化率和用户满意度(如退货率低)。三者存在天然的负相关:高点击的商品不一定高转化,高转化的商品可能退货率高。PLE的渐进式分层提取让各目标在不同层获得不同程度的信息共享。
具体案例:某电商平台将PLE部署在搜索排序主链路,点击率提升2.4%,转化率提升1.5%,退货率下降0.8%。线上推理通过专家裁剪和模型蒸馏将时延控制在30ms内。
Python 演示
import torchimport torch.nn as nn class Expert(nn.Module): def __init__(self, input_dim, hidden_dim): super().__init__() self.net = nn.Sequential( nn.Linear(input_dim, hidden_dim), nn.ReLU(), nn.Linear(hidden_dim, hidden_dim) ) def forward(self, x): return self.net(x) class Gate(nn.Module): def __init__(self, input_dim, num_experts): super().__init__() self.net = nn.Linear(input_dim, num_experts) self.softmax = nn.Softmax(dim=1) def forward(self, x): return self.softmax(self.net(x)) class CGC(nn.Module): def __init__(self, input_dim, hidden_dim, num_tasks, num_specific, num_shared): super().__init__() self.num_tasks = num_tasks self.specific_experts = nn.ModuleList([ nn.ModuleList([Expert(input_dim, hidden_dim) for _ in range(num_specific)]) for _ in range(num_tasks) ]) self.shared_experts = nn.ModuleList([ Expert(input_dim, hidden_dim) for _ in range(num_shared) ]) self.gates = nn.ModuleList([ Gate(input_dim, num_specific + num_shared) for _ in range(num_tasks) ]) self.task_towers = nn.ModuleList([ nn.Linear(hidden_dim, 1) for _ in range(num_tasks) ]) def forward(self, x): shared_out = torch.cat( [e(x).unsqueeze(1) for e in self.shared_experts], dim=1 ) results = [] for i in range(self.num_tasks): specific_out = torch.cat( [e(x).unsqueeze(1) for e in self.specific_experts[i]], dim=1 ) expert_out = torch.cat([specific_out, shared_out], dim=1) gate_weight = self.gates[i](x).unsqueeze(1) fused = torch.bmm(gate_weight, expert_out).squeeze(1) results.append(self.task_towers[i](fused)) return results if __name__ == "__main__": model = CGC(input_dim=16, hidden_dim=32, num_tasks=2, num_specific=2, num_shared=2) optimizer = torch.optim.Adam(model.parameters(), lr=0.001) loss_fn = nn.BCEWithLogitsLoss() for epoch in range(5): x = torch.randn(64, 16) y1 = torch.randint(0, 2, (64, 1)).float() y2 = torch.randint(0, 2, (64, 1)).float() out1, out2 = model(x) loss = loss_fn(out1, y1) + 0.8 * loss_fn(out2, y2) optimizer.zero_grad() loss.backward() optimizer.step() print("epoch %d loss=%.4f" % (epoch, loss.item()))
self.specific_experts = nn.ModuleList([...])为每个任务单独创建一组专属专家,保证任务间的“自留地”。self.shared_experts = nn.ModuleList([...])创建所有任务共享的专家,学习通用特征。self.gates = nn.ModuleList([...])每个任务配置独立的门控网络,对“专属+共享”专家做动态加权。torch.cat([specific_out, shared_out], dim=1)将专属专家和共享专家的输出拼接在一起,供门控挑选。torch.bmm(gate_weight, expert_out)用门控权重对专家输出做批量矩阵乘法,实现加权求和。loss = loss_fn(out1, y1) + 0.8 * loss_fn(out2, y2)两个任务的损失加权求和,权重体现了对转化任务的侧重。
常见误区
误区“MMoE有门控机制,每个任务可以选不同的专家,跷跷板问题早就不存在了。我直接上MMoE就够了,PLE只是多了几个专家而已。”
正解MMoE只是缓解了问题,没有解决。因为所有专家仍然是一个完全共享的池子,每个任务都能对任意专家产生梯度影响。当任务间相关性弱时,任务A的梯度会污染任务B选中的专家,负迁移仍然严重。PLE的关键不是“多了几个专家”,而是从结构上隔离了任务专属的参数空间,让每个任务有完全不受干扰的“自留地”。
为何常见:很多人只看MMoE的论文效果图,没注意到论文中对比的都是高度相关的任务。真实工业场景任务间差异大,MMoE的局限性立刻暴露。
误区“PLE的效果比MMoE好,那我在每层都放10个专属专家、10个共享专家,肯定能碾压一切。”
正解专家数量不是越多越好。每个专家都要接收输入、计算输出、参与梯度更新——专家太多不仅参数膨胀、训练变慢,还会导致门控权重被稀释,每个专家学不到足够的信息,反而退化成了“多个随机初始化的重复网络”。实践中每任务2-3个专属专家、2-4个共享专家通常就够了。
为何常见:直觉上“人多力量大”,但模型不是公司——深度学习模型的容量冗余会带来过拟合和优化困难。
误区“既然PLE是工业界验证过的模型,我直接把代码跑起来,参数用论文里的默认值,肯定没问题。”
正解论文的默认参数是特定数据集上调试出来的。真实业务中需要调整损失权重(动态或静态)、各任务的梯度裁剪阈值、专属专家数量、渐进路由的 α 参数等。最常踩的坑是:一个任务loss特别大,梯度把共享专家完全带偏。通常需要给每个任务单独设置梯度的更新幅度,甚至做梯度归一化。
为何常见:模型效果高度依赖数据分布与任务相关性,论文复现和工程落地之间隔着巨大的数据与场景差异。
误区“既然专属专家能保证任务不受干扰,那把所有专家都变成专属的不就行了吗?共享专家留着浪费时间。”
正解共享专家承担了特征提取中的“公共部分”,比如用户基础画像、设备属性、时间上下文等,这些知识的跨任务共享能显著提升小样本任务的表现。如果全部用专属专家,每个任务都要从零学习所有基础特征,样本量小的任务会严重欠拟合。PLE的“渐进式”思想正是要让共享与专属配合,而不是二选一。
为何常见:看到专属专家解决了负迁移问题之后,容易走向另一个极端——忽略共享专家在应对小样本和提升泛化上的价值。
面试题
Q1. 多目标排序相比单目标排序的核心优势是什么?
- A.模型参数量更多,训练时间更长
- B.同时优化多个业务指标,更贴近真实商业目标← 正确答案
- C.可以使用更大的数据集进行训练
- D.不需要特征工程,模型自动学习
答案:B。多目标排序通过共享表示同时学习多个相关任务(如点击率、转化率、时长),让模型更全面地契合真实场景中的多目标需求。选项B正确。A是副作用不是优势,C和D不是多目标排序特有的优势。
Q2. “跷跷板问题”的本质原因是什么?
- A.训练数据量不平衡导致模型过拟合
- B.不同任务的梯度方向存在冲突,共享参数更新互相干扰← 正确答案
- C.模型的学习率设置过大
- D.激活函数选择不当导致梯度消失
答案:B。跷跷板问题是负迁移的典型表现——当多个任务共享底层参数时,它们的梯度方向可能相反,导致更新过程互相抵消或偏向某个任务。B准确描述了本质。数据不平衡是加剧因素而非本质,学习率和激活函数是通用训练问题。
Q3. MMoE中的“门控网络”(Gate)的主要作用是什么?
- A.对输入特征做归一化处理
- B.为每个任务动态计算各专家的加权系数← 正确答案
- C.将多个任务的输出结果拼接在一起
- D.对专家网络的参数做正则化约束
答案:B。门控网络接收输入特征,通过Softmax输出每个专家对应的权重,让任务自行选择要重点依赖哪些专家。B正确。A是归一化层的事,C是输出融合的操作,D是训练技巧,都不属于门控的职责。
Q4. 相比MMoE,PLE最核心的结构创新是什么?
- A.增加了更多的专家网络数量
- B.引入任务专属专家与共享专家的分离机制← 正确答案
- C.将门控网络改为多头注意力机制
- D.把所有专家替换为Transformer结构
答案:B。PLE的关键创新是把专家划分成任务专属和共享两类,让每个任务拥有不受其他任务梯度干扰的专属网络,同时保留跨任务共享的公共专家。B正确。增加专家数量不是本质创新,注意力或Transformer只是实现细节,不是PLE的独创。
Q5. 下列哪些是PLE为了解决多目标排序问题而提出的关键机制?
- A.渐进式分层提取(Progressive Layered Extraction)← 正确答案
- B.任务专属专家(Task-specific Experts)与共享专家分离← 正确答案
- C.使用多个独立的单任务模型并做集成
- D.多个门控网络分别控制专家组合← 正确答案
答案:ABD。PLE的核心就是渐进式分层提取(A)、任务专属与共享专家分离(B)、以及每个任务独立门控(D)。C是传统做法“独立模型集成”,维护成本高且无共享学习,不属于PLE的机制。
Q6. PLE中的CGC模块,每一层内部包含下列哪些组件?
- A.任务专属专家网络← 正确答案
- B.共享专家网络← 正确答案
- C.每个任务独立的门控网络← 正确答案
- D.自注意力特征交叉层
答案:ABC。一个CGC(Customized Gate Control)模块由专属专家、共享专家以及每个任务对应的门控网络三部分构成,门控对专属和共享专家输出做加权融合。D中的自注意力层是Transformer的组件,不属于CGC的标准组成部分。
Q7. PLE的“渐进式路由”最准确的理解是什么?
- A.所有层都使用相同比例的共享与专属专家
- B.底层以共享专家为主,越往上任务专属专家比例越大← 正确答案
- C.让模型在训练过程中逐步增加专家数量
- D.每一步训练都更新一部分专家网络
答案:B。PLE的分层设计遵循“先共性后个性”的思路——底层提取通用特征以共享为主,高层处理任务特定语义以专属为主。B准确描述了渐进式路由。A忽略了层级差异,C是模型结构的动态增长,D是训练策略,均不符合。
Q8. 当两个业务目标的相关性较弱时,哪种模型架构最合适?
- A.传统的单任务模型分别训练
- B.全共享参数的硬共享模型
- C.PLE(含任务专属专家与共享专家)← 正确答案
- D.单层MMoE(不添加专属专家且不共享门控)
答案:C。任务相关性弱时,硬共享会引发严重负迁移,单任务模型损失了共享收益,单层MMoE仍存在全共享的问题。PLE通过专属专家隔离任务的独立部分、共享专家传递公共知识,能同时处理好“共性”与“个性”,最适合弱相关多目标场景。
Q9. PLE在工业落地时,通常会遇到哪种主要挑战?
- A.模型无法收敛到损失最小值
- B.参数量增加导致在线推理时延上升← 正确答案
- C.无法处理数值型的输入特征
- D.需要人工标注所有任务的标签
答案:B。PLE因增加了专属专家,参数量比MMoE更大,推延时延可能升高。工业界常用模型蒸馏、专家裁剪等方式解决。A、C、D描述的问题并非PLE特有,且现代深度学习框架都能很好处理。
Q10. PLE中“渐进式分层提取”包含哪些设计要点?
- A.每一层都包含共享专家和任务专属专家← 正确答案
- B.层与层之间保留独立的门控单元← 正确答案
- C.底层的共享信息会传递到高层参与计算← 正确答案
- D.每个专家独立使用不同的损失函数
答案:ABC。PLE的每一层都是CGC模块(A),且每层各任务的专属门控独立(B),底层共享特征会作为输入继续参与上层计算(C)。D错误——专家是中间表示,损失函数只定义在任务的输出头上,不会为每个专家单独设置损失。