Capsule network--《Dynamic Routing Between Capsules》
Hinton大神前一段時間推出的capsule network--《Dynamic Routing Between Capsules》可謂是火了朋友圈,吸引了無數科研人員的眼球。現實生活中,無論你持什麼樣的觀點,總有人站在「對立面」,比如知乎中不乏「高人」跳出來「怒噴」這篇論文。那些怒噴的回答我讀了讀,覺得噴人的答主們格局小了點。《Dynamic Routing Between Capsules》這篇論文雖有不足,但該論文的亮點不是更值得我們關注嗎?吹毛求疵的「暴擊」除了抓眼球、或者通過貶低別人以體現自己的優越的事,還是要少做。多關注別人的有點,學習之,這才是生存之道。
廢話半天,回到正題,本文的目的並非給出capsule network的詳解(因為capsule network的相關博客已經滿天飛了),還是像往常一樣,我們簡單的分析這篇論文的Motivation,了解其思想,並思考一下有哪些應用場景。
為啥要用Capsule network? 它比CNN有哪些優勢?
(Hinto論文里提到,capsule network更像是大腦工作的方式,當人們處理某個視覺信息時,大腦有個「routing」的機制,尋找大腦中最好的「capsule」來處理該視覺信息)
用下面圖片中的例子說明,左邊是一個房子,右邊是一個帆船。假設我們用大量「房子」的圖片訓練CNN,然後用右邊的「帆船」去測試CNN,CNN會錯誤地認為右邊的圖片也是「房子」。
為什麼CNN會出現這個問題?CNN忽略了「結構信息」。這是因為不同的feature map分別捕捉了「三角形」和「四邊形」的圖形信息。對於測試樣本「帆船」,CNN的「三角形」和「四邊形」的feature map都會被激活,即該圖片中包含了三角形和四邊形,就認為這是一個房子。所以說,CNN僅僅考慮了「有沒有」的問題,沒有考慮feature map的結構關係。這個結構關係包括位置,角度等等。
Capsule network是如何解決這個問題的呢?
Capsule layer的定義是a nested set of neural layers,即他是多層神經網路的一個集合,而非一個個孤零零的feature map。Capsule layer的輸出也跟feature map的max-pooling輸出不同,capsule layer的輸出是一個向量,這個向量包含了位置,大小,角度等信息,這是feature map僅能輸出一個值所不具備的。
結合房子和帆船的例子,模型中間Primary capsules,我們可以理解為某個capsule表徵「房子」,某個capsule表徵「帆船」。假設一個「帆船」測試樣本輸入到網路中,那麼Primary capsules中對應「帆船」的capsule會被激活,而對應「房子」的capsule會被抑制,整個模型也就避免了將「帆船」錯誤地識別為「房子」。某種程度上說,Capsule layer提升了整個模型的表達能力,它比feature maps提取了更多的細節信息。
Capsule Network既然有這樣的優勢,那麼潛在的應用有哪些呢?
因為capsule network能夠建模更細節的信息,capsule network可以用來做人臉識別,物體檢測等任務,泛華能力可能比CNN要強。
當然,圖片信息推理(如:圖片中最大物體的右邊是什麼?),圖片描述生成(看圖說話)等任務中,可能也會比較有用。
另外一方面,文本挖掘上,目前文本的結構信息僅局限在n-gram語言模型下,capsule network能否對n-gram之外的結構關係進行建模,從而提升文本挖掘任務上的表現,也不一定。
總之,capsule network已然成為一個「大坑」,相信會有很多人前來「灌水」。
我們在做文章的時候也該想一想,別為了灌水,損害了自己的「科研品味」。
最後,簡單介紹一下論文中的幾個重要概念,並介紹一下該論文的優勢與劣勢。
squash: 將向量長度限制在[0,1]之間,大家可以想想為啥。
routing by agreement:每個capsule可以認為是feature map的升級版,它記錄了物體在圖像中的位置、角度等信息,routing by agreement就是找到對應的capsule,並激活。
Prons:
效果好
更少的訓練數據
routing by agreement能夠處理更複雜的場景
通過實驗分析,可解釋性更強(將激活向量畫出來,可以看到有些表示了粗細,有些表示平滑程度)
Cons:
在CIFAR數據上效果不是最好
沒有在image-net大規模數據上測試
訓練比較慢(routing by agreeement部分)
水平有限,見諒,歡迎提意見,謝謝!
推薦閱讀:
※神經網路之Pointer Net (Ptr-net)
※基於Numpy實現同態加密神經網路
※斯坦福CS231n項目實戰(四):淺層神經網路
※ML + System = ?
※Paper Reading | 讓機器像人類一樣學畫畫?GANs 「全家福」一覽
TAG:深度學習DeepLearning | 機器學習 | 神經網路 |