想象你在一座热闹商场里开了一家新餐厅:菜品不错,但门口没有一块写着“好吃”的评价牌,顾客不知道你卖什么,更不知道好不好吃。每天有人从门口路过,却没人推门;没有人消费,就没有评价;没有评价,就更没人进来——这就是冷启动死循环。内容推荐里的每一条新视频、新文章都像这家新餐厅:没有点赞、完播、评论、转发等历史交互数据,推荐系统就像一位不认识你的商场导购,不知道该把这道菜端到谁面前。本文用“新餐厅开业”作主线比喻,讲清打破死循环的四把钥匙:看菜谱匹配老食客(内容特征召回)、按招牌标签发传单(标签匹配)、发少量试吃券试错(探索利用)、请老店熟客带路(相似内容迁移),最后串起系统链路和评估方法。

岗位关联

对 AI 从业者而言,冷启动方法直接决定新内容能否被看见、新用户是否留得下来,是推荐系统从“能用”走向“好用”的必备技能,也是内容平台增长与留存的核心抓手。

目录
  1. 可视化演示
  2. 冷启动困境:没有评价的新餐厅
  3. 内容特征召回:翻菜谱找老食客
  4. 标签匹配:按招牌发传单
  5. 探索利用:发试吃券
  6. 相似迁移:请熟客带路
  7. 系统链路:从散落工具到完整导流流程
  8. 评估优化:用数据看招牌是否亮起来
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示新内容冷启动的探索利用循环机制,以及通过相似内容迁移学习为新内容提供先验信息的完整流程。

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

探索利用循环机制 探索阶段为新内容分配初始曝光流量收集交互数据 利用阶段基于反馈数据优化推荐策略 UCB和汤普森采样在探索与利用间取得最优平衡 UCB = x̄ + √(2ln(N)/n) 探索利用打破冷启动死循环。

冷启动困境:没有评价的新餐厅

新餐厅开在商场最热闹的转角,菜谱研究得再精细,食客在门口还是会犹豫:没有评分、没有晒图、没有朋友推荐,凭什么信你?内容推荐里的新内容也一样,它没有点击、完播、点赞、评论等“口碑”。推荐系统过去主要靠用户行为构建内容画像,新内容的行为记录是零,就像一位从没有客人点过菜的厨师,系统不知道它适合谁。

这种困境会形成一条可怕的负反馈循环:没有交互数据,模型不敢推荐;越少推荐,越难产生交互数据;数据越少,模型越学不会。新内容因此永远停留在“冷”状态。平台里老内容因为有丰富历史数据越推越准,新内容被压得几乎没有出头之日,这就是冷启动造成的内容分发不公平。

为了把这个问题讲清楚,可以看一个通用排序目标:

所以冷启动的本质,是用“内容长什么样”暂时替代“内容被多少人喜欢”。就像新餐厅开业前先靠菜单吸引第一批顾客,用这一小批人的反应,建立最初的评价样本。

Score(u,i)=w⊤ϕ(u,i)⏟content_score+β⋅hu,i⏟history_score\displaystyle \mathrm{Score}(u,i)=\underbrace{\mathbf{w}^{\top}\boldsymbol{\phi}(u,i)}_{\text{content\_score}}+\underbrace{\beta \cdot h_{u,i}}_{\text{history\_score}}
用户和内容之间的最终得分,由“内容特征分”和“历史交互分”相加得到;新内容的历史交互分恰好为零,因此只能依靠内容特征来完成初判。
  1. 得分函数Score(u,i) 表示推荐系统给用户 u 和内容 i 打的综合分,分数越高越可能被推荐。
    Score(u,i)\displaystyle \mathrm{Score}(u,i)
  2. 内容特征分通过标题、图文、类目等特征向量,计算内容与用户偏好的匹配程度,即使没有任何历史行为也能计算。
    w⊤ϕ(u,i)⏟content_score\displaystyle \underbrace{\mathbf{w}^{\top}\boldsymbol{\phi}(u,i)}_{\text{content\_score}}
  3. 历史交互分用点赞、点击、完播等历史行为修正得分,是新内容最稀缺的信号。
    β⋅hu,i⏟history_score\displaystyle \underbrace{\beta \cdot h_{u,i}}_{\text{history\_score}}
  4. 冷启动条件新内容没有任何交互,所以历史交互项等于零,必须靠内容特征分做开局。
    hu,i=0\displaystyle h_{u,i}=0

内容特征召回:翻菜谱找老食客

一家川菜馆开业前,最聪明的做法不是站在商场门口对所有人喊“快来吃”,而是把印着“麻婆豆腐、水煮鱼”的菜单放到那些平时爱吃辣的人常出没的地方。推荐系统也一样:新内容没有用户行为,可以从内容自身的特征出发,找到“口味相同”的人。

这个阶段叫内容特征召回。系统先把新内容的标题、正文、图片、音频等转换成特征向量,同时把用户的偏好也用向量表示——用户向量通常来自他过去喜欢过的内容。接着计算内容向量和用户向量的相似度,从海量用户中快速挑出前几百个候选。这样即使内容没有点赞,也能凭借“它讲的是篮球还是做菜”找到潜在感兴趣的人。

计算两个内容是否相似,常用余弦相似度:

内容特征召回就像把菜谱翻译成“辣度、麻度、荤素”等坐标,老食客的偏好也映射到同一坐标上。新餐厅没有口碑,但菜谱上的坐标已经足够让导购判断:应该把传单发给谁。

sim(c,d)=vc⋅vd∥vc∥ ∥vd∥\displaystyle \mathrm{sim}(c,d)=\frac{\mathbf{v}_c\cdot \mathbf{v}_d}{\|\mathbf{v}_c\|\,\|\mathbf{v}_d\|}
两个内容的向量越接近,余弦相似度越接近 1,说明它们在语义上是“同类菜”;这一指标完全不需要新内容的历史行为。
  1. 分子两个内容向量的点积,计算对应维度乘积之和,衡量它们在同一方向上的重叠程度。
    vc⋅vd\displaystyle \mathbf{v}_c\cdot \mathbf{v}_d
  2. 分母两个向量的长度相乘,用来消除内容长度或向量模长的影响,避免“长文章天然更相似”。
    ∥vc∥ ∥vd∥\displaystyle \|\mathbf{v}_c\|\,\|\mathbf{v}_d\|
  3. 整体关系点积越大、模长越小,相似度越高,代表两道菜在“口味坐标”上离得更近。
    sim(c,d)=vc⋅vd∥vc∥ ∥vd∥\displaystyle \mathrm{sim}(c,d)=\frac{\mathbf{v}_c\cdot \mathbf{v}_d}{\|\mathbf{v}_c\|\,\|\mathbf{v}_d\|}

标签匹配:按招牌发传单

商场里的新餐厅会在门头挂上“川菜”“夜宵”“学生优惠”这些招牌标签,路过的人一眼就能判断要不要进。推荐系统里也有类似的标签体系:分类(美食、科技、体育)、主题(NBA、减脂餐)、实体(某位球星、某款手机)等。

新内容发布后,运营或模型会给它打上若干标签,然后放进“标签 → 内容”的倒排索引。用户侧也有自己的兴趣标签,比如通过历史行为推断出该用户喜欢“篮球”“做菜”“科技测评”。推荐时只需要把内容的标签和用户的标签做一次集合匹配,就能高效筛出候选集。倒排索引就像商场里的指示牌:顾客想看“篮球”,所有被打上篮球标签的内容立刻集中到眼前。

标签匹配的分数可以这样表示:

标签匹配的好处是快且直观,像传单上印着“麻辣鲜香”,正好递给爱吃辣的人。但它的局限也很明显:如果只认死标签,换一种说法可能就匹配不上。所以标签之外,还需要向量召回和探索机制来兜底。

Stag(u,i)=∑t∈Ti∩Quwt⋅freq(u,t)\displaystyle S_{\mathrm{tag}}(u,i)=\sum_{t \in T_i \cap Q_u} w_t \cdot \mathrm{freq}(u,t)
内容标签和用户兴趣标签重合的部分越多,标签权重越高、用户历史兴趣频率越高,匹配分越高。
  1. 取交集先找出同时出现在内容标签集合 \(T_i\) 和用户兴趣集合 \(Q_u\) 中的标签。
    Ti∩Qu\displaystyle T_i \cap Q_u
  2. 标签权重不同标签重要性不同,比如“热点事件”权重更高,w_t 就是用来控制这个重要性的。
    wt\displaystyle w_t
  3. 用户兴趣频率freq(u,t) 表示用户在标签 t 上的行为频率,越常看篮球的人,篮球标签对新内容的贡献越大。
    freq(u,t)\displaystyle \mathrm{freq}(u,t)

探索利用:发试吃券

新餐厅就算把菜单发给爱吃辣的人,对方也不敢直接点一大桌。更稳妥的办法是送一小份试吃券:成本不高,却能换来一次真实的“试吃反馈”。推荐系统也面临同样的选择:一边是推荐已经证实用户会点开的成熟内容(利用),另一边是给不确定的新内容一点曝光机会(探索)。

探索利用机制,是冷启动的核心策略之一。最朴素的方法是 ε-greedy:大部分时候按照模型理解去推荐最可能被用户喜欢的内容,但留一个小概率 ε,随机展示一些模型信心不足的新内容。这些随机曝光看似浪费,其实是在购买信息:用户点或不点,都让系统对新内容多一分了解。

ε-greedy 的选内容方式可以写成:

送出试吃券当然有成本,但这是打破“没人吃→没评价→没人吃”死循环必须支付的学费。更高级的 UCB 算法还会根据每条内容的曝光次数自动调整探索强度:内容越新、样本越少,越应该多探索;样本累积到一定程度,就逐渐转为靠真实反馈利用。

π(a)={arg⁡max⁡aQ^(a),with prob 1−ϵ,random item,with prob ϵ.\displaystyle \pi(a)=\begin{cases}\arg\max_{a}\hat{Q}(a), & \text{with prob } 1-\epsilon,\\\text{random item}, & \text{with prob } \epsilon.\end{cases}
算法以 \(1-\epsilon\) 的概率选择当前预估分数最高的内容,以 \(\epsilon\) 的概率随机选一条内容,从而保证新内容有少量曝光机会。
  1. 利用分支选择当前预估点击率最高的内容 a,把流量给最有把握的内容。
    arg⁡max⁡aQ^(a)\displaystyle \arg\max_{a}\hat{Q}(a)
  2. 探索分支以概率 ε 随机选一条内容,可能是新内容,也可能是历史上的冷门内容。
    random item\displaystyle \text{random item}
  3. 概率控制1-ε 和 ε 决定了利用与探索的比例,ε 大则探索多、短期指标会下降,ε 小则新内容难出头。
    1−ϵ,ϵ\displaystyle 1-\epsilon, \quad \epsilon

相似迁移:请熟客带路

新餐厅最希望发生的事,是商场另一家老店的老顾客愿意带朋友来尝鲜。老店和新店未必是同一品牌,但顾客口味相近:爱吃老店招牌菜的人,很可能也喜欢新店的同品类菜。内容推荐里的相似内容迁移,做的就是这件事。

具体思路是:一条新内容刚发布时,先找一批和它语义相似、类目相同的成熟内容。这些成熟内容已经积累了用户行为数据,推荐系统可以近似认为:喜欢那些成熟内容的用户,也有较大概率喜欢这条新内容。于是,系统把成熟内容的用户列表作为新内容的候选池,再通过排序层做精细筛选。

这种迁移用数学表达,就是基于物品的协同过滤预测:

相似迁移相当于请老店熟客带路,让新内容在开张第一天就有第一批“基础宾客”。但也要小心,如果新内容和老内容太像,推荐系统只会把它当成老内容的替代品,用户很快产生审美疲劳。因此迁移之外,还要保留内容自身的独特性。

r^u,i=∑j∈Nusim(i,j) ru,j∑j∈Nusim(i,j)\displaystyle \hat{r}_{u,i}=\frac{\sum_{j\in N_u}\mathrm{sim}(i,j)\,r_{u,j}}{\sum_{j\in N_u}\mathrm{sim}(i,j)}
用户 u 对上新内容 i 的预测喜好,等于他对一系列相似老内容 j 的真实行为按相似度加权平均。
  1. 相似老内容集\(N_u\) 是用户 u 曾经有过互动行为的老内容集合。
    j∈Nu\displaystyle j\in N_u
  2. 内容相似度\(\mathrm{sim}(i,j)\) 表示新内容 i 和成熟内容 j 的特征相似度,越相似权重越高。
    sim(i,j)\displaystyle \mathrm{sim}(i,j)
  3. 行为加权求和把用户对老内容的真实点击、点赞等行为 \(r_{u,j}\) 按相似度加权相加。
    ∑j∈Nusim(i,j) ru,j\displaystyle \sum_{j\in N_u}\mathrm{sim}(i,j)\,r_{u,j}
  4. 归一化除以所有相似度之和,避免老内容数量多寡影响分数尺度。
    1∑j∈Nusim(i,j)\displaystyle \frac{1}{\sum_{j\in N_u}\mathrm{sim}(i,j)}

系统链路:从散落工具到完整导流流程

前面讲的四把钥匙,单独使用各有效果,但真实推荐系统里它们必须像一家商场的整体导流方案一样协同工作:菜谱筛选的是可能喜欢你的人,招牌标签吸引的是对你类别感兴趣的人,试吃券负责给不确定的机会,老店带路负责借势。最终把所有这些流量汇入同一个新店开业计划。

完整的冷启动系统通常包含三层。第一层是召回层:内容特征召回、标签匹配、相似内容迁移等多路并行,各自从海量内容里拉回一批候选内容,确保新内容不会在源头就被过滤掉。第二层是排序层:把召回结果的特征分数、探索分数、迁移分数融合成一个综合分,再结合类目打散、多样性控制,决定最终展示顺序。第三层是流量分配与兜底策略:给新内容一个最低曝光保底量,并限制老内容对头部流量的垄断。

综合排序分可以看作一个加权融合:

只有把策略放进系统链路,冷启动才不会变成某个算法工程师的“奇技淫巧”。新内容像一个刚开业的餐厅,需要商场导购在多个入口同时帮它引流,而不是只在门口贴一张传单。

ColdScore(u,i)=λ1 Content(u,i)+λ2 Explore(u,i)+λ3 Transfer(u,i)\displaystyle \mathrm{ColdScore}(u,i)=\lambda_1\,\mathrm{Content}(u,i)+\lambda_2\,\mathrm{Explore}(u,i)+\lambda_3\,\mathrm{Transfer}(u,i)
冷启动排序分是内容匹配分、探索分、迁移分的加权和,三个权重控制不同策略在最终流量里的贡献比例。
  1. 内容匹配分\(\mathrm{Content}(u,i)\) 来自内容特征召回和标签匹配,回答“内容像不像用户会喜欢的”。
    Content(u,i)\displaystyle \mathrm{Content}(u,i)
  2. 探索分\(\mathrm{Explore}(u,i)\) 来自探索利用机制,给曝光次数少的新内容额外加分。
    Explore(u,i)\displaystyle \mathrm{Explore}(u,i)
  3. 迁移分\(\mathrm{Transfer}(u,i)\) 来自相似成熟内容的行为迁移,回答“相似内容有没有被这个用户认可”。
    Transfer(u,i)\displaystyle \mathrm{Transfer}(u,i)
  4. 三个权重\(\lambda_1,\lambda_2,\lambda_3\) 控制三者的相对重要性,通常用线上实验调参。
    λ1+λ2+λ3=1\displaystyle \lambda_1+\lambda_2+\lambda_3=1

评估优化:用数据看招牌是否亮起来

新餐厅开业后,要统计每天多少人路过、多少人进店、多少人二次光顾,才知道开业活动效果如何。推荐系统的冷启动也一样,不能只看“有没有推给用户”,而要系统性地评估:新内容是否真的获得了公平流量?这些流量是否转化成了内容方和平台的长期价值?

离线评估最常用的是覆盖率:在全部新内容中,有多少比例的内容至少获得过一次曝光。如果覆盖率很低,说明大量新内容根本没进候选池。覆盖率之外,还要看新内容的点击率、完播率、点赞率、留存贡献等指标。线上则通过 A/B 实验验证:一组使用冷启动策略,一组不改变原逻辑,对比两组新内容的曝光量、有效互动量和创作者留存。

覆盖率可以简单地写成:

评估不是为了给算法“打分”,而是让系统知道:新餐厅的招牌有没有真的亮起来,灯下有没有客人。只有把曝光覆盖率、互动率、留存结合起来,冷启动才算从“有策略”变成“有效策略”。

Coverage=∣{i∈Inew: exposed(i)=1}∣∣Inew∣\displaystyle \mathrm{Coverage}=\frac{\left|\left\{i\in \mathcal{I}_{\mathrm{new}}:\ \text{exposed}(i)=1\right\}\right|}{\left|\mathcal{I}_{\mathrm{new}}\right|}
覆盖率等于至少获得过一次曝光的新内容数量除以新内容总数,用来衡量冷启动策略是否让新内容“雨露均沾”。
  1. 新内容集合\(\mathcal{I}_{\mathrm{new}}\) 表示某一时间段内所有新发布的内容。
    Inew\displaystyle \mathcal{I}_{\mathrm{new}}
  2. 曝光标记\(\text{exposed}(i)=1\) 表示内容 i 至少被展示给了一位用户。
    exposed(i)=1\displaystyle \text{exposed}(i)=1
  3. 计数与比值分子数出有过曝光的新内容数量,分母统计新内容总量,比值越高说明分发越公平。
    ∣{i∈Inew: exposed(i)=1}∣∣Inew∣\displaystyle \frac{\left|\left\{i\in \mathcal{I}_{\mathrm{new}}:\ \text{exposed}(i)=1\right\}\right|}{\left|\mathcal{I}_{\mathrm{new}}\right|}

AI 应用场景

短视频平台的新视频冷启

阶段:召回 + 流量分配

解决的问题:短视频发布后几小时内没有行为数据,平台如果只按历史热度排序,新视频很难被看见。通过内容特征召回和标签匹配,把视频先分发给相关兴趣人群,再设置一个小比例探索流量池,观察完播和点赞表现,决定是否扩大流量。

具体案例:一位创作者发布“厨房收纳”视频。系统识别出“家居”“收纳”“小户型”等标签,先把视频放进流量池给相关用户看;初始阶段获得 500 次曝光,点击率 4%,完播率高于同类内容,系统随后逐步放大到 50 万流量。新视频因此有机会跑出来。

电商平台的新品冷启

阶段:相似迁移 + 排序融合

解决的问题:新品没有销量和评价,按销量排序的推荐方法对新品极不友好。平台用相似商品的用户行为进行迁移推荐,同时加入探索机制,让新品获得少量曝光,避免“销量越高的商品越好卖,新品永远起不来”的马太效应。

具体案例:一款新无线耳机上架,系统找到同品类中用户行为数据丰富的旧耳机商品,认为喜欢降噪耳机的用户也可能喜欢新品。排序层把相似迁移分和探索加分融合,新品在开售当天进入“可能感兴趣”榜单,最终获得首批真实评价。

新闻资讯App的新文章冷启

阶段:标签匹配 + 探索利用

解决的问题:突发新闻或新兴话题往往没有历史行为数据,但时效性极强,不能等“攒够数据”再推荐。系统通过主题标签快速匹配相关读者,并用探索流量给文章保温。

具体案例:一条科技展会快讯,刚发布时只有“科技”"AI"等标签,系统匹配给关注科技话题的用户;探索策略随机覆盖了一部分平时不看科技但近期有相关阅读的用户,文章在一小时内获得大量冷启动样本,后续模型迅速学会判断该推给谁。

Python 演示

python60 行
import mathimport random  class ColdStartSimulator:    def __init__(self):        self.users = [            {"id": 0, "taste_tags": {"basketball", "tech"}, "liked_items": {"s1", "s2"}},            {"id": 1, "taste_tags": {"music", "art"}, "liked_items": {"s3"}},            {"id": 2, "taste_tags": {"basketball", "food"}, "liked_items": {"s1"}},            {"id": 3, "taste_tags": {"tech", "news"}, "liked_items": {"s2"}},            {"id": 4, "taste_tags": {"music", "movie"}, "liked_items": {"s3"}},        ]        self.similar_items = [            {"id": "s1", "tags": {"basketball", "sports"}},            {"id": "s2", "tags": {"tech", "gadget"}},            {"id": "s3", "tags": {"music", "concert"}},        ]        self.impression_count = 0        self.click_count = 0     def tag_overlap(self, tags_a, tags_b):        if not tags_a or not tags_b:            return 0.0        return len(tags_a & tags_b) / len(tags_a | tags_b)     def transfer_score(self, new_item_tags, user):        best = 0.0        for old_item in self.similar_items:            sim = self.tag_overlap(new_item_tags, old_item["tags"])            if old_item["id"] in user.get("liked_items", set()):                best = max(best, sim)        return best     def rank_candidates(self, new_item_tags, user, epsilon):        overlap = len(new_item_tags & user["taste_tags"]) / max(1, len(user["taste_tags"]))        transfer = self.transfer_score(new_item_tags, user)        exploit = 0.6 * overlap + 0.4 * transfer        if random.random() < epsilon:            explore_bonus = random.random()        else:            explore_bonus = 0.0        return exploit + explore_bonus     def serve_once(self, new_item_tags, user):        score = self.rank_candidates(new_item_tags, user, epsilon=0.2)        self.impression_count += 1        if score > 0.6:            self.click_count += 1        return score  if __name__ == "__main__":    sim = ColdStartSimulator()    new_tags = {"basketball", "tech"}    for user in sim.users:        s = sim.serve_once(new_tags, user)        print("user", user["id"], "score", round(s, 3))    if sim.impression_count > 0:        print("simulated ctr", round(sim.click_count / sim.impression_count, 3))
目的:用一个小型模拟器演示内容冷启动的三种信号——标签匹配、相似内容迁移、ε-greedy 探索,最终计算模拟点击率。
  1. return len(tags_a & tags_b) / len(tags_a | tags_b)用 Jaccard 系数计算两个标签集合的重叠率,重叠越多越相似。
  2. self.impression_count = 0` 和 `self.click_count = 0先初始化曝光和点击计数器,用来统计模拟效果。
  3. best = max(best, sim)只取用户喜欢过的老内容中与新内容最相似的那个,作为迁移信号。
  4. exploit = 0.6 * overlap + 0.4 * transfer把标签匹配分和迁移分加权求和,作为“利用”分数。
  5. if random.random() < epsilon: explore_bonus = random.random()以 20% 概率加入探索随机加分,模拟试吃券行为。
  6. if score > 0.6: self.click_count += 1分数超过阈值视为一次模拟点击,用于观察冷启动策略的整体效果。

常见误区

误区很多人以为推荐系统只能靠用户行为数据工作,刚发布的内容没有行为,算法就只能随机推或者干脆不推。

正解新内容虽然缺少历史交互,但标题、正文、标签、类目、视觉特征都是可用信号。内容特征召回、标签匹配、相似内容迁移都可以在没有行为数据时给出初步排序,相当于新餐厅没有评价,但菜谱本身就是招牌。

为何常见:人们在学习推荐系统时,最先接触的是协同过滤这类纯行为算法,容易把“行为数据”当成推荐唯一燃料。

误区初学者常认为给新内容随机流量会拉低点击率,是平台在“发福利”,没有技术含量。

正解探索不是乱给流量,而是有预算、有记录、有反馈回收的信息采集过程。每次探索行为都会成为新内容的学习样本,帮助模型尽快从“不确定”走向“确定”,本质是用短期指标换长期信息。

为何常见:因为探索看起来像随机,人们忽略了它背后的目标函数和成本控制。

误区有人认为只要内容标签和用户标签完全重合,推荐效果就是最好的。

正解过度精确会导致推荐视野越来越窄,用户永远只看同类内容,新内容也失去发现不同偏好的机会。标签匹配需要和向量召回、探索策略搭配,保持一定的模糊性和多样性。

为何常见:精确匹配在搜索结果里是优点,但推荐系统不是被动回答用户要找什么,而是主动发现用户可能喜欢什么。

误区有人把相似内容迁移理解为把老内容的流量直接导给新内容,甚至复制老内容标题来骗推荐系统。

正解迁移的核心是“行为假设”,不是“流量搬运”。系统认为相似内容被喜欢,不代表用户一定喜欢新内容,因此迁移分还需要和内容特征分、探索分融合,并且要检测内容相似度用于避免同质化。

为何常见:因为迁移的数学形式看起来和协同过滤很像,初学者容易把它简化成“复制热门内容”。

误区项目上线后,产品经理只看新内容点击率是否提升,点击率高就认为冷启动成功。

正解点击只能说明用户愿意点进来看一眼,不能说明内容真正有用。完播率、阅读时长、点赞、收藏、关注、重复访问等深度行为和创作者留存,才是判断冷启动价值的更可靠指标。

为何常见:点击率最容易采集也最直观,但标题党的内容同样能拿到高点击,却伤害长期体验。

面试题

Q1. 内容冷启动中的“冷”主要指什么?

单选题 · easy

  • A.服务器带宽不够
  • B.缺少用户交互记录← 正确答案
  • C.内容格式不统一
  • D.作者账号没有认证

答案:B。冷启动的“冷”特指内容没有用户行为历史,推荐系统无法靠协同信号判断它该给谁。带宽、格式、认证都不是算法意义上的“冷”。就像新餐厅没有评价,而不是餐厅装修不好。

Q2. 基于内容特征的召回,核心依据是什么?

单选题 · easy

  • A.内容标题和标签特征← 正确答案
  • B.用户手机型号参数
  • C.内容发布时间先后
  • D.作者历史粉丝总数

答案:A。内容特征召回依靠内容自身的文本、标签、图文视觉等特征去寻找相似偏好用户。手机型号、发布时间、粉丝总数都不是内容本身的内容特征。这好比用菜谱去判断谁来吃,而不是看厨师有多少粉丝。

Q3. ε-greedy 中 ε=0.2 的含义是?

单选题 · easy

  • A.每次有20%概率随机探索← 正确答案
  • B.每次有80%概率随机探索
  • C.系统只保留20%新内容
  • D.系统只展示20%老内容

答案:A。ε 是探索概率,ε=0.2 意味着每次决策有 20% 概率随机选择内容,另外 80% 概率选择当前模型认为最优的内容。就像拿出 20% 的试吃券去随机邀请顾客。

Q4. UCB 的探索项通常如何变化?

单选题 · mid

  • A.随内容曝光次数线性增加
  • B.随候选池大小固定不变
  • C.随内容曝光次数增加而减少← 正确答案
  • D.随用户点击次数单调上升

答案:C。UCB 的探索项一般正比于 \(\sqrt{\log N / n_i}\),其中 \(n_i\) 是内容 i 的曝光次数。曝光越多,不确定性越小,探索项越小,逐渐转为利用。就像试吃过的餐厅已经积累口碑,不必再盲目发券。

Q5. 相似内容迁移推荐的主要逻辑是什么?

单选题 · mid

  • A.让新内容复制热门标题
  • B.借成熟内容行为推断偏好← 正确答案
  • C.把新内容推给所有老用户
  • D.用热度代替内容相关性

答案:B。相似内容迁移不是复制标题,也不是把流量平均分给所有人,而是找到特征相似的老内容,把老内容积累的用户行为近似迁移到新内容上。类似于老店的熟客更容易接受同品类新店。

Q6. 标签匹配中倒排索引主要为了提高哪种效率?

单选题 · mid

  • A.减少内容存储空间
  • B.更新用户画像速度
  • C.提升标签检索内容效率← 正确答案
  • D.缩短模型训练时间

答案:C。倒排索引是“标签→内容列表”的映射结构,查询某个标签时能立刻拿到一批相关内容,极大提升召回速度。它不直接减少存储或训练时间,只优化检索效率。

Q7. 下列哪些是新内容冷启动的有效策略?

多选题 · mid

  • A.内容特征召回← 正确答案
  • B.标签倒排匹配← 正确答案
  • C.探索利用机制← 正确答案
  • D.删除低互动内容

答案:ABC。内容特征召回、标签匹配、探索利用是新内容冷启动的经典策略。删除低互动内容是事后清理手段,不能帮助新内容获得第一批流量,因此不是正确答案。

Q8. 冷启动排序分通常融合哪些信号?

多选题 · hard

  • A.内容与用户偏好匹配度← 正确答案
  • B.探索随机加分项← 正确答案
  • C.相似内容迁移得分← 正确答案
  • D.内容付费置顶标记

答案:ABC。冷启动排序分通常包括内容匹配分、探索分和迁移分。付费置顶是一种商业策略,不属于算法冷启动信号,如果混入会干扰排序公平性。

Q9. 下列哪种指标更适合衡量冷启动分发覆盖面?

单选题 · hard

  • A.新内容曝光占比← 正确答案
  • B.用户平均播放时长
  • C.服务器响应时间
  • D.广告点击出价

答案:A。新内容曝光占比衡量了多少新内容真的被展示出去,直接反映冷启动分发覆盖面。播放时长是内容质量指标,响应时间看系统性能,广告出价看商业化,都不是覆盖面指标。

Q10. 为什么纯随机探索不是最优策略?

多选题 · hard

  • A.用户推荐体验波动大← 正确答案
  • B.无法积累有效学习信号← 正确答案
  • C.无关内容会浪费曝光← 正确答案
  • D.完全不能发现新兴趣

答案:ABC。纯随机探索会让用户频繁看到无关内容,体验波动大,也很难在短时间形成有效学习信号,曝光被大量无关内容浪费。但随机探索依然能够偶尔发现新兴趣,只是效率太低,不能简单说“完全不能”。