測(cè)量模型不確定性的兩種簡(jiǎn)單方法
在本文中,我們將介紹兩種方法,它們?cè)试S你獲得模型的不確定性:蒙特卡羅Dropout法(MC Dropout)和深度集成法。
它們適用于各種各樣的任務(wù),但在本文中,我們將展示一個(gè)圖像分類的示例。它們都相對(duì)容易理解和實(shí)現(xiàn),都可以很容易地應(yīng)用于任何現(xiàn)有的卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)(例如ResNet、VGG、RegNet等)。為了幫助你快速輕松地應(yīng)用這些技術(shù),我將提供用PyTorch編寫的這些技術(shù)的補(bǔ)充代碼。給出兩個(gè)杯子的圖像,你的預(yù)測(cè)模型有多確定?
在我們開始之前,讓我們回顧一下測(cè)量模型不確定性意味著什么,以及它如何對(duì)你的機(jī)器學(xué)習(xí)項(xiàng)目有用。
什么是模型不確定性?
就像人類一樣,機(jī)器學(xué)習(xí)模型可以對(duì)其預(yù)測(cè)顯示一定程度的信心。一般來(lái)說(shuō),在討論模型不確定性時(shí),需要區(qū)分了認(rèn)知不確定性和任意不確定性。認(rèn)知不確定性是在模型參數(shù)中表示的不確定性。這種類型的不確定性可以通過(guò)額外的訓(xùn)練數(shù)據(jù)來(lái)減少,因此具有“可減少的不確定性”的替代名稱。任意不確定性捕獲環(huán)境固有的噪聲,即觀測(cè)。與認(rèn)知不確定性相比,這種類型的不確定性不能用更多的數(shù)據(jù)來(lái)減少,而是用更精確的傳感器輸出來(lái)減少。第三種類型稱為預(yù)測(cè)不確定性,即模型輸出中傳遞的不確定性。預(yù)測(cè)不確定性可以結(jié)合認(rèn)知不確定性和任意不確定性。
分類器的softmax輸出示例:
如果你自己已經(jīng)訓(xùn)練過(guò)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò),那么最直觀的想法就是模型的softmax輸出,即你經(jīng)?吹降淖鳛槟P皖A(yù)測(cè)結(jié)果顯示的百分比值。
但是,使用softmax輸出作為模型不確定性的度量可能會(huì)產(chǎn)生誤導(dǎo),并且不是很有用。這是因?yàn)閟oftmax函數(shù)所做的只是計(jì)算模型不同激活值之間的某種“關(guān)系”。
因此,你的模型可以在其輸出層的所有神經(jīng)元中具有較低的激活值,并且仍然達(dá)到較高的softmax值。這不是我們的目標(biāo)。但值得慶幸的是,有多種更有效的技術(shù)來(lái)估計(jì)模型的不確定性,如蒙特卡羅Dropout和深度集成。
為什么模型不確定性有用?
有兩個(gè)主要方面使評(píng)估模型的不確定性變得有用:
首先是透明度。假設(shè)你正在構(gòu)建一個(gè)應(yīng)用于醫(yī)學(xué)圖像分析的機(jī)器學(xué)習(xí)模型。因此,使用你的工具的醫(yī)生在很大程度上依賴于其做出正確診斷的能力。
如果你的模型現(xiàn)在做出了一個(gè)預(yù)測(cè),它實(shí)際上是高度不確定的,但確實(shí)將此信息傳達(dá)給了醫(yī)生,那么對(duì)患者治療的后果可能是致命的。因此,對(duì)模型的不確定性進(jìn)行估計(jì)可以在很大程度上幫助醫(yī)生判斷模型的預(yù)測(cè)。
第二是顯示出改進(jìn)的空間。沒(méi)有一種機(jī)器學(xué)習(xí)模型是完美的。因此,了解模型的不確定性和弱點(diǎn)實(shí)際上可以告訴你需要對(duì)模型進(jìn)行哪些改進(jìn)。
實(shí)際上,有一門完整的學(xué)科專門研究這門學(xué)科,叫做主動(dòng)學(xué)習(xí)。假設(shè)你已經(jīng)用1000張圖片和10個(gè)類訓(xùn)練了你的ConvNet。但你仍然有9000多張尚未標(biāo)記的圖像。如果你現(xiàn)在使用經(jīng)過(guò)訓(xùn)練的模型來(lái)預(yù)測(cè)哪些圖像是最不確定的,則標(biāo)記這些圖像并重新訓(xùn)練模型。結(jié)果表明,與這些圖像的隨機(jī)抽樣相比,這種不確定性抽樣對(duì)模型改進(jìn)更有效。
好了,讓我們來(lái)討論這兩種技術(shù)。
技巧1:蒙特卡羅Dropout
Monte Carlo Dropout,簡(jiǎn)稱MC Dropout,是一種在模型中使用Dropout層來(lái)創(chuàng)建模型輸出變化的技術(shù)。
應(yīng)用于神經(jīng)網(wǎng)絡(luò)的Dropout可視化。
Dropout層通常在訓(xùn)練期間用作正則化技術(shù)。在向前通過(guò)網(wǎng)絡(luò)的過(guò)程中,某些神經(jīng)元以一定的概率隨機(jī)為0。這表明,該模型具有更強(qiáng)的抗過(guò)擬合能力。通常,為了不干擾新圖像的前向傳遞,在訓(xùn)練后禁用這些Dropout層。所以,要使用這種技術(shù),請(qǐng)確保在你的模型中至少實(shí)現(xiàn)一個(gè)Dropout層。這可能看起來(lái)像這樣。
但是對(duì)于MC Dropout,Dropout層仍然被激活,這意味著神經(jīng)元仍然可以隨機(jī)為0。這導(dǎo)致模型的softmax結(jié)果發(fā)生變化。要在推理或測(cè)試期間使用Dropout,請(qǐng)使用以下代碼:
現(xiàn)在Dropout仍然可用,因?yàn)槲覀円呀?jīng)把所有Dropout層進(jìn)入訓(xùn)練模式!
假設(shè)我們現(xiàn)在想在一張圖像上獲得模型的不確定性。為此,我們不僅要對(duì)圖像進(jìn)行一次預(yù)測(cè),還要進(jìn)行多次預(yù)測(cè),并分析由多個(gè)前向傳播生成的不同輸出。我建議讓模型在一張圖像上預(yù)測(cè)3到5次。在本文末尾,我將介紹如何組合3或5個(gè)輸出。
技巧2:深層集成
第二種估計(jì)模型不確定性的技術(shù)利用了創(chuàng)建模型集合的優(yōu)勢(shì)。與其使用一個(gè)模型并預(yù)測(cè)5次,不如使用同一類型的多個(gè)模型,隨機(jī)初始化它們的權(quán)重,并根據(jù)相同的數(shù)據(jù)對(duì)它們進(jìn)行訓(xùn)練。
多個(gè)神經(jīng)網(wǎng)絡(luò)集成的可視化:
這也將在模型參數(shù)中創(chuàng)建變化。如果模型經(jīng)過(guò)穩(wěn)健訓(xùn)練,并且對(duì)圖像有把握,它將為每個(gè)前向傳播輸出類似的值。要初始化模型,最好將其保存為模型列表:
初始化后,所有模型都將在相同的訓(xùn)練數(shù)據(jù)上進(jìn)行訓(xùn)練。就像MC Dropout者一樣,3或5個(gè)模型是一個(gè)不錯(cuò)的選擇。
為了獲得給定圖像上模型的不確定性,將其傳遞到集合中的每個(gè)模型中,并將其預(yù)測(cè)組合起來(lái)進(jìn)行分析。
組合來(lái)自多個(gè)前向傳播的模型輸出
假設(shè)我們?yōu)镸C Dropout定義了5次前向傳播過(guò)程,集成模型包含5個(gè)模型,F(xiàn)在,我們預(yù)計(jì)這些輸出之間會(huì)出現(xiàn)一些變化,從而顯示出模型的不確定性。為了得到不確定性的最終值,必須首先對(duì)這些輸出進(jìn)行疊加。這段代碼是一個(gè)例子,說(shuō)明了如何實(shí)現(xiàn)MCDropout:
首先,我們定義要執(zhí)行的前向傳播及保存所有預(yù)測(cè)的空列表。然后我們前向傳播5次。第一個(gè)輸出用作結(jié)果numpy數(shù)組的初始化,所有其他輸出都堆疊在頂部。
這是具有相同基本原則的深層集成代碼:
現(xiàn)在我們已經(jīng)組合了所有輸出,讓我們看看如何從這些輸出計(jì)算模型的不確定性。
獲取模型不確定性
為了簡(jiǎn)單起見,我們將使用預(yù)測(cè)熵來(lái)估計(jì)給定圖像上模型的不確定性。預(yù)測(cè)熵的數(shù)學(xué)公式為y(標(biāo)簽)、x(輸入圖像)、Dtrain(訓(xùn)練數(shù)據(jù))、c(類)、p(概率)。
一般來(lái)說(shuō),預(yù)測(cè)不確定性告訴你模型看到這張圖像時(shí)有多“驚訝”。如果該值較低,則模型對(duì)其預(yù)測(cè)是確定的。如果結(jié)果為高,則模型不知道圖像中的內(nèi)容。計(jì)算預(yù)測(cè)不確定度可以通過(guò)這段代碼來(lái)實(shí)現(xiàn),這段代碼接收預(yù)測(cè)數(shù)組作為輸入。
import sys
import numpy as np
def predictive_entropy(predictions):
epsilon = sys.float_info.min
predictive_entropy = -np.sum( np.mean(predictions, axis=0) * np
log(np.mean(predictions, axis=0) + epsilon),
axis=-1)
return predictive_entropy
方程中的ε阻止了除0,這在數(shù)學(xué)上是沒(méi)有定義的。
好吧現(xiàn)在,你有了一個(gè)圖像的不確定性值。如前所述,值越高,模型的不確定性越大。
結(jié)尾
在本文中,你已經(jīng)學(xué)會(huì)了估計(jì)模型的不確定性。這項(xiàng)技術(shù)也可以通過(guò)一些調(diào)整應(yīng)用于目標(biāo)檢測(cè),它非常強(qiáng)大。
參考資料:
原文標(biāo)題 : 測(cè)量模型不確定性的兩種簡(jiǎn)單方法

發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
最新活動(dòng)更多
-
6月20日立即下載>> 【白皮書】精準(zhǔn)測(cè)量 安全高效——福祿克光伏行業(yè)解決方案
-
7月3日立即報(bào)名>> 【在線會(huì)議】英飛凌新一代智能照明方案賦能綠色建筑與工業(yè)互聯(lián)
-
7月22-29日立即報(bào)名>> 【線下論壇】第三屆安富利汽車生態(tài)圈峰會(huì)
-
7.30-8.1火熱報(bào)名中>> 全數(shù)會(huì)2025(第六屆)機(jī)器人及智能工廠展
-
7月31日免費(fèi)預(yù)約>> OFweek 2025具身機(jī)器人動(dòng)力電池技術(shù)應(yīng)用大會(huì)
-
免費(fèi)參會(huì)立即報(bào)名>> 7月30日- 8月1日 2025全數(shù)會(huì)工業(yè)芯片與傳感儀表展
推薦專題
- 1 AI 眼鏡讓百萬(wàn) APP「集體失業(yè)」?
- 2 大廠紛紛入局,百度、阿里、字節(jié)搶奪Agent話語(yǔ)權(quán)
- 3 深度報(bào)告|中國(guó)AI產(chǎn)業(yè)正在崛起成全球力量,市場(chǎng)潛力和關(guān)鍵挑戰(zhàn)有哪些?
- 4 上海跑出80億超級(jí)獨(dú)角獸:獲上市公司戰(zhàn)投,干人形機(jī)器人
- 5 國(guó)家數(shù)據(jù)局局長(zhǎng)劉烈宏調(diào)研格創(chuàng)東智
- 6 一文看懂視覺(jué)語(yǔ)言動(dòng)作模型(VLA)及其應(yīng)用
- 7 下一代入口之戰(zhàn):大廠為何紛紛押注智能體?
- 8 百億AI芯片訂單,瘋狂傾銷中東?
- 9 Robotaxi新消息密集釋放,量產(chǎn)元年誰(shuí)在領(lǐng)跑?
- 10 格斗大賽出圈!人形機(jī)器人致命短板曝光:頭腦過(guò)于簡(jiǎn)單