Hinton AAAI2020 演講:這次終於把膠囊網絡做對了

Hinton AAAI2020 演講:這次終於把膠囊網絡做對了

作者 | 楊曉凡

AI 科技評論按:2020 年 2 月 9 日,AAAI 2020 的主會議廳講臺上迎來了三位重量級嘉賓,這三位也是我們熟悉、擁戴的深度學習時代的開拓者:Geoffrey Hinton,Yann LeCun,Yoshua Bengio。

其實僅僅在幾年以前,我們都很少在計算機科學界的學術會議上看到他們的身影,Hinton 甚至表示自己都很久不參與 AAAI 會議了 —— 畢竟十年前的時候神經網絡還被主流的計算機科學研究人員們集體抗拒,即便有進展,論文也不會被各個學術會議接收。如今,隨著深度學習成為機器學習科研的絕對主流和麵向大眾的人工智能技術中的核心技術,2018 年的圖靈獎終於授予這三人,也就是對他們的貢獻的(遲來的)認可。

在這天的兩小時的特別活動中,三位各自進行三十分鐘演講,最後還有三十分鐘的圓桌討論,圓桌討論中也會回答在座觀眾提出的問題。

Hinton 第一個進行演講,按慣例,在演講嘉賓登臺之前要做簡單的介紹。AAAI 2020 兩位程序主席之一的 Vincent Conitzer 說道:「我們都知道,發生在這三位身上的是一個飽含天賦和堅持的故事。如今我們也許很難想象,但當時神經網絡這個研究方向簡直不能更冷門了,Jeff、Yann、Yoshua 三個人就是在這種時候做出了許多關鍵的成果。他們的故事鼓勵我們要追尋自己認定的學術方向,而不是一股腦擁到最熱的話題上去」。

Vincent 還講了一則 Hinton 的趣事,這還是 Hinton 自己講給別人的。我們都知道 Hinton 一直在琢磨人腦是怎麼運轉的,有一天 Hinton 告訴自己的女兒「我知道大腦是怎麼運轉的了」,她的反應卻是:「爸爸你怎麼又說這個」;而且這種事甚至每隔幾年就會發生一次。

觀眾發出笑聲,接著 Geoffrey Hinton 在掌聲中走上演講臺。AI 科技評論把他的演講全文整理如下。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

今天我要講的是近期和 Adam、Sara、Yee-Whye 一起完成的一些研究。今天我不打算講哲學話題,也不會解釋我為什麼很久都不參加 AAAI 會議之類的(觀眾笑),我就給大家講講這項研究。

依舊從批評 CNN 開始

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

對象識別這個任務主要有兩大類方法,一類是老式的基於部件的模型,它們會使用模塊化、可感知的表徵,但通常也需要很多的人工特徵工程,所以它們通常也不具備學習得到的部件的層次結構。另一類方法就是卷積神經網絡,它們完全是通過端到端學習得到的。對象識別中有一個基礎規律,如果一個特徵檢測器在圖像中的這個位置有效,那麼在另一個位置也是有效的(譯註:平移不變性),CNN 就具備這個性質,所以可以組合不同的信號、很好地泛化到不同的位置,有不錯的表現。

但 CNN 和人類的感知有很大的區別。我今天演講的第一部分可以算是都在針對 Yann LeCun 了,我要指出 CNN 的問題,告訴你們為什麼 CNN 是垃圾。(觀眾笑)

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

CNN 的設計可以處理平移,但是對其他類型的視角變換處理得很不好,比如對於旋轉和縮放 —— 不過比我們一般認為的還是要好一點。一種處理方式是把二維特徵 map 換成四維或者六維的,但是計算成本增加得太多了。所以,訓練 CNN 的時候要使用各種不同的視角,來讓模型學習如何泛化到不同的視角上;這種做法很低效。理想的神經網絡應當不需要花什麼額外的功夫,可以自然而然地泛化到新的視角上 —— 學會識別某種物體以後,可以把它放大十倍,再旋轉 60 度,仍然能夠識別,這樣才是合適的。我們知道計算機圖形學就是這樣的,我們也希望能設計出更接近這樣的神經網絡。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

下面我先解釋一下 equivalence(等價)和 invariance(不變)。典型的 CNN,尤其是帶有池化的網絡,它得到的表徵是不隨著視角的變化而變化的,是「invariance 不變」,和得到「equivalence 等價」的表徵是兩碼事。「equivalence 等價」的意思是說,隨著視角變化,表徵也跟著變化。我相信的是,在人類的感知系統中,當你的視角變化的時候,神經活動的模式也會跟著變化;我不是說識別得到的標籤要變化,顯然標籤是需要保持不變的,但你的感知活動的表徵可能會發生很大的變化。不隨著視角變化而變化的,是連接權重,而權重編碼了不同的東西之間的關係。這個我待會兒還會說到。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

CNN 也不能解析圖像。當你讓 CNN 識別一張圖像的時候,它不會做任何的顯式解析,不會嘗試分辨什麼是什麼的一部分、什麼不是什麼的一部分。我們可以這麼理解 CNN,它關注的是各種各樣的像素位置,根據越來越多的環境信息對每個像素位置上存在的東西建立越來越豐富的描述;最後,當你的描述非常豐富了,你就知道圖像中有什麼東西了。但 CNN 並不會顯式地解析圖像。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

CNN 識別物體的方式也顯然和人類很不一樣,在一張圖像裡增加一點點噪聲,CNN 就會把它識別成完全不同的東西;但我們人類幾乎看不出圖像有什麼變化。這種現象是非常奇怪的。在我看來這是一個證據,證明了 CNN 識別圖像的時候使用的信息和我們人類完全不同。這不代表 CNN 就做錯了,只不過是確實和人類的做法有很大區別。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

我對 CNN 還有一點不滿是,它會計算下方的層的點積、再乘上權重,用來決定是否激活。這是一個找到線索的過程,然後把線索疊加起來;疊加的線索足夠多了,就激活了。這是一種尋找巧合的激活方式,它比較特殊。巧合其實是非常重要的,就像物理學很大程度上研究的就是兩個不同的物理量之間的巧合;巧合可以構成一個等式的兩端,可以構成理論和實驗。在高維空間裡如果發生巧合了,這是非常顯著的,比如你在收音機裡聽到了「2 月 9 日,紐約」,然後在別的信息裡又看到了幾次「2 月 9 日,紐約」,全都是 2 月 9 日和紐約的話,你會覺得很震驚,這就是高維空間裡的巧合,非常顯著。

那麼,目前我們使用的這種神經元是不會尋找巧合的;不過情況也在變化,我們也開始使用 Transformer 模型,而 Transformer 是會尋找巧合的;等一下我也會解釋這個。計算兩個活動向量的點積,這要比原來的做法強多了;這就是計算這兩個活動向量是否匹配,如果是,那就激活。Transformer 就是這麼工作的,這帶來了更好的過濾器。這也帶來了對協方差結構和圖像有更好響應的模型。這裡真正重要的就是協方差結構,像素的協方差結構。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

最後一點,也是 CNN 最嚴重的問題是,CNN 不使用座標系。當我們人類觀察東西的時候,只要看到一個形狀,我們就會給它假定一個座標系。這是人類感知的一個基本特點。我會舉例子嘗試說服你接受這件事;不過我的時間不是很多,我會試著很快地舉例子說服你。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

因為沒有時間看那些很漂亮的 demo,我們就看看這兩個形狀。左邊這個像是某個國家的地圖,有點像澳大利亞;但是如果我告訴你這個形狀不是正的,是斜的,它看起來就像非洲。一旦你看出來它像非洲了,它就和一開始感覺的那個彷彿鏡像過的澳大利亞完全不一樣。但我們不是第一眼就能看出來它像非洲的,如果告訴你它是某個國家,那你就只會把它看作某個國家。

再看右邊這個形狀,它要麼是個很正的菱形,要麼是個正方形轉了 45 度;基於你覺得它像什麼,你對它的感知也會完全不同。如果你把它看作菱形,那麼只要左側和右側的兩個角的高低有一點點區別你都能注意到,但你就注意不到這四個角是不是直角,你的觀察根本不會在意這裡。也就是說,如果如果我把它上下拉長一點,讓裡面的四個角不是直角了,它在你看來仍然是一個很正的菱形。

但反過來,如果你把它看作一個正方形轉了 45 度,你就會注意到這四個角都是直角;即便只是從 90 度變成 88 度,你都能看得出來不再是直角了;但同時,你也就不再會在意左側右側的兩個角的高低是否一樣。

所以,根據你選取的座標系不同,你內心的感知會完全不同。CNN 的設計就沒法解釋這個現象,對於每個輸入只有一種感知,而且這個感知也不取決於座標系的選取。我覺得這和對抗性樣本有一些聯繫,也就是 CNN 和人類的感知方式有很大不同。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

我覺得做計算機視覺的一個很好的方法是把它看作計算機圖形學的反向,這種想法可以回溯到很久很久以前。計算機圖形程序中會使用層次化的模型,它們對空間結構建模,用矩陣來表示內嵌在整體內的座標系和每個部分自己的座標系之間的轉換關係。

對於整個物體,它有一個自己的、內嵌的座標系,我們也可以指定一個;然後整體的每個部件也有各自的座標系。在座標系全都選定了之後,就可以確定部件和整體之間的關係,這就是一個簡單的矩陣運算;對於剛體,這就是一個線性關係。

所以這是一個很簡單的線性結構,計算機圖形學中用的就是這樣的思路。對於做計算機圖形學的人,你要是請他把東西換個角度展示給你看,他們就不會說「我其實是很樂意的,但我們沒從別的角度訓練過,所以最多隻能轉 15 度」這樣的話,他們可以直接轉到你要的隨便什麼角度,因為他們有真正的三維模型,他們會對空間結構建模、對部件和整體之間的關係建模。這些關係也完全不受視角的影響。

我覺得,如果處理三維物體的圖像的時候不使用這種美妙的結構才是真的有問題。一個原因是,如果要做長距離的外推,線性模型是可以很方便地做外推的;次數更高的模型很難外推。而且我們也一直在尋找線性的隱含流形,在計算機視覺裡我們知道它們是什麼;視角變換對圖像有很大的影響,這其中其實就有一個隱含的線性結構,而我們並沒能利用這個結構。

2019 年版的最新的膠囊網絡

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

現在我要具體介紹一個系統,它的名字叫做 Stacked Capsule Auto-Encoders。有的人可能已經讀過一些膠囊網絡相關的東西,這裡我得說明,這是另外一種版本的膠囊。每一年我都會設計出一種完全不同的膠囊網絡,NeurIPS 2017 的那篇是關於路由的,ICLR 2018 的那篇使用了 EM 算法,然後在 NeurIPS 2019 還有一篇新的,就是我現在要介紹的這個。

所以,首先要把之前的那些版本的膠囊網絡的一切都忘了,它們都是錯的,只有現在這個是對的(觀眾笑)。之前的那些版本用了判別式學習,我當時就知道這個做法不好,我一直就覺得無監督學習才是對的,所以之前的那些版本都走錯了方向;而且它們都使用了「部件-整體」關係,效果也不好。用「整體-部件」關係要好很多。用「部件-整體」關係的時候,如果部件的自由度比整體的自由度要少,好比部件是點,然後你要用點組成星座,那你很難從一個點的位置預測整個星座的位置,你需要用到很多點的位置;所以不能從單個部件出發對整體做預測。

在這個新的版本中,我們用的是無監督學習,以及用「整體-部件」關係。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

「膠囊」的出發點是,在神經網絡中建立更多的結構,然後希望這些新增的結構可以幫助模型更好的泛化。它也受到了 CNN 的啟發,在 CNN 裡 Yann 只設計了很少、很簡單的一些結構,就是讓特徵檢測器可以在不同的平移變換之間複製,這個改進產生了巨大的好處。那麼我的下一個問題就是,我們能不能沿著這個方向繼續往前走,能不能設計一些更加模塊化的結構,這樣就可以做解析樹之類的。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

那麼,膠囊會表徵某個東西是否存在,它會學習它應該表徵什麼實體,也會有一些這個實體的參數。在 2019 年的膠囊,也就是這個最終的、正確的膠囊裡,它會有一個邏輯單元,就是最左側的淺藍色的東西,它用來表示當前的圖像中是否存在這個實體,不管實體是在這個膠囊覆蓋的圖像範圍的任何地方。也就是說膠囊自己可以是卷積的。

膠囊裡會有一個矩陣,右邊紅色的,用來表示這個膠囊表示的實體和觀察者之間的空間關係,或者是這個實體內嵌的固有座標系和觀察者之間的空間關係;這樣就知道了它朝什麼方向、多大、在哪裡,等等。還有一個包含了其它屬性的向量,裡面會包含變形之類的東西;如果要處理視頻,也會包含速度、顏色等等信息。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

我再重複一下重點:膠囊是用來捕捉固有幾何特性的。所以,一個表示了某個物體的膠囊可以根據自己的姿態預測出它的部件的姿態,而且,物體自己和物體的部件之間的關係不會隨著視角的變化而變化。這才是我們要以權重的方式存儲在神經網絡裡的,這才是值得存儲的知識,然後也就可以用這些不依賴視角的知識做對象識別。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

集中注意力,理解了這頁 PPT,你就理解了這個新的膠囊。這裡的思路是,我們有某種自動編碼器,一開始先用貪婪的方法訓練它 —— 從像素得到部件,從部件得到更大的部件,從更大的部件得到再大的部件。這個訓練過程是貪婪的,就是一旦從像素得到部件了,就不會逆過來重新選取像素和部件,而是就直接使用已經得到的結果,然後往更高的一層進發,嘗試把這些部件拼成更熟悉的整體。

這張 PPT 裡展示的就是一個兩層的自動編碼器中的解碼器,但其中的單元已經不是傳統的那種神經元了,是更復雜的膠囊。下面這一層中是一些我們已經從圖像中收集信息得到的膠囊 —— 這算是一種歸納法的解釋 —— 我們已經得到了一些低層次的膠囊,已經知道了它們是否存在、它們的向量屬性是什麼、姿態是什麼、和觀察者之間的關係,現在要在它們的基礎上學習更高一層的膠囊。我們希望每個更高層次的膠囊可以解釋好幾個低層的膠囊,也就是一個整體膠囊對應多個部件膠囊,就有了一個學習過程。

在這樣的生成式模型中,我們不直接生成低層次的數據,我們根據高層次的膠囊生成「低級別的數據可能是什麼」的預測。首先我們要做的是找到頰囊中的參數向量,然後這裡的綠色虛線表示,通過這個實體中提取到的這些參數,分別為每個部件預測整體和部件之間的空間關係。

如果是一個剛體,那就不需要這些綠色虛線,對應的矩陣就是常數;如果是可變的物體,就需要這些綠色虛線。對於每一個高層次的膠囊 —— 等會兒我會解釋它們是怎麼實例化的 —— 每一個已經實例化的高層次膠囊都會為每個已經從圖像中提取到的低層次的膠囊預測姿態。這裡被橢圓圈出來的三個紅色方塊就是三個高層次的膠囊分別對某個低層次的膠囊的姿態作出的預測。

這裡我們感興趣的是,高層次的膠囊中應該應該有一個是有解釋能力的。所以這裡會使用一個混合模型。使用混合模型有一個隱含的假設是,其中有一個是正確的解釋,但一般來說你不知道哪一個是正確的。

我們選擇的目標函數是,讓高層次膠囊通過混合模型產生的、已經在低層次膠囊上觀察到的姿態的對數似然最大化。在這個混合模型下,對數似然是可以計算的。這些結構的訓練方式是反向傳播,學習如何讓高層次的膠囊實例化。

當通過混合模型做反向傳播的時候,其中並不能很好地解釋數據的元素的後驗概率幾乎為 0。那麼當計算反向傳播的時候,反向傳播並不會改動它們,因為它們沒有什麼作用;那些提供了最好的解釋的元素得到最大的導數,就可以學習、優化。

這就是這個生成式模型的設計。需要說明的是,生成式模型裡有兩種思想。首先,每個低層次的膠囊只會被一個高層次膠囊解釋 —— 這就形成了一個解析樹,在解析樹裡每個元素只有一個父項。其次,低層次的膠囊的姿態可以從高層次膠囊推導得到,就是通過高層次膠囊相對於觀察者的位姿和整體相對於部件的位姿做矩陣相乘,就得到了低層次膠囊相對於觀察者的位姿。視覺裡非常重要的兩件事,處理視角變化,以及建立解析樹,就這樣設計到了模型裡面。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

現在我還沒展示如何做編碼器,也就是感知的部分。這是一個很難的推理問題,在之前版本的膠囊裡,我們對編碼器做了一些人工工程,要對高層次的膠囊投票、看投票的結果是否一致,這種方式特別難搞,很難做對。Sarah 花了很多時間精力研究這裡,她雖然讓它運行起來了,但還是非常困難。

很幸運的是,當我們做這些嘗試的時候,Transformer 出現了。Transformer 本來是用來處理語言的,但它的設計非常巧妙。那麼我們面對的狀況是,我們有一些部件,想從部件推理出整體,這是一個很難處理的推理問題。但有了 Transformer,我們就可以試試直接把所有部件都輸入到 Transformer 裡,讓它們自己去碰吧。

我們就使用了一個多層 Transformer 模型,最終把一個簡單的生成模型和一個複雜的編碼模型配合使用。這個多層 Transformer 模型會決定如何處理一致性、如何組織不同的部件,我們只需要想辦法訓練它就行。

要訓練 Transformer,一般來說我們需要有正確答案。但這兒實際上可以不需要正確答案,只需要訓練它的導數,就是看它給出的答案,然後讓它給出一個比現在更好的答案。這是從生成模型得到的。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

做法是,把所有已經提取到的膠囊都找出來,把它們輸入到多層 Transformer 套模型(Set Transformer)裡,這個套模型會給每個低層次膠囊取向量描述,然後隨著在模型裡逐層上升,把其他膠囊的信息作為背景環境不斷更新這個向量描述。當這些部件的描述更新得足夠好了以後,就在最後一層裡把它們轉換成預測,預測整體物體應該在哪裡。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

這個多層 Transformer 套模型很好訓練,因為我們有一個對應的生成式模型,生成式模型可以把導數提供給 Transformer。訓練 Transformer 模型的目標也和訓練生成式模型一樣,都是在給定高層次膠囊預測的位姿的條件下讓實際觀察到的部件位姿的對數似然最大化。我們也在裡面設計了一個稀疏的樹結構,鼓勵它每次只激活少數幾個高層次膠囊。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

對於這個多層 Transformer 套模型,感興趣的人可以去讀這篇論文,我就不介紹更多細節了。

我相信你們中有很多人都知道 Transformer 是怎麼運行的,而且我的時間也不多了,我會很快很快地講一下 Transformer 是怎麼運行的。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

這是處理句子的情況對吧,它處理句子的方式是先得到一批詞向量,然後在上面運行卷積網絡,讓每個詞向量都可以依據它附近的向量進行更新。這整個設計都可以用無監督學習的方式訓練,訓練目標是重建其中被拿走的詞向量。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

這相當於是用卷積的的方式來設計自動編碼器,並且 Transformer 中還有一些更精細的人工設計:除了讓詞向量直接影響同一層和更高層的詞向量之外,每個詞向量還會生成一個 key、一個 query 和一個 value。根據我這頁 PPT 展示的 Transformer 的狀態,詞向量會查看自己的 query,這是一個學習得到的向量,然後把它和臨近的詞向量的 key 做對比。如果匹配了,它就會把臨近的詞向量的一部分 value 作為自己的新的 value。這個過程就是不斷地尋找相似的東西,然後把它們組合起來得到新的表徵。Transformer 的運行方式基本就是這樣。

下面我給大家看看用一個 Transformer 組合模型和一個帶有座標系、解析樹的簡單生成式模型配合起來,在簡單的數據集上的運行結果。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

大家不要笑,這些是 MNIST 數字樣本,是 1980 年代的東西了。我取了一些有難度的樣本,模稜兩可的那種。我要用設計的模型處理這些,驗證想法對不對。對這些 MNIST 數據的建模方式是,先有一層部件層,可能是一部分筆畫;然後有一個整體層,高層次的膠囊,可能是整個數字,不過不是完全和數字對應的。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

每個部件是學習得到的小的 11x11 大小的模版,這裡我不會詳細解釋部件是怎麼學習到的,因為和整個數字的學習方式基本一樣,所以我主要講講整個數字是怎麼學的。這裡的核心是,用來自各種不同部件的預測形成的套模型對像素密度建模,其中的每個部件可以是帶有仿形變換的,也就是說它的姿態矩陣允許它有不同的實例化結果。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

這兒有幾個數字,比如我們看那個「4」。其中紅色的部分是從圖像中提取部件,然後重新構建出像素得到的;綠色的部分是從圖像中提取部件、激活更高級別的膠囊,然後再重構低級別的膠囊、重構像素得到的,也就是從高級別一步步生成的。紅色和綠色重疊的部分是黃色。可以看到,大部分都是黃色的,紅色、綠色都只有一小部分邊緣,也就是說兩種方法重構出的結果區別很小。

右邊顯示的是 24 個高級別膠囊的激活情況。這些高級別膠囊學習的是整個數字之類的內容,也可以是更大的,並不和數字完全對應。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

現在我們看看部件是如何組成整個數字的。數字 4 的第四、五個格子,也就是 4、5 部分,是同一個部分,但是進行了不同的仿射變換。那麼,隨著仿射變換的不同,它實例化的結果也會非常不同;這樣,同一個部件就可以起到不同的用途。

接下來我要展示的是,在學會了如何提取部件之後,要學習整體,來解釋這些部件的組合。然後把那 24 個高層次膠囊的激活模式組成的向量拿出來,用 t-SNE 作圖,也就是把這些高維向量嵌入到二維空間,兩個向量越相似,他們的距離就越小。在看圖之前我要說明,這些膠囊從來沒有學習過標籤,完全是無監督學習得到的,然後得到的結果是:

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

它分出了 10 類,這 10 個類之間有明顯的區分,而且也有一些誤分類的。現在我要是給它們加上標籤,就從每一類裡面取一個樣本,把它的標籤作為它所在的類的標籤,就可以直接得到 98.7% 的 MNIST 準確率 —— 你可以說這是沒有使用任何標籤的學習結果,也可以說使用了 10 個標籤。

總的來說,用這個允許部件帶有座標系的生成式模型學習 MNIST,然後 MNIST 中的自然分類也就自然而然地出現了。實際上 MNIST 中的數字是有變形的,整個數字和它的部件之間的關係不是固定的,是取決於具體的每個數字的。這種做法是有效的。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

不過這種做法也有兩個問題。第一個問題是,我們人類的視覺並不是直接拿到一整張圖像然後處理它,而是有一個很小的中央凹,然後要選擇用它來看什麼。 所以我們看東西其實是一個採樣的過程,我們看到的東西並不都是高分辨率的。

另一方面,人類的視覺也依賴於觀察點。我一直堅信我們看到的形狀的同時也看到了一些背景環境。所以會有各種的視覺錯覺,可能是一個花瓶,也可能是兩張臉。所以如果從心理學角度看,視覺是在某個背景下觀察某個圖形的話,這個膠囊模型也就是對圖形的感知的建模,而不是對背景的感知的建模;想要對背景建模的話,就需要材質建模之類的東西,而且也不需要把整個物體解析成不同的部件。一個變分自編碼器就可以很好地完成任務。

所以,如果要解釋有紋理的背景下的 MNIST 的數字的話,Sarah 訓練了層疊膠囊自編碼器+變分自編碼器的組合,效果要比只使用變分自編碼器對背景建模好多了。雖然它的表現還是比不上完全沒有背景的情況,但我覺得如果想要解決有背景的問題,這就是正確的理論。就像人一樣,在有背景的時候,我們就把背景只看作背景,不用高層次的、基於部件的模型對背景建模,因為這些模型是留給形狀建模用的。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

另一個問題是,剛才討論這些都是二維的情況,而我們真正需要處理的是三維的圖像。Sarah 之前設計的一個版本的膠囊網絡在 Yann 設計的三維圖像數據上做了嘗試,試試看是否能夠不借助等高線,直接處理真正的三維圖形。

想要按這個思路做出來的話,我們需要讓前端的、也就是最基礎的膠囊表示物體的可感知的部件。把視覺看作計算機圖形的反向工程的話,圖形裡先建立整個物體,然後部件、部件的部件、部件的部件,一直到三角形,最終進行渲染。所以用反向工程的思路處理,就只讓最底層的膠囊處理光線的屬性、反射率之類的東西,而高層次的膠囊負責的就是幾何形狀。我在這裡談到的也主要關注的是處理幾何形狀的層次。

現在我們在研究的就是反向渲染,從像素提取到可感知的部件。我們設計了很多不同的方法,可以用表面 mesh,也可以參考已知的幾何形狀,或者用半空間截面,等等,有很多方法。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

最後的結論:

對於座標系變換和解析樹的先驗知識可以很容易地集成到一個簡單的生成式模型中。把知識放在一個生成式模型中有個有趣的好處,就是你的認知模型、你的編碼器的複雜度不會干擾到生成式模型的複雜度。你可以把編碼器做得特別特別複雜,但描述長度最短可以有多短,是由你的生成式模型的複雜度決定的。

所以,設計一個帶有一定結構的生成式模型,然後把反向(識別)的流程丟給那個很大的套 Transformer。如果你的套 Transformer 模型足夠大、有足夠多的層、在足夠多的數據上訓練,得到好的表現可以說是十拿九穩了。

Hinton AAAI2020 演讲:这次终于把胶囊网络做对了

(演講結束)

Hinton 苦思冥想、反覆唸叨這麼多年的膠囊網絡終於有了一個不錯的答案,演講結束時老爺子臉上也露出了欣慰的笑容。

接下來 AI 科技評論還會整理三駕馬車的圓桌討論內容,敬請期待。更多 AAAI 2020 的會議內容報告歡迎繼續關注我們。


分享到:


相關文章: