作者:Jack47
轉載請保留作者和原文出處
首先說明一下,我的學習目標是要把機器學習實際應用起來,而且要基本搞懂背后的數學知識。由於每個人學習的目的不同,所以大家的做法可能不盡相同,但背后的學習方法其實都是八九不離十的,掌握了好的學習方法,可以事半功倍!
強烈推薦 <<學習之道>> 這本英文翻譯過來的書,結合作者在coursera上的對應課程,效果更佳,作者講的比我這里寫的好上百倍!花上7天的的時間,每天1h,基本就能看完。我下面寫的東西,其實都是對這本書里學到的東西在我學習機器學習時的具體實踐。
學習方法
找到激勵和驅動自己的“神秘力量”
- 對我而言,學習本身就是一件很有意思的事情,一直對機器學習感興趣,最近因為工作需要,下定決心要好好學習一番,想花3個月的時間來入門。
- 組建了一個微信討論組,大家會在群里討論不懂的地方。回答別人的疑問,拋出自己的疑問,大家一起學習,是比較容易堅持下來的。
你也可以找到你自己的驅動力!
高效的學習,而不是“努力”的學習
使用番茄工作法,關注過程,而不是結果。列一個周表格,寫上這周要完成的事兒。每天晚上睡覺之前,做兩個事情:1. 花個5分鍾回顧一下今天學到的東西,研究表明這樣會幫助你的大腦在睡覺的時候,把你學到的東西轉化到長期記憶中!2. 想好早上起來要看哪部分內容,提前做好准備工作。
早上自己精力最充沛時,學習最難的部分
上一步說了每天晚上睡覺之前想好第二天要學習的內容,那么早上起來,在自己電量滿格時,精力最充沛時,學習今天最難的部分吧。
完成目標后,獎勵自己
完成當天,每周的目標后,獎勵自己,這樣可以培養成一個良性循環。
盡量使用英文的學習資料
因為計算機技術,機器學習起源自西方,英文的資料浩如煙海,是第一手的資料。
我從4年前開始,技術資料都是用Goole搜索英文關鍵詞,所以現在閱讀一般的英文資料,對我而言易如反掌。我平常也會聽亞馬遜的有聲讀物來練聽力,這條路一開始會比較難,但是如果你知道“復利”的含義,你知道你現在的復出,未來會有指數級的回報!
資料很多怎么辦?
要有主心骨,比如以視頻課程進度為主,中間遇到問題,去查資料,如果資料很多,可以記錄到一張紙上/evernote 上。因為太早看過多資料,效果反而不好,先把基本的概念搞清楚。
多讀資料的好處是各個資料的角度會有所不同,所以可以從各個方面幫助你理解新東西。例如backpropagation,通過 neurnetworks and deep learning 一書,你就知道了除了這種方法,還有什么方法可以計算 dC/dW ? backpropagation 為什么會比較快? 它是 1986 年提出了,極大了擴大了NN能夠解決的問題范圍。因為之前都受限於算法的速度。
每天學習一點
不要妄想段時間能就能掌握好,學習是有一個過程的,如果學習速度過快,反而效果不好。就跟大學里考試的最后時間突擊應付考試一樣,這種學習方式長期效果非常不好。有一些新穎的概念,接納起來是需要時間的,這就是大腦運轉的規律,順着規律,你會學的很舒服,逆着規律,會讓自己事倍半功,而且容易產生負面情緒。
不要被學會的假象所蒙騙
千萬不要覺得自己學完了視頻,做了里面的題,就認為自己會了哦。就像機器學習里的Cross Validation一樣,一定要用習題或者實踐來檢驗自己,Andrew Ng在Coursera上機器學習課程的缺點之一就是小測驗不足。怎么彌補呢?此時你可以去Coursera課程的論壇里,或者學習討論小組里看看其他人提的問題,可以幫助他們解答。回想你學過的知識,怎么把他們整體串起來?
給別人解釋問題,或者教會別人你學了的東西,是檢驗你是否學會的好辦法。
做好筆記
推薦Cornell筆記方法。把一頁筆記分成三個區域,讓你養成留下自己的疑問,一句話高度總結的習慣。
紙質筆記比電子筆記效果要好,手寫公式,手寫推導過程,這樣能夠培養你的肌肉記憶,就如同NBA球員要大量練習投籃這個動作一樣。不信你就試試,你會發現效果的
不要被困難阻擋住
把心中的疑問放大,但是不要讓他阻擋你前進的腳步,學完這一段,有個整體認識之后,再來攻克這一小節。這跟工作一樣,得把當天的活干的差不多了,再回頭攻克這個問題。不然一直盯着某個問題,容易思路受限,而且也沒有利用到大腦的diffuse 模式
比如 NN 這一節,那個反向傳播的公式里,那幾個參數當時就沒搞懂,一直蒙蒙呼呼的,我大概花了一周時間,才把他們搞明白。期間我看了 Multivariate Calculus, Maximum likelihood, 也學完了下一節課 Support Vector Machine。雖然都沒有立馬解決我的疑惑,但是最終證明都是有幫助的。最終有一天我看到了網頁上我之前打開的 neuralnetwork and deep learning chap2.html, 花了一上午時間學習完(邊看,邊在紙上埋頭演算,確保自己理解了)后,發現沒有什么神秘的。跟高中數學課類似,用了一些簡單的技巧進行轉化。畢竟我們不是發明這套東西,而是搞清楚背后的數學原理,所以已經知道結論,只需要證明就好了。
對於抽象的東西,進行擬人化
想象自己是一個特征,經歷了Neural Network中的好幾個層。這些層都對你做了些什么,可能在第一層,你克隆了,通過W1為你加持(weighted)出好幾個孩子,成為l2里每個節點輸入的一部分,然后歷經 sigmoid函數的轉化,它們成功進入了l3層,在此過程中,可能你的孩子有一些發揮了很大作用,有一些沒有。
對於反向傳播(backpropagation),可以想象成它就是根據實際的績效來論功行賞。這樣你的孩子們的權重是不斷的在調整,最終目的就是利用訓練集合里大量的數據,打磨出一套參數,讓整個網絡預測的效果達到最好!
刻意練習
不要停留在簡單的理解上面,俗話說“欲窮千里目,更上一層樓”。要想提高,就得練習比較難的部分,取法其上,得乎其中。具體做法,可以是去了解背后的數學原理,或者找找習題來做,或者去kaggle上找實際的賽題來做。
交叉學習
比如在學習機器學習的同時,可以學習需要用到的數學知識,兩者交叉着學。或者在學習 Logistic Regression 時,也可以同步學習 Linear Regression, 比較他們的異同點及優缺點。這樣的好處是讓你能夠跳出當前的這一課看問題。
學會總結
以下是我自己給自己提的問題,讓我自己去總結學到些什么東西
What is cost function
Are cost functions all the same?
What is Linear Regression
[How to distinct linear or nonlinear?]((http://statisticsbyjim.com/regression/difference-between-linear-nonlinear-regression-models/))
Why using linear regression? is there other regression?
Why using Ordinary Least Square as cost function in linear regression?
Why using cross entropy as cost function in logistic regression?
The relationship between neural networks, linear regression and logistic regression?
What is SVM?
Why using SVM?
好了,以上就是所有內容了,歡迎留下你的學習方法!
如果您看了本篇博客,有所收獲,請點擊右下角的“推薦”,讓更多人看到!
