作者介绍: 黄俊, 腾讯高级研究员, 神盾推荐离线平台架构师

本次分享是神盾推荐系统中的 Griddle 框架的介绍, 这个框架是一个面向商品推荐的级联框架。

前言

当我们讨论推荐系统的时候, 我们一般是说广告推荐. 对于广告推荐, 业界最领先的架构是采用两层架构. 使用一个双塔结构做召回, 再用一个 FNN 模型做排序.

但是在业界广告推荐并不是推荐系统的全部, 还有一类非常重要的推荐系统是商品推荐. 所谓的商品推荐, 是指为互联网产品的内容和商品做展示推荐. 这类推荐对比广告推荐, 有个几个特点. 在产品形态上会更多变, 在目标导向上会考虑用户时长等与体验相关的因素, 它的展示结果也更偏向不确定性. 除此之外, 在资源投入上商品推荐通常需要和业务增长周期协同, 更需要精打细算.

由于产品推荐和广告推荐的差异, 这里我们提出 Griddle 推荐框架. 这是一个类似乐高积木的级联框架, 在这个框架里面我们可以根据需求堆砌推荐模块. 下面就是搭建好的 Griddle 框架的例子.

Griddle 框架由两级架构组成. 每一个实例可以被分成多个层, 每一层由多个模块组成. 在实际应用中我们通常对发挥不同功能的层有不一样的命名. 分别是 “召回”, “规则”, “分桶”, “精排”, “组合”. 每一个类型的层并不是必须的, 视需求而定.

召回层

召回层我们通常需要一个足够灵活的算法平台. 因此在神盾平台上我们实现了大部分推荐系统需要用到的召回算法. 每个算法有对应的应用场景, 具体见下图.

在上述召回算法基础上, 我们做了一些新探索, 例如我们尝试利用用户行为, 直接学习物品的语义特征. 在 app 推荐场景上, 我们利用用户对 app 的下载行为学习一个 embedding. 在这个语义空间的二维展示上可以很明显发现同类的 app 都聚集在一起, 利用这些信息我们可以用在召回层做物品相似度召回.

另一个关于在召回上的研究是关于如何利用腾讯的社交关系链数据. 这类数据通常需要有两个考量, 一个是隐私保护, 另一个是对关系链在兴趣传播上的置信度考察. 而这里我们提出的一个算法是考虑三角关系中, 另外两方拥有的共同兴趣. 我们发现考虑上三角关系后, 召回效果能够有更进一步的提升.

排序层

在商品推荐上, 我们通常需要根据不一样的运营目标构建针对性的排序算法. 例如对于新内容的试探, 我们实现了 UCB 算法. 这个算法是 MAB(多臂老虎机)算法的一种. 它目的是让新的内容在平台上线的时候, 能够尽快的找出对应喜欢这个物品的人群. 这个算法的核心思想是在点击率的基础上增加一个由曝光量控制的试探分数, 当物品曝光量较低的时候, 对应的试探分数会比较高, 从而增加曝光量. 当曝光量上来的时候, 其得分会偏向点击率.

对于优化点击率为目标的算法, 我们希望能够在尽量提升效果的情况下, 为商品推荐提供一个低延时的模型, 因为商品推荐对比广告推荐有硬性延时要求. 这里我们提出了一个 Deep Ensemble 模型. 在 FM 算法做点击率预估的结果上, 加上一个小型的深度学习模型.

组合层

商品推荐对于广告推荐最大的差异点是商品推荐需要充分考虑运营方针. 例如产品通常需要根据运营目标调整各个类别的展示比例, 或者新产生的内容需要有快速试探的渠道. 而在这里我们实现了一个分桶-组合层, 召回的结果可以根据运营逻辑进行分桶, 使用不同运营导向的排序算法排序, 再根据规则组合.

另一个是用户体验问题, 商品推荐面对的用户通常不喜欢在点击一个内容之后, 算法平台大量推送同类物品, 这容易造成用户的厌恶. 对此我们在分桶-组合层实现了 Exp3 算法. 这个算法仍然是一个 MAB(多臂老虎机) 算法, 它通过用户的点击/曝光数据, 计算展示的概率分布, 这个概率分布不会等于零, 也不会太大. 从而冷门兴趣仍有机会试探, 而用户点击过的类目也不会大规模出现.

以上是Griddle 框架的实现及原理,希望能得到更多的建议,多多交流

文章来源于腾讯云开发者社区,点击查看原文