实用指南:【第五章:计算机视觉-项目实战之推荐/广告系统】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”
区别是:
| 类别 | 输入 | 本质建模对象 | 适用场景 |
|---|---|---|---|
| i2i | item → item | 物品相似度 | 适合强序列场景 |
| u2i | user → item | 用户兴趣向量 | 个性化、用户中心推荐 |
u2i 的核心问题 = 如何构建 user embedding,并与 item embedding 匹配
因此,本节我们学习的三个模型可视为渐进关系:
| 模型 | 目标 |
|---|---|
| FM | 建立特征交互(user–item 特征点击概率) |
| DeepFM | 用深度学习增强特征建模能力 |
| Two-Tower(双塔召回) | 将 user 和 item 映射到同一向量空间,用向量相似度召回 |
最后落地到行业主流召回结构:
u_embedding → ANN 向量检索 → 召回 item topK
二、FM 原理讲解:特征交叉的精髓
FM(Factorization Machines)是点击率模型中最经典的特征交叉模型,公式非常关键:
解释:
| 项目 | 含义 |
|---|---|
| 偏置 | |
| 所有特征的一阶贡献 | |
| 所有特征对的二阶组合(FM的核心) |
在推荐系统中,FM特别适合表达:
| 特征交互示例 | 意义 |
|---|---|
| (用户性别, 类目) | 男性更喜欢数码 |
| (城市, 价格区间) | 一线城市偏高价位 |
优点:可解释性强、对稀疏特征友好
缺点:表达能力有限,不够深
三、DeepFM:FM + DNN 的强强联合
为提升建模能力,DeepFM提出结构:
→ FM(显式特征交叉)
Input →→ DNN(隐式高阶交叉)
输出 CTR / 点击概率:
优点: 可拟合复杂兴趣
行业事实:现在主流 CTR/召回模型仍由 DeepFM 演化而来
但 DeepFM仍不是召回最适合模型 —— 因为召回的核心是 向量相似,而不是概率排序
这就引出了工业界真正最常用的召回模型:
四、Two-Tower(召回双塔模型):工业主流 u2i之王
Two-Tower结构示意:
┌───────────────┐│ User Tower │ → user_embedding
user → │ DNN / MLP │└───────────────┘│ dot/cosine┌───────────────┐
item → │ Item Tower │ → item_embedding│ DNN / MLP │└───────────────┘
训练目标:
即:
拉近用户与正样本的向量
推开用户与负样本向量
推理阶段非常高效:
召回 = 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作为一款国内开发的办公软件,用确实好用,但是恶心也确实挺恶心的,就比如这个必须登录才能使用的功能,简直就是反人类。
操作:点击【登录】旁边的【设置】选择【配置和修复工具】然后点击【高级】功能定制:关闭…