寫在前面
我們現(xiàn)在處在了一個知識高速迭代的時代,在這個時代,你可能會有這樣一種感覺,如果學(xué)習(xí)時從頭到尾學(xué)一遍再使用(就像我們在學(xué)校學(xué)習(xí)時),會發(fā)現(xiàn)剛學(xué)完又出現(xiàn)了新的,等學(xué)了后面的理論還沒實踐,前面的又忘了。這樣的學(xué)習(xí)方式,仿佛永遠(yuǎn)在學(xué)理論,自身沒有進(jìn)步,浪費了很多時間。
在剛?cè)肟尤斯ぶ悄艿臅r候,我也是這樣的一種學(xué)習(xí)思路。先從機(jī)器學(xué)習(xí)開始,搜一些課就開始學(xué)習(xí)記筆記,然后再深度學(xué)習(xí),等學(xué)完之后,深度學(xué)習(xí)又出了新的東西,又去學(xué)理論……如此反復(fù)。表面上,我很努力,也學(xué)習(xí)到了很多理論,但是實際上,如果問這些理論的細(xì)節(jié),我大腦里面根本就模糊不清。這是因為,我學(xué)習(xí)到的這些知識,我都沒有真正的用到它。沒有機(jī)會實踐出來。所以后來我開始反思,在現(xiàn)在這個時代,我們以前的學(xué)習(xí)方式不太適用了,如果想高效率的學(xué)習(xí),需要轉(zhuǎn)換一種學(xué)習(xí)方式,不妨從實用的角度出發(fā),遇到不會的再去查漏補(bǔ)缺,這樣效率更高。?
從實用的角度出發(fā)
學(xué)習(xí)知識的時候,一切從實用的角度出發(fā),我們學(xué)習(xí)知識,都是要解決實際問題的,所以千萬不要把過多的時間都放在理論之上,因為理論知識太多了,我拿入門機(jī)器學(xué)習(xí)和深度學(xué)習(xí)來講,如果真的想做好人工智能,需要四個維度的知識(當(dāng)然這是我自己的知識框架):
編程基礎(chǔ)(Python編程,數(shù)據(jù)分析基礎(chǔ):numpy,pandas,可視化,特征工程等,深度學(xué)習(xí)框架TensorFlow,Pytorch)
數(shù)學(xué)基礎(chǔ)(數(shù)學(xué),數(shù)理統(tǒng)計,線性代數(shù))
算法基礎(chǔ)(內(nèi)功算法:算法與數(shù)據(jù)結(jié)構(gòu),外功算法:機(jī)器學(xué)習(xí)和深度學(xué)習(xí)算法)
應(yīng)用領(lǐng)域(CV,NLP,RS,預(yù)測,分類,聚類等)
對于一個剛?cè)腴T的小白來講,千萬不要從頭一個個的補(bǔ)充理論,這樣你會發(fā)現(xiàn),光數(shù)學(xué)這塊都夠你學(xué)習(xí)很長時間的,并且學(xué)習(xí)完之后忘了不說,還不會用。這就是我之前采用的學(xué)習(xí)方法。我確實浪費了一些時間。
后來我發(fā)現(xiàn),其實,我們完全可以不用全知道上面這些維度所有的知識,只需要了解一些基本概念(這個還是要了解一遍的,要不然都不知道后面講的是啥),就挑一些簡單的知識進(jìn)行學(xué)習(xí),比如數(shù)學(xué)基礎(chǔ),由于大學(xué)里我們都學(xué)過這幾門科目,所以這里其實不用那么仔細(xì)的再來一遍,一些概念比如積分,矩陣乘法,數(shù)理統(tǒng)計的一些知識有印象就可以了,編程基礎(chǔ),Python的基礎(chǔ)語法學(xué)一些,numpy,pandas等基本的使用學(xué)一些(可參考我上一篇Pandas入門),可視化的東西學(xué)一點,就是各個學(xué)點,然后就可以先上手了。
找一些項目上手練習(xí),可能一開始確實很辛苦,因為很多東西,你并不知道說的是啥,比如過擬合,欠擬合等這些東西,然后去查,去找,補(bǔ)充到自己的知識框架里面,然后再學(xué)習(xí),通過這種方式,時間長了,你會發(fā)現(xiàn),你的知識框架會慢慢的變得豐富起來,并且由于總是在用,遺忘速度也沒有那么快。這樣還可以追趕新的技術(shù)。
這是一種開始速度慢,但是加速度快的學(xué)習(xí)方式,但是出發(fā)之前,一些基本的概念,尤其是機(jī)器學(xué)習(xí)算法和深度學(xué)習(xí)算法,一些基本的概念還是必須要弄清楚明白的。上面說的這個一點,也是很重要的,不僅要全,還要精。
MAS方法–出發(fā)之前我應(yīng)該如何掌握知識
上面講的是從實用的角度出發(fā),就是我開始一個項目,從項目中學(xué)習(xí)新知識,但是能出發(fā)的前提是有了一個基本的知識框架和基礎(chǔ)了。
這個基本的知識應(yīng)該如何學(xué)習(xí)呢?或者說跟著課程學(xué)習(xí)的時候應(yīng)該如何學(xué)習(xí)呢?
這里記錄一個在課程中學(xué)習(xí)到的一個高效的學(xué)習(xí)方法,稱之為MAS方法。
Multi-Dimension:想要掌握一個事物,就要從多個角度去認(rèn)識它。
如何建立多維連接呢?
基礎(chǔ)概念:這是基礎(chǔ),一定要吃透
工具:掌握工具,鍛煉實操
題庫:想真正的了解概念,就要多練,多動手
這個過程,就是從“思維”到“工具”再到“實踐”的一個過程。如果說重要性,一定是“思維”最重要,因為思維是底層邏輯和框架,可以讓我們一通百通,舉一反三,但是思維修煉也是最難的。所以,我強(qiáng)調(diào)把學(xué)習(xí)重心放在工具和實踐上,即學(xué)即用,不斷積累成就感,思維也就慢慢養(yǎng)成了。
Ask:不懂就問,程序員大多都很羞澀,突破這一點,不懂就問最重要。
Sharing:最好的學(xué)習(xí)就是分享。用自己的語言講出來,是對知識的進(jìn)一步梳理。
修煉指南–從認(rèn)知到實踐再回到認(rèn)知,如此反復(fù)
人與人最大的差別在于“認(rèn)知”,所謂成長就是認(rèn)知的升級。
很多人存在對“認(rèn)知“的誤解,認(rèn)為認(rèn)知不就是概念么?那么你有沒有想過,針對同一個概念,為什么不同的人掌握的程度是不一樣的呢?
我們只有把知識轉(zhuǎn)化為自己的語言,它才真正變成了我們自己的東西。這個轉(zhuǎn)換的過程,就是認(rèn)知的過程。
那么如何提升自己的學(xué)習(xí)吸收能力呢?簡單地說,就是要“知行合一”。
如果說認(rèn)知是大腦,那么工具就好比我們的雙手,數(shù)據(jù)工程師和算法科學(xué)家每天打交道最多的就是工具。如果你開始做數(shù)據(jù)分析的項目,你腦海中已經(jīng)思考好了數(shù)據(jù)挖掘的算法模型,請牢記下面這兩點原則。
1.不重復(fù)造輪子
舉個數(shù)據(jù)采集的例子,很多公司,都有數(shù)據(jù)采集的需求,他們認(rèn)為某些工具不能滿足他們個性化的需求,因此決定招人專門做這項工作。而結(jié)果怎樣呢?做了1年多的實踐,工資投入幾十萬,結(jié)果發(fā)現(xiàn)Bug一大堆,最后還是選擇了第三方工具。耗時耗力,還沒什么成效。一個模型是否有相關(guān)的類庫可以使用——這幾乎是每個程序員入行被告知的第一條準(zhǔn)則。
2.工具決定效率
“不要重復(fù)造輪子”意味著首先需要找到一個可以用的輪子,也就是工具。我們該如何選擇呢?這取決于你要做的工作,工具沒有好壞之分,只有適合與否。除去研究型的工作,大部分情況下,工程師會選擇使用者最多的工具。因為:Bug少、文檔全、案例多。比如Python在處理數(shù)據(jù)挖掘上就有很多第三方庫,這些庫都有大量的用戶和幫助文檔可以幫助你來上手。
選擇好工具之后,你要做的就是積累“資產(chǎn)”了。我們很難記住大段的知識點,也背不下來工具的指令,但是我們通常能記住故事、做過的項目、做過的題目。這些題目和項目是你最先行的“資產(chǎn)”。
如何快速積累這些“資產(chǎn)”呢?三個字:熟練度。把題目完成只是第一步,關(guān)鍵在于訓(xùn)練我們工具使用的“熟練度”。
當(dāng)熟練度增加的時候,你的思考認(rèn)知模型也在逐漸提升。
總結(jié)
認(rèn)知三部曲:從認(rèn)知到工具,再到實戰(zhàn),然后如此反復(fù)。
不管是學(xué)習(xí)什么知識,我們都應(yīng)該這樣做:
記錄下你每天的認(rèn)知。尤其是每次課程后,對知識點的自我理解。這些認(rèn)知最好是通過博客或者筆記的方式整理,分享出來,不懂的也一定要問MAS。
這些認(rèn)知對應(yīng)工具的哪些操作。用工具來表達(dá)你對知識點的掌握,并用自己的語言記錄下這些操作筆記。
做更多練習(xí)來鞏固你的認(rèn)知。我們學(xué)習(xí)的內(nèi)容對于大部分外人來說,就像“開車”一樣,很酷。我們學(xué)習(xí)的內(nèi)容,對于要掌握的人來說,也像“開車”一樣,其實并不難,而且很多人已經(jīng)上路了。你需要的就是更多的練習(xí)。