直播推荐、搜索中的召回、相关性、多目标精排、特征、重排 - 多目标精排(1)

2024-02-15 22:30

本文主要是介绍直播推荐、搜索中的召回、相关性、多目标精排、特征、重排 - 多目标精排(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、深度排序模型在淘宝直播的演进与应用

淘内直播这篇文章把几种常见的多目标(mtl mmoe ple 这几种是默认每种目标之间没有关系 所以共同share一个底层数据、essm gmsl 贝叶斯mtl 与前面相反 把几种目标之间按照序串联起来 以此建模)写的很清楚

1:最基础的mtl

重点1:在shared MLP layer层还是共享,然后每个目标有自己的specific MLP layer。这种通过人工指定哪些要共享的方式称为hard parameter sharing layer

2:mmoe

重点1:mmoe通过定义多个专家网络(里面一般由多个mlp层),再通过门控实现对不同目标间的权重学习,这种成为soft parameter sharing。输入层特征经过softmax得到多个专家网络的权重

详解谷歌之多任务学习模型MMoE(KDD 2018) - 知乎

3:腾讯ple(CGC的进阶版本)

重点1:MMoE是所有的专家组都是共享的,它没有每个目标自己的一个专家组网络,所以又提出了在每个目标都有一个Specific的Expert的优化方案

重点2:MMOE共享层之间没有交互,PLE中共享专家网络、每个目标独有专家网络之间可以进行交互

腾讯 at RecSys2020最佳长论文 - 多任务学习模型PLE

Progressive LayeredExtraction(PLE):ANovelMulti-Task Learning(MTL)ModelforPersonalizedRecommendations_learner_ctr的博客-CSDN博客

4:esmm

重点1:通过引入pCTCVR=pCVR*pCTR的目标,对于cvr问题来说(点击+转化样本)解决了样本选择偏差问题(因为引入了ctr的曝光样本)

(1) ESSM可以看官方出版的中文文档介绍:https://github.com/alibaba/x-deeplearning/wiki/%E5%85%A8%E7%A9%BA%E9%97%B4%E5%A4%9A%E4%BB%BB%E5%8A%A1%E6%A8%A1%E5%9E%8B(ESMM)

ESMM 引入两个预估展现点击率(CTR)和展现后点击转化率(CTCVR)作为辅助任务。ESMM 将 pCVR 作为一个中间变量,并将其乘以 pCTR 得到 pCTCVR,而不是直接基于有偏的点击样本子集进行 CVR 模型训练。pCTCVR 和 pCTR 是在全空间中以所有展现样本估计的,因此衍生的 pCVR 也适用于全空间并且缓解了“样本选择偏差”问题 

CVR 任务的特征表示网络与 CTR 任务共享,后者用更丰富的样本进行训练,使用上了迁移学习的优点

损失函数,l函数是交叉熵损失函数:

构造训练数据集如下: 对于CTR任务,单击的展现被标记为$y = 1,否则为 $y=0;对于 CTCVR 任务,同时发生点击和转化事件的展现被标记为 $ y & z = 1  ,否则 $ y & z = 0 $,$y 和 $ y & z  ,这实际上是利用点击和转化标签的序列依赖性。所以是全空间的样本

5:GMSL

重点1:lazada提出来的GMSL网络在shared layer后面,为不同目标接了几个网络(这个很像mtl),然后每个目标的输出值再一起组成一个gru网络,每个node都对应一个有序的目标,最后一个node的输出值就可以是最后一个目标的预测值

6:淘内直播的贝叶斯多目标网络

重点1:最上层的多目标刻画 P(t1,t2,t3|x,H)=P(t3|t1,t2,x,H)*P(t2|t1,x,H)*P(t1,x,H) x代表特征

重点2:loss刻画 -L(x,H)=w1*log(P(t3|t1,t2,x,H))+w2*log(P(t2|t1,x,H))+w3*log(P(t1|x,H))

二、多任务学习时,不同任务怎么控制动态带来不同程度的梯度传播(经常用在比如essm这种ctr cvr,差异很大的任务中)

多任务学习中的梯度归一,GradNorm_1066196847的博客-CSDN博客

GiW(t)是任务 i 的带权损失,对需要更新的神经网络参数W(W表示神经网络参数,wi表示label loss中各个label的权重)的梯度的L2范数,这里用 GiW(t) 代表 loss的量级,为什么可以用权重的梯度的L2范数代表loss量级,可以具体看下面这篇文章讲解每个参数反向传播时,如果loss越大,反向传播时候的每个参数的梯度也就越大

一文弄懂神经网络中的反向传播法——BackPropagation - Charlotte77 - 博客园

公式中的i代表第i个学习任务(ctr cvr可以当算作一个i),Li(0)代表第0次迭代时候的loss,Li(t)代表第t次迭代时候的loss,这两个相比,越大说明到第t次时迭代越慢(和Li(0)的差距很小)。那么 Li(t)~ 和 Etask[Li(t)~](代表的是多次loss的均值)的比值 ri(t) 也就越大。在计算Grad Loss时,两个值相减之后Grad Loss也就越小,也就是带来一个小的梯度loss(对应下面公式的L(grad))

  

再计算L(gard)对wi​(t)的求导,L(grad)越小,梯度更新量也越小,求导数值也就越小

在上面公式中w(t+1)=w(t)+lambda*beta(t),这里的beta(t)就是L(grad)的导数,所以可以写成

w(t+1)=w(t) + lambda * L(grad)导数,lambda在文章中说是学习率,但是这里的 + 应该是 - 才对,因为这样 L(grad) 越小,w(t) - lambda * L(grad)导数 就会越大

总结:Li(t)越大,迭代越慢,ri(t) 也越大,导致贡献的Grad Loss越小,导数值也越小,更新w(i+1)时,在w(i)基础上减去的梯度越小,w(i+1)也越大。也就是越慢更新的任务,下一次对总梯度影响比例就越大

扩展:当某个任务的loss量级 GiW(t) 过小,导数值也越小,然后同上

-----------------------------------------------------------------------------------

上面的GradNorm只控制了不同任务带来的梯度影响程度,但是没有考虑到多个任务如果带来的梯度更新是相反的情况下该怎么办

这篇关于直播推荐、搜索中的召回、相关性、多目标精排、特征、重排 - 多目标精排(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/712719

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

OpenManus本地部署实战亲测有效完全免费(最新推荐)

《OpenManus本地部署实战亲测有效完全免费(最新推荐)》文章介绍了如何在本地部署OpenManus大语言模型,包括环境搭建、LLM编程接口配置和测试步骤,本文给大家讲解的非常详细,感兴趣的朋友一... 目录1.概况2.环境搭建2.1安装miniconda或者anaconda2.2 LLM编程接口配置2

Python使用DeepSeek进行联网搜索功能详解

《Python使用DeepSeek进行联网搜索功能详解》Python作为一种非常流行的编程语言,结合DeepSeek这一高性能的深度学习工具包,可以方便地处理各种深度学习任务,本文将介绍一下如何使用P... 目录一、环境准备与依赖安装二、DeepSeek简介三、联网搜索与数据集准备四、实践示例:图像分类1.

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图