从 p 范数球 ( )生成均匀噪声| | x ||p≤ r||x||p≤r

机器算法验证 模拟 噪音
2022-03-25 22:33:38

我正在尝试编写一个函数,该函数会生成来自维 p 范数球的均匀分布噪声:n

||x||pr

我找到了圆()(http://mathworld.wolfram.com/DiskPointPicking.html)的可能解决方案,但是我无法将其扩展到不同的值。p=2p

我尝试通过从均匀分布中抽取随机样本,并在它不满足给定约束时重新绘制来做到这一点。然而,除了它是一个丑陋的解决方案之外,它对于高维也变得在计算上不可行。

2个回答

我在 kjetil b halvorsen ( https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=758215 ) 建议的论文中找到了完整的解决方案。老实说,我很难理解它背后的数学原理,但最终的算法相当简单。如果我们有维度、半径和范数 ,则:nrp

1) 生成独立的随机实标量,其中是广义高斯分布(在指数而不仅仅是 )nεi=G¯(1/p,p)G¯(μ,σ2)e|x|pp=2

2) 构造分量,其中是独立的随机符号xsiεisi

3) 生成,其中是均匀分布在区间 [0, 1] 中的随机变量。z=w1/nw

4) 返回y=rzx||x||p

使用均匀分布的多元变量

Taeke 提供了一篇文章的链接,下面的文本通过具体解释 2-norm 和 1-norm 的情况使该文章更加直观。

2-范数x2r

样品方向

您可以使用此结果http://mathworld.wolfram.com/HyperspherePointPicking.html

多元高斯分布变量(具有单位协方差矩阵)仅取决于距离或平方和。X

f(X1,X2,...,Xn)=1in12πe12xi2=12πe121inxi2

因此均匀分布在 n 维超球体的表面上。XX2


样本距离

要完成,您只需对距离进行采样,将球体上的均匀分布更改为球体中的均匀分布。(这与您的磁盘点拾取链接示例或多或少相似)

如果您只是简单地将采样为均匀分布,那么您将在中心附近具有相对较高的密度(体积缩放为因此一小部分点最终会出现在体积中,它更密集靠近中心,并不意味着均匀分布)rrnrrn

相反,如果您使用个根,那么您将得到一个均匀分布。n

1-范数x1r

方向

在这种情况下,您从拉普拉斯分布而不是高斯分布中采样,然后除以 1 范数。均匀分布在 n 维 1 范数球面上。XX|X|1

我没有正式的证据,只有直觉

(由于 pdf 与位置无关,因此您会期望任何具有相同 1 范数的无穷小面积/体积具有相同的概率,并且当您将其折叠到单位表面时,相同的 )f(x)dVf(x)dA

但模拟测试看起来不错。

模拟拾取 20000 个值均匀分布

library(rmutil)
x <- abs(rlaplace(20000))
y <- abs(rlaplace(20000))
z <- abs(rlaplace(20000))
rn <- abs(x)+abs(y)+abs(z)

xi <- (x/rn)
yi <- (y/rn)
zi <- (z/rn)
plot(sqrt(0.5)*(xi-yi),
     sqrt((0.5-0.5*(xi+yi))^2+zi^2),
     pc=21,bg=rgb(0,0,0,0.02), col=rgb(0,0,0,0),cex=1)

距离

距离与 2 范数情况相似(体积仍按缩放)。rn

p-范数xpr

在这种情况下,如果您希望遵循相同的原则,则需要从具有的分布中采样(我假设)。这些是广义正态分布,可能与Taeke 提到f(x)e|x|pG()