天天看點

欲取代CNN的Capsule Network究竟是什麼來頭?它能為AI界帶來革命性轉折麼?

醞釀許久,深度學習之父Geoffrey Hinton終于在上月發表了備受矚目的Capsule Networks(CapsNet)。 Hinton本次挾CapsNet而來,大有要用它取代CNN的氣勢。那麼,CapsNet相比CNN到底有哪些優勢?它又是否能為AI界帶來革命性轉折呢?今天,文摘菌就來為大家科普一下這一深度學習的新裡程碑。

首先,這位被譽為深度學習之父Geoffrey Hinto究竟是何許人也呢?在上世界50年代,深度神經網絡的概念就已出現,從理論上來講可以解決衆多問題,但是一直以來卻沒有人知道該如何訓練它,漸漸的也就被放棄。直至1986年,Hinton想到了通過反向傳播來訓練深度網絡,标志了深度學習發展的一大轉機。然而,受限于當時的計算機運算能力,直到2012年,Hinton的發明才得以一顯神通。這一突破也為近年來人工智能的發展奠定了基礎。

欲取代CNN的Capsule Network究竟是什麼來頭?它能為AI界帶來革命性轉折麼?

2017年 10月26日,Hinton又發表了一項開創性的論文——Capsule Networks(膠囊網絡),或将再次改寫深度學習的發展曆程。(論文連結:https://arxiv.org/pdf/1710.09829v1.pdf)

<b>傳統神經網絡中存在的問題</b>

目前為止,CNNs(卷積神經網絡)仍是最先進的圖像分類識别方法。

簡單來講,CNNs通過逐層累加調整實作分類。它首先檢測到邊緣,然後是形狀,然後是實際的識别對象。CNN的實作方式極具創新,然而在這一過程中卻有一項重要的資訊丢失了——特征之間的空間關系。下面是一個CNN工作原理的簡化描述:

如果有兩隻眼睛,一隻鼻子,一張嘴,那麼這就是一張臉。

乍一看完全沒問題啊,完美!那我們拿卡戴珊大姐的照片來試一下,看看會怎麼樣:

(前方高能……

欲取代CNN的Capsule Network究竟是什麼來頭?它能為AI界帶來革命性轉折麼?

請幫忙計算一下這位大姐的心理陰影面積……但話說回來,這也确實是兩隻眼睛,一個鼻子和一個嘴巴呀!我們很容易就能發現,這些特征的空間位置明顯是錯誤的,不符合“臉”的特征,然而CNN在處理這一概念上卻十分笨拙。

欲取代CNN的Capsule Network究竟是什麼來頭?它能為AI界帶來革命性轉折麼?

除了被圖像的錯誤位置所迷惑,CNN在檢視不同方向的圖像時也很容易混淆。解決這個問題的方法之一,就是對所有可能的角度進行大量訓練,但是這需要花費很多時間,而且似乎有些違反常理。

我們隻要把Kim的照片颠倒一下,就能發現其性能的大幅下降:

欲取代CNN的Capsule Network究竟是什麼來頭?它能為AI界帶來革命性轉折麼?

颠倒的Kardashian被識别成了“炭黑色”

最後,卷積神經網絡可能很容易受到白盒對抗攻擊(攻擊者知曉機器學習所用的算法和相關參數,并據此在對抗性攻擊過程中與系統互動)。這種攻擊在對象上嵌入了一個秘密的圖案,由此使這張圖檔被錯誤識别。

講到這,我們就不難了解為什麼Hinton曾發表過這樣的言論:“卷積神經網絡的時代已經過去了”

<b>膠囊網絡“拯救世界”!</b>

<b></b>

欲取代CNN的Capsule Network究竟是什麼來頭?它能為AI界帶來革命性轉折麼?

膠囊網絡構架

膠囊網絡的引入使我們能夠充分利用空間關系,它可以實作以下邏輯:

如果有兩個相鄰的眼睛,眼睛下長了鼻子,鼻子下長了嘴巴:那麼這就是一張臉。

你應該可以看到,這次我們定義的神經網絡在處理卡戴珊大姐的照片過程中不會那麼容易被糊弄了。

這種新的架構在以下資料集上也獲得了更高的識别準确度。這個資料集經過了精心設計,是一個純粹的形狀識别任務,即從不同的角度來看也能識别物體。CapsNet在該資料集上打敗了最先進的CNN,将錯誤數量減少了45%。

欲取代CNN的Capsule Network究竟是什麼來頭?它能為AI界帶來革命性轉折麼?

CapsNet能夠識别出與上下對應的圖像同屬一個類别(動物,人類,飛機,汽車,卡車)。

另外,根據他們最近的研究成果,膠囊網絡在對抗白盒攻擊方面比卷積網絡也更有效果。

<b>訓練CapsNet</b>

要想使用膠囊網絡,首先你得訓練它——于是,我根據Hinton 的論文建立了一個Repo(非常感謝naturomics).

以下指南将為你提供在MNIST資料集上訓練的模型。(MNIST是手寫數字的資料集,很适合用作測試機器學習算法的基準線)

1. 複制Repo:

git clone https://github.com/bourdakos1/capsule-networks.git

2. 安裝 requirements檔案:

pip install -r requirements.txt

3. 開始訓練!

python main.py

MNIST資料集包含6萬個訓練圖像。預設情況下,該模型每次批處理的大小是128個,訓練50次。每一次訓練都是資料集的一次完整運作過程。由于每次批量大小是128,是以每次訓練大約有468個批處理(60,000 / 128 ≈468)。

注意:如果你沒有GPU,訓練過程可能需要很長時間。你可以閱讀這篇關于如何縮短訓練時間的文章(連結:https://medium.freecodecamp.org/tracking-the-millenium-falcon-with-tensorflow-c8c86419225e)。

一旦我們的模型得到充分的訓練,我們可以通過運作以下指令來測試它:

最後,我想指出,雖然膠囊網絡看起來威力十足,但它現在仍然處在嬰兒期。在訓練龐大的資料集時,我們可能會遇到問題。但總體來說,我還是對膠囊網絡的未來發展充滿信心的。

原文釋出時間為:2017-11-29

本文作者:文摘菌

繼續閱讀