自學成才的機器學習工程師十誡
寫代碼可能會讓人變得有點沮喪,需要讓自己的周圍充滿色彩
自律和自學這兩個詞不能掉以輕心。一個人必須對自己的教育和啟蒙負責。如果你忽略它,別人就會為你做選擇。
1. 數(shù)學,代碼和數(shù)據(jù)是你最重要的三大項
任何有效的機器學習管道都是數(shù)學、代碼和數(shù)據(jù)的交叉。每一項只有和另一項在一起時才會有效果。
如果你的數(shù)據(jù)質(zhì)量很差,那么無論你的數(shù)學計算多么優(yōu)雅或代碼多么高效都沒用。
如果你的數(shù)據(jù)質(zhì)量比較高,但你的數(shù)學計算錯誤,那么你的結(jié)果可能會不是很好,甚至會更糟,造成傷害。
如果你的數(shù)據(jù)和數(shù)學都是世界級的,但是你的代碼效率很低,那么你將無法獲得擴展帶來的好處。
數(shù)據(jù)為你提供了一個包含自然瑰寶的采礦地點。數(shù)學就是你的鶴嘴鋤。代碼可以讓你建立一支揮舞著鶴嘴鋤的機器人隊伍。

這三大項是你系統(tǒng)的輸入(你擁有的)和輸出(你想要的)之間的橋梁。
注:三大項中的數(shù)學分支也包含統(tǒng)計和概率。
2. 三大項之外的唯一例外
除了不能平衡這三大項之外,還有一個更大的罪過:忘記這三大項是為誰服務(wù)的。即使是執(zhí)行得比較好、由比較優(yōu)雅的數(shù)學驅(qū)動的代碼,如果不能為客戶提供服務(wù),從最豐富的數(shù)據(jù)中獲得洞察也毫無意義。
工程師經(jīng)常會發(fā)現(xiàn)自己迷失在一個過程中,忘記了最初想要的結(jié)果。盡管他們懷著良好的意圖進行,但他們忘記了,意圖并不像行動那么重要。
三大項至少要為客戶提供點好處,總比什么都不提供要好。
需要澄清的是,如果你的先進模型需要47倍的時間才能提高1%的準確率,那么它是否提供了很好的體驗?
3. 不要被三大項給騙了
無論你多么崇拜這三大項,你都不應(yīng)該被你的愛蒙蔽。自學成才的機器學習工程師是他們自己的比較大的懷疑者。
他們知道,數(shù)據(jù)不能進行證明,只能進行反駁(只要在十億數(shù)據(jù)中有一個數(shù)據(jù)點就能證明之前的概念是錯誤的),一點點糟糕的數(shù)學運算就會產(chǎn)生極端的后果(自然不是線性的),代碼的效率只有在它最薄弱的地方才有。
無論三大項多么神圣,直覺也不應(yīng)被忽視。如果一個結(jié)果好得令人難以置信,除非你很幸運,否則它很可能就是錯的。
4. 和你需要提供服務(wù)的客戶保持好關(guān)系
讓機器做它們擅長的事情(反復重復過程)。讓你去做你擅長的事情時(關(guān)心、設(shè)身處地、提問、傾聽、領(lǐng)導、教學)。
你的客戶不像你那樣關(guān)心三大項。他們關(guān)心他們的需求是否得到滿足。
5. 向那些為你奠定基礎(chǔ)的人致敬
當你想到計算機、機器學習、人工智能、數(shù)學等領(lǐng)域時,你會想到誰的名字?
Ada Lovelace,Geoffrey Hinton,Yann LeCun,Yoshua Bengio,Alan Turing,F(xiàn)ei Fei Li,Grace Hopper,Andrew Ng,Jon Von Neumann,Alan Kay,Stuart Russel,Peter Norvig?
當然,在你聽到或記住的所有名字中,有1000個名字功不可沒,但卻從歷史書中消失了。
后起之秀應(yīng)該認可前輩們做出的巨大努力,但也應(yīng)該認可他們中的每一個人都會告訴這位新晉的機器學習工程師同樣的事情:這個領(lǐng)域的未來取決于你的工作。
6. 不要低估了完全重寫的力量
你的目標應(yīng)該是在第一時間構(gòu)建可靠的東西。但隨著技能的提高,你可能會想重構(gòu)之前的作品,拆掉它們,用新的視角重新創(chuàng)造它們。
自學成才的機器學習工程師都明白,就像大自然一樣,軟件和機器學習項目永遠不會完成,它們一直在運動。數(shù)據(jù)變化,代碼在新的硬件上執(zhí)行,一個天才發(fā)現(xiàn)了一個計算高效,低內(nèi)存依賴的優(yōu)化器適合,并稱之為Adam。
你不僅應(yīng)該對這些變化持開放態(tài)度,還應(yīng)該歡迎它們。一旦它們出現(xiàn),請使用你比較好的判斷力來判斷它們是否值得實現(xiàn)到你的系統(tǒng)中 —— 僅僅因為有些東西是新的,并不意味著它是必需的。
7. 避免在工具上濫情
在編程界,一個常見的軼事是粉刷自行車棚。它說的是一個程序員,或者一組程序員,擔心的是車棚應(yīng)該是什么顏色,而不是問一些重要的問題,比如車棚是否真的可以存放自行車。
當然,這個自行車棚也可以用電腦程序來代替。
在機器學習的世界里,你會聽到關(guān)于R還是Python、TensorFlow還是PyTorch、書籍還是課程、數(shù)學還是code first(兩者都有,記得這三位一體吧)、Spark還是Hadoop、Amazon Web Services還是谷歌云平臺、VSCode還是Jupyter、Nvidia還是……的無休止的爭論。
所有的比較都是有效的,但沒有一個值得與對方爭論。
你應(yīng)該回答的真正問題是:用什么可以讓我以最快、最可靠的方式建立我的想法?
一旦你問自己這個問題,你會發(fā)現(xiàn)其他人都在問自己同樣的問題。
工程師的詛咒是從工具開始,然后尋找問題,而不是從問題開始,然后尋找工具,只有到了那個時候,如果沒有合適的工具,才應(yīng)該去構(gòu)建它。
學習資源也是如此。數(shù)學、代碼和數(shù)據(jù)的三大項,在你學習它的時候就是不變的,唯一重要的是你如何使用它。
不要忘記:許多問題可以在沒有機器學習的情況下解決。
8. 你的想法是商品
不要把一個執(zhí)行好想法的人與竊取你想法的人混為一談。你的想法在別人手中比在你的頭腦中更有價值。
作為一名工程師,你的角色不僅是建立自己的想法,而且還要與他人溝通,向他們展示如何從這些想法中獲益。如果你缺乏這樣的溝通能力,你應(yīng)該與有這種能力的人合作,或者尋求培養(yǎng)這種能力。
在一個沒人知道該相信什么的世界里,你可以通過做真實的自己來區(qū)分自己。誠實面對你做的東西所能提供的和你所不知道的。能夠承認自己的無知是一種優(yōu)勢,而不是弱點。
好的技術(shù)總是勝利的,撒謊永遠不會勝利。構(gòu)建技術(shù)。不要撒謊。
9. 你的鄰居、同事、同學和伙伴也在思考這個問題
你看到別人的進步而嫉妒嗎?或者你把它看作是你能做到的事情的動力?
你對別人的成功的感覺就是你自己成功時候的感覺。
10. 不能貪
你應(yīng)該尋求建立你運用三大項的技能,回答那些你想要提供服務(wù)的人的問題,但你不應(yīng)該帶著欲望這樣做。欲望會詛咒你,讓你永遠過于嚴肅地看待未來,而不是享受你現(xiàn)在所擁有的。
對提高技能的渴望的治療方法是培養(yǎng)對學習的熱愛。
自學成才的機器學習工程師能夠很快地學習利用數(shù)學、代碼和數(shù)據(jù)力量所需的概念,但不能匆忙行事。他們明白學習任何有價值的技術(shù)都需要時間,如果是這樣的話,還不如享受這個過程。
從一開始,你就是對自己的啟蒙和教育負責的人。知道了這一點,你就應(yīng)該選擇那些無論你有什么樣的運氣都能成功的項目。這個項目是否滿足了你的好奇心?它是否對你的技能構(gòu)成挑戰(zhàn)?它可以讓你遵守這些戒律嗎?如果是這樣,就足夠了。
最后,在沿著自己的道路行進的同時,自學成才的機器學習工程師在他們的腦海中一直保持著這樣的印象:
- 沒有知識就沒有資質(zhì)
- 沒有行動就沒有思想
- 沒有享受就沒有學習
- 沒有風格就沒有創(chuàng)造
- 沒有實踐就沒有技巧
- 沒有工具就沒有目的
- 沒有展示沒有貿(mào)易
- 沒有懷疑就沒有假設(shè)
- 沒有貢獻就沒有消費
- 沒有對現(xiàn)在的愛,就沒有對未來的渴望
- 最重要的是,沒有三大項就沒有機器學習