Embedding面试三连击:维度·距离·降维可视化!

今天直接上硬菜。面试官只要问Embedding,跑不出这三个方向:维度怎么定、距离怎么算、降维怎么画图。咱们不讲虚的,直接给答案、给理由、给操作。

第一击:维度——不是越大越好,也不是越小越香

面试常问: 你们Embedding维度设多少?为什么?

直接回答: 一般在64到512之间。推荐从128开始试。

为什么不是越大越好?

维度太高 → 向量稀疏,每个位置都“有点意思但又不确定”,模型容易记住噪音而不是规律(过拟合)。

计算慢、存储大,线上推理成本翻倍。

为什么不是越小越好?

维度太低 → 信息挤在一起,就像把一张高清图压成马赛克,物品/用户之间的差异表达不出来。

实践口诀:

数据量小就偏小(64~128),数据量大可以偏大(256~512)。

推荐系统里,物品量级10万以下,128一般够用。

进阶问题: 不同业务要不要不同维度?

答: 要。用户行为序列Embedding可以比物品Embedding维度低一些,因为用户兴趣本身就是模糊的,不需要太多精确维度。

第二击:距离——不要只背公式,要讲场景

面试常问: 你用什么距离?为什么不用余弦?

直接回答:

内积:适合未归一化的向量,也是很多双塔模型的默认选择。

余弦相似度:只看方向不看长度,适合用户兴趣强度差异很大的场景。

欧氏距离:要求向量归一化后使用,否则长度会干扰。

一句话记区别: www.187game.com.cn

你关心“方向是否一致” → 余弦

你关心“向量长度也有意义” → 内积

你做过L2归一化 → 三种基本等价

面试官最爱挖的坑:

你说用余弦,那为什么很多论文里写的是 dot product?

正确回答:

因为他们在计算余弦之前已经对向量做了 L2归一化。此时 dot(A,B) = cosine(A,B),而且内积计算更快。

避坑建议:

在面试里不要说“余弦永远最好”,而是说:

“我们业务里用户活跃度差异很大,用余弦可以避免高活跃用户‘因为向量长所以什么都相似’的问题。”

第三击:降维可视化——别只画图,要讲洞见

面试常问: 你怎么把高维Embedding画成二维图?发现了什么?

直接回答: 用 t-SNE 或 UMAP。UMAP更快,更适合百万级数据。

标准步骤(一句废话都没有):

随机抽样(比如每类最多500个点,否则图糊了)

统一做归一化(避免某些维度主导距离)

用UMAP降到2维

按标签(类目/价格段/活跃度)上色

面试官真正想问的是: 你从图里看出了什么业务问题?

三个常见发现(背下来直接说):

类别边界模糊 → 说明Embedding没学好,正负样本构造可能有问题。

出现明显离群点 → 数据异常或长尾物品学习不充分,可以考虑做频率截断。

同类不聚集 → 损失函数里margin或temperature需要调。

实操建议: www.687game.com.cn

可视化不是为了好看,是为了快速定 位bad case。看到哪个群体散成一片,就把它拉出来单独分析。

附赠:面试官追问最多的一个点

问: 降维后的距离还能代表原始空间的距离吗?

答: 不能严格代表。t-SNE和UMAP都会改变距离分布,它们只保留局部邻域关系。

所以:做聚类、召回评估时,永远用原始高维空间,不要用降维后的坐标。

总结三句话(方便你面试前默念)

维度:128起步,按数据量上下调。

距离:要归一化就随便选,不归一化就余弦或内积看场景。

可视化:UMAP快、能定位问题,但别用它做严格评测。

各位玩家,这三击接住了,面试Embedding基本就稳了。

没有一句废话,拿走直接用。

#我的求职进度条##求职遇到的搞笑事件##体制内上岸心路历程##担心入职之后被发现很菜怎么办##你收到了团子的OC了吗#
全部评论

相关推荐

昨天 13:25
门头沟学院 Java
点赞 评论 收藏
分享
留声唱片机:你没问问元宝让不让你入职腾讯?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务