3

采样(四):从正态分布构造均匀分布

 2 years ago
source link: https://allenwind.github.io/blog/12188/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
Mr.Feng Blog

NLP、深度学习、机器学习、Python、Go

采样(四):从正态分布构造均匀分布

如何从正态分布构造均匀分布?

问题1:如果有正态分布生成器GnGn,如果获得均匀分布生成器?

问题2:如果样本x1,x2,…,xnx1,x2,…,xn独立采样自正态分布,如果使其变换为均匀分布?

逆变换采样

累积分布函数(CDF)是个单调函数,那么累积分布函数的反函数为,

F−1(u)=inf{x|F(u)≥x}F−1(u)=inf{x|F(u)≥x}

如果u∼U[0,1]u∼U[0,1],那么F−1(u)F−1(u)服从分布F(x)F(x)。

P(F−1(u)≤x)=P(u≤F(x))=P(u≤y)∣∣y=F(x)=y|y=F(x)=F(x)P(F−1(u)≤x)=P(u≤F(x))=P(u≤y)|y=F(x)=y|y=F(x)=F(x)

对于很多分布来说,逆函数F−1(u)F−1(u)​并不容易计算,因此很多情况下无法直接使用逆变换采样。

F(F−1(u))=u∼U[0,1]F(F−1(u))=u∼U[0,1]

也就是说,如果获得累积分布为F(x)F(x)的随机变量tt,那么F(t)F(t)为均匀分布。例如xi∼N(0,1)xi∼N(0,1),那么标准正态分布的累积分布函数(CDF)Φ(xi)Φ(xi)服从均匀分布。

采样方法的逆

Box-Muller技巧如果逆着来,直观上很好理解,即

  • 独立采样x1∼N(0,1),x2∼N(0,1)x1∼N(0,1),x2∼N(0,1)
  • 计算z=x21+x22z=x12+x22​,也就是一个χ(x)χ(x)分布
  • 那么u=1−exp(−z2)u=1−exp⁡(−z2)为均匀分布

简单来说就是,可通过正态分布生成器获得均匀分布生成器,n1,n2n1,n2​独立采样自标准正态分布,那么

u=1−e−n21+n222u=1−e−n12+n222

服从均匀分布U[0,1]U[0,1]​​​。这种方法需要独立采样x1,x2x1,x2。

函数光滑逼近

第一部分的讨论我们有结论,如果随机变量xx服从累积分布函数F(x)F(x),那么F(x)F(x)服从均匀分布。因为我们从x=F−1(u),u∼U[0,1]x=F−1(u),u∼U[0,1]中构造该随机变量,而

u=F(F−1(u))u=F(F−1(u))

对于正态分布随机变量xx来说,Φ(x)Φ(x)服从均匀分布。但是Φ(x)Φ(x)是积分形式,

Φσ(x)=∫x−∞1|σ|√πe−(x/σ)2dx=∫0−∞1|σ|√πe−(x/σ)2dx+∫x01|σ|√πe−(x/σ)2dx=12+12erf(xσ√2)Φσ(x)=∫−∞x1|σ|πe−(x/σ)2dx=∫−∞01|σ|πe−(x/σ)2dx+∫0x1|σ|πe−(x/σ)2dx=12+12erf⁡(xσ2)

无办法直接求解。一个思路是使用初等函数逼近Φ(x)Φ(x),在采样(二):从正态分布采样也有相关的讨论。目前最好的近似结果是来自论文Gaussian Error Linear Units (GELUs)中的结论,即

Φ(x)≈12(1+tanh[√2π(x+0.044715x3)])Φ(x)≈12(1+tanh⁡[2π(x+0.044715x3)])

论文中还有这个结论,

Φ(x)≈σ(1.702x)Φ(x)≈σ(1.702x)

两种近似的采样对比,

直观上看,第一种逼近的采样结果更好。

本文提供了两种思路解决通过正态分布样本构造均匀分布的问题。

转载请包括本文地址:https://allenwind.github.io/blog/12188
更多文章请参考:https://allenwind.github.io/blog/archives/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK