當前位置:
首頁 > 知識 > 學習 7 問:一位世界頂尖演算法工程師的學習之道

學習 7 問:一位世界頂尖演算法工程師的學習之道

在科技飛速發展,知識不斷迭代的時代,從哪獲取最新的知識?怎樣快速入門一門技術?如何利用龐大的網路課程資源,如何閱讀到最前沿的論文?是擺在每個學習者面前的問題。

知識可能會被淘汰,但優秀的方法不會。百度資深演算法工程師童牧晨玄老師,在多年的工作中,通過掌握知識背後的基本原理,打造了自己的學習利器。就讓我們一起來看看,他是如何學習,將知識化為己用的。

Q1: 讀了童老師幾年前寫的《登峰造極的藝術》,蠻有感觸。想請問下,這幾年下來,你現在對此書中的思想有什麼新的體會嗎? 尤其是就技術方面的學習而言。

A: 《Mastery》的觀點對我影響比較大,特別是學基礎性知識。技術肯定沒辦法精通每個東西,先了解最基本原理。我們課程的設計也是這樣。現在市面上 Tensorflow 上的書一般不會講背後的原理,看完可能會用,但對為什麼這麼設計完全不清楚。這樣學一個技術可能短期內看不出區別,但長期肯定有影響。

另外的啟示是學技術不要太功利,就是愛上基本功本身的練習,如果本身很厭惡的話,也很難堅持下來。回到技術學習上,就是要對技術本身的好奇心,對背後的設計很感興趣,就會去鑽研。所以就是保持好奇心,從原理出發理解。當然有個特定的目標,比如輸出一本書、完成一個項目等也是完全沒有問題的。但是對功利之外,一定要對本身有好奇心,學習時不要只圍繞那個目標優化它。

往深挖,往基礎挖容易走向另一個極端,需要做出一些實用的或者你喜歡的東西(另一個牽制目標),這樣比較實際,也容易堅持。

Q2: 童老師,你是怎麼看從 Stackoverflow 類似問答平台尋找答案借鑒呢?會不會過於依賴,導致自身發展變得局限呢?能結合自身的經歷談談嗎?

A: 有幾種情況:1. 特別奇怪的問題(版本衝突、操作系統 BUG),沒必要深究;2. 剛上手的庫,找一些使用的例子,是很好的入門手段;3. 想用一個庫解決問題,但是不知道怎麼解決,可以參考別人的。還有一些編程語言和計算機底層問題,優先解決問題。但如果老是遇到此類問題,用 Stackoverflow 效率可能不是很高,需要在平時慢慢系統補充基礎知識。

問答平台是一個很好的手段,但不能代替系統學習。個人推薦一種迭代學習的方法,通過解決一個問題發現知識的漏洞,找個時間系統補充這方面的漏洞。另一方面,如果學到新的理論知識,可以寫一些小的 Demo,實現的過程讓你對理論理解的更加深刻。如果你不能用程序表達出來,說明你並沒有真正理解它。

Q3: 什麼時候造輪子比較有價值?

A: 個人感覺造輪子和讀書時的輸出比較類似。是一種提高自身水平的重要學習手段。但是如果不通過讀代碼、學習理論提高自己的水平,一直造輪子的話只會造成「低水平重複」。當然工作上,如果你需要做的這個東西現有的 library 確實沒法做到,或者改造成本很大,那確實也需要造輪子。

學習的話有個不錯的練習,比如用仿照 Tensorflow 介面來造一些小的功能。工作中主要不是為了學習,會花很多精力去思考介面。另外,不一定要從頭造輪子,比如 Tensorflow 現在還不完善,你可以為這些項目做一些貢獻。

Q4: 演算法書什麼時候適合看?要關注哪些方面?比如童老師之前在豆瓣提到《演算法導論》(Thomas H.Cormen 著)這本書?演算法這個範圍很大,不知從哪裡入手?

A: 這個演算法對機器學習工程師來說不是特別重要,優先順序比較低,除非你日後轉向 Tensorflow 底層的優化,不過面試可能會考一些基本的演算法,可以結合刷題的網站刷一下。

Q5: PRML 和 MLAPP 這兩本怎麼樣?麻煩童老師推薦一些演算法學習的資料。

A: PRML 是一本比較經典的教科書,但沒有深度學習的內容。個人覺得你想要深入理解深度學習,需要看一些機器學習的理論,有一些不是很難,但會給你發展出一些 In-sight,在實際當中很有用。

MLAPP 感覺還不錯,有一點太厚了,很難從頭到尾讀完。台大林老師在網上有個《機器學習基石》的課程(http://t.cn/RVtiLMA),基本上是這個課程的簡化版本,建議大家看下這個版本,對你深度理解機器學習各種演算法也是有好處的。具體到深度學習這一塊,對你打好理論基礎比較好的一本書就是 Goodfellow 和 Bengio 的《DeepLearning》,個人建議把那個本書的內容看懂再去看論文收穫會更大。因為教科書就是把領域內最重要的知識匯總在一起,一般亞馬遜評價較高的教科書可讀性還是非常高的。 因為深度學習發展太快,MLAPP 這本書的一些內容可能已經過時了。《DeepLearning》那本書還不算過時。

Q6: 怎麼判斷論文質量,就是從論文看到某個結論或演算法,不知道靠不靠譜,有沒有一些 metrics 或者標準來看呢?比如ICLR 2017上這篇文章里提到的 ICLR 評分(http://t.cn/R0pI5z5)。

A: 超過一年的老論文在 Google 學術上看引用數,比較新的論文參考作者發在什麼會議上。ICLR 是質量比較高的。

看論文一般先看摘要和實驗,摘要就看做了什麼,實驗看結果如何。 讀論文需要講究順序,和同主題其他文章比,每個主題熱門程度不一樣,一年 100 個引用是比較好的文章。

一般找一個方向特別經典的論文不多,找引用數最高的前 10 篇或 20 篇文章,按年份順序讀,需要精讀,徹底吸收他的思路和做實驗的方法、數據集,基本就把這個領域框架給抓住了,剩下的基本是拓展性工作,對於你對這個領域的理解並沒有那麼深刻的幫助。

但是光靠狂讀論文不一定是特別好的方法,我當時讀書時找到一個機器學習理論做的很好的人,去做他的助理。他讓我不要看教科書,直接看論文,把領域內最近的文章至少讀 300 篇,只有兩個星期的時間全部讀完。就至少知道了這個領域有哪些工作是有人做過的,大概用了什麼方法,你會看到很多方法有一些共同性,但一些高階的方法你複製不了。後來覺得這樣學不太對勁,就狂補理論方面的基礎,補完後再看論文發現確實不一樣,感覺會看的非常通透。

所以,我個人推崇先去想辦法把領域內最重要的十幾篇論文看懂,裡面提到缺什麼理論看不懂就去補,因為這往往是這個理論最重要的研究方法。中間也可以去看一些比較新奇的論文,吸收 20%-30%,看一下領域內大家都在做什麼工作。但初期還是要理解那些特別經典的論文,抓住它們的精髓。

反過來說,很多經典論文並不一定難,很多是 In-sight(洞察力),並不是用了多複雜的理論方法。一般特別經典的論文,至少很大一部分是讓你有 In-sight,能看懂。

深度學習有一點特殊,比較新,發展也非常快。以前特別經典的論文雖然引用數很高,但其中的一些 trick 可能已經過時了。

Q7:童老師可以給我推薦一些學習資料嗎?

我個人比較推薦的還是《Learning From Data - Online Course》(http://t.cn/RvlpOkq)那門課和《機器學習技法》,如果看《Learning From Data》,《機器學習基石》可以不用看。這兩個偏理論,《技法》講一些 tricks,不僅僅局限於深度學習。

PRML 主要講貝葉斯,如果感興趣也是本不錯的書,深度學習主要看《DeepLearning》這本書。

另外就是周志華老師的《機器學習》也是本總體方面不錯的書,個人感覺偏理論的書大家覺得看視頻或者聽課比看書容易些,可能由於視頻有動畫演示,另外視頻速度比較慢。所以如果看這種理論的書,需要對自己的速度有個合理的預期。看書不在於多,而在於看你投入多少思考,收穫多少,有沒有挑戰一些你原來沒有思考過的東西。

另外,對技術書籍來說,往深挖或者基本功會讓你感覺不舒服。根據目前的程度看些相對較難的書,這個比較耗費精力和意志力,能夠持續的時間也有限。所以應該將基本功的練習或挑戰性的內容分散到每一天。

推薦的學習方式: 《追求神乎其技的程式設計之道(五)》(http://t.cn/zO73SX2 )

——- 學習人工智慧,創造你的未來 -——

掌握深度學習原理

搭建神經網路模型

熟悉自然語言處理

開發智能個人助理

註:深度學習基礎班二期名額即將售罄,預購從速!

立即購買,成為創造未來的人!

GIF/28K


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 開智微播 的精彩文章:

下一站未來,深度學習基礎班二期即將售罄
這 5 個高效工作好習慣,你培養了幾個?
深度學習究竟「深度」在哪裡?
工作 7 問:一位資深演算法工程師的工作之道

TAG:開智微播 |