來源:機器之心編譯 作者:Eric Jang
不確定性是機器學(xué)習(xí)領(lǐng)域內(nèi)一個重要的研究主題,Eric Jang近日的一篇博客對這一主題進(jìn)行了詳細(xì)的闡述。順便一提,他的博客還有一些有趣的深度學(xué)習(xí)迷因。
在談到人工智能安全、風(fēng)險管理、投資組合優(yōu)化、科學(xué)測量和保險時,人們都會提到「不確定性(uncertainty)」的概念。下面有幾個人們言語中涉及不確定性的例子:
「我們想讓機器學(xué)習(xí)模型知道它們不知道的東西。」
「負(fù)責(zé)診斷病人和給出治療方案的AI應(yīng)該告訴我們它對自己的推薦的信心。」
「科學(xué)計算中的顯著性值代表了測量中的不確定性?!?/p>
「我們想讓自動智能體探索它們不確定(對于獎勵或預(yù)測)的區(qū)域,這樣它們也許能發(fā)現(xiàn)稀疏的獎勵?!?/p>
「在投資組合優(yōu)化中,我們希望最大化回報,同時限制風(fēng)險?!?/p>
「由于地緣政治不確定性增大,美國股市2018年在失望中收尾?!?/p>
那「不確定性」究竟是什么?
不確定性度量反映的是一個隨機變量的離散程度(dispersion)。換句話說,這是一個標(biāo)量,反應(yīng)了一個隨機變量有多「隨機」。在金融領(lǐng)域,這通常被稱為「風(fēng)險」。
不確定性不是某種單一形式,因為衡量離散程度的方法有很多:標(biāo)準(zhǔn)差、方差、風(fēng)險值(VaR)和熵都是合適的度量。但是,要記住一點:單個標(biāo)量數(shù)值不能描繪「隨機性」的整體圖景,因為這需要傳遞整個隨機變量本身才行!
盡管如此,為了優(yōu)化和比較,將隨機性壓縮成單個數(shù)值仍然是有用的??傊涀。冈礁叩牟淮_定性」往往被視為「更糟糕」(除了在模擬強化學(xué)習(xí)實驗中)。
不確定性的類型
統(tǒng)計機器學(xué)習(xí)關(guān)注的是模型p(θ|D)的估計,進(jìn)而又估計的是未知隨機變量p(y|x)。其中有多種不同形式的不確定性。某些不確定性的概念描述了我們能夠預(yù)期的固有的隨機性(比如拋硬幣的結(jié)果),另一些概念則描述了我們對模型參數(shù)的最佳猜測的信心缺乏程度。
為了說得具體一點,我們假設(shè)有一個循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)需要根據(jù)一個每日氣壓表讀數(shù)序列預(yù)測當(dāng)天的降雨量。氣壓表能檢測大氣壓,大氣壓下降往往是降雨的前兆。下圖總結(jié)了降雨量預(yù)測模型與不同類型的不確定性。
圖1:試圖根據(jù)氣壓表讀數(shù)序列預(yù)測每日降雨量的簡單機器學(xué)習(xí)模型可能考慮的不確定性。偶然事件不確定性(AleatoricUncertainty)源自數(shù)據(jù)收集過程,是不可降低的隨機性。認(rèn)知不確定性(EpistemicUncertainty)反映的是模型做出正確預(yù)測的置信程度。最后,超出分布的誤差(Out-of-Distributionerror)是指當(dāng)模型的輸入不同于其訓(xùn)練數(shù)據(jù)時出現(xiàn)的不確定性(比如太陽溫度等其它異常現(xiàn)象)。
偶然事件不確定性
偶然事件不確定性得名于拉丁語詞根aleatorius,意為「將幾率納入創(chuàng)造過程」。這描述的是源自數(shù)據(jù)生成過程本身的隨機性;不能簡單地通過收集更多數(shù)據(jù)而消除的噪聲。就像你不能預(yù)知結(jié)果的拋硬幣。
在降雨量預(yù)測的類比中,偶然事件不確定性源自氣壓表的不準(zhǔn)確度。也還存在這種數(shù)據(jù)收集方法沒有觀察的重要變量:昨日的降雨量是多少?我們測量大氣壓的時代是現(xiàn)代還是上個冰河時代?這些未知是我們的數(shù)據(jù)收集方法中固有的,所以用該系統(tǒng)收集更多數(shù)據(jù)無法幫助我們消除這一不確定性。
偶然事件不確定性會從輸入傳播到模型的預(yù)測結(jié)果。假設(shè)有一個簡單模型y=5x,它的輸入取自正態(tài)分布x~N(0,1)。在這一案例中,y~N(0,5),因此該預(yù)測分布的偶然事件不確定性可描述為σ=5。當(dāng)然,當(dāng)輸入數(shù)據(jù)x的隨機結(jié)構(gòu)未知時,預(yù)測結(jié)果的偶然事件不確定性將更難估計。
也許有人會想:因為偶然事件不確定性是不可約減的,所以我們對此無能無力,直接忽略它就好了。這可不行!在訓(xùn)練模型時,應(yīng)該注意選擇能夠正確地代表偶然事件不確定性的輸出表征。標(biāo)準(zhǔn)的LSTM不會得出概率分布,所以學(xué)習(xí)拋硬幣的結(jié)果時只會收斂成均值。相對而言,用于語言生成的模型能夠得出一系列類別分布(詞或字符),這能納入句子完成任務(wù)中的固有歧義性。
認(rèn)知不確定性
「好的模型都是相似的;差的模型各有不同?!?/p>
認(rèn)知不確定性來自希臘語詞根epistēmē,屬于與知識相關(guān)的知識。這衡量了我們對「源自我們對正確模型參數(shù)的無知程度」的正確預(yù)測的無知程度。
下圖展示了一個在某個簡單的一維數(shù)據(jù)集上的高斯過程回歸模型。其置信區(qū)間反映了認(rèn)知不確定性;訓(xùn)練數(shù)據(jù)的認(rèn)知不確定性為零(紅點)。隨著我們離訓(xùn)練數(shù)據(jù)點的距離越遠(yuǎn),模型應(yīng)該給預(yù)測分布分配越高的標(biāo)準(zhǔn)差。不同于偶然事件不確定性,認(rèn)知不確定性可以通過收集更多數(shù)據(jù)和「去除」模型缺乏知識的輸入?yún)^(qū)域而降低。
圖2:一維高斯過程回歸模型,展現(xiàn)了訓(xùn)練集之外的輸入上的認(rèn)知不確定性
深度學(xué)習(xí)與高斯過程之間有豐富的關(guān)聯(lián)。人們希望能通過神經(jīng)網(wǎng)絡(luò)的表征能力擴展高斯過程的能感知不確定性的性質(zhì)。不幸的是,高斯過程難以擴展用于大數(shù)據(jù)集的統(tǒng)一隨機小批量設(shè)置,而且研究大型模型和數(shù)據(jù)集的人也已經(jīng)不再支持這種方法。
如果人們希望在選擇模型族時有最大的靈活度,使用集成(ensemble)方法來估計不確定性是一個好選擇,這實際上就是使用「多個獨立的學(xué)習(xí)后的模型」。高斯過程模型是分析式地定義預(yù)測分布,而集成方法則被用于計算預(yù)測的經(jīng)驗分布(empiricaldistribution)。
由于訓(xùn)練過程中出現(xiàn)的隨機化偏差,任何單個模型都會有一些誤差。在集成方法中,其它模型往往會揭示出單個模型特有的錯處之處,同時認(rèn)同推理正確的預(yù)測結(jié)果;因此集成模型是很強大的。
我們該如何隨機取樣模型以構(gòu)建一個集成模型呢?在使用bootstrapaggregation構(gòu)建集成模型時,我們首先從一個大小為N的訓(xùn)練數(shù)據(jù)集開始,并從原始訓(xùn)練集采樣M個大小為N的數(shù)據(jù)(有替換,這樣每個數(shù)據(jù)集都不會占據(jù)整個數(shù)據(jù)集)。分別在這些數(shù)據(jù)集上訓(xùn)練M個模型,再將它們的預(yù)測結(jié)果綜合起來得到一個經(jīng)驗預(yù)測分布。
如果訓(xùn)練多個模型的成本過高,也可以使用dropout訓(xùn)練來近似模型集成。但是,引入dropout會涉及到一個額外的超參數(shù)并且也可能有損單個模型的表現(xiàn)(對于實際應(yīng)用而言往往是不可接受的;在實際應(yīng)用中,校準(zhǔn)不確定性估計相對準(zhǔn)確度而言是次要的)。
因此,如果能使用大量計算資源(就像谷歌那樣),通常只需要重復(fù)訓(xùn)練多個模型副本,這要更加容易。這還能在無損性能的前提下享受集成方法的好處。這篇深度集成論文就采用了這一方法:https://arxiv.org/pdf/1612.01474.pdf。這篇論文的作者還提到由不同的權(quán)重初始化帶來的隨機訓(xùn)練動態(tài)足以得到一個多樣化的模型集合,而不必通過bootstrapaggregation來降低訓(xùn)練集多樣性。從實際的工程開發(fā)角度看,押注不會影響模型性能的風(fēng)險估計方法或研究者想要嘗試的其它方法是明智的
超出分布的不確定性
對于我們的降雨量預(yù)測器,如果我們?yōu)槠涮峁┑妮斎氩皇菤鈮罕碜x數(shù)序列,而是太陽的溫度呢?要是提供一個全是零的序列呢?或者用不同的單位記錄的氣壓表讀數(shù)呢?RNN還是會繼續(xù)計算,為我們提供一個預(yù)測,但結(jié)果很可能毫無意義。
這個模型完全沒有能力基于通過不同于訓(xùn)練集創(chuàng)建流程的流程生成的數(shù)據(jù)進(jìn)行預(yù)測。在基準(zhǔn)驅(qū)動的機器學(xué)習(xí)研究領(lǐng)域,這是一種常被忽視的失敗模式,因為我們通常假設(shè)訓(xùn)練、驗證和測試集都完全由獨立同分布的數(shù)據(jù)構(gòu)成。
確定輸入是否「有效」是實際部署機器學(xué)習(xí)所面臨的一個嚴(yán)峻問題,這也被稱為超出分布(OoD/OutofDistribution)問題。OoD與「模型誤設(shè)錯誤」和「異常檢測」是同義詞。
異常檢測不僅對增強機器學(xué)習(xí)系統(tǒng)穩(wěn)健性很重要,而且本身也是一種非常有用的技術(shù)。舉個例子,我們可能想構(gòu)建一個能監(jiān)控健康人士的生命體征的系統(tǒng),讓該系統(tǒng)能在指標(biāo)異常時發(fā)出警報,這并不需要系統(tǒng)之前見過這種異常的病理模式。我們也可以用異常檢測來管理數(shù)據(jù)中心的「健康」,一旦有不同尋常的事情發(fā)生(磁盤滿載、安全漏洞、硬件故障等),我們就能得到通知。
因為OoD輸入僅出現(xiàn)在測試時間,所以我們不應(yīng)假設(shè)我們事先知道模型會遇到的異常的分布。這正是OoD檢測的棘手之處——我們必須針對模型在訓(xùn)練階段從未見過的輸入來增強該模型對這些輸入的抗性!這正是對抗式機器學(xué)習(xí)中描述的標(biāo)準(zhǔn)的攻擊場景。
機器學(xué)習(xí)模型有兩種處理OoD輸入的方法:1)在輸入到達(dá)模型前就識別出糟糕的輸入;2)根據(jù)模型預(yù)測結(jié)果的「怪異性」來幫助我們鑒別可能存在問題的輸入。
在第一種方法中,我們不會對下游機器學(xué)習(xí)任務(wù)做任何假設(shè),只會考慮輸入是否處于訓(xùn)練分布中的問題。這正是生成對抗網(wǎng)絡(luò)(GAN)中判別器的工作。但是,單個判別器并不具有完美的穩(wěn)健性,因為它只擅長辨別真實數(shù)據(jù)分布和生成器得到的分布;對于不屬于其中任意一個分布的輸入而言,它有可能得出任意的預(yù)測結(jié)果。
除了判別器,我們也可以構(gòu)建一個分布內(nèi)數(shù)據(jù)的密度模型,比如一個核密度估計器或用一個NormalizingFlow來擬合數(shù)據(jù)。HyunsunChoi和我最近研究過這一問題,參閱我們最近使用現(xiàn)代生成模型執(zhí)行OoD檢測的論文:https://arxiv.org/abs/1810.01392
第二種OoD檢測方法涉及到使用任務(wù)模型的預(yù)測(認(rèn)知)不確定性來辨別哪些輸入是OoD。理想情況下,模型在收到錯誤的輸入時應(yīng)該會得到「怪異的」的預(yù)測分布p(y|x)。舉個例子,HendrycksandGimpel(https://arxiv.org/abs/1610.02136)表明OoD輸入的最大化softmax概率(預(yù)測得到的類別)往往低于分布內(nèi)的輸入。這里,不確定性反比于最大softmax概率建模的「置信度」。高斯過程這樣的模型能通過構(gòu)造為我們提供這些不確定性估計,或者我們也可通過深度集成來計算認(rèn)知不確定性。
在強化學(xué)習(xí)領(lǐng)域,人們實際上假設(shè)OoD輸入是一件好事,因為這是智能體還不知道如何處理的世界輸入。鼓勵策略尋找自己的OoD輸入能實現(xiàn)「內(nèi)在的好奇心」,從而探索模型的預(yù)測效果較差的區(qū)域。這是很好的做法,但我很好奇如果將這種好奇心驅(qū)動的智能體部署到現(xiàn)實世界(其中傳感器很容易損壞,也會發(fā)生其它實驗異常)中會怎樣。機器人如何區(qū)分「未曾見過的狀態(tài)」(好)和「傳感器損壞情況」(壞)?這能得到能學(xué)習(xí)與它們的傳感機制交互從而生成最大化新穎度的智能體嗎?
誰來看住看門狗?
正如前一節(jié)提到的那樣,保護(hù)自己免受OoD輸入影響的一種方法是設(shè)置一個能夠「像看門狗一樣」監(jiān)控模型輸入的似然模型(likelihoodmodel)。我更喜歡這種方法,因為這能將OoD輸入問題與任務(wù)模型中的認(rèn)知和偶然事件不確定性隔開。從工程開發(fā)角度看,這能讓分析工作更輕松。
但我們不應(yīng)該忘記這個似然模型也是一個函數(shù)近似器,可能存在自己的OoD錯誤!我們近期的生成式集成方法(GenerativeEnsembles,https://arxiv.org/abs/1810.01392,也可參閱DeepMind的同期研究https://arxiv.org/abs/1810.09136)研究表明,在使用一個CIFAR似然模型時,來自SVHN的自然圖像實際上比CIFAR分布內(nèi)的圖像本身還有更高的可能性!
圖3:似然估計涉及到一個本身也可能易受OoD輸入影響的函數(shù)近似器。比起CIFAR測試圖像,CIFAR的似然模型會給SVHN圖像分配更高的概率!
但是,希望還是有的!研究表明,似然模型的認(rèn)知不確定性對該似然模型自身而言是出色的OoD檢測器。通過將認(rèn)知不確定性估計與密度估計結(jié)合起來,我們能以一種與模型無關(guān)的方式使用似然模型的集成來保護(hù)機器學(xué)習(xí)模型免受OoD輸入影響。
校準(zhǔn):下一件大事?
警告:只是因為一個模型能夠確定一個預(yù)測結(jié)果的置信區(qū)間,并不意味著該置信區(qū)間能真正反映結(jié)果在現(xiàn)實中的實際概率!
置信區(qū)間(比如2σ)隱式地假設(shè)預(yù)測分布是高斯分布,但如果你想要預(yù)測的分布是多模態(tài)分布或重尾分布,那么你的模型將不會得到很好的校準(zhǔn)!
假設(shè)我們的降雨量預(yù)測RNN告訴我們今日的降雨將為N(4,1)英寸,如果我們的模型經(jīng)過校準(zhǔn),那么如果我們一次又一次地在同樣的條件下重復(fù)這個實驗(也許每一次都重新訓(xùn)練該模型),那么我們實際將會觀察到實際的降雨量分布正是N(4,1)。
當(dāng)今學(xué)術(shù)界開發(fā)的機器學(xué)習(xí)模型大都是針對測試準(zhǔn)確度或某個擬合度函數(shù)優(yōu)化的。研究者執(zhí)行模型選擇的方式不是通過重復(fù)相同的實驗來部署模型,再衡量校準(zhǔn)誤差,所以不出意外,我們的模型往往只有很差的校準(zhǔn),參閱:https://arxiv.org/abs/1706.04599
展望未來,如果我們要信任部署在現(xiàn)實世界中的機器學(xué)習(xí)系統(tǒng)(機器人、醫(yī)療系統(tǒng)等),我認(rèn)為「證明我們的模型能夠正確理解世界」的一種遠(yuǎn)遠(yuǎn)更為強大方法是針對統(tǒng)計校準(zhǔn)測試它們。優(yōu)良的校準(zhǔn)也意味著優(yōu)良的準(zhǔn)確度,所以這是一個更嚴(yán)格的更高的優(yōu)化指標(biāo)。
不確定性應(yīng)該是標(biāo)量嗎?
盡管標(biāo)量的不確定性很有用,但它們的信息量永遠(yuǎn)不及它們所描述的隨機變量,我發(fā)現(xiàn)粒子濾波和分布式強化學(xué)習(xí)等方法非???,因為它們是在整個分布上運行的算法,讓我們無需借助簡單的正態(tài)分布來跟蹤不確定性。除了使用單標(biāo)量的「不確定性」來塑造基于機器學(xué)習(xí)的決策,現(xiàn)在我們也可以在決定要做什么時查詢分布的整體結(jié)構(gòu)。
Dabneyetal.的ImplicitQuantileNetworks論文(https://arxiv.org/pdf/1806.06923.pdf)很好地討論了如何基于回報的分布構(gòu)建「風(fēng)險敏感型智能體」。在某些環(huán)境中,人們可能更偏好傾向于探索未知的機會主義策略;而在另一些環(huán)境中,未知事物可能并不安全,應(yīng)當(dāng)避開。風(fēng)險度量的選擇本質(zhì)上決定了如何將回報的分布映射成一個標(biāo)量數(shù)量,然后再根據(jù)這個量進(jìn)行優(yōu)化。所有的風(fēng)險度量都可以根據(jù)分布計算得到,所以預(yù)測整個分布能讓我們將多個風(fēng)險定義輕松地組合起來。此外,支持靈活的預(yù)測分布似乎也是一個提升模型校準(zhǔn)的好方法。
圖4:多種風(fēng)險度量在Atari游戲上的表現(xiàn),來自這篇IQN論文:https://arxiv.org/abs/1806.06923
對金融資產(chǎn)管理者而言,風(fēng)險度量是一個非常重要的研究主題。簡單純粹的馬科維茨(Markowitz)投資組合的目標(biāo)是最小化投資組合回報的一個加權(quán)的方差。但是,方差是「風(fēng)險」在金融語境的一個不直觀的選擇:大多數(shù)投資者根本不在乎回報超出預(yù)期,而只是希望最小化回報少或虧損的可能性。由于這個原因,Value-at-Risk、ShortfallProbability和TargetSemivariance等僅關(guān)注「糟糕」結(jié)果的概率的風(fēng)險度量是更有用的優(yōu)化目標(biāo)。
不幸的是,它們也更難分析。我希望在分布式強化學(xué)習(xí)、蒙特卡洛方法和靈活的生成模型上的研究能讓我們構(gòu)建起能與投資組合優(yōu)化器很好地協(xié)同工作的風(fēng)險度量的可微分弛豫(differentiablerelaxations)。如果你在金融行業(yè)工作,我強烈建議你閱讀IQN論文中的「強化學(xué)習(xí)中的風(fēng)險」一節(jié)。
總結(jié)
下面總結(jié)了本文的一些要點:
不確定性/風(fēng)險度量是「隨機性」的標(biāo)量度量。為了優(yōu)化和數(shù)學(xué)計算的方便,將隨機變量濃縮成了單個數(shù)值。
預(yù)測不確定性可以分解成偶然事件不確定性(來自數(shù)據(jù)收集過程的不可約減的噪聲)、認(rèn)知不確定性(對真實模型的無知)和超出分布的不確定性(在測試時,輸入存在問題)。
認(rèn)知不確定性可以通過softmax預(yù)測閾值設(shè)置或集成方法降低。
我們可以不將OoD不確定性傳播到預(yù)測中,而是使用一種與任務(wù)無關(guān)的過濾機制來濾除「有問題的輸入」。
密度模型是在測試時過濾輸入的一個好選擇。但是,需要認(rèn)識到,密度模型只是真實密度函數(shù)的近似,本身也可能易受分布之外的輸入的影響。
自我插拔:生成式集成方法能降低似然模型的認(rèn)知不確定性,所以它們可被用于檢測OoD輸入。
校準(zhǔn)很重要,而且在研究模型中被低估了。
某些算法(分布式強化學(xué)習(xí))能將機器學(xué)習(xí)算法延展成能產(chǎn)出靈活分布的模型,這能比單個風(fēng)險度量提供更多的信息。
評論
查看更多