TensorFlow 計(jì)算Renyi分歧

2018-08-30 15:56 更新

tf.contrib.bayesflow.entropy.renyi_ratio

renyi_ratio (  
    log_p ,  
    q ,  
    alpha ,  
    z = None ,  
    n = None ,  
    seed = None ,  
    name = 'renyi_ratio' 
)

定義在 tensorflow/contrib/bayesflow/python/ops/entropy_impl.py

參見指南:貝葉斯熵(contrib)>操作

使用 Monte Carlo 估計(jì)出現(xiàn)在 Renyi 分歧中的比率.

這可以用于計(jì)算 Renyi(alpha)分歧,或者基于 Renyi 分歧的日志痕跡近似值.

定義

用 z_i 獨(dú)立同分布樣品 q,和 exp{log_p(z)} = p(z),這操作返回查看(偏向有限個(gè) n)估計(jì):

(1 -alpha)^ { - 1 } Log[ n^{- 1} sum_ {i = 1 } ^ n ( p(z_i)/q(z_i))^ {1-alpha}  
\approx(1-alpha)^ {- 1 } Log[ E_q [( p(Z)/q(Z))^ { 1 - alpha }]]

該比例出現(xiàn)在不同的上下文中:

Renyi 分歧

如果 log_p(z) = Log[p(z)] 是分配的日志概率,并且 alpha > 0,alpha != 1 ,那么該操作近似于 -1 倍仁義分歧:

# 選擇合理的高 n 來限制偏移,見下文 
renyi_ratio ( log_p , q ,alpha,n = 100 )  
                \approx - 1  * D_alpha [ q || p ] ,where
D_alpha [ q || p ]  :=  (1 - alpha)^ {-1} Log E_q [(p(Z)/q(Z))^ { 1 - alpha} ] 

Renyi(或 “alpha”)的分歧是非負(fù)數(shù),并且當(dāng)且僅當(dāng) q = p 時(shí)它等于零;alpha 的各種限制導(dǎo)致不同的特殊情況:

alpha D_alpha[q||p] 
-----      --------------- 
-- > 0     Log[int_ {q >0} p(Z)dz] 
= 0.5 ,   -2 Log[ 1- Hel^ 2[q||p]] ,(\propto squared Hellinger distance)
-- > 1     KL[q||p] 
= 2        Log[1 + chi ^ 2[q||p]] ,(\propto squared Chi - 2 divergence )
-- > infty Log[max_z{q(z)/ p(z)}] ,(min description length principle).

對(duì)數(shù)證據(jù)近似

如果 log_p (z) = log [p (z, x)] 是聯(lián)合分布 p 的日志,這是在變分推理中常見的 ELBO 的一種替代方法.

L_alpha( q ,p )= Log[p(X)] - D_alpha[q||p]

如果 q 和 p 有同樣的支持,并且 0 < a <= b < 1,則可以顯示出 ELBO <= D_b <= D_a <= Log[p(x)].因此,該操作允許 ELBO 和真實(shí)證據(jù)之間進(jìn)行平滑的插值.

穩(wěn)定性說明

請(qǐng)注意,當(dāng) 1 - alpha 值不小的時(shí)候,比例 (p(z) / q(z))^{1 - alpha} 會(huì)受到下溢/溢出問題的影響.因此,它在集中后在對(duì)數(shù)空間中進(jìn)行評(píng)估.盡管如此,infinite / NaN 的結(jié)果還是會(huì)出現(xiàn).為此,人們可能希望 alpha 逐漸縮小,見操作 renyi_alpha;使用 float64 也將有所幫助.

有限樣本量的偏差

由于對(duì)數(shù)的非線性,對(duì)于隨機(jī)變量{X_1,...,X_n},有 E[ Log[sum_{i=1}^n X_i] ] != Log[ E[sum_{i=1}^n X_i] ].結(jié)果,這個(gè)估計(jì)是有限偏移的 n.對(duì)于 alpha < 1 ,它是不減少的 n(預(yù)期中).例如,如果 n = 1,此估計(jì)器產(chǎn)生與 elbo_ratio 相同的結(jié)果,并且當(dāng) n 增加的時(shí)候,估計(jì)的預(yù)期值也增加.

呼叫簽名

用戶提供 Tensor 樣品 z 或 樣品數(shù)量來繪制 n.

ARGS:

  • log_p:從可調(diào)用映射樣本 q 到具有形狀 broadcastable 的 Tensors 再到 q.batch_shape.例如,log_p “就像” q.log_prob 一樣工作.
  • q:tf.contrib.distributions.Distribution;log_p 和 q 應(yīng)在同一組中得到支持.
  • alpha:張量與形狀 q. batch_shape 和的值不等于1.
  • z:來自 p 的樣品張量,由 p.sample 從一些 n 生成.
  • n:整數(shù)張量;未提供 z 時(shí)要使用的樣本數(shù).請(qǐng)注意,這可能是高度偏移的小 n, 見字符串.
  • seed:隨機(jī)數(shù)生成器的 Python 整數(shù).
  • name:給該操作提供一個(gè)名字.

返回:

  • renyi_result:樣本的縮放對(duì)數(shù)平均值.形狀張量等于 q 的批次形狀,并且 dtype= q.dtype.


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)