隨著深度神經網絡功能越來越強大,它們的結構也越來越復雜。這些復雜結構也帶來了新的問題,即模型的可解釋性。
想創建穩定、不易受對抗樣本攻擊的模型,可解釋性是很重要的。另外,為新的研究領域設計模型也是一項富有挑戰的工作,如果能了解模型在做什么,可以對這一過程有所幫助。
過去幾年,為了對模型的可解釋性加以研究,研究者們提出了多種方法,包括:
LIME:通過局部線性近似值計算解釋模型的預測
Activation Maximization:一種能了解那種輸入模式可以生成最大的模型回應的方法
特征可視化
在低維解釋空間中嵌入一個DNN圖層
從認知心理學中借鑒方法
不確定性估計法——本文關注的重點
在我們開始研究如何用不確定性解決模型問題、解釋模型之前,首先讓我們了解一下為什么不確定性如此重要。
你為什么應該關注不確定性?
一個重要的例子就是高風險的應用,假設你正在創建一個模型,可以幫助醫生判斷病人的嚴重程度。在這種情況下,我們不應該僅僅關心模型的精確度,更要關注模型對其預測結果有多大程度的肯定。如果不確定性太高,醫生需要謹慎決策。
自動駕駛汽車是另外一個有趣的例子。如果模型不確定是否有行人在馬路上,我們可以利用這一信息讓車子減速,或者發出警報讓駕駛員手動操作。
不確定性還可以在缺乏數據樣本的情況下幫助我們。如果模型不是在與樣本相似的數據上訓練的,它可能無法輸出想要的結果。谷歌照片曾經將黑種人錯誤地認成了大猩猩,就是由于這個原因,種類單一的訓練集可能導致令人尷尬的結果。
不確定性的最大用途,也是本文的主要目的,就是為模型排除錯誤。首先,讓我們了解一下不確定性都有哪幾種不同類型。
不確定性的種類
不確定性和模型都有多個種類,每一種都有不同的用處。
模型不確定性,又稱認知不確定性(epistemic uncertainty):假設你有一個單一數據點,想知道哪種線性模型是最適合數據的。但是沒有數據的話,我們根本無法判斷,所以需要更多數據!
認知不確定性是由于模型的參數不確定。我們不知道模型的哪個權重能最好地表現數據,但是數據越多,不確定性越低。這種類型的不確定性在數據較少的高風險應用中很重要。
再比如,你想搭建一個模型,要在一系列動物圖片中預測哪種動物會吃掉你。假設你在訓練時給模型提供的都是獅子和長頸鹿的照片,現在模型看到了一張僵尸照片。由于之前它沒有見過僵尸,所以這里的不確定性就非常高。如果在訓練時能提供足夠的僵尸照片,那么模型的不確定性會隨之減少。
數據不確定性,也被稱為“任意不確定性”:能夠捕捉觀察中的噪聲。有時環境本身是隨機的,收集更多數據并不會使不確定性降低,因為噪聲來源于數據本身。
為了了解這一點,讓我們回顧剛才的動物園模型。我們的模型能認出含有獅子的圖像,它也許會判斷你會被吃掉。但如果獅子此時此刻并不餓呢?這就是來源于數據的不確定性。另一個案例是兩條看起來一模一樣的蛇,一條有毒而另一條無毒。
數據不確定性可以分為兩種類別:
同方差性不確定:對所有輸入來說,不確定性都是相同的;
異方差性不確定:不確定性根據不同的輸入有不同差別。例如,對于一個可以預測圖像中物體深度的模型,一面墻就比一條漸漸消失的線不確定性要高。
測量不確定性:顧名思義,當測量方法充滿噪音時,不確定性就會增加。在上述動物的案例中,如果某些圖片拍攝的質量不好,就會損害模型的置信度。
噪聲標簽:在監督式學習下,我們用標簽訓練模型。如果標簽太嘈雜,不確定性將會增加。
以上就是幾種不確定性的類型,在這一系列的后續文章中,我們會詳細解釋。現在,讓我們假設有一個黑箱模型,此時針對預測結果出現了不確定,我們應該如何用它為模型糾錯呢?
這里我們以自己的模型為例,該模型是預測用戶點擊某個推薦內容的概率,我們稱為CTR(Click Through Rate)。
利用不確定性進行debug
模型的嵌入向量表現出了很多分類特征,模型可能很難學習特殊值的泛化嵌入。一種常見的解決方法是用一種特殊的詞匯表之外(OOV)的嵌入。
每篇推薦文章都有一個廣告主(advertiser),所有珍貴的廣告主都有同樣的OOV嵌入,所以,從模型的角度,他們實際上是一個廣告主。這個OOV廣告主有很多不同的項目,每個都有不同的CTR。如果我們只有廣告主作為CTR的預測器,那我們應該會得到OOV的高度不確定性。
為了驗證模型的輸出符合OOV的高度不確定性,我們用一個驗證集,將所有廣告主的嵌入轉化為OOV。之后,我們開始觀察轉化前后,不確定性有什么變化。如此前預測的那樣,不確定性在變化之后增加。模型應該能學習到,當給予了信息廣告主,它應該減少不確定性。
我們可以對不同特征重復這一過程,看它們的不確定性如何改變。
我們甚至可以做得更加精細:一些廣告主在不同的項目之間的CTR不同,而其他的項目幾乎有相同的CTR。我們希望模型能對前者有較高的不確定性。一種有效的分析是觀察不確定性和CTR之間的相關性。如果呈負相關,那就意味著模型無法學習不確定性和每個廣告主之間的關系。這一工具讓我們了解了,如果在訓練過程中或模型結構中有某一部分出了錯,我們可以怎樣解決它。
我們還可以進行相似的分析,看看如果不確定性與特殊項目連接,是否會減少更多。另外,我們希望模型對輸出的結果更加確定,如果不確定,我們會盡力修復模型!
另一個例子是題目特征:含有不常見詞語的標題通常具有高不確定性。這是由于模型不經常看到這類詞語。我們可以在含有相似題目的驗證集中對模型進行驗證,估計模型對這些標題的不確定性是多少。然后重新用這些標題訓練模型,看看不確定性是否會下降:
結語
在很多領域中,不確定性是很重要的問題,更重要的是根據不同應用確定不確定性的種類,然后據此解決模型的問題。這篇文章我們討論了如何利用不確定性對模型進行debug,在下一篇文章中,我們會講解如何用不同方法從模型中獲得不確定性的估值。
-
神經網絡
+關注
關注
42文章
4717瀏覽量
99989 -
模型
+關注
關注
1文章
3029瀏覽量
48345 -
自動駕駛
+關注
關注
781文章
13449瀏覽量
165246
原文標題:用模型不確定性理解模型
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論