膠囊網路:將CNN推下神壇的“天命之子”
前不久,圖靈獎得主Geoffrey Hinton的第一篇論文被扒了出來,在推特上引發了不少關注。
當然,讓大家激動的並不是源自對“大神”科研處女作的好奇,也不是提出的演算法有多麼顛覆,而是Hinton 這位AI界的人形自走教科書,早在40年前這篇論文中,就提出了“讓AI具備空間感”的鬆弛演算法,解題思路與2017年其提出的“膠囊網路”不謀而合。
要知道,“膠囊網路”早已是公認將成為下一代深度學習基石、CNN“接班人”的神經網路。
經歷了長達四十年的思考,“膠囊網路”將會怎樣大顯神威,技術背後代表的未來能量才是讓網友們“鵝妹子嚶”的地方啊~
如果你還不太瞭解“膠囊網路”,或是對其最新進展不甚了了,那麼,不妨跟隨這篇文章,來系統性地瞭解一下這個人工智慧未來的“種子選手”。
神經網路“宮心計”:膠囊是如何“爭寵”的?
對AI發展略有了解的同學們可能都知道,Hinton被人所熟知,並獲得圖靈獎,主要歸功於其在深度神經網路上的貢獻。
1986年,Hinton發表了《Learning representations by back-propagation errors》(通過反向傳播誤差來學習表徵),作為這點陣圖靈獎得主的代表作之一,標誌著反向傳播演算法正式被引進深度學習,這對人工智慧的應用有著重大的意義。
反向傳播出現之前,多層神經網路的訓練主要是通過前向傳遞來輸入訊號,直至產生誤差,再進行優化。以梯度下降(Gradient Descent)為例,輸入資料每向前走一步,都沿著最陡峭的地方下腳,就這樣一步步走到山底(梯度的反方向)。因此,該演算法可以直接將每層的誤差反饋給系統,並進行引數優化。
但這種方式在應對具有多個隱層的神經網路時,就有些力不從心了。在下降時隱層中的誤差無法被直接反饋出來,因此其權重引數也就不能直接被優化,這就給神經網路的效能表現帶來了極大的不穩定性。
怎樣才能將隱層的誤差表示出來呢?反向傳播演算法的出現是一場“及時雨”。
它的原理簡單來說,就是一旦下降時(即前向傳播)輸出層沒有得到適當而明確的誤差引數,那麼反向傳播就會藉助轉置權重矩陣,讓誤差可以被隱藏層感知到,進而產生“間接誤差”。而隱藏層的權重矩陣就可以藉助間接誤差進行更新。這樣反覆迭代,就能將包含隱藏層的多層神經網路誤差降到最小。
正是在此基礎上,卷積神經網路展現出了前所未有的效能。
輸入資料的特徵經過歸一化處理後,就會進入隱含層中,完成卷積計算、池化、調參等一系列模擬神經元的操作,再輸出成不同的識別效果。
這種分層認知特徵的學習能力,和人類大腦的思維方式高度相似。這也是為什麼,卷積神經網路在機器視覺及很多問題上都取得了當時最好的效能,成為應用最廣泛的深度神經網路結構。
但是,受限於反向傳播的天然缺陷,卷積神經網路並不完美,黑箱性、高消耗、遷移能力差等諸多問題,一直為學界和產業界所詬病。這也是為什麼,Hinton一直在尋找著CNN的替代者。
2011年,Hinton認為目前的影像識別方法在智力上表現不夠好,提出了“膠囊”的概念。數年之後,2017年10月,則在機器學習的頂級會議“神經資訊處理系統大會(NIPS)”上發表了題為《膠囊之間的動態路由》的論文,提出了全新的深度學習方法——膠囊網路(CapsNet)。
“膠囊”代表影像中特定實體的各種特徵,比如位置、大小、方向、速度、色調、紋理等等,作為一個單獨的邏輯單元存在。然後,使用一個協議路由演算法,當膠囊將自己學習並預測到的資料傳遞給更高層次的膠囊時,如果預測一致,更高階別的膠囊變得活躍,這個過程就被稱作動態路由。
隨著路由機制的不斷迭代,就能夠將各種膠囊訓練成學習不同思維的單元。例如,讓神經網路識別面部,就將面孔的不同部分分別“路由”到能夠理解眼睛、鼻子、嘴、耳朵的膠囊裡去。
換句話說,神經膠囊就是一組被打包好的神經元,它們在內部進行大量運算,然後僅向上輸出一個結果——高維向量。
(膠囊網路流程)
那麼,膠囊網路,比常規的卷積神經網路好在什麼地方?大約可以總結為三點:
首先,卷積神經網路的輸出結果是標量,而膠囊網路是帶有方向的向量。而向量存在的意義是,膠囊網路不僅可以根據統計資訊進行特徵檢測,比如根據眼睛鼻子嘴等五官識別出一張“臉”,還可以對特徵進行理解,如果五官不在其特定的區域了,比如嘴長到了額頭、眼睛長到了耳朵上,膠囊網路卻不會像CNN一樣含糊放過。因為它能夠檢測不同方向的同一個物體類別(例如,順時針旋轉),從而學習到基本的思維,知道到底什麼樣子的五官才能被稱作是“臉”。
第二,卷積神經網路的每一層都需要做同樣的卷積運算,因此需要相當多的網路資料才能學習,否則就無法精準地調參,非常耗時、低效且昂貴。比如讓它學會認臉技能,需要投喂大量不同的變體,MNIST資料集就包含55,000個訓練資料,即每個數字單元都有5,500個樣本。
膠囊網路則要求模型在膠囊中學習特徵變數,最大化保留那些有價值的資訊,因此它可以使用更少的訓練資料就推斷出可能的變數,達到CNN的預期效果。這就使得它在人臉識別、影像識別、字元識別等領域的落地更受歡迎了。
(MultiMNIST資料集中,膠囊網路輸出效能遠超CNN)
第三,卷積神經網路不能很好地處理模糊性,因為不斷池化會丟失許多重要的特徵資訊,因此對微小的變化不甚敏感,在完成語義分割等複雜任務時,需要構建複雜的體系結構來解決資訊丟失問題。也難怪Hinton會說出“CNN分類正確率很高,看似一個大好局面,實則是一場災難”的話了。
但膠囊網路不同,由於每個膠囊都攜帶了大量的資訊,目標位置、旋轉、厚度、傾斜、大小等詳細資訊都被儲存並平移給了上層膠囊,自然也就可以用簡單一致的架構應對不同的視覺任務。
聽起來是不是還蠻不錯的,別激動,除此之外,膠囊網路還有一個比較“形而上”的優勢,那就是它的傳輸和運算邏輯更符合人腦神經元的工作方式,不同的膠囊可以攜帶不同屬性,就像人腦的不同區域負責不同的工作。因此,其智慧化表現上更加優秀,能夠舉一反三。
比如下面這些自由女神像,各種角度都能認出來,對膠囊網羅來說非常簡單。而CNN在模擬人類神經元這件事上,卻只能“有多少人工(資料)就有多少智慧”,真是高下立見啊。
膠囊神經網路想要上位,差在哪些地方?
被AI教父親口斷定沒有前途,一場神經網路界庶長子與嫡次子的奪位之戰即將拉開序幕……
顯然,又聰明又能幹又會過日子的“膠囊網路”才是民心所向,2018年2月該論文第一作者剛剛在GitHub開源了膠囊網路的程式碼,就吸引來了數萬人fork(複製原始碼在其上開發)。
按理說,以AI演算法的迭代速度,一年多時間怎麼都夠孵化出N個新模型了,比如AlphaGo開源並隱退後,很快又出現了強化版“師弟”AlphaGo Master,擊敗了世界排名第一的人類選手柯潔。五個月之後,更強的AlphaGo zero從零自學了40天,又打敗了AlphaGo Master版本。
既然如此,怎麼膠囊網路就是“雷聲大雨點小”呢?
顯然,不是“嫡次子”能力不行,也不是智囊團不給力,而是想要真的把“ANN長子”拉下馬,勢必會遭遇若干阻礙,比如說:
1.模型訓練的週期侷限。由於需要在每個膠囊單元中完成計算(協議路由演算法),導致其訓練模型的時間更慢。在不同硬體和雲伺服器上的50迭代訓練時間說明,與CNN相比,膠囊網路模型需要更大的耐心。
2.學術起步階段的研究侷限。目前針對膠囊網路的研究大多集中在零樣本和少樣本任務中,而且,膠囊網路在CIFAR10資料集、ImageNet等大影像上的準確性並沒有CNN的高。產業端自然不會在缺乏足夠實驗例證、投資回報不明晰的前提下,貿貿然就選擇跟進了。
3.膠囊網路自身的效能侷限。與CNN一樣,膠囊網路也有其不完美之處,比如膠囊擁擠,即如果一個膠囊網路彼此之間太接近,就沒有辦法區分出同一型別的兩個物件。因此在模型中,給定的位置上只能有一個給定型別的膠囊,這就大大侷限了其現實中應用的條件。
從某種程度上來說,膠囊網路還是一個剛剛墜地的孩童,距離拿下CNN的位置還是非常遙遠的。
但是也別急著失望,讓CNN在現階段發光發熱,同時繼續培養未來堪當大任的接班人,這樣生生不息的AI未來也蠻值得期待的,“養成”也是一種樂趣嘛~
學而時習之:膠囊網路的新發現
雖然現在的膠囊網路還很弱小,但並不妨礙無數“最強大腦”拼命教它本領。那麼近兩年來,膠囊網路有哪些新的發現可以給大家彙報一下呢?
有幾個重要的成就值得說說:
1.通過膠囊網路抵禦對抗性攻擊
還是熟悉的味道。在膠囊網路模型提出的一年之後,原作者團隊(Sabour、Frosst 以及 Hinton)在2018年的機器學習安全研討會中展示了自己的新成果——膠囊網路在抵禦對抗性攻擊上的能力。
對抗性攻擊會對傳統的CNN產生較大影響,比如不同方向的圖片,CNN很容易辨認不清,如果一些特徵被放置在了錯誤的地方,CNN也會被圖片所欺騙。這會引發一系列安全問題,比如自動駕駛汽車搞混了真的人臉與列印的人臉。
對此,原團隊提出了一種與攻擊獨立的檢測技術——DARCCC,它能夠識別出真實影像和GAN生成的影像在距離上的分佈誤差,從而有效檢測出“對抗”影像,防止系統被假圖片欺騙而導致錯誤的分類。
(用真實資料和對抗樣本分別訓練出的膠囊網路,後者重構出的影像更像“1”)
2. 膠囊網路+圖卷積GCN的圖分類能力
圖分類是一個應用非常廣泛的技術,在分子表示、社會網路分析、金融等領域,都需要從圖形中提取特徵資訊,並對其進行結構化的資料表示和分類。但是,已有的CNN分類演算法在執行過程中,往往需要固定大小的矩陣,但圖形節點和邊的數量卻可能存在很大的變化,給任務帶來很大的困難。
而判斷特徵之間的相似性,正是膠囊網路所擅長的。因此,有研究團隊將膠囊網路與圖卷積GCN相結合,開發出了新的圖分類模型。靠膠囊網路記住圖結構中的豐富資訊,以及圖的節點和邊等實體特徵,將其轉化成向量。再將CNN和膠囊層結合在一起,從而提高分類效能。
實驗結果表明,在所有7個基準資料集上,膠囊網路的加入確實效果優於CNN分類器。不過,執行速度也比CNN慢上八倍,同志仍需努力呀。
3.膠囊網路+注意力機制=零樣本意圖識別
在少量樣本或無樣本情況下,對新的類別進行理解,是困擾學界和產業界的老大難問題。比如在智慧問答和對話系統中,如何快速識別明明確新使用者的對話和意圖,對其進行正確分類和處理,就是提升智慧對話、降低無效溝通的重要課題。
就在前不久,ACL 2018中就出現了相關研究,研究人員首先通過與訓練方式提取文字資訊,對其層次特徵進行向量化處理。然後利用膠囊動態路由演算法,將新的使用者意圖與已有使用者意圖之間的相似度進行對比,再將已有使用者意圖上的資訊遷移至新的使用者意圖分類上,從而實現對新意圖的預測。
在SNIPS-NLU和CVA兩個語音助手資料集上,膠囊網路的加入都讓語義理解能力有了一定的提升。
關於膠囊網路的相關學術論文還有不少,比如基於膠囊網路的手勢識別,正確率達到94.2%,能夠幫助聽障人群進行更有效地溝通;以及在ICLR 2019上發表的圖片分類新框架膠囊圖神經網路(CapsGNN),也是將膠囊網路與圖神經網路(GNN)結合的新模型。
如果說以卷積神經網路為尊,是現階段AI產業的“原教旨主義”,膠囊網路顯然正在讓這一信仰土崩瓦解。不過,從實驗室到真實的應用體系中,想要真正取代CNN,還有千千萬萬特殊問題亟待處理。但如果把它當做一個思路,與現有的深度學習模型相結合,那麼現在,膠囊網路就可以給予我們不少意外和驚喜。
這當然僅僅是個開始,正如不斷手撕CNN的Hinton所總結的——科學是踩著葬禮前行的。站在前人的肩膀上前行,才能讓人工智慧始終作為一種“殺手鐗”式技術,成為我們博弈未來的武器。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561483/viewspace-2645478/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 卷積網路雖動人,膠囊網路更傳“神”卷積
- 如何理解和使用膠囊網路
- Hinton:膠囊網路的專利是我的了
- 膠囊網路(Capsule Network)在文字分類的探索文字分類
- 拆解式解讀如何用飛槳復現膠囊神經網路(Capsule Network)神經網路
- 卷積神經網路CNN卷積神經網路CNN
- 膠囊網路與計算機視覺教程 @CVPR 2019計算機視覺
- 全面掌握膠囊網路:從基礎理論到PyTorch實戰PyTorch
- CNN神經網路之卷積操作CNN神經網路卷積
- 卷積神經網路(CNN)詳解卷積神經網路CNN
- Tensorflow-卷積神經網路CNN卷積神經網路CNN
- 卷積神經網路:Convolutional Neural Networks(CNN)卷積神經網路CNN
- 卷積神經網路(Convolutional Neural Network,CNN)卷積神經網路CNN
- 直白介紹卷積神經網路(CNN)卷積神經網路CNN
- TensorFlow上實現卷積神經網路CNN卷積神經網路CNN
- Keras上實現卷積神經網路CNNKeras卷積神經網路CNN
- 卷積神經網路CNN-學習1卷積神經網路CNN
- CSS3膠囊開關美化CSSS3
- 卷積神經網路(CNN)介紹與實踐卷積神經網路CNN
- “卷積神經網路(Convolutional Neural Network,CNN)”之問卷積神經網路CNN
- 9 大主題卷積神經網路(CNN)的 PyTorch 實現卷積神經網路CNNPyTorch
- CNN-卷積神經網路簡單入門(2)CNN卷積神經網路
- CNN--卷積神經網路從R-CNN到Faster R-CNN的理解(CIFAR10分類程式碼)CNN卷積神經網路AST
- 深度學習與圖神經網路學習分享:CNN 經典網路之-ResNet深度學習神經網路CNN
- 卷積神經網路CNN實戰:MINST手寫數字識別——網路定義卷積神經網路CNN
- Matlab程式設計之——卷積神經網路CNN程式碼解析Matlab程式設計卷積神經網路CNN
- 深度學習之卷積神經網路(Convolutional Neural Networks, CNN)(二)深度學習卷積神經網路CNN
- Pytorch_第十篇_卷積神經網路(CNN)概述PyTorch卷積神經網路CNN
- 【機器學習基礎】卷積神經網路(CNN)基礎機器學習卷積神經網路CNN
- BI工具將資料分析拉下神壇
- 詳解卷積神經網路(CNN)在語音識別中的應用卷積神經網路CNN
- 卷積神經網路十五問:CNN與生物視覺系統的研究探索卷積神經網路CNN視覺
- 一文帶你瞭解卷積神經網路CNN的發展史卷積神經網路CNN
- 【深度學習篇】--神經網路中的池化層和CNN架構模型深度學習神經網路CNN架構模型
- 基於CNN卷積神經網路的MQAM調製識別matlab模擬CNN卷積神經網路MQMatlab
- 深度學習基礎-基於Numpy的卷積神經網路(CNN)實現深度學習卷積神經網路CNN
- 【Python教程】計算機視覺的基石——讀懂 CNN卷積神經網路Python計算機視覺CNN卷積神經網路
- 【深度學習原理第4篇】卷積神經網路詳解(CNN)深度學習卷積神經網路CNN