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