擅長(zhǎng)用通俗易懂的方式講解深度學(xué)習(xí)和機(jī)器學(xué)習(xí)算法,熟悉Tensorflow,PaddlePaddle等深度學(xué)習(xí)框架,負(fù)責(zé)過多個(gè)機(jī)器學(xué)習(xí)落地項(xiàng)目,如垃圾評(píng)論自動(dòng)過濾,用戶分級(jí)精準(zhǔn)營(yíng)銷,分布式深度學(xué)習(xí)平臺(tái)搭建等,都取了的不錯(cuò)的效果。
本文寫作于2017年10月26日
昨天看到某位"大牛"寫了篇文章,上了首頁(yè)推薦,叫做"跟著弦哥學(xué)人工智能",看到標(biāo)題還挺驚喜,畢竟在博客園這個(gè)以.net文章為主的技術(shù)論壇居然還有大佬愿意寫AI方面的文章,于是點(diǎn)擊去仔細(xì)看了看,發(fā)現(xiàn)文風(fēng)浮夸,恩,沒關(guān)系,有干貨就行,結(jié)果翻到最后也沒發(fā)現(xiàn)啥干貨,看到了參考書目,挺有意思的。放個(gè)圖在這:

當(dāng)時(shí)看到這個(gè)參考書目挺迷的,數(shù)學(xué)類從高中數(shù)學(xué)推薦到數(shù)學(xué)專業(yè)學(xué)生看的數(shù)學(xué)分析,計(jì)算機(jī)算法類一上來就推薦大塊頭的《算法導(dǎo)論》和理論性偏強(qiáng)的《數(shù)據(jù)挖掘:概念與技術(shù)》,認(rèn)為這樣入門的人來說并不合適??磿鴳?yīng)當(dāng)是有階梯型的,不能一口吃成個(gè)大胖子,基于不想"大牛"誤人子弟,于是我給出了如下建議:

我的回復(fù)很平和,也給出了一些對(duì)新手比較友好的建議,并且有6個(gè)人支持我,想想算了,然而,今天,在首頁(yè)中又看到了這位"大牛"在博文罵我是噴子:

這我就不贊同而且不能忍了。對(duì)于任何人,不管你是大牛還是小白,我的原則都是,你可以反駁我的建議,有理有據(jù)就行,如果我錯(cuò)了,那就改,沒有錯(cuò),那就互相討論,交流一下,氣場(chǎng)合說不定還能成為個(gè)朋友呢。但是對(duì)于別人真誠(chéng)的建議您回以"噴子"是一個(gè)有教養(yǎng)的人的表現(xiàn)嗎?仗著自己是"大牛",這樣沒有素質(zhì)的懟不覺得臉紅嗎?并且,我之所以給出這個(gè)建議,有以下三點(diǎn):
1.作為一個(gè)數(shù)學(xué)系的學(xué)生,學(xué)了四年數(shù)學(xué),對(duì)于你胡亂給的參考書目非常的不贊同。一沒有階梯式,對(duì)新手不友好,您的標(biāo)題和寫這個(gè)系列的目的大概都是準(zhǔn)備給小白看的,那么請(qǐng)問,一個(gè)小白需要看數(shù)學(xué)分析原理??學(xué)習(xí)人工智能有必要需要看普林斯頓微積分原理??以鄙人淺薄的認(rèn)識(shí)來說,數(shù)學(xué)分析與高等數(shù)學(xué)最大的區(qū)別是同一個(gè)定理,高數(shù)只要求會(huì)用即可,數(shù)學(xué)分析本著嚴(yán)謹(jǐn)性,一定會(huì)給出證明。然而對(duì)于大多數(shù)人工智能里所需要的數(shù)學(xué),您在工作中需要證明這個(gè)定理的正確性和完備性??等你證出來恐怕項(xiàng)目早就結(jié)了。您回復(fù)我說這只是參考書目不是推薦書目,但是下面的評(píng)論大多數(shù)是看到書單就決定放棄。您把這些書放出來,就對(duì)看您文章的人有一定的引導(dǎo)性,我認(rèn)為您這是在誤人子弟。二是我通過您參考的數(shù)目粗略的推導(dǎo)您自己可能都沒有對(duì)整個(gè)人工智能的數(shù)學(xué)有個(gè)框架式的梳理,不然不會(huì)有如此不負(fù)責(zé)任的推薦。但是出于對(duì)您的尊重,我并沒有質(zhì)疑您的能力,僅僅在評(píng)論里對(duì)于新手適合的數(shù)學(xué)書目給了一個(gè)簡(jiǎn)短的推薦。
2.作為一個(gè)從事機(jī)器學(xué)習(xí)這一行兩年多的程序媛,看到您推薦的計(jì)算機(jī)系列也認(rèn)為非常的不靠譜。您推薦的這些書,我大部分都看過。尤其不推薦新手看的就是《算法導(dǎo)論》和《數(shù)據(jù)挖掘:概念與技術(shù)》,這兩本書又厚又重,雖然內(nèi)容全面講的也不錯(cuò),但是等你看完都不知道猴年馬月了。新手需要的是什么?是上手!其次,《Python核心編程》您真的看完了嗎?這本書并不是給Python新人讀的,非常厚,而且有一定的難度,對(duì)于新手非常不友好。而且如果只是想做AI,那這本書的很多地方都不需要用到,web開發(fā),Django框架對(duì)于我們AI工程師來說真的是必須的嗎?不是。小白對(duì)于一本書沒有重點(diǎn)和非重點(diǎn)的區(qū)分,花了大量的時(shí)間學(xué)了不需要的知識(shí),真是得不償失。給出引導(dǎo)性,針對(duì)性的推薦才是負(fù)責(zé)任的推薦。
3.對(duì)于深度學(xué)習(xí)方面書籍的推薦我就不吐槽了。槽點(diǎn)太多,無力吐槽。省點(diǎn)力氣后面推薦真正適合不同階段的新手閱讀的書籍好了。
總結(jié):這位大牛,我認(rèn)為您可能在.net方面積累非常深,做的很好,吸引了一大波粉絲,這點(diǎn)我很佩服您。然而對(duì)于深度學(xué)習(xí)這一塊您可能并不是很了解。對(duì)于一個(gè)您并不是很了解的領(lǐng)域,在這里毫不謙虛,對(duì)于別人的建議充耳不聞,還很得意的罵人“噴子”,恐怕您還是要多謙虛一點(diǎn),多學(xué)習(xí)學(xué)習(xí)。從從業(yè)年齡來看,我是您的后輩,但從從事深度學(xué)習(xí)這個(gè)領(lǐng)域來看,您可能還是個(gè)新人,您說呢?并且到目前為止,您發(fā)了兩篇文章在首頁(yè),都沒有任何干貨,希望您趕緊拿干貨來打我的臉^_^
下面,開始輸出干貨。
AI處于目前的風(fēng)口,于是很多人想要渾水摸魚,都來分一杯羹,然而可能很多人連AI是什么都不知道。AI,深度學(xué)習(xí),機(jī)器學(xué)習(xí),數(shù)據(jù)挖掘,數(shù)據(jù)分析這幾點(diǎn)的聯(lián)系和區(qū)別也搞不清楚。
我認(rèn)為,深度學(xué)習(xí)這塊,有幾個(gè)層次:(自己胡亂起的名字,忽略吧 - -)
demo俠--->調(diào)參俠--->懂原理俠--->懂原理+能改模型細(xì)節(jié)俠--->超大數(shù)據(jù)操控俠--->模型/框架架構(gòu)師
demo俠:下載了目前所有流行的框架,對(duì)不同框里的例子都跑一跑,看看結(jié)果,覺得不錯(cuò)就行了,進(jìn)而覺得,嘛,深度學(xué)習(xí)也不過如此嘛,沒有多難啊。這種人,我在面試的時(shí)候遇到了不少,很多學(xué)生或者剛轉(zhuǎn)行的上來就是講一個(gè)demo,手寫數(shù)字識(shí)別,cifar10數(shù)據(jù)的圖像分類等等,然而你問他這個(gè)手寫數(shù)字識(shí)別的具體過程如何實(shí)現(xiàn)的?現(xiàn)在效果是不是目前做好的,可以再優(yōu)化一下嗎?為什么激活函數(shù)要選這個(gè),可以選別的嗎?CNN的原理能簡(jiǎn)單講講嗎?懵逼了。
調(diào)參俠:此類人可能不局限于跑了幾個(gè)demo,對(duì)于模型里的參數(shù)也做了一些調(diào)整,不管調(diào)的好不好,先試了再說,每個(gè)都試一下,學(xué)習(xí)率調(diào)大了準(zhǔn)確率下降了,那就調(diào)小一點(diǎn),那個(gè)參數(shù)不知道啥意思,隨便改一下值測(cè)一下準(zhǔn)確率吧。這是大多數(shù)初級(jí)深度學(xué)習(xí)工程師的現(xiàn)狀。當(dāng)然,并不是這樣不好,對(duì)于demo俠來說,已經(jīng)進(jìn)步了不少了,起碼有思考。然而如果你問,你調(diào)整的這個(gè)參數(shù)為什么會(huì)對(duì)模型的準(zhǔn)確率帶來這些影響,這個(gè)參數(shù)調(diào)大調(diào)小對(duì)結(jié)果又會(huì)有哪些影響,就又是一問三不知了。
懂原理俠:抱歉我起了個(gè)這么蠢的名字。但是,進(jìn)階到這一步,已經(jīng)可以算是入門了,可以找一份能養(yǎng)活自己的工作了。CNN,RNN,LSTM信手拈來,原理講的溜的飛起,對(duì)于不同的參數(shù)對(duì)模型的影響也是說的有理有據(jù),然而,如果你要問,你可以手動(dòng)寫一個(gè)CNN嗎?不用調(diào)包,實(shí)現(xiàn)一個(gè)最基礎(chǔ)的網(wǎng)絡(luò)結(jié)構(gòu)即可,又gg了。
懂原理+能改模型細(xì)節(jié)俠:如果你到了這一步,恭喜你,入門了。對(duì)于任何一個(gè)做機(jī)器學(xué)習(xí)/深度學(xué)習(xí)的人來說,只懂原理是遠(yuǎn)遠(yuǎn)不夠的,因?yàn)楣静皇钦心銇碜鲅芯繂T的,來了就要干活,干活就要落地。既然要落地,那就對(duì)于每一個(gè)你熟悉的,常見的模型能夠自己手動(dòng)寫代碼運(yùn)行出來,這樣對(duì)于公司的一些業(yè)務(wù),可以對(duì)模型進(jìn)行適當(dāng)?shù)恼{(diào)整和改動(dòng),來適應(yīng)不同的業(yè)務(wù)場(chǎng)景。這也是大多數(shù)一二線公司的工程師們的現(xiàn)狀。然而,對(duì)于模型的整體架構(gòu)能力,超大數(shù)據(jù)的分布式運(yùn)行能力,方案設(shè)計(jì)可能還有所欠缺,本人也一直在這個(gè)階段不停努力,希望能夠更進(jìn)一步。
超大數(shù)據(jù)操控俠:到這一階段,基本上開始考慮超大數(shù)據(jù)的分布式運(yùn)行方案,對(duì)整體架構(gòu)有一個(gè)宏觀的了解,對(duì)不同的框架也能指點(diǎn)一二。海量數(shù)據(jù)的分布式運(yùn)行如何避免網(wǎng)絡(luò)通信的延遲,如何更高效更迅速的訓(xùn)練都有一定經(jīng)驗(yàn)。這類人,一般就是我這種蝦米的領(lǐng)導(dǎo)了。
模型/框架架構(gòu)師:前面說了一堆都是對(duì)現(xiàn)有的框架/模型處理的經(jīng)驗(yàn),這個(gè)階段的大俠,哦,不對(duì),是大師可以獨(dú)立設(shè)計(jì)開發(fā)一套新框架/算法來應(yīng)對(duì)現(xiàn)有的業(yè)務(wù)場(chǎng)景,或者解決一直未解決的歷史遺留問題。沒啥好說了,膜拜!
說了這么多,希望大家對(duì)自己找個(gè)清洗準(zhǔn)確的定位,這樣才能針對(duì)性的學(xué)習(xí)。下面基于我個(gè)人的經(jīng)驗(yàn)對(duì)不同階段的學(xué)習(xí)者做一些推薦:
demo俠+調(diào)參俠:這兩個(gè)放在一起說,畢竟五十步笑百步,誰(shuí)也沒有比誰(shuí)強(qiáng)多少。當(dāng)然也不要妄自菲薄,大家都是從這個(gè)階段過來的。這個(gè)階段編程不好的就好好練編程,原理不懂的就好好看書理解原理。動(dòng)手做是第一位,然后不斷改一些模型的參數(shù),看效果變化,再看背后的數(shù)學(xué)推導(dǎo),理解原因,這樣比先看一大堆數(shù)學(xué)公式的推導(dǎo),把自己繞的暈暈乎乎在開始寫代碼要好得多。
推薦書目:
數(shù)學(xué)類:
高等數(shù)學(xué)(同濟(jì)第七版):沒錯(cuò)我說的就是考研的那本參考書,真心不錯(cuò),難易適中,配合相應(yīng)的視頻或者國(guó)外的一些基礎(chǔ)課程的視頻看,高數(shù)理解極限,導(dǎo)數(shù),微分,積分就差不多了
高等數(shù)學(xué)(北大第三版):線性代數(shù)的書我看的不多,原來上學(xué)的時(shí)候?qū)W的是高等數(shù)學(xué),不過不要緊,看前五章就行了。配合相應(yīng)的視頻,掌握矩陣,行列式相關(guān)知識(shí)即可。
概率論:這個(gè)沒有特別推薦的,因?yàn)閷W(xué)的并是不很好,所以不做推薦誤人子弟。大家不管看什么書,只要掌握關(guān)鍵知識(shí)就行了。不能到時(shí)候問個(gè)貝葉斯你都不知道咋推吧 = =!
信息論:忘記是哪個(gè)出版社了的,很薄的一本,講的非常不錯(cuò)。里面關(guān)于信息的度量,熵的理解,馬爾科夫過程都講的不錯(cuò)(現(xiàn)在公司里沒有,我回去找找再補(bǔ)上來)。掌握這個(gè)知識(shí),那么對(duì)于你理解交叉熵,相對(duì)熵這一大堆名字看起來差不多但是又容易弄混的東東還是不錯(cuò)的。起碼你知道了為啥很多機(jī)器學(xué)習(xí)算法喜歡用交叉熵來做cost function~
編程類:
笨方法學(xué)Python(Learn Python the Hard Way)這本書對(duì)于完全沒有接觸過Python,或者說完全沒有接觸過編程的人來說非常適合。雖然很多人說Python這么簡(jiǎn)單,一天/周/月就學(xué)會(huì)了,但是每個(gè)人的基礎(chǔ)是不一樣的,所以不要認(rèn)為自己一天沒學(xué)會(huì)就很認(rèn)為自己很蠢,你應(yīng)該想這樣說的人很壞!不管怎么樣,這是一本真正的從零開始學(xué)Python的書
利用Python進(jìn)行數(shù)據(jù)分析:這本書是Python的pandas這個(gè)包的詳細(xì)說明版。學(xué)習(xí)這個(gè)可以掌握一些pandas的基本命令。然而這不是重點(diǎn),因?yàn)閜andas出來大量數(shù)據(jù)實(shí)在太慢了,還可能會(huì)崩潰(不知道現(xiàn)在有沒有改善 - -?。┲攸c(diǎn)是,通過學(xué)習(xí)這本書,對(duì)數(shù)據(jù)的操作有點(diǎn)感覺,熟悉基本的數(shù)據(jù)操作流程,里面所有的操作都可以用原生python來替代,不需要用到pandas這個(gè)包。找感覺,非常重要。
Python參考手冊(cè):這本書只是作為一個(gè)工具書,當(dāng)你遇到不會(huì)的時(shí)候翻翻書,鞏固一下(當(dāng)然,事實(shí)可能是直接去google了),此類書不用全部從頭到尾刷完,查漏補(bǔ)缺即可(電子書就行)
算法類:
Deep Learning with Python:別看這又是一本英文書,但其實(shí)非常簡(jiǎn)單易讀。這本書其實(shí)主要是一個(gè)demo例子的集合,用keras寫的,沒有什么深度,主要是消除你對(duì)深度學(xué)習(xí)的畏難情緒,可以開始上手做,對(duì)整體能夠做的事做一些宏觀的展現(xiàn)??梢哉f,這本書是demo俠的最愛啦!
Deep Learning:中文有翻譯版的出來了,不過我其實(shí)不太想放在這里,因?yàn)檫@本書其實(shí)很偏理論。有些章節(jié)講的是真不錯(cuò),有些地方你完了又會(huì)覺得,這是啥?這玩意有啥用?會(huì)把新手繞來繞去的。大家就先買一本鎮(zhèn)場(chǎng)子,有不懂的翻翻看,看不懂的就google,直接看論文,看別人總結(jié)的不錯(cuò)的博客,等等??傊灰隳馨巡欢呐托辛?。
懂原理俠:很不錯(cuò),你的經(jīng)驗(yàn)值已經(jīng)提升了不少了。然而還不能開始打怪,畢竟沒有那個(gè)怪物可以直接被噴死的。你缺少工具。那么這個(gè)階段,就需要多多加強(qiáng)編程能力。先找一個(gè)框架下下來,閱讀源碼,什么?你說你不會(huì)閱讀源碼,沒關(guān)系,網(wǎng)上一大堆閱讀源碼的經(jīng)驗(yàn)。當(dāng)然,這些經(jīng)驗(yàn)的基礎(chǔ)無一例外都是:多讀多寫。在此基礎(chǔ)上再找trick。下好框架的源碼后,改動(dòng)一些代碼在運(yùn)行,debug一下,再不斷的找原因,看看每個(gè)api是怎么寫的,自己試著寫一寫。多謝多練,死磕coding三十年,你一定會(huì)有收獲的。
懂原理+能改模型細(xì)節(jié)俠:看論文看論文看論文!讀源碼讀源碼讀源碼!這里的讀源碼不僅僅局限于讀一個(gè)框架的源碼了,可以多看看其他優(yōu)秀的框架,對(duì)于同一個(gè)層,同一個(gè)功能的實(shí)現(xiàn)機(jī)制,多比較多思考多總結(jié)多寫。時(shí)間長(zhǎng)了,肯定會(huì)有收獲的。看論文是為了直接獲得原作者的思想,避免了從博客解讀論文里獲得二手思想,畢竟每個(gè)人的理解都不一樣,而且也不一定對(duì),自己先看一遍,再看看別的理解,多和大牛討論,思路就開闊了。
超大數(shù)據(jù)操控俠:這個(gè)階段我也還在摸索,給不了太多建議,只能給出目前總結(jié)的一點(diǎn)點(diǎn)經(jīng)驗(yàn):盡量擴(kuò)大數(shù)據(jù),看如何更快更好的處理。更快--采用分布式機(jī)制應(yīng)該如何訓(xùn)練?模型并行還是數(shù)據(jù)并行?多機(jī)多卡之間如何減少機(jī)器之間的網(wǎng)絡(luò)延遲和IO時(shí)間等等都是要思考的問題。更好--如何保證在提升速度的同時(shí)盡量減少精度的損失?如何改動(dòng)可以提高模型的準(zhǔn)確率、mAP等,也都是值得思考的問題。
模型/框架架構(gòu)師:抱歉,我不懂,不寫了。
總結(jié):
其實(shí)大家從我上面的推薦來看,打好基礎(chǔ)是非常重要的,后續(xù)都是不斷的多讀優(yōu)秀的論文/框架,多比較/實(shí)踐和debug,就能一點(diǎn)點(diǎn)進(jìn)步。打基礎(chǔ)的階段一定不能浮躁。扎扎實(shí)實(shí)把基礎(chǔ)打好,后面會(huì)少走很多彎路。不要跟風(fēng)盲目崇拜,經(jīng)典永遠(yuǎn)不會(huì)過時(shí),自己多看書/視頻/優(yōu)秀的博客,比無腦跟風(fēng)要強(qiáng)得多。最后,我之所以今天這么生氣,是因?yàn)檫@個(gè)行業(yè)目前太浮躁了,很多人太浮夸,誤人子弟,有人說真話還被人罵噴子,真是氣死我了!大家一定要擦亮雙眼,多靠自己多努力。
不好意思強(qiáng)行雞湯了一波。本來去年打算寫一個(gè)機(jī)器學(xué)習(xí)系列,但是因?yàn)楣ぷ骱蜕眢w的原因?qū)懥巳蜎]有更了。今年上半年做了一個(gè)大項(xiàng)目又累得要死,下半年才剛剛緩口氣,所以之前欠的后續(xù)一定會(huì)繼續(xù)更。為了不讓大家盲目崇拜,我決定寫一個(gè)深度學(xué)習(xí)系列,每周固定一篇,大概三個(gè)月完結(jié)。教小白如何入門。并且完!全!免!費(fèi)??!不是簡(jiǎn)單的寫寫網(wǎng)上都有的demo和調(diào)參。拒絕demo俠從我做起!有不懂的歡迎大家在我的文章下留言,我看到了會(huì)盡量回復(fù)的。這個(gè)系列主要會(huì)采取PaddlaPaddle這個(gè)深度學(xué)習(xí)框架,同時(shí)會(huì)對(duì)比keras,tensorflow和mxnet這三個(gè)框架的優(yōu)劣(因?yàn)槲抑挥眠^這四個(gè),寫tensorflow的人太多了,paddlepaddle我目前用的還不錯(cuò),就決定從這個(gè)入手),所有代碼會(huì)放在github上(鏈接:https://github.com/huxiaoman7/PaddlePaddle_code),歡迎大家提issue和star。目前只寫了第一篇(【深度學(xué)習(xí)系列】PaddlePaddle之手寫數(shù)字識(shí)別),后面會(huì)有更深入的講解和代碼。目前做了個(gè)簡(jiǎn)單的大綱,大家如果有感興趣的方向可以給我留言,我會(huì)參考加進(jìn)去的~

最后一句,低調(diào)做人,好好學(xué)習(xí),大家下期再會(huì)^_^!
-
python
+關(guān)注
關(guān)注
57文章
4876瀏覽量
90013 -
大數(shù)據(jù)
+關(guān)注
關(guān)注
64文章
9062瀏覽量
143720 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5598瀏覽量
124382
原文標(biāo)題:【好書推薦&學(xué)習(xí)階段】三個(gè)月教你從零入門深度學(xué)習(xí)
文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
深度學(xué)習(xí)與機(jī)器學(xué)習(xí)有什么差異你知道嗎?
機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的區(qū)別在哪?看完就知道了
通俗易懂的PID教程
通俗易懂系列整合—電源基礎(chǔ)知識(shí)講解
FPGA通俗易懂入門書籍教程
一文讀懂深度學(xué)習(xí)與機(jī)器學(xué)習(xí)的差異
通俗易懂的講解FFT的讓你快速了解FFT
關(guān)于機(jī)器學(xué)習(xí)通俗易懂的講解
通俗易懂的方式講解深度學(xué)習(xí)和機(jī)器學(xué)習(xí)算法
評(píng)論