????????學(xué)好人工智能并非易事留凭,需要循序漸進,階段性的學(xué)習(xí)偎巢,先入門后進階蔼夜,一步一腳印,那么怎樣的 學(xué)習(xí)路線適合初級者压昼,下面簡單分享:
????????分為五個階段:
第一階段:數(shù)學(xué)包括三科求冷,也都是考研的三科:高等數(shù)學(xué)/線性代數(shù)/概率論翠订;
第二階段:編程python工具庫實戰(zhàn)/python網(wǎng)絡(luò)爬蟲;
第三階段:機器學(xué)習(xí)也就是基礎(chǔ)知識遵倦,機器學(xué)習(xí)導(dǎo)論尽超,機器學(xué)習(xí)入門/機器學(xué)習(xí)提升;
第四階段:數(shù)據(jù)挖掘?qū)崙?zhàn)梧躺,只有掌握了數(shù)據(jù)挖掘處理似谁,才能知道機器如何處理大數(shù)據(jù)的數(shù)據(jù)挖掘入門/數(shù)據(jù)分析實戰(zhàn);
第五階段:深度學(xué)習(xí)掠哥,深度學(xué)習(xí)神經(jīng)算法巩踏、深度學(xué)習(xí)網(wǎng)絡(luò)與框架/深度學(xué)習(xí)項目實戰(zhàn)。
具體的學(xué)習(xí)续搀,可以按照以下7方面:
1.學(xué)習(xí)或者回憶一些數(shù)學(xué)知識
因為計算機能做的就只是計算塞琼,所以人工智能更多地來說還是數(shù)學(xué)問題[1]。我們的目標是訓(xùn)練出一個模型禁舷,用這個模型去進行一系列的預(yù)測彪杉。于是,我們將訓(xùn)練過程涉及的過程抽象成數(shù)學(xué)函數(shù):首先牵咙,需要定義一個網(wǎng)絡(luò)結(jié)構(gòu)派近,相當于定義一種線性非線性函數(shù);接著洁桌,設(shè)定一個優(yōu)化目標渴丸,也就是定義一種損失函數(shù)(loss function)。
而訓(xùn)練的過程另凌,就是求解最優(yōu)解及次優(yōu)解的過程谱轨。在這個過程中,我們需要掌握基本的概率統(tǒng)計吠谢、高等數(shù)學(xué)土童、線性代數(shù)等知識,如果學(xué)過就最好囊卜,沒學(xué)過也沒關(guān)系娜扇,僅僅知道原理和過程即可,有興趣的讀者可以涉獵一些推導(dǎo)證明栅组。
2.掌握經(jīng)典機器學(xué)習(xí)理論與基本算法
這些基本算法包括支持向量機、邏輯回歸枢析、決策樹玉掸、樸素貝葉斯分類器、隨機森林醒叁、聚類算法司浪、協(xié)同過濾泊业、關(guān)聯(lián)性分析、人工神經(jīng)網(wǎng)絡(luò)和BP算法啊易、PCA吁伺、過擬合與正則化等。[2]
在本書“實戰(zhàn)篇”的第8章到第13章的例子中也有貫穿這些算法知識租谈,保證讀者可以用它寫出一個小的TensorFlow程序篮奄。
3.掌握一種編程工具(語言)
Python語言是一種解釋型、面向?qū)ο蟾钊ァ討B(tài)數(shù)據(jù)類型的高級程序設(shè)計語言窟却。Python是很多新入門的程序員的入門編程語言,也是很多老程序員后來必須掌握的編程語言呻逆。我們需要重點掌握使用線性代數(shù)庫和矩陣的操作夸赫,尤其是Numpy、Pandas第三方庫咖城,也要多試試機器學(xué)習(xí)的庫茬腿,如sklearn,做一些SVM及邏輯回歸的練習(xí)宜雀。這對直接上手寫TensorFlow程序大有裨益滓彰。
有些工業(yè)及學(xué)術(shù)領(lǐng)域的讀者還可能擅長MATLAB或R,其實現(xiàn)算法的思想和Python也很類似州袒。
同時考慮到許多讀者是使用C++揭绑、Java、Go語言的郎哭,TensorFlow還提供了和Python“平行語料庫”的接口他匪。雖然本書是主要是基于Python講解的,對于其他語言的原理和應(yīng)用API也都非常類似夸研,讀者把基礎(chǔ)掌握后邦蜜,只需要花很短的時間就能使用自己擅長的語言開發(fā)。另外對于Java語言的同學(xué)亥至,本書第18章會講解TensorFlowOnSpark悼沈,第19章會講到TensorFlow的移動端開發(fā)。
4.研讀經(jīng)典論文姐扮,關(guān)注最新動態(tài)和研究成果
一些經(jīng)典論文是必讀的絮供。例如,要做手寫數(shù)字識別茶敏,若采用LeNet壤靶,要先閱讀一下LeNet的學(xué)術(shù)論文;要做物體目標檢測的訓(xùn)練惊搏,若選定MSCNN框架贮乳,可以先讀MSCNN相關(guān)的論文忧换。那么,論文從哪里找呢向拆?那么多論文應(yīng)該讀哪篇呢亚茬?
下面以GoogleNet的TensorFlow實現(xiàn)為例。在GitHub[3]上浓恳,一般在開頭的描述中就會說明這個模型所依據(jù)的論文刹缝,如圖所示。
順著這篇論文閱讀奖蔓,可以大致了解這個網(wǎng)絡(luò)的實現(xiàn)原理赞草,對迅速上手應(yīng)用有很大的作用。同時吆鹤,我在第6章也會對LeNet厨疙、AlexNet、ResNet這幾個常見的網(wǎng)絡(luò)進行講解疑务,幫助讀者舉一反三沾凄。
很多做模式識別的工作者之所以厲害,是因為他們有過很多知允、很深的論文積累撒蟀,對模型的設(shè)計有很獨到的見解,而他們可能甚至一行代碼也不會寫温鸽,而工程(寫代碼)能力在工作中很容易訓(xùn)練保屯。許多工程方向的軟件工程師,工作模式常常在實現(xiàn)業(yè)務(wù)邏輯和設(shè)計架構(gòu)系統(tǒng)上涤垫,編碼能力很強姑尺,但卻缺少論文積累。同時具有這兩種能力的人蝠猬,正是硅谷一些企業(yè)目前青睞的人才切蟋。
讀者平時還可以閱讀一些博客、筆記榆芦,以及微信公眾號柄粹、微博新媒體資訊等,往往一些很流行的新訓(xùn)練方法和模型會很快在這些媒體上發(fā)酵匆绣,其訓(xùn)練神經(jīng)網(wǎng)絡(luò)采用的一些方法可能有很大的啟發(fā)性驻右。
5.自己動手訓(xùn)練神經(jīng)網(wǎng)絡(luò)
接著,就是要選擇一個開源的深度學(xué)習(xí)框架犬绒。選擇框架時主要考慮哪種框架用的人多旺入。人氣旺后,遇到問題很容易找到答案凯力;GitHub上關(guān)于這個框架的項目和演示會非常多茵瘾;相關(guān)的論文也會層出不窮;在各個QQ群和微信群的活躍度會高咐鹤;雜志拗秘、公眾號、微博關(guān)注的人也會很多祈惶;行業(yè)交流和技術(shù)峰會討論的話題也多雕旨;也能享受到國內(nèi)外研究信息成果的同步。
目前這個階段捧请,TensorFlow因為背靠谷歌公司這座靠山凡涩,再加上擁有龐大的開發(fā)者群體,而且采用了稱為“可執(zhí)行的偽代碼”的Python語言疹蛉,更新和發(fā)版速度著實非郴罨快。目前TensorFlow已經(jīng)升級到1.0版可款,在性能方面也有大幅度提高育韩,而且新出現(xiàn)的Debugger、Serving闺鲸、XLA特性也是其他框架所不及的筋讨。此外,一些外圍的第三方庫(如Keras摸恍、TFLearn)也基于它實現(xiàn)了很多成果悉罕,并且Keras還得到TensorFlow官方的支持。TensorFlow支持的上層語言也在逐漸擴大立镶,對于不同工程背景的人轉(zhuǎn)入的門檻正在降低壁袄。
在GitHub[4]上有一個關(guān)于各種框架的比較,從建模能力谜慌、接口然想、模型部署、性能欣范、架構(gòu)变泄、生態(tài)系統(tǒng)、跨平臺等7個方面進行比較恼琼,TensorFlow也很占綜合優(yōu)勢妨蛹。截至2017年1月,TensorFlow的star數(shù)已經(jīng)超過了其他所有框架的總和晴竞,如圖1-8所示蛙卤。
因此,從目前來看,投身TensorFlow是一個非常好的選擇颤难,掌握TensorFlow在找工作時是一個非常大的加分項神年。
接下來就是找一個深度神經(jīng)網(wǎng)絡(luò),目前的研究方向主要集中在視覺和語音兩個領(lǐng)域行嗤。初學(xué)者最好從計算機視覺入手已日,因為它不像語音等領(lǐng)域需要那么多的基礎(chǔ)知識,結(jié)果也比較直觀栅屏。例如飘千,用各種網(wǎng)絡(luò)模型來訓(xùn)練手寫數(shù)字(MNIST)及圖像分類(CIFAR)的數(shù)據(jù)集。
6.深入感興趣或者工作相關(guān)領(lǐng)域
人工智能目前的應(yīng)用領(lǐng)域很多栈雳,主要是計算機視覺和自然語言處理护奈,以及各種預(yù)測等。對于計算機視覺哥纫,可以做圖像分類霉旗、目標檢測、視頻中的目標檢測等磺箕;對于自然語言處理奖慌,可以做語音識別、語音合成松靡、對話系統(tǒng)简僧、機器翻譯、文章摘要雕欺、情感分析等岛马,還可以結(jié)合圖像、視頻和語音屠列,一起發(fā)揮價值啦逆。
更可以深入某一個行業(yè)領(lǐng)域。例如笛洛,深入醫(yī)學(xué)行業(yè)領(lǐng)域夏志,做醫(yī)學(xué)影像的識別;深入淘寶的穿衣領(lǐng)域苛让,做衣服搭配或衣服款型的識別沟蔑;深入保險業(yè)、通信業(yè)的客服領(lǐng)域狱杰,做對話機器人的智能問答系統(tǒng)瘦材;深入智能家居領(lǐng)域,做人機的自然語言交互仿畸;等等食棕。
7.在工作中遇到問題朗和,重復(fù)前六步
在訓(xùn)練中,準確率簿晓、壞案例(bad case)眶拉、識別速度等都是可能遇到的瓶頸。訓(xùn)練好的模型也不是一成不變的抢蚀,需要不斷優(yōu)化镀层,也需要結(jié)合具體行業(yè)領(lǐng)域和業(yè)務(wù)進行創(chuàng)新镰禾,這時候就要結(jié)合最新的科研成果皿曲,調(diào)整模型,更改模型參數(shù)吴侦,一步步更好地貼近業(yè)務(wù)需求屋休。
以上學(xué)習(xí)路線雖然有點復(fù)雜,但堅信世上無難事备韧,只怕有心人劫樟。