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

PyTorch中Categorical分布采样结果高度重复的解决方法问询

问题本质说明

你观测到的采样结果符合PyTorch Categorical 分布的预期逻辑,不属于采样方法的bug:你给出的概率张量中,索引为1的类别的概率为8.9753e-01(也就是接近90%),剩下21个类别的总概率加起来仅约10%,所以100次采样中90次返回1是完全符合概率分布的结果。

如果你的需求是降低采样的集中度,获得更多样的动作输出,可以参考以下方案:


方案1:调整Softmax温度系数

在计算Softmax前对网络输出的pi除以一个大于1的温度参数τ,可以拉平概率分布,降低高概率类别的权重,提升采样多样性:

# 温度参数τ可自行调整,τ越大分布越接近均匀,τ=1时为原始分布
temperature = 3.0
probs = T.softmax(pi / temperature, dim=1)

注意:温度参数不宜设置过大,否则会完全抹去模型学习到的策略偏好,导致动作完全随机。

方案2:添加ε-贪婪探索机制

训练阶段可以加入概率随机探索的逻辑,固定比例的情况下完全随机选择动作,其余时间按模型输出的概率采样:

epsilon = 0.1 # 10%概率随机探索,可随训练进程衰减
if T.rand(1).item() < epsilon:
    action = T.randint(0, 22, (1,)).item()
else:
    dist = Categorical(probs)
    action = dist.sample().numpy()[0]

方案3:检查模型训练逻辑

如果当前的极端概率分布不符合你的预期,大概率是训练流程存在问题,可优先排查以下点:

  • 奖励函数设置是否合理,是否只有选择索引1对应的动作才能获得正向奖励
  • 训练数据是否存在类别不平衡,大部分样本的最优动作都是索引1
  • 损失函数计算、梯度更新逻辑是否存在错误,导致模型策略收敛到局部最优

内容的提问来源于stack exchange,提问作者noob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 11:45:03