网站首页 > 技术文章 正文
背景
工业推荐系统一般包含四个环节,分别是召回、粗排、精排和重排。召回阶段根据用户的兴趣和历史行为,从海量的物品库里,快速找回一小部分用户潜在感兴趣的物品,然后交给排序环节,排序环节可以融入较多特征,使用复杂模型,来精准地做个性化推荐。有时候因为每个用户召回环节返回的物品数量还是太多,怕排序环节速度跟不上,所以可以在召回和精排之间加入一个粗排环节,通过少量用户和物品特征,简单模型,来对召回的结果进行粗略的排序,在保证一定精准的前提下,进一步减少往后传送的物品数量,粗排往往是可选的,可用可不同,跟场景有关。之后,是精排环节,使用你能想到的任何特征,可以上你能承受速度极限的复杂模型,尽量精准地对物品进行个性化排序。排序完成后,传给重排环节,重排环节往往会上各种技术及业务策略,比如去已读、去重、打散、多样性保证、固定类型物品插入等等,主要是技术产品策略主导或者为了改进用户体验的。
排序环节是推荐系统最关键,也是最具有技术含量的部分, 工业界应用的排序模型,大致经历三个阶段,如下图所示。
当前业界主流的推荐排序模型是深度学习模型,基于深度学习模型的多目标优化、ListWise以及强化学习是当前最常见的技术演进方向,本文主要介绍工业界经典的推荐排序模型。
LR算法
LR 模型是 CTR 预估领域早期最成功的模型,大多早期的工业推荐排序系统采取 LR 这种 “线性模型 + 人工特征组合引入非线性” 的模式。LR 模型具有训练快、上线快、可解释性强、容易上规模等优点,目前仍然有不少实际系统采取这种模式。
FTRL算法
普通逻辑回归不适应大规模稀疏特征的点击率预估。一是传统的逻辑回归参数训练过程都依赖牛顿法或L-BFGS等算法,这些算法并不容易在大规模数据集上得以处理,二是不容易得到稀疏解,而实际上对于大规模稀疏的数据来说,通常仅有少量特征是被激活的。FTRL梯度优化算法改进了传统的LR算法,其核心就是模型的参数会在每一个数据点进行更新,是一种在线学习算法,其参数更新伪代码如下:
FM算法
FM算法在 LR 的基础上加入二阶特征组合,即任意两个特征进行组合,将组合出的特征看作新特征,加到 LR 模型中。组合特征的权重在训练阶段学习获得。但这样对组合特征建模,泛化能力比较弱,尤其是在大规模稀疏特征存在的场景下。FM 模型也直接引入任意两个特征的二阶特征组合,但对于每个特征,学习一个大小为 k 的一维向量,两个特征 Xi和 Xj 的特征组合的权重值,通过特征对应的向量 Vi 和 Vj 的内积 <Vi , Vj> 来表示。这本质上是对特征进行 Embedding化表征,和目前常见的各种实体 Embedding 本质思想是一样的。
FM 可以模拟二阶多项式核SVM,但是FM的训练和预估复杂度是线性的,而二阶多项式核SVM需要计算核矩阵,复杂度为N平方。MF算法相当于只有User和Item两类特征的FM模型,而 FM模型可以加入任意特征,比如Context特征。
Wide&Deep
Wide&Deep 是推荐领域取得较大成功的最早期深度模型,由 Google 于 2016 年提出。Wide&Deep模型包括 Wide 部分和 Deep 部分,Wide 部分为 LR,输入为one-hot 后的离散型特征和等频分桶后的连续性特征,这部分可以对样本中特征与目标较为明显的关联进行记忆学习;Deep 部分为 MLP,输入为Embedding 后的离散型特征和归一化后的连续型特征,可以泛化学习到样本中多个特征之间与目标看不到的潜在关联。使用 Wide&Deep 的另一个优势在于 Wide 部分的存在,可以沿用之前浅层学习的成果,尤其是特征工程部分。
Wide部分是广义线性模型,可以包括原始特征及转换后的特征,Deep部分是神经网络。
DeepFM
DeepFM 将 Wide&Deep 的Wide 部分 LR 替换成 FM 来避免人工特征工程。DeepFM 相比 Wide&Deep 模型更能捕捉低阶特征信息。同时,Wide&Deep 部分的 Embedding 层需要针对 Deep 部分单独设计,而在 DeepFM 中,FM 和 Deep 部分共享Embedding 层,FM 训练得到的参数及作为 wide 部分的输出,也作为 MLP 部分的输入。DeepFM 支持end-end 训练,Embedding 和网络权重联合训练,无需预训练和单独训练。从个人实践效果来看,DeepFM算法如果在人工交叉特征已经比较丰富的情况下,效果相对于Wide&Deep算法提升有限。
其输出为:
猜你喜欢
- 2024-10-03 个性化推荐系统源代码之基于 Wide&Deep模型的在线排序
- 2024-10-03 TensorFlow做Sparse Machine Learning
- 2024-10-03 在线学习(Online Learning)导读 在线学习网
- 2024-10-03 Tensorflow(4) tensorflow4060版本
- 2024-10-03 原来深度学习模型搭建可以像累砖一样简单
- 2024-10-03 Kernel分类器 分类器性能
- 2024-10-03 孙玄:转转如何打造AI工程架构体系
- 2024-10-03 推荐系统工程难题:如何做好深度学习CTR模型线上Serving
- 2024-10-03 推荐系统工程难题:如何做好深度学习 CTR 模型线上 Serving
- 2024-10-03 在线学习在爱奇艺信息流推荐业务中的探索与实践
你 发表评论:
欢迎- 02-26Docker目录说明之 /var/lib/docker
- 02-26家用nas最常用的docker容器及部署方法
- 02-26Docker快速上手笔记
- 02-26怎样在Python中操作Docker容器?
- 02-26手把手教你搭建LLM模型知识库,开启AI智慧大门
- 02-26Docker容器是个啥?和VM有什么区别?
- 02-26Docker入门指南:从新手到容器大师
- 02-26带你一文搞懂 Docker
- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)