【问题标题】:Sampling from gaussian distribution从高斯分布采样
【发布时间】:2020-10-07 21:54:13
【问题描述】:

我的问题非常具体。给定具有均值和标准差的k 维高斯分布,假设我希望从该分布中抽取10 点。但是10 样本应该彼此非常不同。例如,我不希望对那些非常接近均值的5 进行采样(非常接近,我们可以假设此示例在1 sigma 内),如果我进行随机采样可能会发生这种情况。让我们还添加一个额外的约束,即所有抽取的样本应该至少相距 1 sigma。有没有一种已知的方法可以有条不紊地以这种方式进行采样? PyTorch 中有没有这样的模块可以做到这一点?

对不起,如果这个想法是不恰当的,但我正在尝试了解这样的事情是否可能。

【问题讨论】:

  • 所以你想生成一个高斯分布,从中选择n个样本,但是每个样本之间应该至少相差1 sigma?
  • @wundermahn 是的,我刚刚更新了问题,询问 Python 中是否存在一个模块可以有效地做到这一点?
  • 为什么不对您需要的每个 n 样本使用 torch.normal() 和不同的 meanstd,然后将所有样本堆叠在一个张量中?另一个想法是 oversample 并丢弃不符合您的约束的样本。
  • @kmario23 请参阅我对以下关于过采样的答案的评论。我在那里解释了为什么我认为这种方法在计算上是令人望而却步的。关于使用不同的meanstd,不幸的是,这不是我的用例的选项。

标签: python pytorch sampling normal-distribution


【解决方案1】:

据我所知,没有这样的图书馆。您要解决的问题很简单。只需检查您获得的随机数是否与平均值“足够远”。该检查的复杂性是恒定的。一个点在平均值的一个 sigma 之间的概率约为 32%。可能性不大。

【讨论】:

  • 是的,这是一个公平的想法。但请允许我提出一个不同的问题。如果我希望我的所有样本与其他所有样本至少相距1 sigma 怎么办?然后随着所需样本数量的增加,可能需要对更多的随机数进行采样,这在计算上可能会令人望而却步,不是吗?
  • 同意,这绝对是一个更有趣的问题。一个复杂性无法从我的脑海中决定的人。它会需要更长的时间吗?绝对。
猜你喜欢
  • 2011-11-03
  • 2012-08-06
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 2013-04-20
  • 1970-01-01
  • 2019-08-03
相关资源
最近更新 更多