推荐系统网络序言

在介绍推荐系统网络之前,先了解一下推荐系统的基本架构包括用户画像、召回、粗排、精排与混排五个模块。其中用户画像主要是构建用户兴趣,通过用户的行为日志信息识别出用户的兴趣(包括长期与短期兴趣)、行为统计信息、用户 DPM 信息、用户体验反馈等;召回主要是指通过多种算法来从数据库中筛选出候选集,主要用来降低后续排序环节中候选集的规模,将百万级的数据集缩小至千级别的规模,主要包括 ICF、UCF 等 CF 类召回算法、规则类召回算法(最新或最热)及基于语义向量(Embedding 召回);粗排和精排是指使用评分模型对候选物品进行排序来匹配出用户喜好的商品,粗排主要是给精排服务的,大多数情况下需要做特征对齐来保证目标一致性;混排则是处理多种内容的混合展示,例如在多种信息流内容中包含咨询、视频、小视频、图文等内容,需要将内容以形式化的方式展示给用户,因此会涉及到一些策略,比如冷启用户曝光、强制曝光策略等。

在推荐系统的基本架构中,当前学术界和工业界的主要精力还是在精排阶段,该阶段的目标是筛选出用户可能最喜欢的 item 列表,采用较多的是 point-wise 进行排序,其本质上是一个 CTR 预估模型,因此精排模型的历史也就是 CTR 模型的演进历史。
关于 CTR 模型的本质是希望从样本中学习到有用的信息,其发展历史也是伴随着机器学习->深度学习在不断变化,从统计学习的机器学习时代 LR 模型进化到 embedding+MLP 范式,主要是探索如何能够通过模型学习到用户更加高效的高阶交叉信息。
下述链接有详细说明: https://zhuanlan.zhihu.com/p/104307718
此外,对于推荐系统来说实际上是一个系统工程,而不仅仅只是一个模型,离线的模型训练只是推荐系统的一个环节,因此需要考虑在线与离线的一致性。在离线不一致主要有两部分:1.特征的在离线不一致;2.模型的在离线不一致。以特征为例:在离线没有采用统一的框架,比如在线用一套 C++抽取框架,离线用一套 java 抽取框架,还是不同的程序员进行实现,那么必然产生在离线不一致的情况。
上述对整个推荐系统的流程进行了介绍,接下来将会对 CTR 模型进行详细介绍。CTR 全称叫做 Click-Through-Rate,点击率预估,指的是精排层的排序,因此其候选集一般是千级数量。对于 CTR 模型而言,模型训练的输入一般是大量成对的(features、label)数据。其特征一般包含以下模块,第一用户本身特征(年龄、性别等);第二用户行为特征(历史购买的商品、点击过的物品);第三上下文特征(登录设备,时间等);第四待排序物品特征(物品 ID,被点击次数、物品的点击率等);上述特征包含离散型特征(物品 ID)同时也包含连续型特征(点击率)。
对于 CTR 模型而言,其只能够处理其对应格式的输入数据,因此需要对特征进行编码,也就是将特征信息转化为计算机能够识别的语言,离散型特征可以采用 one-hot 或 embedding 的方式进行处理,连续型特征可以不处理,也可以分段离散化再按照离散数据类型进行处理。label 在 ctr 模块指的是模型的预测目标,CTR 场景下预测的点击率即为用户是否会对该物品产生点击行为,点击则 label 为 1,不点击则为 0;因此,整个 CTR 模型的训练输入是特征向量+标签,而推理时模型输入只有特征向量,输出是一个 0~1 之间的数字,代表预估的 CTR 值用做排序,因此 CTR 预估本质上是一个二分类问题。
评论