深度学习基础(七)—— Gibbs 采样
2016-04-28 22:11
288 查看
仅知道概率密度是不狗的,需要的是样本,gibbs sampling 就是获取样本的。
Gibbs 抽样将高维的连续概率密度分布退化为一维概率密度函数分布的抽样;
2 维 ⇒ 1 维;
Gibbs 采样极大地降低了高维概率分布函数采样的难度;
Gibbs 抽样的三阶段:
Initialization
burn-in
sampling
为了使得采样样本之间尽可能地保持独立,可在采样阶段设置每隔 L 次采样一次:
Gibbs 抽样是一种基于 MCMC(Markov Chain Monte Carlo)策略的抽样方法,具体来说对于一个 d 维的随机向量 X=(x1,x2,…,xd),但是我们无法直接求出 X 的概率分布 p(X),但我们知道给定的 X 的其他分量关于第 i 个分量 xi 的条件分布,即 p(xi|xi−),xi−=(x1,x2,…,xi−1,xi+1,xd)。那么,我们可以从 x 的任意状态,如 (x1(0),x2(0),…,xd(0)) 开始,利用条件分布 p(xi|xi−),迭代地对这状态的每个分量进行抽样。
随着抽样次数的增加,随机变量 (x1(n),x2(n),…,xd(n)) 的概率分布将以 n 的几何级数的速度收敛于 x 的联合概率分布 p(x)。
例如,一个样本是 3 维的,姑且设为 (g,u,b),一般来说,我们无法直接获得样本的分布,但我们知道条件概率 p(g|u,b)、p(u|g,b)、p(b|g,u):
(1)给 (g,u,b) 赋初值,(g0,u0,b0),
(2)利用 p(g|u0,b0),计算 g1
(3)利用 p(u|g1,b0),计算 u1
(4)利用 p(b|g1,u1),计算 b1
(5)重复 (2)-(4),这样我们就得到一个 Markov Chain {(g0,u0,b0),(g1,u1,b1),…,(gt,ut,bt)}
Gibbs 抽样将高维的连续概率密度分布退化为一维概率密度函数分布的抽样;
2 维 ⇒ 1 维;
Gibbs 采样极大地降低了高维概率分布函数采样的难度;
Gibbs 抽样的三阶段:
Initialization
burn-in
sampling
为了使得采样样本之间尽可能地保持独立,可在采样阶段设置每隔 L 次采样一次:
# L, num_burn, num_samples samples = [] for i in range(num_burn+L*num_samples): if i > num_burn: ... x = ... if (i-num_burn) % L == 0: samples.append(x)
Gibbs 抽样是一种基于 MCMC(Markov Chain Monte Carlo)策略的抽样方法,具体来说对于一个 d 维的随机向量 X=(x1,x2,…,xd),但是我们无法直接求出 X 的概率分布 p(X),但我们知道给定的 X 的其他分量关于第 i 个分量 xi 的条件分布,即 p(xi|xi−),xi−=(x1,x2,…,xi−1,xi+1,xd)。那么,我们可以从 x 的任意状态,如 (x1(0),x2(0),…,xd(0)) 开始,利用条件分布 p(xi|xi−),迭代地对这状态的每个分量进行抽样。
x = np.random.randn(d) for i in range(d): x[i] = conditional_prob(...) ...
随着抽样次数的增加,随机变量 (x1(n),x2(n),…,xd(n)) 的概率分布将以 n 的几何级数的速度收敛于 x 的联合概率分布 p(x)。
例如,一个样本是 3 维的,姑且设为 (g,u,b),一般来说,我们无法直接获得样本的分布,但我们知道条件概率 p(g|u,b)、p(u|g,b)、p(b|g,u):
(1)给 (g,u,b) 赋初值,(g0,u0,b0),
(2)利用 p(g|u0,b0),计算 g1
(3)利用 p(u|g1,b0),计算 u1
(4)利用 p(b|g1,u1),计算 b1
(5)重复 (2)-(4),这样我们就得到一个 Markov Chain {(g0,u0,b0),(g1,u1,b1),…,(gt,ut,bt)}
相关文章推荐
- Nodejs mysql pool使用实例
- 电脑桌面直播的各种应用场景(这里都齐全了)
- code1319 玩具装箱
- bzoj 3196: Tyvj 1730 二逼平衡树
- CALayer和position和anchorPoint
- php+nginx 上传文件大小限制要修改的文件
- 二叉搜索树的后序遍历序列
- Math app 2.0
- maven 学习---Maven 插件
- var target = event.target
- Symfony2命令行命令详解
- Swift 协议代理的使用和传值
- 在mac上用Xcode写程序, run的时候总是失败, 显示clang: error: linker command failed with exit code 1
- Android Studio系列教程六--Gradle多渠道打包
- AlwaysOn实现只读路由
- 电商网站架构设计
- LNMP环境搭建
- 一次广告投放的感受
- cocoaPods的使用
- 练习三1012