1. 程式人生 > >人工智慧領域常用的開源框架和庫(含機器學習/深度學習/強化學習/知識圖譜/圖神經網路)

人工智慧領域常用的開源框架和庫(含機器學習/深度學習/強化學習/知識圖譜/圖神經網路)

【說在前面】本人部落格新手一枚,象牙塔的老白,職業場的小白。以下內容僅為個人見解,歡迎批評指正,不喜勿噴![認真看圖][認真看圖]

【補充說明】本文主要討論人工智慧領域中常用的支援 Python 程式語言的開源框架和庫,因此全面性肯定有限!

一、機器學習常用的開源框架和庫

1. Scikit-learn

作為專門面向機器學習的 Python 開源框架,Scikit-learn 內部實現了多種機器學習演算法,容易安裝和使用,樣例豐富。

2. Mahout

在大資料分散式框架 Hadoop 下使用,包含了機器學習中常用的演算法(含推薦演算法)。

3. MLlib / spark.ml

在大資料分散式框架 Spark 下使用,同樣包含了機器學習中常用的演算法,可採用 Java / Sacala / Python / R 語言作為程式語言。

4. 其他

例如針對計算機視覺的 SimpleCV、針對自然語言處理的 NLTK 等,這裡不再拓展。

二、深度學習常用的開源框架和庫

1. TensorFlow

由 Google Brain 團隊開發,能夠實現各種深度神經網路的搭建。為初學者和專家提供了各種 API,以便對桌面、移動終端、Web和雲進行開發。但是,計算圖必須構建為靜態圖,這讓很多計算變得難以實現,尤其是序列預測中經常使用的 beam search。

2. Keras

由 Python 編寫的高階神經網路 API,相當於 Tensorflow、Theano、 CNTK 的上層介面。強調極簡主義,降低了程式設計和閱讀別人程式碼時的理解開銷, 目前封裝有全連線網路、CNN、RNN 和 LSTM 等演算法。但是,封裝得太高階,細節很難修改,無法直接使用多 GPU。

3. PyTorch

由 Facebook 團隊基於 Torch 開發的深度學習框架。與 TensorFlow 不同的是,PyTorch 是基於動態圖的,目前也非常火熱。

4. Caffe

在 TensorFlow 出現之前,一直是深度學習領域 Github star 最多的專案。Caffe 的優勢在於容易上手(網路結構都是以配置檔案形式定義,不需要用程式碼設計網路)、訓練速度快(元件模組化,可以方便的拓展到新的模型和學習任務上)。但是,Caffe 不好安裝,且最開始設計時的目標只針對於影象,因此對 CNN 的支援非常好(例如 AlexNet、VGG、Inception 等),但是對 RNN、LSTM 等的支援不是特別充分。

5. 其他

例如百度提出的深度學習框架 PaddlePaddle、華為最新開源的深度學習框架 MindSpore 等,這裡不再拓展。

三、強化學習常用的開源框架和庫

1. OpenAI Gym

提供了非常多的虛擬環境,具體強化學習演算法的程式碼需要自己來寫,可以很好驗證強化學習演算法,眾多強化學習環境都為其提供介面。

2. OpenAI Baseline

基於 Tensorflow 和 OpenAI Gym 開發的,封裝了許多強化學習演算法(例如 DQN / PPO / TRPO / DDPG 等)。但是,程式碼規範性不好。

3. RLlib

支援 TensorFlow 和 PyTorch,可通過簡單的 Python API 使用,目前附帶了許多流行的RL演算法。

4. Horizon

Facebook基於 PyTorch、Caffe 和 Spark 構建的強化學習框架,是首個使用應用強化學習在大規模生產環境中優化系統的端到端開源平臺。

5. 天授:最近了解的,應該比較新吧

清華大學人工智慧研究院自研的深度強化學習演算法平臺,支援 TensorFlow 和 PyTorch。可以完整支援 PG、DQN、DDQN、A2C、DDPG、PPO、TD3、SAC 等主流強化學習演算法。對比既有主流強化學習平臺,大佬給出了天授的效能對比圖:

未來大佬團隊將從三個維度拓展“天授”平臺,演算法層面將更加全面支援地支援主流強化學習演算法(包括 model-based RL, imitation learning 等),任務層面將進一步支援包括 Atari、VizDoom 等複雜任務,效能層面將進一步提升平臺在模型效能、訓練速度、魯棒性等方面的核心指標,更好的為學術界服務。

6. 其他

例如知乎有人提到的 tf-agents(與工業緊密連線)、tensorlayer、百度 PaddlePaddle 釋出的 PARL 等,這裡不再拓展。

四、圖神經網路常用的開源框架和庫

1. 四大圖神經網路框架

  • deep graph library (DGL):支援 pytorch、tensorflow
  • pytorch geometric (PyG):基於 pytorch
  • ant graph machine learning system:螞蟻金服團隊推出的大規模圖機器學習系統
  • tf_geometric:借鑑 pytorch geometric,建立了 tensorflow 版本

2. CogDL :最近了解的,應該比較新吧

清華大學知識工程研究室推出了一個大規模圖表示學習工具包 CogDL,可以讓研究者和開發者更加方便地訓練和對比用於節點分類、鏈路預測以及其他圖任務的基準或定製模型。該工具包採用 PyTorch 實現,集成了Deepwalk、LINE、node2vec、GraRep、NetMF、NetSMF、ProNE 等非圖神經網路和GCN、GAT、GraphSage、DrGCN、NSGCN、GraphSGAN 等圖神經網路模型基準模型的實現。

與其他圖表示學習工具包相比,CogDL 具有以下特點:

  • 稀疏性:在具有數千萬節點的大規模網路上實現快速網路嵌入。
  • 任意性:能夠處理屬性化、多路和異構等不同圖結構的網路。
  • 並行處理:在多個 GPU 上實現不同種子和模型的並行訓練並自動輸出結果表格。
  • 可擴充套件性:輕鬆新增新的資料集、模型和任務並在所有現有的模型/資料集上測試。

3. Graph-Learn(原 AliGraph ):一個工業級的圖神經網路平臺

阿里巴巴提出的 AliGraph 涵蓋了從原始圖資料到 GNN 應用的整體鏈路。根據阿里巴巴的介紹:

系統層面:

  • 資料種類:支援同構圖、異構圖、屬性圖,有向圖、無向圖,可方便與任意分散式檔案系統對接。
  • 資料規模:支援千億級邊、十億級頂點的超大規模圖(原始儲存TB級)。
  • 運算元種類:支援幾十種可與深度學習相結合的圖查詢、取樣運算元,支援向量檢索,支援運算元按需自定義。
  • 效能指標:支援分鐘級超大規模圖構建,毫秒級多跳異構圖取樣,毫秒級大規模向量檢索。
  • 使用者介面:純 Python 介面,與 TensorFlow 構成一體化 IDE,開發成本相比一般TF模型無異。

演算法層面:

  • 已支援業界主流的 Graph Embedding 演算法,包括:DeepWalk、Node2Vec、GraphSAGE、GATNE等。

4. 其他

圖神經網路研究者和工業界在 Github 上開源了很多演算法的具體實現及其框架,包括GCN、GAT、Graph Nets框架等,這裡不再拓展。

五、知識圖譜常用的開源框架和庫

1. 開源的知識庫 

主要包括WikiData、DBPedia、WordNet、YAGO、ConceptGraph、BabelNet、CN-DBPeidia、OpenKG 等,這裡不再拓展。

2. 開源的構建工具

斯坦福大學醫學院生物資訊研究中心提出的Protege是基於Java語言開發的本體編輯和知識獲取軟體。Protege提供本體概念類、關係、屬性和例項的構建,不基於具體的本體描述語言,因此使用者可以在概念層次上構建領域本體模型。除了Protege,還有其他應用於知識圖譜構建的開源軟體,而且完整的知識圖譜構建還包括知識的儲存、知識融合等。我想後續單獨寫一個專題來介紹知識圖譜的構建問題,這裡不再拓展。

3. DGL-KE:亞馬遜提出的知識圖譜嵌入表示框架

亞馬遜 AI 團隊繼 DGL 之後,又開源了一款專門針對大規模知識圖譜嵌入表示的新訓練框架 DGL-KE,旨在能讓研究人員和工業界使用者方便、快速地在大規模知識圖譜資料集上進行機器學習訓練任務。相比於已有的開源框架,DGL-KE 的亮點如下:

  • 支援各種主流知識圖譜表示學習演算法,包括 TransE、ComplEx、DistMult、TransR、RESCAL、RotatE 等。
  • 已有開源框架中唯一支援多核 CPU,多卡 GPU,CPU-GPU 混合訓練,以及分散式訓練的知識圖譜嵌入表示框架。
  • 簡單易用,使用者無需編寫程式碼,直接將知識圖譜資料作為輸入即可。
  • 高效能且可擴充套件。

4. 其他

知識圖譜研究者和工業界在 Github 上應該開源了很多方法的具體實現及其框架,博主有看到再分享,這裡不再拓展。

六、智慧推薦常用的開源框架和庫

1. DeepMatch:用於廣告和推薦的深度召回匹配演算法庫

提供了若干主流的深度召回匹配演算法的實現,並支援快速匯出使用者和物品向量進行ANN檢索。非常適合同學們進行快速實驗和學習。

2. 其他

智慧推薦研究者和工業界在 Github 上應該開源了很多方法的具體實現及其框架,博主有看到再分享,這裡不再拓展。

 

如果你對智慧推薦感興趣,歡迎先瀏覽我的另幾篇隨筆:智慧推薦演算法演變及學習筆記、CTR預估模型演變及學習筆記 、基於圖模型的智慧推薦演算法學習筆記(含知識圖譜/圖神經網路,不止於智慧推薦) 

如果您對資料探勘感興趣,歡迎瀏覽我的另幾篇部落格:資料探勘比賽/專案全流程介紹、從中國農業銀行“雅典娜杯”資料探勘大賽看金融行業資料分析與建模方法

如果您對人工智慧演算法感興趣,歡迎瀏覽我的另一篇部落格:人工智慧新手入門學習路線和學習資源合集(含AI綜述/python/機器學習/深度學習/tensorflow)

如果你是計算機專業的應屆畢業生,歡迎瀏覽我的另外一篇部落格:如果你是一個計算機領域的應屆生,你如何準備求職面試?

如果你是計算機專業的本科生,歡迎瀏覽我的另外一篇部落格:如果你是一個計算機領域的本科生,你可以選擇學習什麼?

如果你是計算機專業的研究生,歡迎瀏覽我的另外一篇部落格:如果你是一個計算機領域的研究生,你可以選擇學習什麼?

如果你對金融科技感興趣,歡迎瀏覽我的另一篇部落格:如果你想了解金融科技,不妨先了解金融科技有哪些可能?

之後博主將持續分享各大演算法的學習思路和學習筆記:hello world: 我的部落格寫作思路