不確定估計學習小結

啊順發表於2020-08-16

最近,觀看了危夷晨大佬關於《不確定性學習在視覺識別中的應用》的報告,認為不確定性學習在用武之地,所以特意對相關論文進行了總結。

 


 

什麼是不確定性估計

以人臉識別為例,輸入一張人臉影像,得到一個特徵向量embedding,將此特徵向量與底庫中的特徵向量計算相似度,從而根據此相似度來判斷兩張人臉影像是否屬於同一個ID。假設相似度很高(95%),則認為這兩張人臉影像屬於同一個人。這種將一張輸入影像x對映到高維空間中的一個點embedding的方式,可以被稱為確定性預測(deterministic prediction)。

但以同樣的人臉系統、相同的底庫來看,假設我們輸入一張很模糊的人臉或者一張貓的圖片,此時系統可能會給出同樣是95%的相似度。然而,在這種情形下,這種相似度得分並不能反映出兩張圖片是屬於同一ID的,即這個相似度結果不可信。因此,我們不僅需要一個相似度得分,還需要一個能判斷此相似度是否可信的得分。具體而言,假設在此種情形下,即使兩種圖片的相似度得分是95%,但只有10%的得分認為該相似度得分可行,那麼做出判斷就需要更加謹慎。

 

再舉一個例子,假設我們使用了cifar100來訓練了一個分類模型,現在使用者隨意找了張不屬於此100類的圖片(例如貓),輸入到該分類模型中,那麼這個“貓”必然會分類到cifar100中的其中一個類別,例如認為是飛機。從模型來看,這個分類置信度得分可能很高,堅定認為這個“貓”就是“飛機”;從人的認識來看,此次分類結果是失敗的。面對這種情況,我們希望模型不僅能給出分類的置信度得分,還希望模型能給出一個判斷此次置信度得分是否可信的判斷。這種情況,有點類似out-of-distribution(離群點檢測)或者異常檢測等。

從上面幾個案例來看,無論是相似度得分還是置信度得分,都不一定可信,即模型對於給出的判斷具有一定程度的“不確定性”。那麼,我們就希望知道模型對於此次判斷有多少把握,對於“不確定性”得分高的判斷(即把握度低),我們可以進行額外的處理操作。

 

兩種不確定性

一般而言,不確定性可以分類兩種[2]

1.資料的不確定性:也被稱為偶然(Aleatoric)不確定性,它描述的是資料中內在的噪聲,即無法避免的誤差,這個現象不能通過增加取樣資料來削弱。例如有時候拍照的手稍微顫抖畫面便會模糊,這種資料是不能通過增加拍照次數來消除的。因此解決這個問題的方法一般是提升資料採集時候的穩定性,或者提升衡量指標的精度以囊括各類客觀影響因素

2.模型的不確定性:也被稱為認知(Epistemic)不確定性。它指出,模型自身對輸入資料的估計可能因為訓練不佳、訓練資料不夠等原因而不準確,與某一單獨的資料無關。因此,認知不確定性測量的,是訓練過程本身所估計的模型引數的不確定性。這種不確定性是可以通過有針對性的調整(增加訓練資料等方式)來緩解甚至解決的

 

模型不確定性

對於深度學習模型而言,其權重是固定的,所以,對某個樣本而言,輸出類別也是固定的。那我們該如何引入不確定性呢?主要的方式是貝葉斯神經網路BNN模型融合

貝葉斯神經網路BNN

在BNN網路中,認為每一個權重$W_i$和偏置$b$不再是某個具體的數值,而是一個概率分佈。在訓練與推理階段,需要對每個權重$W_i$和偏置$b$進行取樣,得到一組引數,然後像非貝葉斯神經網路那樣進行使用即可。

通過這種方法可以建模各個引數本身存在的不確定性。但是由於在實際應用中引數量十分巨大,要嚴格根據貝葉斯公式計算後驗概率幾乎不現實,因此為了將網路應用於大型資料集,就需要高效的近似計算方法。

  

給定一個訓練集$D={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)}$,那麼貝葉斯公式可以寫成如下形式:

$$p(w|x,y)=\frac{p(y|x,w)p(w)}{\int p(y|x,w)p(w)dw} \tag{1}$$

其中,我們想要得到的是$w$的後驗概率$p(w|x,y)$,先驗概率$p(w)$是我們可以根據經驗也好瞎猜也好是知道的,例如初始時將$p(w)$設成標準正態分佈,似然$p(y|x,w)$是一個關於$w$的函式。當$w$等於某個值時,式$(1)$的分子很容易就能算出來,但我們想要得到後驗概率$p(w|x,y)$,按理還要將分母算出來。但事實是,分母這個積分要對$w$的取值空間上進行,我們知道神經網路的單個權重的取值空間可以是實數集$R$,而這些權重一起構成的空間將相當複雜,基本沒法積分。所以問題就出現在分母上[1]

因此,通常有三種解決方法:

  1. 馬爾科夫鏈蒙特卡洛取樣法(MCMC-sampling)。用MCMC方式來近似分佈的積分;
  2. 變分推斷。直接用一個簡單點的分佈$q$去近似後驗概率的分佈$p$,即不管分母怎麼積分,直接最小化分佈$q$和$p$之間的差異,如可以使用KL散度計算;
  3. 蒙特卡洛dropout。這個是近年來運用比較多的方式。可以直觀理解標準神經網路經過dropout之後,在每一層隨機取消一些神經元,把連線變稀疏的網路。可以證明,在假設每一個神經元都服從一個離散的伯努利分佈的情況下,經dropout方法處理的神經網路的優化過程實際上等價於在一個貝葉斯網路中進行變分推斷。在推理時,也需要開啟dropout,並且推理時需要多次對同一輸入進行前向傳播,然後可以計算平均和統計方差。

模型融合

其大致思路是對一個資料集D進行多次隨機取樣,得到N個不同的資料集。使用這N個不同的資料集來N個模型,由於資料集不同,所以這N個模型也不一樣。最終對這N個不同模型的推理結果進行綜合,其均值可以作為預測結果,方差可以作為不確定性。

 

上述兩種方法在工程實現上都存在著嚴重的問題,通過蒙特卡洛dropout的話,需要對同一輸入進行多次推理;通過模型融合的話,需要經過多個模型。無論在視訊記憶體佔用或者推理時間上,都難以接受。

 

資料不確定性

直接預測不確定性

在論文《Learning Confidence for Out-of-Distribution Detection in Neural Networks》中,提出了一種新的方法:直接學習神經網路中的置信度估計。如下圖所示,在模型的輸出處,不僅輸出類別置信度,還輸出置信度估計(經過sigmoid後,範圍在$[0,1]$)。用此置信度估計來判斷類別概率是否可信,這個置信度估計的閾值設定應該是一個經驗值。

 

具體而言,需要將類別概率$p$與置信度估計$c$進行融合,得到${p}'=c\cdot p+(1-c)y$。然後此${p}'$來進行損失計算。當$c$接近於1時,表示對此類別概率有很強的把握,因此${p_i}'$接近於$p$;當$c$接近於1時,表示對此類別概率不太確定,因此${p_i}'$接近於$y$,且$log(c)$的值會佔主導。

$$L=L_t+\lambda L_c=-\sum _{i=1}^Mlog({p_i}')y_i-log(c)  \tag{2}$$

此方法思想和做法都很簡單,同時也取得了很不錯的效果。

PFE

該方法出自於論文《Probabilistic Face Embeddings》中,其核心思想是,用概率分佈來代替傳統的embedding特徵。PFE引入了不確定性,認為輸出向量是一個概率分佈,具有均值$\mu $和方差$\sigma $,而不再是確定的向量。如下圖所示,左圖傳統的方法,預測出來的embedding是固定的數值,其會帶來一個問題:如果輸入圖片比較模糊,那麼該影像對應的embedding可能會發生偏移,產生錯誤識別;右圖是PFE的方法,認為網路預測出來的特徵是一個分佈(橢圓形),均值代表影像的embedding,方差描述了模型對輸入的不確定度。該方法希望同時估計$\mu $和$\sigma $,並且$\sigma $能夠根據輸入影像的質量、包含噪聲的程度進行自適應的學習。

 

文中給出了一個在人臉識別中的例子,如下圖所示,(a)表示同一ID,但相似度較低的圖片,可以看出,其主要原因是姿態過大,遮擋或者模糊;(b)是不同ID,但相似度很高的圖片。

 

其具體的做法也比較簡單,基於原有的人臉識別系統,固定其不變化,認為embedding就是均值$\mu $;同時新增一個分支,用於預測方差$\sigma $;最後使用一個新的計算相似度的方法mutual likelihood score(MLS):

$$s(x_i,x_j)=-\frac{1}{2}\sum_{l=1}^{D}\left ( \frac{(\mu _i^{(l)}-\mu _j^{(l)})^2}{\sigma _i^{2(l)}+\sigma _j^{2(l)}} +log\left ( \sigma _i^{2(l)}+\sigma _j^{2(l)} \right )\right )-const \tag{3}$$

論文中給出了一個使用傳統餘弦相似度和MLS的對比圖,如下圖所示。藍色線條表示對兩張相同圖片中的一張圖片施加高斯模糊後,兩張圖片的相似度變化;紅色線條表示對兩張不同的圖片共同使用高斯模糊後,兩張圖片的相似度變化。左圖是傳統方法和利用餘弦相似度的結果,隨著模糊程度增加,相同圖片的相似度越來越低,不同ID的圖片的相似度越來越高,表明模糊圖片很容易誤識別成另外一個ID;右圖是PFE方法和利用MLS計算距離,可以看到隨著模糊程度增大,相同圖片的距離不會變得很小,不同ID的圖片的距離也不會變得很大,表明PFE的方法對於低質量的圖片更具有優勢。

 

 但是,PFE依然存在以下不足:

  • 需要額外儲存方差資訊;
  • MLS計算比較複雜;
  • 資料的不確定性並沒有真正用於影響模型中特徵的學習。

對於PFE,我還存在一點疑問:對於封閉場景而言,註冊照一般是高清圖片。如果用模糊圖片來進行識別,當然是希望模糊圖片與高清圖片的相似度儘可能為0,這樣能降低誤識別的風險。如果用PFE來處理這種封閉場景的話,一方面會降低識別率,同時也會增加誤識別的風險。所以,PFE這種方式一般是適合公開場景?圖片較為模糊的場景?

DUL

DUL方法出自曠視的《Data Uncertainty Learning in Face Recognition》。DUL的工作是基於PFE進行改進的,使得網路同時能優化均值和方。如下圖的(c)所示,模型會預測概率分佈,同一ID之間的樣本的均值的距離會靠近,不同ID之間的樣本的均值的距離會拉開。

 

在論文中,使用了兩種方法來實現這個原理:基於分類的和基於迴歸的。

  • 基於分類的DUL

如下圖所示,在模型的backbone後會有兩條分支,分別用於預測均值$\mu $和方差$\sigma $。對於每個樣本的每一次迭代而言,都隨機取樣一個$\epsilon $。通過這種方式得到的新樣本特徵$s_i=\mu _i+\epsilon \sigma _i$就是遵從均值$\mu $、方差為$\sigma $的高斯分佈採出的值,它可以模擬一個服從高斯分佈的特徵。通過這種簡單的重新取樣的技巧,就可以很好進行模型訓練。在測試的時候不再需要取樣,僅需要將已經得到的均值$\mu $作為特徵來計算相似度即可。

 

同時,損失函式也進行了相應的修改:

$$L_{cls}=L_{softmax}+\lambda L_{kl}=\frac{1}{N}\sum _i ^N-log\frac{e^{w_{y_i}s_i}}{\sum _c ^C e^{w_cs_i}}-\frac{1}{2}(1+log\sigma ^2-\mu ^2-\sigma ^2) \tag{4}$$

當不確定度$\sigma $較小時,$L_{kl}$就會增加;當$\sigma $較大時,會對$\mu $造成較大影響,從而使$L_{softmax}$增加。因此較大的$\sigma $對應著質量較差的圖片,較小的$\sigma $對應著高質量的圖片。

  •  基於迴歸的DUL

如下圖所示,利用一個已經訓練好的人臉識別系統,凍結其backbone,利用其分類層中的權重矩陣$W$,其中,$w\in \mathbb{R}^{D\times C}$,$w_i\in w$可以被認為相同類別的embedding的中心。後續步驟與基於分類的DUL一致,然後新訓練兩條分支,一條分支用於預測均值 ,迴歸$w_c$的樣本類中心;另一條分支用於預測方差。

 

同時,損失函式變為了:

$$L_{reg}=-\frac{1}{N}\sum_{i}^{N}\left ( \frac{\left ( w_c-\mu _{i\in c} \right )^2}{2\sigma _i^2}+\frac{1}{2}ln\sigma _i^2+\frac{1}{2}ln2\pi \right ) \tag{5}$$

 

DUL方法在圖片質量不是特別高的情況,效果會優於其他方式。但通篇論文看完,存在點小疑問:預測出來的方差$\sigma $應該是一個可以運用的資訊,但文中只給出利用方差構成的調和平均數示意圖,如下圖所示。或許方差可以用於對抗性場景,例如假臉攻擊,out-of-distribution檢測。

  


 

綜上所述,在計算機視覺中引入不確定估計,讓我們知道模型對於預測結果的把握程度,對可信AI系統有一定幫助,同時也能有助於提高面向公開場景的模型的效能。但是該理論發展還不夠迅速,還存在很多疑問,感覺使用起來不是特別廣泛,這方面的論文還是值得持續關注。

 

參考資料:

  1. 貝葉斯深度學習(bayesian deep learning)
  2. R TALK | 曠視危夷晨:不確定性學習在視覺識別中的應用
  3. CVPR 2020 | 曠視研究院提出資料不確定性演算法 DUL,優化人臉識別效能

 

相關文章