選自Model Zoo,機器之心整理。
一直以來,研究者與開發者都經常在 GitHub 寶庫中搜尋比較有意思的專案與實現,但我們可能需要一個確切的主題,並做一些篩選。近日有開發者釋出了一個模型聚合平臺,我們可以分領域在上面搜尋到當前最為流行的開源模型。作者根據 GitHub 專案收藏量、專案所屬領域、實現框架等特點對這些模型分類,因此我們能快速定位合適的模型。
專案地址:modelzoo.co/
深度學習近來是機器學習最流行的子領域,因為針對高維資料擁有強大的建模能力,它在很多不同的任務與領域都綻放了奪目的光彩,例如計算機視覺、自然語言處理與智慧體學習等。深度學習模型是一種表示學習方法,即根據模型學習表示的本身,而不僅僅如同傳統機器學習那樣將表示對映到輸出。
目前深度學習主要通過不同層級的神經元從原始資料自動抽取特徵,它學習到的表示往往比傳統 ML 手動設計的表示有更好的效能。目前 GitHub 上受關注的 ML 實現大部分都是深度學習模型,它們以不同的層級結構與網路架構建立起一個個解決具體問題的模型。例如 2D 卷積層以分層的形式堆疊就能由簡單到複雜抽取二維資料(如影象)的特徵,而迴圈單元的堆疊就適合處理機器翻譯等序列標註問題。再加上殘差連線、門控機制和注意力機制等模組就能針對具體任務學習特定知識。
這些層級表徵的深度模型在近來有非常多的研究,很多開發者與研究者都分享了他們的程式碼與創意。ModelZoo 旨在為搜尋優秀深度模型提供一個集中式的平臺,並希望為復現論文、構建複雜神經網路、學習模型程式碼與直接使用預訓練模型提供資源。
Model Zoo 是新構建的平臺,因此它包含的模型庫將不斷髮展。如果讀者發現有其它一些優秀的模型還沒有收錄進去,可以在網站上提交併通知作者。此外,這個網站的開發者目前還只是新加坡的一名本科生,他希望能借這樣一個平臺幫助更多的學習者。
Model Zoo 所收集的所有模型都能在 GitHub 中找到,作者 Jing Yu 根據 GitHub 專案收藏量、專案所屬領域、實現框架等特徵對模型做了整理,此外我們也能使用關鍵詞搜尋確定需要查詢的模型。每一個模型都在頁面上展示了對應 GitHub 專案的 README 文件,因此讀者可快速判斷專案的基本資訊與要求。此外,作者還構建了 Newsletter 模組,每月整理一次當月最流行與重要的模型。
目前,該專案內的深度學習模型有五大分類:計算機視覺、自然語言處理、生成模型、強化學習和無監督學習。這些類別或領域相互之間是有交叉的,例如很多生成模型都可以歸為無監督學習,實際上很多模型確實歸為了多個類別。
目前收錄的實現框架有 Tensorflow、Caffe、Caffe2、PyTorch、MXNet、Keras。雖然還有很多框架沒有收錄,例如 CycleGAN 的原實現因為使用的是 Lua 語言與 Torch 框架,即使該專案的收藏量達到了 6453,這個平臺同樣沒有收錄。
可以從 Browse Frameworks 和 Browse Categories 分別進入以上的框架分類介面和模型分類介面,並按其分類進行瀏覽。下方的搜尋框支援模型名稱的搜尋。
模型基本是按 GitHub 的收藏量(如 Magenta 的 10164 star)排序的,預覽介面還包含專案簡介、實現框架和分類等資訊。點選後可進入專案細節(即對應 GitHub 專案的 README 文件)。後文我們將針對各領域簡要介紹其中最流行的專案:
計算機視覺
- GitHub star:10164
- 實現框架:TensorFlow
Magenta 是一個用於探索機器學習在藝術、音樂創作中的作用的研究專案,因為應用眾多作者將其劃分為計算機視覺與強化學習領域。其主要涉及為生成歌曲、影象、素描等開發新的深度學習和強化學習演算法。但它也在嘗試構建智慧工具和介面,以幫助藝術家和音樂家擴充套件他們使用這些模型的方式。Magenta 由來自谷歌大腦團隊的一些研究員和工程師啟動,但也有很多其他人為該專案做出了重要的貢獻。
目前該專案有非常多的應用實現與演示,讀者可檢視 magenta.tensorflow.org/blog。
Mask-RCNN
- GitHub star:6104
- 實現框架:Keras
Mask R-CNN 是一個兩階段的框架,第一個階段掃描影象並生成候選區域(proposals,即有可能包含一個目標的區域),第二階段分類候選區域並生成邊界框和掩碼。Mask R-CNN 擴充套件自 Faster R-CNN,由同一作者在去年提出。Faster R-CNN 是一個流行的目標檢測框架,Mask R-CNN 將其擴充套件為例項分割框架。
該專案是 Mask R-CNN 的在 Python3、Keras 和 TensorFlow 上的實現。該模型可以為影象中的目標例項生成邊框和分割掩碼。其架構基於特徵金字塔網路(FPN)和 ResNet101 骨幹網路。
該 repo 包含:Mask R-CNN 建立在 FPN 和 ResNet101 上的原始碼;資料集 MS COCO 的訓練程式碼;MS COCO 的預訓練權重;視覺化檢測流程的每個步驟的 Jupyter notebook;多 GPU 訓練的 ParallelModel 類;在 MS COCO 指標(AP)上的評估;訓練自定義資料集的示例。
自然語言處理
WaveNet
- GitHub star:3692
- 實現框架:TensorFlow
下圖展示了 WaveNet 的主要結構,這是一個完全卷積的神經網路,其中的卷積層有不同的擴張係數(dilation factors),這讓其感受野可根據層級深度指數式地增長並可覆蓋數千個時間步驟。此外 Wave Net 還是第一個提出因果卷積的模型,從直觀上來說,它類似於將卷積運算「劈」去一半,令其只能對過去時間步的輸入進行運算。其實後來很多使用卷積網路處理序列標註問題的模型都借鑑了 WaveNet 所提出的這兩個結構。
DeepMind 提出的 WaveNet 神經網路架構可以直接生成新的音訊波形,在文字到語音轉換和音訊生成中有優越的表現。在訓練時間,其輸入序列是由人類說話者錄製的真實波形。訓練之後,我們可以對這個網路進行取樣以生成合成話語。在取樣的每一個時間步驟,都會從該網路所計算出的概率分佈中取出一個值。然後這個值會被反饋進入輸入,併為下一個步驟生成一個新的預測。像這樣一次一步地構建樣本具有很高的計算成本,但這對生成複雜的、聽起來真實感強的音訊而言至關重要。
Sentence Classification with CNN
- GitHub star:3416
- 實現框架:TensorFlow
論文《Convolutional Neural Networks for Sentence Classification》的簡化版 TensorFlow 實現。
生成模型
DCGAN-tensorflow
- GitHub star:4263
- 實現框架:TensorFlow
Goodfellow 等人提出來的 GAN 是通過對抗過程估計生成模型的新框架。在這種框架下,我們需要同時訓練兩個模型,即一個能捕獲資料分佈的生成模型 G 和一個能估計資料來源於真實樣本概率的判別模型 D。生成器 G 的訓練過程是最大化判別器犯錯誤的概率,即判別器誤以為資料是真實樣本而不是生成器生成的假樣本。因此,這一框架就對應於兩個參與者的極小極大博弈(minimax game)。而 DCGAN 主要使用卷積神經網路作為生成器 G 與判別器 D 的架構,因此能生成比較清晰與優秀的影象。
論文《Deep Convolutional Generative Adversarial Networks》的 TensorFlow 實現,這是一個穩定的生成對抗網路。
上圖展示了生成器 G 的架構,它使用四個轉置卷積進行上取樣,即將 100 維的隨機變數恢復到影象。這個專案為了防止判別器器網路收斂過快,當判別器迭代一次生成器網路會連續迭代兩次,這和原論文不太一樣。
Image-to-Image Translation with Conditional Adversarial Networks
- GitHub star:4242
- 實現框架:PyTorch
因為 CycleGAN 的原實現是用 Lua 寫的,因此很多研究者使用該專案復現影象到影象的轉換。CycleGAN 的主要想法是訓練兩對生成器-判別器模型以將影象從一個領域轉換為另一個領域。在這過程中我們要求迴圈一致性,即在對影象應用生成器後,我們應該得到一個相似於原始 L1 損失的影象。因此我們需要一個迴圈損失函式(cyclic loss),它能確保生成器不會將一個領域的影象轉換到另一個和原始影象完全不相關的領域。
該專案是配對、非配對的影象到影象轉換的 PyTorch 實現。
強化學習
Deep Reinforcement Learning for Keras
- GitHub star:2639
- 實現框架:Keras
keras-rl 讓人們可以輕鬆使用當前最佳的深度強化學習演算法,使用 Keras 實現,並結合了 OpenAI Gym 來構建專案。
目前該專案實現了以下演算法:
- Deep Q Learning (DQN)
- Double DQN
- Deep Deterministic Policy Gradient (DDPG)
- Continuous DQN (CDQN or NAF)
- Cross-Entropy Method (CEM)
- Dueling network DQN (Dueling DQN)
- Deep SARSA
DQN-tensorflow
- GitHub star:1610
- 實現框架:TensorFlow
論文《Human-Level Control through Deep Reinforcement Learning》的 TensorFlow 實現。
該實現包括:Deep Q-network 和 Q-learning
- 經驗重放記憶
- 減少持續更新的相關性
- 用於 Q-learning 目標的網路由於區間問題而經過修改
- 減少目標和預測 Q 值之間的關聯
無監督學習
MUSE: Multilingual Unsupervised and Supervised Embeddings
- GitHub star:1298
- 實現框架:PyTorch
MUSE 是一個多語言詞嵌入的 Python 庫,其目的是為社群提供當前最佳的基於 fastText 的多語言詞嵌入,以及用於訓練和評估的大規模高質量雙語詞典。
該專案使用了兩種方法,一種是使用雙語詞典或相同字串的監督方法,另一種是沒有使用任何平行資料的無監督方法。
Domain Transfer Network (DTN)
- GitHub star:654
- 實現框架:TensorFlow
論文《Unsupervised Cross-Domain Image Generation》的 TensorFlow 實現,下圖是其模型架構概覽。
以上是各類別主要流行的模型簡介,還有很多優秀的專案並沒有展示,讀者根據該平臺與具體的需求篩選模型。