1. 程式人生 > >【TensorFlow-windows】學習筆記六——變分自編碼器

【TensorFlow-windows】學習筆記六——變分自編碼器

前言

對理論沒興趣的直接看程式碼吧,理論一堆,而且還有點複雜,我自己的描述也不一定準確,但是程式碼就兩三句話搞定了。

國際慣例,參考博文

理論

基礎知識

似然函式(引自百度百科)

似然函式是關於統計模型中的引數的函式,表示模型引數的似然性。在給定輸出x時,關於引數θ的似然函式L(θ|x)在數值上等於給定引數θ後變數X的概率:

L(θ|x)=P(X=x|θ)
有兩個比較有趣的說法來區分概率與似然的關係,比如拋硬幣的例子:
  • 概率說法:對於“一枚正反對稱的硬幣上拋十次”這種事件,問硬幣落地時十次都是正面向上的“概率”是多少
  • 似然說法:對於“一枚硬幣上拋十次”,問這枚硬幣正反面對稱的“似然”程度是多少。

極大似然估計

(摘自西瓜書)兩大學派:

  • 頻率主義學:引數是固定的,通過優化似然函式來確定引數
  • 貝葉斯學派:引數是變化的,且本身具有某種分佈,先假設引數服從某個先驗分佈,然後基於觀測到的資料來計算引數的後驗分佈

極大似然估計(Maximum Likelihood Estimation,MLE)源自頻率主義學。

假設D是第c類樣本的集合,比如所有的數字3的圖片集合,假設它們是獨立同分布的,則引數θ對於資料集D的似然是:

P(D|θ)=xDP(x|
θ)

極大似然估計就是尋找一個θ使得樣本x出現的概率最大

但是上面的連乘比較難算,這就出現了對數似然

L(θ)=logP(D|θ)=xDlogP(x|D)
我們的目標就是求引數θ的極大似然估計θ^
θ^=argmaxθL(θ)
例子:在連續屬性情況下,如果樣本集合概率密度函式p(x|c)N(μ,σ2),那麼引數μ,σ2的極大似然估計就是
μ^=1|D|xDxσ^
2=1|D|xD(xμ^)(xμ^)T

其實就是計算均值和方差了。這樣想,這些樣本就服從這個高斯分佈,那麼把高斯分佈直接當做引數,一定能夠大概率得到此類樣本,也就是說用3的樣本所服從的高斯分佈作為模型引數一定能使3出現的概率P(x|θ)最大。

期望值最大化演算法(EM)

這一部分簡單說一下即可,詳細的在我前面的部落格HMM——前向後向演算法中有介紹,主要有兩步:

  • E步:求Q函式Q(θ,θ(i)),這個θ(i)就是當前迭代次數i對應的引數值,Q函式實際就是對數聯合似然函式logP(X,Z|θ)在分佈