于敬 石京京 刘文海
(达而观信息科技(上海)有限公司产品技术中心 上海市 201203)
随着网络技术的快速发展和移动智能设备的普及,信息呈现爆发式增长,网络上存储着海量信息,因此也带来了巨大的挑战,即过多的信息使得用户很难找到真正想要的东西,这就降低了信息使用的效率。如何从海量信息中获取有价值的信息已成为信息技术的难题同时用户的信息需求也呈现多样化和个性化的趋势,推荐系统应运而生。推荐系统通过对用户的点击、购买、评分等行为数据以及用户属性和物品数据进行深入的分析挖掘,进而对用户的兴趣偏好进行建模,最终生成用户最可能感兴趣的推荐物品列表。推荐系统在缓解信息过载方面发挥着举足轻重的作用,同时也提升了产品的满意度、留存率等指标,企业收益也大幅度增加,目前已经在多个行业大规模地应用,包括电子商务、视频、在线教育、旅游、音乐和社交等。
推荐系统从产品设计上,除了千人千面的个性化推荐服务、热门推荐、地域推荐等形式以外,还有一种相关推荐的场景,常以“相关推荐”、“关联推荐”、“看了还看”、“买了还买”等形式出现。相关推荐在现实世界的工业推荐系统中是不可或缺的。用户看完一部引人入胜的电影后,就渴望更多相关性更高的电影,而视频平台通常代表这样的相关推荐部分。用户在电商网站或手机App 上购买产品后,会跳转到订单完成的页面,同时会出现类似产品的部分。当用户在某在线旅行社的App 上预订酒店时,他现在正在查看的酒店下方列出了相关酒店、风格相同、位置近等。相关推荐,通常是非个性化的,其结果取决于用户正在浏览的源物品,而不取决于他是什么样的人。
为了生成相关推荐结果,业界有一些典型的解决方案。首先,最传统的方法是通过领域知识或专业知识手动寻找合适的项目,通常每个模块都需要几个具有很强领域知识的操作员。例如,给定一部电影A,他们应该根据自己的判断或快速研究知道其相关的电影列表。这种方式不够有效,因为人力成本巨大,召回结果有限,质量无法保证。在技术方面,通常使用基于物品的协同过滤算法(ICF,item based collaborative filtering)、基于模型的协同过滤算法(MCF,Model-based collaborative filtering)、基于内容的推荐算法(Content based filtering method)以及混合的方法等。随着深度学习、大数据等技术的发展,也产生一些基于嵌入计算的推荐方法,包括item2vec、DSSM(Deep Structured Semantic Model)、BERT(Bidirectional Encoder Representation from Transformers)、基于图卷积网络的方法等。
本文围绕基于内容的相关推荐方法展开,在实际工业场景中的相关推荐业务中,问题要复杂得多,也更具挑战性,包括数据稀疏、冷启动、多样性不足、惊喜度差等问题。另外在线上实时推荐场景下,系统还存在高可用高并发方面的性能挑战。为了更好的应对上述问题,本文提出了一种融入语义匹配的改进的基于内容的物品相关推荐算法。该算法基于预训练语言模型BERT 对物品中的大量文本信息进行语义嵌入生成,以改进基于文本匹配的内容过滤推荐方法等进行融合训练并得到物品的相关推荐结果。
相关推荐在工业界有着广发的应用,它所体现的是用户在对一个物品有过浏览、点赞、购买等行为后,在绝大部分场景下是有强烈的需求想看到更多与当前物品相关性更高的其它物品,比如我们连续看相似的文章或者视频、浏览相似的商品、听着相似的音乐,可能标题相似、内容相近、类别相同等种种原因。相关推荐结果生成的主题思想是可以在给定源物品的情况下返回多个高度相关的物品列表。相应的推荐方法也有很多,以CB 和CF 为主。
物品的相关性可以体现在内容方面,由此可以使用基于内容过滤的方法。其主要过程是将待推荐物品的多维度内容特征和用户当前正在操作的推荐物品的特征进行相似度计算的过程,最终按照相似度高低排序得到待推荐的物品列表。传统的CB 推荐系统通常使用贝叶斯分类器等分类算法将物品分成不同的组,并为每个组生成一个排序列表。排序列表用于对组中的物品进行推荐,同一组中的物品推荐结果是相同的,因此省略了同一组中物品之间的差异。目前已经有大量新的方法不断出现。Li Yan 等人一种利用深度卷积神经网络来缓解冷启动问题的基于内容过滤的推荐方法。Rohani等提出了一种基于社交网络的因素来提高学术社交网络中推荐过程的性能的方法。Sunandanad 等提出了引入用户人口统计数据进行相似度计算增强内容过滤算法的电影推荐系统。Bagul 等提出了一种以生成与输入查询中提供的文献相似的相关推荐结果的综合推荐模型。杨武等提出了一种基于内容的推荐与协同过滤融合的新闻推荐方法,在准确率、召回率、多样性等方面相对传统方法都取得了一定的效果提升。Tai Yifan 等提出了使用机器学习和基于内容的推荐相结合的方法,以更好地捕获用户的个人资料用于在线商城的推荐。Walek 等提出了使用专家系统的基于内容的电商推荐方法。Wang Hongwei 等一种深度知识感知网络(deep knowledge-aware network),将知识图谱应用到新闻推荐中以充分发现新闻之间潜在的知识层面的联系进行推荐结果的扩展。
另外,文本语义匹配,即将目标文本与源文本进行匹配并计算它们之间的语义相似度,在推荐中也有很多应用。较早的文本语义匹配尝试是计算一个向量作为每个文本片段的表示,然后应用典型的相似性度量来计算匹配分数。但是这些传统方法的性能没有达到预期,因为它们经常无法识别语义相似的文本,从而不能很精确地进行向量表示匹配。近年来,深度学习的迅速发展为理解复杂的自然语言提供了机会,已经作为理解文本内部和文本之间的复杂语义相关性的最先进方法。到目前为止,这些现有的用于文本语义匹配的深度神经方法可以分为两类:以表示为中心的模型和以交互为中心的模型。几项研究表明,后一种对于文本语义匹配来说更合理。但是其往往需要大量的参数、标记的训练数据和更久的时间来更好的完成以交互为中心的模型训练工作。为了缓解标记训练数据有限的问题,更快地进行模型训练,预训练语言模型,例如ELMo(Embedding from Language Models)、GPT(Generative Pre-trained Transformer),而 Google 的 BERT 模型被广泛使用。在上下文相关的语言模型中,BERT 席卷了自然语言处理(Natural Language Processing)世界。与其他词嵌入方法相比,BERT 嵌入考虑了上下文,它很可能为不同文本中的同一个词生成两个不同的向量。在应用方面,Kaviani 等提出了使用基于BERT嵌入的神经网络为每条推文推荐新的主题标签。Hoang 等提出了使用BERT 嵌入(BERT Embedding)来学习一个新的特征集,它更密集、更语义化,用于表示用户和物品以应对数据稀疏问题。Wang Peipei 等提出了新颖的基于BERT 的群组推荐方法(Group recommendation)来辅助组决策,即采用BERT 从全局角度通过使用句子级嵌入来捕获群体偏好。
综合分析,以上方法都偏重于单一方法解决问题,多策略融合算法的研究较少。在实际工业应用推荐场景中,会面临冷启动、特征稀疏、用户体验和推荐效果需要持续优化等问题和挑战,本文提出了一种融合推荐算法,实际结果证明相对于基本方法可以获得更好的综合表现。
基于物品相关的行为数据和属性数据,分别进行文本语义匹配、热度计算三种方式的召回策略,然后基于加权求和的方式生成相关推荐结果,整体流程如图1 所示。
图1:物品相关融合推荐流程
在相关推荐任务中,对于当前物品和待推荐物品集合的标题、标签、描述、摘要等短文本内容分别进行文本匹配和语义匹配生成对应的相似度值,再使用线性加权求和的方式进行融合计算得到最终的相关性,排序后取TopN 作为候选推荐结果。
然后,按照如下方式进行最大值归一化。
物品i 和物品j 在多个字段的融合相关性计算方式如下所示。
在语义匹配方面,基于BERT 模型进行处理。其通过联合调节所有层的左右上下文来预训练深度双向表示。 这是通过使用掩码语言模型(Masked Language Model)和下一句预测(Next Sentence Prediction)两个新颖的无监督预测任务来完成的,它可以为下游任务提供包含原始句子语义的嵌入或编码。
字段f 对应的物品i(j)的BERT 语义向量为i(j),使用欧氏距离(Euclidean Distance)来计算i 和j 的语义相似度,如下所示。
其中n 表示语义向量地维度。然后,按照如下方式进行最大值归一化。
则多个字段的融合相似度计算如下所示。
考虑到物品数据量很大带来的性能压力,在生成候选推荐结果时使用近似最近邻(ANN,Approximate Nearest Neighbor)算法进行优化,基于Annoy (Approximate Nearest Neighbors Oh Yeah) 开源库实现。Annoy 的核心主要是不断地用选取两个点,然后根据这两个点之间的连线确定可以垂直等分线段的超平面对空间进行分割,最终将每一个区分的子空间里面的样本数据限制在K 以内。通过这样的方法,可以将子空间的从属关系用二叉树来表示。
对于待插入的样本x,从根节点依次使用法向量跟x做内积运算,从而判断使用超平面的哪一边(左子树或者右子树)。对于查询向量q,采用同样的方式(在树结构上体现为从根节点向叶子节点递归遍历),即可定位到跟q在同一个子空间或者邻近的子空间的样本,这些样本即为q近邻。建立了二叉树的结构用于表示上述点分布空间,每个节点都表示一个子空间,在点分布空间中接近的子空间在二叉树结构中表现为位置靠近的节点。
为了提高查询的召回,Annoy 采用构建多个二叉树结构构成森林,当搜索多棵树的时候,将这些节点组合起来,可以得到对于目标点的近邻点分布的大概估计,接下来再对这个分布范围内所有点进行距离计算并排序,选择TopN 作为最相关的结果。
在实际业务场景中,用户和物品之间的交互行为往往有很多种类型,比如点击、点赞、收藏、购买等。设用户行为类型集合为A={1,…,g,…,S},比如g=1 表示点击,g=2 表示收藏等,p∈R表示各个行为类型的权重向量。
对于任意行为类型g,对应的用户集合U,长度为|U|,则物品i 的热度的热度指数计算方式如下所示。
同样为了将各种行为的协同过滤结果进行融合,按照如下方式进行最大值归一化。
则多种行为的融合热度指数计算方式如下所示。
基于3.1、3.2 中的相关性和热度计算方法,最终物品i和j 的总体推荐度如下所示。
rec_score(i,j)=α·rel(i,j)+β·dist(i,j)+λ·hot(j)
其中,α、β 和λ 均属于R。最终按照总体推荐度从高到低排序,取TopN 作为相关推荐结果返回。通过调整α、β和λ 的值进行效果优化。
为了充分验证本文所提推荐方法的效果,进行了多组对比实验并使用多个指标进行评估。选择实际的线上短视频相关推荐业务场景进行随机分流A/B 测试。在推荐结果生成阶段,使用Python3.8 作为开发语言,服务器配置为CPU 为48C,内存为512G,10 个GPU。
关于该短视频业务场景整体数据情况,推荐位置是当前在播放视频的详情页下方的相关推荐,一次请求20 条推荐视频,且是信息流式的设计。用户、物品以推荐请求量的七天统计数据如表1 所示。
另外,通过埋点采集到的行为数据类型较多,包括曝光、点击、播放、收藏、关注、搜索、搜索点击、评论、取消关注、取消收藏、取消点赞等,部分行为的数据量的七天统计结果如表2 所示。
从表1 的最后两列用户量和请求量来看,人均请求数量基本在5 左右,而且趋势上相对较稳定,没有特别大的波动,侧面说明少量用户请求数量过多等异常情况较少。从表2 行为数据分布上来看,曝光行为约占92%、点击和播放行为量占比接近4%。
表1:数据集统计数据
表2:各类型交互行为数据情况
总体上各类型数据趋势基本一致,每天的待推荐视频量在120 万以上、推荐结果的曝光量在22 万左右、用户的点击和播放行为量在1 万左右,说明产品业务状态趋于稳定,较适合做A/B 分流测试。
在实际推荐效果评估上,使用三个指标以衡量推荐方法的效果和性能,分别是:页面浏览推荐点击率(PVCTR,Page View Click-Through Rate)、独立访客推荐点击率(UVCTR,Unique Visitor Click-Through Rate)、平均播放时间(APT,Average Play time)、平均响应时间(ART,Average Response Time),各指标均是按自然天进行统计。
首先,PVCTR 和UVCTR 指标用于衡量推荐结果的精准度,计算方式分别如下所示。
其中pv_click 表示用户对推荐出来的视频的点击总量,uv_click 表示点击过推荐结果的用户按照用户唯一id 去重之后的数量,pv(page view)表示推荐出来的结果实际曝光给用户的总量,uv(unique visitor)表示有推荐结果的用户按照用户唯一id 去重后的数量。当一个用户在一个时间窗口内多次点击对同一个视频,仅作为一次点击进行统计。同样,对同一个用户在一个时间窗口多次曝光同一个视频,仅作为一次曝光进行统计。对于实际推荐出来的结果是否是用户喜欢的,取决于用户是否会有意愿去点击。PVCTR 和UVCTR越高,说明推荐结果越精准、效果越好。
其次,APT 指标用于评估推荐视频的质量和转化效果,同时也可以看出用户对产品的粘性,单位是:秒/次,计算方式如下所示。
其中,play_time表示第i 次播放视频的总时长,n 表示视频总播放次数。需要说明的是,当一个用户对同一个视频播放多次,播放时长按照实际的来进行计算,不需要进行去重统计计算。APT 越大,用户看的越久,说明推荐视频的质量越高,推荐算法的转化效果越好。
最后,ART 指标用于评估推荐算法的实际性能情况,单位是:毫秒/次,计算方式如下所示。
其中,response_time表示第i 次推荐请求的处理时间,n 表示推荐总请求次数。ART 越短,处理时间就越短,说明推荐算法的性能越好。
为了充分验证本文推荐方法的效果和性能,设置了多组对比实验,如表3 所示。通过线上推荐系统随机分流A/B测试方式进行测试和指标数据统计及分析。
表3:实验推荐方法
各相关推荐方法的ART 性能对比实验结果数据如表4所示,可以明显看出无论何种推荐方法,ART 指标数据基本上都在50 左右,也就是平均每次推荐请求的处理时间在50ms 左右,保证了视频相关推荐结果的实时性和用户体验的流畅性。
表4:各推荐方法的10 天ART 实验数据
各相关推荐方法的PVCTR 和APT 对比实验结果数据如图2 和图3 所示。从图中可以看出,PVCTR 和APT 的数据会有波动,但趋势基本一致,也就是用户点击的视频越多,播放的视频时间也会随之增加。另外,HR 的效果是最差的,侧面说明每个物品的相关推荐结果都用热度指数的方式生成,则结果基本是一样的,对于用户而言会有视觉疲劳、惊喜度差,进而影响了效果。BHR 和CBHR 的数据来看,在HR 的基础上,分别引入了基于语义匹配的内容过滤推荐和基于文本匹配的内容过滤推荐以后,推荐效果都有了不同程度的提升。当然,在PVCTR 和APT 指标上,表现最好的是本文提出的BCBHR 推荐方法,融合三种基础推荐方法达到了各取所长的推荐效果。
图2:各推荐方法的10 天PVCTR 实验数据
图3:各推荐方法的10 天APT 实验数据
各相关推荐方法的UVCTR 如表5 所示,各推荐方法基本上都在30%左右,数据趋势上也有波动。这和产品自身的用户习惯有较大关系,大部分用户进来以后看完当前视频就离开了。相对于其它推荐方法,BCBHR 会有微量提升。
表5:各推荐方法的10 天UVCTR 实验数据
通过对现有物品相关推荐场景中问题的深入研究分析,提出了一种融入语义匹配的改进的基于内容的物品相关推荐算法。该算法不需要做样本标注,先是使用BM25 和搜索引擎进行多字段文本相关性实时融合计算生成推荐结果候选集;然后应用业界先进的预训练语言模型BERT 进行深度语义实时匹配推荐,并通过ANN 进行性能优化,不仅提升了结果相关度,还缓解了文本匹配导致的惊喜度差的问题;接在引入热度指数计算保证了线上推荐系统的鲁棒性。通过线上业务系统的随机分流测试及对比实验,在多个指标上也取得了不同程度的提升,证明了该推荐算法的有效性。接下来的工作会围绕端到端学习等方面进一步研究,以持续优化推荐效果。