了解機(jī)器學(xué)習(xí)的貝葉斯建模和概率規(guī)劃
傳統(tǒng)機(jī)器學(xué)習(xí) (ML) 模型和 AI 技術(shù)通常存在一個嚴(yán)重缺陷:它們?nèi)狈Σ淮_定性量化。這些模型通常提供點(diǎn)估計(jì),而不考慮其預(yù)測的不確定性。這種限制削弱了評估模型輸出可靠性的能力。此外,傳統(tǒng) ML 模型需要大量數(shù)據(jù),通常需要正確標(biāo)記的數(shù)據(jù),因此,在數(shù)據(jù)有限的問題上往往會遇到困難。此外,這些模型缺乏將專家領(lǐng)域知識或先驗(yàn)信念納入模型的系統(tǒng)框架。如果無法利用特定領(lǐng)域的見解,模型可能會忽略數(shù)據(jù)中的關(guān)鍵細(xì)微差別,并且往往無法發(fā)揮其潛力。ML 模型正變得越來越復(fù)雜和不透明,人們越來越需要數(shù)據(jù)和人工智能做出的決策具有更高的透明度和可問責(zé)性。
概率編程:解決這些挑戰(zhàn)的解決方案
概率編程提供了一個解決這些挑戰(zhàn)的建模框架。其核心是貝葉斯統(tǒng)計(jì),與頻率派的統(tǒng)計(jì)學(xué)解釋不同。
貝葉斯統(tǒng)計(jì)
在頻率統(tǒng)計(jì)學(xué)中,概率被解釋為事件的長期相對頻率。數(shù)據(jù)被認(rèn)為是隨機(jī)的,是從固定定義的分布中抽樣的結(jié)果。因此,測量中的噪聲與抽樣變化有關(guān)。頻率論者認(rèn)為概率是存在的,并且是固定的,無限的實(shí)驗(yàn)都會收斂到這個固定值。頻率論方法不為參數(shù)分配概率分布,他們對不確定性的解釋植根于估計(jì)量的長期頻率特性,而不是關(guān)于參數(shù)值的明確概率陳述。
在貝葉斯統(tǒng)計(jì)中,概率被解釋為對特定信念的不確定性的度量。數(shù)據(jù)被視為固定的,而系統(tǒng)的未知參數(shù)被視為隨機(jī)變量,并使用概率分布進(jìn)行建模。貝葉斯方法可以捕獲參數(shù)本身的不確定性,因此提供了一種更直觀、更靈活的不確定性量化方法。
頻率統(tǒng)計(jì)與貝葉斯統(tǒng)計(jì)[1]
概率機(jī)器學(xué)習(xí)
在頻率論 ML 中,模型參數(shù)被視為固定的,并通過最大似然估計(jì) (MLE) 進(jìn)行估計(jì),其中似然函數(shù)量化了給定統(tǒng)計(jì)模型觀察數(shù)據(jù)的概率。MLE 尋求最大化此概率的參數(shù)點(diǎn)估計(jì)。要實(shí)現(xiàn) MLE:
· 假設(shè)一個模型和底層模型參數(shù)。
· 根據(jù)假設(shè)模型推導(dǎo)似然函數(shù)。
· 優(yōu)化似然函數(shù)以獲得參數(shù)的點(diǎn)估計(jì)。
因此,包括深度學(xué)習(xí)在內(nèi)的頻率學(xué)派模型依賴優(yōu)化(通常基于梯度)作為其基本工具。
相反,貝葉斯方法對未知參數(shù)及其與概率分布的關(guān)系進(jìn)行建模,并在我們獲得新數(shù)據(jù)時使用貝葉斯定理來計(jì)算和更新這些概率。
貝葉斯定理: “貝葉斯規(guī)則告訴我們?nèi)绾螐年P(guān)節(jié)點(diǎn)導(dǎo)出條件概率,條件告訴我們?nèi)绾卫硇缘馗挛覀兊男拍?,而更新信念正是學(xué)習(xí)和推理的全部內(nèi)容”[2]。
這是一個簡單但有力的等式。
· 先驗(yàn)表示對未知參數(shù)的初始信念
· 似然表示基于假設(shè)模型的數(shù)據(jù)的概率
· 邊際似然是模型證據(jù),是一個標(biāo)準(zhǔn)化系數(shù)。
· 后驗(yàn)分布代表我們對參數(shù)的更新信念,結(jié)合了先驗(yàn)知識和觀察到的證據(jù)。
在貝葉斯機(jī)器學(xué)習(xí)中,推理是基本工具。利用后驗(yàn)分布表示的參數(shù)分布進(jìn)行推理,可以更全面地理解不確定性。
貝葉斯更新的實(shí)際應(yīng)用: 下圖展示了一個簡單的拋硬幣實(shí)驗(yàn),在不同樣本量和兩個不同的先驗(yàn)分布下,其后驗(yàn)分布。此可視化提供了不同樣本量和先驗(yàn)信念的組合如何影響最終的后驗(yàn)分布的見解。
樣本大小和先驗(yàn)對后驗(yàn)分布的影響
如何建立后驗(yàn)分布模型
在大多數(shù)情況下,看似簡單的后驗(yàn)分布很難計(jì)算。特別是,分母,即邊際似然積分往往是可交互的,尤其是在處理更高維度的參數(shù)空間時。而且在大多數(shù)情況下,沒有閉式解,數(shù)值積分方法也是計(jì)算密集型的。為了應(yīng)對這一挑戰(zhàn),我們依靠一類稱為馬爾可夫鏈蒙特卡羅模擬的特殊算法來建模后驗(yàn)分布。這里的想法是從后驗(yàn)分布中抽樣,而不是明確地對其進(jìn)行建模并使用這些樣本來表示模型參數(shù)的分布
馬爾可夫鏈蒙特卡洛(MCMC)
“ MCMC 方法包括一類從概率分布中抽樣的算法。通過構(gòu)建以期望分布作為其平衡分布的馬爾可夫鏈,可以通過記錄鏈中的狀態(tài)來獲得期望分布的樣本” [3]。一些常用的 MCMC 采樣器包括:
· 大都會-黑斯廷斯
· 吉布斯取樣器
· 哈密頓蒙特卡羅 (HMC)
· 無掉頭采樣器 (NUTS)
· 序貫蒙特卡洛 (SMC)
概率規(guī)劃
概率編程是貝葉斯統(tǒng)計(jì)的編程框架,即它涉及表示條件推理問題的語言的語法和語義的開發(fā),以及為這些推理問題開發(fā)“求解器”。本質(zhì)上,概率編程之于貝葉斯建模就像自動微分工具之于經(jīng)典機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型一樣[2]。
概率編程語言生態(tài)系統(tǒng)多種多樣,每種語言都有自己的語法、語義和功能。一些最流行的語言包括:
· BUGS(使用吉布斯抽樣的貝葉斯推理)[4]: BUGS 是最早的概率編程語言之一,以其用戶友好的界面和對各種概率模型的支持而聞名。它實(shí)現(xiàn)了吉布斯抽樣和其他馬爾可夫鏈蒙特卡羅 (MCMC) 方法進(jìn)行推理。
· JAGS(Just Another Gibbs Sampler)[5]: JAGS 是一種用于貝葉斯分層建模的專用語言,特別適合具有嵌套結(jié)構(gòu)的復(fù)雜模型。它利用 Gibbs 采樣算法進(jìn)行后驗(yàn)推理。
· STAN:一種概率編程語言,以其富有表現(xiàn)力的建模語法和高效的采樣算法而聞名。STAN 在學(xué)術(shù)界和工業(yè)界廣泛用于各種貝葉斯建模任務(wù)?!癝tan 與 BUGS 和 JAGS 的主要區(qū)別在于兩個方面。首先,Stan 基于一種新的命令式概率編程語言,這種語言比 BUGS 或 JAGS 所基于的聲明式圖形建模語言更靈活、更具表現(xiàn)力,例如聲明具有類型的變量以及支持局部變量和條件語句。其次,Stan 的馬爾可夫鏈蒙特卡羅 (MCMC) 技術(shù)基于漢密爾頓蒙特卡羅 (HMC),對于具有復(fù)雜后驗(yàn)的模型,這是一種比吉布斯采樣或 Metropolis-Hastings 更高效、更強(qiáng)大的采樣器” [6]。
· BayesDB: BayesDB 是一個概率編程平臺,專為大規(guī)模數(shù)據(jù)分析和概率數(shù)據(jù)庫查詢而設(shè)計(jì)。它使用戶能夠使用類似 SQL 的查詢對關(guān)系數(shù)據(jù)庫執(zhí)行概率推理 [7]
· PyMC3: PyMC3 是一個用于概率編程的 Python 庫,它提供了一個直觀而靈活的界面來構(gòu)建和分析概率模型。它利用先進(jìn)的采樣算法(如漢密爾頓蒙特卡羅 (HMC) 和自動微分變分推理 (ADVI))進(jìn)行推理 [8]。
· TensorFlow Probability: “ TensorFlow Probability (TFP) 是一個基于 TensorFlow 構(gòu)建的 Python 庫,它可以輕松地在現(xiàn)代硬件(TPU、GPU)上結(jié)合概率模型與深度學(xué)習(xí)” [9] 。
· Pyro: “Pyro 是一種用 Python 編寫的通用概率編程語言 (PPL),后端由 PyTorch 支持。Pyro 支持靈活且富有表現(xiàn)力的深度概率建模,將現(xiàn)代深度學(xué)習(xí)和貝葉斯建模的優(yōu)點(diǎn)統(tǒng)一起來” [10]。
這些語言共享一個通用的工作流程,概述如下:
1. 模型定義:模型定義控制數(shù)據(jù)生成、潛在參數(shù)及其相互關(guān)系的過程。此步驟需要仔細(xì)考慮底層系統(tǒng)及其行為的假設(shè)。
2. 先驗(yàn)分布規(guī)范:定義模型中未知參數(shù)的先驗(yàn)分布。這些先驗(yàn)編碼了從業(yè)者在觀察任何數(shù)據(jù)之前對參數(shù)的信念、領(lǐng)域或先驗(yàn)知識。
3. 似然函數(shù): 描述似然函數(shù),表示在未知參數(shù)條件下觀測數(shù)據(jù)的概率分布。似然函數(shù)量化了模型預(yù)測與觀測數(shù)據(jù)之間的一致性。
4. 后驗(yàn)分布推斷:使用采樣算法根據(jù)觀測數(shù)據(jù)近似模型參數(shù)的后驗(yàn)分布。這通常涉及運(yùn)行馬爾可夫鏈蒙特卡羅 (MCMC) 或變分推斷 (VI) 算法以從后驗(yàn)分布中生成樣本。
案例研究:預(yù)測股票指數(shù)波動率
在本案例研究中,我們將采用貝葉斯建模技術(shù)來預(yù)測股票指數(shù)的波動性。這里的波動性衡量股票價格隨時間的變化程度,是評估特定股票相關(guān)風(fēng)險的關(guān)鍵指標(biāo)。
數(shù)據(jù):為了進(jìn)行此分析,我們將利用標(biāo)準(zhǔn)普爾 500 股票指數(shù)的歷史數(shù)據(jù)。標(biāo)準(zhǔn)普爾 500 指數(shù)是一種廣泛使用的基準(zhǔn)指數(shù),用于追蹤美國 500 只大盤股的表現(xiàn)。通過檢查該指數(shù)價格隨時間變化的百分比,我們可以深入了解其波動性。
標(biāo)準(zhǔn)普爾 500 指數(shù) — 股價和百分比變化
從上圖中我們可以看到時間序列——連續(xù)幾天之間的價格變化:
· 恒定均值
· 方差隨時間變化,即時間序列表現(xiàn)出異方差
異方差建模: “在統(tǒng)計(jì)學(xué)中,如果一系列隨機(jī)變量都具有相同的有限方差,則該序列是同方差的;這也稱為方差齊性?;パa(bǔ)的概念稱為異方差,也稱為方差異質(zhì)性”[11]。 自回歸條件異方差(ARCH) 模型專門用于解決時間序列數(shù)據(jù)中的異方差問題。
ARCH 模型的貝葉斯實(shí)現(xiàn)與頻率派實(shí)現(xiàn)
貝葉斯建模的主要優(yōu)勢包括能夠整合先驗(yàn)信息并量化模型參數(shù)和預(yù)測中的不確定性。這在數(shù)據(jù)有限且有先驗(yàn)知識的情況下尤其有用。
總之,貝葉斯建模和概率編程提供了強(qiáng)大的工具來解決傳統(tǒng)機(jī)器學(xué)習(xí)方法的局限性。通過采用不確定性量化、結(jié)合先驗(yàn)知識并提供透明的推理機(jī)制,這些技術(shù)使數(shù)據(jù)科學(xué)家能夠在復(fù)雜的現(xiàn)實(shí)場景中做出更明智的決策。