新手如何快速入門深度學(xué)習(xí)
深度學(xué)習(xí)必備基礎(chǔ)
深度學(xué)習(xí)發(fā)展至今已然有幾個年頭了,上個世紀(jì)九十年代的美國銀行率先使用深度學(xué)習(xí)技術(shù)做為手寫字體識別,但深度學(xué)習(xí)的驚艷登場并沒有留住它一時的輝煌, 直到2012年深度學(xué)習(xí)這個領(lǐng)域才開始漸入人們的眼簾??梢哉f我們現(xiàn)在擁有著***的學(xué)習(xí)機(jī)會,世界***的會的議論文,各大數(shù)據(jù)庫公開的數(shù)據(jù)源以及開源的力量已經(jīng)讓我們站在了巨人的肩膀上去成長。下面就給大家分享一份深度學(xué)習(xí)入門指南,讓大家能更快更好的加入深度學(xué)習(xí)這個璀璨的舞臺。
必備技能1-Python:
python我就不必多說啦吧,有多方便大家用過了都知道,這里強(qiáng)調(diào)這點是因為,現(xiàn)在無論是公開的論文還是代碼基本在深度學(xué)習(xí)這個領(lǐng)域都是python為主流的,我在學(xué)習(xí)的過程中一個最重要的點就是學(xué)習(xí)別人的代碼,通過把高手的代碼debug一遍我們才能真正的懂一個技術(shù)的原理,那么在這個領(lǐng)域里高手們的代碼很多都是python版本的。更重要的一點是,我們?nèi)腴T這個領(lǐng)域肯定不會自己動手一步一步的去實現(xiàn)所有需要的技術(shù)代碼,一個最直接的學(xué)習(xí)方法就是結(jié)合開源的框架,那么可以說深度學(xué)習(xí)的開源框架基本都是python接口的,能用這些開源框架是我們學(xué)習(xí)的一個最基本的手段啦,所以重要的事情說三遍,python!python!python!
必備技能2–線性代數(shù),微積分
很多同學(xué)該覺得很頭疼了。。。,怎么有是數(shù)學(xué)啊,沒錯咱們深度學(xué)習(xí)需要很好的數(shù)據(jù)基礎(chǔ),我所說的這倆簡直就是九牛一毛,但是作為我們?nèi)腴T來說已經(jīng)夠啦。其實咱們所有的深度學(xué)習(xí)是什么呢?它就是一個復(fù)雜的人工神經(jīng)網(wǎng)絡(luò)嘛,那么要去能懂這個神經(jīng)網(wǎng)絡(luò)的原理,有機(jī)器學(xué)習(xí)基礎(chǔ)的同學(xué)們肯定都知道,其實就包括了兩部分嘛,前向傳播和反向傳播。這兩部分一個最最最核心的點就是矩陣計算和梯度求導(dǎo)運算啦,所以說咱們要能入門這個領(lǐng)域,這些數(shù)學(xué)可是還要復(fù)習(xí)起來的。
必備技能3–英文閱讀能力:
這個還需要說啥子嘛?技術(shù)都是國外搬來的,咱們要學(xué)習(xí)的肯定都是國外各路大神的作品啦,比如課程呀,論文呀等等,那么要能跟上大神們的腳步,這點肯定是不能少的吧。
必備技能4–查找資料能力:
這點其實是蠻重要的,也就是我們在學(xué)習(xí)的過程中,要積累一些數(shù)據(jù)庫還有好的學(xué)習(xí)資源,比如公開的代碼呀,這也就要我們經(jīng)常去逛逛技術(shù)博客,github呀看看有木有一些適合咱們學(xué)習(xí)的東東,找到有價值的學(xué)習(xí)資源比咱們自己埋頭苦學(xué)更有價值的。
避開常見誤區(qū)
深度學(xué)習(xí)這個領(lǐng)域的坑可以說還是蠻多的,咱們在進(jìn)軍的路上
一定要避開這些了。
自己挖的坑:
咱們在學(xué)習(xí)的過程中一定要循序漸進(jìn),切不可急于求成。這就像練武功一樣,一味的求快求狠只能走火入門。這里我暫且認(rèn)為想要入門的同學(xué)們的基礎(chǔ)都是比較薄弱的,咱們不能跳過傳統(tǒng)機(jī)器學(xué)習(xí)這條路直接一大步邁進(jìn)深度學(xué)習(xí)這個領(lǐng)域中,我們起碼要知道神經(jīng)網(wǎng)絡(luò)是怎么一回事。這對于咱們理解以及掌握深度學(xué)習(xí)有著重要的幫助,比如咱們***步要做的就是去搞明白什么是前向和反向傳播以及從頭到尾的自己推導(dǎo)一遍,有了這樣一個過程咱們再去學(xué)習(xí)深度學(xué)習(xí)就會輕松多啦。千萬不可自欺欺人,一步還沒走穩(wěn)呢就著急跑去下一個知識點啦,在積累的過程中不要給自己挖坑,確保自己搞明白一個點啦再去深入到下一個點中。
掉進(jìn)別人的坑:
我們在學(xué)習(xí)的路上肯定會挖掘到很多的資源,但是這些資源不可盲目學(xué)習(xí),我們需要有一定的鑒別能力。就好比說我們跟著一個武功一般的學(xué),怎么也不會學(xué)到哪里去,但是我們給一個武林***當(dāng)小弟,我們學(xué)到的也不會少嘛。這就是說我們要學(xué)習(xí)的資源一定要是通過了大家的認(rèn)可的,在我看來現(xiàn)在百度到的很多資源其實錯誤的地方還是蠻多的,我們盡量多關(guān)注一些國外大神的主頁以及github上比較火的項目。
學(xué)習(xí)路線圖
這個路線圖是針對咱們要入門的同學(xué)制定的,已然成神的同學(xué)們可不使用哦。
(一)入門神經(jīng)網(wǎng)絡(luò):
對于咱們要入門的同學(xué)來說,***部也是最重要的一步就是能夠去懂什么是神經(jīng)網(wǎng)絡(luò)以及把整體流程從頭到尾的推一遍,神經(jīng)網(wǎng)絡(luò)這個東西還是蠻抽象的,這里有一個入門的課程大家可以參考下深度學(xué)習(xí)全民皆兵
把神經(jīng)網(wǎng)絡(luò)以及深度學(xué)習(xí)所需的每一個知識點都從頭到尾的推了一遍還是很不錯的。
(二)選擇一個深度學(xué)習(xí)方向:
深度學(xué)習(xí)現(xiàn)在來說有兩個方向比較成功,一個是自然語言處理,另一個是計算機(jī)視覺。在學(xué)習(xí)的路上,我們需要選擇一個自己喜歡的方向去深入,有的同學(xué)可能會說我都想去研究個究竟,其實只要有時間這些都不是事。但是我覺得還是選擇一個方向去深入比較好,無論對于研究還是工作我們不可能同一階段去弄這兩個事,所以確定好一個深度學(xué)習(xí)的方向還是很重要的。當(dāng)我們選擇好方向之后我們要學(xué)習(xí)的東東就確定了,對于自然語言處理我們要學(xué)習(xí)的就是RNN現(xiàn)在更火的是LSTM,對于計算機(jī)視覺我們要學(xué)習(xí)的就是CNN,大家如果聽不懂這幾個縮寫,沒關(guān)系的等咱們真正走到了這不的時候再去了解也來得及,這里我們只需要知道我們要兩個方向可以選擇。
(三)論文與代碼:
對于選擇好的方向我們首先要弄懂這個網(wǎng)絡(luò)的原理,***的辦法就是邊學(xué)邊做,結(jié)合一個實際的項目。有的同學(xué)可能比較愁,我哪有實際項目去結(jié)合啊,其實咱們github上的每一位大神的代碼咱們都可以當(dāng)成是一個實際的項目呀,比如人臉檢測,物體識別呀,這些公開的代碼就是咱們練手的利器呀,我們首先需要從頭到尾的完全理解一個找好的項目,這其中包括了很多內(nèi)容了。比如學(xué)習(xí)一個深度學(xué)習(xí)框架,應(yīng)用公開數(shù)據(jù)集,訓(xùn)練模型等等。從我自身學(xué)習(xí)的經(jīng)驗來說,最有價值的做法就是,在一些高端會議上找到一篇開源的而且做的事是咱們感興趣的的論文,首先通讀論文,然后對應(yīng)于開源的代碼開始大干一波 (就是把代碼和論文對應(yīng)上,確保自己完全理解),還有些需要注意的點比如說咱們一定要找***的論文和代碼,這些應(yīng)該就不用我多說啦。在完成了一個項目之后,咱們就有一定功底啦,可以說咱們已經(jīng)入門深度學(xué)習(xí)這個領(lǐng)域啦,但僅僅是入門,切不可就此止步。
【本文是51CTO專欄作者唐宇迪的原創(chuàng)稿件,轉(zhuǎn)載請注明出處】