一個程式設計師的數學學習探索之旅

colleen__chen發表於2015-05-05

凡是我們希望從容應對的,必須首先學會勤奮耕耘。——Samuel Johnson

只有將基本功練好,你才能變得更強。任何事情都是如此。——Earl Sweatshirt

我最近在看一些大學低年級的高數課本。為什麼?為什麼要用業餘時間來學習又難又枯燥的高數?

因為,如此美麗、強大、重要的高數,不應該只是我們平時接觸到的機器計算。那不是數學的本質。推理和觀點之間的聯絡才是數學中最重要的,才是數學之美。

我認為數學是一種未開發的力量。統計學是電腦程式設計時代的大幫手。我的理想狀態是,通過透徹地理解機器學習和機器視覺來學習統計學、概率論和線性代數。過去的5—7年裡,我一直就想這麼做。為了達到目標,我必須要有紮實的基礎,才能理解為什麼。

你問為什麼不辭職回去讀書?這真的不適合我。在自己的地盤學習,沒有壓力,我能夠盡力嘗試專案並且能在此基礎上收穫新的知識。這讓一個初學者能夠無拘無束地探索、學習。有些人可能會選擇進修學位。如果你也是這麼想的,那太棒了。這篇文章就是寫給那些不能或者不願意通過學校來學習的人。

獨處之時培養自律的習慣

當我們嘗試去學習有難度的東西的時候,會出現以下這些情況。我們盡全力約束自己,一點一點的達到目標。我們將自己訓練成一位自律的、高效的學者。我們強迫自己習慣在業餘時間來學習。

這非常具有挑戰:因為我們處於獨處的狀態。它不同於類似參加軍訓的學習,儘管它們都很困難,但是在軍訓時,你有許多同伴。打個比方說,你放棄了海豹特遣隊的訓練,你知道你的行為會直接影響夥伴和自己;你必須告訴你的朋友、家人和長官:你失敗了。但是,如果你決定在業餘時間學數學,然後半途而廢了,沒有人會知道。這不會對你造成任何影響。當然,我的意思不是學數學和成為海豹特遣隊員一樣困難,而是這件需要獨自完成的任務本身就很有挑戰性。不同的目標,不同的方法,你也許不會有許多可以互相交流的學習夥伴。這是獨自學習的魅力所在,也是困難所在。

從工作和家庭中擠出時間來學習是一件很不容易的事。我們忙碌在這個嘈雜的世界裡,而數學學習需要精神高度集中,需要長期的獨處時間。找到一個不受打擾的地方是很奢侈的。

但是,要用心。只要你不放棄,最後終會達到目標。如果你感到筋疲力盡了,休息會兒吧。如果你開始偷懶了,別擔心,我也時有發生。只要繼續努力就好了。累了或者有緊急事情發生的時候,就休息下吧。長期提升需要穩定、規律的進步。你越是自律,越是走的更快更好。當你變得更好之後,效率也就更高了。你養成的好習慣就是這樣改變你的生活的。

直面你的心魔

我曾經有許多不良的心理障礙,而且最初我甚至沒意識到它們正影響著我。很多次,我都覺得,我並沒有資格來自學數學,因為也是專家的特權。我對自己說,就算你現在不是碩士又如何呢,別擔心。這句“別擔心”影響了我數年。

我曾聽過一句忠告,大致是這麼說的:人生不能重來,你的目標就是去找到你究竟“應該”做什麼。問題是,我生來就沒有任何天賦。我唯一會的,就是花時間來磨練自己的技能,比如程式設計。我問自己:為什麼不也這樣來學習工程數學和統計學呢?

即使你沒有專業的背景,我也希望你能去追求自己喜歡的東西。

普通人未必不如天才

如果你跟我一樣,對學術工業的各種實驗研究有些畏懼,就會覺得好像平凡的我們,沒有什麼機會。但這個世界上有太多未解決的問題了,而那些高學歷的天才們又是少數,他們不可避免地會忽略一些問題。我們平凡人,其實能從更好的角度來解決問題。研究者們通常不會進行深究;他們只關注他們的課題,解決完一個課題之後,再進行下一個。有價值的洞察力會幫上大忙。我們不必把那些權威專家想得太高大上;他們大多數都只精於自己的專業領域,在另一些技能的運用上還不如你。

可悲的是,許多業內精英都在金融市場中追本逐利,售賣線上廣告。他們優秀的技能得不到施展。正因為如此,我認為,大批的興趣愛好者們擁有了在科學領域大展拳腳的機會。

主張自學數學、科學和工程學

老實講,我連發表這篇文章都覺得緊張。在花了好幾個小時來編寫這篇文章之後,我甚至將它放在 Google Drive上超過一個月。那些天才們早已熟知所有我瞭解的東西,並且還有些人是比我更優秀的軟體工程師。他們看到我的文章會怎麼評價呢?他們中的一些人雖然比我年輕,但是幾乎在每個領域都比我優秀。我必須接受這個事實。

我所期望的收穫被焦慮不安所掩蓋了。滿眼都是冰冷而微妙的期待。筆記本上會寫滿潦草的各種觀點,無解的方程和頓悟的思路。我們所學習到的知識是真正屬於自己,並且永遠不會失去的財富。讓我們勇敢的去嘗試,去質疑,去提問,去激情滿滿的學習吧。

附錄:書籍推薦

文章的最後是推薦一些我覺得很有幫助的書籍,希望你們也能喜歡。

線性代數是機器學習的重要工具,所以我從它開始講起。一開始,我的想法是使用 MIT 的同本教材。在 Gilbert Strang 的課本中附贈了講義、視訊和其它有用的資源。

可惜這本書並不適合我,所以我又找到了另一本。我喜歡 Thomas Shores 寫的《Applied Linear Algebra and Matrix Analysis》,但是後來發現它的練習有些無聊,所以,目前我比較推薦 Sheldon Axler 的《 Linear Algebra Done Right》。

當我開始讀這本書的時候,碰到了一件有趣的事情。第一章就出現了複雜的演算法。在讀完第一章之後,我意識到,開始讀這本書前,我需要做更多的功課。

當時,因為需要去複習高中數學,我覺得非常沮喪:這似乎離我的目標更遠了。有一天晚上,我甚至哭了,而且真的想過放棄。

但我明白,複習更簡單的數學是我唯一的選擇。我擺平了心態,然後著手尋找合適的教材來複習高中代數、三角和幾何。

我沒有使用類似與曾經高中教材的書,而是一些權威的數學家們編寫的書。

我找到了關於基礎代數(elementary algebra)、幾何(geometry)和三角(trigonometry)的好書。

我還梳理了有關單變數計算的知識,所用的教材是 Serge Lang 寫的。當然,我覺得它比我高中用過的書要有趣多了。

我覺得提高我學習數學的方法也很重要。我意識到,以前我做了許多無用功,因為沒有找到高效的學習方法。

我很喜歡Barbara Oakley的《A Mind For Numbers: How to Excel at Math and Science (Even If You Flunked Algebra)》。它講述了作者成為一名工程教授的非凡之路。同時,它也有許多有效的學習方法。

對於那些還沒有上過必修數學,但又想了解更高階的數學知識的人來說,一本詳解證明和數學推理的書是很有幫助的。在大學,我用的是這本《Foundations Of Higher Mathematics》。這是我學過的最有價值的課程之一。

我覺得在亞馬遜和網際網路上尋找好書是很有意義的。你會收穫許多驚喜。以下是一些我準備去讀,並且我覺得會對你的學習規劃有幫助的好書:

當然,你也會對其它知識感興趣。以下是一些你也許會感興趣的知識點:

  • 與程式語言設計相關的範疇理論
  • 與密碼學相關的抽象代數和數論
  • 與科學工程類的應用計算問題相關的微分方程,最優化控制和有限元素法
  • 與金融模型相關的Monte Carlo模擬
  • 與廣義相對論相關的微分幾何
  • 與演算法分析相關的離散數學和組合數學

大家可以有不一樣選擇。比方說,你可以看 Khan Academy 的視訊或者完成 Coursera 的課程。選擇的標準是要符合大家自己的水平和專業背景。可能性是無限大的。現在就開始吧!

感謝以下對本文做出了貢獻的朋友們(排名不分先後):Colin Barrett、Patrick Thomson、Phillip Bowden、Tom Burns,、Brandon Burton, 以及 Bradford Stephens

特別感謝 Patrick Thomson Phillip Bowden 對本文初版的校稿和建議。

相關文章