Blanc G. and Rendle S. Adaptive sampled softmax with kernel based sampling. In International Conference on Machine Learning (ICML), 2018.
概
这儿 已经讨论了现在的概率估计 (主要是负样本采样的方式) 是存在 bias 的, 这篇文章用 kernel 的方法来建模和解决这个问题.
符号说明
- x∈X, 样本;
- o:X×Θ→Rn, 将输入映射为一个 n 维 (n 表示总的类别的数目, 这个类别或许需要打引号, 比如在语言模型中每一个词就是一个类, 在推荐系统中, 每个 item 就可以看作是一个类);
- y∈[0,1]n,∑iyi=1, 每个类对应概率;
- s∈{1,…,n}m+1, s 是用于训练的样本, 包括一个正样本加上 m 个采样的负样本, 需要注意的是 s 中的元素是可以重复的, 比如 s=(2,6,7,6,3), 正样本为 2, 而负样本 6 出现了两次;
Motivation
-
我们通常会建模这样的概率分布:
pi:=exp(oi)∑nj=1exp(oj),
并通过如下的损失来优化:
L(y,p)=−n∑i=1yilogpi=logn∑i=1exp(oi)−n∑i=1yioi;(1)
-
但是, 因为 (1) 需要计算所有的 n 个 exp(oj(x)), 而且这个值往往是由 x 和 j 共同决定的, 所以很费时, 此时我们需要用 这儿 的校正的结果:
o′i=oi−log(qi),
并有
p′i:=exp(o′i)∑m+1j=1exp(o′j);(2)
注意: 此时 j 必须采样于 q;
-
qi 越接近真实的 pi, (2) 所存在的 bias 就越小;
-
但是我们注意到, 这个问题, 即建模 q 的问题有以下几个问题:
- qi 实际上是 qi(x), 不同的样本 x 分布是不同的;
- 随着模型的训练, qi 也是会发生变化的.
本文的方法
-
首先作者假设 oj(x) 是通过 x 的 embedding h∈Rd 和类别的 embedding wj∈Rd 通过内积得到的:
oj(x)=⟨h,wj⟩;
-
然后通过如下方式建模 qi:
qi=K(h,wi)∑nj=1K(h,wj)=K(h,wi)⟨ϕ(h),∑nj=1ϕ(wj)=:z∈RD⟩,
倘若我们能够提前计算出 z, 那么 qi 的建模就只和 h,w,z 有关了;
-
当 n 很大的时候, 想要从 q 中采样依旧是一个非常耗时的事情, 但是基于 kernel 的方法有它的特别之处, 如下图所示:

-
首先将 C={1,…,n} 均分成两组, 记作 C1,C2, 然后我们首先根据
qC′|C=∑j∈C′K(h,wj)∑l∈CK(h,wl)=∑j∈C′K(h,wj)∑l∈CK(h,wl)=⟨ϕ(h,z(C′))⟨ϕ(h,z(C)),C′∈{C1,C2}
来采样 C1,C2, 注意, 此时我们需要维护两个额外的向量
z(C1)=∑j∈C1ϕ(wj)z(C2)=∑j∈C2ϕ(wj);
-
在选到 C′ 上重复 1 的操作直到 |C′|=1;
-
在每次更新完参数之后, 记得更新 z(C′).
此时可以发现, 总的采样次数降为 O(log2n), 特别地,
qC1|CqC2|C1…qi|Clogn−1=⟨ϕ(h),z(C1)⟩⟨ϕ(h),z(C)⟩⟨ϕ(h),z(C2)⟩⟨ϕ(h),z(C1)⟩⋯⟨ϕ(h),ϕ(wi)⟩⟨ϕ(h),z(Clogn−1)⟩=⟨ϕ(h),ϕ(wi)⟩⟨ϕ(h),z(C)⟩=qi,
是和原来的是一样的, 只是我们需要多维护几个向量.
Kernel 的选择
作者选择了 K(h,wi)=α⟨h,w⟩2+1, 此时
ϕ(z)=[√a vec(a⊗a),1],
因为在原点附近它对 exp 是一个很好的估计, 此外, 因为二次多项式核对于负 logits 的拟合不是很好, 作者同时将原先的概率建模为:
pi:=exp(|oi|)∑nj=1exp(|oj|),
以保证所有的 score 都是正的. 二者便兼容了.

上图是一个测试结果, 其中 Softmax 表示采用最佳的逼近, 即
qi=pi.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix