曾經也只是一個只懂 ACM 競賽相關算法的普通程序員,誤打誤撞接觸到了數據挖掘,之后才開始系統地了解機器學習相關的知識,如今已經基本走上了正軌,開始了走向 Data Scientist 的征途。但是最高贊的一篇回答居然是關于 Deep Learning 的,這感覺就想是有人問我這山地車好高級,能不能教我怎么換擋,我告訴他說,這車太low了,我教你開飛機吧。我想即使目前開飛機(Deep Learning)的門檻一再降低,如果你沒有一個優秀的基礎,即使是老司機也是容易翻車的。 簡單認真回答一下,首先作為一個普通程序員,C++ / Java / Python 這樣的語言技能棧應該是必不可少的,其中 Python 需要重點關注爬蟲、數值計算、數據可視化方面的應用,主要是:
推薦閱讀:《集體智慧編程》、Andrew Ng — Machine Learning Coursera from Stanford
此時的你或許已經有一塊可以用的敲門磚了,但離工業界實際應用還有比較大的距離,主要差距就在于 Feature Engineering,這也是我在面試考察有經驗的人面前比較注重的點。這一塊中有一些比較基礎的知識點,簡單羅列如下:
可用性評估:獲取難度、覆蓋率、準確率
特征清洗:清洗異常樣本
采樣:數據不均衡、樣本權重
單個特征:無量綱化(標準化、歸一化)、二值化、離散化、缺失值(均值)、啞編碼(一個定性特征擴展為N個定量特征)
數據變換:log、指數、Box-Cox 降維:主成分分析PCA、線性判別分析LDA、SVD分解
特征選擇:Filter(相關系數、卡方檢驗)、Wrapper(AUC、設計評價函數A*、Embedded(L1-Lasso、L2-Ridge、決策樹、DL)
衍生變量:組合特征 特征監控:監控重要特征,fa特征質量下降放一張公司內部算法培訓關于特征工程的 PPT,僅供學習參考:
再往后你就可以在技能樹上點幾個酷炫的了:
提升
SVM
聚類
EM算法
主題模型
詞向量
HMM
數據計算平臺
可以看到,不管你是用 TensorFlow 還是用 Caffe 還是用 MXNET 等等一系列平臺來做高大上的 Deep Learning,在我看來都是次要的。想要在這個行業長久地活下去,內功的修煉要比外功重要得多,不然會活得很累,也很難獲得一個優秀的晉升空間。
最后,關注你所在行業的最新 paper,對最近的算法理論體系發展有一個大致印象,譬如計算廣告領域的幾大經典問題:
目的
本文的目的是給出一個簡單的,平滑的,易于實現的學習方法,幫助 “普通” 程序員踏入AI領域這個門。這里,我對普通程序員的定義是:擁有大學本科知識;平時工作較忙;自己能獲取的數據有限。因此,本文更像是一篇 “from the scratch” 的AI入門教程。
AI領域簡介
AI,也就是人工智能,并不僅僅包括機器學習。曾經,符號與邏輯被認為是人工智能實現的關鍵,而如今則是基于統計的機器學習占據了主導地位。最近火熱的深度學習正是機器學習中的一個子項。目前可以說,學習AI主要的是學習機器學習。但是,人工智能并不等同于機器學習,這點在進入這個領域時一定要認識清楚。關于AI領域的發展歷史介紹推薦看周老師寫的《機器學習簡介》。下面一個問題是:AI的門好跨么?其實很不好跨。我們以機器學習為例。在學習過程中,你會面對大量復雜的公式,在實際項目中會面對數據的缺乏,以及艱辛的調參等。如果僅僅是因為覺得這個方向未來會“火”的話,那么這些困難會容易讓人放棄。考慮到普通程序員的特點,而要學習如此困難的學科,是否就是沒有門路的?答案是否定的。只要制定合適的學習方法即可。
學習方法
學習方法的設定簡單說就是回答以下幾個問題:我要學的是什么?我怎樣學習?我如何去學習?這三個問題概括說就是:學習目標,學習方針與學習計劃。學習目標比較清楚,就是踏入AI領域這個門。這個目標不大,因此實現起來也較為容易。“過大的目標時就是為了你日后放棄它時找到了足夠的理由”。學習方針可以總結為 “興趣為先,踐學結合”。簡單說就是先培養興趣,然后學習中把實踐穿插進來,螺旋式提高。這種方式學習效果好,而且不容易讓人放棄。有了學習方針以后,就可以制定學習計劃,也稱為學習路線。下面就是學習路線的介紹。
學習路線
我推薦的學習路線是這樣的,如下圖:
圖1 AI領域學習路線圖
這個學習路線是這樣設計的:首先了解這個領域,建立起全面的視野,培養起充足的興趣,然后開始學習機器學習的基礎,這里選擇一門由淺入深的課程來學習,課程最好有足夠的實驗能夠進行實戰。基礎打下后,對機器學習已經有了充足的了解,可以用機器學習來解決一個實際的問題。這時還是可以把機器學習方法當作一個黑盒子來處理的。實戰經驗積累以后,可以考慮繼續進行學習。這時候有兩個選擇,深度學習或者繼續機器學習。深度學習是目前最火熱的機器學習方向,其中一些方法已經跟傳統的機器學習不太一樣,因此可以單獨學習。除了深度學習以外,機器學習還包括統計學習,集成學習等實用方法。如果條件足夠,可以同時學習兩者,一些規律對兩者是共通的。學習完后,你已經具備了較強的知識儲備,可以進入較難的實戰。這時候有兩個選擇,工業界的可以選擇看開源項目,以改代碼為目的來讀代碼;學術界的可以看特定領域的論文,為解決問題而想發論文。無論哪者,都需要知識過硬,以及較強的編碼能力,因此很能考察和鍛煉水平。經過這個階段以后,可以說是踏入AI領域的門了。“師傅領進門,修行在個人”。之后的路就要自己走了。
下面是關于每個階段的具體介紹:
領域了解
在學習任何一門知識之前,首先第一步就是了解這個知識是什么?它能做什么事?它的價值在什么地方?如果不理解這些的話,那么學習本身就是一個沒有方向的舟,不知道駛向何處,也極易有沉船的風險。了解這些問題后,你才能培養出興趣,興趣是最好的引路人,學習的動力與持久力才能讓你應付接下來的若干個階段。關于機器學習是什么,能做什么,它與深度學習以及人工智能的關系
知識準備
如果你離校過久,或者覺得基礎不牢,最好事先做一下準備復習工作。“工欲善其事,必先利其器”。以下的準備工作不多,但足以應付后面階段的學習。
機器學習
機器學習的第一門課程首推Andrew Ng的機器學習。這門課程有以下特點:難度適中,同時有足夠的實戰例子,非常適合第一次學習的人。cs229 這門課程我這里不推薦,為什么,原因有以下:
實踐做項目
學習完了基礎課程,你對機器學習就有了初步了解。現在使用它們是沒有問題的,你可以把機器學習算法當作黑盒子,放進去數據,就會有結果。在實戰中你更需要去關心如何獲取數據,以及怎么調參等。如果有時間,自己動手做一個簡單的實踐項目是最好的。這里需要選擇一個應用方向,是圖像(計算機視覺),音頻(語音識別),還是文本(自然語言處理)。這里推薦選擇圖像領域,這里面的開源項目較多,入門也較簡單,可以使用OpenCV做開發,里面已經實現好了神經網絡,SVM等機器學習算法。項目做好后,可以開源到到 Github 上面,然后不斷完善它。實戰項目做完后,你可以繼續進一步深入學習,這時候有兩個選擇,深度學習和繼續機器學習;
深度學習
深度學習:深度學習是目前最火熱的研究方向。有以下特點:知識更新快,較為零碎,沒有系統講解的書。因此學習的資源也相對零散,下面是一些資源介紹。其中不推薦的部分并不代表不好,而是在這個初學階段不合適:
繼續機器學習
深度學習未必就是未來的一定主流,至少一些大牛是這么認為的。傳統的機器學習有如下特點,知識系統化,有相對經典的書。其中統計學習(代表SVM)與集成學習(代表adaboost)是在實踐中使用非常多的技術。下面是相關資源:
開源項目
當知識儲備較為充足時,學習可以再次轉入實踐階段。這時候的實踐仍然可以分兩步走,學習經典的開源項目或者發表高質量的論文。開源項目的學習應該以盡量以優化為目的,單純為讀代碼而學習效果往往不太好。好的開源項目都可以在Github 里搜索。這里以深度學習為例。深度學習的開源優秀庫有很多,例如torch,theano等等,這里列舉其中的兩個:
會議論文
較好的課程都會推薦你一些論文。一些著名的技術與方法往往誕生于一些重要的會議。因此,看往年的會議論文是深入學習的方法。在這時,一些論文中的內容會驅使你學習數學中你不擅長的部分。有時候你會覺得數學知識儲備不夠,因此往往需要學習一些輔助課程。當你看完足夠的論文以后,在這個階段,如果是在校學生,可以選擇某個課題,以發論文為目的來學習研究。一般來說,論文是工作的產物。有時候一篇基于實驗的論文往往需要你寫代碼或者基于開源項目。因此開源項目的學習與會議論文的工作兩者之間是有相關的。兩者可以同時進行學習。關于在哪里看論文,可以看一下CCF推薦排名,了解一下這個領域里有哪些優秀的會議。下面介紹兩個圖像與機器學習領域的著名頂級會議:
自由學習
自由學習:到這里了,可以說是進入這個門了。下面可以依據興趣來自由學習。前階段不推薦的學習資源也可隨意學習,下面是點評:
總結
本文的目的是幫助對AI領域了解不深,但又想進入的同學踏入這個門。這里只說踏入,是因為這個領域的專精實在非常困難,需要數年的積累與努力。在進行領域學習前,充分認識自己的特點,制定合適的學習方法是十分重要的。首先得對這個領域進行充分了解,培養興趣。在學習時,保持著循序漸進的學習方針,不要猛進的學習過難資源;結合著學習與實踐相輔的策略,不要只讀只看,實際動手才有成就感。學習某個資源時要有充分的目的,不是為了學開源項目而看代碼,而是為了寫開源項目而看;不是為了發論文而寫論文,而是為了做事情而寫論文。如果一個學習資源對你過難,并不代表一定是你的問題,可能是學習資源的演講或撰寫人的問題。能把難的問題講簡單的人才是真正有水平的人。所以,一定要學習優質資源,而不是不分青紅皂白的學習。最后,牢記以興趣來學習。學習的時間很長,過程也很艱難,而只有興趣才是讓你持之以恒,攻克難關的最佳助力。
如有問題請聯系我們,我們7*24小時竭誠為您服務