返回博客列表

揭秘Embedding魔法

深入解析推荐系统中Embedding的原理、训练方法和应用场景,帮助读者理解这一核心技术。

2024-02-035 分钟阅读Yaron
#特征工程#深度学习#向量计算#内容推荐

揭秘Embedding魔法 (小白版)

你好呀!欢迎来到我们系列文档中最激动人心的部分!还记得上一篇里我们提到的那个给每个用户和物品制作的"能力雷达图"吗?它的学名叫Embedding(嵌入),是深度学习推荐系统的心脏和灵魂。今天,我们就把这个魔法彻底看个明白!

1. 为什么一个简单的ID编号不够用?

你可能会想,我给每个学生、每个课程都编一个号,比如"董云彰=54321","英语课=98765",不就行了吗?为什么非要搞个那么复杂的向量?

问得好!让我们想象一个场景:

模型看到"54321号学生"喜欢"98765号课程"。但一个新来的"54322号学生",模型对他一无所知,完全不知道该推荐什么。模型无法从"54321"和"54322"这两个光秃秃的数字上,看出这两个学生有任何相似之处。

ID编号的缺陷:它只是一个冰冷的代号,无法表达任何"内在含义"和"关联信息"。

而Embedding魔法,就是为了给这些冰冷的ID注入灵魂,让它们变得有血有肉,可比较,可分析。

2. Embedding到底是个啥?—— 超级升级版的"标签"

如果说"类别ID"是一个简单的标签(比如"你是862号,代表初一"),那Embedding就是一个超级无敌豪华版的标签。

它不再是一个孤零零的数字,而是一串数字组成的向量(Vector),也就是我们之前比喻的"能力雷达图"。

用户Embedding [0.1, -0.4, 0.8, 0.2]: 这串数字可能从不同维度描绘了这个用户:

  • 0.1 可能代表他的"理科偏好度"
  • -0.4 可能代表他的"文艺小清新指数"
  • 0.8 可能代表他的"学霸潜力值"
  • 0.2 可能代表他的"游戏宅属性"

(这些维度的具体含义是模型自己学习的,我们无法直接命名,但可以这么去理解。)

课程Embedding [-0.5, 0.2, 0.1, -0.7]: 同理,这串数字也从不同维度描绘了这个课程的特点。

有了这个"雷达图",我们就能做很多神奇的事情了!比如,要找到和"董云彰"同学品味最像的人,我们只需要在100万个学生里,找到那个"雷达图"形状和他最相似的人就行了!

3. 魔法揭秘:Embedding是如何产生的?

这个过程分为两步:一个简单的"动作"和一个神奇的"过程"。

动作:查表!就像查字典一样简单

从ID到Embedding向量的转换,动作本身极其朴素,就是查表。

模型内部有一张巨大无比的"Embedding总表",像一本字典。当user_id=54321进来时,模型就去翻这本字典的第54321页,把那一页上写着的一串数字(向量)抄下来,然后就把54321这个ID本身给忘了。

过程:学习!向量的意义是"悟"出来的

你肯定会问,这本"字典"里的内容是谁写的?

答案是:模型自己边学边写的! 这就是最神奇的地方。

一开始,胡写一通:在模型刚开始训练时,这本字典里的所有向量都是电脑随机生成的、乱七八糟的数字。

老师(数据)来纠错:我们把一条真实的用户行为数据(比如"董云彰同学购买了智慧空间英语课")喂给模型。

模型做"阅读理解":模型用它那本乱写的字典查出"董云彰"和"英语课"的向量,然后根据这两个向量算出一个匹配度,结果发现和"购买"这个事实对不上,预测错了!

悄悄修改字典:犯了错就要改正。模型会用一种叫"反向传播"的算法,回头把"董云彰"和"英语课"这两个词条在字典里的内容(也就是它们的向量)都稍微修改一点点,让它们俩的匹配度变得更高一些。

重复亿万次:把几百万、几千万条真实的用户行为数据,像老师一样,一遍又一遍地给模型做"阅读理解"和"纠错"。

最终,奇迹发生了!

经过亿万次"纠错"和"微调",这本字典里的内容变得意义非凡。那些经常被同一群人喜欢的课程,它们的向量会变得很像;那些品味相似的用户,他们的向量也会变得很像。

这就是Embedding的本质:一个起初毫无意义的随机向量,在海量数据的"锤炼"下,逐渐"领悟"和"吸收"了它所代表的那个ID的所有内涵,最终成为了一个精准的数学化身。