我们首先想到可以对权重本身的更新去做进一步调整。当需要区分长短期用户画像时,可以在权重上添加一个滑动窗口,并定义一个时间衰减系数 a (0-1之间),滑动窗口的作用是只关注窗口期内的用户行为,对窗口前的进行丢弃,原因是用户的长期兴趣也会随着人生阶段的变化而进行缓慢变化,比如用户可能会喜欢某一类题材的电影一两年,之后就不喜欢了。
此外,大家也可能观察到这个公式和带动量的 Adam 梯度更新方式有异曲同工之妙,我们通过调节 a 的大小让权重的更新在一定程度上更侧重于历史或者当下。具体来说,当给一个较小的 a 时,会更侧重于当下,然后历史积累会有较大的衰减。
在这个公式里可以看到,原矩阵为 M,补全矩阵为 X,外加一个约束,这个约束是希望数值不缺失的地方,X 和 M 是尽可能接近的,同时也希望 X 是一个低秩矩阵,因为我们假设大量用户的兴趣是相似的,在这个相似用户的假设下,标签矩阵一定是低秩的,最后对这个矩阵做一个正则化,完成非负矩阵分解的目标。这个方法其实也可以用我们最熟悉的随机梯度下降的方法去进行求解。
当然,除了以矩阵分解的方式进行缺失属性或兴趣的推断,也可以使用传统机器学习的方法。还是假设相似的用户会有相似的兴趣,这时就可以用 KNN 分类或回归的方式去进行兴趣推断,具体做法为,建立用户近邻关系图谱后,将用户近 k 个近邻里面最多的标签或者标签权重均值赋值给用户缺失的属性。近邻关系图可以是自己构建的,也可以是现成的近邻图结构,比如社交网络的用户画像,或者 B 端的企业画像--企业图谱。
贝叶斯网络非常容易实现,如下图右侧所示,在原有的网络结构上面增加一些特殊层就可以了,我们在这些网络中间增加一些 drop out 层,去随机丢弃前馈网络的一些参数。贝叶斯网络包含多个子网络,其中每一个网络参数完全相同,但由于 dropout 层的特性,在随机丢弃时每个网络参数被随机丢弃的可能性是不一样的,在最后训练好网络进行推理的时候也保留 drop out,这和 drop out 在其他领域的应用方式不一样。其他领域只有在训练的时候 drop out,在推理的时候会应用全部参数,只是在最后计算 logit 和概率值时,对 drop out 带来的一个预测值的 scale 倍增情况做一个还原。
贝叶斯网络不同的地方是,在前馈推理的时候要保留所有的 drop out 随机性,这样每一个网络都会给出这个标签的一个不同的概率,然后对这一组概率求出均值,这个均值其实就是一种投票的结果,也是我们想要预测的概率值,同时对这一组概率值做一个方差的计算用来表达预测的不确定度。当一个样本经历了不同的 drop out 参数表达以后,最后得到的概率值是不一样的,概率值方差越大,代表学习过程中的概率确定性越小。最后就可以对不确定度高的标签预测样本进行人工标注,对确定度高的标签则直接采纳机器打标的结果。然后再不断回到主动学习框架的第一步进行循环,以上就是主动学习的基本框架。
为什么用大模型的世界知识做画像标注会有更好的效果,甚至可以取代一部分人工?因为大模型是在广泛的开放网络的知识上进行训练的,而推荐系统、搜索引擎等只拥有自己封闭平台里的用户和商品库之间的一些历史交互数据,这些数据实际上是一些 ID 化的系统日志,其中很多相互关联的关系很难通过现有平台里的封闭知识进行诠释,但大模型的世界知识可以帮我们填补封闭系统所缺少的这部分知识,从而帮助我们更好地进行画像的标注或者预测。大模型甚至可以理解为一种高质量的对于世界本身的概念系统的抽象刻画,这些概念系统非常适合去做画像和标签体系。
04 总结与展望
最后简单总结一下用户画像目前存在的局限,以及未来的发展方向。
首要问题就是如何进一步提高现有画像的准确度。阻碍准确度提升的因素有以下几个方面,首先是从虚拟 ID 到自然人的统一,现实中一个用户有多个设备去登录同一个账号,也可能有多个端口、多个渠道登录,比如用户登录不同的 APP,但这些 APP 同属于同一个集团,我们是否可以在集团内部进行自然人的拉通,把所有的虚拟 ID 映射到同一个人,然后把它识别出来。
第二是对于家庭共享账户的主体人识别问题。这个问题在视频领域非常常见,尤其是长视频领域,我们经常会遇见一些 badcase,比如用户明明是一个 40 岁左右的成年人,推荐的却全是动画片,其实是一个家庭共用一个账号,每个人的兴趣是不一样的。针对这种情况,能否通过一些手段识别出当下的时间和行为模式,从而实时地、快速地去更新画像,然后确定当前的主体人到底是谁,再针对性地提供个性化的服务。
Q1:画像的处理和实际应用链路非常长,实际业务中采用 AB test 的验收效果可能会有很多问题,请问傅聪老师在画像的 AB test 方面有什么经验分享吗?
A1:画像的应用链路确实比较长。如果你的画像主要服务对象是算法,那确实从画像的精确度提升到传导下游的这些模型是有一个精确度的损失 gap。我其实不是特别建议做画像 AB test,我觉得可能更好的一个应用方式是去找运营人员,在用户圈选还有广告定投等这种偏运营性质的一些应用场景,比如大促的优惠券定向投放等场景上进行 AB Test。因为它们的效果是直接基于你的画像来施加影响的,所以可以考虑这种链路比较短的应用方合作线上 AB test。另外,我可能会建议除了 AB test 以外,也考虑一下另外一种 test 方式--交叉检验,给一个用户同时去推荐基于优化前后画像的排序结果,然后让用户去评估哪个更好。比如说我们现在可以看到的某些大模型厂商会让模型输出两个结果,然后让用户去决定哪个大模型产出的文本更好。其实类似这种交叉检验,我觉得可能效果更好,而且它和画像本身是直接关联的。
Q2:贝叶斯网络测试集上也有 drop out?
A2:不是说在测试集上有 drop out,而是说我们在测试推理的时候,依然会将网络里面的 drop out 的随机特性保留下来进行随机推理。