DCN(Deep & Cross Network)模型在手淘分类地图CTR预估上的应用

简介: 一:背景       分类地图业务是指手淘首页首屏的"分类"入口,目前整个产品已经有300万左右日活跃用户和6000多万pv, 目前产品业务点较多,本文重点介绍点击品类词后的商品二跳页模块,具体如下图所示:当用户点击相应的品类词图片后,则会进入该类目下的商品集合。

一:背景 

     分类地图业务是指手淘首页首屏的"分类"入口,目前整个产品已经有300万左右日活跃用户和6000多万pv, 目前产品业务点较多,本文重点介绍点击品类词后的商品二跳页模块,具体如下图所示:当用户点击相应的品类词图片后,则会进入该类目下的商品集合。

     

                     图1                                       图2                                        图3

       图2是一跳页推荐的与用户相关的品类词, 图3是点击该品类词后,对应的二跳页排序结果;二跳页是在该品类下,用户所偏好的商品,目前的算法逻辑是u2i商品作为trigger, i2i作为精准推荐,热门商品作为补充,整个逻辑还是偏向基于经验的业务规则,因此我们希望通过一个深度学习模型来进行统一的优化。     

二:  业务目标

       我们的模型重点优化的就是商品集的召回和排序。分类地图业务今年的重点目标就是让用户逛起来,使得用户在我们的产品中可以更多的产生点击,翻页,切换tab等行为,真正的"逛起来", 因此我们的商品二跳页的重要目标就是用户是否愿意点击商品和翻页,也就是点击率和翻页率。

三:  具体方案

       由于淘宝上每个类目下的商品集合非常庞大,达到千万甚至亿级别,而我们分类地图下每个类目最多展示100个商品; 因此首先用星级卖家(星级大于12)筛选出一个初选的商品集合,再基于不同cat的Match网络和Rank网络来生成最终的推荐集合,给用户浏览

       

其中在Match阶段,我们尝试了多种方案,包括了"Deep Neural Networks for YouTube Recommendations"论文中的召回阶段模型,该模型适合从海量的候选集里进行粗粒度召回,但实际上我们的高星级卖家商品集合通过叶子类目(全网全部叶子大概有7000多)划分后,平均每个类目下有几万个商品,对于一些热门类目,比如连衣裙,有十几万个商品,而更多的长尾类目下只有几千个,甚至几百个商品;因此最后在召回阶段我们使用了把高星级卖家商品集按照叶子类目划分,然后再用商品热度分数(主要用商品的30天内的全网点击和成交进行拟合)设置一个阈值进行召回。而将重点放在Rank阶段的模型优化上。

3.1  模型目标

       提升分类地图二跳页商品的CTR, 翻页率

3.2  样本选择

       分类地图商品二跳页自身业务场景的点击日志,点击为正样本,pv为负样本,其中负样本进行随机采样(我们还尝试了将点击商品为正样本,只取被点击商品前面的商品为负样本,这样会造成一些排前面的商品全部被当做负样本,造成效果并不好); 正负样本比例保持在1:3左右; 模型训练分成训练集和测试集,其中训练集样本数:39181025; 测试集样本数400w左右

3.3  模型特征:

user:包括用户性别,年龄,购买力,宝宝年龄,宝宝性别,地域,职业,用户群体等,

item:  包括商品类目,品牌,价格,30天内点击,成交,加购,收藏等统计特征

组合特征: 包括user_id对item_id的点击,成交,收藏,加购等统计特征

特征总数共200多个

同时我们把特征划分为三类:

1) id类稀疏特征  2) 统计类和离散类的稠密特征  3)embedding特征(包括user的历史点击商品属性向量,商品title的词向量),这里需要提到的是,由于商品id过于稀疏,我们在对用户的历史点击行为进行embedding的时候,使用了用户历史点击的商品的属性id向量作为embedding的输入。

3.3  模型原理

       模型上我们选择了google的论文Deep & Cross Network for Ad Click Predictions中提到的DCN模型。

如上图所示, DCN模型的输入包括了sparse特征,dense特征, embedding特征,而模型训练阶段分成两个部分,右边部分是传统的DNN模型的deep层,其中每个deep层后都接入relu激活层, 把原始特征通过多个隐层使得特征变得更加高阶,而左边的cross layer通过一个递归的特征组合公式:

                           

每一层的特征都由其上一层的特征进行交叉组合,并把上一层的原始特征重新加回来。这样既能做特征组合,自动生成交叉组合特征,又能保留低阶原始特征,随着cross层的增加,是可以生成任意高阶的交叉组合特征(而DeepFM模型只有2阶的交叉组合特征)的,且在此过程中没有引入更多的参数,有效控制了模型复杂度。最后把cross层的输出结果和deep层的输出结果组合到一块来进行LR模型训练,在我们的业务场景下,就是预估user_id在<catid, item>pair下的点击概率。

3.4  模型训练

基于pai-tensorflow平台,我们实现了DCN模型,并且在模型训练过程中实验了非常多的版本,迭代了很多次来优化模型超参,  这边重点介绍几个重要的超参对比:

1.  deep layer:3 (256, 128, 64); cross layer : 2层,   sigmoid回归,loss加入l2正则项; 优化器Adam, 学习率0.01, 每个batch 512个样本 ;训练结果测试集auc 为 0.67

2.  同1, 学习率调整到0.001  ; 训练结果测试集auc 为 0.7

3.  同2, 并加入item的词向量的embedding特征,对embedding分别实验了avg和sum操作;发现sum的效果要好些

我们最终用于线上预测的版本的auc在0.75左右

3.5  预测及bts上线

       我们的预测阶段是放在odps上处理的,将pai-tensorflow上训练的模型通过export和saver的接口来导出Session bundle, 然后在odps上运行DCN模型的整个前向计算过程(在 tensorflow的signature接口中定义) ,预测出userid在每个<catid, item>pair下的点击概率,然后离线产出排序数据。

       最后在我们的TPP服务中加载离线产出好的模型预测数据来进行线上bts测试,我们发现DCN模型版本下的二跳页指标都是有一定提升的,具体见下图:

   

通过pv指标可以看出,二跳页的翻页数提升有1%, 而整个二跳页的CTR提升有2.75%。因此我们业务的核心指标都是有一定正向提升的。

四: 后续展望:

       由于个人精力有限和考虑时间成本,整个DCN模型目前仅仅是一个简单的实现,还没有做一些创新和探索。目前使用的deep + cross + sigmoid的组合方式可以通过多种模型组合来进行替换,比如deep层可以替换成残差网络resnet, 变成resnet+cross + simoid,  simoid层可以替换成forest模型,变成deep + cross + forest模型等。

       同时我们的模型预测是放在离线完成的,后续可以借助于RTP, EAS等服务实现在线预测, 并接入pora平台实现实时模型训练。

       最后,非常感谢 @开锋 老师在项目前期的耐心指点, 感谢 @三桐 老师在项目后期的关注和支持!

五:参考文献

1.    Deep Neural Networks for YouTube Recommendations

2.    Deep & Cross Network for Ad Click Predictions


相关文章
|
缓存 Kubernetes 异构计算
使用TensorRT-LLM进行生产环境的部署指南
TensorRT-LLM是一个由Nvidia设计的开源框架,用于在生产环境中提高大型语言模型的性能。该框架是基于 TensorRT 深度学习编译框架来构建、编译并执行计算图,并借鉴了许多 FastTransformer 中高效的 Kernels 实现,并且可以利用 NCCL 完成设备之间的通讯。
908 12
|
机器学习/深度学习 监控 算法
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
|
8月前
|
机器学习/深度学习 并行计算 小程序
DeepSeek-V3.2-Exp 发布,训练推理提效,API 同步降价
今天,我们正式发布 DeepSeek-V3.2-Exp 模型,这是一个实验性( Experimental)的版本。作为迈向新一代架构的中间步骤,V3.2-Exp 在 V3.1-Terminus 的基础上引入了 DeepSeek Sparse Attention(一种稀疏注意力机制…
946 0
DeepSeek-V3.2-Exp 发布,训练推理提效,API 同步降价
|
7月前
|
SQL 安全 关系型数据库
PostgreSQL 18 发布
PostgreSQL 18重磅升级:新增异步I/O提升高并发性能,原生支持UUID v7增强索引效率,并优化并行查询、逻辑复制,强化安全与SQL功能,全面提升数据库性能与可靠性。
361 8
|
存储 并行计算 数据处理
使用GPU 加速 Polars:高效解决大规模数据问题
Polars 最新开发了 GPU 加速执行引擎,支持对超过 100GB 的数据进行交互式操作。本文详细介绍了 Polars 中 DataFrame(DF)的概念及其操作,包括筛选、数学运算和聚合函数等。Polars 提供了“急切”和“惰性”两种执行模式,后者通过延迟计算实现性能优化。启用 GPU 加速后,只需指定 GPU 作为执行引擎即可大幅提升处理速度。实验表明,GPU 加速比 CPU 上的懒惰执行快 74.78%,比急切执行快 77.38%。Polars 的查询优化器智能管理 CPU 和 GPU 之间的数据传输,简化了 GPU 数据处理。这一技术为大规模数据集处理带来了显著的性能提升。
960 4
|
运维 监控 搜索推荐
【电商搜索】现代工业级电商搜索技术-Ha3搜索引擎平台简介
【电商搜索】现代工业级电商搜索技术-Ha3搜索引擎平台简介
|
运维 搜索推荐 调度
Ha3搜索引擎简介
Ha3是阿里巴巴搜索团队开发的搜索引擎平台,它为阿里集团包括淘宝、天猫在内的核心业务提供搜索服务支持。
26406 1
|
机器学习/深度学习 搜索推荐 算法
高并发推荐系统架构设计-1 基本介绍
【5月更文挑战第5天】推荐系统是信息过滤工具,通过处理物料数据和行为日志,运用预处理、特征工程、算法模型学习用户兴趣,实现个性化推荐。在线架构包括AB分流、多路召回、模型排序和业务规则重排序。旧版线上架构由C++编写的API和engine服务组成,HTTP请求经SLB、Nginx、FastCGI到达服务程序,召回和排序服务处理推荐。存在并发瓶颈问题。
611 1
应用研发平台EMAS多渠道打包。 aliyun-emas-services 要怎么配置?
【1月更文挑战第9天】【1月更文挑战第43篇】应用研发平台EMAS多渠道打包。 aliyun-emas-services 要怎么配置?
474 1
|
机器学习/深度学习 人工智能 Java
软件开发者必读!2024年30大趋势提前曝光!
软件是科技行业的基础。从智能手机到复杂的企业系统,软件是推动这些技术的核心。在探索数字时代的过程中,了解软件开发的趋势非常重要。人工智能、机器学习、物联网等技术的快速发展对软件开发行业产生了巨大影响。本文旨在通过30个数据汇总,帮助读者们初步了解2024年软件开发领域的新趋势。