【字节跳动】数据挖掘面试题0017:推荐算法:双塔模型,怎么把内容精准地推送给用户

文章大纲

  • 双塔模型:推荐算法中的“高效匹配引擎
    • 一、双塔模型的核心思想:“分而治之” 的匹配逻辑
    • 二、双塔模型的结构:从特征输入到相似度输出
      • 1. 输入层:特征的 “原材料处理”
      • 2. 塔网络层:用户与物品的“个性化编码”
      • 3. 交互层:向量相似度的“偏好打分”
    • 三、双塔模型的优势:为什么成为工业界首选?
      • 1. 高效支持大规模推荐
      • 2. 擅长处理稀疏与高维特征
      • 3. 工程部署友好
    • 四、工业界应用案例
    • 五、场景类比:披萨店精准推荐
      • 双塔模型本质: 两边分开学,最后比相似
      • Python精简实现(TensorFlow)
      • 精准推送的3个关键技巧
        • 1️⃣ 新顾客冷启动 → 用「元特征」猜喜好
        • 2️⃣ 老顾客精准推荐 → 抓住实时兴趣
        • 3️⃣ 避免信息茧房 → 强制多样性
      • 线上效果对比(真实A/B测试)
      • 面试常见三连问
        • Q1:双塔为什么比单塔好?
        • Q2:如何应对数据稀疏(比如小众口味)?
        • Q3:模型多久更新一次?
      • 一句话总结双塔精髓

在这里插入图片描述

双塔模型:推荐算法中的“高效匹配引擎

  • 在推荐系统领域,双塔模型(Two-Tower Model) 是一种被工业界广泛应用的深度学习架构,尤其在 大规模推荐场景中占据核心地位
  • 它以“用户塔”和“物品塔”的双网络结构为核心,通过将用户与物品映射到同一向量空间并计算相似度实现推荐,因高效、易部署的特点成为召回和粗排阶段的“标配”。
    在这里插入图片描述

一、双塔模型的核心思想:“分而治之” 的匹配逻辑

  • 推荐系统的本质是解决“用户-物品匹配”问题——即预测用户对物品的偏好程度。

  • 传统方法(如协同过滤、逻辑回归)在处理 海量用户/物品或高维稀疏特征时,常面临计算复杂、泛化能力弱 的问题。

  • 双塔模型的核心创新在于 “分离建模+向量匹配”

      1. 分离建模:将用户特征和物品特征通过两个独立的神经网络(“塔”)分别处理,避免用户与物品特征直接交互带来的 计算爆炸
      1. 向量匹配:将用户和物品分别映射到低维稠密的向量空间(称为“用户向量”和“物品向量”),通过向量相似度(如内积、余弦相似度)衡量用户对物品的偏好,简化匹配计算。

形象来说,双塔模型就像“红娘”:先分别深入了解“用户”(用户塔)和“物品”(物品塔)的特征,再通过两者的“性格匹配度”(向量相似度)决定是否推荐。

二、双塔模型的结构:从特征输入到相似度输出

双塔模型的结构可分为输入层、塔网络层、交互层三部分。

1. 输入层:特征的 “原材料处理”

输入层负责接收用户和物品的原始特征,并进行初步预处理。

  • 用户特征包括用户ID、 demographics(年龄、性别、地域)、行为历史(点击/购买物品ID序列)、设备信息(手机型号、系统)等
  • 物品特征:包括物品ID、类别(如“服装-上衣-T恤”)、属性(价格、品牌、标签)、内容特征(文本、图片 embedding)等。

这些特征可能是离散型(如ID、类别)或连续型(如价格、年龄),需通过嵌入层(Embedding Layer) 统一转换为低维稠密向量(离散特征通过查表映射,连续特征直接输入或分箱后嵌入)。

2. 塔网络层:用户与物品的“个性化编码”

“用户塔”和“物品塔”是两个独立的神经网络(通常为全连接网络,也可结合CNN、RNN、注意力机制等),负责将预处理后的特征转化为抽象的向量表示。

  • 用户塔:聚焦于“用户偏好建模”,例如通过RNN处理用户历史行为序列,捕捉用户的短期兴趣;通过全连接层融合 demographics 特征,捕捉长期偏好;
  • 物品塔:聚焦于“物品特性建模”,例如通过CNN提取物品图片特征,通过全连接层融合价格、品牌等属性,生成物品的“身份标签”向量。

3. 交互层:向量相似度的“偏好打分”

经过塔网络编码后,用户和物品分别得到固定维度的向量(如128维、256维),交互层通过相似度函数计算两者的匹配度,作为推荐分数。常用的相似度函数包括:

  • 内积(Dot Product):最常用,计算简单(用户向量 · 物品向量 = Σ(user_i * item_i));
  • 余弦相似度:归一化后的内积,消除向量模长影响(cosθ = (用户向量 · 物品向量) / (||用户向量||·||物品向量||));
  • 欧氏距离/曼哈顿距离:通过距离衡量相似性(距离越小越相似)。

最终输出的相似度分数越高,代表用户对物品的潜在偏好越强。

三、双塔模型的优势:为什么成为工业界首选?

双塔模型在推荐系统中被广泛应用(如电商、短视频、信息流),核心优势体现在以下方面:

1. 高效支持大规模推荐

  • 离线计算与在线检索分离:物品塔的向量可离线预计算并存储在向量数据库(如FAISS、Milvus)中,在线推荐时仅需实时计算用户向量,再通过向量检索快速召回TopN相似物品,避免实时计算所有用户-物品对的复杂度;
  • 可扩展性强:新增物品时仅需重新计算该物品的向量,无需更新整个模型,适合物品库动态变化的场景(如电商新品上架、短视频实时更新)。

2. 擅长处理稀疏与高维特征

用户和物品的特征(如ID、标签)往往是高维稀疏的(例如用户ID可能有10亿级),双塔模型通过嵌入层将稀疏特征压缩为低维稠密向量࿰

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

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

相关文章

7月14日日记

数学类今天考完最后一科英语放假回家了。有点羡慕他们。今天英语成绩出来了,我是89分,一开始有点失望,感觉没有上90,这是一个很好的冲击4.0 的机会。但是后来一想好像也没什么可惜的,这个分数还是很高的。舍友小林是90…

js的局部变量和全局变量

全局变量常常定义在函数外,具有全局定义域,在整个js代码的任何地方都可以使用,这个就叫全局变量局部变量定义在函数内部,只在当前函数的定义域可以被使用,而且不同的函数可以定义相同的局部变量,他们之间相…

C++ 多态详解:从概念到实现原理----《Hello C++ Wrold!》(14)--(C/C++)

文章目录前言多态的概念多态的定义和实现虚函数虚函数的重写(覆盖)多态的构成条件override 和 final(C11提出)finaloverride重载、覆盖(重写)、隐藏(重定义)的对比抽象类接口继承和实现继承多态的原理虚函数表(也叫做虚表)引申:虚表的打印多态的原理静态…

Node.js + Express的数据库AB View切换方案设计

方案总览数据导入过程: - 根据控制表判断当前活跃组(假设当前活跃的是a,那么接下来要导入到b)。 - 清空非活跃表(即b表)的数据,然后将新数据导入到b表。 - 切换控制表,将活…

C++_编程提升_temaplate模板_案例

类模板案例案例描述: 实现一个通用的数组类,要求如下:可以对内置数据类型以及自定义数据类型的数据进行存储将数组中的数据存储到堆区构造函数中可以传入数组的容量提供对应的拷贝构造函数以及operator防止浅拷贝问题提供尾插法和尾删法对数组中的数据进…

Win11系统安装Anaconda环境极简教程

Win11系统安装Anaconda环境极简教程 📥 第一步:下载 Anaconda 安装包 打开浏览器,访问 Anaconda 官网,选择View All Installers 选择所需版本(此文以2024.02-1为例),点击进行下载(…

Datawhale AI夏令营-基于带货视频评论的用户洞察挑战赛

一.赛事目标基于星火大模型Spark 4.0 Ultra,对视频和评论的数据进行商品识别,情感分析,归类分析,最终为带货效果进行评价。并通过优化模型来提高评价准确度二.赛事环境1.基础平台:星火大模型Spark 4.0 Ultra2.赛事数据…

如何基于FFMPEG 实现视频推拉流

文章目录 前言环境准备为什么选择 FFmpeg什么是nginx 1.7.11.3 GryphonNginx的conf配置启动nginx推流命令接收视频流Untiy播放视频流最后前言 我们经常会有在电脑上实现推拉流的需求,Unity 和Unreal 都提供了基于WebRTC 的视频流方案,效果还不错,但是当我们需要推拉整个电脑…

飞算JavaAI:从情绪价值到代码革命,智能合并项目与定制化开发新范式

目录一、飞算 JavaAI 是什么?二、飞算JavaAI:安装登录2.1 IDEA插件市场安装(推荐)2.2 离线安装包三、飞算JavaAI核心功能:一键生成完整工程代码功能背景3.1 理解需求3.2 设计接口3.3 表结构自动设计3.4 处理逻辑&#…

Python 基础语法与数据类型(十一) - 类 (class) 与对象 (实例)

文章目录1. 什么是类 (Class)?1.1 定义一个类2. 什么是对象 (Object) 或实例 (Instance)?2.1 创建对象(实例化)3. 访问属性和调用方法4. 类属性 vs 实例属性5. self 的重要性总结练习题练习题答案前几篇文章我们学习了变量、数据类…

精准数据检索+数据飞轮自驱优化,彩讯AI知识库助力企业知识赋能和效率创新

近两年,人工智能技术的精细化发展,让知识库概念重新成为“热门词汇”,腾讯ima等智能工作台产品为个人用户打造专属知识库,而面向B端市场,企业AI知识库也逐步成为企业集中存储与管理核心文档、数据、经验和流程的知识中…

打破空间边界!Nas-Cab用模块化设计重构个人存储逻辑

文章目录前言1. Windows安装Nas-Cab2. 本地局域网连接Nas-Cab3. 安装Cpolar内网穿透4. 固定Nas-Cab 公网地址"数据管理不该受制于硬件形态或地理边界。这个开源方案证明:当功能模块化且可扩展时,私有云可以像水一样渗透进所有设备——现在就去Git仓…

Sigma-Aldrich细胞培养基础知识:细胞培养的安全注意事项

细胞培养实验室风险评估风险评估的主要目的是防止人员受伤,保护财产,并避免对个人和环境的伤害。在许多国家,法律要求进行风险评估。例如,英国的《英国职业健康与安全法案(1974年)》就是一个例子。欧洲共同…

Imx6ull用网线与电脑连接

理解工作方式没有路由器时,可以使用,只要保持虚拟机的两个网卡一个与电脑在同一网,一个与板子在同一网段(保持通信)就可以从虚拟机往板子下载第一步:查看电脑连接的网络这一步是在找到主机ip地址这两步在其他同类教程里一样的第二步:设置以太…

力扣454.四数相加Ⅱ

给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a;0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0示例 1&#xff1a;输入&#xff1a;nums1 [1,2], nums2 …

Joplin:一款免费开源、功能强大且注重隐私的笔记软件

Joplin 是一款免费开源、功能强大且注重隐私的笔记和待办事项应用程序&#xff0c;它的设计目标是成为 Evernote 等流行笔记应用的强大替代品&#xff0c;尤其适合重视数据所有权和隐私的用户。 功能特性 Joplin 的核心定位与优势如下&#xff1a; 完全开源&#xff1a;代码公…

渗透前四天总结

目录 一.DNS DNS 基本概述 DNS解析过程 二.HTTPS TLS握手过程 RSA加密 对称加密&#xff1a; 非对称加密&#xff1a; RSA加密过程 三.使用xdebug调试php 四.信息收集 一.DNS DNS 基本概述 DNS&#xff1a;域名系统(DomainNameSystem)因特网的一项核心服务&#xf…

Python----NLP自然语言处理(中文分词器--jieba分词器)

一、介绍文本语料在输送给NLP模型前&#xff0c;需要一系列的预处理工作&#xff0c;才能符合模型输入的要求。对于NLP来说&#xff0c;他学习一篇人类书写的文章不是整体的来学习&#xff0c;而是一个词一个词的来学习。所以文本预处理的第一个步骤就是对文本进行分词处理。&a…

深入了解linux系统—— 进程信号的保存

信号 信号&#xff0c;什么是信号&#xff1f; 在现实生活中&#xff0c;闹钟&#xff0c;红绿灯&#xff0c;电话铃声等等&#xff1b;这些都是现实生活中的信号&#xff0c;当闹钟想起时&#xff0c;我就要起床&#xff1b;当电话铃声想起时&#xff0c;我就知道有人给我打电…

Redis 事务错误处理机制与开发应对策略

&#x1f4d8; Redis 事务错误处理机制与开发应对策略一、Redis 事务基础回顾 Redis 中的事务由以下三组命令构成&#xff1a;命令作用说明MULTI开始一个事务&#xff0c;进入命令入队模式命令集所有后续命令不会立即执行&#xff0c;而是入队等待提交EXEC提交事务&#xff0c;…