新学期第一天,班里转来一位叫小林的插班生。班主任老周手里只有一张半空白的档案表:名字、年级齐整,但“过往成绩、兴趣经历、获奖记录”全是空白。想推荐他进篮球社?不知道他球技如何。想安排数学兴趣小组?不知道他底子怎样。老周犯了难——这正是推荐系统最头疼的“冷启动”时刻:面对一个没有任何历史记录的新用户(或一件刚上线的新商品),怎么做出靠谱推荐? 好在老周经验丰富。他有三个办法:第一,看小林自己勾选的“兴趣爱好表”,用标签做匹配——这是基于内容(CB)的思路;第二,琢磨小林在原来学校沉淀的学习方法,把“怎么快速适应新环境”的本事迁移过来——这是迁移学习(MAML/FOML)的思路;第三,平时就故意藏起一些同学的资料来练手,练到信息不全也能判断——这是DropoutNet的思路。三条路,共同构成了冷启动推荐的三大策略。

岗位关联

掌握冷启动三大策略,你就能在推荐系统面试中精准拆解“新用户/新物品怎么推”的难题,并在真实业务中按特征条件、数据储备灵活选型,显著优化上线初期的推荐效果。

目录
  1. 可视化演示
  2. 冷启动问题
  3. 基于内容CB
  4. 特征稀疏处理
  5. 迁移学习原理
  6. MAML算法
  7. FOML简化
  8. DropoutNet
  9. 策略选型总结
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示基于内容的CB方法、MAML迁移学习快速适配、DropoutNet缺失特征容错三大冷启动策略,支持模式切换。

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

基于内容的CB方法 无需标签:直接使用物品内容特征匹配 适合新物品冷启动场景 score = sim(user, item_content) 内容匹配推荐。

冷启动问题

班主任老周翻开小林档案,发现“过往成绩”一栏是空的。不是档案丢了,而是小林刚转学,新学校还没有关于他的任何学习记录。这就好比推荐系统里的新用户:没有点击、没有收藏、没有购买,一切交互历史都是零。更麻烦的是,新上架的商品也一样——没有用户碰过它,协同过滤算法就找不到“和谁相似”的依据。

冷启动(Cold Start)在推荐系统里指缺少历史行为数据时的推荐问题,通常分成三类:用户冷启动(新注册用户无行为)、物品冷启动(新品无交互)、系统冷启动(整个平台数据积累不足)。传统协同过滤依赖“用户-物品交互矩阵”,而冷启动恰恰意味着这个矩阵的行或列几乎全空。

设用户数 u、物品数 i,交互矩阵 R 只有极少数被观测:

老周盯着空白档案,心里清楚:等档案自然填满要一学期,班级活动等不起。必须主动出击——这正是三大策略登场的理由。

Ru×i=[?5?14?????2?]R_{u \times i} = \begin{bmatrix} ? & 5 & ? & 1 \\ 4 & ? & ? & ? \\ ? & ? & 2 & ? \end{bmatrix}
矩阵中"?“代表未观测交互。冷启动的本质就是这些”?"占了绝大多数,模型没有任何信号可学。
  1. 矩阵 R$R_{u \times i}$ 表示 u 个用户对 i 个物品的交互矩阵,元素 $r_{ui}$ 为评分或点击标记。
  2. 已知与未知少数数字(如 5、1)代表已有交互,大量"?"代表从未发生或未被观测的交互。
  3. 稀疏度观测交互数占矩阵总数的比例通常不足 10%,冷启动场景下新用户对应整行都是"?"。

基于内容CB

老周把抽屉里的“兴趣爱好表”发给小林。小林三分钟填完:篮球、数学建模、悬疑小说。老周立刻有了主意——学校篮球社、数学社、读书社,这些社团本身也贴着同样标签,直接把小林推进对应社团就行。不需要他过去任何比赛成绩。

基于内容推荐(Content-Based Recommendation)正是这个思路:用物品自身的特征(标签、类目、文本关键词)来刻画物品,再用用户标注或用户历史偏好构建画像,最后算画像与候选物品特征的相似度。对冷启动而言,新物品只要一上架就有完整特征,就能立刻进入召回候选池。

CB 最常用的相似度是余弦相似度。设用户画像向量 p、物品特征向量 q:

篮球社的关键词是“篮球”,小林画像里“篮球”权重最高——余弦相似度一算,二者方向高度一致。老周在推荐理由栏写:该生兴趣匹配度 0.87,建议入社。

sim(u,i)=∑j∈Fpu,j×qi,j∑j∈Fpu,j2×∑j∈Fqi,j2sim(u,i) = \frac{\sum_{j \in F} p_{u,j} \times q_{i,j}}{\sqrt{\sum_{j \in F} p_{u,j}^2} \times \sqrt{\sum_{j \in F} q_{i,j}^2}}
余弦相似度衡量用户画像与物品特征两个向量在方向上是否一致,返回 -1 到 1,值越大越匹配。
  1. p_{u,j}用户 u 在第 j 个特征(例如“篮球”)上的偏好强度,来自用户标注或行为加权。
  2. q_{i,j}物品 i 在第 j 个特征上的权重,如“篮球”标签在物品描述中的 TF-IDF 值。
  3. 分子两个向量逐维相乘累加,捕捉“共同强调”的特征。
  4. 分母两向量模长之积,消除向量长度差异带来的偏差,让相似度只看方向、不看长短。

特征稀疏处理

小林填兴趣表时,“校外获奖经历”空着。老周不紧张:空栏目不影响判断,因为关键信息(篮球、数学建模)已经足够。真正需要警惕的是反过来——有些栏目人人都会填,比如“热爱学习”,填了等于没填。

推荐系统里的特征也是这样。标签集合通常很大,但单个物品只拥有极少几个标签;而且泛化词(如“电影”“音乐”)出现在海量物品中,对区分毫无帮助。CB 中经常用 TF-IDF 给标签重新加权,而不是直接用标签频次。

TF-IDF 公式:

老周在班级档案整理会上说:以后画像建模,凡是“热爱学习”这种人人必填的栏目自动降权,“篮球”“建模”这种稀缺标签加权——特征稀疏不可怕,权重设计对了,稀疏本身就能变成信号。

wt,i=tft,i×log⁡Ndftw_{t,i} = \text{tf}_{t,i} \times \log \frac{N}{\text{df}_t}
TF 是标签在物品描述中出现的次数,IDF 是包含该标签的物品数的倒数取对数,用于突出“少而精”的标签。
  1. tf_{t,i}标签 t 在物品 i 的描述文本中出现的次数,代表标签对物品的直接重要度。
  2. df_t包含标签 t 的物品总数。df 越小,说明标签越稀缺。
  3. log(N/df_t)逆文档频率。N 是物品总数;若 df 很小,则 IDF 很大,赋予该标签更高的区分度。
  4. 乘积TF 与 IDF 相乘,既保留局部重要性,又抑制全局泛滥词,得到最终权重。

迁移学习原理

小林转学后第一堂数学课,老周发现他笔记做得又快又好:先抄定理、再记例题、最后用红笔标出易错点。这套方法不是新学校教的,而是他在原来的学校养成的。知识可能有差异,但“整理错题、归纳题型”的能力是通用的。

迁移学习(Transfer Learning)就是要把在源任务上学到的知识——模型参数、表征、学习方法——迁移到目标任务上。对冷启动而言,典型场景是:老用户或老频道积累了丰富的推荐模型,新频道(或新用户群)数据极少,直接用老模型不贴合,从头训练又没数据,于是迁移老模型的经验成为解药。

更进一步,元学习(Meta-Learning)不满足于迁移“某个具体模型”,而是希望学到“如何快速适应新任务”。它的目标是寻找一组元参数 θ,使得在新任务分布上的期望损失最小:

就像小林从旧学校带来的不是某道题的答案,而是一套学习习惯——迁移学习带给新系统的是“快速适应”的本事,而不是某个领域的具体参数。

min⁡θ  ET∼p(T)  LT(fθ)\min_{\theta} \; \mathbb{E}_{\mathcal{T} \sim p(\mathcal{T})} \; \mathcal{L}_{\mathcal{T}}(f_{\theta})
这个公式是说:与其针对单个任务练一个模型,不如在“一堆任务”上练出通用的初始参数,让任何新任务都能几招之内上手。
  1. 任务分布 p(T)一批结构相似但数据分布不同的任务,例如不同城市频道的推荐排序任务。
  2. 期望 E对任务分布上的所有任务求平均损失,保证平均效果而非单点最优。
  3. L_T(f_θ)模型在某个具体任务上的损失,是评价元参数适应能力的标尺。

MAML算法

为什么小林能第一节数学课就跟上进度?因为他长期训练的是“进入状态”的能力:拿到新题目,先审题、定位知识点、套用方法。MAML(Model-Agnostic Meta-Learning)把这种能力参数化:学一组初始参数,让模型面对任何新任务都能通过极少量梯度更新快速适配。

MAML 分内外两层循环。内层循环:对元参数 θ,在某个具体任务 T_i 的支撑集上做一步(或几步)梯度下降,得到任务专属参数 θ'_i,这模拟“新任务上快速学习”。外层循环:利用所有任务上适应后的表现,反向更新元参数 θ,使得“适应后”的损失尽可能小。

两个更新公式如下:

老周把 MAML 比作“练偏科”:内层模拟考试适应,外层根据考试成绩调整学习习惯。转学生带来的不是某科满分,而是“什么都学得会”的学习系统。

θi′=θ−α∇θLTi(θ)\theta'_i = \theta - \alpha \nabla_{\theta} \mathcal{L}_{\mathcal{T}_i}(\theta)
θ←θ−β∇θ∑i=1nLTi(θi′)\theta \leftarrow \theta - \beta \nabla_{\theta} \sum_{i=1}^{n} \mathcal{L}_{\mathcal{T}_i}(\theta'_i)
内层公式表示在单个新任务上走一步梯度下降;外层公式表示用所有任务“适应后的损失”去更新初始参数,从而优化快速适应能力。
  1. 内层快速适应在任务 T_i 上,用学习率 α 从 θ 出发走一步梯度,得到 θ'_i——就像学霸拿到新题先快速做一遍。
  2. 外层元更新计算所有任务适应后总损失对 θ 的梯度,用 β 更新 θ,让下一轮适应更快。
  3. 二阶路径注意到 $\nabla_{\theta}\mathcal{L}(\theta'_i)$ 中 θ'_i 本身依赖 θ,由链式法则会展开出 $\partial\theta'_i/\partial\theta = I - \alpha \partial^2\mathcal{L}/\partial\theta^2$——这就是 MAML 梯度里隐藏的二阶导数来源。

FOML简化

MAML 的二阶导数让很多同学头皮发麻:明明只是想要一套“快速适应”的初始参数,却要算一堆复杂的海森矩阵。老周劝大家别慌,考试时间有限,抄笔记只抓重点也行——这就是 FOML 的思路。

FOML(First-Order MAML,一阶MAML)观察到:在外层元更新时,把 $\partial\theta'_i/\partial\theta$ 近似为单位阵 I,忽略二阶路径的影响,只使用适应后参数的梯度作为元梯度的近似。大量实验证明,在许多冷启动和小样本任务上,一阶近似效果与完整 MAML 几乎一样,而计算开销和显存需求大幅下降。

FOML 的元梯度近似为:

老周给小林的学习建议:别纠结每个公式的二阶展开,先抓住“在新任务上快速适应”这条主线。FOML 就像用关键词记笔记——少记点细节,多抓点主干,考试照样上分。

gFOML=∑i=1n∇θi′LTi(θi′)g_{\text{FOML}} = \sum_{i=1}^{n} \nabla_{\theta'_i} \mathcal{L}_{\mathcal{T}_i}(\theta'_i)
FOML 直接用每个任务适应后参数处的损失梯度来更新元参数,不再对 θ 求二阶梯度。
  1. 近似条件假设 $\partial\theta'_i / \partial\theta \approx I$,即任务参数随元参数的“扰动”近似直接传导。
  2. 梯度作用于何处梯度在 θ'_i 处求值,决定了更新的方向和幅度,被当作近似作用于 θ 的元梯度。
  3. 计算收益省去二阶导数后,每次更新的计算量从 O(d²) 降为 O(d),在模型参数量大时训练速度和显存都有显著优势。

DropoutNet

老周后来发现,班里每个同学的档案都有不同程度的空缺。与其等着档案补齐才敢推荐,他干脆想了个狠招:平时训练时故意把一部分同学的某几项资料藏起来,让分配社团时“手忙脚乱”的模型练出本事——信息不全时也要能判断。

DropoutNet 正是这个思路。普通推荐模型(例如双塔、深度协同过滤)要求输入特征完整,一旦新物品缺颜色、缺类目、缺品牌,模型就会“哑火”。DropoutNet 的做法是:训练时随机把用户或物品特征向量的部分维度置零(或替换为可学习缺失向量),迫使网络见过“缺失输入”;推理时,即使新物品的特征真的缺失,网络仍然能输出合理的嵌入和预测。

用数学描述:设用户特征 p_u、物品特征 q_i,m 是取值 0/1 的掩码向量,DropoutNet 的前向为:

训练损失为:

老周后来对实习生说:别怕数据缺胳膊少腿,你平时就让它“缺着练”,关键时刻它才不慌。DropoutNet 练出的模型,就是那个见过各种“半张表”的老班主任。

r^ui=fθ(pu⊙mu,  qi⊙mi)\hat{r}_{ui} = f_{\theta}(\mathbf{p}_u \odot \mathbf{m}_u, \; \mathbf{q}_i \odot \mathbf{m}_i)
L=1∣D∣∑(u,i)∈D(r^ui−rui)2\mathcal{L} = \frac{1}{|\mathcal{D}|} \sum_{(u,i) \in \mathcal{D}} \left( \hat{r}_{ui} - r_{ui} \right)^2
掩码向量 m 负责“藏”掉部分特征,模型必须在缺失条件下逼近真实评分,从而学会缺失鲁棒的表征。
  1. p_u、q_i用户和物品的稠密特征向量,来自 ID 嵌入与内容特征的拼接。
  2. 掩码向量 m随机生成,元素为 0 表示该特征被丢弃;训练中每个批次 mask 都不同。
  3. ⊙ 逐元素乘将 mask 应用到特征上,模拟真实冷启动的缺失输入。
  4. MSE 损失预测与真实评分的平方误差。$|\mathcal{D}|$ 是交互总数,平均损失衡量模型在“缺了特征”的条件下对真实评分的拟合能力。

策略选型总结

老周的抽屉里有三样法宝:兴趣爱好表(CB)、学习方法迁移(MAML/FOML)、盲测训练计划(DropoutNet)。但用哪一样,得看情形。

没有一种策略能包打天下。把三种策略的使用条件列在一起,就能看出它们各自的主场:

| 策略 | 适用条件 | 实战定位 |

| --- | --- | --- |

| 基于内容 CB | 物品有丰富标签/图文特征 | 新品上线当天即可召回 |

| 迁移学习 MAML/FOML | 存在相似源领域与足够任务 | 新频道/新用户群快速适配 |

| DropoutNet | 特征缺失普遍、输入不完整 | 缺失鲁棒的向量召回底座 |

组合策略往往效果更佳。用 CB 解决“没行为”的冷启动,用迁移学习解决“没数据”的冷启动,用 DropoutNet 解决“特征不全”的冷启动,三者叠加即可覆盖大部分业务场景:

老周把三样法宝全放在抽屉里,而不是只挑一件。转学生的档案再空,也逃不出这三张牌的排列组合——这正是冷启动工程的日常。

策略={CB物品特征丰富,可获取用户标签MAML/FOML存在相似源任务集合DropoutNet特征缺失普遍,需稳健预测\text{策略} = \begin{cases} \text{CB} & \text{物品特征丰富,可获取用户标签} \\ \text{MAML/FOML} & \text{存在相似源任务集合} \\ \text{DropoutNet} & \text{特征缺失普遍,需稳健预测} \end{cases}
条件表达式刻画了不同冷启动场景下的策略选择,业务中常常是三者组合而非二选一。
  1. 条件一(CB)当新物品上架即有完整标签、用户可主动提供偏好时,特征匹配成本最低、见效最快。
  2. 条件二(迁移)当已有成熟领域数据和多个相似任务时,元学习产出的适应能力最强。
  3. 条件三(DropoutNet)当业务特征稀疏且缺失频繁时,缺失鲁棒模型优先。

AI 应用场景

视频平台新品冷启动召回

阶段:召回阶段

解决的问题:新视频上传后没有播放历史,协同过滤找不到相似物品,无法进入任何用户的召回候选。传统做法只能等自然积累播放量,冷启动期曝光极低。CB 方法提取视频标题、标签、封面多模态特征,与用户历史偏好画像做余弦匹配,新视频上线当天即可进入相关用户的信息流。

具体案例:某短视频平台作者上传“如何做手冲咖啡”视频,系统自动抽取“咖啡、手冲、生活技巧”标签,匹配到近一周关注过咖啡器具的用户,零播放历史下首小时获得 2 万次曝光。

新闻App新频道偏好迁移

阶段:排序/建模阶段

解决的问题:新上线城市频道没有行为日志,直接训练排序模型效果差,纯规则兜底又浪费流量。迁移学习与 MAML 将多个成熟城市频道的排序任务视为元训练任务,学一组“快速适应新城市”的元初始化参数;新频道只需几千条日志即可内层几步梯度完成适配。

具体案例:某资讯 App 新开“成都频道”,利用在北京、上海、广州频道上学到的元参数 + 极小样本微调,冷启动期点击率相比随机初始化模型提升 18%。

电商新品特征缺失向量召回

阶段:向量检索/召回阶段

解决的问题:新品常缺品牌、缺类目、缺图片标签,传统双塔模型输入不完整直接“哑火”。DropoutNet 在训练时随机丢弃特征维度,使模型见过各种缺失输入;推理时即使新品只有名称文本,也能产出稳定的 embedding 进入向量召回。

具体案例:某跨境电商大量手工制品上传时未填品牌字段,启用 DropoutNet 后新品 24 小时内进入 ANN 向量检索候选池,冷启动期曝光量翻倍。

Python 演示

python59 行
import numpy as np def make_data(n_user=50, n_item=20, n_feat=8, seed=42):    """生成用户特征、物品特征和稀疏的交互评分"""    rng = np.random.default_rng(seed)    U = rng.normal(size=(n_user, n_feat))    V = rng.normal(size=(n_item, n_feat))    u_ids, v_ids = np.where(rng.rand(n_user, n_item) < 0.15)    scores = np.sum(U[u_ids] * V[v_ids], axis=1)    scores += rng.normal(0, 0.1, size=len(u_ids))    return u_ids, v_ids, scores, U, V, rng def train(dropout_rate=0.3, epochs=20, lr=0.05, seed=42):    """带输入特征Dropout的双线性模型训练"""    u_ids, v_ids, scores, U, V, rng = make_data(seed=seed)    n_feat = U.shape[1]    W = rng.normal(scale=0.1, size=(n_feat, n_feat))    bias = 0.0    for epoch in range(epochs):        total_loss = 0.0        for p in range(len(u_ids)):            u, v, target = u_ids[p], v_ids[p], scores[p]            fu = U[u].copy()            fv = V[v].copy()            if dropout_rate > 0:                fu = fu * (rng.rand(n_feat) > dropout_rate)                fv = fv * (rng.rand(n_feat) > dropout_rate)            pred = fu.dot(W).dot(fv) + bias            diff = pred - target            total_loss += diff * diff            W -= lr * diff * np.outer(fu, fv)            bias -= lr * diff        if epoch % 10 == 0:            msg = "epoch " + str(epoch) + " loss " + format(total_loss / len(u_ids), ".4f")            print(msg)    return W, bias def evaluate(W, bias, dropout_rate=0.3, seed=7):    """在特征随机缺失的测试交互上评估模型"""    u_ids, v_ids, scores, U, V, rng = make_data(seed=seed)    total_loss = 0.0    count = 0    for p in range(len(u_ids)):        u, v, target = u_ids[p], v_ids[p], scores[p]        fu = U[u] * (rng.rand(U.shape[1]) > dropout_rate)        fv = V[v] * (rng.rand(V.shape[1]) > dropout_rate)        pred = fu.dot(W).dot(fv) + bias        total_loss += (pred - target) ** 2        count += 1    return total_loss / count if __name__ == "__main__":    print("training baseline (no dropout):")    W0, b0 = train(dropout_rate=0.0)    print("training with dropout:")    W1, b1 = train(dropout_rate=0.3)    print("test loss under missing features:")    print("baseline model:", round(evaluate(W0, b0, 0.3), 4))    print("dropout model :", round(evaluate(W1, b1, 0.3), 4))
目的:用双线性模型对比“普通训练”与“DropoutNet式训练”在特征缺失时的表现差异,直观展示 DropoutNet 让模型对缺失特征更鲁棒。
  1. u_ids, v_ids = np.where(rng.rand(n_user, n_item) < 0.15)构造冷启动的核心:只有 15% 的用户-物品交互被观测。
  2. fu = fu * (rng.rand(n_feat) > dropout_rate)训练时随机将部分特征维度置零,这是 DropoutNet 的“故意藏资料”。
  3. pred = fu.dot(W).dot(fv) + bias双线性评分函数,模拟深度推荐模型中的特征交互。
  4. W -= lr * diff * np.outer(fu, fv)梯度更新:只有未被 mask 的特征维度会产生有效梯度。
  5. evaluate(W0, b0, 0.3)测试时同样施加 30% 的特征缺失,对比两个模型在“冷启动缺失”下的泛化能力。

常见误区

误区以为基于内容推荐只对“新物品”有效,因为算法是从物品特征出发的,对“新用户”无能为力。

正解CB 对用户冷启动同样适用,只要用户能提供少量兴趣标签,或通过注册时的必填信息构建初始画像,就能立刻参与相似度匹配。关键的瓶颈是获取初始偏好的渠道设计,而不是 CB 方法本身不能做。

为何常见:容易把“CB 需要用户画像”等同于“需要用户历史行为”,忽略了初始画像可以由用户主动标注获取。

误区以为 MAML 的训练流程和“在大数据上预训练,再到小数据上微调”是一回事。

正解预训练+微调优化的是单个目标任务的损失;MAML 优化的是“快速适应多项任务”的元目标——内层模拟适应、外层更新初始参数。元参数的价值不在于在哪个任务上表现好,而在于任何新任务只要几步梯度就能上手。

为何常见:两者表面相似(都用已有模型初始化新任务),但目标函数和训练流程完全不同,容易混淆。

误区以为 DropoutNet 的作用是做特征补全,即把缺失的字段(比如颜色)预测出来再喂给模型。

正解DropoutNet 不补特征值,它训练时直接把部分特征丢掉,让模型在“缺失条件”下照样输出稳定表示。推理时即使特征真的缺失,模型前向路径完全通畅,不需要先做插补。

为何常见:人们习惯“缺失→填充”的数据处理套路,而 DropoutNet 换了一个思路:让模型去适应缺失,而不是让数据去适应模型。

误区以为三大策略是互斥方案,选了 CB 就不能用 DropoutNet。

正解实际工程中按层次组合:召回层用 CB 做新品兜底,排序层用元学习得到快速适应的排序模型,底层特征层用 DropoutNet 做缺失鲁棒,形成完整冷启动方案。

为何常见:教科书式分类让人以为策略之间是并列的,忽略了它们作用的环节不同,可以叠加。

面试题

Q1. 冷启动问题的本质是什么?

单选题 · easy

  • A.新用户或新物品缺乏交互历史← 正确答案
  • B.推荐系统服务器响应延迟过慢
  • C.用户填写的资料完全错误
  • D.训练数据集规模过于庞大

答案:A。冷启动指新用户或新物品没有历史交互数据,导致协同过滤等依赖行为的算法失效。B 是性能问题,C 是数据质量问题,D 是规模问题,都不属于冷启动的本质。

Q2. 基于内容(CB)推荐的核心依据是?

单选题 · easy

  • A.物品特征与用户偏好画像匹配← 正确答案
  • B.用户与用户之间的相似程度
  • C.物品在平台中的销量排行
  • D.随机抽取物品进行试探推荐

答案:A。CB 的核心是用物品自身特征(标签、类目、文本)和用户画像做匹配,就像班主任拿小林的兴趣表去核对社团标签。B 是协同过滤,C 是热门推荐,D 是随机探索。

Q3. 余弦相似度在CB中的主要作用是什么?

单选题 · mid

  • A.衡量用户画像与商品向量的方向接近度← 正确答案
  • B.把高维稀疏特征压缩成稠密向量
  • C.将用户按活跃度划分成多个群组
  • D.计算两个用户共同购买物品的次数

答案:A。余弦相似度计算两个向量的夹角余弦,值越接近 1 表示方向越一致,这正是“兴趣标签是否同向”的度量。B 是降维/嵌入学习,C 是用户分群,D 是商品共现统计。

Q4. 关于MAML的内层循环,下列说法正确的是?

多选题 · mid

  • A.在具体任务上执行一步或几步梯度下降← 正确答案
  • B.需要在该任务的支撑集上计算损失← 正确答案
  • C.适应后的参数会用于外层元更新← 正确答案
  • D.内层一定会运行上百轮的完整训练

答案:ABC。MAML 内层就是在单个任务的支撑集上走少量梯度步,得到的任务参数 θ'_i 参与外层元更新的损失计算。D 错在“MAML 内层通常只有几步,且'一定'的说法过于绝对”。

Q5. FOML相比完整MAML,主要简化了哪部分?

单选题 · mid

  • A.省略适应参数对初始参数的二阶梯度路径← 正确答案
  • B.使用更大的学习率来更新模型的参数
  • C.放弃梯度随机搜索来寻找最优元参数
  • D.增加更多任务来拟合模型的泛化能力

答案:A。FOML 将 ∂θ'_i/∂θ 近似为单位阵,直接使用适应后参数的梯度做元更新,省去了二阶导数计算。B/C/D 都没有触及 FOML 的本质——它没有改变学习率、搜索方式或任务数量。

Q6. DropoutNet应对冷启动的核心思路是?

单选题 · mid

  • A.训练时故意让输入特征出现部分缺失← 正确答案
  • B.将所有缺失特征统一替换为零向量
  • C.删除特征不全用户的所有相关记录
  • D.只使用热门物品的数据完成模型训练

答案:A。DropoutNet 训练时随机 mask 掉部分特征,让模型见过“缺失输入”这个分布,推理时才能从容应对真实缺失。B 是普通填零/插补思路,且“统一替换”过于僵硬;C 是丢弃数据;D 只学热门物品反而加剧冷启动。

Q7. 冷启动策略组合应用时,下列做法合理的是?

多选题 · hard

  • A.用CB标签匹配解决新物品无交互← 正确答案
  • B.用元学习实现跨领域偏好快速迁移← 正确答案
  • C.用DropoutNet应对特征缺失场景← 正确答案
  • D.只依赖随机推荐等待数据积累

答案:ABC。三大策略分别解决“无行为、无数据、特征不全”三类冷启动问题,组合可以覆盖更多场景。D 完全依赖随机推荐会浪费流量且收敛极慢,不属于合理策略组合。

Q8. TF-IDF中的逆文档频率(IDF)主要作用是?

单选题 · easy

  • A.压低泛化词的权重,突出少而精的标签← 正确答案
  • B.把所有标签的权重统一调整为等值
  • C.提高高频词的权重以匹配用户兴趣
  • D.使用评分数据反向修正标签的权重

答案:A。IDF 用 log(N/df) 让出现物品数越少的标签权重越大,从而抑制“人人都会填”的泛化词。B 说反了方向,C 与 IDF 逻辑相反,D 是监督式特征学习而非 TF-IDF。

Q9. 关于元学习的任务分布与训练,下列正确的是?

多选题 · hard

  • A.每个任务都包含支撑集与查询集← 正确答案
  • B.任务分布越接近业务目标效果越好← 正确答案
  • C.元训练阶段需要模拟多次适应过程← 正确答案
  • D.任务数量越多效果必定会线性提升

答案:ABC。元学习的标准范式是支撑集上适应、查询集上评估;任务分布与真实场景越接近,迁移效果越好;元训练正是反复模拟“适应新任务”来优化元参数。D 的“必定线性提升”过于绝对,任务质量比数量更重要。

Q10. MAML外层元梯度与普通梯度的关键区别是?

单选题 · extreme

  • A.包含适应后参数对初始参数的二阶导数信息← 正确答案
  • B.完全消除了训练过程中的随机噪声干扰
  • C.使用文本描述作为梯度的额外辅助输入
  • D.对所有任务梯度直接相加后即完成更新

答案:A。外层梯度 ∇θL(θ'_i) 通过链式法则展开时,θ'_i 对 θ 的依赖会产生二阶导数 ∂²L/∂θ²,这是 MAML 区别于普通梯度的核心。B 与梯度结构无关,C 是跨模态想法,D 只是“MAML 多个任务累加”的表层描述,未触及二阶本质。