JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

實用工具箱:dropout、拉普拉斯、集成與最後一層

主宰實務、今天就能上線的便宜近似——MC-dropout、拉普拉斯近似、深度集成、最後一層線性與證據式模型——以及如何在它們之間取捨。

一個你早就訓練好的後驗

進入貝氏深度學習最不痛的方法,幾乎不花額外成本。如果你的網路已經用 dropout 做正則化,蒙地卡羅 dropout做的就只是在測試時把 dropout 留著開,然後把網路跑好幾次。每一次都隨機把不同的一組單元歸零,所以每一次實際上都是一個不同的子網路——把它們的預測平均起來、用散布當作你的不確定性,結果竟然就近似了在權重上的變分推論。

p(y^\ast \mid x^\ast,\mathcal{D}) \approx \frac{1}{T}\sum_{t=1}^{T} p\!\left(y^\ast \mid x^\ast, \widehat{W}_t\right),\qquad \widehat{W}_t \sim q_\phi(W)

MC-dropout 的预测分布只是对开启 dropout 的 T 次随机前向传播取平均。

繞著 MAP 的高斯

拉普拉斯近似採取相反的事後立場:照常把你的網路訓練到一個 MAP 解,然後用損失的局部曲率——海森矩陣,實務上用費雪資訊或高斯-牛頓矩陣近似——在它周圍配一個高斯後驗。曲率陡,代表那個權重被良好決定(低變異數);曲率平,代表它約束不足(高變異數)。你幾乎是免費地從一個你已經有的模型上得到不確定性。

p(\theta \mid \mathcal{D}) \approx \mathcal{N}\!\left(\theta_{\mathrm{MAP}},\, H^{-1}\right),\qquad H = -\,\nabla_\theta^2 \log p(\theta \mid \mathcal{D})\big|_{\theta_{\mathrm{MAP}}}

拉普拉斯近似在 MAP 处拟合一个高斯分布,其协方差等于负对数后验的海森矩阵之逆。

整場賽局就是讓那個海森矩陣負擔得起。完整矩陣的大小是權重數的平方,所以大家限制它:對角、每層 Kronecker 分解(KFAC)區塊,或——最實用的——只對最後一層做拉普拉斯。最後一層拉普拉斯之所以成為首選配方,正因為它便宜、事後、且在加上真正的不確定性的同時,完全不動你訓練好模型的預測。

強得讓人尷尬的基線

深度集成看起來幾乎不像貝氏:把同一個架構用不同隨機種子訓練好幾次,然後平均。因為損失地景佈滿了不同的盆地,不同種子會落在真正不同的函數上;它們同意之處你就信任預測,它們分歧之處變異數就把它標記出來。在一個又一個基準上,少數幾個獨立訓練的網路,在準確率與校準上都勝過遠為精巧的單模型貝氏方法。

深度集成为何奏效:不同的随机种子会滚入损失曲面的不同盆地,对它们到达的网络取平均,就捕捉到单个高斯永远够不到的多个模态。

交互式梯度下降沿损失曲面滚向盆地的极小值。

它「真的」是貝氏嗎?一種誠實的讀法是:集成的那些種子,是後驗在函數上的粗糙樣本——是一個單一平均場高斯永遠到不了的不同峰。這層與集成學習的連結,正是為何集成設定了知識方法必須跨過的門檻。它的成本是顯而易見的缺點:N 倍的訓練與 N 倍的記憶體——這也催生了下面那些更便宜的把戲。

只在關鍵處做貝氏

一個反覆出現的洞見:網路的表達力大半在它的特徵裡,但它的不確定性大半能在頭部被捕捉。最後一層線性模型就照這個做——把深度網路當特徵抽取器訓練好,然後只在最後一層上放一個正規的貝氏線性模型(或一個高斯)。貝氏線性回歸有封閉形式,於是你在學到的深度特徵上得到快速、有根據的不確定性,而完全不必對底下數百萬權重做積分。

p(y^\ast \mid x^\ast,\mathcal{D}) = \int \mathcal{N}\!\left(y^\ast \mid w^\top \phi(x^\ast),\, \sigma^2\right) p(w \mid \mathcal{D})\, dw

神经线性模型固定特征,只在最后一层权重上做精确的贝叶斯线性回归。

證據式深度學習是其中最激進的捷徑:訓練網路在單一次前向傳遞中,輸出一個高階分布的參數(類別機率上的 Dirichlet,或回歸目標上的 normal-inverse-gamma)。那個分布的寬度就直接回報不確定性——不取樣、不集成。它快得漂亮,但這份優雅藏著陷阱:它回報的不確定性在分布外可能根基薄弱、且對正則化項敏感,所以在你倚賴它之前,務必狠狠地驗證它。

實務上的取捨

  1. 需要一個強預設、又付得起算力?5 成員深度集成就是參照;要在準確率與校準上同時打敗它並不容易。
  2. 已經訓練好一個模型、想事後加上不確定性?加最後一層拉普拉斯或最後一層線性——不必重訓,預測不變。
  3. 已經用了 dropout、想要免費基線?把 MC-dropout 打開——但只相對地信任它的不確定性,並檢查它在離資料很遠時不會壓平。
  4. 延遲或記憶體預算很緊、只能一次前向傳遞?試試證據式模型——然後在上線前,對抗性地驗證校準與分布外行為。