我花了兩年,從不懂 Python 變成了 AI 工程師

0
5360
圖片來源:ShutterStock

想做機器學習的工作,卻覺得自己沒有專業技能? David Chong 從不知道 Python 到獲得 AI 工程師工作,花了兩年的時間。從他的故事裡可以看到激情和好奇心,他的經驗或許能帶給你一些啟發。

不知道 Python,卻被「機器學習」吸引

David Chong 在新加坡管理大學的專業是經濟和金融,本來畢業後打算在銀行工作。

畢業前的 9 個月,他找到了日企野村證券的工作。這期間,他接觸到一些數據分析的軟體,學習了 Excel VBA 編程、數據視覺化軟體 Tableau 和 Power BI,還有機器人過程自動化軟體 UiPath。

「機器學習」的世界深深吸引他,最讓他著迷的是輸入數據,然後預測結果這個過程。

剛開始,他對銀行產品的複雜性著迷,經過一段時間後,覺得這不過是從客戶獲利的一種方式。總之,舊的東西變得沒有那麽吸引他,又出現了新的興趣。於是他決定改變工作方向。

但現實是,他完全不會編程。那時候他的字典裡,Python 是一種蛇,而 Pig……是一頭豬。

在 MOOC 上瘋狂自學,紙上得來終覺淺

想學數據科學,網上資源大把大把,於是他在 Mooc 上註冊了不少課程:

  1. Python 訓練營:Python 3 從零開始成為英雄[Udemy]
  2. 用於數據科學和機器學的 Python 訓練營[Udemy]
  3. 使用 MySQL 管理大數據[Coursera]
  4. Java 初學者教程[Udemy ]
  5. Web 開發人員訓練營 [ Udemy ]
  6. 機器學習 A-Z:動手實踐數據科學中 Python 和 R [Udemy]
  7. 用 Docker 進行機器學習和 NLP 模型[Udemy]

不過他只完成了前 3 門課程。Mooc 的課程內容非常簡單,也讓他很快地就對一門課失去興趣,還沒有上完就去看下一門。

MOOC 上教授傳統機器學習方法時,往往會跳過模型實際在做什麽這個部分。比如,會教隨機森林是決策樹的集合,但不會講決策樹怎樣決定在哪個分支上選擇哪些特徵(也就是熵概念和與之相關的數學);會簡單介紹支持向量機是分類方法,但不會講如何確定超平面。

深度學習的課程更不能滿足做獲取 AI 專業技能的需求。

相關課程通常會在 Tensorflow 上,在 MNIST 這樣不錯的數據集上給出大量代碼,然後讓你覺得自己是深度學習專家了。

但是這遠遠不夠。研究論文通常包含複雜的體系結構,涉及理解深度神經網絡模型中的特徵提取,以及其他更複雜的特徵,例如 Transformer 和雙向編碼。理解為什麽某些最新模型比其他模型更好,以及遷移學習 transfer learning 和元學習 meta learning 等概念也很重要。

他認為,Mooc 的課程的優勢在於快速入門。但上面的課程容易給人誤導,以為任何人都可以成為機器學習的從業者,以為機器學習就是關於 .fit() and .predict() 的幾行代碼。

實踐和挫折

因此,為了提高編程能力,David 選擇在 Hackerrank 上進行練習,完成關於 SQL 和 Python 的問題。

我花了两年,从不懂Python变成了AI工程师

同時,他還用 python 進行了一個在網路上「自動預訂羽毛球場」的項目(新加坡的羽毛球場需要提前搶訂,經常提前兩周就預訂完了)。

經過一段時間的學習和操練,David 對自己的技能水平心裡有了個大概:對寫 python 很有信心,但是對代碼效率一無所知。在機器學習上,是 jupyter notebook 專家,可以把 Jupyter notebook 的主題改為「dark mode」,並使用所有的鍵盤快捷鍵。(Chatbot UX設計師必遵守的 13 大原則,打造最有影響力對話!

他想做數據科學家,但是面試失敗了,涉及代碼的技術測試比他學習的「數據科學」發展更快。他本來申請了技術分析師的職位,卻被轉去另一個部門,做了業務分析師。

這離他的目標還很遠。

接受專業學術訓練

為了有更好的技能,他決定在學校繼續進修商業 IT 碩士學位(專門研究 AI)。

我花了两年,从不懂Python变成了AI工程师

接受專業教育的過程中,大大的補充了知識框架的不足。

他學習了傳統 ML 模型背後的數學原理,在自定義數據集上應用了最新的深度學習架構;有關 AI 的重要概念,包括常見的搜索算法,Q-learning and 深度 Q-learning;算法設計,包括圖形算法,時間和空間複雜度,名稱匹配算法以及其它很多算法。

他還參加了幾個學校的碩士項目。這些項目不完整,數據集經常從 Kaggle上 獲得,在 Jupyter notebook 上結束。深度學習模型在 Docker 上運行,但不考慮部署。

David 看來,碩士教育提供了 AI 從業者所需要的嚴謹學術訓練,但缺乏實際應用的訓練。碩士課程不會告訴你數據科學工作的必要條件,這個部分需要自己去弄清楚。

軟體工程和 DevOps 技能通常是必需的(儘管並不廣泛)。在大型組織中,代碼協作也很重要。比如,如何設置 Docker 環境,啟動 AWS EC2 實例,在 Azure blob 存儲上托管數據集,有效地組織代碼,使用 GitHub 或 GitLab 進行版本控制。課堂不會教授這些內容。

在面試中積累

David 繼續進行面試,在技術面試和非技術面試中積累了很多經驗(大多數人都不及格),也知道了自己所缺的知識,然後花時間補足。

面試帶來更重要的經驗是讓他詳細地摸了摸行情。他明白了公司對於同樣一個職位角色做的不同描述,以及這與公司在採用 AI 技術的成熟度之間的對應關系。

最終,在決定做 AI 工作的兩年後,他找到了一個好機會,是一個會被培訓成 AI 工程師的職位。

David 目前的職位是在野村證券操作風險部門 operation risk 的數據分析師。他在郵件中告訴量子位,下個月他將會轉去新的崗位。他覺得,這只是一個開始,職業之路就像一場馬拉松,不是短跑。(自己養工程師好貴啊!程式外包5美元起跳,3大平台幫你解決IT人力不足的問題

One More Thing

看了 David 的職業路徑,對你有沒有啟發呢?

David 說分享自己的經驗也是為了鼓舞更多的人,不要把他的經驗看成指南。

這是我個人的軼事,我希望能夠鼓舞人們,抱持信念去做他們想做的事情,因為人生太短暫了,不能過沒有意義的生活。
做你愛的事情,因為你會花你生命的一大部分來工作。
如果你感到迷失,記住《冰雪奇緣》說的:「do the next right thing.」。

參考資料:towards data science

發表評論

請輸入您的評論!
請在這裡輸入您的名字