自學成才的機器學習工程師十誡

語言: CN / TW / HK

持續創作,加速成長!這是我參與「掘金日新計劃 · 10 月更文挑戰」的第20天,點選檢視活動詳情

導讀

使用數學,程式碼和資料來揭示大自然的祕密。

圖片

寫程式碼可能會讓人變得有點沮喪,需要讓自己的周圍充滿色彩

自律和自學這兩個詞不能掉以輕心。一個人必須對自己的教育和啟蒙負責。如果你忽略它,別人就會為你做選擇。

1. 數學,程式碼和資料是你最重要的三大項

任何有效的機器學習管道都是數學、程式碼和資料的交叉。每一項只有和另一項在一起時才會有效果。

如果你的資料質量很差,那麼無論你的數學計算多麼優雅或程式碼多麼高效都沒用。

如果你的資料質量最高,但你的數學計算錯誤,那麼你的結果可能會不是很好,甚至會更糟,造成傷害。

如果你的資料和數學都是世界級的,但是你的程式碼效率很低,那麼你將無法獲得擴充套件帶來的好處。

資料為你提供了一個包含自然瑰寶的採礦地點。數學就是你的鶴嘴鋤。程式碼可以讓你建立一支揮舞著鶴嘴鋤的機器人隊伍。

圖片

這三大項是你係統的輸入(你擁有的)和輸出(你想要的)之間的橋樑。

注:三大項中的數學分支也包含統計和概率。

2. 三大項之外的唯一例外

除了不能平衡這三大項之外,還有一個更大的罪過:忘記這三大項是為誰服務的。即使是執行得最好、由最優雅的數學驅動的程式碼,如果不能為客戶提供服務,從最豐富的資料中獲得洞察也毫無意義。

工程師經常會發現自己迷失在一個過程中,忘記了最初想要的結果。儘管他們懷著良好的意圖進行,但他們忘記了,意圖並不像行動那麼重要。

三大項至少要為客戶提供點好處,總比什麼都不提供要好。

需要澄清的是,如果你的先進模型需要47倍的時間才能提高1%的準確率,那麼它是否提供了最好的體驗?

3. 不要被三大項給騙了

無論你多麼崇拜這三大項,你都不應該被你的愛矇蔽。自學成才的機器學習工程師是他們自己的最大的懷疑者。

他們知道,資料不能進行證明,只能進行反駁(只要在十億資料中有一個數據點就能證明之前的概念是錯誤的),一點點糟糕的數學運算就會產生極端的後果(自然不是線性的),程式碼的效率只有在它最薄弱的地方才有。

無論三大項多麼神聖,直覺也不應被忽視。如果一個結果好得令人難以置信,除非你很幸運,否則它很可能就是錯的。

4. 和你需要提供服務的客戶保持好關係

讓機器做它們擅長的事情(反覆重複過程)。讓你去做你擅長的事情時(關心、設身處地、提問、傾聽、領導、教學)。

你的客戶不像你那樣關心三大項。他們關心他們的需求是否得到滿足。

5. 向那些為你奠定基礎的人致敬

當你想到計算機、機器學習、人工智慧、數學等領域時,你會想到誰的名字?

Ada Lovelace,Geoffrey Hinton,Yann LeCun,Yoshua Bengio,Alan Turing,Fei Fei Li,Grace Hopper,Andrew Ng,Jon Von Neumann,Alan Kay,Stuart Russel,Peter Norvig?

當然,在你聽到或記住的所有名字中,有1000個名字功不可沒,但卻從歷史書中消失了。

後起之秀應該認可前輩們做出的巨大努力,但也應該認可他們中的每一個人都會告訴這位新晉的機器學習工程師同樣的事情:這個領域的未來取決於你的工作。

6. 不要低估了完全重寫的力量

你的目標應該是在第一時間構建可靠的東西。但隨著技能的提高,你可能會想重構之前的作品,拆掉它們,用新的視角重新創造它們。

自學成才的機器學習工程師都明白,就像大自然一樣,軟體和機器學習專案永遠不會完成,它們一直在運動。資料變化,程式碼在新的硬體上執行,一個天才發現了一個計算高效,低記憶體依賴的優化器適合,並稱之為Adam。

你不僅應該對這些變化持開放態度,還應該歡迎它們。一旦它們出現,請使用你最好的判斷力來判斷它們是否值得實現到你的系統中 —— 僅僅因為有些東西是新的,並不意味著它是必需的。

7. 避免在工具上濫情

在程式設計界,一個常見的軼事是粉刷腳踏車棚。它說的是一個程式設計師,或者一組程式設計師,擔心的是車棚應該是什麼顏色,而不是問一些重要的問題,比如車棚是否真的可以存放腳踏車。

當然,這個腳踏車棚也可以用電腦程式來代替。

在機器學習的世界裡,你會聽到關於R還是Python、TensorFlow還是PyTorch、書籍還是課程、數學還是code first(兩者都有,記得這三位一體吧)、Spark還是Hadoop、Amazon Web Services還是谷歌雲平臺、VSCode還是Jupyter、Nvidia還是……的無休止的爭論。

所有的比較都是有效的,但沒有一個值得與對方爭論。

你應該回答的真正問題是:用什麼可以讓我以最快、最可靠的方式建立我的想法?

一旦你問自己這個問題,你會發現其他人都在問自己同樣的問題。

工程師的詛咒是從工具開始,然後尋找問題,而不是從問題開始,然後尋找工具,只有到了那個時候,如果沒有合適的工具,才應該去構建它。

學習資源也是如此。數學、程式碼和資料的三大項,在你學習它的時候就是不變的,唯一重要的是你如何使用它。

不要忘記:許多問題可以在沒有機器學習的情況下解決。

8. 你的想法是商品

不要把一個執行好想法的人與竊取你想法的人混為一談。你的想法在別人手中比在你的頭腦中更有價值。

作為一名工程師,你的角色不僅是建立自己的想法,而且還要與他人溝通,向他們展示如何從這些想法中獲益。如果你缺乏這樣的溝通能力,你應該與有這種能力的人合作,或者尋求培養這種能力。

在一個沒人知道該相信什麼的世界裡,你可以通過做真實的自己來區分自己。誠實面對你做的東西所能提供的和你所不知道的。能夠承認自己的無知是一種優勢,而不是弱點。

好的技術總是勝利的,撒謊永遠不會勝利。構建技術。不要撒謊。

9. 你的鄰居、同事、同學和夥伴也在思考這個問題

你看到別人的進步而嫉妒嗎?或者你把它看作是你能做到的事情的動力?

你對別人的成功的感覺就是你自己成功時候的感覺。

10. 不能貪

你應該尋求建立你運用三大項的技能,回答那些你想要提供服務的人的問題,但你不應該帶著慾望這樣做。慾望會詛咒你,讓你永遠過於嚴肅地看待未來,而不是享受你現在所擁有的。

對提高技能的渴望的治療方法是培養對學習的熱愛。

自學成才的機器學習工程師能夠很快地學習利用數學、程式碼和資料力量所需的概念,但不能匆忙行事。他們明白學習任何有價值的技術都需要時間,如果是這樣的話,還不如享受這個過程。

從一開始,你就是對自己的啟蒙和教育負責的人。知道了這一點,你就應該選擇那些無論你有什麼樣的運氣都能成功的專案。這個專案是否滿足了你的好奇心?它是否對你的技能構成挑戰?它可以讓你遵守這些戒律嗎?如果是這樣,就足夠了。

最後,在沿著自己的道路行進的同時,自學成才的機器學習工程師在他們的腦海中一直保持著這樣的印象:

  • 沒有知識就沒有資質
  • 沒有行動就沒有思想
  • 沒有享受就沒有學習
  • 沒有風格就沒有創造
  • 沒有實踐就沒有技巧
  • 沒有工具就沒有目的
  • 沒有展示沒有貿易
  • 沒有懷疑就沒有假設
  • 沒有貢獻就沒有消費
  • 沒有對現在的愛,就沒有對未來的渴望
  • 最重要的是,沒有三大項就沒有機器學習

英文原文:http://towardsdatascience.com/the-10-commandments-of-self-taught-machine-learning-engineers-9e810971ed34