阅读(36.3k) 书签 (0)

TensorFlow贝叶斯熵(contrib)

2019-01-31 18:07 更新

熵操作

背景

常见的香农熵,证据较低的 BOund(ELBO),KL分歧,更多都具有信息理论的使用和解释.它们也经常用于变分推理.这个库汇集了用于估计他们 Ops,例如使用蒙特卡罗期望。

例子

用 ELBO 拟合变分后验的例子.

#我们首先假设知道关于密度 p(z,x)超过
#潜在变量z和固定测量 x 的对数.由于 x 是固定的,Python 
#函数不会将 x 作为参数.
def  log_joint ( z ): 
  theta = tf.Variable(0.)  #有助于定义log_joint的可修改变量.
  ...

#接下来,定义具有可训练参数的正态分布.
q =distributions.Normal(mu =tf.Variable(0.),sigma = tf.Variable(1.))

#现在,定义一个损失函数(负 ELBO),当最小化时,将调整
#mu,sigma 和 theta,增加 ELBO,我们希望这两者都可以减少
#q(z)和 p(z|x)之间的 KL 散度,并增加 p(x).请注意,我们
#不能同时保证,但一般来说,我们期望两者都会发生.
elbo = entropy.elbo_ratio(log_p ,q,n = 10) 
loss =  - elbo

#最小化损失 
train_op = tf.train.GradientDescentOptimizer (0.1 ).minimize(loss) 
tf.global_variables_initializer().run()
for step in range(100 ): 
  train_op.run ()

Ops