
2.3.2 召回模块:四种召回方案
通过审核模块过滤掉大部分违规内容后,我们接下来看推荐系统的召回模块。召回模块是根据用户特征与内容特征,通过构造不同的召回通路,从能够正常在社区分发的海量内容库里快速找到一小部分用户感兴趣的内容。对召回模块的要求是需要处理的内容数据量巨大,处理速度要快,策略与模型要简单易懂。
通常在主流的短视频社区推荐系统里,召回模块主要分为以下四种类型:
□热门召回:召回内容适合面向所有用户,适合做新用户的冷启动;
□个性化召回:基于用户行为、社交关系、当前环境、兴趣标签的召回,适合拉活;
□相关内容召回:基于对当前播放视频的相关内容的召回,适合提升用户时长;
□基于模型召回:算法模型召回一般都是作为上述三种召回方式的补充召回通路,适合探索一些新的内容方向。
1.热门召回
热门召回最简单的做法是,推荐系统将每个视频推荐给每个用户,再统计每个视频各个维度的数据,就能筛选出全站最热视频的排序了,真的如此简单吗?且慢,这里有个非常重要的矛盾无法解决,那就是平台的用户数量相比内容数量,其相对值是非常小的(平台在国内最多做到10亿DAU,而内容却可能有几百亿条),也就是说,每个用户的内容曝光机会都是非常有限的,平台不可能给每个用户曝光每个视频,所谓的“热门”,一定是建立在基于一部分人认可前提下的热门,而非真正的全站所有人的热门。
基于以上逻辑,推荐系统的热门召回如图2-8所示,试图去处理好视频分层、晋级、降级以及优质视频精品库的逻辑关系。

图2-8 热门召回框架图
我们将整个短视频社区的所有内容划分为6个层级范围。
(1)一头一尾两个固化层级trash(淘汰内容)和optimum(优质内容)
这两个层级都属于不再参与流动的固化层级,trash表示其内部的视频内容质量较差,不应该再予以流量分发;optimum表示优质内容精品库,热门召回的内容都应该从其中获取。这一头一尾两部分占据的内容占比都不高。
(2)L0~L3这四个流动层级
大部分的视频内容在L0~L3这四个层级之间流通,L0层级给予通过审核模块的视频一部分基础流量,这部分在消耗完基础流量后,如果能够满足L1升级条件,将会自动晋升到L1层级;而该视频在L1层级将获得更多的流量分发,在这部分增量流量消耗完后,如果满足L2升级条件,则会晋级到L2层级,但是也有可能因为表现不佳而达到了L1降级条件,该视频则回退到L0层级,假使这个视频既不满足L2升级条件,也不满足L1降级条件,那么该视频将一直停留在L1视频,并且将只得到少部分流量的分发机会;对于L2、L3,则遵循以上相同的原理进行视频内容的升级与降级。
对于L3层级的视频,如果满足优质视频的条件,那么就直接进入优质视频精品库optimum,从而退出流动层级;对于L0层级的视频,如果一直达不到L1升级条件,则在给定足够量的曝光后,自动淘汰,进入垃圾视频库trash。
(3)特殊的绿色通道
对于视频内容来说,除了遵循以上常规的“升级打怪”路径外,热门召回模块也规划了一条直接从L0晋级到优质视频精品库的绿色通道,这条通路一般开放给人工运营人员,用以扶持特殊品类。
在确定了以上热门召回的框架后,留给产品和算法人员的难题就是确定各个层级的升级与降级条件。
与前面介绍的筛选优质内容的逻辑类似,我们会针对视频的账号类型、创作者粉丝量、视频曝光量、点赞量、转发量、完播率等指标,动态调节各个指标的权重后,计算出一个北极星指标。在L0到L4层级的视频中,每多增加一次曝光,就会重新计算一遍北极星指标,进而判断该北极星指标数值是否达到了使视频进行晋级或者降级的条件。
热门召回通路最终会从optimum优质视频精品库中召回热门内容,且相对于个性化召回、相关内容召回、基于模型召回,热门召回的比例是最大的,毕竟推荐热门内容也是第一时间获取用户留存的利器。
2.个性化召回
个性化召回主要分为以下四种:基于用户行为、基于社交关系、基于当前环境、基于兴趣标签,下面进行具体介绍。
(1)基于用户行为
基于用户行为的召回方法主要分两种:一种是User-CF(用户协同过滤);另一种是Item-CF(内容协同过滤)。下面我们来具体看下各自的召回原理。
1)用户协同过滤(User-CF)。其逻辑原理就是“基于当前用户对内容的喜好找到相似用户群,并将该用户群的其他喜好内容推荐给当前用户”,如图2-9所示。

图2-9 User-CF原理示意图
如何通过用户协同过滤将内容2推荐给用户A的呢?简要步骤如下:
□找到用户A喜爱的内容1;
□找到与用户A类似,也共同喜爱内容1的用户群;
□找到这个用户群喜爱的内容集;
□将该内容集里的其他内容(排除内容1),例如内容2,推荐给用户A。
从计算逻辑来讲,本质就是将用户对各个内容的喜好作为一个向量,以此来计算所有用户之间的相似度,找到和当前用户相似度最高的其他有限个用户,并将其他有限个用户喜爱的内容排序作为推荐列表。
2)内容协同过滤(Item-CF)。其逻辑原理就是“基于当前用户对内容的喜好,找到相似内容(越多相同人群喜欢的内容越相似),并将该相似内容推荐给当前用户”,如图2-10所示。

图2-10 Item-CF原理示意图
如何通过内容协同过滤将内容2推荐给用户A的呢?简要步骤如下:
□找到用户A喜爱的内容1;
□找到内容1被哪些用户群体喜欢;
□找到也被相同用户群体喜欢的内容2,此时可以认为内容2与内容1相似;
□将内容1的相似内容——内容2推荐给用户A。
从计算逻辑来讲,本质就是从内容的角度去考虑,将所有用户对某个内容的喜好作为一个向量,以此来计算内容之间的相似度,得到当前用户喜爱内容的相似内容集合后,构建一个推荐列表给当前用户。

讲完了用户协同过滤与内容协同过滤,我们到底在什么时候选择哪种方法呢?一般认为考虑到计算成本,用户相对多的时候用内容协同过滤计算更快,内容相对多的时候用用户协同过滤计算更快,所以对于短视频社区而言,大部分时候基于用户行为的召回,都采取User-CF策略。
协同过滤方案的优点是能够帮助发现用户新的感兴趣的内容方向,系统并不清楚用户对某条内容的感兴趣程度,但仍然会推荐给他,因为相似用户对其有兴趣;缺点是无法解决冷启动的问题,当一个新用户没有用户行为的时候,无法对其进行协同过滤的推荐。
(2)基于社交关系
社交关系对于每个用户来说都是独一无二的,所以基于社交关系的个性化召回通常能解决以下两个方面的问题:
1)冷启动问题。对于缺乏用户行为的新用户,可以推荐其好友喜爱的内容。默认为社交关系中的好友与用户存在一定程度的相似性,那么有理由相信好友喜爱的内容,当前用户也可能喜欢。
2)提高推荐的可解释性。例如微信游戏或者微信看一看,经常会给推荐的内容打上“您的好友都在看/都在玩”的标签,这样可以轻易获取用户的信任。
(3)基于当前环境
如果系统能够获取权限,读取到当前用户的地点、时间、手机型号、网络环境等信息,则也可以基于以上信息做出相关推荐,来解决当用户标签与行为数据不够丰富时的冷启动问题,例如很多短视频社区内都设置有“同城”“同校”“现在正在发生”等推荐内容板块,极大地拓展了推荐维度的丰富度。
(4)基于兴趣标签
兴趣标签通常是运营人员根据内容类目的标签体系所创建,通过算法或者人工方式打在用户身上的标签体系,该方法可以抛开用户画像与内容向量的分析,最简单直接地给用户匹配上具有兴趣标签的相关内容。
该方案能够奏效的前提是需要具有颗粒度较细的用户和内容标签体系,如果只是一级类目标签匹配,如给一个NBA洛杉矶湖人队的篮球球迷只匹配上“体育”标签,进而推荐一堆跳水、赛马、足球等体育类视频,无疑会让用户感到困惑。标签体系越细分越好,细分程度决定了匹配的精准程度。
3.相关内容召回
相关内容召回的原理是根据当前用户观看视频内容本身的标签,去寻找有相似标签的其他内容,进而推荐给当前用户,其原理如图2-11所示。
如何通过相关内容召回将内容2推荐给用户A呢?简要步骤如下:
□找到用户A喜爱的内容1;
□分析内容1的标签信息,假设内容1的标签是{盗墓,奇幻,探险};
□找到与内容1具有最大相似度的其他内容,也就是寻找和内容1标签重合度最高的内容,假设找到内容2,其标签是{盗墓,奇幻,爱情},内容2只有一个标签与内容1不同,其他标签完全相同;
□将内容2推荐给用户A。

图2-11 基于内容的召回原理示意图
如上我们在寻找相似内容的时候舍弃了内容1标签“探险”的完全匹配,而是通过“盗墓”与“奇幻”这两个标签找到了相似内容,假设根据这两个标签我们没有找到相似的内容,那么我们可以进一步舍弃“奇幻”或者“盗墓”标签,只要匹配上任意一个标签就可以认为是相似内容,依此类推,我们可以按照相似标签重合度降序,由近及远地推荐相似内容给用户。除此之外,还可以拓展视频内容的标签类型,或根据标题、高质量评论、抽帧(视频降维成图像,CV分析)等进行推荐。
关于相关内容召回,还有以下三点需要说明:
□由于没有用户行为的分析,纯粹是从内容本身出发,所以并不属于个性化召回;
□内容各个标签的权重是不一样的,各特征的权重可以通过机器学习训练出来;
□内容标签更多是根据手工/规则打的,并不能完全涵盖某条视频内容的全部特征,且视频内容标签多势必会降低计算效率,所以如何平衡内容标签的数量,如何取舍内容标签的权重,都是需要反复考量和测试的。
4.基于模型召回
基于模型召回常常是热门召回、个性化召回、相关内容召回的补充,在召回总量中的占比较低,那么为什么还会有基于模型的召回方式呢?
在基于标签的召回方式中,我们往往是拆解内容标签与用户标签两个维度来进行匹配,但这里标签之间往往是独立的,当标签数量多到几百上千的时候,我们不禁会考虑一个问题,内容侧与用户侧的标签和标签之间,是不是还有一些标签向量相互交叉的隐性关系?
基于此前提,可将之前一直应用在排序环节的机器学习算法模型——FM(Factorization Machine,因子分解机)模型与DNN(Deep Neural Networks,深层神经网络)模型逐渐应用到召回环节,其优点有两个:
1)交叉的隐性向量比较抽象,一般人难以理解,需要靠机器学习算法模型解析出这些隐性向量;
2)特征向量多维度的交叉导致特征组合方式太多,一般规则解决不了如此复杂的问题,也需要算法模型来处理。
以上优点可以帮助推荐系统找到用户的隐藏兴趣,并且作为召回通路的补充,能够召回新的内容,提高召回效率。