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

TensorFlow Recommenders多任务学习指南:同时优化多个推荐目标

TensorFlow Recommenders多任务学习指南同时优化多个推荐目标【免费下载链接】recommendersTensorFlow Recommenders is a library for building recommender system models using TensorFlow.项目地址: https://gitcode.com/gh_mirrors/rec/recommendersTensorFlow Recommenders是一个使用TensorFlow构建推荐系统模型的库多任务学习是其强大功能之一能够帮助开发者同时优化多个推荐目标提升推荐系统的整体性能。为什么选择多任务学习在实际的推荐系统应用中往往存在多种丰富的用户反馈信号。例如电商平台可能会记录用户对商品页面的访问数量多但信号相对较弱、图片点击、加入购物车以及最终的购买行为甚至还包括购买后的评价和退货等信号。整合所有这些不同形式的反馈对于构建用户喜爱的系统至关重要这样可以避免系统为了优化某一个指标而牺牲整体性能。此外为多个任务构建联合模型可能比构建多个特定任务模型产生更好的结果。特别是当某些数据丰富如点击而某些数据稀疏如购买、退货、手动评价时联合模型可以通过迁移学习利用从数据丰富任务中学习到的表示来改进对数据稀疏任务的预测。多任务模型的关键组成部分多任务推荐系统有两个关键部分一是优化两个或多个目标因此有两个或多个损失二是在任务之间共享变量实现迁移学习。在本指南中我们将构建一个同时预测评分和电影观看情况的多任务模型。共享的用户和电影模型用户和电影模型与单任务模型类似通过嵌入层将用户ID和电影标题转换为嵌入向量user_model tf.keras.Sequential([ tf.keras.layers.StringLookup( vocabularyunique_user_ids, mask_tokenNone), # 考虑未知标记我们加1 tf.keras.layers.Embedding(len(unique_user_ids) 1, embedding_dimension) ]) movie_model tf.keras.Sequential([ tf.keras.layers.StringLookup( vocabularyunique_movie_titles, mask_tokenNone), tf.keras.layers.Embedding(len(unique_movie_titles) 1, embedding_dimension) ])多个任务定义第一个任务是评分任务目标是尽可能准确地预测评分tfrs.tasks.Ranking( losstf.keras.losses.MeanSquaredError(), metrics[tf.keras.metrics.RootMeanSquaredError()], )第二个是检索任务目标是预测用户会观看哪些电影tfrs.tasks.Retrieval( metricstfrs.metrics.FactorizedTopK( candidatesmovies.batch(128) ) )构建多任务模型模型架构图多任务推荐模型并行结构示意图展示了交叉网络和深度网络如何协同工作我们将所有组件整合到一个模型类中。由于有两个任务和两个损失需要确定每个损失的重要性通过为每个损失分配权重并将这些权重视为超参数。class MovielensModel(tfrs.models.Model): def __init__(self, rating_weight: float, retrieval_weight: float) - None: super().__init__() embedding_dimension 32 # 用户和电影模型 self.movie_model: tf.keras.layers.Layer tf.keras.Sequential([ tf.keras.layers.StringLookup( vocabularyunique_movie_titles, mask_tokenNone), tf.keras.layers.Embedding(len(unique_movie_titles) 1, embedding_dimension) ]) self.user_model: tf.keras.layers.Layer tf.keras.Sequential([ tf.keras.layers.StringLookup( vocabularyunique_user_ids, mask_tokenNone), tf.keras.layers.Embedding(len(unique_user_ids) 1, embedding_dimension) ]) # 用于预测评分的小型模型 self.rating_model tf.keras.Sequential([ tf.keras.layers.Dense(256, activationrelu), tf.keras.layers.Dense(128, activationrelu), tf.keras.layers.Dense(1), ]) # 任务定义 self.rating_task: tf.keras.layers.Layer tfrs.tasks.Ranking( losstf.keras.losses.MeanSquaredError(), metrics[tf.keras.metrics.RootMeanSquaredError()], ) self.retrieval_task: tf.keras.layers.Layer tfrs.tasks.Retrieval( metricstfrs.metrics.FactorizedTopK( candidatesmovies.batch(128).map(self.movie_model) ) ) # 损失权重 self.rating_weight rating_weight self.retrieval_weight retrieval_weight def call(self, features: Dict[Text, tf.Tensor]) - tf.Tensor: user_embeddings self.user_model(features[user_id]) movie_embeddings self.movie_model(features[movie_title]) return ( user_embeddings, movie_embeddings, self.rating_model( tf.concat([user_embeddings, movie_embeddings], axis1) ), ) def compute_loss(self, features: Dict[Text, tf.Tensor], trainingFalse) - tf.Tensor: ratings features.pop(user_rating) user_embeddings, movie_embeddings, rating_predictions self(features) # 计算每个任务的损失 rating_loss self.rating_task( labelsratings, predictionsrating_predictions, ) retrieval_loss self.retrieval_task(user_embeddings, movie_embeddings) # 使用损失权重组合它们 return (self.rating_weight * rating_loss self.retrieval_weight * retrieval_loss)特征交叉的重要性图特征交叉过程示意图展示了输入特征如何通过交叉操作生成更有意义的特征表示在多任务模型中特征交叉扮演着重要角色。如上图所示特征交叉通过将不同的输入特征进行组合能够捕捉到特征之间的交互关系生成更有表现力的特征表示从而提升模型对多个任务的预测能力。训练不同权重的多任务模型评分专用模型首先尝试一个只考虑评分的模型将评分权重设为1.0检索权重设为0.0model MovielensModel(rating_weight1.0, retrieval_weight0.0) model.compile(optimizertf.keras.optimizers.Adagrad(0.1)) model.fit(cached_train, epochs3)该模型在预测评分方面表现尚可RMSE约为1.11但在预测哪些电影会被观看方面表现不佳其top-100准确率几乎比专门训练用于预测观看情况的模型差4倍。检索专用模型接着尝试一个专注于检索的模型将评分权重设为0.0检索权重设为1.0model MovielensModel(rating_weight0.0, retrieval_weight1.0) model.compile(optimizertf.keras.optimizers.Adagrad(0.1)) model.fit(cached_train, epochs3)得到了相反的结果模型在检索方面表现良好但在预测评分方面表现不佳。联合模型最后训练一个为两个任务都分配正权重的模型model MovielensModel(rating_weight1.0, retrieval_weight1.0) model.compile(optimizertf.keras.optimizers.Adagrad(0.1)) model.fit(cached_train, epochs3)结果是一个在两个任务上都表现得与每个专用模型大致相同的模型。使用多任务模型进行预测我们可以使用训练好的多任务模型来获取训练后的用户和电影嵌入以及预测的评分trained_movie_embeddings, trained_user_embeddings, predicted_rating model({ user_id: np.array([42]), movie_title: np.array([Dances with Wolves (1990)]) }) print(Predicted rating:) print(predicted_rating)虽然在这个案例中联合模型没有显示出明显的准确性优势但多任务学习通常是一个极其有用的工具。当我们能够将知识从数据丰富的任务如点击转移到密切相关的数据稀疏任务如购买时我们可以期待更好的结果。快速开始多任务推荐如果你想快速开始使用TensorFlow Recommenders构建多任务推荐系统可以参考项目中的官方示例docs/examples/multitask.ipynb。通过这个示例你可以亲身体验多任务学习在推荐系统中的应用。首先你需要克隆仓库git clone https://gitcode.com/gh_mirrors/rec/recommenders然后按照示例中的步骤进行操作探索多任务学习的魅力构建更强大的推荐系统 【免费下载链接】recommendersTensorFlow Recommenders is a library for building recommender system models using TensorFlow.项目地址: https://gitcode.com/gh_mirrors/rec/recommenders创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

TensorFlow Recommenders多任务学习指南:同时优化多个推荐目标

TensorFlow Recommenders多任务学习指南:同时优化多个推荐目标 【免费下载链接】recommenders TensorFlow Recommenders is a library for building recommender system models using TensorFlow. 项目地址: https://gitcode.com/gh_mirrors/rec/recommenders …...

5个步骤扩展Cookiecutter项目模板功能:打造专属插件系统

5个步骤扩展Cookiecutter项目模板功能:打造专属插件系统 【免费下载链接】cookiecutter A cross-platform command-line utility that creates projects from cookiecutters (project templates), e.g. Python package projects, C projects. 项目地址: https://g…...

中兴光猫终极管理指南:zteOnu一键开启工厂模式与永久Telnet的完整教程

中兴光猫终极管理指南:zteOnu一键开启工厂模式与永久Telnet的完整教程 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 中兴光猫是许多家庭和企业网络的核心设备&#xff0c…...

Awesome Diffusion Models in Medical Imaging:医学影像扩散模型完全入门指南

Awesome Diffusion Models in Medical Imaging:医学影像扩散模型完全入门指南 【免费下载链接】Awesome-Diffusion-Models-in-Medical-Imaging Diffusion Models in Medical Imaging (Published in Medical Image Analysis Journal) 项目地址: https://gitcode.co…...

利川乡村民宿:口碑驱动的选品与运营策略解析

利川乡村民宿:口碑驱动的选品与运营策略解析“‘利川乡村民宿的核心竞争力,从来不是装修多豪华,而是能否让游客真正享受清凉与安心’——这是利川乡村民宿行业的共识,但如何选到靠谱的民宿、理解其运营逻辑,却困扰着不…...

数据智能代理DATAMIND架构与实战解析

1. 项目概述DATAMIND这个项目名称本身就透露着浓厚的"数据智能"气息。作为一个长期混迹数据科学圈的老兵,我第一眼看到这个标题就意识到,这绝不是一个简单的数据分析工具,而是一个具备自主学习和决策能力的智能代理系统。这类系统正…...

以水胜刚,SAP HANA 开发里的柔弱之道

老子说「天下莫柔弱於水。而攻坚强者,莫之能胜。」这一句放到 SAP HANA 开发里,我会把它理解成一种很朴素的工程直觉,系统里真正强大的东西,往往不是堆得最厚的过程代码,不是最长的 SQLScript,不是最复杂的 Calculation View,也不是到处加索引、到处建中间表、到处写强制…...

抖音下载器完整指南:5分钟学会批量下载无水印抖音视频

抖音下载器完整指南:5分钟学会批量下载无水印抖音视频 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppo…...

LLM上下文工程化实践:从向量检索到智能问答的完整解决方案

1. 项目概述:从“上下文”到“工程化”的桥梁 如果你是一名AI应用开发者,或者正在尝试将大语言模型(LLM)集成到你的产品中,那么“上下文管理”这个词对你来说一定不陌生,甚至可能是一个痛点。我们常常会遇到…...

算法题(173):枚举排列

审题: 本题需要我们找出所有排列方式并按照字典序排序输出 思路: 方法一:dfs深度优先搜索 由于最后还需要我们按照字典序输出,且无法事先确定需要的for循环层数,所以我们这里不能采用简单的for循环解决 决策树&#xf…...

浏览器沙箱环境构建:安全执行与结构化回显的实现原理

1. 项目概述:一个浏览器内的指令回显工具最近在折腾一些前端自动化测试和交互原型开发时,我常常遇到一个需求:需要快速验证浏览器环境下的指令执行结果,或者想直观地看到某个JavaScript API在特定上下文中的行为。手动打开控制台敲…...

算法题(172):组合型枚举

审题: 本题需要我们对1到n的数进行n中取m的组合枚举,找到所有不同的组合并按照字典序输出,要求行内和行间都满足字典序 思路: 本题我们采用枚举的方法,但是用for循环暴力枚举会有两个大问题 其一是无法确定for循环个数…...

从零到千档:AXOrderBook如何重塑A股市场深度洞察

从零到千档:AXOrderBook如何重塑A股市场深度洞察 【免费下载链接】AXOrderBook A股订单簿工具,使用逐笔行情进行订单簿重建、千档快照发布、各档委托队列展示等,包括python模型和FPGA HLS实现。 项目地址: https://gitcode.com/gh_mirrors/…...

树莓派4B与STM32串口通信保姆级教程:从GPIO引脚连接到minicom调试全流程

树莓派4B与STM32串口通信全流程实战指南 引言 嵌入式开发中,串口通信是最基础也最关键的技能之一。作为初学者,你可能已经听说过树莓派和STM32这两个名字——前者是当下最受欢迎的单板计算机,后者则是嵌入式领域广泛使用的微控制器。将它们通…...

AISMM白皮书深度拆解:5大核心模块、87个评估维度、23个典型误用陷阱——一线架构师手把手带你避坑

更多请点击: https://intelliparadigm.com 第一章:2026奇点智能技术大会:AISMM白皮书下载 2026奇点智能技术大会(Singularity Intelligence Summit 2026)正式发布《AI System Maturity Model(AISMM&#…...

暗黑破坏神2重制版自动化刷宝终极指南:Botty像素级智能助手全解析

暗黑破坏神2重制版自动化刷宝终极指南:Botty像素级智能助手全解析 【免费下载链接】botty D2R Pixel Bot 项目地址: https://gitcode.com/gh_mirrors/bo/botty 想要在《暗黑破坏神2重制版》中解放双手,实现高效自动刷宝吗?Botty作为一…...

Vue3+TypeScript在线演示文稿编辑器的技术实现深度解析

Vue3TypeScript在线演示文稿编辑器的技术实现深度解析 【免费下载链接】PPTist PowerPoint-ist(/pauəpɔintist/), An online presentation application that replicates most of the commonly used features of MS PowerPoint, allowing for the editi…...

艾体宝洞察|面向 Agentic AI 场景:基于原生多模型架构构建“统一上下文层”

随着大语言模型(LLM)能力的演进,AI 应用的开发正在从单轮问答式的 RAG(检索增强生成),向具备长程规划与工具调用能力的智能体(AI Agent)架构迁移。 然而,从工程实践的角度…...

Docker网络延迟高达400ms?用eBPF+量子调度模型实时诊断,3分钟定位瓶颈

更多请点击: https://intelliparadigm.com 第一章:Docker网络延迟的量子化认知革命 传统网络性能分析常将延迟视为连续可微的宏观量,而 Docker 容器间通信却在内核网络栈、cgroup 限流、iptables 规则与 veth pair 驱动层叠作用下&#xff0…...

如何快速安装和配置QLMarkdown:新手入门教程

如何快速安装和配置QLMarkdown:新手入门教程 【免费下载链接】QLMarkdown macOS Quick Look extension for Markdown files. 项目地址: https://gitcode.com/gh_mirrors/qlm/QLMarkdown QLMarkdown是一款专为macOS设计的Quick Look扩展工具,能帮助…...

终极Photoshop纹理压缩指南:Intel Texture Works插件完整使用教程

终极Photoshop纹理压缩指南:Intel Texture Works插件完整使用教程 【免费下载链接】Intel-Texture-Works-Plugin Intel has extended Photoshop* to take advantage of the latest image compression methods (BCn/DXT) via plugin. The purpose of this plugin is …...

Miku-LuaProfiler安全性与稳定性:如何避免Hook导致的崩溃问题

Miku-LuaProfiler安全性与稳定性:如何避免Hook导致的崩溃问题 【免费下载链接】Miku-LuaProfiler 项目地址: https://gitcode.com/gh_mirrors/mi/Miku-LuaProfiler Miku-LuaProfiler是一款功能强大的Lua性能分析工具,通过Hook技术实现对Lua代码执…...

ied生命周期脚本执行机制:从安装到构建的完整流程

ied生命周期脚本执行机制:从安装到构建的完整流程 【免费下载链接】ied :package: Like npm, but faster - an alternative package manager for Node 项目地址: https://gitcode.com/gh_mirrors/ie/ied ied作为一款快速的Node.js替代包管理器,其…...

三步搞定B站4K视频下载:开源工具让大会员内容永久保存

三步搞定B站4K视频下载:开源工具让大会员内容永久保存 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 在数字内容消费日益…...

别再只查命令了!深入理解树莓派I2C通信,从驱动到应用层玩转DS3231 RTC模块

树莓派I2C通信深度解析:从DS3231驱动到Python寄存器级操作 树莓派作为嵌入式开发的明星平台,其I2C接口的灵活性和可扩展性一直备受开发者青睐。但大多数教程仅停留在基础命令操作层面,对于想真正掌握硬件交互本质的开发者来说,这远…...

如何快速创建Serverless项目:Cookiecutter模板的终极指南

如何快速创建Serverless项目:Cookiecutter模板的终极指南 【免费下载链接】cookiecutter A cross-platform command-line utility that creates projects from cookiecutters (project templates), e.g. Python package projects, C projects. 项目地址: https://…...

别再踩坑了!Windows下用Code::Blocks搭建LVGL模拟器(V9版)的完整避坑指南

Windows下用Code::Blocks搭建LVGL V9模拟器的完整避坑指南 最近在Windows平台上用Code::Blocks搭建LVGL V9模拟器时,发现网上大部分教程都是针对V8版本的,导致在文件系统访问环节频频踩坑。本文将分享我从环境准备到成功运行的全过程,特别是那…...

暗黑破坏神2存档编辑器:快速掌握免费角色与物品管理终极指南

暗黑破坏神2存档编辑器:快速掌握免费角色与物品管理终极指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor d2s-editor是一款功能强大的暗黑破坏神2游戏存档编辑工具,专为《暗黑破坏神2》经典版和重制版…...

Think3D框架:增强视觉语言模型的3D空间推理能力

1. 项目背景与核心价值最近在计算机视觉和自然语言处理的交叉领域,3D空间理解能力正成为新一代多模态模型的必备技能。Think3D框架的提出,恰好填补了当前视觉语言模型在三维场景理解方面的关键短板。传统视觉语言模型如CLIP、BLIP等在2D图像描述和问答任…...

Vimium备份策略:数据保护与恢复的终极指南

Vimium备份策略:数据保护与恢复的终极指南 【免费下载链接】vimium The hackers browser. 项目地址: https://gitcode.com/gh_mirrors/vi/vimium Vimium作为一款强大的浏览器扩展,为用户提供了类Vim的键盘控制体验,极大提升了浏览效率…...