当前位置: 首页 > article >正文

一文看懂推荐系统:特征交叉02:从FM到DeepFM,看高阶特征交叉的演进之路

1. FM模型特征交叉的奠基者第一次接触FMFactorization Machines模型时我被它的简洁优雅震惊了。这个2010年提出的模型用现在眼光看依然充满智慧。它的核心思想很简单用向量内积代替交叉特征权重。听起来可能有点抽象我举个生活中的例子。想象你在经营一家电商平台要预测用户是否会购买某款手机。传统线性模型只会单独考虑用户年龄和手机价格这两个特征而FM会让这两个特征对话——年轻用户可能更关注性价比商务人士可能更看重高端机型。这种特征间的交互就是FM的魔法所在。具体实现上FM用了一个巧妙的数学技巧。传统二阶交叉需要存储一个巨大的权重矩阵U大小是特征数量的平方而FM将其分解为两个小矩阵V的乘积。这就好比把用户年龄×手机价格这个交叉项的权重拆解成用户年龄向量和手机价格向量的点积。参数数量瞬间从O(d²)降到O(kd)k通常远小于d。# FM模型的交叉项计算示例 def fm_cross_term(x, v): # x: 特征向量 [batch_size, num_features] # v: 隐向量矩阵 [num_features, embedding_size] inter1 torch.matmul(x, v) # [batch_size, embedding_size] inter2 torch.matmul(x*x, v*v) # 元素平方 [batch_size, embedding_size] return 0.5 * torch.sum(inter1*inter1 - inter2, dim1) # 交叉项但FM也有明显的天花板。我在实际项目中发现它只能捕捉显式的二阶交叉。就像两个人对话FM只能记录他们说了什么却听不懂话中的潜台词。当用户行为模式变得复杂比如短视频推荐中观看时长×点赞率×完播率的三阶关系FM就力不从心了。2. 工业界的困境当FM遇上复杂场景在小红书早期推荐系统中FM确实表现不俗。但随着业务复杂度提升我们逐渐发现了它的三大硬伤第一是特征组合的局限性。FM只能处理二阶交叉而真实场景中高阶特征组合往往包含关键信息。比如判断用户是否喜欢某款美妆产品可能需要同时考虑用户肤质×产品成分×季节×地域的四阶关系。第二是隐式交互的缺失。FM需要显式定义交叉特征但很多有价值的特征交互是隐式的。就像人类谈恋爱有时候说不清为什么喜欢一个人就是有种感觉对了——这种难以言喻的感觉正是深度神经网络擅长捕捉的。第三是稀疏场景的挑战。虽然FM通过分解降低了参数但在极端稀疏的特征组合上比如小众商品的长尾推荐它的泛化能力仍然有限。我们做过AB测试在小众品类推荐上FM的点击率比深度学习模型低了近30%。这些问题促使工业界寻找FM的接班人。有趣的是大家没有简单抛弃FM而是在它的基础上进行进化——就像智能手机没有淘汰触屏而是让触屏变得更智能。3. DeepFM当浅层遇见深度2017年提出的DeepFM模型完美诠释了站在巨人肩膀上创新这句话。它保留了FM的二阶交叉能力同时引入DNN进行高阶特征自动学习。这种浅层深度的架构我在多个项目中实测效果惊人。DeepFM的聪明之处在于双路并行FM部分继续处理显式的低阶特征交互DNN部分用多层神经网络挖掘隐式的高阶关系这就好比既有经验丰富的老兵FM把守关键要道又有敏锐的侦察兵DNN探索未知领域。两者共享同一个特征输入层确保信息的一致性。class DeepFM(nn.Module): def __init__(self, num_features, embedding_size): super().__init__() self.fm FMLayer() self.dnn nn.Sequential( nn.Linear(num_features*embedding_size, 256), nn.ReLU(), nn.Linear(256, 128) ) self.output nn.Linear(128 1, 1) # FM输出DNN输出 def forward(self, x): fm_out self.fm(x) dnn_out self.dnn(x.reshape(x.shape[0], -1)) return torch.sigmoid(self.output(torch.cat([fm_out, dnn_out], dim1)))在实际部署时我们发现几个关键点特征Embedding要共享FM和DNN必须使用相同的特征嵌入否则会导致特征空间不一致网络深度要适中通常3-4层DNN效果最好太深反而容易过拟合组合特征依然有用虽然DNN能自动学习交互但人工设计的强特征组合如用户性别×商品类别仍有提升4. 为什么FM思想永不过时虽然纯FM模型逐渐退出主流但它的设计理念仍在深刻影响推荐系统发展。我认为FM至少在三方面具有持久价值第一是参数效率的典范。FM用矩阵分解的思路降低参数量这种思想在现在的推荐模型如YouTube的双塔结构中依然常见。当工程师们为模型瘦身发愁时总会想起FM的智慧。第二是解释性的标杆。相比黑盒的深度模型FM的交叉权重相对可解释。在需要模型解释性的场景如金融风控FM的变体仍然活跃。第三是架构设计的启示。DeepFM的成功证明传统模型与深度网络可以优势互补。后来出现的xDeepFM、AutoInt等模型都是沿着这个方向继续探索。在最近的内容推荐项目中我们甚至发现一个有趣现象当引入用户实时行为序列后简单的FM组件反而比复杂网络更稳定。这可能是因为短期行为信号与静态特征的交叉更适合用低阶方式建模。

相关文章:

一文看懂推荐系统:特征交叉02:从FM到DeepFM,看高阶特征交叉的演进之路

1. FM模型:特征交叉的奠基者 第一次接触FM(Factorization Machines)模型时,我被它的简洁优雅震惊了。这个2010年提出的模型,用现在眼光看依然充满智慧。它的核心思想很简单:用向量内积代替交叉特征权重。听…...

终极指南:3个简单技巧让你的终端颜值翻倍,告别混乱命令提示

终极指南:3个简单技巧让你的终端颜值翻倍,告别混乱命令提示 【免费下载链接】oh-my-posh JanDeDobbeleer/oh-my-posh: Oh My Posh 是一个跨平台的终端定制工具,用于增强 PowerShell、Zsh 和 Fish Shell 等终端的视觉效果,提供丰富…...

LFM2.5-1.2B-Thinking-GGUF镜像免配置:内置模型+运行时+UI,真正零依赖开箱即用

LFM2.5-1.2B-Thinking-GGUF镜像免配置:内置模型运行时UI,真正零依赖开箱即用 1. 平台简介 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,专为低资源环境优化设计。这个镜像的最大特点是完全免配置,内置了GGUF…...

嵌入式驱动开发核心技术解析与面试要点

嵌入式驱动工程师面试技术要点解析1. 中断处理与系统稳定性1.1 中断处理最佳实践在嵌入式驱动开发中,中断服务程序(ISR)的设计直接影响系统稳定性。典型的中断处理应遵循以下原则:最小化原则:ISR应尽可能简短,仅处理最紧急的任务无…...

OneAPI国产信创适配:麒麟V10+统信UOS操作系统部署验证

OneAPI国产信创适配:麒麟V10统信UOS操作系统部署验证 1. 引言 如果你正在国产信创环境下工作,比如使用麒麟V10或者统信UOS操作系统,想要接入各种大模型服务,可能会遇到一个头疼的问题:每个大模型厂商都有自己的API接…...

LoRa通信实战:手把手教你用Matlab仿真Chirp扩频信号(附完整代码)

LoRa通信实战:手把手教你用Matlab仿真Chirp扩频信号(附完整代码) 在物联网设备爆炸式增长的今天,低功耗广域网络(LPWAN)技术正成为连接万物的关键纽带。作为LPWAN的代表性技术之一,LoRa凭借其卓越的穿透能力和超远传输…...

Hearthstone-Script:3小时变3分钟!炉石传说自动化脚本完全指南

Hearthstone-Script:3小时变3分钟!炉石传说自动化脚本完全指南 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本)(2024.01.25停更至国服回归) 项目地址: https://gitcode.com/gh_mi…...

RPLibs原型设计元件库:多平台UI设计效率工具指南

RPLibs原型设计元件库:多平台UI设计效率工具指南 【免费下载链接】rplibs Refs.cn 原型设计元件库,基于Axure RP 10/9,支持 Android、Apple、Windows、微信,移动、桌面平台的应用和网站原型设计。六年历程 2.8k star,感…...

Keynote转PPT全攻略:Mac用户必知的5个高效技巧(含格式保留秘诀)

Keynote转PPT全攻略:Mac用户必知的5个高效技巧(含格式保留秘诀) 作为Mac用户,Keynote无疑是制作演示文稿的利器,其简洁的界面和强大的设计功能让创作过程变得轻松愉快。然而,当我们需要与使用Windows系统的…...

Unity游戏毕业设计论文实战指南:从原型开发到技术文档撰写

Unity游戏毕业设计论文实战指南:从原型开发到技术文档撰写 很多同学在做Unity毕业设计时,都会遇到一个尴尬的局面:游戏明明能跑起来,功能也实现了,但一到写论文、整理代码、解释设计思路的时候就卡壳了。要么是代码写得…...

【实战】Python+Bluez BLE广播开发:从零构建可被发现的自定义设备

1. 为什么需要自定义BLE广播设备 想象一下这样的场景:你走进一家智能家居体验店,手机立刻自动弹出了当前房间所有智能设备的控制面板。这种"无感连接"的体验背后,核心就是BLE广播技术。作为开发者,我们经常需要让硬件设…...

Step3-VL-10B-Base模型量化实战:GPU资源优化指南

Step3-VL-10B-Base模型量化实战:GPU资源优化指南 1. 量化技术入门:为什么我们需要模型量化? 当你面对一个像Step3-VL-10B-Base这样的大型视觉语言模型时,最直接的感受可能就是"吃资源"。模型越大,需要的GP…...

从像素到概念:如何用Python+OpenCV一步步提取图像的底层和高层特征

从像素到概念:PythonOpenCV实战图像特征提取全流程 引言:理解图像特征的层次性 当我们注视一张海滩照片时,视觉系统会经历从局部到整体的认知过程——首先捕捉海浪的纹理、沙粒的明暗,然后识别出遮阳伞、游泳者等独立物体&#xf…...

直播弹幕完整捕获:从实时互动到永久存档的技术实践

直播弹幕完整捕获:从实时互动到永久存档的技术实践 【免费下载链接】DouyinLiveRecorder 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveRecorder 当直播间的精彩瞬间转瞬即逝,那些充满灵感的弹幕互动也随之消失,你是否曾为…...

Linux 调度器中的远程抢占:smp_send_reschedule 的实现与应用

一、简介在现代多核处理器架构中,对称多处理(SMP, Symmetric Multi-Processing) 已成为服务器、桌面乃至移动设备的标准配置。Linux内核作为支持最广泛硬件平台的操作系统,其调度器必须高效地协调多个CPU核心上的任务分配&#xf…...

Subnautica Nitrox:在深海孤独中点亮协作的灯塔

Subnautica Nitrox:在深海孤独中点亮协作的灯塔 【免费下载链接】Nitrox An open-source, multiplayer modification for the game Subnautica. 项目地址: https://gitcode.com/gh_mirrors/ni/Nitrox 当450米深的幽暗海水包裹着你的潜水服,周围只…...

Windows Defender Remover终极指南:高效移除系统防护的完整方案

Windows Defender Remover终极指南:高效移除系统防护的完整方案 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mi…...

小白也能懂!ERNIE-4.5-0.3B-PT部署实战:从环境配置到Web界面调用

小白也能懂!ERNIE-4.5-0.3B-PT部署实战:从环境配置到Web界面调用 1. 为什么选择ERNIE-4.5-0.3B-PT 如果你正在寻找一个既轻量又强大的中文文本生成模型,ERNIE-4.5-0.3B-PT绝对值得考虑。这个只有3亿参数的模型,在中文理解和生成…...

别再只用编码器了!用ROS的robot_localization包融合IMU与Odom,让你的Cartographer建图精度翻倍

突破SLAM精度瓶颈:robot_localization包在Cartographer中的实战优化指南 当你的移动机器人在长走廊环境中反复建图却始终无法对齐首尾时,当激光匹配在特征稀疏区域频繁出现定位跳变时,这些现象很可能源于单一编码器里程计的累积误差。本文将带…...

Flink项目实战篇 基于Flink的智慧交通实时预警系统(上)

1. 项目背景与核心需求 想象一下早晚高峰时段的城市主干道,密密麻麻的车流像蜗牛一样缓慢移动。交警指挥中心的大屏幕上,红色拥堵区域不断扩散,却无法快速定位问题根源。这正是传统交通管理面临的痛点——数据滞后和响应迟缓。而我们的智慧交…...

postgresql QueryWrapper left join

原生的 MyBatis-Plus QueryWrapper 不支持 LEFT JOIN。QueryWrapper 的设计初衷是用于单表的 CRUD 操作。它生成的 SQL 结构固定为 SELECT ... FROM table WHERE ...,无法直接生成 JOIN 子句。但是,如果你需要在 MyBatis-Plus 中实现联查(特别…...

零基础入门《Natural Language Processing with PyTorch》中文翻译项目手把手教程

零基础入门《Natural Language Processing with PyTorch》中文翻译项目手把手教程 【免费下载链接】nlp-pytorch-zh 《Natural Language Processing with PyTorch》中文翻译 项目地址: https://gitcode.com/gh_mirrors/nl/nlp-pytorch-zh 《Natural Language Processing…...

漏洞扫描系统毕业设计:基于任务队列与异步调度的效率优化实践

在计算机安全领域,漏洞扫描系统是评估网络资产安全性的重要工具。对于计算机专业的同学来说,将其作为毕业设计选题,既能综合运用网络、数据库、并发编程等知识,又能接触到安全领域的核心实践。然而,一个初版的扫描系统…...

从检测到理解:构建基于YOLOv5、DeepSORT与SlowFast的智能视频行为分析引擎

1. 为什么需要智能视频行为分析? 想象一下这样的场景:超市保安需要盯着几十个监控屏幕,试图从人群中找出可疑行为;幼儿园老师要时刻关注每个孩子的活动,防止意外发生。传统监控完全依赖人力,不仅效率低下&a…...

Citrix敦促用户修补允许未认证数据泄露的关键NetScaler漏洞

Citrix已发布安全更新,修复NetScaler ADC和NetScaler Gateway中的两个漏洞,其中包括一个可能被利用泄露应用程序敏感数据的关键缺陷。漏洞详情如下:CVE-2026-3055(CVSS评分:9.3)- 输入验证不足导致内存越界…...

【技术实践解析】SAM-Adapter:如何让“分割一切”模型在特定场景下表现更佳

1. 为什么需要SAM-Adapter? 当你第一次听说"分割一切"的SAM模型时,可能会觉得这简直是计算机视觉领域的"万能钥匙"。确实,Meta发布的Segment Anything Model(SAM)在通用图像分割任务上表现惊艳&am…...

nli-distilroberta-base惊艳效果:中英文混合句子对推理准确率超89.2%

nli-distilroberta-base惊艳效果:中英文混合句子对推理准确率超89.2% 1. 项目概述 nli-distilroberta-base是基于DistilRoBERTa模型的自然语言推理(NLI)Web服务,专门用于判断两个句子之间的逻辑关系。这个轻量级模型在保持高性能的同时,大幅…...

告别手动转录烦恼:BiliBiliCCSubtitle智能工具让视频字幕高效提取成为现实

告别手动转录烦恼:BiliBiliCCSubtitle智能工具让视频字幕高效提取成为现实 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 你是否曾在学习B站教程时&a…...

SpringBoot仓库管理系统毕设实战:从需求建模到高可用部署

最近在帮学弟学妹们看毕业设计,发现很多“仓库管理系统”项目虽然功能齐全,但代码结构混乱,像是把各种技术简单堆砌在一起,离“工程化”和“真实可用”还有不小距离。刚好我之前参与过一个类似的实战项目,今天就来聊聊…...

Ubuntu 20.04 下 COLMAP 编译安装:从 CUDA 架构到依赖冲突的避坑指南

1. 为什么选择源码编译COLMAP? 很多刚接触三维重建的朋友可能会问:为什么不用apt直接安装COLMAP?我在实际项目中发现,Ubuntu官方仓库的版本往往落后于GitHub主线版本2-3个迭代。比如当前Ubuntu 20.04仓库提供的是3.6版&#xff0c…...