如何評價「膠囊理論」和其論文 Dynamic Routing Between Capsules?

論文鏈接:https://arxiv.org/pdf/1710.09829v1.pdf


早上讀了一下論文,來總結一下。文章提出的Capsule是圖像處理領域的探索性研究,通過模擬人類視覺系統,旨在提高現有CNN在處理新的(novel)數據集時的訓練效率。

一個Capsule由多個神經元構成,這些神經元儲存了物體的實體參數信息(位置、大小、方向、形變、速度、反射率,色彩、紋理等等)。多個Capsule通過路由協議機制(Routing-by-agreement mechanism)一層一層地鏈接,組成一個分析樹(Parse Tree),從而輸出一個圖像的注視點信息(Fixation)。

相較於傳統CNN方法,Capsule方法的改進如下:

  1. 把CNN的輸出結果由標量(Scalar)替換成向量(Vector),向量的方向代表Capsule所捕捉到的實體參數信息,向量的長度代表這個Capsule被激活的概率。
  2. 把CNN的最大池化(Max-Pooling)替換成路由協議機制(Routing-by-agreement mechanism)。下圖中PrimaryCaps到DigitCaps用的就是路由協議機制。

相較於傳統CNN方法,Capsule方法的優點:

  1. 用Capsule儲存物體的實體參數,相當於儲存了很多結構化的先驗知識。相較於傳統的End-To-End方法,網路的輸出是建立在激活已有的Capsule上(而不是當前的網路輸入)。那麼在面對新的(novel)數據集時,可以用已經訓練好的Capsule很快地擬合新數據集(效果見下圖)。感覺訓練好的Capsule有點像在NLP中訓練好的Word Vector。
  2. CNN中的池化方法減少了輸出維度,提取出了最突出的特徵,但是相應得也損失了精確的位置信息。Capsule使用的分層路由協議機制提取了每層Capsule最突出的特徵,同時也保留了精確的位置信息。

關於具體實現方法,看下來就是"Squashing"+"Attention",用來測試的MNIST數據集也比較簡單。文章主要還是提出了一個新思路:

There are many possible ways to implement the general idea of capsules. The aim of this paper is not to explore this whole space but to simply show that one fairly straightforward implementation works well and that dynamic routing helps.

Hinton表示,坑已挖好,大家拿paper來填吧。


看到一些自認為理論很叼瞧不起DL的人在懟這篇paper…我只是覺得幼稚…這類科研的feedback loop就是intuition-&>model-&>theory-&>model improved_&>...剛出來的model,theory少或者沒有,如果坑已經在那裡了,自然會有人填,就算是炒作出來的坑。

DL領域是灌水嚴重值得深思,但這好像這算是學科性質?說的好像由於了這些灌水文,這個領域就把做理論的大神們都拒之門外了一樣,是這樣么?你不喜歡這些花里胡哨的東西扭頭走掉做你的微分幾何抽象代數不就好了,又沒有人把你摁在地上逼你看花書不是么~


正面評價會被噴, 乾脆提幾個問題,希望看了文章的各位菊苣回答一下:

1.所謂文章核心的capsule,不是transient weights嗎?

2.所謂dynamic routing,不是transient attention mechanism(nothing as key)嗎?

激活函數和啥對一圖多物有優勢我就不說了...

這個文章給我的收穫就是,原來trasient weights還可以這麼搞...他說的capsule代表實例的各種具體屬性這點我就忽略了,因為這純粹是一套說法吧= =

所以...這個文章指導思想是認為transient相對固化 比更adaptive根據輸入有鏈式法則的bp要強嗎?講道理這個idea有點道理的,殘差網路的殘差支路也是一個相對來說比較固化的權重

btw. hinton大佬好像很喜歡搞點把權值和依據(input)的銜接方式改變的事情,http://www.csri.utoronto.ca/~hinton/absps/FastWeights.pdf

去年他就用這個思路做了lstm替代物(paper argues)...

理解不對求指正...歡迎輕撕(實料,講成功學無視)


沒讀論文不評價

就看看某個回答下面一波人的醜惡嘴臉

答主批判論文,好歹對著論文裡面的東西一點點的再說啊

然後一群群毆答主的?

答主的publication和這篇文章有什麼關係?

我不是冰箱還不能評價冰箱製冷效果了?

居然都有人跪舔到「還好hinton沒做全可以讓我們狗民繼續往下做的地方」

然後接著有人吹捧

Hinton都成做理論計算機不需要在乎實驗結果了?

「」人家搞理論計算機的又不是靠刷實驗數據灌水,發這種理論性的文章惹你了?「」

66666666理論型文章

行吧

tcs被黑的最慘的一次?

理論計算機家們捧著自己證明哭了出來

貴乎藥丸

怎麼周老師的隨機森林的autoencoder沒有這個待遇呢


目前,神經網路應用的workload的一大特點就是不管input image是什麼,model的weight具體是什麼,只要網路的規格和拓撲定了,讀寫哪些數據、做哪些運算,就是完全確定的。因此,完全用不著PIN這類東西(https://en.wikipedia.org/wiki/Pin_(computer_program))來輔助性能評估。

網路的規格和拓撲定了,讀寫哪些數據、做哪些運算,就是完全確定的——我們可以叫它Static Routing,如果Dynamic Routing蔚然成風,NN加速器的硬體架構就要做非常徹底的修改。是挑戰也是機遇。

Static Routing相當於一個控制流和每次訪存的指針都和輸入數據完全無關的程序,這非常死板,居然還非常奏效真是奇蹟。Dynamic Routing相當於一個控制流和每次訪存的指針會根據輸入數據的改變而改變的程序,從道理上講,這是有優勢的。

如果Dynamic Routing真的能火起來,這篇論文的意義不亞於2006年Hinton復興神經網路的那篇Science論文《Reducing the Dimensionality of Data with Neural Networks》,說它劃時代,並不誇張。


也來蹭個熱度,嘿嘿

看到數學大神diss CS,ML以及DL,我這個半路出家的數據科學更得掩面而走,無地自容了。。。

但仔細想想,數學大神們也是看到CS現在的風光,一種難以掩藏的嫉妒恨的心情,可以理解。話說回來,CS,ML,DL缺乏理論不就是數學家的錯嗎?這些事不就是該交給數學家來解決嗎?讓CS又提供演算法模型,又提供理論依據,那要你們數學家幹啥呢?


有評論說我學數學學出優越感了,你別說還真是,跟煉丹的比起來優越感滿滿啊!藉機吐個槽。

下周應該會看。然後估計是在浪費時間。希望被打臉。因為畢竟是被冠以不依靠back propagation之名,如果被打臉了,那說明cs界又煉出了一顆新丹。

我早就在另一篇回答里吐槽了deep learning的那本花書。他們cs的搞機器學習都是一副尿性。數學差的一匹,模型都沒理解清楚,甚至定義都給不清楚,就是在懟東西:哪個好就往裡面加一點,然後做個實驗發一篇文章。又或者腦子一拍,憑感覺搞個新結構,依舊做實驗,發文章。

其實後者也不好吐槽什麼,畢竟「先猜後証」嘛。但是他們cs的人基本止於猜。這就是民科了,只是有時碰巧結論被猜對了。

講道理統計的人就靠譜很多,樣本多大,做出來的結果誤差可以少到多少,有多大的概率誤差控制在這個範圍裡面都說得很清楚。雖然很多數學上的證明也很模糊,但是都能自己補掉。

機器學習領域水很深,千萬不能迷信大佬。我們學校也有個這樣的大佬,叫chellapa,然而,與神棍無異。其實也不光機器學習就是在數學系,也有很多尸位素餐、不思進取的大佬。一定不能迷信誰啊,盡信書不如無書。


不得不說有些人的回答是極不負責的。真的是看不下去了。。。

今天拜讀了一下這篇論文,有些細節還不是很懂,就說一點點對這篇論文的整體的感覺吧。歡迎批評。

1.這篇文章是對Hinton capsule理念的一個具體實例驗證,而且還是很初步的驗證,有點像一個產品「樣機(prototype)」的意思。這個簡單的實現取的結果也是另人滿意的,MNIST上取得了state of the art 的水準(注意在沒有訓練數據增廣和model ensembling的情況下的state of the art 是0.39%,文章中說的很清楚。)。另外LeCun的第一CNN模型LeNet在MNIST的結果是0.9%左右,後人也是在這個模型的基礎上慢慢的把CNN提升到現在的高度的。

2.似乎capsule是一個高度結構化的網路單元,一個單元可以集合多種功能,那麼每個單元都具有很強的表達能力。並且capsule的輸出是向量,而不像傳統神經網路每個單元只輸出一個數。這就使得它的靈活性更高,可以使用動態路由機制在各層節點間傳輸(這個不太懂)。

3.capsule另一個優於CNN的地方是capsule不僅能通過卷積的方式讓特徵在圖像中不同的位置間共享,同時還能精確的保留每個entity(組件?)的位置信息,通過從底層的place-coding和高層的rate-coding的轉換,高層的capsule可以靈活的組成更複雜的entities.

再說一點題外話吧,我是半道出家進入機器學習領域的,剛入這個坑的時候,大概是兩年多以前,深度學習已經如火如荼了,而對與我這個門外漢來說,感覺什麼都好,什麼都牛逼,不知道該跳到哪個坑裡去。當時很多人都在玩CNN,可是我卻不太感冒,一是我不太想隨大流,二是我門教研室似乎應用的側重點也不是在圖像,要解決的問題的訓練樣本也少的可憐。而且也可能沒體會到CNN優雅的地方吧。直到我看到了一個模型就被深深迷住了,叫玻爾茲曼機,它的定義方式實在是簡潔明了,又包羅萬象。網路結構可以根據問題隨便改,但模型的表達形式卻始終是統一的:P(X)=exp(-E(X))/Z. 我對它的偏好可能來自於我以前的專業吧(電磁場微波),我就喜歡那種用一個公式或方程能夠描述和預言世間萬象的理論。雖然我沒有機會成為Hinton的學生,但我把他當做我的精神上的導師,希望我以後也能向他那樣執著於自己的理想,永葆一顆赤子之心。

祝老人家一切安好!


看了論文,可以得出結論:Hinton的水平不過如此而已。

所謂的capsule為dl又貢獻了一個花里胡哨的trick概念。說它是trick,因為hinton沒有說為什麼routing演算法為什麼需要那麼幾步,循環套著循環,有什麼理論依據嗎?還是就是湊出來的?

論文的實驗也十分難以令人信服。作為深度學習的研究者,hinton應該有豐富的各種問題的大規模數據集,為什麼偏偏就選擇一個前深度學習時代的數據量小的mnist數據集做實驗?是不是跑了大規模數據不work? baseline的cnn只有3層,這不是dl強烈批判的淺度學習模型嗎? 演算法收不收斂?參數怎麼調的?hinton號稱得到了state of the art的性能,然而很容易就知道mnist的state of the art是0.23,比hinton的結果0.25要好很多,hinton有不誠實的嫌疑。

順便吐槽一下現在nips論文水平的低劣,如果不是hinton掛名,這樣的文章有可能發表嗎?

論文最後的討論用了一個毫無依據的類比,說capsule當前的十分類似rnn早期階段,暗示capsule將來可能的成功。然而論文的方法和實驗難以讓人信服,這種佈道性的類比充滿了投機色彩。

針對這篇十分初級且看不到任何明顯優點的研究,各種ai領域的科技媒體集體進行了一次炒作,希望看官們秉持批判性思維,不要輕易入坑,成為別人的學術跟班。


看了一遍沒看明白。。。

按照我的理解capsules就是一組神經元,用於表示圖像中某些attributes。神經元之間信息傳遞利用dynamic routing實現,而不只是靜態的連接。

但是有幾個問題沒看明白:

  1. capsule也是用卷積實現的,也是用Adam優化的,說好的不用back-prop呢?
  2. capsule表示的attributes是不是train完才知道是啥的?這和CNN可視化不一樣嗎?
  3. 還有就是覺得dynamic routing和attention差不多呀,利用前一層的輸出和一個向量算一個weight,加權前一層的輸入。

希望大神給解答一下這個文章的contribution,不要像那些公眾號一樣只給翻譯論文了,並不知道這篇文章在幹什麼。


忙於期末跟導師的項目還沒閱讀Hinton的這篇論文。但是不論大神們說是trick也好,灌水也罷,還是說這篇文章有顛覆性亦可,每個人的想法都有自己的認知和經驗在裡頭。我覺得Hinton有勇氣和想法去推翻代表自己學術地位的一套理論,本身就值得我們尊敬。順便提一下自己的想法:Capsule的真正潛力還是需要未來實驗的一些改進和發掘才能真正顯現,現在Hinton提出的也應該只是個初步的構想,未來還是在數學家和DL人的手上,拭目以待。


這篇文章最大的insight是說把大任務分成小任務,執行相同任務的神經元組合成膠囊,並在上下級layer間,執行相同任務的膠囊的耦合性強。這樣做可以讓神經元更加分工明確。某匿名用戶也太狂了,每種思路在沒有提出前都是難的,提出後你說簡單不過如此。那你怎麼不去提出新思路?這叫無恥。


有點炒冷飯 或者說80年代的老概念復甦 核心不就是Hebb學習規則么 以前在classifier syatem也有這麼搞的

感覺自從有了dl hinton也封神了 但確實沒必要神話他 80年代那會很多思想就都有了


雖然萌新,也還沒讀懂論文,不過覺得,這是Hinton想跳出反向傳播這個局部最優解的嘗試。


個人感覺有點和上世紀的部分思想有點類似,,每個膠囊有指定是作用,,但是我只是個人感覺這樣,,不知道以後這個膠囊理論會不會得到很好的發展,,拭目以待


考完試填坑。

這篇論文兩個主要的點是標量換矢量,還有動態路由。

標量換矢量這個極易理解,全連接和卷積改一改就能直接用。

動態路由的話個人理解是利用更新SVM核函數類似的方式去訓練路由層的參數,以此規避BP。但是說實話我沒看出來「動態路由」在哪裡。。


Trick 強於理論,個人理解所謂增強網路的可學習能力,不過是通過dynamic routing的方式增加更多的非線性引入,感覺把dl 的不可解釋性增加了更多,煉丹高階方式。

但從實用的角度看,確實會把模型的可學習的領域擴張,畢竟非線性的部分上升了。


為什麼我覺得在conv1和784維輸入之間還是有反向傳播的。膠囊中提到的不需要反傳和路由在我眼中是一些trick。類似於HH的東西(fire together,wine together)


看到一個數學Phd,哈哈哈。"搞CS的數學都差的一逼"。

別去懟別人了好嘛。

咱們搞工程做產品花幾年十幾年瞎蒙亂猜出來的東西雖然能用是能用,但到時候還需要別人去證明呢。你們把別人懟死了,誰給我們證明。把他娘的義大利

面拿出來給他嘗嘗。


無收斂有bp,周末嘗試mxnet搞了一遍發現會有很多很類似的capsule。。。刪了繼續訓練還會出現。。。這論文的routing strategy實在是太玄學了。。。。。


反正他的論文我壓根沒讀懂。


大致看了一遍乎友們的評論,是不是現在頂會的論文灌水的越來越多了?看來還是期刊好呀,把精華都留下。


看到前面的回答,感覺搞理論的和搞實驗的同學之間似乎存在什麼誤解。

搞實驗也是要有理論基礎的!就算是做出一個好結果,你說不明白為啥這麼做好的話一樣沒有人會認可。當然,如果結果真的特別好的話——例如CNN,大家會比較寬容,隨便編個故事就行了,所謂先猜後證就是這種情況。

搞理論也要結合實際!特別是對於實驗科學來說,一個理論,如果無法落地到實驗上然後用實驗證明,一樣沒有人會認可,一句話,無法證偽的理論就是偽科學。

請不要用這篇文章來鄙視搞理論的或者搞實驗的同學,因為這篇文章既不算合格的理論文章,也不算合格的實驗文章,頂多算一篇簡介吧,介紹一下巨頭Hinton最近在想啥


推薦閱讀:

如何用c++在mnist上實現一個簡單的卷積神經網路,有哪些參考資料?
如何看待《Deep Learning without Poor Local Minima》?
RBF神經網路和BP神經網路有什麼區別?
卷積神經網路和深度神經網路的區別是什麼?
神經網路中激活函數的真正意義?一個激活函數需要具有哪些必要的屬性?還有哪些屬性是好的屬性但不必要的?

TAG:人工智慧 | 機器學習 | 計算機視覺 | 神經網路 | 深度學習DeepLearning |