type
Post
status
Published
date
Oct 4, 2025
slug
summary
在学习 DSSM / Two-Tower 召回模型时,经常会看到 in-batch negative、sampled softmax、logQ correction 等概念。很多文章会提到 “logits − logQ 可以缓解热门偏置、提升长尾”,但很少从训练目标和负采样分布的角度把这个机制讲清楚。实际上,(-\log Q) 的核心作用并不是刻意优化长尾,而是用于纠正负采样分布带来的训练偏差(sampling bias),使 sampled softmax 的优化目标更接近 full softmax。本文整理了自己理解这一问题的过程,从负采样、logQ correction 到长尾采样策略,尝试用更直观的方式解释这些概念之间的关系。
tags
DL
思考
数学
category
知行合一
icon
password
在学习 DSSM / Two-Tower 召回模型时,经常会看到 in-batch negative、sampled softmax、logQ correction 等概念。很多文章会提到 “logits − logQ 可以缓解热门偏置、提升长尾”,但很少从训练目标和负采样分布的角度把这个机制讲清楚。实际上,(-\log Q) 的核心作用并不是刻意优化长尾,而是用于纠正负采样分布带来的训练偏差(sampling bias),使 sampled softmax 的优化目标更接近 full softmax。本文整理了自己理解这一问题的过程,从负采样、logQ correction 到长尾采样策略,尝试用更直观的方式解释这些概念之间的关系。
思路: 概率推导 → 直觉解释 → logit形式 → 为什么不是除以 q 而是减 logq。
原始目标 Full Softmax
真实训练目标是Softmax:
多分类交叉熵损失CE:
其中相似度:
问题:
item数量(V)可能达到百万级,无法计算这一项:
用 Sampled Softmax 近似
所以我们只能通过采样进行近似,假设我们只采样 K 个负样本:
这些 negative 来自分布
例如:
- 样本(物品)出现的频率 item popularity
- unigram distribution
- batch distribution
采样带来的偏差 Bias
如果直接写:
这是错误的。因为:真实 softmax 底下是这样的
即我们想要近似的目标:
但我们现在只用了:
而且这些样本是从 采样的。
通过重要性采样 Importance Sampling 修正
在深度学习中,Batch一般是随机选取,我们可以认为Batch内的分布符合真实数据分布
则对于服从分布 的 有
这是 importance sampling 基本公式。
从期望值理解:为什么从 q(i) 采样,每个样本要除以 q(i)。
在这里可以被看成我们softmax中的
因此:
可以写成期望:
用 K 个样本估计:
把它放回 softmax
真实 softmax
用 importance sampling 近似
其中
写成 logit 形式
注意:
因为
所以:
于是:
得到 logQ correction
于是新的 logit:
这就是:logQ correction
代码工程优化
因为 softmax 的输入必须是 logit,而我们真实需要:
为了保持 softmax 形式:
就必须写成:
所以:
- 重要性采样需要给样本加权 importance weight = 1 / q(i)
- 放入Softmax:
- 提前在logtis处理:exp(s_i - log q(i))
InBatchNeg的理解
上面的所有推导,以及 只是为了数据计算层面「近似」和「纠偏」,让 sampled softmax / in-batch negatives 的训练行为接近 full softmax。
那么如何理解其给InBatchNeg带来的贡献或者是在推荐系统中其到的作用呢?
更准确地说:
logits - logQ只有一个理论目的,但有两个理解方向。但以上理解容易让人认为 -logQ 是一种优化手段,可以起到打压热门、提升长尾的效果。但其实并不是这样,我们换个说法,就会发现他们仅仅只是为了「消除近似偏差」or「补偿」or「纠偏」。
如果不减 logQ
热门 item 会被过度惩罚
如果不减 logQ
冷门 item 几乎不会被训练
思维扩展
学术界理解
Correcting the LogQ Correction: Revisiting Sampled Softmax for Large-Scale Retrieval 论文链接 RecSys2025中有文章提出,这种纠偏方式仍然存在偏差。在 sampled softmax 中:
- negative 是 sampled
- positive 是 deterministic
但是 logQ 推导默认 positive 也来自 q(i) 这是错的,详细可阅读文章。
“冷门 item 几乎不会被训练” 怎么理解?
那如果真的要做打压热门提升长尾,应该怎么做?
- Author:YelloooBlue
- URL:https://tangly1024.com/article/31ee32f0-1b7f-805d-b4b3-f6e14d0a477c
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!










