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