2018 年度GtiHub 開源項目TOP 25:數據科學& 機器學習
本文作者Pranav Dar 是Analytics Vidhya的編輯,對數據科學和機器學習有較深入的研究和簡介,致力於為使用機器學習和人工智能推動人類進步找到新途徑。2018這一年中,作者在每個月都會發布一份開源項目月度推薦榜單,而本文則是對全年開源項目的盤點和總結。
前沿
關於託管代碼、與團隊成員合作以及充當展示個人寫代碼技能的「在線簡歷」,最好的平台是哪個?問及任何一位數據科學家,他們都會讓你去GitHub。近年來,GitHub 作為一個真正具有變革性的平台,已經改變了我們託管甚至寫代碼的方式。
但這還不是全部。此外,它還是一個學習平台。如果你問怎麼學習的話,我可以給你一個暗示——開源項目!
世界領先的科技公司通過在GitHub 上發布其熱門算法的代碼,對項目進行開源。2018 年,在Google 和Facebook 等公司的帶領下,這類開源項目大幅增加。其中最好的那部分開源項目,寫代碼的研究者還提供了預訓練模型,從而讓你我這些人不必再浪費時間從頭開始創建高難度的模型。
同時,針對編碼者和者的熱門開源項目也很多——包括備忘單、鏈接、電子書、研究論文鏈接以及其他等資源。無論你在你的專業領域處於哪個等級(初學者、中級以及高級),你總可以在GitHub上找到可以學習的新東西。
對於數據科學的很多子領域來說,2018 年是不同凡響的一年,這個我下面馬上就會講到。隨著ULMFiT、BERT 等項目在GitHub 上進行開源,自然語言處理(NLP)迅速成為社區中談論最多的領域。我致力於將自己最大的努力貢獻給這麼棒的GitHub 社區,在這一年中,我精心挑選了每位數據科學家都應該了解的TOP 5 開源項目,並整理成了月度榜單系列。你可以點擊下面的鏈接,前往查看完整榜單:
- 一月份:https://www.analyticsvidhya.com/blog/2018/02/top-5-github-repositories-january-2018/
- 二月份:https://www.analyticsvidhya.com/blog/2018/03/top-5-github-repositories-february-2018/
- 三月份:https://www.analyticsvidhya.com/blog/2018/04/top-7-github-repositories-march-2018/
- 四月份:https://www.analyticsvidhya.com/blog/2018/05/top-5-github-reddit-data-science-machine-learning-april-2018/
- 五月份:https://www.analyticsvidhya.com/blog/2018/06/top-5-github-reddit-data-science-machine-learning-may-2018/
- 六月份:https://www.analyticsvidhya.com/blog/2018/07/top-github-reddit-data-science-machine-learning-june-2018/
- 七月份:https://www.analyticsvidhya.com/blog/2018/08/best-machine-learning-github-repositories-reddit-threads-july-2018/
- 八月份:https://www.analyticsvidhya.com/blog/2018/09/best-machine-learning-github-repositories-reddit-threads-august-2018/
- 九月份:https://www.analyticsvidhya.com/blog/2018/10/best-machine-learning-github-repositories-reddit-threads-september-2018/
- 十月份:https://www.analyticsvidhya.com/blog/2018/11/best-machine-learning-github-repositories-reddit-threads-october-2018/
- 十一月份:https://www.analyticsvidhya.com/blog/2018/12/best-machine-learning-github-repositories-reddit-threads-november-2018/
這些文章的部分內容會和我盤點的2018 年AI 和ML 領域最大突破文章有所重合,大家也可以前往以下地址閱讀這篇文章——它從根本上來說是一份盤點了該領域主要進展的榜單,我認為該領域的每個人都應該有所了解。作為額外福利,文中還有來自專家們的預測——大家應該都不想錯過吧。
https://www.analyticsvidhya.com/blog/2018/12/key-breakthroughs-ai-ml-2018-trends-2019/
現在,準備好去探索新的項目,並努力成為2019 年的數據科學之星吧。繼續向下滾動,大家點擊每個項目後面的鏈接就可以前往GitHub 的代碼庫了。
- 本文將覆蓋到的話題
- 工具和框架
- 計算機視覺
- 生成式對抗網絡(GANs)
- 其他深度學習項目
- 自然語言處理(NLP)
- 自動的機器學習(AutoML)
- 強化學習
工具和框架
讓我們開始來看看工具、開發庫和框架方面的最佳開源項目。由於我們在討論的是一個軟件倉庫平台,先講這部分似乎才是正確的打開方式。
科技正在快速發展,同時計算成本也比之前更低了,所以現在有一個接一個大量的開源項目可供我們使用。現在,可以被稱作機器學習編碼的黃金時代嗎?這是一個開放的問題,但是我們都認同的一件事是,現在是做一個數據科學領域的編程員的好時期。在這個部分(以及整篇文章),我都在嘗試讓編程語言盡可能地多樣化些,不過Python 無法避免地佔據主導地位。
ML.NET
如果你們這些.NET開發者們想要學一點機器學習知識來補充現有的技能,你會怎麼做?現在就有一個完美的開源項目可以助你開始實施這一想法!這個完美的開源項目就是微軟的一個項目——ML.NET,它是一個開源的機器學習框架,讓你用.NET就可以設計和開發模型。
你甚至可以將現有的機器學習模型集成到你的應用程序中,而完全不要求你切確地知道怎樣開發機器學習模型。ML.NET實際上已被應用於多個微軟產品中,例如Windows、 Bing搜索、 MS Office等等。
ML.NET 可以在Windows、Linux 以及MacOS 上運行。
TensorFlow.js
在瀏覽器中實現機器學習!幾年前,這還只是一個幻想,而現在成為了一個震撼人心的現實。這一領域的大多數人都與我們最愛的IDEs 牢不可分,而TensorFlow.js 則有可能改變我們的習慣。自今年早些時候發布以來,它就成為一個非常受歡迎的開源項目,並且它的靈活性還在繼續給人帶來驚喜。
正如開源項目所介紹的,TensorFlow.js 主要有三個重要特徵:
- 瀏覽器自身可以開發機器學習和深度學習模型;
- 可以在瀏覽器中運行現有的TensorFlow 模型;
- 同時可以對這些現有的模型進行重新訓練或者微調。
如果你熟悉Keras,那你也會對它的高級層API 非常熟悉。目前在GitHub 的開源項目中,有大量對外開放的示例,你可前往社區查看,來活躍一下你的學習曲線。
PyTorch 1.0
對於PyTorch 來說,2018 年是非常精彩的一年。它贏得了全球數據科學家和機器學習研究者們的心,現在他們則不斷為PyTorch 貢獻項目。PyTorch 易於理解、靈活且被應用於眾多高知名度的研究中(本文接下來會講到)。PyTorch 最新版本(PyTorch 1.0)已經規模化地賦能了大量Facebook 產品和服務,包括每天進行6 百億次文本翻譯。如果你想知道什麼時候開始涉足PyTorch,那就是現在。
如果你是這一領域的初學者,可以先去看看Faizan Shaikh寫的PyTorch入門指南:https://www.analyticsvidhya.com/blog/2018/02/pytorch-tutorial/
Papers with Code
嚴格來說,Papers with Code 這個開源項目並不是一個工具或框架,但是對於數據科學家來說,它就是一個「金礦」。我們大多數人都在努力閱讀論文,然後對論文提出的方法進行實操(至少我是這樣做的)。大量的活動部件似乎無法在我們的機器上工作。
這就是需要用到「Papers with Code」的地方。如名稱所示,它們對於在最近6年左右發布的重要論文都有代碼實現。這一論文集令人興奮,你會發現自己都忍不住讚歎它。它們甚至將在NIPS (NeurIPS) 2018中展示的論文代碼也增加上去了。現在就去使用Papers with Code吧。
計算機視覺
得益於計算成本的下降和頂級研究者們所帶來的突破的激增(一些事件顯示這兩者可能是互相關聯的),現在越來越多人可以使用深度學習進行研究了。而在深度學習這一領域,計算機視覺項目是最普遍——在這一章節中所提到的大部分開源項目都包含了一種計算機視覺技術或另一種計算機視覺技術。
現在,計算機視覺可以說是深度學習最熱門的領域,並且在可見的未來依舊會這麼熱門。無論是目標檢測,還是姿態估計,幾乎所有的計算機視覺任務都有相對應的開源項目。現在是了解這些進展的最佳時期—不久後,你或許就可以獲得大量的工作機會。
Facebook 的Detectron
在2018 年初被發佈時,Detectron 就曾掀起千層浪。它由Facebook 人工智能研究院(FAIR)開發,實現了最先進的目標檢測框架。Detectron 採用(驚喜,驚喜!)Python 語言編寫代碼,已經幫助實現了多個項目,包括DensePose(之後我們也會在文中提到)。
這個開源項目包括了代碼以及70+個預訓練模型。與這麼好的機會失之交臂,就問你同不同意?
英偉達的vid2vid 技術
圖像的目標檢測現在做得很不錯,那在視頻中進行目標檢測呢?不僅如此,我們能否能延展這一概念以及將某個視頻的樣式轉換為另一種呢?是的,我們可以!這是一個非常酷的概念並且英偉達已經非常慷慨地發布了PyTorch 實現,讓大家盡情嘗試。
這個開源項目包括介紹這一技術的視頻、完整的研究論文以及代碼。英偉達的示例中,應用了可公開註冊下載的Cityscapes dataset(下載地址:https://www.cityscapes-dataset.com/)。這是我自2018年以來個人最喜歡的開源項目。
用18 秒在ImageNet 數據集上訓練出一個模型
用18 秒時間訓練一個深度學習模型?與此同時還不使用高端的計算資源?相信我,現在可以實現了。Fast.ai 公司的Jeremy Howard 和他的學生團隊在熱門的ImageNet 數據集上創建了一個模型,表現甚至超過了Google 的方法。
我建議你至少過一下這個開源項目,了解一下這些研究者是怎樣構建代碼的。並非每個人都擁有多個GPU(有的人甚至一個也沒有),因此對於「小蝦米」來說,這個開源項目意義重大。
目標檢測論文的完整集
開源地址:https://github.com/hoya012/deep_learning_object_detection
這是另一個研究論文集開源項目,它往往能幫助你了解所選擇的研究課題在多年時間跨度裡發生了怎樣的演變,同時這個一站式歷史記錄正好可以幫助你了解目標檢測在多年時間裡經歷的變化。它完整地收集了2014 年至今的論文,甚至也盡可能地收集了每篇論文對應的代碼。
上圖表明了目標檢測框架在過去五年時間裡經歷了怎樣的演變和轉變。很神奇,不是嗎?圖中甚至包括了2019 年的工作,所以你有的忙了。
Facebook 的DensePose
讓我們將注意力轉向姿態檢測領域。我在今年了解到這一概念本身,並且從此以後深為著迷。上面的圖像抓住了這個開源項目的精華——戶外場景下的密集人體姿勢評估。
該開源項目包含了訓練和評估DensePose-RCNN 模型的代碼,以及可用於可視化DensePose COCO 數據集的筆記。這是一個開啟姿態評估學習的好地方。
Everybody Dance Now—姿態評估
上圖(截取自視頻)實在是激起了我的興趣。我在八月份的盤點文章中就寫到了該研究論文的開源項目,並繼續佩服這項技術。這項技術將不同視頻中人體目標間的動作進行轉移。我提到的這個視頻也可以在開源項目中看到——它的效果超越你的想像!
這個開源項目進一步包含了這一方法的PyTorch 實現。這一方法能夠獲取和復制的複雜細節的數量是驚人的。
生成式對抗網絡(GANs)
我確定你們大多數人一定接觸過GAN的應用(即使你們當時可能並沒有意識到是它)。GAN,或者說生成式對抗網絡由Ian Goodfellow於2014年提出,從那以後就變得熱門。它們專用於執行創造性的任務,尤其是藝術性的任務。大家可前往https://www.analyticsvidhya.com/blog/2017/06/introductory-generative-adversarial-networks-gans/查看Faizan Shaikh所寫的介紹指南,文中還包括了使用Python語言的實現方法。
在2018 年,我們看到了太多基於GAN 的項目,因此我也想用一個獨立章節來介紹GAN 相關的開源項目。
Deep Painterly Harmonization
開源地址:https://github.com/luanfujun/deep-painterly-harmonization
首先從我最喜愛的一個開源項目講起。我希望你花點時間僅僅來欣賞一下上面的圖像。你能分辨出哪張是由人類做的,哪張是由機器生成的嗎?我確定你不能。這裡,第一個畫面是輸入圖像(原始的),而第三個畫面是由這項技術所生成的。
很驚訝,是嗎?這個算法將你選擇的外部物體添加到了任意一張圖像上,並成功讓它看上去好像本來就應該在那裡一樣。你不妨查看這個代碼,然後嘗試親自到一系列不同的圖像上去操作這項技術。
Image Outpainting
如果我給你一張圖像,並讓你通過想像圖像在圖中完整場景呈現時的樣子,來擴展它的畫面邊界,你會怎麼辦?正常來說,你可能會把這個圖導入到某個圖像編輯軟件裡進行操作。但是現在有了一個非常棒的新軟件——你可以用幾行代碼就實現這項操作。
這個項目是斯坦福大學「Image Outpainting」論文(論文地址:https://cs230.stanford.edu/projects_spring_2018/posters/8265861.pdf,這是一篇無比驚艷並配有示例說明的論文——這就是大多數研究論文所應有的樣子!)的Keras實現。你或者可以從頭開始創建模型,或者也可以使用這個開源項目作者所提供的模型。深度學習從來不會停止給人們帶來驚喜。
可視化和理解GANs
如果你至今還沒有掌握GANs,不妨嘗試一下這個開源項目。這個項目由麻省理工人工智能實驗室(MIT CSAIL)提出,可以幫助研究者可視化和理解GANs。你可以通過觀察或者操作GAN 模型的神經,來探究它學到了什麼。
我建議你可以去查看一下MIT項目的官方主頁(https://gandissect.csail.mit.edu/),上面有大量的資源(包括視頻demo),可以讓你對這個概念更加熟悉。
GANimation
這個算法可以讓你改變圖像中任何一個人的面部表情,讓人歡喜也讓人愁。上面在綠框中的圖像是原始圖像,其餘的都是由GANimation 生成的圖像。
開源項目鏈接中包含了入門指南、數據準備資源、預備知識以及Python 代碼。正如論文作者所提到的,不要將它用於不道德的目的。
英偉達的FastPhotoStyle
FastPhotoStyle 這個開源項目跟前面提到的Deep Painterly Harmonization 非常像。但值得一提的是,它來源於英偉達本身。正如你在上圖中所看到的,FastPhotoStyle 算法需要兩項輸入——一個樣式圖片和一個內容圖片。這個算法之後會在這兩項輸入的其中一條路徑上運行,來產生輸出——它或者使用逼真的圖像格式化代碼,或者使用語義標記地圖(semantic label maps)。
其他深度學習開源項目
計算機視覺領域可能讓深度學習的其他工作都黯然失色,但是我還是想列出計算機視覺之外的幾個有代表性的開源項目。
英偉達的WaveGlow
音頻處理是深度學習開始做出成績的另一領域。不局限於生成音樂,你也可以完成音頻分類、指紋識別、分割、標註等任務。現在該領域還有很多可以探索的空間,誰知道呢,也許你可以使用這些開源項目來走上人生巔峰。
這裡有兩篇非常直觀的文章,可以幫助你熟悉這項開源工作:
- 《使用深度學習開始進行音頻數據分析(附案例研究)》,Getting Started with Audio Data Analysis using Deep Learning (with case study):https://www.analyticsvidhya.com/blog/2017/08/audio-voice -processing-deep-learning/
- 《10個音頻處理任務讓你開始深度學習應用(附案例研究)》,10 Audio Processing Tasks to get you started with Deep Learning Applications (with Case Studies):https://www.analyticsvidhya.com/blog/2018 /01/10-audio-processing-projects-applications/
重新回到英偉達這裡。WaveGlow 是一個基於流的網絡,能夠生成高質量的音頻。本質上,它是一個面向語音合成的單網絡。
這個開源項目包括WaveGlow 的PyTorch 實現,以及可供下載的預訓練模型。同時,研究者也在上面了列下了使用步驟。如果你想從頭開始訓練自己的模型,可以遵照使用步驟。
AstroNet
想要發現你自己的行星?AstroNet 這個開源項目也許被高估了些,但是確實能讓你離夢想更近。2017 年12 月,「谷歌大腦」團隊就通過應用AstroNet 發現了兩個新的行星。AstroNet 是一個專門用來處理天文數據的深度神經網絡,它體現了深度學習更廣泛的應用,同時也是一個真正的里程碑式的進展。
現在,這項技術的研發團隊已經對運行AstroNet 的整個代碼進行了開源(提示:這個模型基於CNNs!)。
VisualDL – 可視化深度學習模型
誰不喜歡可視化?但是想像深度學習模型怎麼運行,倒是有點嚇人。不過VisualDL 通過設計特定的深度學習任務,可以較好地減輕這些挑戰。
針對可視化任務,VisualDL 目前支持以下幾個部分:
- 數量
- 柱狀圖
- 圖像
- 音頻
- 圖表
- 高維的
自然語言處理(NLP)
很驚訝看到NLP 排在榜單這麼後的位置?這主要是因為我想在本文對幾乎所有重要的開源項目盤點一番。在NLP 之前的那些開源項目,我都大力推薦大家前往查看。在NLP 部分,我提到的框架包括ULMFiT、谷歌的BERT、 ELMo 以及Facebook 的PyText。我會簡要提一下BERT 以及幾個其他的開源項目,因為我發現它們非常有用。
谷歌的BERT
NLP 這部分,我就不得不提BERT 了。谷歌AI 的這個開源項目為NLP 領域帶來了突破,贏得了NLP 愛好者以及專家等人的強烈關注。繼ULMFiT 和ELMo 之後,BERT 以它的性能戰勝了比賽,在11 項NLP 任務中獲得最佳成績。
除了我在上面附上的谷歌開源項目的官方鏈接,BERT的PyTorch實現(查看地址:https://github.com/huggingface/pytorch-pretrained-BERT)也值得前往一看。至於它是否讓NLP步入了一個新時代,我們不久後就會知曉了。
MatchZoo
MatchZoo 能幫助你知道模型在某個基准上表現得怎麼樣。對於NLP,尤其是深度文本匹配模型,我發現MatchZoo 工具包非常靠譜。MatchZoo 可應用的其他相關任務包括:
- 對話
- 問答
- 文本蘊涵
- 信息檢索
- 釋義識別
MatchZoo 2,0 版本目前還在開發中,因此不妨期待一下這個已經很有用的工具箱再增加更多新的功能。
NLP Progress
這個開源項目是由Sebastian Ruder 一人開發的,其目標是追踪NLP 領域的最新進展,它包含了數據集和最先進的模型。
任何一項你曾經想進行更過了解的NLP 技術——現在就有一個擺在你面前的好機會。這個開源項目涵蓋了閱讀理解以及詞性標註等傳統和核心的NLP 任務。即使你只是隱約對這個領域感興趣,也一定要標星/標記好這個開源項目。
自動的機器學習(AutoML)
2018 年,也是AutoML 輝煌的一年。隨著工業界將機器學習集成到它們的核心工作中,其對數據科學專家的需求也在持續上升。目前,供給和需求間也存在著較大的差距,而AutoML 工具則有可能填補這個差距。
這些工具為那些缺乏數據科學專業知識的人所設計。雖然這些工具之外還有一些其他很好的工具,但是它們大部分的價格都要高得多——大多數個人負擔不起。因此,2018 年,我們這個很棒的開源社區前來支援大家,同時還帶來了兩個熱門的開源項目。
Auto Keras
幾個月前,Auto Keras 一經發布就引起了轟動。並且它必然會引起轟動。長期以來,深度學習被視為一個專業性非常強的領域,所以一個能夠自動完成大部分任務的開發庫自然頗受歡迎。引用他們官網上的話:「Auto Keras 的最終目標是為僅擁有一定數據科學知識或機器學習背景的行業專家提供可輕鬆應用的深度學習工具」。
你可以通過下方的種子來安裝這個開發庫:
這個開源項目還包含了一些簡單的示例,可以讓你了解Auto Keras 的整個工作流程。
谷歌的AdaNet
AdaNet 是一個自動學習高質量模型的框架,對編程專業知識沒有要求。由於AdaNet 由谷歌開發,因此這一框架基於TensorFlow。你可以使用AdaNet 創建所有的模型,同時可以擴展它的應用去訓練神經網絡。
強化學習
因為我在2018 年的綜述文章中盤點過一些強化學習開源項目,因此這一章節的介紹會相當簡單。我希望在包括RL 在內的這些章節中,能夠促進大家對我們這個社區的討論,也希望能過加速這一領域的研究進程。
首先,你可以先去看一下OpenAI的Spinning Up開源項目(項目地址:https://github.com/openai/spinningup),它是一個針對初學者的完全教育型的開源項目。然後可以去看看谷歌的dopamine開源項目(項目地址:https://github.com/google/dopamine),它是一個研究框架,用來加速這一仍舊處於初步發展階段的領域的研究。接下來,讓我們也了解一下其他的開源項目。
DeepMimic
如果你在社交媒體上關注了一些研究者,你一定在視頻中看到過上面的圖像。一個棍形人在地面上奔跑,或者嘗試站起來,或者其他一些動作。親愛的讀者,這些就是(人體)動作中的強化學習。
這裡有一個強化學習的標誌性示例——訓練仿真人形來模仿多個動作技能。上面開源項目的鏈接頁麵包括代碼、示例以及循序漸進的練習指南。
Reinforcement Learning Notebooks
開源地址:https://github.com/Pulkit-Khandelwal/Reinforcement-Learning-Notebooks
這個開源項目是一個強化學習算法集,這些算法來自Richard Sutton 和Andrew Barto 所寫的書以及其他研究論文,它們在開源項目中以Python notebooks 的格式呈現。
正如該開源項目的開發者所提到的,如果你在學習的過程中同時進行實操練習,你就能真正學會它。這個項目比較複雜,如果不進行實操或者僅僅像讀小說一樣去閱讀資源內容,你將一無所獲。
via:https://www.analyticsvidhya.com/blog/2018/12/best-data-science-machine-learning-projects-github/