tensorflow是否通过pdf传播渐变

时间:2018-04-08 20:44:44

标签: tensorflow

可以说,分配函数的定义如下:

dist = tf.contrib.distributions.Normal(mu, sigma)

并从分布中抽取样本

val = dist.pdf(x)

并且该值在模型中用于预测变量

X_hat = f(val)
loss = tf.norm(X_pred-X_hat, ord=2)

如果我想优化变量mu和sigma以减少我的预测错误,我可以执行以下操作吗?

train = tf.train.AdamOptimizer(1e-03).minimize(loss, var_list=[mu, sigma])

我有兴趣知道渐变例程是通过正态分布传播的,还是我应该期待一些问题,因为我对定义分布的参数进行渐变

1 个答案:

答案 0 :(得分:5)

tl; dr:是的,渐变反向传播可以与beat.name: ebb8a5ec413b beat.hostname: ebb8a5ec413b host: ebb8a5ec413b tags: beat.version: 6.2.2 source: /opt/apache-tomcat-7.0.82/logs/IDExtraction.log otype: extractOCRData duration: 12344 transaction_id: abcdef1234 @timestamp: April 9th 2018, 16:20:31.853 offset: 805,655 @version: 1 error: error message: 2017-01-05T14:28:00 INFO zeppelin IDExtractionService transactionId abcdef1234 operation extractOCRData received request duration 12344 exception error occured _id: 7X0HqmIBj3MEd9pqhTu9 _type: doc _index: filebeat-2018.04.09 _score: 6.315 一起正常工作。

tf.distributions.Normal不从分布中抽取样本,而是返回dist.pdf(x)处的概率密度函数。这可能不是你想要的。

要获得随机样本,您真正想要的是致电x。对于许多随机分布,随机样本对参数的依赖性是非常重要的,并且不一定是可逆的。

然而,正如@Richard_wth指出的那样,特别是对于正态分布,可以通过重新参数化来获得对位置和比例参数的简单依赖(dist.sample()mu)。

事实上,在sigma tf.contrib.distributions.Normal(最近迁移到tf.distributions.Normal)中,这正是sample的实施方式:

def _sample_n(self, n, seed=None):
  ...
  sampled = random_ops.random_normal(shape=shape, mean=0., stddev=1., ...)
  return sampled * self.scale + self.loc

因此,如果您提供缩放和位置参数作为张量,则反向传播将在这些张量上正常工作。

请注意,这种反向传播本质上是随机的:它将根据普通高斯变量的随机抽取而变化。但是,从长远来看(通过许多培训示例),这可能会像您期望的那样发挥作用。