丨導(dǎo)讀程序員應(yīng)該怎么數(shù)學(xué)_第1頁
丨導(dǎo)讀程序員應(yīng)該怎么數(shù)學(xué)_第2頁
丨導(dǎo)讀程序員應(yīng)該怎么數(shù)學(xué)_第3頁
丨導(dǎo)讀程序員應(yīng)該怎么數(shù)學(xué)_第4頁
丨導(dǎo)讀程序員應(yīng)該怎么數(shù)學(xué)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

劉超程序員是否需要學(xué)好數(shù)學(xué)?原本學(xué)數(shù)學(xué)分析、概率論、線性代數(shù)的時候,我也沒想到數(shù)學(xué)和寫程序有啥關(guān)系,但是隨著研究的開源軟件越來越多,我發(fā)現(xiàn)很多技術(shù)深入下去,本質(zhì)就是數(shù)學(xué)。程序員應(yīng)該怎么學(xué)習(xí)數(shù)學(xué)呢?我不建議你將大學(xué)的數(shù)學(xué)書拿出來啃一遍,一來耗費大量時間,二來和實際應(yīng)用結(jié)合不起來,往往該看的忽略了,不該看的費了半天勁用不上,過一陣又忘了。我們了解一個新技術(shù)有三個階段,第一階段是,怎么使用;第二階段是,如何實現(xiàn),原理是什么;第三階段是,為什么這樣實現(xiàn)。學(xué)數(shù)學(xué)和學(xué)一門新技術(shù)一樣,也有這樣三個階段,先用起來,了解原理,然后了解為什么。|bothub.ai創(chuàng)始人:“先廣度,再深度隨著過去幾年深度學(xué)習(xí)成為程序員界的顯學(xué),不少程序員開始回頭復(fù)習(xí)微積分、概率論和線性代數(shù)這樣的基礎(chǔ)數(shù)學(xué)課,乃至開始學(xué)習(xí)最優(yōu)化、博弈論這樣的應(yīng)用數(shù)學(xué)課。則是因為從2010年一頭扎入了計算的大坑之后,重新開始學(xué)習(xí)數(shù)學(xué)??梢哉f,這次重新學(xué)習(xí)數(shù)學(xué),為推開了程序世界中另一扇門,使得我在埋頭具體寫代碼之外,有機(jī)會重新從另一個角度,去認(rèn)識和理解“程序”和“問題的解決方案”這兩件事情。譬如說,過去幾年來的深度學(xué)習(xí),以及之前沒那么火,但是實際上早早就在搜索、這些領(lǐng)域,應(yīng)用的機(jī)器學(xué)習(xí)和推薦算法。這里面其實就是結(jié)合了微積分、線性代數(shù)、概率論之后的最優(yōu)化問題。事實上,大部分應(yīng)用領(lǐng)域的解決方案,都是把應(yīng)用領(lǐng)域的問題,形式化為一個個數(shù)學(xué)問題。在找到數(shù)學(xué)問題的“解法”之后,用寫程序的方式翻譯成實際應(yīng)用的“算法”。而能夠應(yīng)用“數(shù)學(xué)”的方式來解決問題,是從一個只能套用現(xiàn)成方案的“碼農(nóng)”,向能夠?qū)⑿聠栴}很多問題當(dāng)你知道如何用數(shù)學(xué)來解決的時候常常會有醍醐灌頂?shù)母杏X。譬如當(dāng)我第一次搞明白,中的競價問題,居然能夠變成一個博弈論中“尋找上策均衡”的問題,并且能夠通過簡簡單單的表示出來的時候,我是很有滿足感的。此外,一旦熟悉了機(jī)器學(xué)習(xí)中用到的數(shù)學(xué)知識,很多想要解決的系統(tǒng)問題,都能通過定義更好的數(shù)學(xué)優(yōu)化目標(biāo),變成一個能夠找到最優(yōu)解的程序算法,最后通過寫個程序,翻譯成數(shù)學(xué)問題來解決,這個過程帶給我巨大的身心愉悅。從工作相關(guān)的領(lǐng)域開始,是讓自己一是能有實際用得上學(xué)到的知識的機(jī)會,二是日常工作中容易耳濡目染,相當(dāng)于常常在復(fù)習(xí)。而先有廣度,是讓自己在心中有一個問題到解決方法的“地圖”,遇到具體的問題能夠?qū)Φ蒙?,容易獲得正反饋;然后再有深度,具體去對一個特定的學(xué)習(xí)應(yīng)用。當(dāng)開始深入學(xué)一個特定問題的時候,最好的方式是,追一門課程,譬如Coursera、這是因為,課程有明確的節(jié)奏,通常還會提供作業(yè)和測驗。通過作業(yè)和測驗,讓自己對自己的學(xué)習(xí)有一個聯(lián)系和反饋的過程。即使實踐中沒有足夠的應(yīng)用,過一段時間有些知識沒有那么熟悉了,但是也容易建立自己很快可以“撿”回來的信心,降低“復(fù)習(xí)”的啟動成本。跟隨課程的節(jié)奏,可以有效避免“三天打漁兩天曬網(wǎng)”的惡習(xí),讓學(xué)習(xí)有始有終。最后,給你介紹一個有程序員特色的學(xué)習(xí)方法,針對學(xué)習(xí)的內(nèi)容寫一點程序。把正在學(xué)習(xí)的問題的解法,寫一個算法實現(xiàn)出來。這是一個非常有效的練習(xí)方式。譬如學(xué)習(xí)線性代數(shù),理解仿射,反復(fù)讀書的效率對我來說,就不如找來CoingTheMarix,通過寫程序,讓學(xué)習(xí)、理解變得更深入。|40講》專欄作者:“數(shù)學(xué)是工具而在數(shù)學(xué)的學(xué)習(xí)中,首要的問題是明確需求。作為非數(shù)學(xué)專業(yè)出身的“外行”,我們使用數(shù)學(xué)的目的不是頂天,而是立地;不是上下求索艱深的理論問題,而是將生活中的具體問題抽象化,進(jìn)而加以解決。因此,對于我們這些票友來說,學(xué)習(xí)數(shù)學(xué)的基礎(chǔ)在于經(jīng)驗而非哲學(xué),比較實際的思路是秉持功利主義的原則,用多少學(xué)多少。掌握基本的線性代數(shù)與矩陣論、概率論與數(shù)理統(tǒng)計知識足以應(yīng)付日常的使用,盲目地好高騖遠(yuǎn)通常有害無益。理論化和公理化這些比較深邃的嘗試固然讓人著迷,但它們可能并沒有肉眼可見的實用性,對于絕大部分計算機(jī)從業(yè)者恐怕過于陽春白雪。其次,在學(xué)習(xí)時還要理解數(shù)學(xué)的本質(zhì)。數(shù)學(xué)是工具而非問題,是而非目的。探索世界正因如此,在數(shù)學(xué)中存在著各種各樣在現(xiàn)實中不可能出現(xiàn)的理想化模型(比如無窮小和極限的誕生),也存在著對同一個物理過程不同的建模方式(比如矩陣力學(xué)和波動力學(xué))。充分出發(fā)點,也就是所謂的數(shù)學(xué)思想與數(shù)學(xué)邏輯。任何一個工具都不是平白無故地設(shè)計出來的,它必然要解決某個特定的問題,比如線性代數(shù)與矩陣論是對具體對象的抽象表示與運(yùn)算,比如概率論和數(shù)理統(tǒng)計是對不確定性及其定型定量表示的建模。因此,在掌握每一種數(shù)學(xué)工具的微觀技巧之前,理解它們的宏觀目標(biāo)是更加重要的。只有掌握了工具誕生的背景與目的,才有可能有效地使用它們。在這里還要多說一句,數(shù)學(xué)絕不僅僅是算術(shù),把主要精力放在計算上未免因小失大。在經(jīng)典科幻《系漫游指南》中,超級計算機(jī)告訴人們,世界的終極答案是“42”——這更像是對數(shù)字主義者善意嘲諷的一個梗。但對算術(shù)的過度強(qiáng)調(diào)并不鮮見,在相當(dāng)數(shù)量的現(xiàn)行數(shù)學(xué)中,講解線性代數(shù)時開篇便給出行列式的計算方法,這種編排著實讓人費解。具體到數(shù)學(xué)每個子學(xué)科的學(xué)習(xí)方法上,相關(guān)的經(jīng)驗教訓(xùn)已然汗牛充棟,很多內(nèi)容都無需在此贅言。但在我看來,學(xué)習(xí)時值得突出強(qiáng)調(diào)的一點是舉一反三的能力。同一種工具及其背后的思想可以出現(xiàn)在不同的場景下,解決不同的問題,但是一旦深入到本質(zhì)層面,就會發(fā)現(xiàn)它們實際上是相通的。如何透過現(xiàn)象看本質(zhì),將不同場景融會貫通,才是值得鍛煉的高級能力。特征向量計算的是系統(tǒng)的不動點,在數(shù)據(jù)降維中有舉足輕重的作用,但如果熟悉電子通信的話你就會知道,對線性時不變系統(tǒng)的分析(也就是各種變換)都是基于特征向量展開的;在圖像處理中,類間方差最大化原理給出的就是圖像分割中的Otsu方法??偨Y(jié)起來,我對數(shù)學(xué)學(xué)習(xí)的幾點拙見是:把握數(shù)學(xué)的工具屬性,學(xué)習(xí)具體方法時先溯因再求果,勤于思考解決相同問題的不同方法,與解決不同問題的相同方法之間的聯(lián)系與區(qū)別。希望這幾條建議能夠在數(shù)學(xué)的學(xué)習(xí)中助你。因此,我在這里繪制了一張“程序員的數(shù)學(xué)應(yīng)用地圖”,里面包含四個部分,分別是數(shù)據(jù)結(jié)構(gòu)、編程語句、基礎(chǔ)算法,以及機(jī)器學(xué)習(xí)算法。首先我們來看最常用的數(shù)據(jù)結(jié)構(gòu)和編程語句,你對它們應(yīng)該非常熟悉。在我眼里,這些基礎(chǔ)的內(nèi)容,同樣富含了數(shù)學(xué)思維。例如,數(shù)組和鏈表就體現(xiàn)了迭代和遞歸的思想,判斷語句就是使用了邏輯(布爾)代數(shù)。對于架構(gòu)在這些數(shù)據(jù)結(jié)構(gòu)和編程語句之上的算法(為了將這些算法和機(jī)器學(xué)習(xí)的算法區(qū)分,我稱其為通用算法),除了迭代和遞歸,也體現(xiàn)了排列、組合和動態(tài)規(guī)劃等思想。整個專欄我基本上都是從數(shù)學(xué)的角度出發(fā),逐步推進(jìn)到這些知識在計算機(jī)中的應(yīng)用。不過在繪制這張應(yīng)用地圖的時候,我特意反其道而行之,從計算機(jī)編程的角度出發(fā),為你展示程序員應(yīng)該如何看待編程中的數(shù)學(xué)知識。我覺得在開始學(xué)習(xí)之前,這個地圖會給你一個大體的認(rèn)識,告訴你計算機(jī)領(lǐng)域常用的數(shù)學(xué)思想有哪些。這時,你也許會產(chǎn)生一些疑惑,同時你可以帶著自己的思考和問題去逐篇學(xué)習(xí)。等你學(xué)完整個專欄之后,再回頭來看看這個地圖,應(yīng)該會有更深的感觸。我希望這種雙向打通,能夠進(jìn)一步加強(qiáng)你的學(xué)習(xí)體驗。 不得售賣。頁面已增加防盜

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論