这部分产生的判断维度会对所有接入看一看的内容进行组合打标,通过不同产品场景或渠道来交叉组合,构建推荐的内容库。同时,标签会不同力度的用于在线召回过滤策略,作为模型召回、排序特征来使用。应用证明对于新内容的冷启动筛选,特定投放目标库群体效率提升明显。
三、召回架构推荐系统的召回阶段可以理解为根据用户的历史行为数据,为用户在海量的信息中粗选一批待推荐的内容,挑选出一个小的候选集的过程。在看一看召回演进路上,我们曾经调研大量主流的工业界推荐系统的召回架构的设计,如下:
可以看到各类同类竞品的系统虽然细节上多少存在差异,但不约而同的采取了多路召回的架构,这类设计考虑如下几点问题:
- 考虑用户层面:用户兴趣的多元化,用户需求与场景的多元化:例如:新闻需求,重大要闻,相关内容沉浸阅读等等。
- 考虑系统层面:增强系统的鲁棒性;部分召回失效,其余召回队列兜底不会导致整个召回层失效;排序层失效,召回队列兜底不会导致整个推荐系统失效。
- 系统多样性内容分发:图文、视频、小视频;精准、试探、时效一定比例;召回目标的多元化,例如:相关性,沉浸时长,时效性,特色内容等等。
- 可解释性推荐一部分召回是有明确推荐理由的:很好的解决产品性数据的引入。
看一看召回目前设计为多路召回形式,从功能性角度分为如下几类:模型类召回、相关场景类召回、基础属性召回、社交类召回、试探类召回、产品策略/运营类召回六大类。
如下图所示:
- 模型类召回:目前看一看曝光占比最大的一类召回策略,可以很好的解决推荐系统中长短期兴趣自适应、一定程度的兴趣扩展、业务场景扩展与迁移等几个核心召回问题,为下文着重介绍的内容。
- 相关类召回:看一看包括多个相关推荐场景。这类召回依赖内容画像对内容的语义判断能力,采用孪生网络类设计思路,解决跨内容域(例如:视频与图文,封面与标题等)相关性问题,满足用户在推荐系统内对沉浸式体验的需求。
- 基础属性类召回:属于比较基础的一类召回,但具有几点重要意义:由于多重标签的对item的覆盖度会比较高,所以这类召回很好的可以满足冷启类,兜底类场景;其次,属性具备良好的可解释性,可以很好的对模型类召回以及相关特殊外显场景下的解释性作用,通常也是产品订制或规则的重要维度。
- 社交类召回:是看一看比较有特色的一类召回,基于微信丰富的社交场景,看一看设计了:“好友在读”,“XXX都在看”,“在看”等几类设计相关推荐。
- 试探类召回:通常的推荐系统都会面临“信息茧房”问题,即:人们的信息领域会习惯性地被自己的兴趣所引导,从而产生多种主动行为:我们也称为对推荐系统的隐式反馈信息,这类行为又会作为推荐系统的学习目标,从而让推荐结果逐步收敛,用户再无法获取更广泛的内容,信息桎梏于像蚕茧一般的“茧房”中的现象。兴趣试探会解决这类问题。另外,推荐系统作为一类内容分发平台,承担着甄选优质内容,发现潜力优质内容,并在一定程度上去中心化投放的能力,内容试探队列会解决这类问题。
- 运营&产品策略召回:满足产品以及一些节日、新闻、话题、合作方等特殊定制场景。
- 粗排
看一看召回策略演进主要经历了四个阶段,这里并不是代表后者替代前者,由于不同队列的意义和解决的问题的差异性,各个阶段的一些队列目前还会有不同情况的保留在系统中。
1. 基于属性召回
这一阶段比较重的依赖内容画像与用户需求的细粒度判断,我们走过了一段基于自然语言处理、基于用户行为来对内容做丰富的细粒度内容打标签的阶段,接着,用户需求会基于阅读、搜索等用户行为将内容属性标签归入用户需求。
内容属性标签构建倒排与正排索引,各路召回在线基于用户需求的多个细粒度维度判断以及实时阅读历史的item属性信息,通过拉取倒排item拉链,得到各路召回的候选结果。
这阶段中,例如:tag、类目、topic,已关注公众号队列占到了召回大头比例,这类属性具备很好的可解释性。
2. 协同&社交召回
CF主要的功能是预测和推荐。算法通过对行为数据的挖掘发现用户的偏好,构建用户(user)需求或者内容(item)画像,基于不同的偏好对用户进行群组划分来向用户推荐可能感兴趣的内容。协同过滤的核心思想,简单地说就是:物以类聚,人以群分。
如下对CF类算法的常用归类示意图(来自wiki)可以比较好的表达我们对协同类算法的演进路径。