人工智慧 | 2,深度學習之父Hinton備受矚目的Capsule論文今正式公布,自己創立的深度學習理論被自己革新
在人工智慧學界,Geoffrey Hinton擁有非常崇高的地位,甚至被譽為該領域的愛因斯坦。作為「深度學習」之父,也正是這個技術讓人工智慧發展到今天這般炙手可熱。在人工智慧領域最頂尖的研究人員當中,Hinton的引用率最高,超過了排在他後面三位研究人員的總和。目前,他的學生和博士後領導著蘋果、Facebook以及OpenAI的人工智慧實驗室,而Hinton本人是谷歌大腦(Google Brain)人工智慧團隊的首席科學家。
事實上,人工智慧在最近十年里取得的幾乎每一個成就,包括語音識別、圖像識別,以及博弈,在某種程度上都能追溯到 Hinton 的工作。
1986年,Hilton聯合同事大衛·魯姆哈特(David Rumelhart)和羅納德·威廉姆斯(Ronald Williams),發表了一篇突破性的論文,詳細介紹了一種叫作「反向傳播」(backpropagation,簡稱backprop)的技術。普林斯頓計算心理學家喬恩·科恩(Jon Cohen)將反向傳播定義為「所有深度學習技術的基礎」。歸根結底,今天的人工智慧就是深度學習,而深度學習就是反向傳播,雖然我們很難相信反向傳播已經出現了30多年。
然而,就在上個月,Hinton 在多倫多的一場 AI 會議上,面對媒體 Axios 的採訪時卻表達了對反向傳播演算法的質疑。他認為,反向傳播演算法並不是大腦運作的方式,要想讓神經網路變得更智能。就必須放棄這種為所有數據標註的方式。「我們需要放棄掉反向傳播演算法(Backpropagation algorithm),重新開闢一條新的路徑。」
就在幾個小時之前,由 Hinton 和其在谷歌大腦的同事 Sara Sabour、Nicholas Frosst 合作的 NIPS 2017 論文《Dynamic Routing Between Capsules》已經正式對外公開,解釋了不同 Capsules 間路由的學習。毫無疑問,以此為起點,人工智慧未來形態的演進和塑造很可能將會呈現一個完全不一樣的面貌。
論文地址:https://arxiv.org/abs/1710.09829
在這篇論文中,Hinton 首先解釋 Capsule 作為一組神經元,它的活動向量(activity vector)表示特定類型實體(如某對象或某對象的部分)的實例化參數。作者使用活動向量的長度來表徵實體存在的概率以及其實例化參數的方向。而活躍在同一水平的 Capsule 通過變換矩陣對更高級別 Capsule 的實例化參數進行預測。當多個預測相統一的時候,較高級別的 Capsule 就開始變得活躍。
經過總結,經過區別訓練的多層 Capsule 系統在 MNIST 上實現了最優的性能,在識別高度重疊的數字時,其效果要明顯好於卷積神經網路。為了達到這樣的結果,Hinton 他們使用了迭代的路由協議機制(routing-by-agreement mechanism):一個低層的 Capsule 希望將其輸出發送到一個活動向量具有大標量積、預測來自低層 Capsule 的高層 Capsule。
而之所以 Hinton 會提出 Capsule 的概念,這與他從 80 年代開始就關注人類大腦的原理不無關係,為此他還相繼發表了一定數量的有關腦神經科學的論文。
在人工智慧發展的初期,按照正常的思路,研究人員會自然而然的聯想到將唯一擁有高級智慧的人腦作為機器的模擬對象,由此也就成就了火熱一時的人工神經網路。不過,單層人工神經網路的訓練方式甚至無法使機器學會最簡單的「異或」邏輯,多層神經網路的訓練又遙遙無期。
最早的神經網路 Perceptron 誕生於1960年代,被譽為邁向類人機器智能的第一步。1969年,麻省理工學院的馬文·明斯基(Marvin Minsky)和西摩·帕爾特(Seymour Papert)發表了著作《Perceptrons》,用數學的方法證明這種網路只能實現最基本的功能。這種網路只有兩層神經元,一個輸入層和一個輸出層。如果在輸入層和輸出層之間加上更多的網路,理論上可以解決大量不同的問題,但是沒人知道如何訓練它們,所以這些神經網路在應用領域毫無作用。除了少數像 Hilton 這樣不服輸的人,大多數人看過這本書後都完全放棄了神經網路的研究。
於是,Hinton 想到了人工神經網路不一定非要完全按照模擬人腦的模式。因此,在上世紀 80 年代,Hinton 又另闢蹊徑提出了可以用來訓練多層神經網路的反向傳播演算法。最具標誌性的就是 1986 年 Hinton 與 David E. Rumelhart 和 Ronald J. Wlilliams 合著的《Learning representations by back-propagation errors》論文的發表。
2012 年,Hilton與他在多倫多的學生一道所發表的一篇論文表明,用反向傳播訓練的深度神經網路在圖像識別領域打敗了當時最先進的系統——「深度學習」終於面世。在外界看來,人工智慧似乎一夜之間突然爆發了,但對 Hilton 而言,這只是一個遲到的禮物。
但時間過去了 30 年,Hinton 卻在一個多月前宣布放棄掉了反向傳播演算法。這是因為 Hinton 始終相信克服人工智慧局限性的關鍵在於搭建「一個連接計算機科學和生物學的橋樑」。從這個角度看,反向傳播是受生物學啟發的計算機學突破;該理念最初並非來自工程學,而是來自心理學。因此,Hinton 正嘗試效仿這個模式。
實際上,目前的神經網路由大平面層組成,即每一層的神經元都做的是類似的事情。但人類新皮層的真實神經元不僅是水平分布成層的,還有垂直排列的。Hinton 認為,他知道這些垂直結構的作用,比如在人類視覺系統中,這些結構確保我們在視角變化時保持識別物體的能力。因此,他搭建了名為「Capsule」的人工視覺體系來驗證這個理論。
現在,對 Capsule 理論的研究還處於比較早期的階段,這也就意味著其還有很多的問題有待考察。不過,現在已經有越來越多的跡象表明 Capsule 可以解決一些問題,相信它是一個值得進一步挖掘的路徑,正如 Hinton 曾對《麻省理工科技評論》表示,「Capsule 理論一定是對的,不成功只是暫時的。」
論文解讀
Geoffrey Hinton 等人備受關注的 NIPS 2017 論文《Dynamic Routing Between Capsules》已於數小時前公開。
9 月份,Axios 的一篇報道指出,Geoffrey Hinton 呼籲研究者們對反向傳播保持懷疑態度,並準備在深度學習之上重構人工智慧的理論體系。報道指出,他和其他兩位研究者被 NIPS 2017 接收的論文《Dynamic Routing Between Capsules》正是 Hinton 對於未來人工智慧形態的新探索。
在論文未放出之前,業內已經對其有著熱烈的討論。昨天,這篇文章終於被提交到了預印版論文平台上,我們得以一覽全貌。在本文中,機器之心對此論文做了摘要介紹。
論文:《Dynamic Routing Between Capsules》
論文鏈接:https://arxiv.org/abs/1710.09829
Capsule 是一組神經元,其活動向量(activity vector)表示特定實體類型的實例化參數,如對象或對象部分。我們使用活動向量的長度表徵實體存在的概率,向量方向表示實例化參數。同一水平的活躍 capsule 通過變換矩陣對更高級別的 capsule 的實例化參數進行預測。當多個預測一致時,更高級別的 capsule 變得活躍。我們展示了判別式訓練的多層 capsule 系統在 MNIST 數據集上達到了頂尖的性能,比識別高度重疊數字的卷積網路的性能優越很多。為了達到這些結果,我們使用迭代的路由協議機制(routing-by-agreement mechanism):較低級別的 capsule 偏向於將輸出發送至高級別的 capsule,有了來自低級別 capsule 的預測,高級別 capsule 的活動向量具備較大的標量積。
1. 前言
人類視覺可以通過使用一個小心確定的注視點序列來保證僅有極少部分畫面需要進行高解析度處理。我們很難通過內省的思路來理解一個場景中注視點序列能夠傳遞多少信息,我們能從單一注視點中獲取多少信息,但在谷歌大腦 Sara Sabour、Nicholas Frosst 與 Geoffrey Hinton 提交的這篇論文中,研究人員假設單一注視點可以提供遠多於目標種類及其屬性等信息。研究人員假設人類的多層視覺系統可以在每個注視點上創建類似於解析樹一樣的機制,在研究中,我們將忽略這些單一注視點解析樹在多個注視點中如何協調的問題。
解析樹通常通過動態分配內存來構建,但根據 Hinton 等人 2000 年的研究,在新的論文里我們假設對於單一注視點而言,解析樹是由指定多層神經網路雕刻而出的,就像在岩洞的石壁上雕刻的圖畫一樣。每一層會被分割為很多神經元小組,它們被稱為膠囊(「Capsule」,Hinton et al., 2011),解析樹上的每個節點對應於一個活動的 Capsule。在迭代地進行路由選擇的過程中,每個活動 Capsule 將在上面的層中選擇一個 Capsule 作為其樹中的父單元。對於更高級的視覺系統而言,這個迭代過程將解決從部分分配到整體的問題。
在活動 Capsule 中神經元的活動表示了圖像中存在的特定實體的各種性質。這些性質可以包含很多種不同的實例化參數,例如姿勢(位置,大小,方向)、變形、速度、反射率,色彩、紋理等等。其中一個非常特殊的屬性就是圖像中實例化實體的存在與否。表示存在的一個簡單方法就是使用單獨的邏輯單元,讓它輸出實體存在的概率。在本論文中,研究人員探索了一個有趣的替代方法——使用實例化參數向量的總長度來表示實體的存在,並強制向量的方向來表示實體的屬性。研究人員通過應用一個非線性方法,讓向量方向不變,但大小可以縮放,以此確保了輸出的向量長度不超過 1。
Capsule 的輸出是向量,所以我們可以使用強大的動態路由機制確保輸出的信息可以被傳送到合適的父 capsule 中(上一層)。最初,輸出可以通向所有可能的父節點,但因為耦合係數為 1,這個範圍被急劇縮小。對於每個可能的父節點來說,capsule 會通過其自身的輸出乘以權重矩陣來計算一個「預測向量」。如果這個預測向量與可能的父節點輸出存在一個大的標量積,則存在自上而下的反饋,使得該父節點的耦合係數上升,其他父節點的耦合係數下降。這增加了 capsule 對該父節點的貢獻,進而提高了 capsule 預測和該父節點輸出的的標量積。這種「路由協議」(routing-by-agreement)應該比由最大池化實現的原始形式的路由效果好得多,後者允許一層中的神經元忽視其他特徵檢測器,除了下一層的局部最活躍的特徵檢測器。我們證明我們的動態路由機制可以有效實現分割高度重疊的物體所需的「解釋」(explaining away)。
卷積神經網路(CNN)使用學到的特徵檢測器副本(translated replicas),這使它們能夠在圖像中一個位置獲得的優秀權重值知識轉化到其它位置上。這已經被證明其在圖像解釋方面非常有幫助。儘管我們用向量輸出 capsules 代替 CNN 中標量輸出的特徵檢測器,用協議路由(routing-by-agreement)代替最大池化,但我們仍希望通過複製空間內學到的知識,所以我們令除了最後一層的 capsules 層級都為卷積層。
和 CNN 一樣,我們創建更高級別的 capsule 來覆蓋圖像的更大區域,但是與最大池化不同,我們無法拋棄區域內實體的確切位置信息。對於低級 capsule 而言,位置信息由活躍的 capsule 進行「位置編碼」(place-coded)。隨著層級的上升,越來越多的位置信息層級由 capsule 的輸出向量中的實數值部分進行「率編碼」(rate-coded)。從位置編碼到率編碼的轉變和高級別 capsule 代表具備更多自由度的更複雜實體共同表明 capsule 的維度應該隨著層級的上升而增長。
2. Capsule 如何計算輸入和輸出向量
現在有很多可能的方式能實現 Capsule 的一般性概念。本論文的目的並不是探索整個可能的空間,而是簡單地展示了一個非常直接與有效的實現方式,即動態路由選擇(dynamic routing)。
我們希望 Capsule 輸出向量的長度能表徵實體(由 Capsule 表徵)存在於當前輸入的概率。因此我們能使用非線性「壓縮」函數確保短向量的長度能夠縮短到幾乎等於零,而長向量的長度壓縮到 1 的左鄰域內。我們可以將它們放入判別式學習(discriminative learning)以充分利用非線性的特性。
其中 v_j 為 Capsule j 的輸出向量,s_j 為總輸入向量。
對於 Capsule 除了第一層的所有層級,Capsule s_j 的總輸入為下面 Capsule 層級中所有「預測向量」
的加權和,而預測向量 u_hat 可通過計算一個 Capsule 的 u_i 輸出與下面層級的權重矩陣 W_ij 的乘積而得出:
其中 c_ij 為耦合係數(coupling coefficients),該係數由迭代的動態路由選擇過程確定。
Capsule i 的耦合係數和上面層級所有的 Capsule 耦合係數和為 1,並且由「routing softmax」決定,該 softmax 函數中的初始 logits b_ij 為 Capsule i 應該和 Capsule j 耦合的對數先驗概率:
對數先驗(log priors)可以同時和其它權重有區別地進行學習。它們依賴於兩個 Capsule 的位置與類型,但不依賴於當前的輸入圖像。初始化耦合係數可以通過測量前面層級中每一個 Capsule j 的當前輸入 v_j 和 Capsule i 的預測
間一致性(agreement),然後藉助該測量的一致性迭代地精鍊更新耦合係數。
這個一致性(agreement)可以簡單地設置為標量乘積
。該一致性可以被視為對數似然度,並可加入初始 logit 中,b_ij 在計算所有耦合係數更新值之前已經將 Capsule i 鏈接到更高級的 Capsule 中。
在卷積 Capsule 層中,每一個 Capsule 單元都是一個卷積單元,因此每一個 Capsule 將輸出一個向量組而不是單個輸出向量。
4. CapsNet 架構
圖 1 展示了一個簡單的 CapsNet 架構。該架構只有兩個卷積層和一個全連接層。Conv1 有 256 個 9 × 9 卷積核,步幅為 1,帶有 ReLU 激活。該層將像素強度(pixel intensity)轉換成局部特徵檢測器的活動,然後作為輸入傳送至主 capsule 中。
圖 1:一個簡單的 3 層 CapsNet。該模型的結果與深度卷積網路(如 Chang and Chen [2015])差不多。DigitCaps 層中每個 capsule 的活動向量(activity vector)的長度代表出現的每個類別的樣例,用於計算分類損失。W_ij 是 PrimaryCapsule 中每個 u_i 之間的權重矩陣,i ∈ (1, 32 × 6 × 6),v_j,j ∈ (1, 10)。
主 Capsule 是最低級別的多維實體,從逆向圖(inverse graphics)的角度來看,激活主 capsule 對應的是逆轉渲染過程(rendering process)。這和將多個實例化部分拼合起來組成一個熟悉的整體是一種非常不同的計算類型,而後者正是 capsule 的設計初衷。
第二個層(Primary Capsules)是一個卷積 capsule 層,具有 32 個通道、卷積 8D capsule(即每個主 capsule 包括 8 個卷積單元,每個卷積單元有一個 9 × 9 核,步幅為 2)。每個主 capsule 輸出接收到所有 256×81 Conv1 單元的輸出,它們的感受野與 capsule 的中心位置重疊。PrimaryCapsules 一共有 [32, 6, 6] capsule 輸出(每個輸出都是一個 8D 向量),[6, 6] 網格中的每個 capsule 彼此共享權重。可以把 PrimaryCapsules 看作一個區塊非線性(block non-linearity)為 Eq. 1 的卷積層。最後的層(DigitCaps)的每個數字類別都有一個 16D capsule,每個 capsule 接收來自下面一層所有 capsule 的輸入。
我們只在兩個連續的 capsule 層之間執行路由選擇(如 PrimaryCapsules 和 DigitCaps)。Conv1 的輸出是 1D 的,無法對其空間進行定位。因此 Conv1 和 PrimaryCapsules 之間無法進行路由選擇。所有路由選擇 logit(b_ij)都要被初始化為 0。因此,最初 capsule 輸出(u_i)以同樣的概率(c_ij)被發送至所有父 capsule(v_0...v_10)。我們在 TensorFlow 中進行實現(Abadi et al. [2016]),使用 Adam 優化器及其 TensorFlow 默認參數,包括指數遞減學習率,以最小化 Eq. 4 中的邊際損失。
4.1 重構損失作為正則化方法
我們使用額外的重構損失(reconstruction loss)來促進數字 capsule 對輸入數字的實例化參數進行編碼。在訓練期間,我們蒙住所有向量,除了正確的數字 capsule 的活動向量。然後,使用該活動向量來重構。數字 capsule 的輸出被饋送至包含 3 個全連接層的解碼器,該解碼器對圖 2 描述的像素強度進行建模。我們最小化邏輯單元(logistic unit)輸出和像素強度之間的平方差的和。我們按 0.0005 的比例縮小重構損失,以使它不會主導訓練過程中的邊際損失。如圖 3 所述,僅保留重要的細節,從 CapsNet 的 16D 輸出進行重構是魯棒的。
5. MNIST 上的 Capsule
圖 3:進行 3 次路由迭代的 CapsNet 在 MNIST 數據集上的測試重構樣例。(l, p, r) 分別代表標籤、預測和重構目標。最右兩列是兩個失敗的重構樣例,它展示了模型如何混淆該圖像中的 5 和 3。其他列來自正確的分類,展示了模型如何挑剔細節,同時使雜訊變得平滑。
表 1:CapsNet 分類測試準確度。其中 MNIST 均值和標準差都是根據三個試驗計算而出。
我們發現 capsule 中的一個維度(所有 16 個維度中)幾乎總是可以表徵數字的寬度。而多個維度可以表徵全局變化的組合,還有其它一些維度可以表徵數字的局部變化。
圖 4:維度擾動(dimension perturbation)。每一行展示當 DigitCaps 表徵的 16 個維度之一在區間 [?0.25, 0.25] 中以 0.05 的間隔(interval)進行變化並重構。
圖 5 中的重構表明 CapsNet 能夠將圖像分割成兩個原始數字。
圖 5. 一個 CapaNet 的樣本重構,其中在 MultiMNIST 測試數據上使用了 3 個路徑迭代。
兩個重構數字以綠色和紅色重疊位於圖下方。圖上方展示了輸入圖像。L:(l1, l2) 表示圖中輸入的兩個數字的標籤,R:(r1, r2) 表示重構的兩個數字。最右兩列展示了兩個錯誤重構的例子,分別從標籤和預測(以 P 標記)重構。在(2,8)的例子中,模型混淆了 8 和 7,在(4,9)的例子中,模型混淆了 9 和 0。其它列都給出了正確的分類結果,表明模型能考慮所有的像素並決定每個像素如何分配給兩個數字,即使是在相當困難的情景下(第 1—4 列)。注意數據集生成的時候,像素的值都簡化為 1。帶*號的兩列展示了既不是從標籤也不是從預測重構的數字的結果。這些結果表明模型不止是為圖像中的所有(包括未出現的)數字尋找最佳擬合。因此,在(5,0)的例子中,它無法重構出一個 7,因為它知道 5 和 0 擬合得最好,並且模型已經考慮了所有的像素。同樣,在(8,1)的例子中,數字 8 中的環並不會使模型指向 0,因為它已經考慮了 8。所以,如果其中一個沒有任何其它的支持線索,模型不會將一個像素分配給兩個數字。
8. 討論
Capsule 做出了一個很強大的具有代表性的假設:在圖像的每一個位置,一個 capsule 只表示實體類型的至多一個實例。這個假設受被稱為「擁擠」(crowding,Pelli et al. [2004])的知覺現象的啟發,能消除「綁定」(binding,Hinton[1981])問題,並允許一個 capsule 使用一個分布表示(它的活動向量)在給定的位置編碼該類型的實體的實例化參數。這種分布表示的有效性比通過在高維網格上激活一個點(並使用正確的分布表示)編碼實例化參數呈指數增長。然後 capsule 可以充分利用這樣的事實,即空間關係可以通過矩陣乘法建模。
Capsule 利用和視角變化一致的神經活動,而不是儘可能地消除活動中的視角變化。這給了它們超越「歸一化」方法如空間轉換器網路(spatial transformer network)的優勢(Jaderberg et al. [2015]):它們能同時處理多個不同目標(或目標部分)的多種仿射變換。
Capsule 也很擅長分割任務(這是計算機視覺中的另一個難題),因為實例化參數的向量允許它們使用路由協議機制(routing-by-agreement),正如研究者在論文中所證明的。現在,對 capsule 的研究處於和本世紀初用 RNN 研究語音識別類似的階段。有許多基本的具有代表性的理由使我們相信這是一個更好的方法,但在 capsule 能超過一種高度發展的技術之前,還需要很多的細節洞察。一個簡單的 capsule 系統已經能在分割重疊數字任務中表現出空前強大的性能,這種跡象提醒我們 capsule 是一個值得探索的方向。
參考閱讀
淺析 Geoffrey Hinton 最近提出的 Capsule 計劃
觀點 | Geoffrey Hinton:放棄反向傳播,我們的人工智慧需要重頭再來
被 Geoffrey Hinton 拋棄,反向傳播為何飽受質疑?(附 BP 推導)
以上內容摘自微信公眾號:DeepTech深科技、機器之心
推薦閱讀:
※極限元:淺談手勢識別在直播中的運用
※Keras官方中文版文檔來了~
※2018 是你玩 AI 還是 AI 玩你?看這 12 個趨勢便知
※微軟人工智慧又一里程碑:微軟中-英機器翻譯水平可「與人類媲美」
※MADDPG移植過程
TAG:人工智慧 |