​兩年前不知如何編寫程式碼的我,現在是一名人工智慧工程師

讀芯術發表於2020-01-24

全文共3526字,預計學習時長11分鐘

圖源:Unsplash

 

經常有小夥伴私信給小芯,我沒有程式設計基礎,不會寫程式碼,如何進入AI行業呢?還能趕上AI浪潮嗎?

 

任何時候努力都不算晚。

 

下面,小芯就給大家講一個朋友的真實故事,希望能給那些處於迷茫與徘徊中的小夥伴們一絲啟發。(下文以第一人稱敘述)

 

圖源:Unsplash

 

正如Elsa所說,職業轉換是一次“進入未知領域”的旅程。

 

兩年前,我從大學畢業,主修經濟學與金融學,做好了在金融業工作的一切準備。投資銀行和全球市場是我理想的工作。畢業前9個月,我找到了在一家投行的工作,感到十分自豪,因為如果之前沒有在這家銀行實習過就很難得到聘用的機會。

 

在那個崗位上幹了幾個月後,我學會了一些Excel VBA程式設計方法,以及如何使用Tableau、Power BI和UiPath(一款機器人過程自動化軟體)。我意識到相對於銀行產品,自己對使用這些工具和學習程式碼更有興趣。我曾經對於銀行產品的複雜性很好奇,但現在發現它只是銀行從客戶身上獲利的一種方法罷了。

 

銀行環境對我的個人價值觀構成了極大的挑戰,但那是以後的話題。

 

同時,我的一位同事向我開啟了“機器學習”的大門。輸入特定資料就能“預測”特定結果,這一事實深深吸引了我。

 

我立刻入迷了。

 

但問題來了,我的程式設計技巧太過基礎。在我的字典裡,Python是一種“蛇”,而Pig……是一隻豬。

 

兩年過去了,我將要進入人工智慧(AI)行業,成為這個領域的一名工程師。這段旅程艱難而漫長。對我而言,轉戰人工智慧只是學習和成長的新開始。

 

圖源:Unsplash

 

 

我的旅程

 

跳上慕課的宣傳列車

 

只有經濟學和金融學背景,我不知道怎樣程式設計。ExcelVBA與程式設計十分接近,但僅此而已。為了成為一名高成就者,跳進資料科學的潮流,我報名參加了很多大型網路公開課(慕課)。以下是我報名的課程列表:

 

· python訓練營:從零到英雄[Udemy]

· 資料科學和機器學習的python訓練營 [Udemy]

· 使用MySQL管理大資料[Coursera]

· 初學者的Java教程[Udemy]

· Web開發人員訓練營[Udemy]

· 機器學習A-Z:資料科學中的python和R實踐[Udemy]

· 使用Docker部署機器學習和NLP模型[Udemy]

 

毋庸置疑,大多數課程我都沒能完成(只完成了標記粗體的課程)。我陷入了慕課自我延續的迴圈。知識的易獲取性使得課程很自然地從一門課延續到下一門,因為覆蓋的主題太簡短,使我的興趣轉瞬即逝,我經常還沒上完前一門課就跳到了下一門。

 

對我而言,內容簡短是慕課最大的缺點。我本希望學完慕課就能得到一份資料科學的職業,但現在看來過於天真了。

 

為了提供觀點,教授傳統的機器學習(ML)方法的慕課常常忽略了模型的實際作用。慕課講述隨機森林演算法是決策樹的集合,但並未說明決策樹如何決定在哪個分支上選擇哪個特徵(如熵的概念和計算)。它只簡單講述了支援向量機是一種分類方式,但沒有說明如何確定超平面。

 

在更先進的AI領域(如深度學習)裡,“我知道什麼”和“我需要知道什麼”大相徑庭。教深度學習的慕課的慣用套路是:把一堆程式碼放到Tensorflow上,放在如MNIST的優秀資料庫中,並推斷“你現在已經是一名深度學習專家了”(有些誇張,但你應該能懂我意思)。這與現實相差甚遠,因為研究報告經常包含複雜的結構,包括對深度神經網路模型中提取特徵的理解,以及其他更復雜的特徵,如變壓器和雙向編碼的理解。理解最先進模型優於其他模型的原因也很重要,以及一些概念如轉移學習和元學習。

 

我認為,教ML的慕課常常給人以這樣的錯覺,即任何人都能成為一名ML從業者。他們天真的以為,ML僅僅是幾行包含.fit()和.predict()的程式碼。這是因為慕課表示人們可以較為輕鬆的開始學習ML(或許正是對於ML的大量炒作使得這些課程利潤豐厚)。

 

不過別誤解我,慕課其實很棒。它使人們能方便快捷地獲得知識,開始某個話題。但是它們能使你成為專家嗎?明顯不能。你在學完課程後所做的,才能決定你能否成為專家。

 

把手弄“髒”

 

完成幾個慕課課程後,我一無所獲。誠然,我學會了python的一些基本技能,知道如何通過.fit()和.predict()使用sci-kit learn,但僅此而已。

 

為了提高程式設計技巧,我在Hackerrank上進行練習並完成了與SQL和Python相關的問題。與其同時,我想將python應用於真實專案中。於是我開始研究用於預訂羽毛球場的機器人,它主要能使用Selenium與瀏覽器互動以進行網頁導航,最終購買並支付定金(類似於運動鞋機器人)。我開始該研究的動機是,新加坡的羽毛球場通常提取兩週就被訂滿了,常常一到放票時間,許多人就每天在預訂網站上露營搶票。(它們通常在一兩秒內就被預訂了)

 

雖然我對自己的python程式設計比較自信,但我對程式碼效率一無所知。時間和空間複雜度對我來說是完全陌生的。對我而言,面對物件程式設計只是一個概念,我從未實戰過(更不用說最終會被遺忘了)。

 

在ML領域,我是Jupyternotebook專家。我可以將Jupyter notebook的主題改為“黑暗模式”並充分利用鍵盤上所有快捷鍵。顯然,我已經準備好接受資料科學家這一角色了。

 

而事實檢驗——我的面試慘敗。設計程式碼的技術測試讓我更快的邁出了“資料科學”的大門。我申請的技術分析崗位讓我到另一個部門,因為他們覺得我去業務分析崗位可能更合適。

 

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

 

圖源:Unsplash

 

手還不夠“髒”

 

為了更加深入學習ML和訓練python技能,我決定在新加坡管理大學攻讀IT商業碩士學位(專攻AI)。

 

我學習了傳統ML模型背後的數學原理,並將最先進的深度學習架構應用到自我管理的資料集中。我學習了關於AI的重要概念,包括通用搜尋演算法、Q學習和深度Q學習。學習了演算法設計,包括圖形演算法、時間和空間複雜度、名字匹配演算法以及許多幾乎要撕裂我非電腦科學大腦的演算法。實質上,這些課程為我提供了慕課所缺乏的學術嚴謹性。

 

碩士期間我的一些專案小有成就。他們不是完全成熟的專案,因為所用的資料集通常是別人給的或者從Kaggle上獲得的,而且展示在Jupyter notebook後專案就結束了。深度學習模型在Docker上持續執行,但是從未考慮過部署方面。畢竟只是學校的專案而已。

 

我認為,碩士學位提供了AI專業人士所必需的學術嚴謹性,但是缺乏實用性。碩士課程不會告訴你找到一份資料科學工作需要什麼,你必須自己弄清楚。軟體工程和開發運維技能是資料科學家工作的一部分(但是不夠廣泛)。程式碼協作在大型組織裡也很重要。同樣地,知道如何搭建Docker環境、啟動AWS EC2例項、在Azure blob儲存上託管資料集、有效組織程式碼以及使用GitHub或Gitlab進行版本控制都是一些必需的關鍵技巧,然而這些在課堂上也學不到。

 

就算你認為自己不夠優秀,也要大膽去嘗試。

 

我繼續參加面試,在技術面試和非技術面試中積累了大量經驗(儘管大多數面試還是不及格)。這使我瞭解自己的知識盲區並能花時間學習相關技能。更重要的是,它使我瞭解不同公司對同一崗位提出的不同工作描述,以及這些工作描述與公司在AI應用的成熟度上的相關性。

 

兩年後,我得到了一份AI工程師的工作。對我來說,這是一個極大的學習和成長機會,是我所夢寐以求的。除此之外,這也證明了任何人都能完成他們著手做的事情,儘管有些人花費的時間可能會久一些。

 

最後,職業是一場馬拉松,而不是衝刺賽。做你熱愛的事情,因為工作會佔據你人生的大部分時間。

 

如果你彷徨不知向何處去,請記住Elsa所說的,“做下一件該做的事”。

 

圖源:Unsplash

 

所以,與其浪費時間在那糾結,不如趕緊行動起來吧~

 

宣告:每個人在資料科學上的旅程是不同的。這篇文章不是關於“如何進入AI世界的大門”,也不應被視為入門指南。這只是我的個人經歷,希望能鼓勵人們冒險去做自己想做的,因為生命轉瞬即逝,不應毫無意義地虛度一生。

 

留言 點贊 關注

我們一起分享AI學習與發展的乾貨
歡迎關注全平臺AI垂類自媒體 “讀芯術”

(新增小編微信:dxsxbb,加入讀者圈,一起討論最新鮮的人工智慧科技哦~)

相關文章