You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch实现Skip-Gram时subsampling公式返回值大于1是否合理

问题解答

这个实现完全符合原Skip-Gram论文的子采样设计,不存在逻辑错误,概率返回值大于1是刻意保留的特性,不需要强行限制在0-1区间。


公式逻辑说明

原Word2Vec论文中定义的高频词下采样保留概率公式就是你贴出的形式:
$$P(w_i) = \left( \sqrt{\frac{z(w_i)}{t}} +1 \right) \cdot \frac{t}{z(w_i)}$$
其中:

  • $z(w_i)$是词$w_i$在语料中的词频占比
  • $t$是人为设定的频率阈值,通常取1e-3到1e-5之间

这个公式的设计目标非常明确:只对频率超过阈值的高频词做降采样,频率低于阈值的低频词全部保留,对应计算结果的两种情况:

  • 当$z(w_i) \leq t$时,计算得到的$P(w_i) \geq 1$。此时筛选条件恒成立,对应低频词100%被保留,不会被采样剔除。
  • 当$z(w_i) > t$时,计算得到的$P(w_i) < 1$,且词频越高,保留概率越低,正好实现对无太多语义信息的高频停用词的降采样。

代码里的筛选逻辑如下:

random.random() < subsample_prob(w)

由于random.random()本身只会返回[0,1)区间的浮点数,当subsample_prob(w)返回值≥1时,条件永远为真,自动处理了低频词全保留的场景,不需要额外加min(1, p)的截断操作。

直观计算示例

以常用阈值t=1e-3为例:

  • 某低频词z=0.0001(万分之一出现概率,低于阈值):代入公式得P≈13.16>1,每次遍历都会被保留
  • 某高频词z=0.01(百分之一出现概率,高于阈值):代入公式得P≈0.416,只有约41.6%的概率被保留,符合降采样预期

内容的提问来源于stack exchange,提问作者Dogo-San

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:42:10