本文作者 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/
自 雷鋒網