news 2026/4/16 15:10:29

推荐系统中的Embedding技术:从Word2Vec到BERT

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
推荐系统中的Embedding技术:从Word2Vec到BERT

推荐系统中的Embedding技术:从Word2Vec到BERT

关键词:Embedding、推荐系统、Word2Vec、图神经网络(GNN)、BERT、向量空间、语义表征

摘要:在推荐系统中,“如何让计算机真正理解用户和物品的’内在联系’“是核心难题。Embedding技术通过将用户、商品、文本等离散对象转化为低维稠密向量,搭建了离散世界与数学模型之间的"翻译桥”。本文将从生活场景出发,用"给物品发数字身份证"的比喻,带您一步步理解Embedding的本质;通过"邻居推测法→社交圈分析→上下文大师"的技术演进主线,拆解Word2Vec、GNN、BERT等经典模型的核心逻辑;最后结合电商推荐实战案例,展示如何用Embedding让推荐系统"更懂你”。


背景介绍

目的和范围

推荐系统的核心目标是"猜你喜欢",但计算机只能处理数字,而用户点击记录、商品名称、评论这些信息都是离散的"符号"(如"用户A"、“商品X”)。如何让这些符号变成计算机能计算的"语言"?这就是Embedding技术的使命。本文将聚焦推荐系统中的Embedding技术,覆盖从基础原理(Word2Vec)到前沿进展(BERT)的全链条,帮助开发者理解技术演进逻辑与落地方法。

预期读者

  • 对推荐系统感兴趣的初级开发者(掌握Python基础即可)
  • 希望理解Embedding底层逻辑的算法工程师
  • 产品经理/运营(想了解"推荐系统为什么越来越准"的原理)

文档结构概述

本文将按照"问题引入→核心概念→技术演进→实战案例→未来趋势"的逻辑展开:先用"超市购物"场景引出Embedding的必要性;再用"数字身份证"比喻解释Embedding本质;接着通过"邻居推测法(Word2Vec)→社交圈分析(GNN)→上下文大师(BERT)"讲解技术发展;最后用电商推荐案例演示代码实现,总结未来方向。

术语表

  • Embedding(嵌入):将离散对象(如单词、用户ID)映射到低维连续向量的过程(类比:给每个对象发一张"数字身份证",包含其核心特征)
  • Word2Vec:经典的词向量生成模型,通过"看邻居猜单词"学习语义关系(类比:通过"苹果"“香蕉"总出现在"水果区”,推断它们是同类)
  • GNN(图神经网络):专门处理图结构数据的模型,通过"社交关系"学习节点特征(类比:通过"用户A关注了用户B,用户B买了商品X",推断用户A可能喜欢X)
  • BERT:基于双向Transformer的预训练模型,能捕捉上下文语义(类比:听到"苹果"时,根据前文是"手机"还是"水果"调整理解)

核心概念与联系

故事引入:超市里的"商品密码本"

假设你是超市经理,想做"猜你想买"的推荐屏。用户走到货架前,屏幕需要快速推荐可能购买的商品。但计算机不认识"牛奶""面包"这些词,只能处理数字。怎么办?

最初你用"编号法":牛奶=1,面包=2,鸡蛋=3…但问题来了:计算机只知道"1和2"是数字,不知道它们经常一起买(早餐组合)。后来你发现:总被一起买的商品,应该有"相似的数字特征"——比如牛奶和面包的向量更接近,牛奶和洗发水的向量离得远。于是你需要一个"商品密码本"(Embedding),把每个商品名翻译成一串数字(向量),让相似商品的向量在数学空间里"手拉手"。

这就是Embedding的核心:把离散符号变成有意义的数学向量,让计算机能通过向量间的距离(如余弦相似度)判断"是否相似"。

核心概念解释(像给小学生讲故事)

核心概念一:Embedding = 数字身份证

想象每个对象(用户、商品、单词)都有一张"数字身份证",上面不是姓名或ID,而是一串数字(比如[0.3, -0.8, 0.5])。这串数字是对象的"性格画像":

  • 商品A的向量里"早餐相关"维度值高,说明它常被当早餐买;
  • 用户B的向量里"科技产品"维度值高,说明他爱买手机电脑。

计算机通过比较两个向量的距离(比如用余弦相似度),就能判断"这两个对象是否相似"。就像看两个小朋友的"兴趣卡片":如果都喜欢足球和画画,卡片上的数字会更接近,计算机就知道他们可能有共同爱好。

核心概念二:Word2Vec = 邻居推测法

Word2Vec是最早的Embedding生成模型之一,它的思路很像"看邻居猜名字"。比如在句子"I love apples and bananas"里,“apples"的邻居是"love"和"and”,“bananas"的邻居是"and"和(可能的下一个词)。Word2Vec假设:相似的词会有相似的邻居,于是通过"给定中心词猜邻居”(Skip-gram)或"给定邻居猜中心词"(CBOW)的方式,训练出每个词的向量。

类比:老师让小朋友站成一圈,告诉小明"你左右的同学是小红和小刚",然后让小明猜自己是谁。反复练习后,小明(中心词)会逐渐明白:如果左右是"水果"类同学(邻居词),那自己可能也是"水果"。

核心概念三:BERT = 上下文理解大师

传统Embedding(如Word2Vec)有个问题:同一个词在不同上下文里意思不同。比如"苹果"在"我买了苹果手机"里是手机品牌,在"我吃了一个苹果"里是水果。Word2Vec会给"苹果"一个固定向量,但BERT能根据上下文动态调整。

BERT的秘诀是"双向注意力":它像一个认真的听众,听完整句话再理解每个词。比如看到"苹果"时,它会同时看前面的"手机"和后面的"15Pro",从而生成更准确的向量。就像小朋友听故事时,听到"小熊拿着____去钓鱼",会猜"水桶"而不是"蛋糕"——因为前后文提供了线索。

核心概念之间的关系(用小学生能理解的比喻)

  • Embedding与Word2Vec:Word2Vec是生成Embedding的"工具",就像用画笔(工具)给每个词画数字画像(Embedding)。
  • Word2Vec与BERT:Word2Vec是"固定画像师"(一个词只有一张画像),BERT是"动态画像师"(同一个词在不同故事里有不同画像)。
  • Embedding与推荐系统:Embedding是推荐系统的"翻译官",把用户点击记录、商品名称这些"人类语言"翻译成计算机能计算的"数字语言",让推荐算法能算出"用户可能喜欢什么"。

核心概念原理和架构的文本示意图

离散对象(用户/商品/单词) → Embedding模型(Word2Vec/GNN/BERT) → 低维稠密向量 → 推荐算法(计算相似度/排序)

Mermaid 流程图

渲染错误:Mermaid 渲染失败: Parse error on line 2: ... A[离散对象: 用户A/商品X/单词"苹果"] --> B[Embedding -----------------------^ Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', 'STADIUMEND', 'SUBROUTINEEND', 'PIPE', 'CYLINDEREND', 'DIAMOND_STOP', 'TAGEND', 'TRAPEND', 'INVTRAPEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got 'STR'

核心算法原理 & 具体操作步骤

1. Word2Vec:用"邻居推测"学Embedding

Word2Vec有两种模式:CBOW(连续词袋模型)和Skip-gram。这里以Skip-gram为例(更适合处理低频词)。

核心思想

假设每个词的含义由它的上下文(邻居词)决定。例如,在句子"我 喜欢 苹果 手机"中,“苹果"的上下文是"喜欢"和"手机”。模型通过"给定中心词,预测上下文词"来学习Embedding。

数学原理

目标是最大化中心词 ( w_c ) 生成上下文词 ( w_o ) 的概率:
max ⁡ θ ∏ t = 1 T ∏ − m ≤ j ≤ m , j ≠ 0 P ( w t + j ∣ w t ; θ ) \max_{\theta} \prod_{t=1}^T \prod_{-m \leq j \leq m, j \neq 0} P(w_{t+j} | w_t; \theta)θmaxt=1Tmjm,j=0P(wt+jwt;θ)
其中 ( m ) 是上下文窗口大小,( \theta ) 是模型参数(即Embedding向量)。

为了优化效率,实际中用**负采样(Negative Sampling)**替代softmax:只对正样本(真实上下文词)和几个负样本(随机选取的非上下文词)计算损失,降低计算量。

Python代码示例(用gensim库)
fromgensim.modelsimportWord2Vec# 假设我们有用户的点击序列(类似句子)click_sequences=[["用户A","商品1","商品2","商品3"
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 13:32:06

【游戏推荐】战国王朝 单机+联机 (Sengoku Dynasty)免安装中文版

类型: 可联机 链接:https://pan.quark.cn/s/4e51a837abc3 游戏简介 《战国王朝》是一款融合了开放世界RPG、城市建造和生活模拟以及生存元素的多题材游戏。在封建日本的动荡时期,建立并成为自己王朝的主宰。在第一或第三人称视角下独自作战…

作者头像 李华
网站建设 2026/4/16 13:30:21

Vue3+Pinia实战:从零搭建企业级后台管理系统的核心架构

第一部分:架构设计原则与技术选型依据企业级后台管理系统的核心需求分析企业级后台管理系统与普通Web应用存在本质差异,其核心需求可以归纳为四个维度:功能性需求、性能需求、安全需求和可维护性需求。功能性需求包括多模块集成、复杂数据交互…

作者头像 李华
网站建设 2026/4/16 13:44:12

Flink 自适应批执行(Adaptive Batch Execution)让 Batch 作业“边跑边优化”

1. 自适应批执行解决的核心痛点 传统静态计划的问题不在于优化器不聪明,而在于“信息不够”: 输入数据统计经常缺失或不准中间数据量和分布要等跑起来才知道Join 的两侧大小变化大,今天广播是神优化,明天可能直接 OOM并发度每天…

作者头像 李华
网站建设 2026/4/16 9:26:17

【总和拆分 + 双变量遍历】LCR_012_寻找数组的中心下标

求解代码 public int pivotIndex(int[] nums) {int leftSum 0;int rightSum 0;// 遍历数组&#xff0c;把所有元素的和存入 rightSum&#xff0c;// 此时 rightSum 是 “整个数组的和”for (int num : nums) {rightSum num;}for (int i 0; i < nums.length; i) {// 从总…

作者头像 李华
网站建设 2026/4/16 9:25:21

Flutter 三端应用实战:OpenHarmony “安全文本溢出处理调节器”

一、为何聚焦“文本溢出处理”&#xff1f;一个被忽视的体验断层点 在 OpenHarmony 应用开发中&#xff0c;文本溢出处理&#xff08;Text Overflow&#xff09; 是高频却高危的细节&#xff1a; ⚠️ TextOverflow.fade 真机渲染异常&#xff1a;手表端&#xff08;OH 3.2&am…

作者头像 李华
网站建设 2026/4/16 12:53:33

开题报告 简易移动端在线考试系统的设计与实现

目录 简易移动端在线考试系统的设计与实现介绍背景与意义核心功能模块技术实现方案创新点与难点预期成果 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 简易移动端在线考试系统的设计与实现介绍 背景与…

作者头像 李华