- Python機器學習與量化投資
- 何海群
- 1645字
- 2019-07-25 11:38:02
1.3 機器學習:從忘卻開始
廣大初學者面對人工智能、機器學習這些“高大上”的概念,一方面迫切希望能夠掌握相關的知識,另外一方面,面對各種層出不窮的概念,往往會眼花繚亂,無所適從。
目前Python已經是人工智能、機器學習的行業標準語言,TensorFlow、Torch在2015年、2016年先后開放了Python語言接口。
scikit-learn是Python語言最重要的人工智能模塊庫,目前已經收入scikit套件,通常簡稱為sklearn。
還記得本書開頭的那張scikit-learn算法模塊圖嗎?不知道大家的第一感覺是什么,反正筆者看到此圖的第一反應是嚇呆了,也明白為什么這么多初學者對于人工智能望而生畏了。
筆者始終認為自己是一名軟件工程師,或者叫作程序員,也就是網絡上常說的“碼農”。
對于程序員而言:Talk is cheap,show me the code!
再多的理論,也比不上幾件成功的軟件作品,筆者雖然談不上有很多成功的軟件作品,但也寫過不少專業的程序,例如原生的OCR識別程序和英漢翻譯程序。
特別是英語翻譯軟件,筆者當時(1997年)的語料庫直接使用的是美劇字幕,幾千萬條的語料庫,多種語言素材,全部都有時間戳同步,基本無須任何成本,翻譯效果也還不錯。而當時同期國家項目組的語料庫,耗資巨大,也不過幾十萬條的數據量。
所謂原生程序,就是直接采用C語言、Delphi語言的標準函數庫,沒有任何第三方AI架構庫(如sklearn、TensorFlow等AI模塊庫)直接編程的程序。其間的難度,做過系統的程序員,或者閱讀過Linux、安卓系統、TensorFlow系統源碼的程序員就會明白。
這種基于原生的開發,最大的好處就是無論采用何種編程語言,何種理論算法,最終的底層代碼結構都是差不多的,就像電腦里面的CPU,算得再快,也不過是個加法器。
明白了這一點,再看sklearn的知識圖譜,雖然表面看起來非常煩瑣,但仔細梳理,核心還是只有一個:分類。
分好了類,其他的匹配、識別都是簡單的問題,只是貼上標簽,加上備注而已。
問題最終又回歸“一生二、二生三”當中。
國外也有專家認為,所有的人工智能、機器學習,本質上都是二元一次方程的尋優算法。
筆者在博客當中曾經也說過:
簡單來說,可以把人工智能、機器學習看成一個巨大的字符串查找算法,只不過這個算法當中的關鍵詞與被查找的字符串的大小非常龐大,趨于無限。
很多初學者面對人工智能、機器學習,往往連系統配置都玩不轉,最基本的“Hello程序”都無法運行。
在zwPython用戶手冊里面,筆者曾經說過,雖然很多人認為Python是面向對象的語言,但實踐表明,忘記OOP對象編程的概念,采用傳統的BASIC語言(面向過程)模式,學習效率可以提高10倍以上。
所以,學習人工智能,筆者的建議就是從忘卻開始,忘卻各種亂七八糟的概念。
忘記這些概念之后,大家會發現所謂的人工智能,不過是傳統的Python函數調用,而且只有為數不多的幾個函數,最簡單的案例當中,只需要2~3個函數。
需要說明的是,對于初學者而言,不要左顧右盼,MATLAB、R語言、Torch、TensorFlow、NLTK都想學習,反而什么都學不好。
對于初學者而言,不妨在入門階段就學sklearn。
sklearn模塊庫本身就是人工智能、機器學習的行業標準,該有的人工智能、機器學習經典算法全部都有,其他的模塊庫無非是在局部進行了某些優化。
至于人工智能的進階課程,大家不要急,在完成sklearn的機器學習課程后,再看TensorFlow、Torch、MXNet就不會有看天書的感覺了。
黑箱大法
在機器學習領域許多概念非常抽象拗口,如果大家無法理解,也屬于正常情況。
大部分初學者,即使克服種種困難,獨自完成了人工智能、機器學習開發平臺的配置,面對這些拗口的算法名稱,也會有崩潰的感覺。
這很正常,因為這些算法、名稱的背后都有非常專業的理論和模型,其學術價值和專業難度都很高。
不過,正如筆者前面所說,初學者對于人工智能、機器學習,最好從忘卻開始。
同樣,面對這些眼花繚亂的專業名稱術語,我們還是采用忘卻的模式,采用黑箱大法,大家無須糾結各種算法背后的理論,只將其看作一個個黑箱函數即可。

函數調用是Python語言的基本功能,能夠看到這里的讀者,想必對函數的調用、編程都非常熟了。
市場經濟,講究的是結果導向,對于大部分學習者而言,需要的也只是最終的結果數據。
采用這種黑箱模式,有了結果數據,再學習理論和算法,就有了具體的數據支持和更多的感性認識,學習過程也會事半功倍。
- .NET之美:.NET關鍵技術深入解析
- 深度學習經典案例解析:基于MATLAB
- Mastering Scientific Computing with R
- Rust Cookbook
- 深度強化學習算法與實踐:基于PyTorch的實現
- MongoDB權威指南(第3版)
- iOS編程基礎:Swift、Xcode和Cocoa入門指南
- Mastering Linux Security and Hardening
- 時空數據建模及其應用
- Troubleshooting Citrix XenApp?
- 創意UI Photoshop玩轉移動UI設計
- Python Programming for Arduino
- Kotlin入門與實戰
- Python AI游戲編程入門:基于Pygame和PyTorch
- SQL Server 2012數據庫管理與開發(慕課版)