背景
搜索系统是连接用户与商品重要的桥梁,是“人找货,货找人”的关键纽带。传统搜索系统通过文本tf-idf值和销量排序,容易引起马太效应,强者恒强,不利于长尾商品的转化。而且不是所有用户都需求热销商品,不能形成个性化和差异化营销,不利于用户体验和转化率的提升。近年随着AI技术的发展,机器学习和深度学习技术已经广泛应用在了搜索领域。多点从2019年开始逐步尝试将AI技术应用于搜索排序,实现了基于千人千面的智能化搜索,在多点实现“助力B,服务C”战略目标前进道路上迈出了坚实的一步。在此节点,我们一起回顾一下多点在搜索智能化上的探索和对未来的展望。初探
搜索系统连接了人和货,以数据为驱动。搜索系统里的人可以理解为用户背后复杂的用户行为和属性偏好等数据,货可以理解为商品类目、品牌、价格、属性等商品数据,跟输入关键词一起共同组成了搜索核心骨架。
那么这里千人千面的搜索效果是怎样实现的呢?用户输入搜索关键词,搜索系统会获取模型特征,将特征组合成一条样本输入模型,模型预测得到一个分数。因为样本里包括了用户行为等特征,所以不同用户对同一组商品会得到个性化的排序结果。
在这个过程中我们反复提到了特征和模型,下面我们分别来对他们进行讲解。特征
根据多点业务特点,我们将特征分为user维度,query维度,sku维度,上下文维度和其它维度共五个维度,每个维度表达各自的特征。比如user维度的用户画像和用户偏好特征描述的是怎样的用户。各个维度特征可以进行交叉来综合表达用户的搜索行为。
user维度:包括用户的历史行为,如点击过某个sku,点击了几次,下单过某个sku,单量等;对价格、品牌、类目等的偏好和其它一些画像特征。
sku维度:包括销量,点击次数,加购次数,按时间区分的近一周、近一月销量、行为趋势等特征;曝光转化率,订单转化率等特征;评价,收藏数等特征。
query维度:包括query与类目分数,query与title分数,query与titile编辑距离,query下sku行为数等特征。
上下文维度:包括星期几,将一天时间进行分桶等特征;
其它维度:包括用户设备信息,网络类型,注册信息,会员等特征;
各个特征还可以进行交叉组合成为组合特征,进行特征分桶等处理。以上特征都是连续型(数值型)特征,其实ID本身也是一种特征,在后面深度学习模型部分会进行说明。模型
1、第一阶段线性模型
为了快速上线实现千人千面的效果,这一阶段我们采用了逻辑回归模型,该模型相对简单,具有拟合速度快,解释性强,便于迭代等优点。逻辑回归是通过sigmod函数(图三)将样本预测值映射到0-1区间,通过交叉熵损失进行优化的模型。
为了衡量算法在全部训练样本上的表现如何,我们需要定义所有样本的代价函数,算法的代价函数是对m个样本的损失函数求和然后除以m: 模型上线后取得了一定效果,但是逻辑回归模型不能处理高维稀疏特征、特征分桶比较依赖研发人员经验的特点还是比较明显,且特征工程工作量较大。这促使我们进一步的探索。这一阶段我们尝试了基于树的模型XGBoost来解决特征分桶的问题。XGBoost可以根据基尼信息增益自动选择特征分裂的节点,对于缺失数据也有更好的鲁棒性,损失函数二阶求导使损失更精确,正则化和列抽样大大降低了过拟合的风险。我们最终使用了XGBoost+LR的模型框架。
如上图Tree split 部分是一种梯度提升决策树,数值类特征可以不做分桶处理直接输入模型,大大简化了特征工程的工作;模型不做预测用,将模型中树的叶子节点值当作特征选择的结果喂入下层LR,最终使用LR进行线上预测。该模型利用了梯度提升树模型的优点,解决了LR特征分桶和特征工程工作量大的问题,但是对于高维稀疏特征还是不友好,非常容易过拟合,这促使我们进一步的探索。三、第三阶段深度模型
前面两部分的工作都未解决的问题是模型不能学习高维稀疏特征,那么我们先来看看什么是高维稀疏特征?特征可以分为数值型和类别型特征,比如用户A在品牌B下单了X个商品,这个X就是一个数值,它是一个数值型特征。这里的品牌B就是一种类别特征,相应的用户id,shu_id,brand_id等都是类别特征,这种类别特征通常使用one-hot的方式表示成如下形式:{0,0,0,...,1,...0}。如果类别数为100万,那么就是一个长度为100万的向量,其中只有一个值为1,其余都为0,这样的特征就是高维稀疏特征。线性模型和树模型训练这样的特征需要非常恐怖的样本量才行,这样的方法只存在理论上的可能性,实际可操作性为0。但是在多点业务数据中这样的id类特征非常多,比如商品id,品牌id等。怎样才能学习到这些id类特征并为业务所用已经成为了燃眉之急。经过大量的调研和探索我们选择了DIN(deep interest network)深度兴趣模型来解决问题。DIN网络结构如下:模型输入所有数值型和类别型特征,高维的类别型特征经过embedding层会转换成低维的embedding向量,各种id向量concat后输入NN层经过softmax得到输出结果。特别的,在embedding层和concat层之间加入了注意力(attention)机制,在丰富的用户行为中更好的捕捉到用户的兴趣。在这里attention score的计算方式没有采用余弦相似的方法,而是采用一个小型的NN层,通过模型训练的方法去表达用户和商品间的关系。效果评估
两年时间我们的搜索排序模型经过了上百次的迭代,那么怎样去评估和衡量模型的效果?除了AUC、精确率等模型的离线评估指标外,更重要的是看模型的线上效果,是否带来业务的提升和用户体验的提升才是关键。为此,我们搭建了搜索AB测试平台,AB平台可以在单变量:即仅仅模型版本改变的前提下对比两版模型的效果。以DIN深度兴趣模型为例,在华东物美全量AB测试后,曝光转化率日平均绝对提升了1.54%。以北京物美为例,由于搜索系统持续优化及业务发展,2020年比2019年搜索曝光转化率绝对提升3.02%,也就是说由于点击转化提升带来的点击量提升达到千万级。同时搜索系统能更好的理解用户也意味着用户用更少的时间、更短的路径就能找到自己需求的商品,提升了用户体验。结语
在实现多点“助力B,服务C”战略目标和团队智能化发展的过程中,还有许多业务、技术难点等着我们去攻克。下一个阶段我们将更加聚焦单量提升和用户体验提升,通过不断学习不断进步,将业务与技术融合,保持团队凝聚力,才能不断取得突破和成绩。
参考文献:
Practical Lessons from Predicting Clicks on Ads at Facebook
Deep Neural Networks for YouTube Recommendations
预告一波:今年10月24日下午14:00-18:00,D+Talks 2021多点技术大会将拉开帷幕,我们将分享更多关于多点在人工智能方面的实践和探索,欢迎有兴趣的同学积极报名参与,与行业大咖共同探讨!