淘宝详情页分发推荐算法总结:用户即时兴趣强化

news2024/11/19 3:46:13

在这里插入图片描述
转子:https://juejin.cn/post/6992169847207493639
商品详情页是手淘内流量最大的模块之一,它加载了数十亿级商品的详细信息,是用户整个决策过程必不可少的一环。这个区块不仅要承接用户对当前商品充分感知的诉求,同时也要能肩负起其他来源导流流量的留存,最终尽可能地激活平台内部流量以及外部流量在整个生态中的活跃度。同时,商品详情页也是众多场景乃至平台链接的纽带,用户在平台中的行为轨迹总会在多场景和详情页间不断交替,并在详情页产生进一步的行为决策(加购/购买等)。因而详情页上除了具备承接用户的“了解更多”的诉求,也应同时满足平台“起承转合中间件”的诉求。
详情页内流量具备两个显著的特性:

流量大,常是用户购买决策环节;
承接了大量的外部引流。

出于这两个重要特性,同时也出于提升平台黏度,尽可能地提升用户行为的流畅度的产品设计考量,我们在详情页内部设立了一些全网分发场景,并基于这些场景特点进行了一些算法探索。

背景

信息爆炸导致用户对于海量信息的触达寥若晨星,对于有效信息的触达更是凤毛麟角。如果说社交媒体是无声者的发声者,那推荐系统俨然可以看作是海量信息的发声者,同时也是平台用户被曝光信息的制造者。所以我们有责任与义务做到推荐内容的保质与品控,这对于推荐系统是极大的诉求与挑战。当下的推荐系统通过深度挖掘用户行为,对用户进行个性化需求挖掘与实时兴趣捕捉,旨在于帮助用户在海量信息中快速,精准地定位,从而更好的完成智能化服务。
详情页的分发推荐肩负着【服务商家】,【提升用户使用体验】以及【利好平台分发效能】的重要责任。这给我们场景提出了三个方面不同侧重的需求,它们需要被统筹兼顾,以期能够打造出一个更好的流量分发阵地。我们解决这三个需求的方式是开辟同店商品推荐前置的全网分发模块,在极大程度保证商家权益的同时,让用户能够在一个聚焦的页面快速定位海量商品中“猜你喜欢”的商品。详情页内的推荐和公域推荐有一个最大的差异:每个详情页面都是主商品的信息衍生场,推荐内容受到它较强的约束。现有的大多数研究缺乏对具有先验信息的场景的探索:它们只强调用户的个性化兴趣。有一些重要的、直接相关的先验信息被直接忽略。我们观察到,在单个商品/主题唤醒的推荐页面上,用户的点击行为和主商品(唤醒推荐页面的商品/主题)是高度同质的。在这些场景下,用户已经通过主商品给模型传达了一个很聚焦很明确的意图,所以推荐的相关结果不能肆意泛化。但同时,一味的聚集又回降低分发的效能,使得用户在浏览过程中产生疲劳感。因而这些场景的推荐内容,应当遵循“意图明确,适度发散”的策略。当然,因为有主商品信息的加持,我们在模型调优时能够因地制宜地架构推荐策略,做出一些和其他场景相比,更明确更可解释的用户体验,这是我们写这篇文章的初衷。如果对这样的“以品推品”场景想要知道更多的细节,本篇文章将带您一起来看我们的探索问题——“用户即时兴趣强化与延伸”,以及模型解法和线上工程实践。

场景介绍

其中,全网流量分发场景主要包括详情页底部信息流(邻家好货),主图横滑(新增),加购弹层(新增)。这些场景打破了商家私域画地为牢的局面,充分地提升了私域全网分发的能效。当然为了兼顾商家利益,这些场景将分为两个部分(同店内容推荐模块和跨店内容推荐模块)。
在这里插入图片描述
在这里插入图片描述

技术探索

算法问题定义——即时兴趣强化

进入详情页是用户主动发起的行为,因而用户对于当前页面的主商品有着较强的兴趣聚焦。主商品的信息能够帮助我们快速地定位用户的即时兴趣,这对于推荐算法来说是至关重要的。虽然现在有很多方法将行为序列的末位替代即时兴趣,或是使用模型挖掘即时兴趣,但这些方法均是在不确定事件中进行推理,没有详情页天然带有主商品这样的强意图信息。基于此,我们的工作将从推荐技术的不同方面,将这部分信息建模并加以强化,以期使得详情页分发场景能够结合场景特点,尽可能地满足用户的即时需求。

召回

背景

随着深度学习技术在多个领域的普及以及向量检索技术的兴起,一系列基于类似思想的深度学习召回技术相继涌现。Youtube在2016年提出了DNN在推荐系统做召回的思路,它将用户历史行为和用户画像信息相结合,极大地提升了匹配范围的个性化和丰富性。我们的工作基于同组师兄的召回工作《SDM: 基于用户行为序列建模的深度召回》,《User-based Sequential Deep Match》 也是这一思路的一脉相承。SDM能够很好地建模用户兴趣的动态变化,并且能够综合长短期行为在不同维度进行用户表征,从而更好的使用低维向量表达用户和商品,最终借助大规模向量检索技术完成深度召回。SDM上线较base(多路i2i召回merge)ipv指标提升了2.80%。较SDM模型,CIDM模型IPV提升4.69%。在此基础上,为了契合详情页分发场景的特点,我们丰富并挖掘了主商品相关信息,并将其作为即时兴趣对召回模型进行结构改良。
模型——CIDM(Current Intention Reinforce Deep Match )
在这里插入图片描述

为了能够让模型SDM能够将主商品信息catch到并与用户行为产生交互,我们设计了如下的模型结构,其中trigger即为详情页中的主商品,我们从几个方面对它进行表征及强化:

Trigger-Layer:启发于论文1,对主商品显式建模:除SDM中建模用户长、短期偏好之外,引入用户即时偏好层将主商品特征与长短期偏好融合作为用户最终表达;
Trigger-Attention: 即将原模型中使用的self-attention改为由trigger作为目标的target-attention;
Trigger-Lstm:借鉴论文2中的建模思路,我们将lstm的结构中引入了trigger信息,并添加trigger-gate让lstm倾向于记住更多关于主商品的内容;
Trigger-filter-sequence:实验发现,使用主商品的叶子类目,一级类目过滤得到的序列作为原序列的补充进行召回建模,能够增加收益,故在数据源中添加了cate-filter-seq以及cat1-filter-sequece。

其中前两个点都是比较显而易见的,这里就不再赘述,我们将三四两个创新点详细阐述。
论文2中论证了添加时间门能够更好地捕捉用户的短期和长期兴趣,基于这个结论,我们尝试设计一个trigger-gate用于在模型捕获序列特征中引入trigger信息的影响。我们尝试了多种结构变体,比较work的两种方式(如图):

将trigger信息作为记忆门的一路输入,即通过sigmoid函数后与之前想要更新的信息相乘;
平行于第一个记忆门,添加一个新的即时兴趣门,其输入为细胞输入以及当前主商品,和记忆门结构一致。

这样的方式能够将主商品的信息保留的更充分。
在这里插入图片描述

第一种方法,仅是对记忆门进行了修改:
在这里插入图片描述

第二种方法,新加了一个即时兴趣门:
在这里插入图片描述
在这里插入图片描述

这两个实验在离线hr指标分别增长+1.07%. 1.37%,最优版本线上指标ipv+1.1%。
出于我们自己的实验结论:"使用主商品的叶子类目和一级类目过滤得到的序列作为原始序列的补充,作为模型输入能够提升预测准度“。这说明,主商品的结构信息是具有明显的效益的,以它为条件能够对序列样本产生正向约束。究其根本,原始序列中一些和当前主商品相关性较小的样本被过滤掉了,这相当于对数据进行去噪处理。沿着这个思路,联想到自编码机的主要应用为数据降噪与特征降维,故考虑采用基于AE结构的模型对序列进行处理,更多的,由于我们是定向去噪(即剔除与主商品不相关的行为),我们使用变分自编码机(VAE),借主商品信息在隐变量空间对序列表达进行约束,以确保隐层能较好抽象序列数据的特点。
变分自编码机是具有对偶结构(包括编码器和解码器)联合训练的系列模型,它借鉴变分推断的思路,在隐变量空间进行个性化定制,比较契合我们即使兴趣建模的需求。首先我们有一批数据样本,在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

这实验在离线hr指标增长+2.23%,线上未测试。

效果

较SDM模型,CIDM模型线上效果IPV提升4.69%。

精排

背景

精排模型基于DIN(Deep Interest Networks)进行探索与发展,我们的想法是在序列信息基础之上融入主商品更多的信息。序列信息挖掘和主商品信息强化其实是我们场景两个需求的外化,主商品信息强化能够很好地抓住用户即时意图,满足用户即时的聚焦需求;而序列信息挖掘是基于当前意图的延伸,能够一定程度上对意图进行发散,使推荐结果不会产生过于集中而带来体验疲劳。当然这两方面需要权衡,让模型识别其中“聚”,“散”的时机与程度。在此基础上,我们进行了1、挖掘主商品更多的语义信息;2、强化主商品信息对于序列特征抽取的指引与影响。

精排模型——DTIN(Deep Trigger-based Interest Network)

在这里插入图片描述

效果

较DIN模型,DTIN模型IPV提升9.34%, 对应离线实验auc提升4.6%,gauc提升5.8%。

粗排

动机

粗排模型为的是解决推荐系统应用于工业界的特殊问题,在召回集合较大时,精排模型因复杂度太高而无法保证打分效率。因而粗排模型应运而生。由于详情页分发场景需要从全网亿级商品中进行商品召回,且召回阶段使用了多种召回方式的组合(包括i2i, 向量召回等)。这使得召回数量级较大,而且多路召回存在交叉使得匹配特征不在同一尺度上,这给后续的精排模型带来了较大的压力。基于此,我们开发了桥接召回和精排两部分的粗排模块,它的目标是对召回结果进行初筛,不仅需要兼顾效率与精度,也需要具有兼容多尺度召回方式的能力。基于我们的场景特点,在粗排初筛阶段进行了基于主商品的即时意图的建模。

模型——Tri-tower(Triple-tower Preparatory Ranking Framework)

出于粗排模型对于效率的要求不能构建过于复杂的结构,基于双塔粗排模型,我们针对强化即时兴趣的方向新添加了一个主商品塔trigger-tower,该塔和商品塔的特征保持一致,在顶端输出logits后和商品塔做交叉,作为之前双塔模型的补充添加在sigmoid函数的输入中。模型结构如下:
在这里插入图片描述

其中 Trigger net 和 Item net 使用 item 侧更轻量的一些统计类特征,User net也在deep match的基础上对大规模的id类特征进行了筛检。确保粗排模型轻量且服务快速。最终三塔粗排模型较无粗排模型,IPV指标提升3.96%。

总结

总体来看,详情页分发场景的优化思路比较统一,都是对主商品信息进行挖掘,并在模型中将用户历史行为进行关联加强。我们和传统的兴趣挖掘网络相比,附增了一道关口(即时兴趣强化),将那些明确的,和当前最相关的意图保留下来。通过这样的方式,推荐的结果就有一定程度的收敛。同时,多元兴趣在模型中并没有被完全抹去,只是通过attention网络动态调权来影响结果的发散程度,这也确保我们推荐结果一定的个性化和可发散性。
至此已阐述完“用户即时兴趣强化与延伸”课题在私域分发场景三个主要环节:召回-粗排-精排上面的有收益的尝试,当然这个过程也伴随着很多失败的探索,无论是模型优化和工程实践上的阻塞,都给我们带来了丰硕的实践经验。除了这三个主要模型外,我们在策略和其他环节的模型上也都针对该问题进行了优化,这里不再赘述。如果您对细节或者后续的优化方向感兴趣,欢迎与我们联系。

引用

Tang, Jiaxi, et al. “Towards neural mixture recommender for long range dependent user sequences.” The World Wide Web Conference. 2019.
Zhu, Yu, et al. “What to Do Next: Modeling User Behaviors by Time-LSTM.” IJCAI. Vol. 17. 2017
Liang, Dawen, et al. “Variational autoencoders for collaborative filtering.” Proceedings of the 2018 world wide web conference. 2018.
Li, Xiaopeng, and James She. “Collaborative variational autoencoder for recommender systems.” Proceedings of the 23rd ACM SIGKDD international conference on knowledge discovery and data mining. 2017.
Zhao, Shengjia, Jiaming Song, and Stefano Ermon. “Towards deeper understanding of variational autoencoding models.” arXiv preprint arXiv:1702.08658 (2017).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/654162.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

必学KVM技术详解包括所有技能

KVM虚拟化进阶学习 一,KVM命令行安装 图形化安装教程:https://blog.csdn.net/weixin_53678904/article/details/125950867?spm1001.2014.3001.5501 1.存储池管理 ​ KVM必须要配置⼀个⽬录当作他存储磁盘镜像(存储卷)的⽬录,我们称这个⽬…

通达信筹码单峰密集选股公式,突破筹码密集区发出信号

筹码密集是相对筹码发散而言的,筹码分布在宽广的价格区间,这种状态就是筹码发散(如下图),而且筹码峰像群山一样,有多个高峰,属于多峰形态。 与之相对的,筹码分布在比较窄的价格区间&…

Armbian安装1panel教程

文章目录 一 1panel简介二 检测是否安装1Panel三 环境要求四 安装操作指导4.1 确定系统类型4.2 执行安装命令4.3 访问1panel面板4.4 设置1panel访问配置4.5 查看访问1panel面板入口 五 常用命令总结 一 1panel简介 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。 二…

New Bing使用教程

New Bing使用教程 New Bing简介前提条件使用技巧 New Bing简介 New Bing是微软推出的一款基于GPT4模型的智能搜索引擎,它不仅可以提供高质量的搜索结果,还可以与用户进行自然语言交互。 用户只需安装Edge浏览器即可使用,但现实使用中会出现…

驱动操作 驱动移植试验和Source Insight添加项目

目录 驱动移植 》1.需要有一个驱动对应的 .c代码 》2.将.c文件放入到对应的文件夹内 》3.修改Makefile文件 》4.修改Kconfig菜单 》5.到顶层目录配置自己驱动 》6.编译成模块 》7.此时用的开发板上内核的编译器,安装得到开发板上进行安装 》8.在开发板上进…

标准IO和文件IO分别实现cp功能(嵌入式学习)

标准IO和文件IO分别实现cp功能 标准IO实现cp功能标准IO概念代码实现 文件IO实现cp功能文件IO概念代码实现 标准IO实现cp功能 标准IO概念 想了解标准IO的概念,请点击这里——》IO进程——标准IO(嵌入式学习) IO进程——标准IO(嵌…

【C语言】三子棋详解(包教包会的那种)

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 三子棋及五子棋详解 前言三子棋的实现1. 打印菜单2.初始化并打印棋盘棋盘初始化函数功能的实现打印棋盘 3.玩家下棋与模拟电脑下棋玩家下棋电脑下棋随机数的生成 4.判断输赢我们的game函数 源码game.hgame.ctest.c 总结 …

PMP课堂模拟题目及解析(第18期)

171. 一个项目已经结束,然而,项目经理和项目团队成员仍然被要求解决技术问题,进行一些变更,并评估新的需求。若要保证项目开发的产品或服务现在具有运营支持,项目经理应该执行下列哪些工作? (选…

Nacos配置中心交互模型是push还是pull?

对于Nacos大家应该都不太陌生,出身阿里名声在外,能做动态服务发现、配置管理,非常好用的一个工具。然而这样的技术用的人越多面试被问的概率也就越大,如果只停留在使用层面,那面试可能要吃大亏。 比如我们今天要讨论的…

44从零开始学Java之详解容易让初学者懵圈的abstract抽象类、抽象方法

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 经过前面几篇文章的讲解,我们现在已经对面向对象有了基本的认知,掌握了面向对…

基于Java员工信息管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

2.04_基于矩阵分解的协同过滤推荐

矩阵分解发展史 Traditional SVD: 通常SVD矩阵分解指的是SVD(奇异值)分解技术,在这我们姑且将其命名为Traditional SVD(传统并经典着)其公式如下: Traditional SVD分解的形式为3个矩阵相乘,中间矩阵为奇异值矩阵。如果想运用SVD分解的话,有一个前提是要求矩阵是稠密…

AAC ADTS格式分析

标题 1.AAC简介2. AAC ADTS格式分析2.1 adts_fixed_header详细介绍2.2 adts_variable_header详细介绍 1.AAC简介 AAC音频格式:Advanced Audio Coding(⾼级⾳频解码),是⼀种由MPEG-4标准定义的有损⾳频压缩格式,由Fraunhofer发展,Dolby, Sony…

[CISCN 2023 初赛]puzzle 解析

打开文件包给了一堆拼图碎片,由于文件数量高达2880张,这里不考虑gaps的方式进行修正拼图 (因为跑了也只会把gaps跑冒烟) tmp类型的拼图,因为tmp文件特性在文件头的位置会有其在原图片上的位置坐标 于是,我…

MyBatis-Plus一级缓存和二级缓存-redis解决缓存的脏数据

MyBatis-Plus一级缓存和二级缓存 文章目录 MyBatis-Plus一级缓存和二级缓存[TOC](文章目录) 基本缓存问题一级缓存-MyBatis默认打开一级缓存、不允许关闭二级缓存(默认是开启)注意:二级缓存的作用域不然更新了数据,还是使用查询到缓存的数据)操作演示第一…

系统编程(1):基本程序框架--IO

文章目录 一、main函数二、IO&#xff08;输入/输出&#xff09;2.1 标准IO和文件IO2.2 文件描述符2.2 open函数 一、main函数 #include <stdio.h> #include <stdlib.h>int main(int argc, char* argv[]) {// argc&#xff1a;表示是命令行中参数的个数// argv&am…

天融信堡垒机怎么结合国密OTP动态令牌实现双因子身份认证?

摘要&#xff1a; 结合宁盾国密OTP动态令牌为天融信堡垒机登录开启双因子身份认证机制&#xff0c;能有效增强运维人员的账号安全&#xff0c;满足等保合规要求。 天融信运维安全审计系统&#xff08;简称“堡垒机”&#xff09;是面向政府、企事业单位等组织机构推出的兼具运…

一篇文章教你pytest+yaml实现参数化

目录 一、使用背景 二、parametrize 三、yaml 四、将yaml数据转换成parametrize可读的列表形式 总结&#xff1a; 一、使用背景 当我们在设计用例的时候&#xff0c;经常会出现需要不同参数的情况&#xff0c;例如一个登录的用例&#xff0c;我们需要测试它登录名正常、为…

【JAVA集合篇】深入理解HashMap源码

文章目录 HashMap简介源码分析关键参数获取数组下标put方法resize扩容过程jdk1.7的扩容实现jdk1.8的扩容实现 get()方法remove()方法 总结 关于HashMap&#xff0c;一直都是一个非常热门的话题&#xff0c;只要你出去面试&#xff0c;一定少不了它&#xff01; 本文主要结合 JD…

Scala--04

第 8 章 高级语法 Scala//需求&#xff1a;制作一个计算器&#xff0c;实现你传一个字符串给我&#xff0c;比如 23&#xff0c;然后我返回一个结果5给你 def plus(str: String): String { var res "" if (str.contains("")) { val arr: Array[S…