認識人和魚的AI,能識別美人魚嗎?阿里CVPR論文試用因果推理方法解答
學(xué)過人類照片和魚類照片的 AI,第一次見到美人魚的照片會作何反應(yīng)?人臉和魚身它都很熟悉,但它無法想象一個從沒見過的事物。近期,阿里巴巴達摩院將因果推理方法引入計算機視覺領(lǐng)域,嘗試克服機器學(xué)習(xí)方法的缺陷,讓 AI 想象從未見過的事物,相關(guān)論文已被計算機視覺頂會 CVPR 2021 收錄。
論文鏈接:https://arxiv.org/pdf/2103.00887.pdf
代碼鏈接:https://github.com/yue-zhongqi/gcm-cf
計算機視覺(CV,Computer Vision)是研究如何讓機器「看」的科學(xué),通過將非結(jié)構(gòu)化的圖像和視頻數(shù)據(jù)進行結(jié)構(gòu)化的特征表達,讓 AI 理解視覺信息。深度學(xué)習(xí)出現(xiàn)后,AI 在 CV 領(lǐng)域的很多任務(wù)上表現(xiàn)出了超越人類的能力。不過,比起人類的視覺理解能力,AI 仍是非常「低維」的存在。
通過人和魚的形象來想象美人魚,對人來說輕而易舉,AI 卻極有可能把美人魚胡亂歸入「人」或「魚」中的一類。因為它們?nèi)狈Α赶胂蟆惯@一高級別認知能力?,F(xiàn)階段的機器學(xué)習(xí)技術(shù)本質(zhì)是通過觀測數(shù)據(jù)進行擬合,這導(dǎo)致 AI 只認得學(xué)過的事物,遇到超越訓(xùn)練數(shù)據(jù)的對象,往往容易陷入「人工智障」。
圖靈獎得主、因果關(guān)系演算法創(chuàng)立者朱迪 · 珀爾認為,人類的想象能力源于我們自帶因果推理技能的大腦。人類善問「為什么」,也就是尋求事物的因果關(guān)系。借助這套認知系統(tǒng),我們用「小數(shù)據(jù)」就能處理現(xiàn)實世界無限的「大任務(wù)」。而 AI 卻只能用「大數(shù)據(jù)」來處理「小任務(wù)」,如果 AI 能夠?qū)W會因果推理,就有望打破「智商天花板」,甚至通向強人工智能。
因果推理理論極大地啟發(fā)了研究者,其與機器學(xué)習(xí)的結(jié)合日益受到關(guān)注。在工業(yè)界,達摩院城市大腦實驗室最早將因果推理方法引入 CV 領(lǐng)域,用因果推理模型賦能機器學(xué)習(xí)模型,讓視覺 AI 更智能。今年,該團隊與南洋理工大學(xué)合作了《反事實的零次和開集識別》(Counterfactual Zero-Shot and Open-Set Visual Recognition)等三篇采用因果推理方法的論文,均被 CVPR 2021 收錄。
左為現(xiàn)有方法的 AI「想象」結(jié)果,中為達摩院論文提出的算法核心,右為基于達摩院框架完成的想象結(jié)果。在左右二圖中,紅色代表訓(xùn)練集里面的樣本,藍色是 AI 未見過類別的樣本,綠色是 AI 對未見過類別的想象。
零次學(xué)習(xí)是指讓機器分類沒見過的對象類別,開集識別要求讓機器把沒見過的對象類別標成「不認識」,兩個任務(wù)都依賴想象能力?!斗词聦嵉牧愦魏烷_集識別》提出了一種基于反事實的算法框架,通過解耦樣本特征(比如對象的姿勢)和類別特征(比如是否有羽毛),再基于樣本特征進行反事實生成。在常用數(shù)據(jù)集上,該算法的準確率超出現(xiàn)有頂尖方法 2.2% 到 4.3%。論文作者岳中琪指出,AI 認知智能的進化剛剛開始,業(yè)界的探索仍處在早期階段,今后他們將不斷提升和優(yōu)化相關(guān)算法。
城市大腦實驗室介紹稱,數(shù)據(jù)驅(qū)動的機器學(xué)習(xí)模型普遍面臨數(shù)據(jù)不均衡問題,「以城市為例,它的信息呈長尾分布,相比海量的正常信息,交通事故、車輛違規(guī)、突發(fā)災(zāi)害等異常信息的發(fā)生概率很小,樣本稀少,盡管可以通過大量增加少見樣本的辦法來部分解決問題,但這么做成本高、效率低。」
基于自研算法,只需使用正常信息樣本,就能讓 AI 獲得無偏見的異常檢測結(jié)果。一旦出現(xiàn)緊急情況,比如某輛車和某個行人發(fā)生異常交互,城市大腦不必不懂裝懂或視而不見,而是可以實時識別和反饋信息?!刮磥恚@一技術(shù)有望應(yīng)用于城市基礎(chǔ)視覺算法體系優(yōu)化、極少樣本城市異常事件感知能力優(yōu)化乃至多模態(tài)語義搜索、智能圖文生成等領(lǐng)域。
CVPR 是計算機視覺領(lǐng)域三大頂會之一,CVPR 2021 會議將于 6 月 19 日至 25 日在線舉行。今年大會收錄論文 1663 篇,接受率 27%。阿里巴巴集團入選論文 41 篇,是 2020 年的 2.6 倍。
在下文中,《反事實的零次和開集識別》論文一作岳中琪對他們的論文進行了解析。
《反事實的零次和開集識別》論文解析
現(xiàn)有的零次學(xué)習(xí)和開集識別中,見過和未見過類別間識別率嚴重失衡,我們發(fā)現(xiàn)這種失衡是由于對未見過類別樣本失真的想象。由此,我們提出了一種反事實框架,通過基于樣本特征的反事實生成保真,在各個評估數(shù)據(jù)集下取得了穩(wěn)定的提升。這項工作的主要優(yōu)勢在于:
我們提出的 GCM-CF 是一個見過 / 未見過類別的二元分類器,二元分類后可以適用任何監(jiān)督學(xué)習(xí)(在見過類別上)和零次學(xué)習(xí)算法(在未見過類別上);
我們提出的反事實生成框架適用于各種生成模型,例如基于 VAE、GAN 或是 Flow 的;
我們提供了一種易于實現(xiàn)的兩組概念間解耦的算法
接下來我會具體介紹我們針對的任務(wù)、提出的框架和對應(yīng)的算法。
零次學(xué)習(xí)和開集識別
很多人都認識羚羊和貘這兩種動物(如上圖所示),那么一個鼻子像貘的羚羊長什么樣呢?可能大家能想象出一個類似于圖右的動物(它叫高鼻羚羊)。在上面的過程中,我們就是在做零次學(xué)習(xí)(Zero-Shot Learning, ZSL):雖然我們沒見過高鼻羚羊,但是通過現(xiàn)有的關(guān)于羚羊和貘的知識,我們就能想象出來這個未見類別的樣子,相當于認識了這個動物。事實上,這種將已有知識泛化到未見事物上的能力,正是人能夠快速學(xué)習(xí)的一個重要原因。
我們再來看一個路牌的例子,我們很容易就認出左邊的兩個路牌是熟悉的、見過的,而右邊的則是一個很奇怪的沒見過的路牌。人類很容易就能完成這樣的開集識別(Open-Set Recognition, OSR),因為我們不僅熟悉見過的樣本,也有對未知世界的認知能力,使得我們知道見過和未見之間的邊界。
在機器學(xué)習(xí)當中,這兩個任務(wù)的定義如上圖所示。零次學(xué)習(xí)訓(xùn)練集提供類別集合 S。對于上面的圖片,除了每張圖片的類別標簽,每個類別還額外有一個屬性特征 (attribute) 來描述這個類的特點(比如有翅膀,圓臉等等)。測試的時候有兩種設(shè)定:在 Conventional ZSL 下全部是未見類別 U 中的圖片(S∩U=?),并且測試的時候也會給定 U 類別的 dense label。而在 Generalized ZSL 中,測試集會有 S 和 U 中的圖片。開集識別的訓(xùn)練集則和普通的監(jiān)督學(xué)習(xí)沒有差別,只是在測試的時候會有訓(xùn)練未見過類別的樣本。分類器除了正確識別見過的類,還要將未見過的類標成「未知」。
現(xiàn)有的 ZSL 和 OSR 的主要方法是基于生成的,比如 ZSL 中用未見類別的屬性特征生成圖片,然后在 image space 中進行比較。然而,生成模型會自然地偏向見過的訓(xùn)練集,使得對于未見類別的想象失真了(這其實是因為屬性特征的 entanglement,這里我不詳細展開,大家可以參考一下論文)。比如訓(xùn)練的時候見過大象的長鼻子,而去想象沒見過的貘的長鼻子的時候,就會想象成大象的鼻子。左邊的圖展現(xiàn)了這種失真:紅色是訓(xùn)練集里面的樣本,藍色是 ground-truth 的未見過類別的樣本,綠色是現(xiàn)有方法對未見過類別的想象,這些想象已經(jīng)脫離了樣本空間,既不像見過的類,也不像沒見過的類(綠色的點偏離了藍色和紅色的點)。這就解釋了為什么見過和未見過類別的識別率會失衡了:用綠色和紅色樣本學(xué)習(xí)的分類器(黑色虛線)犧牲了未見過類的 recall 來提高見過類的 recall。
反事實生成框架
那么如何在想像的時候保真?我們來思考一下人是怎么想像的:在想像一個古代生物的樣子時,我們會基于它的化石骨架(圖左);在想象動畫世界的一個場景時,我們會參考現(xiàn)實世界(圖右)。這些想象的本質(zhì)其實是一種反事實推理(counterfactual inference),給定這樣的化石(fact),如果它還活著(counterfact),會是什么樣子呢?給定現(xiàn)實世界的某個場景,如果這個場景到了動畫世界,它是什么樣子呢?我們的想象,通過建立在 fact 的基石上,就變得合情合理而非天馬行空。
那么可否在 ZSL 和 OSR 當中利用反事實產(chǎn)生合理的想象呢?我們首先為這兩個任務(wù)構(gòu)建了一個基于因果的生成模型 Generative Causal Model (GCM),我們假設(shè)觀測到的圖片 X 是由樣本特征 Z(和類別無關(guān),比如物體的 pose 等)和類別特征 Y(比如有羽毛,圓臉等)生成的?,F(xiàn)有的基于生成的方法其實在學(xué)習(xí) P(X|Z,Y),然后把 Y 的值設(shè)為某個類的特征(比如 ZSL 中的 dense label),把 Z 設(shè)成高斯噪聲,就可以生成很多這個類的樣本了。
反事實生成和現(xiàn)有生成模型的最大區(qū)別就是基于特定的樣本特征 Z=z(fact)來進行生成,而非高斯噪聲。具體過程如上圖所示,對于一個圖片 x,我們通過 encoder z(?)拿到這個圖片的樣本特征 Z=z(x)(比如 front-view,walking 等),基于這個樣本特征 Z(fact)和不同的類別特征 Y(counterfact),我們可以生成不同類別的反事實圖片 x ?(front-view,walking 的貓,羊和雞等等)。直覺上我們知道,因為反事實生成的貓、羊和雞的圖片和 x 不像,x 肯定不屬于這三個類別。這種直覺其實是有理論支持的 --- 叫做反事實一致性(Counterfactual Consistency Rule),通俗的解釋就是 counterfact 和 fact 重合時,得到的結(jié)果就是 factual 的結(jié)果,比如 fact 是昨天吃冰淇凌拉肚子,那么反事實問題「如果我昨天吃冰淇凌會怎么樣呢?」的答案就是拉肚子。那么如何通過 consistency rule 解決 ZSL 和 OSR 呢?
GCM-CF 算法
我們的 GCM-CF 算法流程如上圖所示,它本質(zhì)上是一個基于 consistency rule 的二元分類器,去判斷某個樣本是屬于見過還是沒見過的類。
訓(xùn)練的時候我們學(xué)習(xí)一個 GCM。測試的時候,對于每個樣本 X=x,我們用上一節(jié)介紹的步驟進行反事實生成:用這個樣本自己的 Z=z(x),拼上不同的類別特征 Y=y,然后用 P(X|Z=z(x),Y=y)生成 x ?。這樣生成的樣本可以證明是「保真」(Counterfactual Faithful)的,也就是在樣本空間里面,那么我們就能夠用樣本空間當中的量度去比較 x 和生成的 x ?,從而用 consistency rule 判斷 x 是屬于見過的還是沒見過的類。
具體到任務(wù)中,在 ZSL 里面,我們用未見過類別的 attribute(圖中 Y_U)生成反事實樣本,然后用訓(xùn)練集的樣本(見過的類)和生成的樣本(未見過的類)訓(xùn)練一個線性分類器,對輸入樣本 X=x 進行分類后,我們?nèi)∫娺^類和未見過類概率的 top-K 的平均值。如果未見過類上的平均值較小,我們就認為樣本 X=x 不像未見過的類(not consistent),把這個樣本標注成屬于見過的類,并使用在見過類的樣本上面監(jiān)督學(xué)習(xí)的分類器來分類(這其實是基于 consistency rule 的換質(zhì)位推理,具體見論文);反之如果 consistent,就標注為為見過的類,然后用任何 Conventional ZSL 的算法對其分類。在 OSR 里面,因為沒有未見類別的信息,我們用見過類的 one-hot label(圖中 Y_S)作為 Y 生成反事實樣本,如果 x 和生成的樣本在歐式距離下都很遠(not consistent),就認為 x 屬于未見過的類,并標為「未知」,反之則用監(jiān)督學(xué)習(xí)的分類器即可。
可以看到,算法的核心要求是生成保真的樣本,這樣才能用 consistency rule 做推理。這個性質(zhì)可以由 Counterfactual Faithfulness Theorem 來保證,簡單來說就是:保真生成的充要條件是樣本特征和類別特征之間解耦(disentangle)。我們通過三個 loss 實現(xiàn):
β-VAE loss:這個 loss 要求 encode 得到的 Z=z(x),和樣本自己的 Y=y,可以重構(gòu)樣本 X=x,并且 encode 出來的 Z 要非常符合 isotropic Gaussian 分布。這樣通過使 Z 的分布和 Y 無關(guān)實現(xiàn)解耦;
Contrastive loss:反事實生成的樣本中,x 只和自己類別特征生成的樣本像,和其他類別特征生成的樣本都遠。這個避免了生成模型只用 Z 里面的信息進行生成而忽略了 Y,從而進一步把 Y 的信息從 Z 里解耦;
GAN loss:這個 loss 直接要求反事實生成的樣本被 discriminator 認為是真實的,通過充要條件,用保真來進一步解耦。
實驗
在介紹實驗前,值得注意的是 ZSL 常用的 Proposed Split 官方給的數(shù)據(jù)集之前有一個數(shù)據(jù)泄露的 bug,這使得一些方法在見過類別(S)的表現(xiàn)特別高。去年的時候官方網(wǎng)站上放出了 Proposed Split V2,解決了這個 bug。我們下面的實驗都是在改過的數(shù)據(jù)集上跑的。
減輕見過和未見過類別識別率的失衡
下面的 tsne 顯示了反事實生成的結(jié)果,可以看到通過 condition 樣本特征(藍星是未見類的樣本,紅星是見過的),生成的未見類別的樣本確實保真了(在藍點中間),得到的 decision boundary(黑線)也 balanced 了。這在 ZSL 的 4 個常用數(shù)據(jù)集上也體現(xiàn)了出來,我們的方法大幅提高了未見類別 (U) 的準確率,從而使得整體的準確率 H(harmonic mean)提高了,達到了 SOTA 的表現(xiàn)。現(xiàn)有的方法其實也有一個簡單的解決失衡的辦法,就是直接調(diào)整見過類別的 logits,通過改變調(diào)整的幅度,我們可以得到一個見過類別和未見過類別的曲線,可以看到我們的方法(紅線)在各個調(diào)整幅度下都更高,說明它能從根本上減輕失衡,這是簡單的調(diào)整所不能完成的。
強大的見過 / 未見過類別的分類器
我們的方法能夠適用任何的 conventional ZSL 算法,我們測試了 inference-based 的 RelationNet,和三個基于不同生成網(wǎng)絡(luò)的 generation-based 的方法,發(fā)現(xiàn)加上我們的方法都獲得了提高,并且超過了用現(xiàn)在 SOTA 的 TF-VAEGAN 作為見過 / 未見過的分類器的表現(xiàn)。
強大的開集分類器
我們在常用的幾個數(shù)據(jù)集上做了開集識別的實驗(用的 F1 指標),并取得了 SOTA 的表現(xiàn)。因為開集識別中未見過類別的數(shù)量是未知的,所以好的分類器必須在數(shù)量少和多的情況下都好。在右圖中我們畫了 F1 分數(shù)和未見過類別的數(shù)量(從少到多)的曲線,我們的方法(藍色)在每個情況下都是最好,并且在未見類別測試中,很多時候(藍色曲線末尾)F1 基本沒有下降,體現(xiàn)了較強的魯棒性。
結(jié)語
這篇工作是我們對于解耦表示(disentangled representation)的一點點探究和摸索,把難以實現(xiàn)的所有 factor full disentangle,放寬成為兩組概念(樣本特征和類別特征)之間的 disentangle,并借著 disentangle 帶來的 faithfulness 性質(zhì),使我們提出的反事實生成框架變?yōu)榭赡?。這也從一個側(cè)面反映了解耦是因果推理的一個重要的前提,當不同的概念被區(qū)分開(比如解耦的表示)時,我們就可以基于它們之間的因果關(guān)系進行推理,得到魯棒、穩(wěn)定、可泛化的結(jié)論。
我也看到一些對于解耦的悲觀和質(zhì)疑。確實,目前就連解耦的定義都沒有定論,更不要說方法、evaluation 等等了。但這些困難也是可預(yù)見的:解耦在幫助機器跨越一個層級,從學(xué)習(xí)觀測到的數(shù)據(jù)中的規(guī)律,到探究這些數(shù)據(jù)產(chǎn)生的原因 --- 就像人知道太陽每天會升起的規(guī)律是容易的,但明白為什么太陽會升起卻花了幾千年。這里也鼓勵大家多多關(guān)注、探索解耦這個領(lǐng)域,說不定帶來下一個突破的就是你啊。
最后附上我們論文的引用:
@inproceedings{yue2021counterfactual, title={Counterfactual Zero-Shot and Open-Set Visual Recognition}, author={Yue, Zhongqi and Wang, Tan and Zhang, Hanwang and Sun, Qianru and Hua, Xian-Sheng}, booktitle= {CVPR}, year={2021} }
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。