背景
网易严选是一家品牌电商,连接着供应商和用户,改善供应链的同时给用户提供高品质、高质量、无大牌溢价的商品。营销侧业务场景是在线电商的重中之重,面临的场景挑战包括:
- 如何优化流量分配?
- 如何增加 GMV?
- 如何提升用户购物体验?
互联网人口红利消失殆尽,在存量争夺用户时间的战场上,必须高效充分利用每份流量。使用个性化算法是各家必用技术,在电商的营销场景提升效果明显,点击率预估提升一小步,流水增益一大步。网易严选目前主要采用深度模型应用在搜索、推荐、广告等场景,具体算法方向有 DeepCTR、Embedding、NLP 等。我们选用 TensorFlow 作为模型训练和推断的解决方案,拥抱深度学习和 TensorFlow 带来的好处:
- 提升模型迭代效率,可以从两点理解:
- 大部分特征组合工作交给深度模型,让 Machine Learning Engineer 更关注在模型本身,享受学术届新模型落地在工业界的技术红利。
- TensorFlow 提供很多预训练好模型和模型基础结构。
- 训练和推断无缝结合(TF Serving 的出现是当初选择 TensorFlow 的最大参考因素,目前我们也在尝试 TFX 中)。
- 充足的社区资源(踩坑也可以爬得出来)。
在转向深度学习的这两年,网易严选个性化场景的用户体验、指标数据都有较大提升(产品形式、系统能力、算法效果都在持续优化中)。个性化场景最重要的两个阶段是召回和排序,接下来会从这两方面切入分享网易严选实践经验和思路总结。
能力统一召回体系
这里的召回更准确定义是 召回 + 粗排。召回的目的是快速缩小范围,减轻精排的压力。网易严选系统当下的挑战不在数据规模和系统压力,我们设计系统最看重的是复用性、维护性和扩展性。因此考虑对召回能力做大统一,涉及搜索、推荐、广告、客服多个业务场景。
召回抽象
对召回来说,输入输出都是信息,只是信息的类别可能不同,同时必须定义信息间关系度量:$ score = f (InputData,OutputData) $。召回阶段对时延比较敏感,不能选用太过复杂关系度量算法。对于多个场景,信息可以抽象为:
- 搜索(输入查询词,输出商品列表、专题内容列表)
- 推荐(输入用户,输出商品列表)
- 广告(输入用户,输出素材列表)
- 客服(输入问题,输出答案列表、相似问题列表)
信息载体包括文本和向量,两端信息载体相同的情况下才能计算关系度量值。 显而易见 查询词、商品、问题 / 答案、专题内容 天然包含文本信息,而使用向量必须依靠模型做目标的向量化表征。
类似 Airbnb[1] Sequence Embedding 思路,我们基于 TensorFlow 实现商品向量化表征,同时引入 Batch 内 pairwise loss 和 side info 进一步提升模型的性能和效果。基于商品向量可以关联表征用户、查询词、专题。
问题 / 答案的向量化参考 sentence embedding 技术,由专门的 NLP 同学负责。
召回能力
如果信息是文本或向量,召回能力需要支持:
- 文字相关性:依靠 ElasticSearch 索引,BM25 算法度量相关性。
- 语义相似性:Pre-train 和 fine-tuning 的 BERT 模型推断相关性。
- 向量最近邻:近似最近邻搜索(Approximate Nearest Neighbor),余弦距离计算相关性。
作为通用召回体系必须保证低延时、高可用,具体做系统架构时我们将三种能力都用索引来支撑。文字相关性本来就是索引提供的能力;向量最近邻基于 LSH(Locality-sensitive hashing)投影后再建索引,获取索引正排数据(原始向量)计算匹配得分,实现向量的在线查询能力。非 GPU 环境下 BERT 模型比较耗时,可将热门查询词和高频问题(二八定律)做离线推断,结果得分 T+1 同步到索引。
至此三种能力都整合在索引体系下,召回场景可以并行使用。举个例子:
- 搜索场景:输入查询词同时使用文字相关性,语义相似性(Query 和 ItemTitle 形成 setence pair),向量最近邻召回商品(QueryVector 到 ItemVector)。网易严选商品总量偏小,扩展召回能力希望用户能看到更多关联商品。
- 推荐场景:输入推荐模块商品池条件和用户向量,使用文字相关性(多路召回的商品过滤条件,是通用的索引条件查询),向量最近邻 (UserVector 到 ItemVector) 召回商品。
各显神通精排服务
精排场景没有考虑对能力做抽象统一,每个模块核心诉求点会不同(有些战略导向的场景可能只考虑曝光点击量)。核心指标上综合考量曝光转化率(CTR*CVR)、UV 价值、总体 GMV,这些都是算法需要全局优化的目标,同时综合业务方的人工策略,呈现给用户最终的商品浏览效果。小伙伴可以充分发挥聪明才智,自由选择特征和模型结构,以线上 AB Test 数据评估价值。我们的精排模型探索往大的说分为两方面:追求精度效果的复杂深度模型和实时感知用户偏好的在线模型,下文做详细介绍。
复杂模型
使用深度模型做 DeepCTR 预估,主体思路是 Embedding&MLP,对模型做网易严选场景的适配调整。我们首个深度模型是 WDL[2],依靠 TensorFlow 提供基础的 WDL 模块可以方便的编码实现。Wide Part 依靠先验知识构建特征,挑选高覆盖、高价值属性两两交叉构建特征。Deep Part 依靠深度网络实现特征组合,对商品 Id、类目 Id、属性 Id Embedding,但不直接对用户 Id Embedding,而是基于用户和商品的行为序列表征用户,引入注意力模块[3] 计算用户向量。
后续在定制 WDL 之上加入 CTR、CVR 的多任务学习[4],共享 Embedding 层权重,构建 CTCVR LOSS,实现曝光阶段的 CVR 预估。
在线模型
业界已经形成共识数据新鲜度能进一步提升模型效果。为实时感知用户偏好,一般使用实时特征传入深度模型,但存在两个问题:
- 实时特征在线计算用于推断,数据清理用于训练;特征调整的维护成本和计算量比较大。
- 实时特征线上计算有不可靠性,扰动模型效果。
我们选择实现成本较低的方案:T+1 复杂模型的基础上挑选 TopK 应用实时重排序,在风险可控的前提下尝试激进实时算法。基于用户和商品交互数据计算用户多类目的实时兴趣向量(用户向量表征参考上文召回说明),在不同的场景按需使用。如在搜索推荐,使用当前上下文信息激活多维度用户实时向量,计算向量距离重排序商品列表达到类似实时模型的效果。系统工程上收益一个是用户和商品交互数据是基础统计,没有额外特征维护成本,另一个使用向量有更好泛化性和数据容错性。网易严选场景验证效果有明显的提升。
结语
近几年深度学习领域的技术革新非常快,新模型新思路层出不穷,不由感叹 “终身学习” 的知行合一颇为不易。网易严选营销端个性化有丰富的深度学习应用场景,从点击率预估、语义匹配、向量化到素材合成、文案生成、人群画像,我们一直在扩充算法的能力边界。借助 TensorFlow 高效实现 & 验证学术界 SOTA 模型,关注应用微创新和算法适配落地,能大幅提升算法团队工作效率。