看機器學習論文時,看不懂數學公式怎麼辦?
普通本科,對機器學習感興趣,老師丟給我幾篇英文論文。內含很多數學公式,不太看得懂。接下去我該怎麼做?看不懂硬看?
ps. 我的機器學習水平處於僅僅只看完ng和台大的公開課,寫過一些機器學習代碼,但量不大。
數學水平:線性代數 處於看完mit公開課水平。 概率和微積分一般。
————————————謝謝各位。已找到了答案。@Takashi 說的很對,無非基礎不夠,及不夠了解。還要繼續努力!
不請自來。現在也在對機器學習方向進行研學,每天閱讀大量的論文,同時也需要補充不少基礎。一度面臨過和題主相似的問題,斗膽來總結一下。
||| 首先是基礎知識方面:
1. 概率與數理統計 - 本質問題
我們基本可以認為當前機器學習的大部分根基都建立於概率與數理統計的理論之上,無論是NaiveBayes,HMM,概率決策樹等PGM模型,抑或是支持向量機、神經網路等「現代方法」,其背後都是有龐大的概率體系作為支撐的。我們甚至可以用概率的方式去定義Generative model和Discriminative model的本質區別:
Generative Model 計算的目標是求解,而 Discriminiative Model的計算目標是求解
在概率統計中著重需要熟練運用的概念有:
- 貝葉斯理論:重中之重,不必闡述貝葉斯理論在各類PGM中的重要性了,在神經網路的各種模型、方法、技巧中,也存在著大量的Bayes Approach Explanations
- 隨機變數的各種特徵、運算規則、分布等:其實應該和上面的放在一起說,同樣的,不必說BayesNetwork以及MarkovNetwork這樣顯而易見的模型,在當前的深度學習中,由各類分布、Factor運算、以及相應的隨機假設而推導出的方法、公式也是佔了大量比例的(比如Softmax function、Hopfield Network的父模型MRF背後的Boltzmann/Gibbs分布等)。
- 統計方法:應用領域也很多,最典型的是對於機器學習系統Performance的評判,以及一些上層改進方法(如Cross-validation等)。
- 總和上述各個方面的似然方法:大量的機器學習問題,最後都可以歸為概率-統計模型的似然求解問題,無論是問題本身的構建、求解,還是相應方法的優化,這一知識體系始終貫穿整個機器學習領域。
2. 線性代數 - 模型建立
相應地,當你把機器學習的各類問題轉換為上面的視角去理解,那麼在問題的建模、求解、優化中採用大量線性代數的知識,也不足為奇了。
3. 高等數學 - 求解方法
這一塊具體怎麼稱呼眾說紛紜,有人說要學好微積分,有人說會求導求梯度就好,有人說要把數分啃下來云云,其實在我的理解中,這些被廣泛中國大學生概括為「高數」的東西,在機器學習里的主要以及重要應用就在於——近似的藝術。
為什麼這麼說?因為整個機器學習領域,從Statistical inference到Deep learning,幾乎一路上全是各種NP-hardness,要做精確的計算,其所需計算資源隨模型複雜度是指數級上升到。所以我們需要大量的方法對模型中的運算、求解(比如凸優化等),都需要大量的近似演算法來進行,從Gradient Descent逼近(相應知識體系:梯度、極值),到Truncated Newton method(又稱Hessian-Free Optimization,可以參考我之前寫的知乎專欄,涉及到Hessian矩陣、級數展開等),以及在計算概率分布時使用的各種逼近演算法(這一塊基本就是各種微積分求解了),幾乎都逃不出「高數」的手掌心。
除此之外,如果要走學術道路,這些內容的深化與擴展,包括但不限於:泛函分析、複分析、信息學、熱力學等,對於後續的學習理解與研究啟發,也是有深刻的幫助的。
||| 接下來是學習方法方面:
這一方面我不做過於細緻的展開,因為對於每個不同的個體而言,合適的學習方法千差萬別,適合我自己的學習方法不一定適合這個答案的讀者,所以在這一過程中,我只能蜻蜓點水般地說一說,大量展開難免夾帶私貨。
學習路線:
我個人比較推薦的參考學習路線是,首先有一定的了解和基礎(比如Coursera上AndrewNg的機器學習課程),這一步主要是知道機器學習做什麼,以及一些基本的概念、方法。
然後研學PGM,看一下PGM的基礎教材,並了解一下各類概率模型在感興趣的領域中的具體應用,各種Probablistic Graphical Models包含的知識體系,視野視角,對於後序的學習都有著很高的幫助。
而後開始學神經網路,對於神經網路的學習,其實我個人覺得先從Hopfield Network學起(這一塊是徹底徹底的私貨,僅供參考),一個是模型簡單、實現方便,另一方面可以大量藉助之前PGM中學習的MRF知識進行輔助,然後又HopfieldNetwork的無向圖推到有向模型,而後展開到分層神經網路,結合之前入門時的梯度下降方法手推一遍BackPropagation,在接下來就可以研學神經網路的各種變種、不同模型的結合等等。這一過程,推薦通過論文而非教材/教程進行學習。
學習方式:
我比較推崇「深度優先學習法」,就是在學習的過程中,重視知識網的建立,遇到重要或有趣的內容,及時Dive in(但也要記得在走太遠的時候及時終止)。
比如在書、課程中遇到不熟悉/想更深了解的概念,記下來,開始進行搜索(可以從Wikipedia、Scholarpedia等進行入手,而後一併翻出各類資料來,對於重要的內容,還可以在arXiv.org等公開論文平台上獲取一些有價值的論文),對於論文的研讀過程,更可以在最後的Reference中尋找一些值得一看的論文。
這種學習方法,除了能夠對你的基礎知識進行查漏補缺,對上層知識達到觸類旁通,還有一個重要的作用:在尋本朔源的過程中,你會發現正在學的某個內容,和過去自己熟知的其他內容,本質上是同源的,很多無法理解的概念在這一瞬間,就恍然大悟了。
我自己的一個例子是在學習MRF的時候,查閱MRF Factorization與Gibbs/Boltzmann分布的關係,並且(看著統計熱力學資料)手推了一遍Gibbs/Boltzmann分布,而後突然明白Softmax分類函數、以及其作為分母的Partition Funtion的根本意義,以及後來在學到Hopfield Network時,更因為在推導Boltzmann分布的時候接觸了一部分的統計力學、動力學知識,而後涉及到Ising
模型、能量函數的本質時,也有了更自然的理解入口。
另當一提,對於初學來說,各類「水文」其實有著相當的參考價值(當然,不必精讀),主要有以下兩點:
- 初學者非常容易遇到的問題,就是「道理我都明白了,可是這玩意到底幹嘛用的/怎麼用的?」,而許多水文,文章不長,信息量稀疏,但卻能很好地作為參考,來解答新手的這一問題
- 為了保證水文看起來「不那麼水」,大量的水文背後都有著非常值得一看的Reference,可以挑出其中有價值的部分當ReadingList了。。。。
嗯。。。暫時就想到這,如果再想到什麼也會更新上來,也歡迎同行補充完善以及指正 ~
看不懂很正常,我現在也經常碰到看不懂的。沒有辦法,有些人就是喜歡在文章里寫泛函、測度這些東西,雖然用向量、積分就能說明白……
文章看不懂就不看了,審到看不懂的拒掉就好了。瀉藥,樓主的問題是一下子面臨機器學習中比較複雜的公式但是又沒人帶入門,這種情況是不太好的。如果要比較高效的改變,建議:
1. 導師或師兄帶看paper和相關推導;
2. 明確論文看不懂的部分缺的是哪塊的數學知識,針對性補充。
長遠來看,和課題或paper相關的數學知識需要系統補充,公開課和書都很好的,也可以看看我們網站的相關文章:數學 – 我愛機器學習,我們會持續更新。
看不懂的時候,先回顧一下以前學的數學基礎,還看不懂,說明不是你的問題,要嚮導師和師兄師姐請教,此外,通過文章中公式上下文中引文的描述尋找公式的原始出處,可能會有更加清晰的解釋。總之,不要害怕看公式。
題外話:平心而論,我寧可看清晰的數學公式,而不是看含糊的文字表達。數學公式即使難懂,好歹也是清晰的,如果不清楚,基本上就說明寫得有問題。但是文字寫得模稜兩可,就會導致有多種不同的理解。技能書要點對啊。給一個最快入門教科書類目吧。以周志華的書為例,在貝葉斯那章之前,需要的入門基礎是微積分,線性代數,矩陣論。其中矩陣論建議用張賢達的那本貴的,其中矩陣求導,hesse陣,後面的矩陣分解是必知必會。看完了之後如果學有餘力可以買一本boyd的凸優化,如果懶得看買一本應用最優化及matlab實現基本上最優化的基本應用可以過關。如果在這期間能閱讀馮康的數值計算方法那是極好的。後面需要用到統計學方法的需要掌握的就是多元矩陣論(好像是這個名字?)茆師松的貝葉斯統計,李航的那本經典著作,基本上需要使用統計學的知識點暫時就點滿了。偏微分可是個大坑,慎入,實函數要懂得測度,泛函要學會計算,如果實在想快速入門,老大中的變分法先看起來吧,看了基本上一般的小問題能夠快速解決,再往後,我覺得需要先點解析幾何,曲線與曲面,然後才能更好的理解關於pde求解中各種簇,錐之類的意義,一本通是數學物理方法2,全本都在講pde。快速入門我覺得10本書足夠了,要是想認真入門,路漫漫。。。
一般男票寫程序需要用到高數的內容,基本都是甩給我,我幫他解。
連特解和通解,微分了積分都分不清楚的數學渣,已經不能指望他什麼了。
當然現在會好好給他補課。
我這個答案是抖機靈的,反正你們看不見。
反正你們沒有我這樣的女朋友
我大學沒有選修數學課,高等數學基本自學。所以我有過題主一樣的經歷,我數學基本功也比較薄弱,體現在證明不夠嚴謹,對演算法的掌握依賴於直觀思考和實現,而非數學推導。所以讀數學成分大的論文(比如之前讀量子機器學習演算法的論文)也容易一頭霧水。
在寒窗苦讀一段時間之後,也算是有了一些體會。
其實讀這些paper有一個小訣竅:就是把作者的推導步驟抄一遍。就是一行一行的抄,抄一步想一步。抄到哪個地方,覺得邏輯跟不上了,就記下來,方便之後找人請教。但是遇到斷層,不要停,繼續抄到結尾為止。大部分情況下,全部抄完,整個演算法基本就能理解個差不多了。
不要怕麻煩,這個方法比大量反覆讀論文要更有效率,而且會建立理解的信心。抄完之後,再快速讀兩遍論文,也會清晰爽快的多。
假期如果有時間補理論,就推薦Bishop的Pattern Recogntion and Machine learning。是之前其他前輩推薦的。清晰易懂,數學不是特別難。時間緊的話,每章看前幾節就好。實在看不懂的公式,就先背下來(沒錯。。就是先背下來),然後學到一定程度的時候,再反回來學習理解。公式也可以用抄寫大法去學。這本書可以同時補充數學基本功和機器學習理論基本功,一箭雙鵰好東西。
這是書:
http://users.isr.ist.utl.pt/~wurmd/Livros/school/Bishop%20-%20Pattern%20Recognition%20And%20Machine%20Learning%20-%20Springer%20%202006.pdf
不請自答。該問題中,「機器學習」其實可以換為其他的許多名詞,比如「組合優化」「網路編碼」等等。
原因無非就是兩個:1. 你的基礎還不夠。 2. 你對這個領域還不熟悉。
建議的解決方法是,一邊看優秀教材打基礎,一邊把論文多看幾遍。這篇論文看不懂,就向前輩請教一些相對容易看懂的論文作引導。
上學期我導師的同學,蘇大的一位副教授來學院交流時,講述了他進入「網路編碼」這個研究領域的艱辛歷程(現在他是網路編碼領域多個國際期刊的審稿人,交流時非常謙虛),當時的說法就是一開始死活看不懂(那還是網路編碼最早的幾篇文獻,看不懂就意味著可能很難進入這個領域了),但是仍然硬著頭皮看,不斷思考,不斷理解,不知不覺地就看懂了,也不知不覺地,就進入了這個領域。
言之於機器學習,大概也是適用的吧。共勉。
這個還能怎麼辦呀,想要好好鑽研,那麼肯定追本溯源,一點一滴從基礎看起,結合文章的引用與相關自己的推倒,當然還可以求助導師和你的同門,至於想要划水么,忽悠忽悠也就過去了。。。
微積分,線性代數,概率論數理統計,這三門本科基礎課的知識足夠應付80%左右的機器學習演算法,其他更複雜的就需要補數學了
就本科平均水平來說,數學專業除外。應該是達不到機器學習入門所需的門檻的,除了最基本微積分,概率論數理統計,線性代數,還要有最優化計算方法和隨機過程的基礎。因為現在機器學習基本上都是從統計學的觀點來進行研究的,所以概率論和數理統計這一塊特別重要,還有就是最優化計算方法也是很重要的。比如牛頓法,Gradient descent method,凸優化等等都是學習器中非常常用的優化方法。而且很多東西本科就算學了也學不全,比如線性代數一般工科專業是不會涉及到矩陣求導,trace,還有奇異值分解這些東西的,所以如果不自己額外補的話,學習過程中會有困難的,感興趣的話還是建議多多加強數學基礎。
新手入門可以看周志華的那本機器學習,比較通俗易懂,但是公式很多沒有推導過程,可以配合Andrew Ng的視頻看。等有一定的基礎之後可以看看MLAPP吧
看不懂,就算了,知道怎麼換數據集的代碼,怎麼調參數就可以擼起袖子加油干!
干著干著就會了OR干著干著就感覺無所謂了!
會議論文由於頁數限制的緣故一般不可能把公式在正文里寫的那麼詳細。我建議開始閱讀的時候主要關注思路和結論。詳細的公式如果需要follow的話回過頭來再看補充材料,一般會有比較詳細的推導。
找本theory的書,比如A Probabilistic Theory of Pattern Recognition,把後面附錄搞明白差不多了。矩陣微分和計算Mike Giles有個notes不錯的或者看看理論計量的人寫的習題集Matrix Algebra by Abadir Magnus。數值優化看一看NocedalWright前面幾章就行,附錄也是極好的參考。
去補充下高數知識
如果發現完全看不下去,建議跳回去補數學。微積分和概率論
在國外讀data science,跟你情況差不多,我手邊放了本李航的《統計學習方法》,公式還是比較全的,基本上都有例題,不懂的順著例題走一遍就懂了。
看來某科主攻數理基礎還是很有道理的
@陳煒鏗推薦閱讀:
※為什麼知乎上 winter、趙劼、vczh三人常常被相提並論?
※利用爬蟲技術能做到哪些很酷很有趣很有用的事情?
※編程中,有哪些好的習慣從一開始就值得堅持?
※計算機技術類的實習要求都像說的那麼高嗎?
※寫過十年代碼是種怎樣的體驗?