0
本文作者: 楊曉凡 | 2020-02-15 12:03 |
雷鋒網(wǎng) AI 科技評論按:2020 年 2 月 9 日,AAAI 2020 的主會議廳講臺上迎來了三位重量級嘉賓,這三位也是我們熟悉、擁戴的深度學(xué)習(xí)時代的開拓者:Geoffrey Hinton,Yann LeCun,Yoshua Bengio。
其實(shí)僅僅在幾年以前,我們都很少在計算機(jī)科學(xué)界的學(xué)術(shù)會議上看到他們的身影,Hinton 甚至表示自己都很久不參與 AAAI 會議了 —— 畢竟十年前的時候神經(jīng)網(wǎng)絡(luò)還被主流的計算機(jī)科學(xué)研究人員們集體抗拒,即便有進(jìn)展,論文也不會被各個學(xué)術(shù)會議接收。如今,隨著深度學(xué)習(xí)成為機(jī)器學(xué)習(xí)科研的絕對主流和面向大眾的人工智能技術(shù)中的核心技術(shù),2018 年的圖靈獎終于授予這三人,也就是對他們的貢獻(xiàn)的(遲來的)認(rèn)可。
在這天的兩小時的特別活動中,三位各自進(jìn)行三十分鐘演講,最后還有三十分鐘的圓桌討論,圓桌討論中也會回答在座觀眾提出的問題。
Hinton 第一個進(jìn)行演講,按慣例,在演講嘉賓登臺之前要做簡單的介紹。AAAI 2020 兩位程序主席之一的 Vincent Conitzer 說道:「我們都知道,發(fā)生在這三位身上的是一個飽含天賦和堅持的故事。如今我們也許很難想象,但當(dāng)時神經(jīng)網(wǎng)絡(luò)這個研究方向簡直不能更冷門了,Jeff、Yann、Yoshua 三個人就是在這種時候做出了許多關(guān)鍵的成果。他們的故事鼓勵我們要追尋自己認(rèn)定的學(xué)術(shù)方向,而不是一股腦擁到最熱的話題上去」。
Vincent 還講了一則 Hinton 的趣事,這還是 Hinton 自己講給別人的。我們都知道 Hinton 一直在琢磨人腦是怎么運(yùn)轉(zhuǎn)的,有一天 Hinton 告訴自己的女兒「我知道大腦是怎么運(yùn)轉(zhuǎn)的了」,她的反應(yīng)卻是:「爸爸你怎么又說這個」;而且這種事甚至每隔幾年就會發(fā)生一次。
觀眾發(fā)出笑聲,接著 Geoffrey Hinton 在掌聲中走上演講臺。雷鋒網(wǎng) AI 科技評論把他的演講全文整理如下。
今天我要講的是近期和 Adam、Sara、Yee-Whye 一起完成的一些研究。今天我不打算講哲學(xué)話題,也不會解釋我為什么很久都不參加 AAAI 會議之類的(觀眾笑),我就給大家講講這項(xiàng)研究。
對象識別這個任務(wù)主要有兩大類方法,一類是老式的基于部件的模型,它們會使用模塊化、可感知的表征,但通常也需要很多的人工特征工程,所以它們通常也不具備學(xué)習(xí)得到的部件的層次結(jié)構(gòu)。另一類方法就是卷積神經(jīng)網(wǎng)絡(luò),它們完全是通過端到端學(xué)習(xí)得到的。對象識別中有一個基礎(chǔ)規(guī)律,如果一個特征檢測器在圖像中的這個位置有效,那么在另一個位置也是有效的(譯注:平移不變性),CNN 就具備這個性質(zhì),所以可以組合不同的信號、很好地泛化到不同的位置,有不錯的表現(xiàn)。
但 CNN 和人類的感知有很大的區(qū)別。我今天演講的第一部分可以算是都在針對 Yann LeCun 了,我要指出 CNN 的問題,告訴你們?yōu)槭裁?nbsp;CNN 是垃圾。(觀眾笑)
CNN 的設(shè)計可以處理平移,但是對其他類型的視角變換處理得很不好,比如對于旋轉(zhuǎn)和縮放 —— 不過比我們一般認(rèn)為的還是要好一點(diǎn)。一種處理方式是把二維特征 map 換成四維或者六維的,但是計算成本增加得太多了。所以,訓(xùn)練 CNN 的時候要使用各種不同的視角,來讓模型學(xué)習(xí)如何泛化到不同的視角上;這種做法很低效。理想的神經(jīng)網(wǎng)絡(luò)應(yīng)當(dāng)不需要花什么額外的功夫,可以自然而然地泛化到新的視角上 —— 學(xué)會識別某種物體以后,可以把它放大十倍,再旋轉(zhuǎn) 60 度,仍然能夠識別,這樣才是合適的。我們知道計算機(jī)圖形學(xué)就是這樣的,我們也希望能設(shè)計出更接近這樣的神經(jīng)網(wǎng)絡(luò)。
下面我先解釋一下 equivalence(等價)和 invariance(不變)。典型的 CNN,尤其是帶有池化的網(wǎng)絡(luò),它得到的表征是不隨著視角的變化而變化的,是「invariance 不變」,和得到「equivalence 等價」的表征是兩碼事?!竐quivalence 等價」的意思是說,隨著視角變化,表征也跟著變化。我相信的是,在人類的感知系統(tǒng)中,當(dāng)你的視角變化的時候,神經(jīng)活動的模式也會跟著變化;我不是說識別得到的標(biāo)簽要變化,顯然標(biāo)簽是需要保持不變的,但你的感知活動的表征可能會發(fā)生很大的變化。不隨著視角變化而變化的,是連接權(quán)重,而權(quán)重編碼了不同的東西之間的關(guān)系。這個我待會兒還會說到。
CNN 也不能解析圖像。當(dāng)你讓 CNN 識別一張圖像的時候,它不會做任何的顯式解析,不會嘗試分辨什么是什么的一部分、什么不是什么的一部分。我們可以這么理解 CNN,它關(guān)注的是各種各樣的像素位置,根據(jù)越來越多的環(huán)境信息對每個像素位置上存在的東西建立越來越豐富的描述;最后,當(dāng)你的描述非常豐富了,你就知道圖像中有什么東西了。但 CNN 并不會顯式地解析圖像。
CNN 識別物體的方式也顯然和人類很不一樣,在一張圖像里增加一點(diǎn)點(diǎn)噪聲,CNN 就會把它識別成完全不同的東西;但我們?nèi)祟悗缀蹩床怀鰣D像有什么變化。這種現(xiàn)象是非常奇怪的。在我看來這是一個證據(jù),證明了 CNN 識別圖像的時候使用的信息和我們?nèi)祟愅耆煌?。這不代表 CNN 就做錯了,只不過是確實(shí)和人類的做法有很大區(qū)別。
我對 CNN 還有一點(diǎn)不滿是,它會計算下方的層的點(diǎn)積、再乘上權(quán)重,用來決定是否激活。這是一個找到線索的過程,然后把線索疊加起來;疊加的線索足夠多了,就激活了。這是一種尋找巧合的激活方式,它比較特殊。巧合其實(shí)是非常重要的,就像物理學(xué)很大程度上研究的就是兩個不同的物理量之間的巧合;巧合可以構(gòu)成一個等式的兩端,可以構(gòu)成理論和實(shí)驗(yàn)。在高維空間里如果發(fā)生巧合了,這是非常顯著的,比如你在收音機(jī)里聽到了「2 月 9 日,紐約」,然后在別的信息里又看到了幾次「2 月 9 日,紐約」,全都是 2 月 9 日和紐約的話,你會覺得很震驚,這就是高維空間里的巧合,非常顯著。
那么,目前我們使用的這種神經(jīng)元是不會尋找巧合的;不過情況也在變化,我們也開始使用 Transformer 模型,而 Transformer 是會尋找巧合的;等一下我也會解釋這個。計算兩個活動向量的點(diǎn)積,這要比原來的做法強(qiáng)多了;這就是計算這兩個活動向量是否匹配,如果是,那就激活。Transformer 就是這么工作的,這帶來了更好的過濾器。這也帶來了對協(xié)方差結(jié)構(gòu)和圖像有更好響應(yīng)的模型。這里真正重要的就是協(xié)方差結(jié)構(gòu),像素的協(xié)方差結(jié)構(gòu)。
最后一點(diǎn),也是 CNN 最嚴(yán)重的問題是,CNN 不使用坐標(biāo)系。當(dāng)我們?nèi)祟愑^察東西的時候,只要看到一個形狀,我們就會給它假定一個坐標(biāo)系。這是人類感知的一個基本特點(diǎn)。我會舉例子嘗試說服你接受這件事;不過我的時間不是很多,我會試著很快地舉例子說服你。
因?yàn)闆]有時間看那些很漂亮的 demo,我們就看看這兩個形狀。左邊這個像是某個國家的地圖,有點(diǎn)像澳大利亞;但是如果我告訴你這個形狀不是正的,是斜的,它看起來就像非洲。一旦你看出來它像非洲了,它就和一開始感覺的那個仿佛鏡像過的澳大利亞完全不一樣。但我們不是第一眼就能看出來它像非洲的,如果告訴你它是某個國家,那你就只會把它看作某個國家。
再看右邊這個形狀,它要么是個很正的菱形,要么是個正方形轉(zhuǎn)了 45 度;基于你覺得它像什么,你對它的感知也會完全不同。如果你把它看作菱形,那么只要左側(cè)和右側(cè)的兩個角的高低有一點(diǎn)點(diǎn)區(qū)別你都能注意到,但你就注意不到這四個角是不是直角,你的觀察根本不會在意這里。也就是說,如果如果我把它上下拉長一點(diǎn),讓里面的四個角不是直角了,它在你看來仍然是一個很正的菱形。
但反過來,如果你把它看作一個正方形轉(zhuǎn)了 45 度,你就會注意到這四個角都是直角;即便只是從 90 度變成 88 度,你都能看得出來不再是直角了;但同時,你也就不再會在意左側(cè)右側(cè)的兩個角的高低是否一樣。
所以,根據(jù)你選取的坐標(biāo)系不同,你內(nèi)心的感知會完全不同。CNN 的設(shè)計就沒法解釋這個現(xiàn)象,對于每個輸入只有一種感知,而且這個感知也不取決于坐標(biāo)系的選取。我覺得這和對抗性樣本有一些聯(lián)系,也就是 CNN 和人類的感知方式有很大不同。
我覺得做計算機(jī)視覺的一個很好的方法是把它看作計算機(jī)圖形學(xué)的反向,這種想法可以回溯到很久很久以前。計算機(jī)圖形程序中會使用層次化的模型,它們對空間結(jié)構(gòu)建模,用矩陣來表示內(nèi)嵌在整體內(nèi)的坐標(biāo)系和每個部分自己的坐標(biāo)系之間的轉(zhuǎn)換關(guān)系。
對于整個物體,它有一個自己的、內(nèi)嵌的坐標(biāo)系,我們也可以指定一個;然后整體的每個部件也有各自的坐標(biāo)系。在坐標(biāo)系全都選定了之后,就可以確定部件和整體之間的關(guān)系,這就是一個簡單的矩陣運(yùn)算;對于剛體,這就是一個線性關(guān)系。
所以這是一個很簡單的線性結(jié)構(gòu),計算機(jī)圖形學(xué)中用的就是這樣的思路。對于做計算機(jī)圖形學(xué)的人,你要是請他把東西換個角度展示給你看,他們就不會說「我其實(shí)是很樂意的,但我們沒從別的角度訓(xùn)練過,所以最多只能轉(zhuǎn) 15 度」這樣的話,他們可以直接轉(zhuǎn)到你要的隨便什么角度,因?yàn)樗麄冇姓嬲娜S模型,他們會對空間結(jié)構(gòu)建模、對部件和整體之間的關(guān)系建模。這些關(guān)系也完全不受視角的影響。
我覺得,如果處理三維物體的圖像的時候不使用這種美妙的結(jié)構(gòu)才是真的有問題。一個原因是,如果要做長距離的外推,線性模型是可以很方便地做外推的;次數(shù)更高的模型很難外推。而且我們也一直在尋找線性的隱含流形,在計算機(jī)視覺里我們知道它們是什么;視角變換對圖像有很大的影響,這其中其實(shí)就有一個隱含的線性結(jié)構(gòu),而我們并沒能利用這個結(jié)構(gòu)。
現(xiàn)在我要具體介紹一個系統(tǒng),它的名字叫做 Stacked Capsule Auto-Encoders。有的人可能已經(jīng)讀過一些膠囊網(wǎng)絡(luò)相關(guān)的東西,這里我得說明,這是另外一種版本的膠囊。每一年我都會設(shè)計出一種完全不同的膠囊網(wǎng)絡(luò),NeurIPS 2017 的那篇是關(guān)于路由的,ICLR 2018 的那篇使用了 EM 算法,然后在 NeurIPS 2019 還有一篇新的,就是我現(xiàn)在要介紹的這個。
所以,首先要把之前的那些版本的膠囊網(wǎng)絡(luò)的一切都忘了,它們都是錯的,只有現(xiàn)在這個是對的(觀眾笑)。之前的那些版本用了判別式學(xué)習(xí),我當(dāng)時就知道這個做法不好,我一直就覺得無監(jiān)督學(xué)習(xí)才是對的,所以之前的那些版本都走錯了方向;而且它們都使用了「部件-整體」關(guān)系,效果也不好。用「整體-部件」關(guān)系要好很多。用「部件-整體」關(guān)系的時候,如果部件的自由度比整體的自由度要少,好比部件是點(diǎn),然后你要用點(diǎn)組成星座,那你很難從一個點(diǎn)的位置預(yù)測整個星座的位置,你需要用到很多點(diǎn)的位置;所以不能從單個部件出發(fā)對整體做預(yù)測。
在這個新的版本中,我們用的是無監(jiān)督學(xué)習(xí),以及用「整體-部件」關(guān)系。
「膠囊」的出發(fā)點(diǎn)是,在神經(jīng)網(wǎng)絡(luò)中建立更多的結(jié)構(gòu),然后希望這些新增的結(jié)構(gòu)可以幫助模型更好的泛化。它也受到了 CNN 的啟發(fā),在 CNN 里 Yann 只設(shè)計了很少、很簡單的一些結(jié)構(gòu),就是讓特征檢測器可以在不同的平移變換之間復(fù)制,這個改進(jìn)產(chǎn)生了巨大的好處。那么我的下一個問題就是,我們能不能沿著這個方向繼續(xù)往前走,能不能設(shè)計一些更加模塊化的結(jié)構(gòu),這樣就可以做解析樹之類的。
那么,膠囊會表征某個東西是否存在,它會學(xué)習(xí)它應(yīng)該表征什么實(shí)體,也會有一些這個實(shí)體的參數(shù)。在 2019 年的膠囊,也就是這個最終的、正確的膠囊里,它會有一個邏輯單元,就是最左側(cè)的淺藍(lán)色的東西,它用來表示當(dāng)前的圖像中是否存在這個實(shí)體,不管實(shí)體是在這個膠囊覆蓋的圖像范圍的任何地方。也就是說膠囊自己可以是卷積的。
膠囊里會有一個矩陣,右邊紅色的,用來表示這個膠囊表示的實(shí)體和觀察者之間的空間關(guān)系,或者是這個實(shí)體內(nèi)嵌的固有坐標(biāo)系和觀察者之間的空間關(guān)系;這樣就知道了它朝什么方向、多大、在哪里,等等。還有一個包含了其它屬性的向量,里面會包含變形之類的東西;如果要處理視頻,也會包含速度、顏色等等信息。
我再重復(fù)一下重點(diǎn):膠囊是用來捕捉固有幾何特性的。所以,一個表示了某個物體的膠囊可以根據(jù)自己的姿態(tài)預(yù)測出它的部件的姿態(tài),而且,物體自己和物體的部件之間的關(guān)系不會隨著視角的變化而變化。這才是我們要以權(quán)重的方式存儲在神經(jīng)網(wǎng)絡(luò)里的,這才是值得存儲的知識,然后也就可以用這些不依賴視角的知識做對象識別。
集中注意力,理解了這頁 PPT,你就理解了這個新的膠囊。這里的思路是,我們有某種自動編碼器,一開始先用貪婪的方法訓(xùn)練它 —— 從像素得到部件,從部件得到更大的部件,從更大的部件得到再大的部件。這個訓(xùn)練過程是貪婪的,就是一旦從像素得到部件了,就不會逆過來重新選取像素和部件,而是就直接使用已經(jīng)得到的結(jié)果,然后往更高的一層進(jìn)發(fā),嘗試把這些部件拼成更熟悉的整體。
這張 PPT 里展示的就是一個兩層的自動編碼器中的解碼器,但其中的單元已經(jīng)不是傳統(tǒng)的那種神經(jīng)元了,是更復(fù)雜的膠囊。下面這一層中是一些我們已經(jīng)從圖像中收集信息得到的膠囊 —— 這算是一種歸納法的解釋 —— 我們已經(jīng)得到了一些低層次的膠囊,已經(jīng)知道了它們是否存在、它們的向量屬性是什么、姿態(tài)是什么、和觀察者之間的關(guān)系,現(xiàn)在要在它們的基礎(chǔ)上學(xué)習(xí)更高一層的膠囊。我們希望每個更高層次的膠囊可以解釋好幾個低層的膠囊,也就是一個整體膠囊對應(yīng)多個部件膠囊,就有了一個學(xué)習(xí)過程。
在這樣的生成式模型中,我們不直接生成低層次的數(shù)據(jù),我們根據(jù)高層次的膠囊生成「低級別的數(shù)據(jù)可能是什么」的預(yù)測。首先我們要做的是找到頰囊中的參數(shù)向量,然后這里的綠色虛線表示,通過這個實(shí)體中提取到的這些參數(shù),分別為每個部件預(yù)測整體和部件之間的空間關(guān)系。
如果是一個剛體,那就不需要這些綠色虛線,對應(yīng)的矩陣就是常數(shù);如果是可變的物體,就需要這些綠色虛線。對于每一個高層次的膠囊 —— 等會兒我會解釋它們是怎么實(shí)例化的 —— 每一個已經(jīng)實(shí)例化的高層次膠囊都會為每個已經(jīng)從圖像中提取到的低層次的膠囊預(yù)測姿態(tài)。這里被橢圓圈出來的三個紅色方塊就是三個高層次的膠囊分別對某個低層次的膠囊的姿態(tài)作出的預(yù)測。
這里我們感興趣的是,高層次的膠囊中應(yīng)該應(yīng)該有一個是有解釋能力的。所以這里會使用一個混合模型。使用混合模型有一個隱含的假設(shè)是,其中有一個是正確的解釋,但一般來說你不知道哪一個是正確的。
我們選擇的目標(biāo)函數(shù)是,讓高層次膠囊通過混合模型產(chǎn)生的、已經(jīng)在低層次膠囊上觀察到的姿態(tài)的對數(shù)似然最大化。在這個混合模型下,對數(shù)似然是可以計算的。這些結(jié)構(gòu)的訓(xùn)練方式是反向傳播,學(xué)習(xí)如何讓高層次的膠囊實(shí)例化。
當(dāng)通過混合模型做反向傳播的時候,其中并不能很好地解釋數(shù)據(jù)的元素的后驗(yàn)概率幾乎為 0。那么當(dāng)計算反向傳播的時候,反向傳播并不會改動它們,因?yàn)樗鼈儧]有什么作用;那些提供了最好的解釋的元素得到最大的導(dǎo)數(shù),就可以學(xué)習(xí)、優(yōu)化。
這就是這個生成式模型的設(shè)計。需要說明的是,生成式模型里有兩種思想。首先,每個低層次的膠囊只會被一個高層次膠囊解釋 —— 這就形成了一個解析樹,在解析樹里每個元素只有一個父項(xiàng)。其次,低層次的膠囊的姿態(tài)可以從高層次膠囊推導(dǎo)得到,就是通過高層次膠囊相對于觀察者的位姿和整體相對于部件的位姿做矩陣相乘,就得到了低層次膠囊相對于觀察者的位姿。視覺里非常重要的兩件事,處理視角變化,以及建立解析樹,就這樣設(shè)計到了模型里面。
現(xiàn)在我還沒展示如何做編碼器,也就是感知的部分。這是一個很難的推理問題,在之前版本的膠囊里,我們對編碼器做了一些人工工程,要對高層次的膠囊投票、看投票的結(jié)果是否一致,這種方式特別難搞,很難做對。Sarah 花了很多時間精力研究這里,她雖然讓它運(yùn)行起來了,但還是非常困難。
很幸運(yùn)的是,當(dāng)我們做這些嘗試的時候,Transformer 出現(xiàn)了。Transformer 本來是用來處理語言的,但它的設(shè)計非常巧妙。那么我們面對的狀況是,我們有一些部件,想從部件推理出整體,這是一個很難處理的推理問題。但有了 Transformer,我們就可以試試直接把所有部件都輸入到 Transformer 里,讓它們自己去碰吧。
我們就使用了一個多層 Transformer 模型,最終把一個簡單的生成模型和一個復(fù)雜的編碼模型配合使用。這個多層 Transformer 模型會決定如何處理一致性、如何組織不同的部件,我們只需要想辦法訓(xùn)練它就行。
要訓(xùn)練 Transformer,一般來說我們需要有正確答案。但這兒實(shí)際上可以不需要正確答案,只需要訓(xùn)練它的導(dǎo)數(shù),就是看它給出的答案,然后讓它給出一個比現(xiàn)在更好的答案。這是從生成模型得到的。
做法是,把所有已經(jīng)提取到的膠囊都找出來,把它們輸入到多層 Transformer 套模型(Set Transformer)里,這個套模型會給每個低層次膠囊取向量描述,然后隨著在模型里逐層上升,把其他膠囊的信息作為背景環(huán)境不斷更新這個向量描述。當(dāng)這些部件的描述更新得足夠好了以后,就在最后一層里把它們轉(zhuǎn)換成預(yù)測,預(yù)測整體物體應(yīng)該在哪里。
這個多層 Transformer 套模型很好訓(xùn)練,因?yàn)槲覀冇幸粋€對應(yīng)的生成式模型,生成式模型可以把導(dǎo)數(shù)提供給 Transformer。訓(xùn)練 Transformer 模型的目標(biāo)也和訓(xùn)練生成式模型一樣,都是在給定高層次膠囊預(yù)測的位姿的條件下讓實(shí)際觀察到的部件位姿的對數(shù)似然最大化。我們也在里面設(shè)計了一個稀疏的樹結(jié)構(gòu),鼓勵它每次只激活少數(shù)幾個高層次膠囊。
對于這個多層 Transformer 套模型,感興趣的人可以去讀這篇論文,我就不介紹更多細(xì)節(jié)了。
我相信你們中有很多人都知道 Transformer 是怎么運(yùn)行的,而且我的時間也不多了,我會很快很快地講一下 Transformer 是怎么運(yùn)行的。
這是處理句子的情況對吧,它處理句子的方式是先得到一批詞向量,然后在上面運(yùn)行卷積網(wǎng)絡(luò),讓每個詞向量都可以依據(jù)它附近的向量進(jìn)行更新。這整個設(shè)計都可以用無監(jiān)督學(xué)習(xí)的方式訓(xùn)練,訓(xùn)練目標(biāo)是重建其中被拿走的詞向量。
這相當(dāng)于是用卷積的的方式來設(shè)計自動編碼器,并且 Transformer 中還有一些更精細(xì)的人工設(shè)計:除了讓詞向量直接影響同一層和更高層的詞向量之外,每個詞向量還會生成一個 key、一個 query 和一個 value。根據(jù)我這頁 PPT 展示的 Transformer 的狀態(tài),詞向量會查看自己的 query,這是一個學(xué)習(xí)得到的向量,然后把它和臨近的詞向量的 key 做對比。如果匹配了,它就會把臨近的詞向量的一部分 value 作為自己的新的 value。這個過程就是不斷地尋找相似的東西,然后把它們組合起來得到新的表征。Transformer 的運(yùn)行方式基本就是這樣。
下面我給大家看看用一個 Transformer 組合模型和一個帶有坐標(biāo)系、解析樹的簡單生成式模型配合起來,在簡單的數(shù)據(jù)集上的運(yùn)行結(jié)果。
大家不要笑,這些是 MNIST 數(shù)字樣本,是 1980 年代的東西了。我取了一些有難度的樣本,模棱兩可的那種。我要用設(shè)計的模型處理這些,驗(yàn)證想法對不對。對這些 MNIST 數(shù)據(jù)的建模方式是,先有一層部件層,可能是一部分筆畫;然后有一個整體層,高層次的膠囊,可能是整個數(shù)字,不過不是完全和數(shù)字對應(yīng)的。
每個部件是學(xué)習(xí)得到的小的 11x11 大小的模版,這里我不會詳細(xì)解釋部件是怎么學(xué)習(xí)到的,因?yàn)楹驼麄€數(shù)字的學(xué)習(xí)方式基本一樣,所以我主要講講整個數(shù)字是怎么學(xué)的。這里的核心是,用來自各種不同部件的預(yù)測形成的套模型對像素密度建模,其中的每個部件可以是帶有仿形變換的,也就是說它的姿態(tài)矩陣允許它有不同的實(shí)例化結(jié)果。
這兒有幾個數(shù)字,比如我們看那個「4」。其中紅色的部分是從圖像中提取部件,然后重新構(gòu)建出像素得到的;綠色的部分是從圖像中提取部件、激活更高級別的膠囊,然后再重構(gòu)低級別的膠囊、重構(gòu)像素得到的,也就是從高級別一步步生成的。紅色和綠色重疊的部分是黃色??梢钥吹?,大部分都是黃色的,紅色、綠色都只有一小部分邊緣,也就是說兩種方法重構(gòu)出的結(jié)果區(qū)別很小。
右邊顯示的是 24 個高級別膠囊的激活情況。這些高級別膠囊學(xué)習(xí)的是整個數(shù)字之類的內(nèi)容,也可以是更大的,并不和數(shù)字完全對應(yīng)。
現(xiàn)在我們看看部件是如何組成整個數(shù)字的。數(shù)字 4 的第四、五個格子,也就是 4、5 部分,是同一個部分,但是進(jìn)行了不同的仿射變換。那么,隨著仿射變換的不同,它實(shí)例化的結(jié)果也會非常不同;這樣,同一個部件就可以起到不同的用途。
接下來我要展示的是,在學(xué)會了如何提取部件之后,要學(xué)習(xí)整體,來解釋這些部件的組合。然后把那 24 個高層次膠囊的激活模式組成的向量拿出來,用 t-SNE 作圖,也就是把這些高維向量嵌入到二維空間,兩個向量越相似,他們的距離就越小。在看圖之前我要說明,這些膠囊從來沒有學(xué)習(xí)過標(biāo)簽,完全是無監(jiān)督學(xué)習(xí)得到的,然后得到的結(jié)果是:
它分出了 10 類,這 10 個類之間有明顯的區(qū)分,而且也有一些誤分類的?,F(xiàn)在我要是給它們加上標(biāo)簽,就從每一類里面取一個樣本,把它的標(biāo)簽作為它所在的類的標(biāo)簽,就可以直接得到 98.7% 的 MNIST 準(zhǔn)確率 —— 你可以說這是沒有使用任何標(biāo)簽的學(xué)習(xí)結(jié)果,也可以說使用了 10 個標(biāo)簽。
總的來說,用這個允許部件帶有坐標(biāo)系的生成式模型學(xué)習(xí) MNIST,然后 MNIST 中的自然分類也就自然而然地出現(xiàn)了。實(shí)際上 MNIST 中的數(shù)字是有變形的,整個數(shù)字和它的部件之間的關(guān)系不是固定的,是取決于具體的每個數(shù)字的。這種做法是有效的。
不過這種做法也有兩個問題。第一個問題是,我們?nèi)祟惖囊曈X并不是直接拿到一整張圖像然后處理它,而是有一個很小的中央凹,然后要選擇用它來看什么。 所以我們看東西其實(shí)是一個采樣的過程,我們看到的東西并不都是高分辨率的。
另一方面,人類的視覺也依賴于觀察點(diǎn)。我一直堅信我們看到的形狀的同時也看到了一些背景環(huán)境。所以會有各種的視覺錯覺,可能是一個花瓶,也可能是兩張臉。所以如果從心理學(xué)角度看,視覺是在某個背景下觀察某個圖形的話,這個膠囊模型也就是對圖形的感知的建模,而不是對背景的感知的建模;想要對背景建模的話,就需要材質(zhì)建模之類的東西,而且也不需要把整個物體解析成不同的部件。一個變分自編碼器就可以很好地完成任務(wù)。
所以,如果要解釋有紋理的背景下的 MNIST 的數(shù)字的話,Sarah 訓(xùn)練了層疊膠囊自編碼器+變分自編碼器的組合,效果要比只使用變分自編碼器對背景建模好多了。雖然它的表現(xiàn)還是比不上完全沒有背景的情況,但我覺得如果想要解決有背景的問題,這就是正確的理論。就像人一樣,在有背景的時候,我們就把背景只看作背景,不用高層次的、基于部件的模型對背景建模,因?yàn)檫@些模型是留給形狀建模用的。
另一個問題是,剛才討論這些都是二維的情況,而我們真正需要處理的是三維的圖像。Sarah 之前設(shè)計的一個版本的膠囊網(wǎng)絡(luò)在 Yann 設(shè)計的三維圖像數(shù)據(jù)上做了嘗試,試試看是否能夠不借助等高線,直接處理真正的三維圖形。
想要按這個思路做出來的話,我們需要讓前端的、也就是最基礎(chǔ)的膠囊表示物體的可感知的部件。把視覺看作計算機(jī)圖形的反向工程的話,圖形里先建立整個物體,然后部件、部件的部件、部件的部件,一直到三角形,最終進(jìn)行渲染。所以用反向工程的思路處理,就只讓最底層的膠囊處理光線的屬性、反射率之類的東西,而高層次的膠囊負(fù)責(zé)的就是幾何形狀。我在這里談到的也主要關(guān)注的是處理幾何形狀的層次。
現(xiàn)在我們在研究的就是反向渲染,從像素提取到可感知的部件。我們設(shè)計了很多不同的方法,可以用表面 mesh,也可以參考已知的幾何形狀,或者用半空間截面,等等,有很多方法。
最后的結(jié)論:
對于坐標(biāo)系變換和解析樹的先驗(yàn)知識可以很容易地集成到一個簡單的生成式模型中。把知識放在一個生成式模型中有個有趣的好處,就是你的認(rèn)知模型、你的編碼器的復(fù)雜度不會干擾到生成式模型的復(fù)雜度。你可以把編碼器做得特別特別復(fù)雜,但描述長度最短可以有多短,是由你的生成式模型的復(fù)雜度決定的。
所以,設(shè)計一個帶有一定結(jié)構(gòu)的生成式模型,然后把反向(識別)的流程丟給那個很大的套 Transformer。如果你的套 Transformer 模型足夠大、有足夠多的層、在足夠多的數(shù)據(jù)上訓(xùn)練,得到好的表現(xiàn)可以說是十拿九穩(wěn)了。
(演講結(jié)束)
Hinton 苦思冥想、反復(fù)念叨這么多年的膠囊網(wǎng)絡(luò)終于有了一個不錯的答案,演講結(jié)束時老爺子臉上也露出了欣慰的笑容。
接下來雷鋒網(wǎng) AI 科技評論還會整理三駕馬車的圓桌討論內(nèi)容,敬請期待。更多 AAAI 2020 的會議內(nèi)容報告歡迎繼續(xù)關(guān)注我們。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。