一直以來,研究者與開發者都經常在 GitHub 寶庫中搜索比較有意思的項目與實現,但我們可能需要一個確切的主題,並做一些篩選。近日有開發者發佈了一個模型聚合平臺,我們可以分領域在上面搜索到當前最為流行的開源模型。作者根據 GitHub 項目收藏量、項目所屬領域、實現框架等特點對這些模型分類,因此我們能快速定位合適的模型。
項目地址:https://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 由來自谷歌大腦團隊的一些研究員和工程師啟動,但也有很多其他人為該項目做出了重要的貢獻。
目前該項目有非常多的應用實現與演示,讀者可查看 https://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 實現,下圖是其模型架構概覽。
以上是各類別主要流行的模型簡介,還有很多優秀的項目並沒有展示,讀者根據該平臺與具體的需求篩選模型。
閱讀更多 機器之心Pro 的文章