news 2026/5/8 18:02:56

推荐系统中的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/5/6 17:47:15

恶意代码演变:AI 生成的多态恶意软件与免杀技巧

⚠️ 免责声明 本文仅用于网络安全技术交流与学术研究。文中涉及的技术、代码和工具仅供安全从业者在获得合法授权的测试环境中使用。任何未经授权的攻击行为均属违法,读者需自行承担因不当使用本文内容而产生的一切法律责任。技术无罪,请将其用于正途。…

作者头像 李华
网站建设 2026/4/18 8:06:16

基于深度学习YOLO26算法的智慧电力与智慧工业钢缆缺陷检测 电缆散股检测钢丝绳断裂缺陷检测 深度学习图像识别第10463期

计算机视觉数据集说明 往期热门主题 主页搜两字"关键词"直达 代码数据获取: 获取方式:***文章底部卡片扫码获取***. 覆盖了YOLO相关项目、OpenCV项目、CNN项目等所有类别, 覆盖各类项目场景: 项目名称项目名称基于Y…

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

C++可变模板参数详细讲解

先给你一句终极人话(背下来,这就是全部)Args 你随便起的一个名字,跟 int a 里的 a 一样,想改成 ABC、Params、Shit 都行,没有任何魔法。... 只有两个功能:打包、拆包写在左边:...A…

作者头像 李华
网站建设 2026/4/23 14:42:33

【图像处理相关毕设选题选题指导】2026新颖优质选题推荐

目录 前言毕设选题更多帮助选题迷茫选题的重要性最后前言 📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说…

作者头像 李华
网站建设 2026/4/27 22:38:55

Redis快速实现布隆过滤器:缓存去重的“智能门卫”

在缓存架构中,总有一些“头疼问题”:用户反复提交相同请求、查询不存在的key导致缓存穿透、海量数据去重效率低下……这些场景下,Redis布隆过滤器就是当之无愧的“救星”。它像一个智能门卫,能快速判断“这个人是不是来过”“这个…

作者头像 李华