官术网_书友最值得收藏!

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語言的基本功能,能夠看到這里的讀者,想必對函數的調用、編程都非常熟了。

市場經濟,講究的是結果導向,對于大部分學習者而言,需要的也只是最終的結果數據。

采用這種黑箱模式,有了結果數據,再學習理論和算法,就有了具體的數據支持和更多的感性認識,學習過程也會事半功倍。

主站蜘蛛池模板: 冕宁县| 青龙| 沾益县| 云林县| 博湖县| 乳山市| 特克斯县| 江北区| 木里| 余姚市| 望奎县| 延寿县| 阿克陶县| 鲁甸县| 屯昌县| 集安市| 东乡| 精河县| 枣庄市| 黔江区| 山阳县| 萨迦县| 武义县| 盐边县| 北辰区| 绿春县| 九江市| 中西区| 华安县| 台中县| 怀宁县| 诸城市| 图片| 沭阳县| 德昌县| 奎屯市| 繁昌县| 高州市| 方山县| 宣城市| 原阳县|