多目标优****化&MMoE
用户进入躺平频道页后,浏览和点击内容卡片进入内容详情页,点击内容详情页的商品锚点进入商品详情页,进而进行收藏加购等行为。业务最终的目标是GMV的提升,因此,业务模型涉及的优化目标包含了一跳点击,二跳点击,以及进入商品详情页后的收藏加购下单。我们当前的精排模型主要考虑了用户在场景内的一跳点击,缺乏对二跳以及后续相关行为的建模,与我们最终的优化目标是有gap的。因此,实现躺平频道的家多目标优化是模型深度优化和完成业务目标的必要途径。
▐ 多目标优化方法
已有的多目标优化方式包括:
-
通过sample weight进行多目标优化[1];
-
多个模型stacking;
-
Shared bottom NN model[2,3,4];
-
MMoE多目标模型[5]等。
方式1本质上并不是对多目标进行建模,而是把不同的目标折算成一个目标,并且相关的折算可能需要多次AB测试才能确定;方法2需要更多的模型参数,模型规模变大,线上serving需要更多的时间开销;方式3在基于深度学习的推荐模型中引入shared bottom layer来加强参数共享,通过多个目标的模型联合训练,减小模型的参数规模,同时防止模型过拟合,但是Shared bottom NN model能够成功的前提,是预测的目标之间的相关性比较高,对于差异性比较大的目标,简单粗暴的共享bottom layer反而容易造成不同任务之间的相互干扰。
MMoE是方法3的一个改进版本,其思想是所有目标共享多个experts,但是考虑到不同任务之间的特异性,为每一个目标设置一个gate,用来控制不同目标选择每个expert的信号占比,类似于weighted sum pooling操作。MMoE通过共享experts学习到不同任务的联系和差异,提高了每个任务的学习效率和质量,同时通过gates来平衡多个任务对experts信号的选择,不要求目标之间必须是高相关性的。
▐ MMoE模型介绍
MMoE模型的结构(下图c)基于广泛使用的Shared-Bottom结构(下图a)和MoE结构,其中图(b)是图©的一种特殊情况。
- Shared-Bottom Multi-task Model
如上图a所示,shared-bottom网络位于底部,多个任务共用这一层,我们将其表示为函数f。往上,K个子任务分别对应一个tower network,表示为,每个子任务的输出。
- Mixture-of-Experts
MoE模型可以形式化表示为,其中, 是n个expert network(expert network可认为是一个神经网络)。g 是组合experts结果的gating network,其输出是对不同experts的权重。
- MMoE模型: Multi-gate Mixture-of-Experts
MMoE模型的思想是用MoE结构替换shared-bottom网络中的函数 f ,如上图c所示,可形式化表达为:, 其中 ,输入是input feature,输出是不同任务在所有experts上的权重。
MMoE在躺平多目标优化实践
基于MMoE的灵活性及高可扩展性,我们选择MMoE作为躺平多目标优化模型,并对其进行了4个维度的优化和实验。
▐ 底层特征处理,引入局部激活单元
在传统的Embedding + MLP模型中,首先将大规模稀疏输入特征映射到低维Embedding向量中,然后通过pooling转换为固定长度向量,最后再把它们连接在一起输入到MLP以学习特征之间的非线性关系。这样存在的问题是:将多个特征向量压缩到一个固定长度的表示向量来学习特定用户所有的兴趣表示,限制了模型的能力,使得模型很难从历史行为中提取用户变化的兴趣。参考Deep Interest Network模型[6],我们在MMOE底层特征向量处理中引入局部激活单元,提取用户跟当前内容相关的向量表示。
▐ 加入线性特征&线性结构
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
最后
分享一些系统的面试题,大家可以拿去刷一刷,准备面试涨薪。
这些面试题相对应的技术点:
- JVM
- MySQL
- Mybatis
- MongoDB
- Redis
- Spring
- Spring boot
- Spring cloud
- Kafka
- RabbitMQ
- Nginx
- …
大类就是:
- Java基础
- 数据结构与算法
- 并发编程
- 数据库
- 设计模式
- 微服务
- 消息中间件
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
b71ac0)
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算