機器學習,就用Python!五大專家詳解其優勢何在

AI科技大本營發表於2018-03-19

這裡寫圖片描述

編譯 | AI科技大本營(公眾號ID:rgznai100)
參與 | 林椿眄
編輯 | 明明

【AI科技大本營導讀】Python 語言是機器學習領域最優秀的程式語言之一,現在它正挑戰著 R 語言在學術界和研究領域的統治地位。那麼,為什麼 Python 語言在機器學習領域會如此受歡迎?Python 領域資深專家 Mike Driscoll 組織了一次訪談會,邀請了五位 Python 專家和機器學習社群人士,共同分析 Python 語言受歡迎的原因。營長將五位人士的觀點羅列如下。

“程式設計是一項社交活動 - Python社群已經意識到了這一點”

第一位:Python Twisted 網路程式設計框架創始人 Glyph Lefkowitz ( @glyph ) ,曾在 2017 年榮獲 PSF 社群服務獎

人工智慧是一個大而全的術語,通常代表著當前電腦科學研究中最先進的領域。

有一段時間,我們理所當然地認為那種用於基本的圖遍歷技術就是所謂的 AI 技術。那時候, Lisp 還是門強大的人工智慧語言,它的使用頻率高於其他語言很多,使用這門語言能讓研究人員更容易地解決相關的 AI / 機器學習問題。但現在,我認為 Python 已經在很大程度上取代了Lisp ,因為二者除了有相似的高層次屬性外, Python 還擁有出色的第三方庫,以及與作業系統完美地整合。

Lisp 的使用者們可能會反對我的觀點,所以我應該說清楚。我沒有對 Python 在表達層次中的位置做出精確地陳述,只是說 Python 和 Lisp 都處於相同的語言類別中,在處理諸如垃圾回收,記憶體安全,模組,名稱空間和高階資料結構等方面的問題時有著相似的特性。

在更具體的機器學習層面,也就是大家最近談論的 AI ,我認為兩種語言的差別就更加明顯了。Python 中的 NumPy 庫及其強大的處理機制的存在,使得研究人員可以對高階別的內容進行研究,並進行高效能的資料處理。如果不能擁有強大的數字處理功能,那機器學習系統是沒有任何意義的。

Python 社群致力於為非程式設計師提供友好的介紹和作業系統的支援,這也確實增加了其在資料科學和科學計算等相關學科中的應用。各種領域的工作人員,包括統計人員、天文學家、生物學家和商業分析師等,也都已經成為 Python 程式設計師,並針對各自領域工作的需求改進並擴充了Python 工具包的使用。程式設計也逐漸成了一種社交活動,這在 JavaScript 社群和 Python 社群都得到了充分的證明和認可。

此外,由於機器學習是一個整合度特別高的學科,任何AI / 機器學習系統都需要從現實世界中提取大量的源資料並作為訓練資料或系統輸入,因此 Python 自帶的豐富的依賴庫能夠幫助使用者更好地訪問和轉換資料。

“Python允許使用者專注於解決現實問題”

第二位:PSF 社群的聯合創始人及 eGenix 的執行長 Marc-Andre Lemburg ( @malemburg )

對於沒有受過電腦科學專業學習的科學家來說,Python 也是非常容易理解。當你嘗試驅動所需要研究的依賴庫時,Python 能幫助你消除了許多必須處理的複雜性問題。

在 Numeric (現在是 NumPy ) 開始開發之後,增加了 IPython notebook (現在是 Jupyter notebook )功能, matplotlib 和其他的視覺化工具能夠讓我們更直觀地瞭解資料分佈。Python 讓資料科學家去思考解決問題的方法,而不是單純提供這些解決方案所需的技術。

與其他領域一樣,Python 也是一門理想的整合語言,它將各種技術繫結在一起,Python 允許使用者關注問題的本身,而不是把時間花在實現細節上。除了為使用者提供更方便的功能之外,Python 還是一個理想的粘合平臺,為開發人員與外部庫的低層次整合人員之間搭建連線。這主要是由於 Python 可以通過一個完整的 C API 來訪問。

“Python對於數學及統計學專業的人員來說是非常容易使用的”

第三位:研究者;《 Python Machine Learning 》一書的作者 Sebastian Raschka ( @rasbt )

我認為在 AI / 機器學習領域,Python 語言受歡迎主要有兩個原因,且這兩個原因是非常相關的。

首先,Python 程式碼非常容易閱讀和學習。

我認為,大多數從事機器學習和人工智慧的研究人員都希望以最方便的方式來實現自己的想法。他們的重點是研究和應用程式的開發,程式設計只是實現這個想法的工具。程式語言的學習越輕鬆,入門門檻越低,就會更受初學者的喜愛。同樣,這也適用於數學及統計學相關人員學習。

不僅如此,Python 程式碼可讀極強,這有助於保持最新的機器學習和 AI 的現狀,例如,實現AI / 機器學習的新思路往往需要相對複雜的演算法,而在閱讀相關程式碼時,語言越透明,可讀性越好,程式碼的除錯也越容易。

第二個主要原因是, Python 本身是一種非常易於訪問的語言,而且開發者還在 Python 中封裝了很多優秀的依賴庫,這也使得我們的工作變得更容易。沒有人願意花時間從頭開始重新實現基本演算法 ( 除非是研究機器學習和人工智慧的專業人士 ) 。大量 Python 依賴庫的存在將幫助我們專注於演算法的實現,這比“重新發明輪子”來的更高效。

此外,Python 也是用於實現更高效的 C / C ++ 演算法及 CUDA / cuDNN 的最好的“膠水”語言,這就是為什麼現有的機器學習 / 深度學習庫能夠在 Python 中高效執行的原因,這對於機器學習 / AI 領域的工作也是非常重要的。

總而言之,我會說 Python 是一種強大的語言,它可以讓研究人員和從業者更專注於解決機器學習 / AI領域的相關問題,這是其他語言所無法做到的。

“Python更專注於科學計算”

第四位:ThoughtWorks 的技術長及PSF社群會員 Luciano Ramalho ( @ramalhoorg )

在我看來,Python 之所以能夠如此受歡迎的最重要和最直接原因是其 NumPy 和 SciPy 庫能夠支援 scikit-learn 這樣的專案,這幾乎是目前解決機器學習問題所需的標準配置。

首先,建立 NumPy,SciPy,scikit-learn 和其他庫的原因是因為 Python 的一些功能使其更專注於科學計算。此外,Python 有一個簡單而一致的語法,可以讓非軟體工程師人員更容易使用這門程式設計工具。

另一個原因是 Python 的運算子過載功能,能使程式碼可讀性更好,簡潔性更高。此外,Python 的緩衝協議 ( PEP 3118 ) ,是外部庫在處理類似陣列的資料結構時與 Python 進行高效互動的標準。最後,Python 為科學計算提供了豐富的依賴庫和全面的作業系統,這也促進了更多的資料科學家使用。

“Python 有著嚴格而一致的風格”

第五位:Red Hat 的高階軟體工程師;SQLAlchemy 的開發者 Mike Bayer (@zzzeek)

在 AI / 機器學習領域,我們正嘗試開發我們的數學和演算法。我們將希望保留和優化的演算法封裝打包成依賴庫,如 scikit-learn 。然後我們繼續重複這個過程,並分享一些關於如何組織和思考資料的筆記。

高階的指令碼語言對於人工智慧和機器學習是非常適合的,因為我們可以快速遷移並進行改動,我們建立的大部分程式碼代表的是實際問題中相關的數學知識和資料結構,而不是所謂的程式碼模板,因此我們可以根據實際問題的需要,嘗試更改指令碼的程式碼來解決我們的問題。

像 Python 這樣的指令碼語言更適合 AI / 機器學習的工作,因為它嚴格而一致的語法風格。每個 Python 使用者都可以更好地理解對方的 Python 程式碼,而其他語言的語法有可能會導致混淆和不一致的程式設計範例,這就是 Python 較其他程式語言的優勢所在。

此外,IPython notebook 等工具的可用性使得我們可以在全新的平臺上重複並分享我們的數學和演算法工作。Python 能夠突出我們所要完成的工作核心,還能夠最小化計算機指令的所有內容,這一切過程 Python 都能自動完成,不需要你考慮任何問題,這也是 Python 語言強大之處。

作者 | Rich Gall
原文連結

這裡寫圖片描述
這裡寫圖片描述

相關文章