实用指南:【第五章:计算机视觉-项目实战之推荐/广告系统】1.推荐系统基础与召回算法-(6)召回算法之u2i: FM、deepFM、召回双塔原理精讲与实战

news/2025/11/16 16:37:50/文章来源:https://www.cnblogs.com/tlnshuju/p/19228429

实用指南:【第五章:计算机视觉-项目实战之推荐/广告系统】1.推荐系统基础与召回算法-(6)召回算法之u2i: FM、deepFM、召回双塔原理精讲与实战

2025-11-16 16:34  tlnshuju  阅读(0)  评论(0)    收藏  举报

第五章:计算机视觉-项目实战之推荐/广告系统

第一部分:推荐系统基础与召回算法

第六节:召回算法之u2i: FM、deepFM、召回双塔原理精讲与实战


一、u2i召回简介:目标是“理解用户”

如果说上一节 i2i(item-to-item)召回的思想是:

“看你喜欢的内容,预测你还会喜欢什么相似内容”

那么 u2i(user-to-item)召回则换了角度:

“从用户特征出发,直接召回适合他的物品 embedding”

区别是:

类别输入本质建模对象适用场景
i2iitem → item物品相似度适合强序列场景
u2iuser → item用户兴趣向量个性化、用户中心推荐

u2i 的核心问题 = 如何构建 user embedding,并与 item embedding 匹配

因此,本节我们学习的三个模型可视为渐进关系:

模型目标
FM建立特征交互(user–item 特征点击概率)
DeepFM用深度学习增强特征建模能力
Two-Tower(双塔召回)将 user 和 item 映射到同一向量空间,用向量相似度召回

最后落地到行业主流召回结构:

u_embedding  →   ANN 向量检索   →   召回 item topK

二、FM 原理讲解:特征交叉的精髓

FM(Factorization Machines)是点击率模型中最经典的特征交叉模型,公式非常关键:

\hat{y} = w_0 + \sum_i w_i x_i + \sum_{i<j} \langle v_i, v_j\rangle x_i x_j

解释:

项目含义
w_0偏置
w_i x_i所有特征的一阶贡献
\langle v_i, v_j\rangle x_i x_j所有特征对的二阶组合(FM的核心)

在推荐系统中,FM特别适合表达:

特征交互示例意义
(用户性别, 类目)男性更喜欢数码
(城市, 价格区间)一线城市偏高价位

优点:可解释性强、对稀疏特征友好
缺点:表达能力有限,不够深


三、DeepFM:FM + DNN 的强强联合

为提升建模能力,DeepFM提出结构:

        →  FM(显式特征交叉)
Input  →→  DNN(隐式高阶交叉)

输出 CTR / 点击概率:

\hat{y} = \sigma(y_{FM} + y_{DNN})

优点: 可拟合复杂兴趣
行业事实:现在主流 CTR/召回模型仍由 DeepFM 演化而来

但 DeepFM仍不是召回最适合模型 —— 因为召回的核心是 向量相似,而不是概率排序

这就引出了工业界真正最常用的召回模型:


四、Two-Tower(召回双塔模型):工业主流 u2i之王

Two-Tower结构示意:

       ┌───────────────┐│ User Tower    │  →  user_embedding
user → │  DNN / MLP    │└───────────────┘│ dot/cosine┌───────────────┐
item → │ Item Tower    │  →  item_embedding│  DNN / MLP    │└───────────────┘

训练目标:

\max \ \text{cos}(u, i^+) - \text{cos}(u, i^-)

即:

  • 拉近用户与正样本的向量

  • 推开用户与负样本向量

推理阶段非常高效:

召回 = ANN( user_embedding ) → topK item

优点(工程面试要点)

优点解释
召回高效向量检索 O(logN),适配 Milvus / Faiss
冷启动友好靠特征而非行为
可扩展可插入 Transformer、注意力、多兴趣网络

五、双塔召回完整实战代码(可直接运行)

import torch
import torch.nn as nn
import torch.nn.functional as F
class TwoTowerModel(nn.Module):def __init__(self, user_dim, item_dim, embed_dim):super().__init__()self.user_tower = nn.Sequential(nn.Linear(user_dim, 128),nn.ReLU(),nn.Linear(128, embed_dim))self.item_tower = nn.Sequential(nn.Linear(item_dim, 128),nn.ReLU(),nn.Linear(128, embed_dim))def forward(self, user, item):u = F.normalize(self.user_tower(user))i = F.normalize(self.item_tower(item))score = torch.sum(u * i, dim=-1)return score

训练损失采用 对比损失 / 负样本采样 NCE

loss = - torch.log_softmax(pos_score - neg_score, dim=-1).mean()

六、本节总结

模型在召回的作用
FM做特征交互
DeepFM提升模型表达能力
Two-Tower真正用于 ANN 向量召回(工业主流)

一句话总结:

i2i学相似,u2i学兴趣 — i2i补召回覆盖,u2i做主召回路径,双塔是工业标准

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/967182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微前端架构演进:决策、实践与协同

第一部分:引入微前端的决策过程 1. 业务与团队背景: OMNIEYE平台并非一开始就采用微前端。它最初是一个单体Vue 2应用。随着业务飞速发展,我们面临了典型的“前端巨石应用”问题:团队协作瓶颈:多个功能团队(数据…

OI 技术动作 注意事项集合

OI 技术动作 & 注意事项集合 底板:NOIP 注意事项梳理 by Cindy_Li 2024.11 参考:OI 赛制比赛 emergency kit by Qingyu 感谢 @R_shuffle @fnoihzhyan 提供大量建设性意见。 本文可能不够详细,但写的都是笔者认为…

Java 设计模式—— 责任链模式:从原理到 SpringBoot 最优搭建

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

大模型基础补全计划(七)---Transformer(多头注意力、自注意力、位置编码)及实例与测试

大模型基础补全计划(七)---Transformer(多头注意力、自注意力、位置编码)及实例与测试PS:要转载请注明出处,本人版权所有。 PS: 这个只是基于《我自己》的理解, 如果和你的原则及想法相冲突,请谅解,勿喷。环境说明…

京东商品详情接口终极突破:从多接口联动解析到数据全息重构

京东商品详情接口长期以来以 “数据碎片化、签名动态化、反爬层叠化” 著称,常规采集方案往往因单一接口依赖导致数据缺失或请求封禁。本文跳出 “单接口模拟” 的固化思维,通过逆向商品详情页的完整数据链路,实现 …

实用指南:On-Page SEO完全指南:从关键词策略到内容优化

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年品质卓越的羊毛地毯品牌综合推荐与选购指南

摘要 随着家居品质需求的不断提升,2025年羊毛地毯行业迎来新一轮消费升级。现代消费者不仅关注产品美观度,更重视环保属性、工艺水准与文化内涵。据统计,中国高端手工地毯市场规模较去年增长23.6%,其中天然植物染色…

2025年品质卓越的羊毛地毯工厂综合推荐与选择指南

摘要 随着家居装饰行业的消费升级,手工羊毛地毯市场在2025年迎来新一轮增长期。消费者对地毯的品质、环保性和设计美感要求显著提升,推动行业向高端化、个性化方向发展。本文基于市场调研和用户口碑,为您精选十家品…

20232415 2025-2026-1 《网络与系统攻防技术》 实验五实验报告

一、实验内容 1.1DNS 域名与 IP 关联信息搜集:从指定 3 个域名中任选其一,运用 whois、dig、nslookup、traceroute、tracert 及在线工具,获取 DNS 注册人及联系方式、域名对应 IP 地址、IP 注册人及联系方式、IP 所…

CSP2025反思——于诗涵

2025CSP反思——于诗涵 通过本次比赛,让我对自己的不足有了更加深刻的了解,总结出了以下几点: J组:100+100+45+64=309 1.对比去年的成绩,我有了显著的提升,也吸取了去年因为打错变量等各种原因在简单题上丢了很多…

接雨水算法全解析:从错误到3种最优解法(含扩展与思路Trigger)

接雨水算法全解析:从错误到3种最优解法(含扩展与思路Trigger)接雨水问题是数组类算法的经典“拦路虎”——既考察对“凹陷容量计算”的本质理解,又要求灵活运用单调栈、双指针等数据结构/技巧。本文将从最常见的错…

详细介绍:Android APK签名机制的工作原理、结构差异、安全局限与优势

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Java位运算符概览

运算符名称描述示例& 按位与 两个操作数对应位都为1时结果为1 5 & 3 = 1| 按位或 两个操作数对应位有一个为1时结果为1 5 | 3 = 7^ 按位异或 两个操作数对应位不同时结果为1 5 ^ 3 = 6~ 按位取反 操作数的每位…

C#性能优化基础:高CPU使用率(trace)

接上一篇:C#性能优化基础:内存诊断(dump)内存说完了,另外一个C#性能优化需要关注的点就是高CPU使用率了,所谓高CPU使用率,其实就是程序在执行大量的计算,这些计算也许是正常的,也可能是异常,比如死循环、多线…

详细介绍:Linux Bash(一)

详细介绍:Linux Bash(一)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &…

做一个简单的贪吃蛇游戏

简单 C++ 贪吃蛇游戏(控制台版) 基于控制台实现的贪吃蛇游戏,核心功能包括:方向控制、食物生成、碰撞检测、分数统计,适合新手学习循环、数组、逻辑控制的实战案例。 开发环境 编译器:支持 C++11 及以上(Dev-C+…

pytest测试range内置函数

pytest测试range内置函数点击查看代码 import pytest# ------------------------------ # 一、基础操作:正序序列测试用例 # ------------------------------ @pytest.mark.parametrize("start, end, step, expe…

WPS---功能设置

WPS作为一款国内开发的办公软件,用确实好用,但是恶心也确实挺恶心的,就比如这个必须登录才能使用的功能,简直就是反人类。 操作:点击【登录】旁边的【设置】选择【配置和修复工具】然后点击【高级】功能定制:关闭…

自动化测大样例

省流: for((i=1;i<=10;i++)) do g++ T1.cpp -std=c++14 -Wall -Wextra -O a.exe cp ex_edit$i.in edit.in ./a.exe diff -s -Z ex_edit$i.ans edit.out done#include<bits/stdc++.h> #include <unistd.h&…