機器學習和人工智慧(AI)是目前最受歡迎的話題之一,尤其是在科技領域。我很幸運,每天都能作為一名機器學習工程師,與這些技術一起工作和開發!
在這篇文章中,我將帶你了解我成為機器學習工程師的旅程,並提供一些建議,讓你也能成為一名機器學習工程師!
我的背景
在我之前的一篇文章中,我詳細描述了我從學校到獲得第一份數據科學工作的旅程。我建議你去看看那篇文章,但我會在這裡總結一下關鍵時間線。
我家裡幾乎每個人都學習過某種STEM科目。我的曾祖父是一名工程師,我的祖父母都學過物理,而我媽媽是一名數學老師。
所以,我的道路從一開始就已經鋪好了。
我在12歲時看了《生活大爆炸》(The Big Bang Theory),因此決定在大學學習物理;可以說,大家都非常驕傲!
在學校,我並不笨。我其實相對聰明,但我沒有完全投入。我得到了不錯的成績,但絕對沒有發揮出我的全部潛力。
我曾經很自滿,認為不需要努力就能做得很好。
我申請了牛津大學(Oxford)和帝國學院(Imperial College)等頂尖大學,但由於我的工作態度,我的想法有些不切實際。在成績公布的那天,我因為未能達到錄取標準而進入了清理階段。這可能是我人生中最悲傷的一天。
在英國,清理階段是指大學向那些沒有獲得錄取的學生提供有空缺的課程名額。
我很幸運地獲得了薩里大學(University of Surrey)學習物理的機會,並最終獲得了物理一級碩士學位!
努力工作是沒有替代品的。這雖然是一句老生常談,但卻是真實的!
我原本的計劃是攻讀博士學位,成為全職研究員或教授,但在我的學位期間,我進行了一年的研究,發現研究生涯並不適合我。一切進展得太慢,似乎這個領域的機會也不多。
在這段時間裡,DeepMind發布了他們的《AlphaGo — The Movie》紀錄片,這個影片出現在我的首頁上。
從這個影片中,我開始了解人工智慧是如何運作的,並學習神經網絡、強化學習和深度學習。老實說,直到今天我仍然不是這些領域的專家。
自然地,我深入研究,發現數據科學家使用人工智慧和機器學習算法來解決問題。我立刻想參與其中,開始申請數據科學的研究生職位。
我花了無數小時編程、上課和做項目。我申請了300多份工作,最終在2021年9月獲得了我的第一份數據科學研究生計劃。
你可以在播客中聽到更多關於我的旅程。
數據科學之旅
我在一家保險公司開始了我的職業生涯,在那裡我建立了各種監督學習模型,主要使用梯度提升樹包(如CatBoost、XGBoost)和廣義線性模型(GLMs)。
我建立的模型用於預測:
- 詐騙 — 是否有人詐騙性地提出索賠以獲利。
- 風險價格 — 我們應該給予某人的保險費是多少。
- 索賠數量 — 某人會有多少次索賠。
- 索賠的平均成本 — 某人的平均索賠金額是多少。
我建立了大約六個模型,涵蓋了回歸和分類領域。在這裡我學到了很多,尤其是在統計學方面,因為我與精算師密切合作,所以我的數學知識非常出色。
然而,由於公司的結構和設置,我的模型很難進入PoC(概念驗證)階段,因此我感到缺乏“技術”方面的工具和對公司如何在生產中使用機器學習的理解。
一年後,我的前雇主聯繫我,問我是否想申請一個專注於時間序列預測和優化問題的初級數據科學家職位。我非常喜歡這家公司,經過幾次面試後,我獲得了這份工作!
我在這家公司工作了大約2.5年,成為了預測和組合優化問題的專家。
我開發了許多算法,並通過AWS將我的模型部署到生產中,使用了軟件工程的最佳實踐,如單元測試、低環境、影子系統、CI/CD管道等等。
可以說,我學到了很多。
我與軟件工程師密切合作,因此我獲得了很多工程知識,並持續自學機器學習和統計學。
在這段時間內,我甚至從初級升遷到中級!
轉型為機器學習工程師
隨著時間的推移,我意識到數據科學的真正價值在於用它來做出即時決策。有一句話是Pau Labarta Bajo說的:
在Jupyter筆記本中的機器學習模型的商業價值為$0。
如果一個模型無法產生結果,那麼建立一個非常複雜和精緻的模型是沒有意義的。追求額外的0.1%準確度,通常是不值得的。
你最好建立一些簡單的東西,這樣你就可以部署,並為公司帶來真正的經濟利益。
考慮到這一點,我開始思考數據科學的未來。在我心中,有兩條道路:
- 分析 -> 你主要工作是獲取業務應該做什麼的見解,以及應該關注什麼以提升表現。
- 工程 -> 你提供解決方案(模型、決策算法等),為業務帶來價值。
我認為,分析和建立PoC模型的數據科學家在未來幾年內將會消失,因為如上所述,他們對業務並沒有提供具體的價值。
這並不是說他們完全沒有用;你必須從業務的投資回報的角度來考慮。理想情況下,你帶來的價值應該超過你的薪水。
你希望說“我做了X,產生了Y”,而上述兩條道路都能讓你做到這一點。
工程方面對我來說是最有趣和最愉快的。我真的喜歡編碼和建立對人們有益的東西,因此我自然地朝這個方向發展。
為了轉向機器學習工程的方向,我問我的直屬經理是否可以自己部署我所建立的算法和機器學習模型。我會得到軟件工程師的幫助,但我會自己編寫所有的生產代碼,進行系統設計,並獨立設置部署過程。
而我就是這樣做的。
我基本上成為了一名機器學習工程師。我開發我的算法,然後將它們部署到生產中。
我還參加了NeetCode的數據結構和算法課程,以提高我的計算機科學基礎,並開始撰寫有關軟件工程概念的博客。
巧合的是,我目前的雇主在這段時間聯繫我,問我是否想申請一個專注於一般機器學習和優化的機器學習工程師職位!
可以說是運氣,但顯然宇宙在告訴我一些事情。經過幾輪面試,我獲得了這個職位,現在我是一名全職的機器學習工程師!
幸運的是,這個角色有點“掉到我頭上”,但我通過提升技能和記錄我的學習創造了自己的運氣。這就是為什麼我總是告訴人們要展示自己的工作——你永遠不知道會有什麼結果。
我的建議
我想分享一些幫助我從數據科學家轉型為機器學習工程師的主要建議。
- 經驗 — 我認為機器學習工程師不是一個入門級職位。你需要對數據科學、機器學習、軟件工程等有良好的了解。你不需要在所有領域都是專家,但在各個領域都有良好的基礎。因此,我建議你在成為軟件工程師或數據科學家方面有幾年的經驗,並自學其他領域。
- 生產代碼 — 如果你來自數據科學,你必須學會編寫良好、經過良好測試的生產代碼。你必須了解類型、代碼檢查、單元測試、格式化、模擬和CI/CD。這並不難,但需要一些練習。我建議請求你目前的公司與軟件工程師合作,以獲得這方面的知識,這對我來說是有效的!
- 雲系統 — 如今,大多數公司將其架構和系統部署在雲端,機器學習模型也不例外。因此,最好多加練習這些工具,並了解它們如何使模型上線。老實說,我大部分是在工作中學到的,但你可以參加一些課程。
- 命令行 — 我相信你們大多數人已經知道這一點,但每位科技專業人士都應該熟練使用命令行。在部署和編寫生產代碼時,你將廣泛使用它。我有一個基本指南,你可以在這裡查看。
- 數據結構與算法 — 了解計算機科學中的基本算法對機器學習工程師的角色非常有用。主要是因為你在面試中可能會被問到這些。與機器學習相比,學習這些並不難,只是需要時間。任何課程都可以達到目的。
- Git與GitHub — 同樣,大多數科技專業人士應該知道Git,但作為機器學習工程師,這是必須的。如何合併提交、進行代碼審查和撰寫出色的拉取請求都是必須掌握的。
- 專業化 — 我看到的許多機器學習工程師職位要求你在某個特定領域有一些專業知識。我根據之前的經驗專注於時間序列預測、優化和一般機器學習。這有助於你在市場上脫穎而出,現在大多數公司都在尋找專家。
這裡的主要主題是,我基本上提升了我的軟件工程能力。這是合理的,因為我已經擁有了作為數據科學家的所有數學、統計和機器學習知識。
如果我是一名軟件工程師,轉型的過程可能會相反。這就是為什麼獲得機器學習工程師職位可能會相當具有挑戰性,因為這需要在多個技能領域的熟練程度。
總結與進一步思考
我有一個免費的電子報《Dishing the Data》,每週分享作為一名實踐中的數據科學家的小技巧和建議。此外,當你訂閱時,你將獲得我的免費數據科學簡歷和我的AI路線圖的簡短PDF版本!
與我聯繫
本文由 AI 台灣 運用 AI 技術編撰,內容僅供參考,請自行核實相關資訊。
歡迎加入我們的 AI TAIWAN 台灣人工智慧中心 FB 社團,
隨時掌握最新 AI 動態與實用資訊!