变分贝叶斯学习(variational bayesian learning)及重参数技巧(reparameterization trick)
摘要:常規的神經網絡權重是一個確定的值,貝葉斯神經網絡(BNN)中,將權重視為一個概率分布。BNN的優化常常依賴于重參數技巧(reparameterization trick),本文對該優化方法進行概要介紹。
論文地址:http://proceedings.mlr.press/v37/blundell15.pdf
網絡權重的點估計
常規神經網絡可以基于MLE或MAP對權重作點估計。
基于MLE(maximum likelihood estimation):
基于MAP(maximum a posteriori):
對權重施加先驗,等價于進行正則化。如果施加的是高斯先驗,相當于進行L2正則,如果是一個laplace先驗,相當于L1正則。
貝葉斯方法
貝葉斯推斷在給定訓練數據的情況下,計算網絡參數的后驗概率,理論上可以通過以下方式對樣本標簽所服從的分布進行預測:
Hinton等人提出對網絡權重的貝葉斯后驗分布進行變分估計,變分學習尋找參數θ,來最小化分布q(w|θ)和權重真實后驗分布之間的KL距離,這里的參數θ可理解為w所服從分布的參數,比如高斯的μ和σ:
這個loss函數就是變分自由能(variational free energy),也稱為期望下界(expected lower bound, ELBO)。
可以將loss函數簡記為:
損失函數的后半部分代表與數據相關,稱之為似然損失,前半部分與先驗有關,稱為先驗損失。該損失也被稱為最小描述長度(minimum description length, MDL)
無偏蒙特卡洛梯度
我們使用梯度下降的方式對上述損失進行優化。
在特定的條件下,期望的微分等于微分的期望。
命題1:假設ε服從分布q(ε),令w = t(θ, ε),其中t(θ, ε)是一個確定性函數,假如w的邊緣密度q(w|θ)滿足q(ε) dε = q(w|θ) dw,那么:
證明:
確定性函數 t(θ, ε)將一個隨機噪聲和變分后驗參數轉換為一個變分后驗。
令,我們可以將命題1用于優化。通過蒙特卡洛采樣,可以通過反向傳播算法對網絡進行優化。
命題1就是所謂的重參數技巧(reparameterization trick)。
變分高斯后驗
基于高斯后驗的變分學習訓練過程如下:
這里就是常規反向傳播算法得到的梯度。
基于tensorflow probability的貝葉斯全連接網絡示例
import tensorflow as tf
import tensorflow_probability as tfp model = tf.keras.Sequential([
tfp.layers.DenseReparameterization(512, activation=tf.nn.relu),
tfp.layers.DenseReparameterization(10),
]) logits = model(features)
neg_log_likelihood = tf.nn.softmax_cross_entropy_with_logits(
labels=labels, logits=logits)
kl = sum(model.losses)
# loss由兩部分構成:(1)負對數似然(2)參數分布與其先驗分布(regularizer)之間的KL距離
loss = neg_log_likelihood + kl
train_op = tf.train.AdamOptimizer().minimize(loss)
總結
以上是生活随笔為你收集整理的变分贝叶斯学习(variational bayesian learning)及重参数技巧(reparameterization trick)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: groups 用户所归属的用户组查询
- 下一篇: java:类集框架conllection