這是一個轉型AI的勵志故事,從非科班到拿下競賽一等獎

CSDN學院發表於2020-04-04

作者:智亮,魯朗軟體聯合創始人 
責編:胡永波 
本文為《程式設計師》原創文章,未經允許不得轉載,更多精彩文章請訂閱《程式設計師》

在計算機行業,關於從業人員的素質,一直都有一個樸素的認識——科班出身好過非科班,學歷高的好過學歷低的。大部分時候,這個看法是對的。在學校學習,有老師指點,有同學討論,有考試壓迫,有專案練手。即便不大用心的學生,幾年耳濡目染下來,畢業後作為半個專業人士,還是沒什麼問題的。

不過,量子物理告訴我們,這個世界的本質要看概率。所以,科班出身的同學,在技術上好過非科班出身的同學,這是大概率事件;相反,非機器學習專業,甚至非計算機專業的同學,在這個領域做的比本專業同學更好,則就是小概率事件了。但小概率事件並非“不可能事件”,國內很多做機器學習公司的CTO,都不是機器學習專業的科班出身,卻能夠抓住這裡的“小概率”,讓自己華麗地轉身並實現彎道超車。

他們是怎麼做到的?

如果在上學的時候,我們沒能嗅到機器學習領域的機會,而是選擇其他領域來學習和工作……如今卻打算半路出家、改行機器學習,應該怎麼做,才能做到跟這些人一樣好?或者,至少是足夠好?

我自己痛苦轉型的經歷,說出來可以供大家參考一下。

我也是非科班出身,但因為工作,一直需要接觸計算機視覺的一些傳統演算法。後來,看到ImageNet競賽的結果,我意識到了深度學習在視覺領域的巨大優勢,遂決定開始轉型深度學習和神經網路,走上了這條學習的不歸路(笑)。

想要轉型,跟上學的時候不同,因為手頭正在做的工作意味著,自己需要從沒有時間的情況下擠出時間,需要把別人睡覺、打遊戲的時間用來學習,而所學的又是一種頗為艱深晦澀的學問。

轉型,其實很容易,需要做到的只有一件事:學習。

轉型,其實很困難,因為必須做到一件事:堅持學習。

最難的不是下定決心,而是貫徹到底。所以,在開始之前,不妨先問問自己這樣幾個問題:

“我真的已經想清楚,要踏足這個行業嗎?” 
“我能夠付出比其他人更多的辛苦汗水,在這條路上堅定地走下去嗎?” 
“在遭受了痛苦甚至打擊之後,我對機器學習的熱愛,仍然能夠維持我繼續前進嗎?”

根據我掌握的資料,100個程式設計師裡大概有30個考慮過轉型,而真正付諸行動的不過10個。一個月以後仍然在堅持的僅有5個,最終能完成第一個階段學習的,最多兩三個而已。

真的這麼困難嗎?是的。特別是你要白天上班,晚上才能學習,獨學而無友,有問題又只能自己查。而要系統地入門,又不是咬牙一天兩天就能學出來,恐怕得堅持幾個月才能get到點。

我個人的經歷是這樣:一開始接觸時,每週一、三、五固定3天時間,每晚花兩個小時去學習、看視訊、翻書,週六週日則用來完成課程附帶的程式設計作業,大概也是每天兩小時左右。在這種強度下堅持了三個月,我才算是完成了入門的第一步。

也許有的人效率更高一些,也許有的人步子更慢一些,但快和慢不是關鍵,即使學習最慢的人,也要比一開始放棄學習的人走得更遠。

所以,其實真正重要的,不是“我該學什麼”,或者“我該怎麼學”;而是“我是不是真的有足夠的決心”,以及“我是不是能堅持到底”。

上手的課程

定好決心後,我們就能看看:在學機器學習的時候,我們到底在學什麼?

幾乎所有人都知道人工智慧這個概念;有一部分人知道“機器學習”這個概念;其中一小部分人能清楚描述“深度學習”、“機器學習”和“神經網路”的關係; 很少一部分人能夠正確說明“卷積”、“池化”、“CTC”這些名詞的正確含義與計算/實現的方法;非常少的人能清楚地理解損失函式和反向傳播的數學表達;極少極少的人能夠闡述網路的一個修改(比如把卷積核改小)對precision/recall會產生什麼影響;幾乎沒有人能描述上述影響到底是什麼原理。

這就是目前“程式設計師”這個群體,對於機器學習的瞭解程度。

我個人的經驗,適用於“很少一部分人”之外的那“很大一部分人”,也就是說,他們最多知道深度學習是什麼意思,神經網路又是什麼概念,卻並未真正系統地學習接觸過這個領域。

在這之前,你所要用到的數學知識,只有以下這三點:

  1. 懂得矩陣運算的基本計算方法,能夠手動計算[3×4]×[4×3]的矩陣,並明白為什麼會得到一個[3×3]的矩陣。
  2. 懂得導數的基本含義,明白為什麼可以利用導數來計算梯度,並實現迭代優化。
  3. 能夠計算基本的先驗及後驗概率。
  4.  

程式語言與深度學習框架的選擇

當然,作為開發者,想要去實現一個模型,繞不開的問題便是:

應該選擇什麼語言?應該選擇什麼框架?

對於開發人員而言,語言的選擇其實不是問題。但作為入門,最為理所當然的建議則是Python,原因也非常簡單:Python最好學。

對於機器學習的學習,使用Python就意味著你不必分心去學習那些複雜的資料型別約束以及轉化、指標、記憶體管理或垃圾收集之類的“高階”(一般同時也代表著複雜)的特性,將精力集中在自己的目標上。當然,一些Python特有的方法(如lambda、yield或reduce)以及工具(如NumPy、pandas),還是需要多多使用,儘快熟練。

而框架方面,從使用者的維度去劃分,當前數量非常之多的機器學習框架,則可大體上分為兩大陣營。

學術友好型: Theano、Torch與Caffe

Caffe已算是最簡單的了,但仍要經歷漫長而痛苦的摸索歷程。

工業友好型: Tensorflow、MXNet與Caffe

對於大多數有志於投身於機器學習開發(而非研究)的同學們來說,我推薦首選Tensorflow作為你的第一個開發框架。除了上述的優點之外,最主要的因素是它人氣高。遇到任何問題,你都可以找到一群志同道合的夥伴們去諮詢,或是一起研究。對於初學者而言,其重要程度不言而喻。

實戰階段的學習用機配置

接下來,我們就需要一臺機器來把框架搭建起來,以編寫和執行我們的helloAI。然而,我在很多地方都看到小夥伴們在問:

我需要什麼樣的配置能學機器學習? 
我需要買塊GTX1080/TITAN/Tesla嗎? 
我應該裝幾塊顯示卡?一塊?兩塊?還是四塊?

而答案也往往傾向於:

“必須得有GPU啊,至少1080,沒有四路Titan你都不好意思跟人打招呼!”

其實,並不完全是這樣。

如果僅僅是入門和學習,CPU或GPU完全不影響你對程式碼和框架的學習。執行MNIST或CIFAR之類的玩具資料集,它們的差距並不大。以我的機器為例,執行自帶的CIFAR demo,i7 CPU和GTX 1080 Ti的速度分別是770 pics/s和2200 pics/s。GPU大概有不到三倍的效能優勢。所以,差距其實也沒多大。

打好基礎之後,跟蹤論文並復現、學習和思考,這樣的任務將成為你現階段的一項日常作業,如果你已經進入或是決定進入這個行業的話。因為稍有懈怠,便要面臨著被時代拋棄、跟不上節奏的情況。所以,到這一步,對於有些人來說是一個結束,而對另一些人來說,則才剛剛是開始。

這個時候,我們可以回過頭來重新問問自己前面那幾個問題:

“我真的已經想清楚,要踏足這個行業嗎?” 
“我能夠付出比其他人更多的辛苦汗水,在這條路上堅定地走下去嗎?” 
“在遭受了痛苦甚至打擊之後,我對機器學習的熱愛,仍然能夠維持我繼續前進嗎?”

這條路,我在走,很多人在走,那麼,你來嗎?


最後,再說一點題外話。

看到這裡的各位,一定很希望自己的深度學習路上,能有這樣一位具備成功轉型經驗的先行者來幫助自己趟坑。

智亮老師的想法也是一樣的,為了讓自身的實踐經驗能夠轉化成對大家真正有幫助的東西,他特地在CSDN學院開設了《人工智慧工程師》實訓班課程。

這是一項為期個月的趟坑實踐,目的是通過全程的實戰案例學習,能直接讓你從AI小白晉級為具備一年實踐經驗的人工智慧工程師。

僅需30秒,測試自己是否適合學習AI + 智亮老師的AI實訓營地址:

https://edu.csdn.net/topic/ai20?utm_source=blog08

 

  • 課程內容包括機器學習和深度學習需要掌握的知識和系統圖譜,每節課都配有實戰案例,並提供GPU雲實驗平臺進行案例實操,將理論知識與實際案例應用相結合,反覆鞏固,力助你成為一名合格的AI工程師。
  • 在這三個階段的學習中,你將掌握機器學習原理和推薦系統的實現、深度學習入門與影像語義分割及寫詩機器人的部署,還有專屬GPU雲平臺上的四大工業級實戰專案,全程實操大量工業級真實資料。
  • 同時,會有專人來跟蹤你的學習進度,並根據你的數學和程式設計基礎來制定專屬學習計劃,保證不掉隊。兩位大咖講師在計算機視覺的產業界和學術界分別都有著深厚的經驗,產、學、研結合緊密。

 

學成之日,還會有來自AI產業界的專業講師來做就業指導,就業推薦。

歡迎踏上這趟人工智慧工程師的直通車,成功轉型的經驗正在向你招手。

人工智慧實訓營地址

https://edu.csdn.net/topic/ai20?utm_source=blog08

 

相關文章