召回05 矩阵补充、最近邻查找

matrix completion

上述矩阵补充模型:

基于embadding做推荐,输入用户和物品id,输出一个实数,即用户对物品兴趣的预估值。把id映射到一个向量a,是对用户的表征,embadding层是一个矩阵,a是矩阵的一列;b是物品的表征,a与b长度相同,两个embadding层不共享参数。

模型训练的思路:

求最小化,可以使用随机梯度下降等算法,随机更新矩阵a和b的一列,从而学出矩阵A和B。

为什么称为矩阵补充?

矩阵中大多是灰色没有曝光,使用绿色位置数据训练模型,从而预估灰色部分的分数,进而进行推荐。每一行选取分数高的推荐给用户。

但工业中不使用矩阵补充。原因:

基于矩阵补充的线上服务:

训练好模型之后,可以用于推荐系统中的召回通道。

用户和笔记的数量很多,从而矩阵A 和B的列数很多,需要特殊的存储方法保证可以快速找到。

最近邻查找nearest neighbor search,但逐一对比所有物品是不现实的,达不到线上的实时查找。接下来通过一些算法,加速最近邻查找,避免暴力枚举。

近似最近邻查找:

推荐系统最常用的是余弦相似度,其最近邻就是向量夹角最小的,但有的系统不支持余弦相似度,将所有向量做归一化,其二范数等于1,其内积就是余弦相似度。

每一个点的embadding向量都是模型训练的时候计算出来的,想要召回某个用户感兴趣的物品。

介绍一种加速最近邻查找的算法:

近似最近邻查找:

step1: 线上服务之前,先做数据预处理,数据划分很多区域,划分方法取决于最近邻衡量的标准,余弦相似度是下图的扇形;欧式距离划分结果是多边形。

step2: 划分区域之后建立索引,每个区域用一个单位向量表示,将这个向量作为区域的key,将区域中所有点的列表作为value,即给定某一区域的key,就可以快速取回该区域的所有点。

有了这样的索引就可以在线上快速做召回。

step3: 线上给用户做推荐,用户的embadding向量记作a,将a与索引中的key向量做对比,计算相似度,索引数量远低于全部物品的数量,找到相似度最高的索引。

step4: 通过索引找到该区域的全部物品,找a最相似的三个点,即夹角最小的点,这三个物品就是找到的结果。

总结:

工业界使用更先进的双塔模型。query查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值