矩阵补充,最近邻查找

矩阵补充,最近邻查找

矩阵补充是向量召回最简单的一种方法,现在不常用,学习矩阵补充是为了更好的理解后面学到的双塔模型

下图,输入用户ID和物品ID后从Eebedding层拿到对应的向量做内积,内积的结果就是矩阵补充

模型训练

基本思路

数据集

训练

下图公式中

  • (u,i,y) 是训练集中的一条数据,表示用户u对物品i的真实兴趣分数是y。

  • <au,bi>是向量a,b的内积,是矩阵补充模型对兴趣分数的预估,反映第u号用户有多喜欢第i号物品

  • y - <au,bi> 是真实兴趣分数y与预估值的差,我们希望这个差越小越好。我们取该差的平方,差的平方越小,则预估值越接近真实值y

  • Σ(u,i,y)∈Ω 表示对每条记录的差的平方求和作为优化的目标函数

  • min A,B 对目标函数求最小化,优化的变量是矩阵A和B。求最小化可以用随机梯度下降等算法每次更新矩阵A和B的一列,这样就可以学出矩阵A和B

为什么这个模型叫矩阵补充?我们拿下图绿色位置的数据训练出模型。有了模型我们可以预估出灰色位置的分数,也就是把矩阵的元素给补全,这就是为什么该模型叫矩阵补充。

把矩阵元素补全后,就可以做推荐,给定一个用户,选出用户对应行中分数较高的物品推荐给该用户。

矩阵补充缺点

缺点1: 仅用用户ID,物品ID embedding,没利用物品,用户属性。

缺点2:负样本的选取方式不对

缺点3:训练模型的方法不好

  • 矩阵补充模型用内积<au,bi>`作为兴趣分数的预估,效果不如余弦相似度,工业界普遍使用余弦相似度

  • 用平方损失函数(回归),让预估的兴趣分数拟合真实的兴趣分数,不如用交叉熵损失(分类)。工业界通常用交叉熵损失做分类判断一个样本是正样本还是负样本

模型存储

线上做推荐时,要用到矩阵A和B,这两个矩阵可能很大。比如小红书有几亿用户,几亿篇笔记,这两矩阵列数都是好几亿,为了快速读取快速查找,需要特殊的存储方式,如下:

线上服务

在训练好矩阵补齐模型后,并且把embedding向量做存储之后,可以开始做线上服务。 将其运用在推荐系统中的召回通道,比如在用户刷小红书时快速找到这个用户感兴趣的几百篇笔记。

近似最近邻查找 (Approximate Nearest Neighbor Search)

问题:上述最近邻查找如果枚举所有物品,则时间复杂度正比与物品数量,计算量很大,在线上这是不可接受的。需要对最近邻查找进行优化。

有很多种算法假如最近邻查找,这些算法非常快即使有几亿个物品最多也只需要计算几万次内积,这些算法的结果未必是最优的但不会比最优结果差多少。

快速最近邻查找算法已被集成到很多向量数据库系统中。比较有名的包括:Milvus、Faiss、HnswLib等

如果系统不支持余弦相似度,可以把所有向度做归一化让他们的二范数全等于1,则向量之间的内积就等于余弦相似度

加速最近邻查找的思路

  1. 划分区域。每个区域用一个向量表示,这些向量的长度都是1。
  2. 建立索引。表示每个区域的向量作为key,把区域中所有点(物品embedding向量)的列表作为value
  1. 将用户embedding向量a与索引中的各个key做对比(如果物品数量是几亿,索引中key也只有几万而已,这步计算量不大)
  1. 计算用户embedding向量与key向量区域中所有物品的相似度(这一步计算量也不大)。假如我们要向量a找最相似的三个点

总结

矩阵补充是学术界的模型,效果不好。工业界不用矩阵补充模型而是用更先进的双塔模型。

工业界会用一些开源的向量数据库,如Milvus等,其都支持近似最近邻查找。

相关推荐
九亿AI算法优化工作室&2 小时前
SA模拟退火算法优化高斯回归回归预测matlab代码
人工智能·python·算法·随机森林·matlab·数据挖掘·模拟退火算法
么耶咩_5152 小时前
排序复习_代码纯享
数据结构·算法
Blossom.1182 小时前
基于Python的机器学习入门指南
开发语言·人工智能·经验分享·python·其他·机器学习·个人开发
藍海琴泉3 小时前
蓝桥杯算法精讲:二分查找实战与变种解析
python·算法
大刀爱敲代码4 小时前
基础算法01——二分查找(Binary Search)
java·算法
HR Zhou8 小时前
群体智能优化算法-正弦余弦算法(Sine Cosine Algorithm, SCA,含Matlab源代码)
算法·机器学习·matlab·优化·群体智能优化
自信的小螺丝钉8 小时前
Leetcode 378. 有序矩阵中第 K 小的元素 二分查找
算法·leetcode·矩阵·二分查找
你觉得2059 小时前
天津大学第二讲:《深度解读DeepSeek:部署、使用、安全》|附PPT下载方法
大数据·人工智能·安全·机器学习·ai·知识图谱·内容运营
不加冰的红茶要热的9 小时前
【机器学习】什么是决策树?
人工智能·决策树·机器学习
m0_735234609 小时前
蓝桥杯算法实战分享:算法进阶之路与实战技巧
算法·职场和发展·蓝桥杯