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


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

【補充說明】本文主要討論人工智能領域中常用的支持 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、阿里的X-Deep Learning 等,這里不再拓展。

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

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: 我的博客寫作思路


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM