普通程式設計師如何入門AI

李博Garvin發表於2017-07-05

毫無疑問,人工智慧是目前整個網際網路領域最火的行業,隨著AlphaGo戰勝世界圍棋冠軍,以及各種無人駕駛、智慧家居專案的佈道,人們已經意識到了AI就是下一個風口。當然,程式設計師是我見過對於新技術最敏感的一個人群,舉一個例子:當TensorFlow剛剛面世的時候,幾乎所有搞大資料的同學一見面就開始交流這方面的內容,彷彿所有人一夜之間成了“TFboys”(tensorflow_boys)。我覺得之所以程式設計師對於新技術很敏感有兩個原因,其一是技術這碗飯會逼著你不停地去學習,不然很快會被淘汰;其二是程式設計師大多是理工男,對於新事物是充滿好奇的。藉著出版《機器學習實踐應用》的機會
這裡寫圖片描述
,又是到了這樣一個檔口,就是很多程式設計師面臨轉型,需要去學習AI技術,在這一文我就簡單談談我對學習AI的一些看法,我自己的膚淺想法,輕噴哈。

(先宣告下我不是演算法大神,我是阿里機器學習產品經理,不過我身邊都是各種各樣的演算法大牛)首先講下我個人的學習經歷,我最先接觸程式設計是在剛上大學的時候,2010年左右。最早的時候大家都信奉PHP是最牛的語言,當時覺得能做網站的人都是大仙。過了不到3年,移動網際網路的浪潮來了,幾乎所有人全部轉去學Android開發、IOS開發,而且最初的時候做移動端開發是非常吃香的(這股浪潮很像現在的AI浪潮,我確信不到三年時間市面上的演算法工程師會成指數性增長)。我自己當時是在做Android開發,也是在一家大的手機公司實習,我當時覺得開發手機軟體挺酷的,直到有一個契機讓我見識到了AI。當時是有一次機會呼叫了某個以色列公司開發的眼球識別SDK,13年那時候看到眼球識別這總高階技術是覺得非常神奇的,後來我偷偷Google了下後端的技術,這才第一次認識到了世界上居然有機器學習演算法這種東西。於是理工男的那種對新技術的好奇心就促使我去學習機器學習演算法,剛一開始先認識了一些基礎的演算法,比如LR、KNN、RF這些,當時在國內沒有這麼多的視訊課程可以學習,買了一本《機器學習實戰》的書,是外國翻譯過來的,把裡面的很多程式碼都自己推敲了一遍,成長很大。但是學習機器學習,光知道演算法是遠遠不夠的,還需要資料和場景去操練。正好當時阿里舉辦第一屆天池大賽,獎金記得有100萬,於是就和幾個小夥伴結隊參賽,比賽比了兩個月,當時真正的在TB級別的資料下實踐了特徵工程、調參、交叉驗證、計算F1分等等。而且第一次體會了分散式叢集的威力。當時比賽用的是阿里雲的xlab,也就是機器學習PAI的前身。比賽的時候我就深深的愛上了這款雲端的機器學習工具,導致後來我義無反顧的投身阿里雲,做了PAI的產品經理,開啟了我的機器學習業務實踐之路。

講了這麼多我自己的經歷,希望對大家有一些啟發。總結歸納一下程式設計師如何轉型成為AI工程師。首先,需要確立自己的職責,是演算法開發還是演算法應用,這兩個差別很大。如果工作的性質是通過演算法去解決一些實際的業務問題,偏演算法應用,那我覺得需要更專注於瞭解業務以及演算法的使用場景。如果工作性質是去開發演算法,提升效率,那麼需要更多的關注數學推導能力以及程式設計技巧。機器學習演算法對數學的能力要求是非常高的,這就是為什麼BAT很多演算法開發工程師都是數學專業畢業的原因。
這裡寫圖片描述
當明確了自己的定位,還需要一個環境去實踐,需要有大量的資料在特定的場景下去不斷磨練自己對資料的認知,對資料認知的過程就是將業務抽象成數學公式,將資料轉化為特徵的過程,我覺得這個能力會比推導演算法更重要。在這裡給大家一些推薦:
1.首先學習演算法可以去看一些書《機器學習實戰》(強烈推薦)、《統計學習方法》(偏底層數學推導)、《機器學習實踐應用》(偏業務)。也可以去看看吳恩達老師的關於機器學習的史丹佛公開課。
2.關於實踐場景,可以去參加Kaggle的比賽或者天池大賽,在這裡強烈推薦天池大賽,因為天池不光會提供真實的資料和比賽環境,最關鍵的是你可以獲得許多與高手切磋交流的機會,這些交流會讓人快速成長。
3.多多實踐,其實市面上有很多現成的開源工具可以使用,有R、Spark-MLib、Sklearn等等,也有很多地方可以下載到開源資料集,推薦UCI資料集。下載好資料,選定一個場景,自己用程式碼去跑跑效果,比看100篇雞湯都管用。

最後希望大家都能掌握演算法技巧,即使不能從事AI工作,對於資料的認知能力也一定是未來最核心的競爭力。

我自己的一些小看法,僅代表個人哈。
作者微信公眾號:
這裡寫圖片描述

相關文章