codecamp

TensorFlow 贝叶斯蒙特卡罗(contrib)

蒙特卡罗一体化和助手.

背景

蒙特卡罗一体化是指以样本均值估计期望的做法.

例如,给定 Z in R^k 具有密度的随机变量 p,函数的期望 f 可以近似为:

<div> $E_p[f(Z)] = \int f(z) p(z) dz$ </div>
<div> $          ~ S_n
          := n^{-1} \sum_{i=1}^n f(z_i),  z_i\ iid\ samples\ from\ p.$</div>

如果是\\(E_p[|f(Z)|] < infinity\\),那么\\(S_n\\) --> \\(E_p[f(Z)]\\) 由大数的强定律决定;如果\\(E_p[f(Z)^2] < infinity\\),则\\(S_n\\)随着方差渐近正常\\(Var[f(Z)] / n\\)

贝叶斯统计学的从业者经常发现,分布 p 只知道一个常数时,他们想要估计\\(E_p[f(Z)]\\)。例如,联合分布p(z, x)可能是已知的,但证据\\(p(x) = \int p(z, x) dz\\)可能是难以处理的。在这种情况下,可以选择参数化分布族\\(q_\lambda(z)\\),并且最优\\(\lambda\\)是一个\\(q_\lambda(z)\\)\\(p(z | x)\\)之间的最小化 KL 散度。我们只知道 p(z, x),但这足以找到\\(\lambda\\)

日志空间评估和减去最大值

当随机变量存在于高维空间中时,必须注意。例如,朴素的重要性样本估计\\(E_q[f(Z) p(Z) / q(Z)]\\)涉及到两个术语的比例\\(p(Z) / q(Z)\\),为了具有有限积分, 每个尾必须比\\(O(|z|^{-(k + 1)})\\)下降的速度更快。该比率通常为零或无穷大,直到数值精度。

为此,我们有:

<div> $Log E_q[ f(Z) p(Z) / q(Z) ]$ </div>
<div> $   = Log E_q[ \exp\{Log[f(Z)] + Log[p(Z)] - Log[q(Z)] - C\} ] + C,$  where </div>
<div> $C := Max[ Log[f(Z)] + Log[p(Z)] - Log[q(Z)] ].$ </div>

指数项的最大值将为0.0,并且可以以稳定的方式评估期望值。

Ops

TensorFlow贝叶斯熵(contrib)
TensorFlow 贝叶斯随机图(contrib)
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

TensorFlow 函数介绍

TensorFlow 函数模块:tf

TensorFlow的image模块

TensorFlow使用之tf.io

TensorFlow使用之tf.keras

TensorFlow函数教程:tf.keras.applications

TensorFlow函数教程:tf.keras.backend

TensorFlow使用之tf.metrics

TensorFlow使用之tf.nn

TensorFlow使用之tf.python_io

TensorFlow 功能函数

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }