【生成模型】极大似然估计,你必须掌握的概率模型
上一期為大家說明了什么是無監督生成模型。在無監督生成模型中,極大似然法一直扮演著非常核心的位置,我們必須對它有深刻的理解,本期小米粥將為大家講一下極大似然法的那些事情。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 作者&編輯 | 小米粥
1 一個小游戲:取球猜概率
我們先來看一個簡單有趣的例子。一個盒子中有黑色、白色兩種顏色的球,然后你從盒子中取出一個球,記下其顏色,將球放回到盒子里,再取出一個球記錄其顏色......重復1000次上述操作,這時你發現黑球出現了600次,白球出現了400,那我若問你盒子中黑球的概率是多少?你會不假思索回答:0.6。
我們對上述回答進行幾個討論。首先,0.6的答案是否正確?可以明確的是,這不是一個嚴謹的答案,若盒子中黑球的概率不是0.6而是0.5,0.4甚至0.0001,也有可能在1000次的取球中出現600次黑球,400次白球的情況,只不過黑球概率越偏離0.6,出現這樣情況的可能性越小,故嚴謹的回答是:黑球概率最可能是0.6。這便是一個簡單的使用極大似然的場景,根據黑白球的出現情況去對黑球概率這個參數進行估計,做估計的依據是:概率是什么數值時最符合當前的情況,即當前情況的可能性最大,換成數學點的語言就是似然極大。因為黑球概率為0.6時最可能出現這樣的情況,故“盲猜”為0.6。需要說明的是,我們僅將討論范圍限制在頻率學派,并不涉及貝葉斯學派的想法。
第二個討論是,如果小明想復刻一個完全一樣的盒子,需要怎么做?有放回地取1000次球,發現黑球出現了600次,白球出現了400,然后使用極大似然法估計黑球出現概率為0.6,接著他可以在盒子里放置若干數量的球,將黑球概率調整為0.6。其實他已經搭建了一個生成模型,他從訓練數據集中估計出了黑球概率這個參數,接著調整盒子中黑球的數量,然后以后需要產生樣本時,只需在他復刻的盒子中有放回采樣即可。這只是一個十分簡單的例子,實際使用極大似然法時要復雜得多,但是其本質是一樣的。
2?極大似然法
在生成模型中,概率密度函數p(x)一直扮演著核心的位置。對于一批從pdata(x)中獨立采樣得到的訓練樣本集x(1),x(2)...x(N),(注意我們要求訓練樣本集的數據是獨立同分布的),我們希望用訓練數據來訓練一個生成模型pg(x),這個生成模型可以顯式或隱式地學習到數據的分布pdata(x)或者獲得pg(x)的(近似)表達式,即pdata(x) ≈pg(x)。接下來在推斷過程中,可以通過在pg(x)上顯式或隱式地采樣而得到一批樣本,并且使獲得的樣本(近似)符合概率分布pdata(x)。
我們先介紹使用極大似然估計的生成模型,充分理解極大似然原理對理解生成模型有非常重要的意義。需要說明,并不是所有的生成模型都使用極大似然法,有些生成模型默認不使用極大似然法, 但是也可以做一些修改令其使用最大似然法 (GAN就屬于這一類)。
極大似然估計是對概率模型參數進行估計的一種方法,例如有一個包含N個樣本的數據,數據集中每個樣本都是從某個未知的概率分布pdata(x)中獨立采樣獲得的,若我們已經知道pg的形式,但是pg的表達式里仍包含未知參數θ,那問題就變成了:如何使用數據集來估算pg(x)中的未知參數θ?例如 pg(x) 是一個均值和方差參數還未確定的正態分布,那么如何用樣本估計均值和方差的準確數值?
在極大似然法中,首先使用所有樣本計算似然函數L(θ):
似然函數是一個關于模型參數θ的函數,當選擇不同的參數θ時,似然函數的值是不同的,它描述了在當前參數θ下,使用模型分布pg(x;θ)產生數據集中所有樣本的概率。一個樸素的想法是:在最好的模型參數θML下,產生數據集中的所有樣本的概率是最大的,即
但實際在計算機中,多個概率的乘積結果并不方便儲存,例如計算過程中可能發生數值下溢的問題,即對比較小的、接近于0的數進行四舍五入后成為0。我們可以對似然函數取對數來緩解該問題,即log[L(θ)],并且仍然求解最好的模型參數θML使對數似然函數最大,即
可以證明兩者是等價的,但是將似然函數取對數后會把概率乘積形式轉換為對數求和的形式,大大方便了計算。將其展開后,有
可以發現,使用極大似然估計時,每個樣本xi都希望拉高它所對應的模型概率值pg(x(i);θ),如圖所示,但是由于所有樣本的密度函數pg(x(i);θ)的總和必須是1,所以不可能將所有樣本點都拉高到最大的概率;一個樣本點的概率密度函數值被拉高將不可避免的使其他點的函數值被拉低,最終的達到一個平衡態。
我們也可以將上式除以N,便可以看到極大似然法最大化的目標是在經驗分布下樣本概率對數的期望值,即
另一種對極大似然估計的理解是:極大似然估計本質在最小化訓練集上的經驗分布和模型分布pg(x;θ)之間的KL散度值,即
而KL散度的表達式為
由于θ值與第一項無關,故只考慮第二項,有
可以發現兩者是完全一樣的,也就是說極大似然估計就是希望 pg(x;θ) 和pdata(x)盡量相似,最好相似到無任何差異(KL散度值為0),這與生成模型的思想是一致的。但實際的生成模型一般不可能提前知道pg(x;θ)的表達式形式而只需要估計表達式中的參數,實際中的生成模型非常復雜,往往對pg(x;θ)無任何先驗知識,只能對其進行一些形式上的假設或近似。
很多生成模型可以使用最大似然的原理進行訓練。只要得到關于參數θ的似然函數L(θ)后,我們只需最大化似然函數即可,只是不同模型的差異在于如何表達或者近似似然函數L(θ)。下圖的左邊分支均為顯式概率模型,其中完全可見置信網絡模型對pg(x;θ)做出了形式上的假設,而流模型則通過定義一個非線性變換給出了pg(x;θ)的表達式,這兩個模型其實都給出了似然函數L(θ)的確定表達式;而變分自編碼器模型則采用近似的方法,只獲得了對數似然函數log[L(θ)]的一個下界,通過最大化該下界近似地實現最大似然;玻爾茲曼機使用馬爾科夫鏈對似然函數的梯度進行了近似。接下來,我們將分別介紹這些模型,并討論他們的優缺點。
[1] 伊恩·古德費洛, 約書亞·本吉奧, 亞倫·庫維爾. 深度學習
[2]李航. 統計機器學習
總結
本期帶大家學習了非常有用的極大似然法,它對于我們深刻理解生成模型有非常重要的意義。下一期我們將對完全可見置信網絡進行探討。
個人知乎,歡迎關注
GAN群
有三AI建立了一個GAN群,便于有志者相互交流。感興趣的同學也可以微信搜索xiaozhouguo94,備注“加入有三-GAN群”。
更多GAN的學習
知識星球是有三AI的付費內容社區,里面包超過100種經典GAN模型的解讀,了解詳細請閱讀以下文章:
【雜談】有三AI知識星球指導手冊出爐!和公眾號相比又有哪些內容?
有三AI秋季劃GAN學習小組,可長期跟隨有三學習GAN相關的內容,并獲得及時指導,了解詳細請閱讀以下文章:
【雜談】如何讓2020年秋招CV項目能力更加硬核,可深入學習有三秋季劃4大領域32個方向
轉載文章請后臺聯系
侵權必究
往期精選
【GAN優化】GAN優化專欄上線,首談生成模型與GAN基礎
【GAN的優化】從KL和JS散度到fGAN
【GAN優化】詳解對偶與WGAN
【GAN優化】詳解SNGAN(頻譜歸一化GAN)
【GAN優化】一覽IPM框架下的各種GAN
【GAN優化】GAN優化專欄欄主小米粥自述,腳踏實地,莫問前程
【GAN優化】GAN訓練的幾個問題
【GAN優化】GAN訓練的小技巧
【GAN優化】從動力學視角看GAN是一種什么感覺?
【GAN優化】小批量判別器如何解決模式崩潰問題
【GAN優化】長文綜述解讀如何定量評價生成對抗網絡(GAN)
【技術綜述】有三說GANs(上)
【模型解讀】歷數GAN的5大基本結構
【百戰GAN】如何使用GAN拯救你的低分辨率老照片
【百戰GAN】二次元宅們,給自己做一個專屬動漫頭像可好!
【百戰GAN】羨慕別人的美妝?那就用GAN復制粘貼過來
【百戰GAN】GAN也可以拿來做圖像分割,看起來效果還不錯?
【百戰GAN】新手如何開始你的第一個生成對抗網絡(GAN)任務
【百戰GAN】自動增強圖像對比度和顏色美感,GAN如何做?
【直播回放】80分鐘剖析GAN如何從各個方向提升圖像的質量
【直播回放】60分鐘剖析GAN如何用于人臉的各種算法
總結
以上是生活随笔為你收集整理的【生成模型】极大似然估计,你必须掌握的概率模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【直播】如何学习计算机视觉各大方向,言有
- 下一篇: 【生成模型】解读显式生成模型之完全可见置