三個月教你從零入門深度學習

      最新更新:【深度學習系列】PaddlePaddle之手寫數字識別(10.26更新)html

       【深度學習系列】卷積神經網絡CNN原理詳解(一)——基本原理(11.1更新) python

       【深度學習系列】PaddlePaddle之數據預處理(11.8更新)git

         【深度學習系列】卷積神經網絡詳解(二)——本身手寫一個卷積神經網絡(11.22更新)github

         【深度學習系列】用PaddlePaddle和Tensorflow進行圖像分類(11.29更新)web

       【深度學習系列】用PaddlePaddle和Tensorflow實現經典CNN網絡AlexNet(12.06更新)面試

       【深度學習系列】用PaddlePaddle和Tensorflow實現經典CNN網絡Vgg(12.13更新)算法

       【深度學習系列】用PaddlePaddle和Tensorflow實現經典CNN網絡GoogLeNet(12.20更新)編程

     【深度學習系列】用PaddlePaddle和Tensorflow實現GoogLeNet InceptionV2/V3/V4(12.27更新)api

       【深度學習系列】一塊兒來參加百度 PaddlePaddle AI 大賽吧!(2018.1.4更新)網絡

       【深度學習系列】關於PaddlePaddle的一些避「坑」技巧(2018.1.13更新)     


原文:

  不用理會標題,純粹標題黨,可是有乾貨!昨天看到某位"大牛"寫了篇文章,上了首頁推薦,叫作"跟着弦哥學人工智能",看到標題還挺驚喜,畢竟在博客園這個以.net文章爲主的技術論壇竟然還有大佬願意寫AI方面的文章,因而點擊去仔細看了看,發現文風浮誇,恩,不要緊,有乾貨就行,結果翻到最後也沒發現啥乾貨,看到了參考書目,挺有意思的。放個圖在這:

  

  當時看到這個參考書目挺迷的,數學類從高中數學推薦到數學專業學生看的數學分析,計算機算法類一上來就推薦大塊頭的《算法導論》和理論性偏強的《數據挖掘:概念與技術》,認爲這樣入門的人來講並不合適。看書應當是有階梯型的,不能一口吃成個大胖子,基於不想"大牛"誤人子弟,因而我給出了以下建議:

  

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

 

 

  這我就不贊同並且不能忍了。對於任何人,無論你是大牛仍是小白,個人原則都是,你能夠反駁個人建議,有理有據就行,若是我錯了,那就改,沒有錯,那就互相討論,交流一下,氣場合說不定還能成爲個朋友呢。可是對於別人真誠的建議您回以"噴子"是一個有教養的人的表現嗎?仗着本身是"大牛",這樣沒有素質的懟不以爲臉紅嗎?而且,我之因此給出這個建議,有如下三點

  1.做爲一個數學系的學生,學了四年數學,對於你胡亂給的參考書目很是的不贊同。一沒有階梯式,對新手不友好,您的標題和寫這個系列的目的大概都是準備給小白看的,那麼請問,一個小白鬚要看數學分析原理??學習人工智能有必要須要看普林斯頓微積分原理??以鄙人淺薄的認識來講,數學分析與高等數學最大的區別是同一個定理,高數只要求會用便可,數學分析本着嚴謹性,必定會給出證實。然而對於大多數人工智能裏所須要的數學,您在工做中須要證實這個定理的正確性和完備性??等你證出來恐怕項目早就結了。您回覆我說這只是參考書目不是推薦書目,可是下面的評論大多數是看到書單就決定放棄。您把這些書放出來,就對看您文章的人有必定的引導性,我認爲您這是在誤人子弟。二是我經過您參考的數目粗略的推導您本身可能都沒有對整我的工智能的數學有個框架式的梳理,否則不會有如此不負責任的推薦。可是出於對您的尊重,我並無質疑您的能力,僅僅在評論裏對於新手適合的數學書目給了一個簡短的推薦。

  2.做爲一個從事機器學習這一行兩年多的程序媛,看到您推薦的計算機系列也認爲很是的不靠譜。您推薦的這些書,我大部分都看過。尤爲不推薦新手看的就是《算法導論》和《數據挖掘:概念與技術》,這兩本書又厚又重,雖然內容全面講的也不錯,可是等你看完都不知道猴年馬月了。新手須要的是什麼?是上手!其次,《Python核心編程》您真的看完了嗎?這本書並非給Python新人讀的,很是厚,並且有必定的難度,對於新手很是不友好。並且若是隻是想作AI,那這本書的不少地方都不須要用到,web開發,Django框架對於咱們AI工程師來講真的是必須的嗎?不是。小白對於一本書沒有重點和非重點的區分,花了大量的時間學了不須要的知識,真是得不償失。給出引導性,針對性的推薦纔是負責任的推薦。

  3.對於深度學習方面書籍的推薦我就不吐槽了。槽點太多,無力吐槽。省點力氣後面推薦真正適合不一樣階段的新手閱讀的書籍好了。

  總結:這位大牛,我認爲您可能在.net方面積累很是深,作的很好,吸引了一大波粉絲,這點我很佩服您。然而對於深度學習這一塊您可能並非很瞭解。對於一個您並非很瞭解的領域,在這裏絕不謙虛,對於別人的建議充耳不聞,還很得意的罵人「噴子」,恐怕您仍是要多謙虛一點,多學習學習。從從業年齡來看,我是您的後輩,但從從事深度學習這個領域來看,您可能仍是個新人,您說呢?而且到目前爲止,您發了兩篇文章在首頁,都沒有任何干貨,但願您趕忙拿乾貨來打個人臉^_^

 

  下面,開始輸出乾貨。

  AI處於目前的風口,因而不少人想要渾水摸魚,都來分一杯羹,然而可能不少人連AI是什麼都不知道。AI,深度學習,機器學習,數據挖掘,數據分析這幾點的聯繫和區別也搞不清楚。因而滋生了不少培訓班,收着不菲的費用,教教demo,調調參,教你一個月速成深度學習工程師,賺的盆滿鉢滿。這種行業風氣咱們應該摒棄!我認爲,目前市面上的任何AI培訓都不值得參加!別撒錢給別人了,難道不會心痛嗎? - -然而,當你們自學的時候,又不知道從何學起。下了一堆資料,跑了一堆demo,報了一堆cousera,調調參,看看模型結果不錯,就覺得入了門,抱歉,很差意思,我說話比較直接,可能你連門都沒入。我認爲,深度學習這塊,有幾個層次:(本身胡亂起的名字,忽略吧  - -)

demo俠--->調參俠--->懂原理俠--->懂原理+能改模型細節俠--->超大數據操控俠--->模型/框架架構師

      demo俠:下載了目前全部流行的框架,對不一樣框裏的例子都跑一跑,看看結果,以爲不錯就好了,進而以爲,嘛,深度學習也不過如此嘛,沒有多難啊。這種人,我在面試的時候遇到了很多,不少學生或者剛轉行的上來就是講一個demo,手寫數字識別,cifar10數據的圖像分類等等,然而你問他這個手寫數字識別的具體過程如何實現的?如今效果是否是目前作好的,能夠再優化一下嗎?爲何激活函數要選這個,能夠選別的嗎?CNN的原理能簡單講講嗎?懵逼了。

  調參俠:此類人可能不侷限於跑了幾個demo,對於模型裏的參數也作了一些調整,無論調的好很差,先試了再說,每一個都試一下,學習率調大了準確率降低了,那就調小一點,那個參數不知道啥意思,隨便改一下值測一下準確率吧。這是大多數初級深度學習工程師的現狀。固然,並非這樣很差,對於demo俠來講,已經進步了很多了,起碼有思考。然而若是你問,你調整的這個參數爲何會對模型的準確率帶來這些影響,這個參數調大調小對結果又會有哪些影響,就又是一問三不知了。

  懂原理俠:抱歉我起了個這麼蠢的名字。可是,進階到這一步,已經能夠算是入門了,能夠找一份能養活本身的工做了。CNN,RNN,LSTM信手拈來,原理講的溜的飛起,對於不一樣的參數對模型的影響也是說的有理有據,然而,若是你要問,你能夠手動寫一個CNN嗎?不用調包,實現一個最基礎的網絡結構便可,又gg了。

  懂原理+能改模型細節俠:若是你到了這一步,恭喜你,入門了。對於任何一個作機器學習/深度學習的人來講,只懂原理是遠遠不夠的,由於公司不是招你來作研究員的,來了就要幹活,幹活就要落地。既然要落地,那就對於每個你熟悉的,常見的模型可以本身手動寫代碼運行出來,這樣對於公司的一些業務,能夠對模型進行適當的調整和改動,來適應不一樣的業務場景。這也是大多數一二線公司的工程師們的現狀。然而,對於模型的總體架構能力,超大數據的分佈式運行能力,方案設計可能還有所欠缺,本人也一直在這個階段不停努力,但願可以更進一步。

  超大數據操控俠:到這一階段,基本上開始考慮超大數據的分佈式運行方案,對總體架構有一個宏觀的瞭解,對不一樣的框架也能指點一二。海量數據的分佈式運行如何避免網絡通訊的延遲,如何更高效更迅速的訓練都有必定經驗。這類人,通常就是我這種蝦米的領導了。

  模型/框架架構師:前面說了一堆都是對現有的框架/模型處理的經驗,這個階段的大俠,哦,不對,是大師能夠獨立設計開發一套新框架/算法來應對現有的業務場景,或者解決一直未解決的歷史遺留問題。沒啥好說了,膜拜!

 

  說了這麼多,但願你們對本身找個清洗準確的定位,這樣才能針對性的學習。下面基於我我的的經驗對不一樣階段的學習者作一些推薦

  demo俠+調參俠:這兩個放在一塊兒說,畢竟五十步笑百步,誰也沒有比誰強多少。固然也不要妄自菲薄,你們都是從這個階段過來的。這個階段編程很差的就好好練編程,原理不懂的就好好看書理解原理。動手作是第一位,而後不斷改一些模型的參數,看效果變化,再看背後的數學推導,理解緣由,這樣比先看一大堆數學公式的推導,把本身繞的暈暈乎乎在開始寫代碼要好得多。

  •   推薦書目
    •  數學類
      • 高等數學(同濟第七版):沒錯我說的就是考研的那本參考書,真心不錯,難易適中,配合相應的視頻或者國外的一些基礎課程的視頻看,高數理解極限,導數,微分,積分就差很少了
      • 高等數學(北大第三版):線性代數的書我看的很少,原來上學的時候學的是高等數學,不過沒關係,看前五章就好了。配合相應的視頻,掌握矩陣,行列式相關知識便可。
      • 機率論:這個沒有特別推薦的,由於學的並是不很好,因此不作推薦誤人子弟。你們無論看什麼書,只要掌握關鍵知識就好了。不能到時候問個貝葉斯你都不知道咋推吧 = =!
      • 信息論:忘記是哪一個出版社了的,很薄的一本,講的很是不錯。裏面關於信息的度量,熵的理解,馬爾科夫過程都講的不錯(如今公司裏沒有,我回去找找再補上來)。掌握這個知識,那麼對於你理解交叉熵,相對熵這一大堆名字看起來差很少可是又容易弄混的東東仍是不錯的。起碼你知道了爲啥不少機器學習算法喜歡用交叉熵來作cost function~
    • 編程類
      • 笨方法學Python(Learn Python the Hard Way)這本書對於徹底沒有接觸過Python,或者說徹底沒有接觸過編程的人來講很是適合。雖然不少人說Python這麼簡單,一天/周/月就學會了,可是每一個人的基礎是不同的,因此不要認爲本身一天沒學會就很認爲本身很蠢,你應該想這樣說的人很壞!無論怎麼樣,這是一本真正的從零開始學Python的書
      • 利用Python進行數據分析:這本書是Python的pandas這個包的詳細說明版。學習這個能夠掌握一些pandas的基本命令。然而這不是重點,由於pandas出來大量數據實在太慢了,還可能會崩潰(不知道如今有沒有改善 - -!)重點是,經過學習這本書,對數據的操做有點感受,熟悉基本的數據操做流程,裏面全部的操做均可以用原生python來替代,不須要用到pandas這個包。找感受,很是重要。
      • Python參考手冊:這本書只是做爲一個工具書,當你遇到不會的時候翻翻書,鞏固一下(固然,事實多是直接去google了),此類書不用所有從頭至尾刷完,查漏補缺便可(電子書就行)
    • 算法類
      • Deep Learning with Python:別看這又是一本英文書,但其實很是簡單易讀。我以前在工做一年的時候寫了篇總結(【原】數據分析/數據挖掘/機器學習必讀書目),也推薦了這本書。這本書其實主要是一個demo例子的集合,用keras寫的,沒有什麼深度,主要是消除你對深度學習的畏難情緒,能夠開始上手作,對總體可以作的事作一些宏觀的展示。能夠說,這本書是demo俠的最愛啦!
      • Deep Learning:中文有翻譯版的出來了,不過我其實不太想放在這裏,由於這本書其實很偏理論。有些章節講的是真不錯,有些地方你完了又會以爲,這是啥?這玩意有啥用?會把新手繞來繞去的。你們就先買一本鎮場子,有不懂的翻翻看,看不懂的就google,直接看論文,看別人總結的不錯的博客,等等。總之只要你能把不懂的弄懂就好了。

  

  懂原理俠:很不錯,你的經驗值已經提高了很多了。然而還不能開始打怪,畢竟沒有那個怪物能夠直接被噴死的。你缺乏工具。那麼這個階段,就須要多多增強編程能力。先找一個框架下下來,閱讀源碼,什麼?你說你不會閱讀源碼,不要緊,網上一大堆閱讀源碼的經驗。固然,這些經驗的基礎無一例外都是:多讀多寫。在此基礎上再找trick。下好框架的源碼後,改動一些代碼在運行,debug一下,再不斷的找緣由,看看每一個api是怎麼寫的,本身試着寫一寫。多寫多練,死磕coding三十年,你必定會有收穫的。

  懂原理+能改模型細節俠看論文看論文看論文!讀源碼讀源碼讀源碼!這裏的讀源碼不只僅侷限於讀一個框架的源碼了,能夠多看看其餘優秀的框架,對於同一個層,同一個功能的實現機制,多比較多思考多總結多寫。時間長了,確定會有收穫的。看論文是爲了直接得到原做者的思想,避免了從博客解讀論文裏得到二手思想,畢竟每一個人的理解都不同,並且也不必定對,本身先看一遍,再看看別的理解,多和大牛討論,思路就開闊了。

  超大數據操控俠這個階段我也還在摸索,給不了太多建議,只能給出目前總結的一點點經驗:儘可能擴大數據,看如何更快更好的處理。更快--採用分佈式機制應該如何訓練?模型並行仍是數據並行?多機多卡之間如何減小機器之間的網絡延遲和IO時間等等都是要思考的問題。更好--如何保證在提高速度的同時儘可能減小精度的損失?如何改動能夠提升模型的準確率、mAP等,也都是值得思考的問題。

  模型/框架架構師:抱歉,我不懂,不寫了。

 

  總結

  其實你們從我上面的推薦來看,打好基礎是很是重要的,後續都是不斷的多讀優秀的論文/框架,多比較/實踐和debug,就能一點點進步。打基礎的階段必定不能浮躁。紮紮實實把基礎打好,後面會少走不少彎路。不要跟風盲目崇拜,經典永遠不會過期,本身多看書/視頻/優秀的博客,比無腦跟風要強得多。最後,我之因此今天這麼生氣,是由於這個行業目前太浮躁了,不少人太浮誇,誤人子弟,有人說真話還被人罵噴子,真是氣死我了!你們必定要擦亮雙眼,多靠本身多努力。

  很差意思強行雞湯了一波。原本去年打算寫一個機器學習系列,可是由於工做和身體的緣由寫了三篇就沒有更了。今年上半年作了一個大項目又累得要死,下半年纔剛剛緩口氣,因此以前欠的後續必定會繼續更。爲了避免讓你們盲目崇拜,我決定寫一個深度學習系列,每週固定一篇,大概三個月完結。教小白如何入門。而且完!全!免!費!!不是簡單的寫寫網上都有的demo和調參。拒絕demo俠從我作起!有不懂的歡迎你們在個人文章下留言,我看到了會盡可能回覆的。這個系列主要會採起PaddlaPaddle這個深度學習框架,同時會對比keras,tensorflow和mxnet這三個框架的優劣(由於我只用過這四個,寫tensorflow的人太多了,paddlepaddle我目前用的還不錯,就決定從這個入手),全部代碼會放在github上(連接:https://github.com/huxiaoman7/PaddlePaddle_code),歡迎你們提issue和star。目前只寫了第一篇(【深度學習系列】PaddlePaddle之手寫數字識別),後面會有更深刻的講解和代碼。目前作了個簡單的大綱,你們若是有感興趣的方向能夠給我留言,我會參考加進去的~

  

  最後一句,低調作人,好好學習,你們下期再會^_^!

 

 ----2018.12.3更新

發現一個不錯的評論,加到原文來!

如今愈來愈發現做爲一個算法工程師,工程能力也很是重要,若是隻懂理論,不會實現,也沒有什麼競爭力。 

 

 ps:爲了方便你們及時看到個人更新,我搞了一個公衆號,之後文章會同步發佈與公衆號和博客園,這樣你們就能及時收到通知啦,有不懂的問題也能夠在公衆號留言,這樣我可以及時看到並回復。(公衆號剛開始作,作的比較粗糙,裏面尚未東西 = =,後期會慢慢完善~~)

 

能夠經過掃下面的二維碼或者直接搜公衆號:CharlotteDataMining 就能夠了,謝謝關注^_^

 

更新:我開課啦~ 點擊連接:三個月教你從零入門人工智能!!| 深度學習精華實踐課程 (免費)  就能夠看到個人課程啦,用Tensorflow講解的,天天更新一課時~

相關文章
相關標籤/搜索