想象一位做了十年川菜的老厨师陈师傅,受邀去一家新开的粤菜馆当主厨。新店没有口碑、没有老顾客,就像刚上线的推荐系统——没有用户行为数据,算法无从下手。但陈师傅并不慌张:他在川菜馆练就的刀工、火候、食材判断,是任何菜系都通用的底层功力。他只需要弄清一件事:川菜的经验哪些能直接搬用,哪些要调整,哪些带了反而坏事。这正是跨域推荐的核心思想——把“源域”(如视频观看)学到的用户偏好,迁移到“目标域”(如商品购买)以破解冷启动难题。本文借“老厨师开新店”这个比喻贯穿始终,从迁移学习基础讲起,层层深入到域适配、特征对齐、负迁移规避,再到 EMCDR 落地实践,最后给出系统设计建议,带零基础读者看懂跨域推荐的技术全貌。

岗位关联

掌握跨域推荐,意味着你掌握了 AI 系统应对冷启动的“第二增长曲线”。对推荐算法工程师和 AI 产品经理而言,这是从“会用模型”走向“会做系统设计”的核心加分项。

目录
  1. 可视化演示
  2. 跨域推荐概述
  3. 迁移学习基础
  4. 域适配技术
  5. 特征映射方法
  6. 负迁移规避
  7. EMCDR实践
  8. 系统设计建议
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示跨域推荐架构(源域→映射→目标域)、EMCDR特征对齐方法与正负迁移AUC对比分析,支持模式切换。

本节配有交互动效(进入视口后自动加载,约 3KB)。

跨域推荐:源域知识迁移至目标域 源域数据丰富,目标域存在冷启动和数据稀疏问题 通过共享嵌入或映射函数实现跨域知识迁移 min L_tgt + λ·L_align(E_src, E_tgt) 重叠用户是跨域迁移的基础条件

跨域推荐概述

陈师傅在川菜馆掌勺十年,突然被请去一家新开业的粤菜馆当主厨。开业第一周,店里冷清得能听见蒸笼冒气的声音——没有口碑、没有老顾客,这跟推荐系统上线时的处境一模一样:没有用户行为数据,算法不知道该给用户推什么。这就是业界常说的冷启动困境。与此同时,即便积累了一部分用户数据,相对庞大的物品池来说仍然稀疏得可怜,模型很难学到可靠的偏好。

跨域推荐要做的,就是把陈师傅十年的川菜经验“搬”到新店:用户在数据丰富的领域(源域)留下的行为,可以用来推测他在数据稀少的领域(目标域)的偏好。比如用户爱看美食视频,可以推测他大概率喜欢买厨具。这种思路让冷启动不再是“从零开始”,而是“有底子地猜”。把这句话写成公式,目标域的评分预测可以统一表示为:

回看开头那个场景:陈师傅面对新顾客时,脑子里会同时调出川菜馆主顾们的口味记忆——那就是源域嵌入,再结合眼前这锅粤式靓汤——目标域物品嵌入,快速判断这道菜端上桌会不会受欢迎。跨域推荐干的,正是把这份“老师傅的判断力”变成数学模型。

r^u,i(t)=f(eu(s),ei(t);Θ)\displaystyle \hat{r}_{u,i}^{(t)} = f\left( \mathbf{e}_u^{(s)}, \mathbf{e}_i^{(t)}; \Theta \right)
解读:要预测用户 \(u\) 在目标域对物品 \(i\) 的评分,只需把用户在源域的嵌入向量 \(\mathbf{e}_u^{(s)}\) 和目标域物品嵌入 \(\mathbf{e}_i^{(t)}\) 一起喂给带参数 \(\Theta\) 的映射函数。
  1. 预测评分r^u,i(t)\hat{r}_{u,i}^{(t)} 表示用户 \(u\) 对目标域物品 \(i\) 的预测评分,数值越高代表推荐优先级越高,是整个模型的最终输出。
  2. 源域嵌入eu(s)\mathbf{e}_u^{(s)} 是用户 \(u\) 在源域中学习到的嵌入向量,蕴含用户在源域的行为偏好,为跨域推荐提供知识来源。
  3. 目标域物品嵌入ei(t)\mathbf{e}_i^{(t)} 是目标域中物品 \(i\) 的嵌入向量,由目标域有限数据训练得到,刻画物品自身的特征属性。
  4. 映射参数Θ\Theta 是跨域评分函数的可学习参数(如映射矩阵),训练目标是让预测评分逼近用户的真实反馈。

迁移学习基础

正式开工前,陈师傅拿出清单,盘点川菜馆积累的十八般武艺:刀工、火候、调味、摆盘、食材挑选……哪些能在粤菜馆直接上岗?这其实就是迁移学习最关心的问题:知识到底能不能跨领域使用。在术语上,我们把提供经验的领域叫作源域(Source Domain),把需要帮助的新领域叫作目标域(Target Domain)。两个域的分布通常并不相同:川菜口味偏重(源域分布),粤菜口味清淡(目标域分布)。

模型在目标域上的好坏,要用目标域的期望损失来衡量:

迁移学习在推荐场景中的分类方式主要有两种视角。按迁移内容分,有基于样本、特征、模型和关系的迁移;按学习场景分,有归纳式、直推式和无监督迁移。对推荐系统而言,最常用的是基于特征和基于模型的迁移——因为用户嵌入就是特征,矩阵分解就是模型,两者天然契合。

回到陈师傅的清单,他最终把技能归成三类:通用技法(刀工、火候)直接带;调味技巧需要兜个圈子再用;重油重辣的烹饪习惯则坚决封印。迁移学习做的事情一模一样——知识能不能迁移,取决于它是不是目标域真正通用的能力。

RT(h)=E(x,y)∼DT[ℓ(h(x),y)]\displaystyle \mathcal{R}_T(h) = \mathbb{E}_{(\mathbf{x}, y) \sim \mathcal{D}_T} \left[ \ell(h(\mathbf{x}), y) \right]
解读:把模型 \(h\) 对样本 \(x\) 的预测与真实值 \(y\) 的差距 \(\ell\) 在目标域分布 \(\mathcal{D}_T\) 上求平均,得到“平均犯错率”。
  1. 目标域风险RT(h)\mathcal{R}_T(h) 衡量模型 \(h\) 在目标域上的期望损失,数值越小代表模型在目标域表现越好,是迁移学习的优化目标。
  2. 期望算子E(x,y)∼DT\mathbb{E}_{(\mathbf{x},y)\sim\mathcal{D}_T} 表示对目标域数据分布 \(\mathcal{D}_T\) 抽样求平均,反映目标域所有样本的总体损失水平。
  3. 预测损失ℓ(h(x),y)\ell(h(\mathbf{x}), y) 是单样本的损失函数,比较模型预测值 \(h(\mathbf{x})\) 与真实标签 \(y\) 之间的差距。

域适配技术

陈师傅想做一道“粤式豆腐煲”,但满脑子都是麻婆豆腐的麻辣配方。他得先搞清楚:川式做法和粤式做法的差距到底有多大?再决定怎么下手。域适配(Domain Adaptation)解决的就是这个问题——量差距、想办法。

最经典的差距度量叫最大均值差异(Maximum Mean Discrepancy,MMD)。它的思路很朴素:把两个领域的样本都映射到一个高维空间,然后比一比两个分布的重心相差多远:

除了 MMD,业界还常用对抗域适配:训练一个判别器去猜某个样本来自哪个域,同时训练特征提取器尽量让判别器猜不出——这会逼着模型提炼“两个域通用的特征”,而不是死记某个域的表面模式。适配的最终目的是让源域模型在目标域上也能表现良好。

MMD 就像一把尺子量川菜和粤菜的平均口味差多少;对抗适配则像请一位盲品评审,他不看菜色、只尝味道。当他分不清哪道是川菜、哪道是粤菜时,说明陈师傅已经找到了两派菜系的“最大公约数”。

MMD2(DS,DT)=∥1nS∑i=1nSϕ(xiS)−1nT∑j=1nTϕ(xjT)∥2\displaystyle \text{MMD}^2(\mathcal{D}_S, \mathcal{D}_T) = \left\| \frac{1}{n_S}\sum_{i=1}^{n_S} \phi(\mathbf{x}_i^S) - \frac{1}{n_T}\sum_{j=1}^{n_T} \phi(\mathbf{x}_j^T) \right\|^2
解读:MMD 统计上检验“这两个分布是不是同一个分布”。值越小,说明源域和目标域越接近,迁移越容易成功。
  1. 源域均值向量1nS∑i=1nSϕ(xiS)\frac{1}{n_S}\sum_{i=1}^{n_S}\phi(\mathbf{x}_i^S) 把源域所有样本经 \(\phi\) 映射到高维空间后取平均,代表源域分布的整体“重心”位置。
  2. 目标域均值向量1nT∑j=1nTϕ(xjT)\frac{1}{n_T}\sum_{j=1}^{n_T}\phi(\mathbf{x}_j^T) 用同样方式计算目标域分布的重心,为两个域提供可比较的参照。
  3. 分布距离∥⋅∥2\left\|\cdot\right\|^2 计算两个均值向量的欧氏距离平方,数值越小说明两个域的分布越接近,迁移风险越低。

特征映射方法

陈师傅慢慢悟出一个道理:川菜粤菜表面千差万别,但本质上都是“火候 + 食材 + 调味”的组合游戏。锅铲起落之间,底层逻辑惊人地一致。他把这套底层逻辑叫作“做菜本质学”——这正是我们要找的共享特征。

特征映射方法要解决的是:当两个域的嵌入并不在同一个向量空间时,怎么把它们拉到一个可比较的坐标系里。最简单的做法是学一个线性映射,把源域用户嵌入翻译成目标域能懂的表示:

实现映射有三种主流路线:一是共享特征提取器,两个域共用底层网络参数,只在顶层分化;二是线性映射,EMCDR 采用这种做法,用少量重叠用户做监督;三是嵌入空间对齐,在损失函数中显式约束两个域嵌入的分布相似性。

这本“翻译词典”好比陈师傅写给其他厨师的《川菜手艺手册》:把“辣度”翻译成“鲜度”,把“重油”翻译成“吊汤”。翻译得越准,粤菜馆的新手厨师上手就越快。

eu(t)=W eu(s)+b\displaystyle \mathbf{e}_u^{(t)} = \mathbf{W} \, \mathbf{e}_u^{(s)} + \mathbf{b}
解读:\(\mathbf{W}\) 是一本“川菜→粤菜翻译词典”,\(\mathbf{b}\) 是坐标系偏移的补偿。映射学习完成后,冷启动用户不需要在目标域产生任何行为,也能得到自己的目标域嵌入。
  1. 源域嵌入eu(s)\mathbf{e}_u^{(s)} 是用户在源域训练好的嵌入向量,承载源域行为偏好的浓缩表达。
  2. 映射矩阵W\mathbf{W} 是线性变换矩阵,学习源域嵌入空间到目标域嵌入空间的坐标变换规则。
  3. 偏置向量b\mathbf{b} 补偿两个嵌入空间的原点偏移,让映射在无数据区域也有合理的基准值。
  4. 目标域嵌入eu(t)\mathbf{e}_u^{(t)} 是映射后得到的目标域用户嵌入,可代入目标域推荐模型直接计算物品得分。

负迁移规避

开业第三天,陈师傅自作主张加了一道“水煮牛肉”,自以为老顾客会喜欢,结果把粤菜馆的客人辣得直灌凉茶。他这才意识到:源域经验再丰富,也不能无脑照搬。这就是负迁移(Negative Transfer)——搬来的知识不但没帮忙,反而把目标域的事搞砸了。

负迁移的常见成因包括:源域与目标域相关度太低、迁移了源域特有的噪声模式、映射函数过拟合到少数重叠样本上。规避它的第一步,是给迁移加一道“安检门”:

企业级系统还会用门控网络动态调节迁移强度,或者对迁移来源做权重衰减,让模型自动学习“该信源域多少”。经历过“水煮牛肉事件”后,陈师傅立下规矩:只有店里超过一半顾客说“这个做法在广东也很常见”,这道菜才允许保留。迁移知识也是一样——先验证两个领域顾客的口味交集,再决定要不要端上桌。

I[sim(eu(s),eu(t))>θ]\displaystyle \mathbb{I}\left[ \text{sim}\left( \mathbf{e}_u^{(s)}, \mathbf{e}_u^{(t)} \right) > \theta \right]
解读:只有当用户在源域和目标域的嵌入相似度高过阈值 \(\theta\) 时,才允许使用该用户的源域知识;否则直接拦截,只靠目标域自身信息兜底。
  1. 相似度计算sim(eu(s),eu(t))\text{sim}\left(\mathbf{e}_u^{(s)}, \mathbf{e}_u^{(t)}\right) 度量同一个用户在源域和目标域嵌入的相似度,常用余弦相似度,衡量“同一口味在两个领域是否一致”。
  2. 迁移阈值θ\theta 是人工设定的超参数,只有相似度超过阈值才放行迁移,避免低相关用户的知识污染目标域。
  3. 指示函数I[⋅]\mathbb{I}[\cdot] 返回 0 或 1,作为“安检门”决定是否采纳源域知识,从机制上规避负迁移风险。

EMCDR实践

为了让粤菜馆的每一位新厨师都能复制他的经验,陈师傅把十年川菜手艺整理成册——《川菜手艺手册》:从食材预处理到火候曲线,每一步都写成“步骤 + 参数”。EMCDR(Embedding and Mapping for Cross-Domain Recommendation)做的就是这件事——把跨域知识拆解成可执行的流程。

EMCDR 的完整流程分三步:第一步,在源域训练矩阵分解,得到用户嵌入 \(\mathbf{p}_u\) 和物品嵌入;第二步,在目标域也训练矩阵分解,得到目标域用户嵌入 \(\mathbf{v}_u\);第三步,用两个域都出现的重叠用户,学习一个源域到目标域的线性映射:

训练完成后,任何源域老用户即使从未在目标域有过行为,也能通过 \(\mathbf{W}\mathbf{p}_u+\mathbf{b}\) 生成自己的目标域嵌入,直接参与目标域推荐。在美团、阿里这类多业务平台中,EMCDR 的衍生思路被广泛应用:用户在外卖上的高频行为映射到酒店预订推荐,视频 App 的观看记录映射到电商商品推荐。有了这本“手艺手册”,新来的厨师不用跟着陈师傅学十年,查手册就能做出七分像样的菜——这就是 EMCDR 的价值。

min⁡W,b∑u∈UO∥vu−(Wpu+b)∥2+λ∥W∥F2\displaystyle \min_{\mathbf{W}, \mathbf{b}} \sum_{u \in \mathcal{U}_O} \left\| \mathbf{v}_u - (\mathbf{W} \mathbf{p}_u + \mathbf{b}) \right\|^2 + \lambda \| \mathbf{W} \|_F^2
解读:用重叠用户的目标域真实嵌入和映射预测值的偏差作为损失,加上权重衰减正则,训练出最能“翻译”用户偏好的映射矩阵。
  1. 重叠用户集合UO\mathcal{U}_O 是同时在源域和目标域有行为记录的用户集合,这些用户为映射函数提供成对的训练数据。
  2. 源域用户嵌入pu\mathbf{p}_u 是重叠用户 \(u\) 在源域矩阵分解中获得的用户因子向量,代表源域视角下的用户偏好。
  3. 映射预测误差∥vu−(Wpu+b)∥2\left\|\mathbf{v}_u - (\mathbf{W}\mathbf{p}_u+\mathbf{b})\right\|^2 度量目标域真实嵌入 \(\mathbf{v}_u\) 与映射预测值的偏差,是映射函数学习的核心损失。
  4. Frobenius 正则项λ∥W∥F2\lambda\|\mathbf{W}\|_F^2 对映射矩阵所有元素施加惩罚,防止映射参数过拟合到少量重叠用户上。
  5. 最小化目标min⁡W,b\min_{\mathbf{W},\mathbf{b}} 通过优化算法寻找使总损失最小的映射参数,完成从源域到目标域的知识搬运。

系统设计建议

一个月后,粤菜馆生意上了轨道,但陈师傅没有停下。他每晚都会看营业报表:哪道菜点击率高、哪道菜被剩下了、哪位常客的口味变了……他用数据决定明天要不要调整菜单。跨域推荐系统的上线,也需要这样一套“复盘闭环”。

设计建议第一条:动手迁移前,先评估源域和目标域的数据分布相近程度,可以用 MMD 或重叠用户比例做快速体检。第二条:根据业务需求选择迁移策略——数据相似度高用深度共享网络,数据相似度低用轻量映射加阈值拦截。第三条:上线后必须监控迁移效果,最直接的办法是和仅用目标域数据的基线做对比:

除了整体指标,还要分用户群体看效果:新用户受益大吗?老用户有没有受到干扰?只有分层指标都向好,跨域推荐才算真正落地。陈师傅的菜单从来不是一锤定音,而是每周迭代——跨域推荐也应当这样运行:评估定方向,策略定打法,监控定去留,把迁移学习做成一个持续优化的闭环。

Improve=AUCcross−AUCbaseAUCbase×100%\displaystyle \text{Improve} = \frac{\text{AUC}_{cross} - \text{AUC}_{base}}{\text{AUC}_{base}} \times 100\%
解读:相对提升率为正说明迁移有效,为负说明发生负迁移,需要立刻回滚或调整策略。
  1. 跨域模型 AUCAUCcross\text{AUC}_{cross} 是使用跨域迁移知识训练的模型在目标域测试集上的排序性能指标。
  2. 基线模型 AUCAUCbase\text{AUC}_{base} 是仅用目标域自有数据训练的基线模型的 AUC,作为评估迁移收益的基准。
  3. 相对提升率AUCcross−AUCbaseAUCbase×100%\frac{\text{AUC}_{cross}-\text{AUC}_{base}}{\text{AUC}_{base}}\times 100\% 衡量迁移相比基线的增益比例,正值说明迁移有效,负值说明发生了负迁移。

AI 应用场景

视频平台新增电商推荐业务

阶段:模型训练与推理(跨域嵌入映射)

解决的问题:新上线的“边看边买”商城没有用户购买记录,传统协同过滤连最基础的物品相似度都算不出来,冷启动让推荐形同虚设。利用用户历史观影行为(源域)训练用户嵌入,再通过跨域线性映射生成用户在商品域的偏好向量,让新商城从第一天起就有可用的个性化推荐。

具体案例:某长视频 App 上线电商功能,将用户过去 6 个月的观影类型偏好(源域)映射到商品域(目标域)。上线两周内,冷启动用户的商品点击率较随机推荐提升了 17%,人均浏览商品数增长了 2.3 倍。

多业务线集团的数据共享

阶段:跨域模型设计与效果评估

解决的问题:本地生活平台的外卖数据量庞大,但酒店业务数据稀疏。传统方案各业务独立建模,酒店新用户推荐精度低;若直接把外卖特征拼入酒店模型,又会因分布差异导致负迁移。方法是用域适配加特征对齐,让两个业务共享底层特征提取器,并在输出端按业务分流。

具体案例:某本地生活平台在外卖到酒店的跨域推荐任务中,采用 MMD 作为域差异正则项,结合重叠用户映射监督,使酒店业务新用户首单转化率提高了 23%,同时外卖主业务指标未受影响。

Python 演示

python65 行
import numpy as np  def train_matrix_factorization(ratings, n_factors=8, lr=0.01, reg=0.02, epochs=80):    """简单矩阵分解,返回用户嵌入矩阵P和物品嵌入矩阵Q。"""    n_users = int(ratings[:, 0].max()) + 1    n_items = int(ratings[:, 1].max()) + 1    rng = np.random.default_rng(42)    P = rng.normal(0, 0.1, (n_users, n_factors))    Q = rng.normal(0, 0.1, (n_items, n_factors))    for _ in range(epochs):        for u, i, r in ratings:            err = r - P[u] @ Q[i]            P[u] += lr * (err * Q[i] - reg * P[u])            Q[i] += lr * (err * P[u] - reg * Q[i])    return P, Q  def learn_mapping(P_src, V_tgt, overlap_users, reg=0.1):    """利用重叠用户学习源域到目标域的线性映射。"""    X = P_src[overlap_users]    Y = V_tgt[overlap_users]    W = np.linalg.solve(X.T @ X + reg * np.eye(X.shape[1]), X.T @ Y)    b = Y.mean(axis=0) - X.mean(axis=0) @ W    return W, b  def main():    rng = np.random.default_rng(7)    # 模拟源域:40个用户对60个物品的稀疏评分    rows = []    for u in range(40):        for i in range(60):            if rng.random() < 0.35:                rows.append([u, i, int(rng.integers(1, 6))])    src_ratings = np.array(rows)     # 模拟目标域:0-4为重疊用户,5-9为冷启动用户    rows = []    for u in range(10):        for i in range(30):            if (u < 5 and rng.random() < 0.40) or (u >= 5 and rng.random() < 0.04):                rows.append([u, i, int(rng.integers(1, 6))])    tgt_ratings = np.array(rows)     P_src, _ = train_matrix_factorization(src_ratings)    V_tgt, Q_tgt = train_matrix_factorization(tgt_ratings)     # 用重叠用户学习映射    overlap_users = list(range(5))    W, b = learn_mapping(P_src, V_tgt, overlap_users)     # 冷启动用户借助映射获得目标域嵌入    for u in range(5, 10):        V_tgt[u] = P_src[u] @ W + b     # 为冷启动用户计算各物品预测得分并推荐TopK    user = 5    scores = Q_tgt @ V_tgt[user]    top_items = np.argsort(scores)[::-1][:5]    print("冷启动用户Top-5推荐物品:", top_items.tolist())  if __name__ == "__main__":    main()
目的:用模拟评分数据训练一个 EMCDR 风格的跨域推荐模型,演示“源域嵌入 → 线性映射 → 目标域推荐”的完整流程。
  1. P[u] += lr * (err * Q[i] - reg * P[u])矩阵分解的 SGD 更新:用预测误差修正用户嵌入,让嵌入逐步拟合真实评分。
  2. X = P_src[overlap_users]取出重叠用户在源域的嵌入向量,作为映射函数的训练输入。
  3. W = np.linalg.solve(X.T @ X + reg * np.eye(X.shape[1]), X.T @ Y)用最小二乘解析解算出映射矩阵,把源域嵌入空间“翻译”到目标域空间。
  4. b = Y.mean(axis=0) - X.mean(axis=0) @ W对齐两个空间的中心偏移,让映射后嵌入整体落在目标域坐标系的合理位置。
  5. V_tgt[u] = P_src[u] @ W + b冷启动用户拿源域嵌入与映射矩阵相乘,直接生成目标域嵌入,从而完成跨域推荐。

常见误区

误区既然源域和目标域都有用户行为,那把两个域的数据合并成一个超大的训练集,模型自然能学到跨域知识,不用设计特殊结构。

正解直接拼接会让模型难以区分两个域的特征分布。比如用户在视频领域的“转发”和目标域电商领域的“加购”语义完全不同,强行放进同一空间训练会互相干扰。跨域推荐的关键不是“数据堆一起”,而是显式建模域间关系——用映射、对齐或对抗适配来桥接知识。

为何常见:深度学习时代“数据越多越好”的直觉很深入人心,初学者容易忽略不同业务数据分布的系统性差异。

误区源域数据丰富,把用户所有可观测到的偏好全部迁移到目标域,覆盖率越高推荐越准。

正解源域中有相当一部分偏好是领域特异的。用户爱看恐怖电影,未必会迁移到购买母婴用品的决策上。无差别全量迁移会导致负迁移,让目标域推荐质量下降。正确做法是设置相似度阈值或门控机制,只迁移高置信度的用户偏好。

为何常见:迁移学习中“越充分越好”的直觉忽略了负迁移的存在,只有在源域和目标域高度相关时,“全量迁移”才近似成立。

误区EMCDR 里用了重叠用户做监督,所以认为跨域推荐的前提是两个域必须注册用户一一对应。

正解EMCDR 确实依赖少量重叠用户作为“锚点”,但实际系统里往往没有那么多重叠用户。业界会用设备 ID、手机号脱敏匹配、用户画像相似度等方式构造近似重叠样本,或者用对抗适配等不需要重叠用户的方法来对齐特征空间。重叠用户是“质量保证”,不是“必要条件”。

为何常见:初学者从论文的流程图出发,把“重叠用户映射学习”这一环节误当成了跨域推荐的全部前提。

误区训练后源域和目标域在映射空间的 MMD 指标接近 0,说明两个域完全对齐,模型表现一定优秀。

正解MMD 只度量两个分布的一阶矩(均值)差异,即使 MMD 为 0,两个分布的方差和相关结构仍可能不同。“所有用户共享同一个向量”也是 MMD 为 0 的极端情况,但对推荐毫无用处。域适配的最终目标不是 MMD 最小化,而是目标域推荐精度最大化。

为何常见:MMD 被包装成“域相似度”指标后,容易让人把手段当目标,忽略了推荐任务本身的业务指标。

面试题

Q1. 跨域推荐主要解决什么问题?

单选题 · easy

  • A.提升源域模型的训练速度
  • B.目标域冷启动与数据稀疏问题← 正确答案
  • C.目标域推荐列表的排序稳定
  • D.源域用户数据的隐私安全防护

答案:B。跨域推荐把源域学到的用户偏好迁移到目标域,核心动机就是缓解目标域冷启动和数据稀疏。它不关注源域训练速度、排序稳定性或隐私保护这些外围问题。

Q2. 迁移学习中“源域”指的是什么?

单选题 · easy

  • A.数据丰富、提供知识的领域← 正确答案
  • B.数据稀少、亟待推荐的领域
  • C.用户输入搜索关键词的集合
  • D.模型参数存储的服务器区域

答案:A。源域是“老厨师”的出发地,拥有丰富数据并提供可迁移知识;目标域才是数据稀少的推荐对象。C 和 D 与领域定义无关。

Q3. 衡量两个领域分布差异的常用统计量是?

单选题 · mid

  • A.最大均值差异(MMD)指标← 正确答案
  • B.交叉熵损失函数的平均值
  • C.随机梯度下降的更新次数
  • D.反向传播的梯度范数大小

答案:A。MMD 通过比较高维空间中两个域样本均值向量来度量分布差异,是域适配中最常用的距离指标。交叉熵、梯度范数等都是训练过程量,不直接度量域间距。

Q4. EMCDR 用哪类用户监督映射函数的学习?

单选题 · mid

  • A.两个域中均未出现的全新用户
  • B.只在源域中出现的过客用户
  • C.两个域都有记录的重叠用户← 正确答案
  • D.仅在目标域出现的冷启动用户

答案:C。重叠用户在源域和目标域都有真实嵌入,能提供成对监督信号,让映射函数学到“同一个人的偏好如何翻译”。冷启动用户恰恰是需要被映射的对象,而不是监督来源。

Q5. EMCDR 采用哪种特征映射方式?

单选题 · mid

  • A.共享全部网络参数的端到端模型
  • B.非线性映射神经网络的深层结构
  • C.线性映射变换源域嵌入向量← 正确答案
  • D.完全复制目标域物品嵌入编码

答案:C。EMCDR 的核心是学习线性映射 \( \mathbf{v}_u \approx \mathbf{W}\mathbf{p}_u + \mathbf{b} \),用简单高效的线性变换完成跨域嵌入转换。它不是端到端共享网络,也不复制物品编码。

Q6. 以下哪些做法容易引发负迁移?

多选题 · mid

  • A.源域与目标域业务关联度很低← 正确答案
  • B.使用重叠用户学习跨域映射关系
  • C.强行迁移源域特有的噪声模式← 正确答案
  • D.原样搬运用户全部历史偏好特征← 正确答案

答案:ACD。源域与目标域关联度低、迁移了源域特有噪声、不区分相关性地全量搬运,都会让目标域性能下降。B 是 EMCDR 的科学做法,用重叠用户监督映射反而能规避负迁移。

Q7. 冷启动用户通过跨域映射生成嵌入的方式是?

单选题 · mid

  • A.在源域中反向求解映射矩阵参数
  • B.将源域嵌入正向映射到目标域空间← 正确答案
  • C.将目标域嵌入反向映射到源域空间
  • D.直接用矩阵乘积替换缺省的用户向量

答案:B。映射方向是“源域到目标域”:先取用户在源域的嵌入,再乘映射矩阵加偏置,得到目标域嵌入用于推荐。反向映射或直接替换都不符合跨域推荐的逻辑。

Q8. 关于 EMCDR 实现流程,描述正确的有哪些?

多选题 · hard

  • A.先在源域训练矩阵分解获得嵌入← 正确答案
  • B.用重叠用户拟合映射函数的参数← 正确答案
  • C.冷启动用户映射后参与目标域推荐← 正确答案
  • D.目标域数据需覆盖全部源域物品

答案:ABC。EMCDR 标准流程是“源域 MF → 重叠用户学习映射 → 冷启动用户映射后推荐”。目标域不需要覆盖全部源域物品,D 把前提理解错了。

Q9. 评估跨域推荐迁移效果的最佳对比基线是?

单选题 · hard

  • A.随机抽取商品推荐的基线策略
  • B.仅用目标域数据训练的推荐模型← 正确答案
  • C.仅用源域数据训练的迁移模型
  • D.按商品热度排序的启发式策略

答案:B。跨域推荐的价值必须与“不迁移”对比才有说服力。仅用目标域数据训练的模型代表“从零开始”的上限,B 最能反映迁移带来的真实增益;随机和热度基线太低,源域模型本身不适用于目标域。

Q10. 设计跨域推荐系统时,合理的监控指标有哪些?

多选题 · hard

  • A.目标域冷启动用户 AUC 指标提升← 正确答案
  • B.目标域老用户推荐的稳定程度← 正确答案
  • C.源域模型自身的训练收敛速率
  • D.跨域模型与传统基线的 A/B 对比← 正确答案

答案:ABD。上线后应关注冷启动用户收益、老用户是否被干扰、以及和基线的 A/B 对比。源域模型训练收敛速率属于离线训练指标,与跨域上线效果无关,不应作为核心监控项。