選自Buckman's Homepage
作者:Carles Gelada、Jacob Buckman機器之心編譯
參與:魔王
近日,OpenAI 研究科學家 Carles Gelada 發布推文,表示「貝葉斯神經網絡沒有意義」。一石激起千層浪,社區對此言論展開了激烈的討論。那麼貝葉斯神經網絡真的沒有意義嗎?Carles Gelada 何出此言?我們來看這篇文章。
2019 年 12 月 22 日 Carles Gelada 發布的推文。推文連結:https://twitter.com/carlesgelada/status/1208618401729568768
Carles Gelada 和 Jacob Buckman 認為推文下面的大部分回復忽略了他們對 BNN 批評的重點,於是撰寫博客,更加全面地闡述其觀點。以下是標題為《Bayesian Neural Networks Need Not Concentrate》的最新版博客內容(原版博客標題為《A Sober Look at Bayesian Neural Networks》):貝葉斯神經網絡的支持者經常稱,訓練得到的 BNN 輸出分布能夠捕捉認知不確定性(epistemic uncertainty)。認知不確定性對大量應用具備寶貴价值,我們認同使用貝葉斯方法的做法。但是,我們認為 BNN 需要信息豐富的先驗才能處理不確定性。我們證明,如果先驗不能區分可泛化和不可泛化的函數,則貝葉斯推斷無法提供有用的不確定性。這就對標準論點提出了質疑,標準論點即:當真實先驗分布未知時,「信息不足的先驗」是合適的。什麼是貝葉斯推斷?在 Twitter 討論中,很多研究者認為「貝葉斯」是「不確定性感知」(uncertainty-aware)的同義詞,或者使用結果集合或分布的算法一定是貝葉斯算法。我們想要釐清一點,在我們看來,這種描述有失公允。使用貝葉斯方法處理不確定性,需要利用貝葉斯定理將先驗分布更新至後驗分布中,這無疑是最流行的方法之一。但還存在其他非貝葉斯方法,例如集中不等式就是非貝葉斯方法,它們允許計算置信區間和不確定性集合。貝葉斯定理的核心是條件概率分布之間的關係:
毫無疑問,這是非常強大且基礎的關係,但任何「信念更新」(belief updating)或「可能世界分布」(distributions over possible worlds)的概念都只是後此謬誤(post hoc)的解釋。貝葉斯定理表示:對於任意兩個非獨立隨機變量 A 和 B,當 B 取特殊值 b 時,隨機變量 A 的分布發生改變。用標準學術語言來說,項 Pr(A=a) 即先驗,Pr(B=b∣A=a) 是似然,Pr(A=a∣B=b) 是後驗。該用語來源於這一事實:隨機變量 A 具備原始(先驗)分布,使用觀測到的 b 值可提供更新分布(後驗)。
我們來想一下如何使用貝葉斯框架解決分類問題。存在輸入空間 χ 和輸出空間 Y,假設它們均為離散空間,存在函數族 f:χ→T 是二者之間的映射。將每個 f 看作向量 f∈Y^χ,在索引 x∈χ 處索引向量相當於估計函數 f_x=f(x)。存在我們感興趣的真值函數 f^:χ→Y。用貝葉斯方法解決該問題,即在現實世界中存在隨機變量 F^,f^ 是其中的一個樣本。我們將使用 Pr(F^=f) 表示 F^ 的分布。(下文用縮寫形式 Pr(f) 表示 Pr(F^=f))。由於輸入-輸出對數據集 D={(x_i,F^(x_i)} 不獨立於 F^,因此我們可以使用貝葉斯定理來了解 F^的分布,前提是我們已經觀察了數據集 D。
項 Pr(D∣f)=∏_(x,y∈D)1_f(x)=y 表示:如果 F^=f,則數據集包含的標籤等同於 f 的輸出。這一條件分布為什麼這麼有趣?因為如果數據集包含足夠信息,則 F^ 的分布可能崩塌到一個點,我們可能不具備對 f^ 的不確定性。即使分布沒有崩塌到一個點,我們仍然可以利用 Pr(f∣D) 執行一些有意思的操作。例如,我們可以通過邊緣化(marginalizing)來提供估計結果:
或者找出後驗估計的最大值:
但更有趣的是,我們可以利用分布來提供不確定性:特定輸出 f^(x) 的分布。給出測試點 x,我們可以輸出概率 Pr(F^(x)=y∣D)。這非常重要,例如在很多敏感應用中,在不確定的情況下不執行預測是十分必要的。截至此時,貝葉斯方法看起來很有吸引力。貝葉斯神經網絡的潛在問題貝葉斯的以上所有屬性均依賴於合理的後驗分布,即向更有可能正確的函數分配更大的概率值。我們來仔細探查其中究竟。下式表示後驗,不過由於分母 Pr(D) 只是標準化常量,對所有函數都是一樣的,因此下式隱去了分母:
該式中有兩個項:先驗 Pr(f) 表示對特定函數的先驗偏好,似然 Pr(D∣f) 將特定函數具備更強的數據兼容性這一想法進行編碼。標準的貝葉斯敘事是這樣的:先驗覆蓋大量函數,但只有一部分函數與數據兼容,因此後驗集中於一小部分函數,這些函數都有可能是合適的函數。從這個角度來看,選擇「信息不足的(uninformative)」先驗是合理的做法,因為它在所有函數的集合上均勻分布。這就使得貝葉斯神經網絡的基礎得到保障,因為它確保先驗向每個可能正確的函數分配非零概率。然後,我們只需讓似然項篩除空間中的糟糕函數即可。看起來很簡單吧!但是,標準貝葉斯敘事存在「隱藏條款」。首先,我們需要注意,不確定性估計的質量完全取決於先驗的質量。因此要想使後驗分布對應可能函數的確切分布,先驗必須完全正確。也就是說,採樣真值函數 f^ 的分布必須與採樣先驗的分布相同。如若不然,則後驗會很糟糕!假設先驗比現實更陡峭,那麼很明顯這是一個失敗案例:後驗某些區域的概率不恰當地低,導致整體不確定性被低估。當先驗比現實平滑時,則失敗沒有那麼明顯,但仍會出現:對於任意固定數量的數據而言,學得的後驗太寬了,導致不確定性被高估。或者說,需要更多數據才能達到特定的置信度。其次,標準貝葉斯敘事幾乎總是發生在參數不足(underparameterized)的情況下,即數據集∣D∣的規模至少與模型參數量一樣。但是當我們使用神經網絡時,實際設置顯然並非如此。增加神經模型的規模總能幫助提升性能,因此我們總想使用過參數化機制。在思考貝葉斯深度學習時,我們需要仔細考慮該差異的含義。不幸的是,這些事項結合到一起導致了一個重大問題:數據無法帶來神經網絡後驗集中。貝葉斯神經網絡不需要集中用神經網絡(參數為θ)擬合數據集 D 常會導致這一常見情形,D 包含真值函數 f^ 生成的輸入-輸出對。當然,由於我們在做深度學習,因此使用過參數化機制較為穩妥:∣D∣<<∣θ∣。此外,我們假設網絡足夠靈活,可使真值函數 f^ 在它所表示的函數類別內。令神經網絡函數 f_θ^ 逼近 f_θ^(x)≈f^(x)x∈χ。由於 f_θ^ 可以擬合每個數據點,因此它能夠擬合 D 中所有點:Pr(D∣f_θ^)≈1。不過,D 不是神經網絡要擬合的唯一數據集。假設從同一個真值函數 f^ 的輸入-輸出對中採樣得到數據集 Z={(x_i,y_i},並損壞數據集中的部分輸出,得到 Z˙={(x_i,y˙_i},y_i≠y˙_ii。最終,將真實數據 D 和損壞數據 Z˙ 結合得到一個組合數據集 C。(假設∣Z˙∣較小,這樣我們可以繼續使用過參數化機制,即∣C∣<<∣θ∣。)Chiyuan Zhang 等人在 2017 年發表的論文《Understanding deep learning requires rethinking generalization》中證明,我們可以訓練出完美擬合數據集 C 的神經網絡,即 θ_C s.t. f_θ_C(x)≈y,_x,y∈C。網絡的容量不僅足以擬合正確的標籤,還可以擬合任意損壞的標籤!理解 f_θ^ 和 f_θ_C 之間差異的直觀方式是觀察其泛化性。假設 D 是訓練集,Z 是測試集。函數 f_θ^ 泛化性能優異:它在訓練集上實現了不錯的性能(即 Pr(D∣f_θ_C)≈1),在測試集上也取得了優秀的性能(即 Pr(Z∣f_θ_C)≈1)。而函數 f_θ_C 恰恰相反,其泛化性能並不好:它在訓練集上表現不錯(即 Pr(D∣f_θ_C)≈1),但在測試集上表現糟糕(即 Pr(Z∣f_θ_C)≈0)。按照經驗,SGD 通常更可能找到泛化性能優異的解決方案,但是我們必須記住也存在泛化性能不好的解決方案。現在我們已經定義了這兩個函數。那麼給定數據集 D,二者的相對後驗概率如何呢?假設我們選擇先驗 q,則存在
類似地,
現在我們可以清晰地看到,為什麼標準貝葉斯和神經網絡結合後,問題多多了吧。f_θ^ 泛化性能較好,f_θ_C 泛化性能差,但我們通過後驗概率無法區分二者的差異。這兩個網絡的相對後驗似然完全由其先驗似然決定。SGD 能夠拯救這一切嗎?不能。在數據集 D 上運行 SGD 不太可能找到 f_θ_C。但是這不表示它不存在。真正的貝葉斯後驗是唯一一個具備我們追尋的有用屬性(如不確定性信息)的對象,它並不關心 SGD 找到什麼函數。令 q(f_θ_C∣D)<q(f_θ^∣D) 成立的唯一方式是 q(f_θ_C)<q(f_θ^)。貝葉斯神經網絡需要對泛化敏感的先驗現在很清楚了,正確的先驗對貝葉斯深度學習而言是絕對必要的。我們所需要的是「泛化敏感」先驗(generalization-sensitive prior),即僅對泛化性能優秀的函數分配先驗概率。這與「泛化不可知」先驗相反:對於按照上述方法構建的任意數據集 C,存在 q(f_θ^)≈q(f_θ_C)。如果我們的先驗完全泛化不可知,則後驗將對糟糕和優秀的解決方案分配同樣的概率。這反過來說明,貝葉斯步驟沒有收穫有用的不確定性信息:每一個測試點的概率在全部可能輸出中均勻分布。一定程度上,這種現象可被解釋為「過高估計不確定性」的極端案例。在標準貝葉斯敘事中,高估不確定性不影響大局,因為這不過說明我們需要添加一點數據讓後驗集中。但涉及過參數化機制時,「一點數據」就沒用了。讓後驗集中所需的數據量非常龐大。(另外,即使我們能夠獲取那麼多數據,我們也只能收穫一個更大的神經網絡而已,一切還是回到原點。)目前的 BNN 對泛化敏感嗎?我們通常對 BNN 使用簡單的先驗,即權重的獨立高斯分布。結合神經網絡架構後,得到函數空間中的結構化先驗。顯然,該結構化先驗並不簡單。例如,Radford M. Neal 1995 年發表的論文《BAYESIAN LEARNING FOR NEURAL NETWORKS》證明,無限寬度單層神經網絡的獨立隨機高斯權重對應高斯過程先驗(Gaussian Process prior)。從實驗的角度來看,Ulyanov (2017) 證明,CNNs + SGD 這一組合很擅長表示自然圖像。我們做了一些實驗來驗證這一點,發現相比最小化模型在數據集 C 上的損失,最小化模型在數據集 D 上的損失能夠取得更高的先驗似然。但是,這只是間接證據,並未擊中問題的核心。如上所示,宣稱「我的後驗分布對應優秀解決方案的分布」的貝葉斯支持者實際上是在表達「我的先驗對泛化敏感」。這一主張很強勢,尤其是在簡化當前先驗的背景下。獨立高斯權重真的能夠編碼泛化這麼基礎的東西嗎,甚至還能考慮到網絡架構?這是可能的,但對此持懷疑態度是更加明智的做法。貝葉斯社區有責任進行審慎分析和實驗來充分證明此主張。BNN 的實驗成功是否證明其具備優秀先驗?不。儘管在實踐中,BNN 確實泛化至測試點了,而且看起來也輸出了合理的不確定性估計,但這無法直接證明它們具備泛化敏感的先驗。這就要提到該難題的另一塊拼圖了:逼近(approximation)。計算 q(f∣D)q,即貝葉斯推斷,是一個難題,因此社區中大量成員研究其易處理的近似問題。(例如,變分推斷將 q(f∣D) 的計算問題形式化為優化問題。)為什麼 BNN 在真實後驗極其不確定的情況下也能作出一些合理的行為?計算 q(f∣D) 是關鍵。它們可能並沒有學習任何接近真實後驗的事物!要想聲稱 BNN 輸出的不確定性有效,貝葉斯支持者必須謹慎地證明 BNN 學到的分布類似真實後驗。初始實驗證明事實並非如此:我們可以輕鬆找到這樣兩個點,第一個點具備較高的先驗概率和數據似然,第二個點具備較高的後驗似然。如果 BNN 後驗準確,就不會出現這種情況。代碼地址:https://github.com/jbuckman/bnn-blog-experiments不過,這只是初步實驗,還需要更多研究。批判地看待貝葉斯神經網絡近幾十年來,貝葉斯社區輸出大量有關機器學習的重要見解,通常被認為是最嚴謹的機器學習子社區之一。但是,我們認為貝葉斯神經網絡並不符合這一看法。貝葉斯社區並未對「BNN 輸出分布很好地對應真實後驗」提供證明。沒有該保障,則 BNN 與其他神經網絡無異。因此,研究人員應該避免發表「BNN 輸出分布能夠編碼模型不確定性」這樣的觀點。此外,我們證明了好的不確定性估計必須圍繞神經網絡的泛化性能。要想確保 BNN 提供的不確定性有用,我們首先需要了解使特定神經網絡參數取得優秀/糟糕泛化性能的原因。這是深度學習領域最重要的問題之一,但我們以及整個領域對此還沒有深刻理解。神經切線核(該方法也得到貝葉斯的支持)是一種有前景的方法,有助於研究者真正地理解泛化。而只有理解了泛化,我們才能設計泛化敏感先驗。不管你是否相信我們能夠找到優秀的泛化敏感先驗,重點在於:我們以及整個領域不再忽略先驗在貝葉斯框架中的重要性,不要想當然地認為 BNN 是計算不確定性的好方法。我們需要批判地思考先驗,嚴謹地評估後驗估計,不被「信息不足的先驗仍然能夠帶來優秀的不確定性估計」這樣的粗陋論點所支配。現在,沒有人去問 BNN 能否提供當前最優的不確定性估計,有的是使用 BNN 的理由(尤其是在經驗驅動的領域,如深度學習)。但我們需要理解,即使有理由證明 BNN 前景廣闊,但也有清晰的理論可以證明 BNN 或許不能作為研究方向。本文希望強調這些潛在的問題,從而引導 BNN 研究走在更好的方向上。原文連結:https://jacobbuckman.com/2020-01-22-bayesian-neural-networks-need-not-concentrate/原版博客連結:https://jacobbuckman.com/2020-01-17-a-sober-look-at-bayesian-neural-networks/