致小白的Python人工智能學習路線(長篇干貨)

本文篇幅較長,干貨較多,建議收藏慢慢看。

談到人工智能(AI)算法,常見不外乎有兩方面信息:鋪天蓋地各種媒體提到的高薪就業(yè)【販賣課程】、知乎上熱門的算法崗“水深火熱 灰飛煙滅”的梗【販賣焦慮】。

其實,這兩方面都是存在的,但都很片面,這里不加贅述??陀^地說,數(shù)字化、智能化是人類社會發(fā)展的趨勢,而當下人工智能無疑是一大熱門,那是藍海還是火海?我們回到老道理—水的深度,只有你自己去試試水才知道。

當你對上面情況有了初步的了解并想試試水,需要面對的問題是:AI入門容易嗎?

答案其實是否定的,難!AI領域需要鉆研算法原理、大量復雜的公式及符號、無所適從的項目都是勸退一時熱度初學者的原因。但這些原因對于一個初學者,根本上是面對這樣困難的學科卻缺乏合適方法導致的。反問一個玩笑,程序員怎么會沒有方法呢?隨手就定義一個Python方法(funtion)

def funtion():
       
    return 'haha,往下繼續(xù)看'

回到筆者,一名普普通通的程序員,當初也是誤打誤撞學習Python入門到機器學習、深度學習,至今有4個年頭,踩了很多坑,下文說到的學習方法、路徑也就填坑試錯的經驗罷了。

本文面向于AI領域了解不深、有些(高中+)基礎知識且有自學興趣的同學,以下為正文。

一、學習方法

說到學習方法,其實我們談到的人工智能之所以智能,核心在于有學習能力。而人工智能學習過程有兩個要素:

1、學習目標是什么(--什么目標函數(shù))?

2、如何達到目標(--什么算法)?

人工智能領域很多思路和人類學習是很共恰的!可以發(fā)現(xiàn)這兩個問題也是我們學習這門學科需要回答的。

  • 學習目標是什么?

我們的學習目標比較清楚,就是入門人工智能領域,能完成一個AI相關的任務,或者找到相關的工作。

  • 如何達到目標?

1、入門人工智能是個寬泛的目標,因此還得 將目標拆分成階段性目標才易于執(zhí)行,可以對應到下面--學習路線及建議資源的各個節(jié)點。

2、學習人工智能這門學科,需要提醒的是這本來就是件難事,所以實在搞不懂的知識可以放在后面補下,不要奢求一步到位(當然天賦了得另說),不要想一下子成為專家,可以從:懂得調用現(xiàn)成的算法模塊(scikit-learn、tensorflow)做項目 -進階-》懂得算法原理進一步精用、調優(yōu)算法 -進階-》領域專家。保持學習,循序漸進才是啃硬骨頭的姿勢。

3、啃硬骨頭過程無疑是艱難的,所以慢慢地培養(yǎng)興趣和及時的結果反饋是很重要的。這方面上,邊學邊敲代碼是必須的,結合代碼實踐學習效率會比較高,還可以及時看到學習成果,就算是啃硬骨頭看到牙印越來越深,不也是成果,也比較不容易放棄!

二、學習路線及建議資源

本學習路線的基本的框架是:
寬泛了解領域,建立一定興趣 --》基礎知識、工具準備 --》機器學習|深度學習的入門課程、書籍及項目實踐 --》(面試準備)--》自行擴展:工作中實戰(zhàn)學習 或 學術界特定領域鉆研,經典算法原理、項目實踐

2.1 了解領域,建立一定興趣

首先對人工智能領域有個寬泛的了解,有自己的全局性的認識,產生一些判斷,才不會人云亦云地因為“薪資高、壓力大等” 去做出選擇或者放棄。你做的準備調研越多,確認方向后越不容易放棄。

人工智能(Artificial Intelligence,AI)之研究目的是通過探索智慧的實質,擴展人類智能——促使智能主體會聽(語音識別、機器翻譯等)、會看(圖像識別、文字識別等)、會說(語音合成、人機對話等)、會思考(人機對弈、專家系統(tǒng)等)、會學習(知識表示,機器學習等)、會行動(機器人、自動駕駛汽車等)。一個經典的AI定義是:“ 智能主體可以理解數(shù)據(jù)及從中學習,并利用知識實現(xiàn)特定目標和任務的能力。

從技術層面來看(如下圖),現(xiàn)在所說的人工智能技術基本上就是機器學習方面的(其他方面的如專家系統(tǒng)、知識庫等技術較為沒落)。關于人工智能的發(fā)展歷程,可以看看我之前一篇文章人工智能簡史。

機器學習是指非顯式的計算機程序可以從數(shù)據(jù)中學習,以此提高處理任務的水平,機器學習常見的任務有分類任務(如通過邏輯回歸模型判斷郵件是否為垃圾郵件類)、回歸預測任務(線性回歸模型預測房價)等等。深度學習是機器學習的一個子方向,是當下的熱門,它通過搭建深層的神經網絡模型以處理任務。


從應用領域上看,人工智能在眾多的應用領域上面都有一定的發(fā)展,有語言識別、自然語言處理、圖像識別、數(shù)據(jù)挖掘、推薦系統(tǒng)、智能風控、機器人等方面。值得注意的的是,不同應用領域上,從技術層面是比較一致,但結合到實際應用場景,所需要的業(yè)務知識、算法、工程上面的要求,差別還是相當大的。回到應用領域的選擇,可以結合技術現(xiàn)在的發(fā)展情況、自己的興趣領域再做判斷。

2.2 基礎知識、工具準備

學習人工智能需要先掌握編程、數(shù)學方面的基本知識:AI算法工程師首先是一名程序員,掌握編程實現(xiàn)方法才不將容易論知識束之高閣。而數(shù)學是人工智能理論的奠基,是必不可少的。

編程語言方面

編程語言之于程序員, 如寶劍之于俠士。編程語言就是程序員改變、創(chuàng)造數(shù)字虛擬世界的交互工具。

先簡單介紹信息技術(IT)行業(yè)的情況,IT領域廣泛按職能可以分為前端、后端、人工智能、嵌入式開發(fā)、游戲開發(fā)、運維、測試、網絡安全等方面。前端常用技術棧為js\css\html,后端常用技術棧有Java\go\C++\php\Python等。


在人工智能領域,Python使用是比較廣泛的,當然其他的語言也是可行的,如Java、C++、R語言等。語言也就工具,選擇個適合的就好。結合自己的歷程及語言的特性,AI小白還是建議可以從Python學起,理由如下:
1、因為其簡單的語法及靈活的使用方法,Python很適合零基礎入門;
2、Python有豐富的機器學習庫,極大方便機器學習的開發(fā);
3、Python在機器學習領域有較高的使用率,意味著社區(qū)龐大,應用范圍廣,市場上(具體可到招聘軟件了解下)有較多的工作機會;

  • 學習編程語言的兩點建議:

1、多敲代碼:只看書、視頻而不敲代碼是初學者的一個通病。要記住的是“紙上得來終覺淺”,程序員是一個工匠活,需要動手敲代碼實踐,熟能生巧。

2、 多谷歌: 互聯(lián)網的信息無所不包的,學會利用互聯(lián)網自己解決問題是一項基本功。不懂可以谷歌,業(yè)界一句有趣的話:程序員是面向谷歌/stackoverflow編程的;

  • 建議資源:

以下資源只是一些個人的一些偏好推薦,挑一兩種適合自己的資源學習就可以,不用全部都學浪費精力。如果都覺得不合適,按照自己的學習方式即可。

1、【Python入門書】首推Python經典書《Python編程從入門到實踐.pdf(https://github.com/aialgorithm/AiPy/》,知識點通俗易懂,而且結合了項目實踐,很適合初學者。注:Python在爬蟲、web開發(fā)、游戲開發(fā)等方向也有應用,推薦本書主要學習下Python語法,而書后面的項目實戰(zhàn)像有游戲開發(fā)\web開發(fā),和機器學習關系不大,可以略過\自行了解下就好。

2、【Python入門教程】廖雪峰的Python在線學習教程,一個很大的特色是可以直接在線運行Python代碼。

3、【Python入門視頻】如果看書過于枯燥,可以結合視頻學習,Python入門學習報培訓班學習有點浪費,可以直接網易云課堂、Bilibili搜索相關的Python學習視頻。我之前是看小甲魚零基礎入門學習Python課程,邊看邊敲敲代碼,覺得還不錯。

4、【Python機器學習庫】學習完Python語法,再學習了解下Python上現(xiàn)成的機器學習庫(模塊包),了解基本功能學會調用它們(熟練掌握它們,主要還是要結合后面項目邊學邊實踐才比較有效的。),一個初級的算法工程師(調包俠)基本就練成了。重要的機器學習庫有:

pandas 數(shù)據(jù)分析、numpy 數(shù)值計算庫、matplotlib可視化工具,推薦《利用pandas數(shù)據(jù)分析》有涵蓋了這幾部分內容。

scikit-learn 包含機器學習建模工具及算法,可以了解下官方文檔https://scikit-learn.org.cn。

用于搭建深度學習的神經網絡模型的庫有:keras、tensorflow、Pytorch等,其中keras更為簡單易用,可以參考Keras官方文檔https://keras.io/zh,以及Keras之父寫的《Python深度學習》

5、【Python進階書】《Python Cookbook》、《流暢的Python》 這兩本內容難度有提升,適合Python語法的進階。

數(shù)學方面

1、數(shù)學無疑是重要的,有良好的數(shù)學基礎對于算法原理的理解及進階至關重要。但這一點對于入門的初學者反而影響沒那么大,對于初學者如果數(shù)學基礎比較差,有個思路是先補點“數(shù)學的最小必要知識”:如線性代數(shù)的矩陣運算;高等數(shù)學的梯度求導;概率的條件、后驗概率及貝葉斯定理等等。這樣可以應付大部分算法的理解。

2、如果覺得數(shù)學有難度,數(shù)學公式、知識的理解建議不用硬啃,不懂時再反查,遇到再回來補效果會好很多。(如果你的數(shù)學沒有問題,忽略這些,直接復習大學教材補下基礎)

  • 建議資源

【數(shù)學基礎知識】推薦黃博翻譯整理的機器學習相關的數(shù)學基礎知識,內容簡要,還是挺不錯的。

高等數(shù)學
線性代數(shù)
概率與數(shù)理統(tǒng)計

工具準備

對于程序員,好的工具就是生產力!
1、 搜索引擎:學習開發(fā)的過程,很經常搜索問題、解決bug。搜索引擎的內容質量 首推谷歌,其次bing,再者才是百度、知乎等。谷歌如果使用不了,試試谷歌助手、科學翻墻、谷歌鏡像網站,網上有教程自行了解。

2、翻譯:AI領域最新的研究成果、論文基本都是英文的,而如果英文閱讀比較一般,可以備個有道詞典、wps文檔翻譯。

3、Python編輯器:首推JupyterLab,JupyterLab很方便數(shù)據(jù)分析操作,可以單元格中逐步運行代碼驗證結果。建議直接下載安裝個anaconda,里面都有。

2.3 機器學習\深度學習入門

深度學習是機器學習的子分支,與傳統(tǒng)機器學習有些差異的地方(如特征生成、模型定義方面), 因此兩者可以分開學習。都學習的話,建議可以先學機器學習再學深度學習。

機器學習\深度學習的內容可以分為兩部分,一部分是算法原理的理解,如神經網絡模型正向反向傳播原理、SVM原理、GBDT原理等等,這部分內容的理解相對較難,學習周期較長。另一部分是算法工程實現(xiàn)的知識,如現(xiàn)實問題的理解、如何清洗數(shù)據(jù)、生成特征、選擇模型及評估,具體可以看我之前的文章《一文全覽機器學習建模流程(Python代碼)》,這部分是比較通用的一套操作流程,學習周期比較短且容易看到實際成果。

對于初學者的建議,可以“先知其然,再知其所以然”,跟著課程\書學習,明白大致的算法原理及工程上是如何做的。再用簡單的算法整個流程走一遍,結合實踐過程中不斷的比較和嘗試各種算法,更容易搞透算法原理,而且這樣可以避免云里霧里地學習各種算法原理。

以下相關資源推薦,同樣找一兩種合適的資源學習即可。

  • 建議資源

1、【機器學習視頻】《吳恩達的機器學習課程》github.com/aialgorithm/AiPy/,很經典的入門課程,附筆記解析及代碼。

2、【機器學習書】[《machine learning yearning_吳恩達》 ] (https://github.com/aialgorithm/AiPy/tree/master/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0) 是吳恩達歷時兩年,根據(jù)自己多年實踐經驗整理出來的一本機器學習、深度學習實踐經驗寶典。

3、【機器學習書】《統(tǒng)計學習方法》 李航老師經典的機器學習書,書中的算法原理講解還是比較細的。鏈接的資源有附上書中算法的代碼實現(xiàn)、課件及第一版的書。(現(xiàn)在已經有第二版的書,可以買一本慢慢看)

4、【機器學習書】《機器學習(西瓜書)_周志華》 機器學習經典教材,難度適合進階,里面的一些概念公式還是要有一定基礎的,不太適合入門自學。(可搭配datawhale的南瓜書本理解難點公式)

5、【深度學習視頻】《吳恩達的深度學習課程》github.com/aialgorithm/AiPy/應該是國內大多數(shù)人的入門課程,附筆記解析及代碼。

6、【深度學習書】《深度學習(花書)》 AI大佬Ian Goodfellow的深度學習領域經典著作,知識點很系統(tǒng)全面,但還是需要一定基礎才好看懂,初學者可以結合視頻、花書筆記輔助理解。

7、【深度學習書】《python深度學習》keras之父的經典著作,通俗易懂適合入門。

8、【深度學習書】《深度學習實戰(zhàn)》 這本書的結果和《花書》有些相似之處,原理講解比較通俗,還有詳細的代碼實踐。不足的地方是代碼是用Python2寫的有些過時。

9、【深度學習書】《動手學深度學習》 李沐大佬合著的深度學習入門教程及代碼實踐。

10、【深度學習論文】深度學習綜述 :2015年Nature上的論文,由深度學習界的三巨頭所寫,讀這一篇論文就可以概覽深度學習了。這篇論文有同名的中文翻譯。
注:要全面了解一個技術領域,找找這個領域的綜述論文是一個超實用的技巧。

11、【實戰(zhàn)項目】 推薦實戰(zhàn)下國外的Kaggle、國內天池等競賽項目。從頭到尾地參加一兩個機器學習項目,并取得不錯的分數(shù),基本上就差不多了。安利個Datawhale小隊整理的國內外經典競賽的項目方案及代碼實現(xiàn) https://github.com/datawhalechina/competition-baseline

2.4 工作面試準備

對于大部分入門的初學者,要真正算入門人工智能領域,找一份相關的工作是必不可少的,當你有(哪怕一點點)相關的工作經驗后,這個領域工作面試就比較好混得開了。

很多初學者可能有個困惑,學習到什么樣程度、多久才能找到相關的工作機會呢?這個不好回答,和學習準備的程度、市場招聘情況、運氣等有關,只能說覺得學得差不多了就可以找面試機會試下水(以個人學習為例,學習了Python+吳恩達機器學習\深度學習視頻+幾個書本\數(shù)據(jù)競賽項目+刷面試題,前前后后差不多用了半年。)

準備面試找工作,首先要了解下市場情況及招聘要求,通常無非要求有相關的論文著作、工作經歷、項目經驗、對算法的理解。撇開第一、二項的論文、工作經歷不談。對于初學者,面試的主要比重是項目經驗及算法的理解。

項目經驗就結合項目實戰(zhàn)的做法和理解(這些最好有博客記錄)。而算法原理除了平時的積累,刷下面試題是很關鍵的,畢竟面試內容與實際工作內容很多時候像是“造火箭與擰螺絲的關系”。

  • 推薦些經典的面試題庫

1、 基礎數(shù)據(jù)結構與算法,LeetCode算法題庫:https://github.com/apachecn/Interview/tree/master/docs/Algorithm

2、Python基礎算法實現(xiàn): https://github.com/TheAlgorithms/Python

3、Python面試題 https://github.com/taizilongxu/interview_python

4、Datawhale小隊整理的面試寶典,內容包括基礎算法數(shù)據(jù)結構、機器學習,CV,NLP,推薦,開發(fā)等。https://github.com/datawhalechina/daily-interview

5、機器學習面試題,這倉庫后面就沒有更新了,有些內容可能有點過時https://github.com/DarLiner/Algorithm_Interview_Notes-Chinese

6、面試技巧:推薦閱讀程序員面試完全指南

總結

學習到這里,可以說是踏入AI領域的門了。俗話說“師傅領進門,修行在個人”,本文僅能幫助有興趣的同學簡單入門這個領域,而要在這領域成為專家是很困難的,是需要長期的努力積累的。再者,IT行業(yè)技術更新迭代快,保持學習才是王道。

最后,希望這篇文章可以幫助到大家,共同學習進步吧。


碼字不易,如覺得本文有幫助,您的關注點贊是最大的支持!
文章首發(fā)于算法進階,公眾號閱讀原文可訪問--學習資源推薦--

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容