追根溯源:深度學習架構譜系

機器之心整理

參與:蔣思源、李澤南、李亞洲

近幾年,深度學習高速發展,出現了大量的新模型與架構,以至於我們無法理清網路類型之間的關係。在這篇文章中,香港科技大學(HKUST)助理教授金成勳總結了深度網路類型之間的譜系圖,以便於我們索引不同類型網路的傑出研究成果。

金成勳在 GitHub 上梳理出的譜系圖如下(點擊圖片放大查看),最後的藍色字體部分是各分支內的傑出研究成果(附所有論文鏈接)。機器之心在此基礎上對各個分支網路做了介紹、補充,希望對讀者了解網路體系間的關聯有所幫助。如有缺陷,歡迎大家留言補充。

Github 項目地址:github.com//hunkim/deep

完整圖

記憶網路

在記憶網路分支中,hunkim 標註了三篇重要論文:《記憶網路》、《端到端記憶網路》、《DMN:動態記憶網路》。神經編程是記憶網路的下一級分支,包含神經圖靈機、混合計算等論文。

參考閱讀:

  • 深度 | Yann LeCun 最新演講再談預測學習:記憶網路和對抗訓練是很有前景的方向
  • 一周論文 | 記憶網路及其變體模型
  • 業界 | MetaMind 發布論文:藉助動態記憶網路 DMN 讓機器更好地像人類般推理(附論文下載)
  • 神經圖靈機深度講解:從圖靈機基本概念到可微分神經計算機

卷積神經網路(CNN)

如下所示,CNN 除了包含執行目標識別任務的 AlexNet 等深度卷積網路,還包括很多優秀的模型用於處理目標檢測、語義分割和超解析度等任務。它們以不同的方式應用卷積過程處理不同的任務,並在這些任務上產生了非常好的效果。從基本上來說,卷積相對於最初的全連接網路有很多優秀的屬性,例如它只和上一層神經元產生部分的連接,同一個卷積核可以在輸入張量上重複使用,也就是說特徵檢測器可以在輸入圖像上重複檢測是否有該局部特徵。這是卷積網路十分優秀的屬性,它大大減少了兩層間參數的數量。

基於這些基礎的卷積特性,我們可以構建不同的卷積模型處理不同的任務。以下是卷積網路的主要模型與領域:

參考閱讀:

  • 從入門到精通:卷積神經網路初學者指南
  • 一文概覽卷積神經網路中的類別不均衡問題
  • 理解深度學習中的卷積
  • 如何從信號分析角度理解卷積神經網路的複雜機制?
  • 機器之心 GitHub 項目:從零開始用 TensorFlow 搭建卷積神經網路

循環神經網路(RNN)

循環神經網路(recurrent neural network)是深度學習的重要組成部分,它可以讓神經網路處理諸如文本、音頻和視頻等序列數據。它們可用來做序列的高層語義理解、序列標記,甚至可以從一個片段生產新的序列。目前有很多人工智慧應用都依賴於循環深度神經網路,在谷歌(語音搜索)、百度(DeepSpeech)和亞馬遜的產品中都能看到 RNN 的身影。

基本的 RNN 結構難以處理長序列,然而一種特殊的 RNN 變種即「長短時記憶(LSTM)」網路可以很好地處理長序列問題。這種模型能力強大,在翻譯、語音識別和圖像描述等眾多任務中均取得里程碑式的效果。因而,循環神經網路在最近幾年得到了廣泛使用。

參考閱讀:

  • LSTM、GRU 與神經圖靈機:詳解深度學習最熱門的循環神經網路
  • Google Brain 講解注意力模型和增強 RNN
  • 如何使用 TensorFlow 構建、訓練和改進循環神經網路
  • 如何用 PyTorch 實現遞歸神經網路?

Capsule Net

Capsule 是由深度學習先驅 Geoffrey Hinton 等人提出的新一代神經網路形式,旨在修正反向傳播機制。在 Dynamic Routing Between Capsules 論文中,Geoffrey Hinton 這樣介紹 Capsule:「Capsule 是一組神經元,其輸入輸出向量表示特定實體類型的實例化參數(即特定物體、概念實體等出現的概率與某些屬性)。我們使用輸入輸出向量的長度表徵實體存在的概率,向量的方向表示實例化參數(即實體的某些圖形屬性)。同一層級的 capsule 通過變換矩陣對更高級別的 capsule 的實例化參數進行預測。當多個預測一致時(本論文使用動態路由使預測一致),更高級別的 capsule 將變得活躍。」

Capsule 中神經元的激活情況表示了圖像中存在的特定實體的各種性質。這些性質可以包含多種不同的參數,例如姿勢(位置、大小、方向)、變形、速度、反射率、色彩、紋理等。而輸入輸出向量的長度表示了某個實體出現的概率,所以它的值必須在 0 到 1 之間。

機器之心也詳細解讀了上周 Hinton 公開的論文,這篇論文的亮點在於 Capsule 層的輸入與輸出都是向量,構建向量的過程可以認為是 PrimaryCaps 層利用 8 個標準的 Conv2D 操作產生一個長度為 8 個元素的向量,因此每一個 Capsule 單元就相當於 8 個卷積單元的組合。此外,在 Capsule 層中,Hinton 等人還使用了動態路由機制,這種更新耦合係數(coupling coef?cients)的方法並不需要使用反向傳播機制。

除了 Hinton 等人公布的 Capsule 論文以外,近日還有一篇 MATRIX CAPSULES WITH EM ROUTING 論文,該論文採用 EM Routing 修正原論文的 dynamic routing 從而實現更好的效果。

參考閱讀:

  • 終於,Geoffrey Hinton 那篇備受關注的 Capsule 論文公開了
  • 先讀懂 CapsNet 架構然後用 TensorFlow 實現,這應該是最詳細的教程了
  • 一篇新的 Capsule 論文:優於基準 CNN(ICLR 2018 盲審中)

生成模型

人工智慧研究的最大難題之一是無監督學習(unsupervised learning),而面向無監督學習的深度學習方法以學習表徵(learning representation)問題為核心,不同的演算法都會定義一個目標函數,該目標函數可以讓該學習器獲取到其數據表徵的關鍵方面以及一個可以表徵數據的新空間。深度生成模型可以通過生成全新的樣本來演示其對於數據的理解,儘管這些生成的樣本非常類似於那些訓練樣本。許多這樣的模型和之前的自編碼器的思想有關,其有一個編碼器函數將數據映射到表徵,還有一個解碼器函數(或生成器)將該抽象的表徵映射到原始數據空間。此外,生成模型很多也應用到了 GAN 的思想,即通過判別器與生成器之間的對抗促使生成器生成非常真實的圖像。

在變分自編碼器中,我們需要通過樣本訓練一個編碼器和解碼器,在這過程中我們能得到中間的隱藏變數。若我們需要生成新的圖像,那麼只需要在隱藏變數採樣並投入解碼器就能完成生成。而在生成對抗網路中,我們會定義一個判別模型與生成模型。首先我們會將生成的樣本混合真實樣本投遞給判別模型以訓練其鑒別真假的能力,隨後再固定判別模型並訓練生成模型,以生成更真實的圖像。

參考閱讀:

  • Yoshua Bengio AIWTB 大會解讀深度生成模型:讓機器具備無監督學習能力
  • 在 TensorFlow 中對比兩大生成模型:VAE 與 GAN
  • 生成對抗網路初學入門:一文讀懂 GAN 的基本原理(附資源)
  • 機器之心 GitHub 項目:GAN 完整理論推導與實現,Perfect!
  • 深入淺出:GAN 原理與應用入門介紹
  • 綜述 | 一文幫你發現各種出色的 GAN 變體
  • 獨家 | GAN 之父 NIPS 2016 演講現場直擊:全方位解讀生成對抗網路的原理及未來(附 PPT)

推薦閱讀:

請問各位大大現在的放療計劃系統在做自動化計劃時用的是神經網路嗎?
cnn分類時圖片較大物體較圖片較小,大約1/16,要怎麼做?
Pytorch如何自定義損失函數(Loss Function)?
深度圖像depth image作為CNN卷積神經網路的輸入層有什麼技巧?選用什麼網路模型能取得好效果?
卷積神經網路提取圖像特徵時具有旋轉不變性嗎?

TAG:深度学习DeepLearning | 卷积神经网络CNN | RNN |