2026/4/6 22:12:16
网站建设
项目流程
好的响应式网站,生产管理系统免费版,什么叫网站被k,做汽车商城网站以下整理的学习笔记内容均来源于 https://github.com/wangshusen/RecommenderSystem 推荐算法一 推荐系统概要二 召回1 基于物品的协同过滤#xff08;ItemCF#xff09;2 Swing召回通道3 基于用户的协同过滤 #xff08;UserCF#xff09;4 离散特征处理5 矩阵补充6 双塔模…以下整理的学习笔记内容均来源于 https://github.com/wangshusen/RecommenderSystem推荐算法一 推荐系统概要二 召回1 基于物品的协同过滤ItemCF2 Swing召回通道3 基于用户的协同过滤 UserCF4 离散特征处理5 矩阵补充6 双塔模型模型和训练1Pointwise训练2Pairwise训练3Listwise训练7 双塔模型正负样本8 双塔模型 线上召回和更新9 双塔模型自监督学习1特征变换RandomMask2特征变换Dropout3特征变换互补特征4特征变换Mask一组关联的特征10 Deep Retrieval11 其他召回通道12 曝光过滤BloomFilter一 推荐系统概要注意分层实验的正确理解同时存在两套独立的分桶系统就像每个学生有两个独立的学号一个按身高编一个按生日编。这种设计是大型互联网公司做 “分层实验” 或 “正交实验” 的基础目的是为了能同时进行成百上千个A/B测试而不相互干扰。反转实验大部分人用新策略小部分人故意用旧策略二 召回1 基于物品的协同过滤ItemCF考虑了喜欢程度的公式2 Swing召回通道这里的“小圈子”应该区分高质量小圈子几个人共同喜欢很少的几样东西overlap小但精准低质量小圈子几个人共同喜欢很多东西overlap大但宽泛Swing惩罚的是第2种——那些“什么都喜欢”的用户组成的圈子。3 基于用户的协同过滤 UserCF每个物品对用户相似度的贡献与该物品的独特性冷门程度成正比。4 离散特征处理例如Embedding嵌入5 矩阵补充什么是双塔双塔模型有两个独立的神经网络用户塔输入用户特征输出用户向量物品塔输入物品特征输出物品向量 相似度 用户向量 · 物品向量因此双塔可以解决冷启动问题就算是新用户和新物品都可以动态地表示它们的向量。但是曝光无点击≠负样本错误的负样本会带来什么模型过度惩罚好内容把用户潜在感兴趣的内容也当成负样本模型就不敢推荐了流行度偏差加剧只有最热门、最“安全”的内容会被推荐长尾内容被埋没新颖但需要被发现的内容永远没机会6 双塔模型模型和训练双塔模型Dual-Tower Model的核心结构是查询Query 和 物品Item 分别通过独立的神经网络两个“塔”得到向量表示然后通过计算向量相似度如点积、余弦相似度来预估它们的匹配程度。或者用余弦相似度训练的目标是让匹配的QueryItem对的相似度尽可能高不匹配的尽可能低1Pointwise训练Pointwise逐点法思想独立看待每一个“用户-对象”组合将其视为一个独立的样本并给它打上一个绝对的标签例如1 喜欢/匹配0 不喜欢/不匹配。训练模型的目标是直接预测这个二元分类的概率。它不关心这个组合与其他组合之间的相对关系只关心自己预测的“匹配分数”是否接近真实标签。“独立看待每个正样本、负样本做简单的二元分类。” 正样本就是用户匹配的对象标签1负样本就是用户不匹配的对象标签0。模型的任务是学会区分这两种情况。优缺点优点简单可以直接用成熟的分类算法如逻辑回归、交叉熵损失。缺点忽略了物品之间的相对顺序。比如一个“有点喜欢”的对象和一个“非常喜欢”的对象标签都是1模型无法学习到它们之间的优劣差异。这不符合推荐/搜索追求排序的本质。2Pairwise训练Pairwise配对法思想同时考虑一个正样本和一个负样本目标是让正样本的匹配分数高于负样本。训练模型不再预测绝对分数而是学习一个相对的排序。常见的损失函数是 Triplet Loss 或 RankNet Loss。核心是拉大正样本和负样本之间的距离。“每次取一个正样本、一个负样本”。对于同一个用户模型会同时看到一个“匹配对象”正样本和一个“不匹配对象”负样本。损失函数会惩罚“正样本得分 负样本得分”的情况。优缺点优点更符合排序的直觉模型直接学习“什么更好”。缺点每次只比较一对忽略了全局信息。比如一个“非常好”的负样本差点就匹配了和一个“非常差”的正样本勉强匹配这种复杂情况在Pairwise中难以精确建模。且训练样本对数量庞大O(N²)。3Listwise训练思想一次性考虑一个正样本和多个负样本即一个列表目标是优化整个列表的排序使得正样本排在列表的最前面。训练这是最接近实际推荐/搜索场景用户看到的是一个排序后的列表的方法。损失函数直接衡量模型输出的列表排序与理想排序之间的差距。经典方法如 Softmax Cross-Entropy Loss将排序问题转化为多分类问题或 ListNet/ListMLE。“每次取一个正样本、多个负样本”。对于同一个用户模型会看到一个正样本和K个负样本。损失函数会让模型给正样本的打分不仅高于每一个负样本而且要显著地高以至于在softmax后正样本的概率接近1。优缺点优点最符合实际业务目标直接优化整个列表的排序质量能学习到更精细的全局排序关系。缺点计算复杂度高特别是负样本很多时工程实现更复杂对负样本采样策略敏感。总结对比这种模型的典型结构是输入侧用户特征ID、离散特征、连续特征和物品特征ID、离散特征、连续特征不分开处理处理方式将所有特征拼接Concatenate在一起网络结构通过一个统一的深度神经网络进行特征变换输出直接预估用户对物品的兴趣分数CTR/CVR等这就是典型的 DeepFM、DIN、DIEN 等排序模型的架构。双塔产出的是用户向量和物品向量可以用FAISS等引擎进行高效的相似度搜索端到端模型产出的是标量分数要找到Top-K只能全量计算排序无法利用ANN最近邻加速这就是为什么工业界的召回系统几乎都采用双塔架构或类似的双编码器架构而把复杂的端到端模型留给排序阶段。这两种模型不是竞争关系而是互补关系共同构成推荐系统的完整流水线召回双塔大海捞针海量→千级排序端到端精挑细选千级→百级7 双塔模型正负样本困难指的是在当前的模型看来这些负样本和正样本的相似度很高模型容易把它们误判为正样本。8 双塔模型 线上召回和更新9 双塔模型自监督学习1特征变换RandomMask2特征变换Dropout3特征变换互补特征4特征变换Mask一组关联的特征、10 Deep Retrieval为什么要引入 Path核心逻辑如果直接从千万级的商品库里找 Item计算压力很大。 path 通常代表一个层次化的索引结构比如 TDM 树、类目树或某种聚类路径。例子 假设路径是 [运动 - 跑步 - 跑鞋]。Beam Search 的作用 模型不是直接预测商品而是先预测用户可能喜欢“运动”再在“运动”下预测“跑步”最后定位到“跑鞋”这个路径节点。这比直接从 100 万个商品里选 1 个人要快得多。“一条路径上不能有过多的物品”。这是为了防止长尾效应。如果 90% 的物品都挤在一条路径下第一步的 Beam Search 就失去了过滤意义还是得处理海量物品。11 其他召回通道GeoHash 是一种将地理位置经纬度编码成短字符串的方法。它不是召回算法本身而是为基于位置的召回提供了一种高效的索引方式。核心思想将二维的经纬度转换为一维的字符串编码原理简单理解将地球划分为网格每个网格对应一个字符串编码字符串越长表示的网格越小精度越高12 曝光过滤BloomFilter