天天看點

[譯]兩年前我對程式設計一無所知,現在我是一名AI工程師

本文翻譯自Medium上的一篇文章,原文标題:I had no idea how to write code two years ago. Now I’m an AI engineer. 點選文末的閱讀原文可以跳轉到英文原文。

兩年前,我大學畢業,大學讀的經濟和金融學。我決定從事金融業,投資銀行和全球市場 - 這些都是理想的工作。畢業前9個月,我在一家投資銀行謀得一份職位,感到很自豪,因為如果以前沒有在那家銀行任職,通常很難謀到這個職位。

工作了幾個月後,我學習了一些 Excel VBA,還學習了如何使用 Tableau,Power BI 和 UiPath(機器人過程自動化軟體)。我認識到我對選擇這些工具,學習編碼更感興趣,而不是學習銀行産品。曾經因其複雜性而令我着迷的銀行産品,現在僅被視為銀行從客戶獲利的一種方式。

銀行業環境極大地沖擊了我的個人價值觀,但這是另一個話題。

同時,與我一起工作的同僚為我敞開了機器學習世界。一個人可以從某些輸入中預測某些結果的事實使我很感興趣。

我立刻被迷住了。

但是有一個問題 – 我隻有初級的編碼技能。在我的字典中,Python 是蛇的一種,而 Pig ... 是一頭豬。

時光飛逝,兩年後,我進入 AI 行業,成為 AI 工程師。這一路并不輕松,也不短。對我而言,轉戰 AI 行業僅僅是開始 - 我學習和成長的新開始。這就是我的旅程。

免責聲明

每個人的資料科學之旅都是不同的。本文不是探讨如何進入人工智能,不應将其視為手把手指南。我希望這是個人的轶事,我希望它能激發人們的信念,去做自己想做的事情,因為生命太短暫了,不要去過沒有意義的生活。

我的旅途

登上 MOOC 快車

雖然具有經濟和金融學背景,但我不知道如何編碼。Excel VBA 非常近似于程式設計,但僅此而已。作為一名優秀的學生,我想加入到資料科學的潮流中來,是以報名參加了一些的大規模開放線上課程(Massive Open Online Courses, MOOC)。不是一個,而是少量。這是我注冊的課程清單:

  • Python 訓練營:Python 3 從零開始到精通[Udemy]
  • 适用于資料科學和機器學習的Python訓練營 [Udemy]
  • 使用MySQL管理大資料[Coursera]
  • Java初學者教程[Udemy]
  • Web開發人員訓練營[Udemy]
  • 機器學習A-Z:動手實踐資料科學, Python 和 R [Udemy]
  • 使用Docker部署機器學習和NLP模型[Udemy]

不用說,我并沒有完成其中的大部分課程(隻完成了黑體字的部分)。我陷入了所謂的 MOOC 自我延續周期。容易獲得知識使得從一門課程轉到下一門課程是很自然的,由于所涵蓋主題的簡短,使我的興趣短暫,常常無法完成前一門課程。

對我而言,這是 MOOC 的最大缺點 - 所涵蓋内容的過于簡單。也許我最初對 MOOC 可以推動我從事資料科學事業的期望太過幼稚。

為了說明問題,典型的 MOOC 講授傳統的機器學習(ML)方法通常會浮于表面,而略過模型實際的作用。随機森林被教導為決策樹的集合,但是不涉及決策樹如何确定在哪個分支選擇了哪些特征(比如熵的概念和數學知識)。支援向量機僅作為分類方法進行講授,但是将不介紹如何确定超平面。

當我們研究諸如深度學習之類的更進階的 AI 領域時,我所知道的與我所需要知道的之間的差異得到了展現。教深度學習的 MOOC 通常會在 Tensorflow 上使用諸如 MNIST 這樣的不錯的資料集編寫大量代碼,并得出結論,您現在是深度學習專家(我有點誇張,但您會明白要點)。這顯然與實際情況相去甚遠,因為研究論文通常包含複雜的體系結構,涉及了解深度神經網絡模型中的特征提取,以及其他更複雜的特征,例如變換器和雙向編碼。了解為什麼某些最新模型比其他模型更好地工作,以及遷移學習和元學習等概念也很重要。

我認為,教學機器學習(ML)的 MOOC 常常給人一種錯誤的印象,即任何人都可以成為 ML 實踐者。天真地認為, ML 隻是涉及 .fit() 和 .predict() 的幾行代碼,這是因為 MOOC 以這樣一種方式表達:人們可以相對輕松地開始使用ML(也許可以将它們貨币化,由于 ML 的大量宣傳,課程非常有利可圖)。

别誤會我 - MOOC很棒。它們為人們提供了快速簡便的方法來擷取知識并進入某個領域。它們會讓您成為專家嗎?不。完成課程後,您要做什麼,将決定您是否成為專家。

動手實踐

完成了幾門 MOOC 之後,我知道自己再不會有所收獲。當然,我掌握了一些 Python 的基本技能,并且知道如何以 .fit() 和 .predict() 的方式使用 sci-kit learn,但是僅此而已。

為了提高我的編碼技能,我在 Hackerrank 上進行了練習,并完成了有關 SQL 和 Python 的問題。同時,我希望有一個可以使用 Python 的真實項目。我開始做一個可以為我預訂羽毛球場的機器人的項目。這主要涉及使用 Selenium 與浏覽器進行互動以浏覽網頁,并最終加入購物車并向羽毛球館付費(這類似于秒殺運動鞋機器人)。這樣做的動機是,新加坡的羽毛球場通常兩周之前就預訂一空,很多人常常每天蹲守網站,守候釋出時間(他們通常在一兩秒鐘之内就預訂了)。

即使我對用Python編寫代碼更有信心,但我對代碼效率一無所知。時間和空間的複雜性對我來說完全陌生。面向對象的程式設計在我腦海中是一個永遠不會發光的概念(更不用說最終被遺忘了)。

在 ML 方面,我是 Jupyter notebook 專家。我可以将 Jupyter notebook 的主題更改為暗模式,并會使用所有鍵盤快捷鍵。顯然,我已做好擔任資料科學家角色的準備。

現實檢驗 - 我的面試慘敗。還沒等我提及資料科學,涉及代碼的技術測試便擋住了我的腳步。我申請的技術分析師的職位使我轉到了另一個部門,因為他們認為我會更好地擔任業務分析師。

我離我要去的地方還很遠。

實踐還不夠

為了深入了解 ML 并磨練我的 Python 技能,我決定前往新加坡管理大學攻讀商業 IT 碩士學位(專門研究 AI )。

我了解了傳統 ML 模型背後的數學原理,并在自定義資料集上應用了最新的深度學習架構。我了解了有關 AI 的重要概念,包括常見的搜尋算法,Q-learning和深度Q-learning。我學習了算法設計,包括圖形算法、時間和空間複雜度、名稱比對算法以及許多幾乎使我的非計算機科學頭腦爆裂的算法。從本質上講,該課程為我提供了 MOOC 所缺乏的學術嚴謹性。

在這個時候,我有幾個導師的項目。它們不是完整的項目,因為資料集通常是從 Kaggle 提供或擷取的,并且通常在Jupyter notebook中展現。為了確定一緻性,在Docker上運作了深度學習模型,但從未考慮過部署方面。它們畢竟是學校的項目。

我認為,碩士課程為 AI 專業人員提供了嚴格的學術要求,但缺乏實際應用方面的鍛煉。碩士學位課程不會告訴您從事資料科學工作的必要條件 - 您必須自己弄清楚這一點。資料科學家的工作範圍通常需要軟體工程和 DevOps 技能(盡管範圍不廣)。在大型組織中,代碼協作也很重要。是以,了解如何設定 Docker 環境、啟動 AWS EC2 執行個體、在 Azure blob 存儲上托管資料集、有效地組織代碼以及使用 GitHub 或 GitLab 進行版本控制是一些必需的關鍵技能,但課堂上并未講授這些技能。

即使您認為自己不夠出色,也要嘗試

我繼續進行面試,在技術面試和非技術面試中積累了很多經驗(盡管大多數都不及格)。它還使我知道了我不知道的内容,并花了一些時間來學習這些技能。更重要的是,它使我能夠了解公司為相同角色提出的不同類型的職位描述,以及這些職位描述如何與公司在采用 AI 方面的成熟度相對應。

兩年後,我獲得了一個AI 工程師的職位。對我來說,這是一個學習和發展自己充滿激情的領域的絕佳機會。不僅如此,這證明了任何人都可以完成他們打算要做的事情,盡管有些人可能要花更長的時間。

歸根結底,職業是馬拉松,而不是短跑。做自己喜歡做的事情,因為它将占據你生命中的大部分時間。

如果您感到迷茫,請記住 Elsa 所說的話,然後做對的事情。

很高興收到任何評論:)

[譯]兩年前我對程式設計一無所知,現在我是一名AI工程師