1. 程式人生 > >改做人工智慧之前,90%的人都沒能給自己定位

改做人工智慧之前,90%的人都沒能給自己定位

640.gif?wxfrom=5&wx_lazy=1

本文來自作者章華燕 在 GitChat 上分享「轉行 AI,如何給自己定位?」,閱讀原文」檢視交流實錄

文末高能

編輯 | 奕迅

1. 為什麼人工智慧如此之火

眾所周知,網際網路行業的變化快到讓所有從業者知悉並惶恐。就在筆者還在讀研的時候,大家都在議論:Java 還是 C++ 更好就業的問題、移動網際網路時代正在到來、安卓還是 iOS 開發,當然也有更前沿的大資料 Hadoop 與 Spark 等技術的橫行。

然而就在2016年的一場人機大戰舉行,隨著 Google 的 AlphaGo 打敗韓國圍棋棋手李世乭之後,機器學習尤其是深度學習的熱潮席捲了整個IT界。

所有的網際網路公司,尤其是 Google、 微軟、百度、阿里、騰訊等巨頭,無不在佈局人工智慧技術和市場。前有百度深度學習研究院,騰訊的AILab,最近幾天阿里的“達摩院”又佔據了各大新聞頭條。

確實,人工智慧時代正在到來。人工智慧已經被各個國家提升到國家戰略的高度!

中國AI目前人才短缺,國內的供求比例僅為1:10,供需嚴重失衡。工信部教育考試中心副主任周明也曾在2016年向媒體透露,中國人工智慧人才缺口超過500萬人。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

領英近日釋出的全球AI領域技術人才分佈地圖

機會與挑戰並存,現在很多開發人員正在考慮轉崗人工智慧領域。於是有很多的方法和途徑供大家選擇:1)自己看相關的AI書書籍;2)參加培訓機構培訓;3)買網路教學課程自學。

2. 掌握機器學習的三個層次

很多著名的機器學習(當然本文中機器學習也包括深度學習,深度學習只是機器學習的一個重要的分支)書籍包括機器學習培訓機構的課程,大家都把數學列為機器學習課程的必備基礎,幾乎如出一轍地都在強調數學的重要性。於是乎許多想轉頭AI學習機器學習的小夥伴們就被高深莫測的數學難倒了,嚇得退出了,事實真的是這樣嗎?不學高深的數學就無法在工業界應用機器學習演算法去解決實際問題了嗎?答案顯然不是這樣的。

毫無疑問,數學是機器學習的基礎。以至於傳統機器學習最重要的流派叫做 “統計學習理論” 。但是這和轉行AI學機器學習必須要具備深厚的數學“看起來是合情合理”,但事實卻並非如此!想要解釋清楚這個問題,首先我們需要解釋掌握機器學習的三個層次到底是什麼?每個層次是怎麼定義的?掌握每個層次需要的必備知識是什麼?

2.1 機器學習第一層:懂原理的調庫君

雖然這個級別被我定義為最低的等級。但是大家可不要忘記,在中國目前的網際網路公司中處於我定義的這一級別的從事AI工作的演算法工程至少佔到 75% 以上。所以,這也是我建議的絕大多數數學不是特別好的,沒讀過博士或者碩士的同學轉行AI給自己定位的建議。這樣,你就不需要去學習那些你很難搞懂的高深莫測的數學知識,也不需要掌握各種數學原理的推導。你只需要知道理工科本科畢業的那三門數學基礎知識就完全可以了。這時候,知道常見演算法的基本原理,以及各個引數的含義。OK,能用機器學習演算法解決實際專案中的任務才是王道嘛!

舉個栗子吧!燕哥本人曾經在公司做過的實戰性資料探勘任務,資料在檔案 “lppz.csv”中,第8列(為了與程式碼一致,從0計數)為預測資料。第10列開始的為特徵向量列。於是如下的程式就能夠完成預測任務,其實就這麼簡單。

from xgboost import XGBRegressorfrom sklearn.model_selection import train_test_splitfrom xgboost import plot_importancefrom matplotlib import pyplot as plt# 讀取檔案原始資料data = [] labels = [] labels2 = []with open("lppz.csv", encoding='UTF-8') as fileObject:    for line in fileObject:        line_split = line.split(',')        data.append(line_split[10:])        labels.append(line_split[8]) X = []for row in data:    row = [float(x) for x in row]    X.append(row) y = [float(x) for x in labels]# XGBoost訓練過程X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.34, random_state=0) model = XGBRegressor(max_depth=5, learning_rate=0.1, n_estimators=145, silent=True, objective='reg:gamma') model.fit(X_train, y_train) ans = model.predict(X_test) plot_importance(model) plt.show()

2.2 機器學習第二層:會推公式的學術君

如果你想去BAT核心部門去做演算法工程師,也許調庫君是不夠資格的。那麼你需要滿足一定的學術水平。也就是說,你不僅要懂得演算法的大致原理,比如說決策樹的分支是基於資訊熵和資訊增益的策略的。

你還得知道常見演算法的優化過程中使用的損失函式以及他的推導過程,這時候對大家的要求就相對來說比較高了。接下來我就以BAT機器學習演算法面試必考題(這是福利,燕哥親自經歷的經驗,大家要認真點哦!)。

LR邏輯迴歸演算法的損失函式的大致推導過程?

  • 邏輯迴歸函式形式

0?wx_fmt=png

  • Sigmoid函式形狀

0?wx_fmt=png

  • 推導過程

    下面左圖是一個線性的決策邊界,右圖是非線性的決策邊界:

0?wx_fmt=png

對於線性邊界的情況,邊界形式如下:

0?wx_fmt=png

構造預測函式為:

0?wx_fmt=png

函式0?wx_fmt=jpeg的值有特殊的含義,它表示結果取1的概率,因此對於輸入x分類結果為類別1和類別0的概率分別為:

0?wx_fmt=png

構造如下的損失函式:

0?wx_fmt=png

0?wx_fmt=png

下面詳細說明推導的過程:

0?wx_fmt=png

取似然函式為:

0?wx_fmt=png

對數似然函式為:

0?wx_fmt=png

最大似然估計就是求使 0?wx_fmt=png 取最大值時的θ,其實這裡可以使用梯度上升法求解,求得的θ就是要求的最佳引數。但是,在 Andrew Ng 的課程中將 0?wx_fmt=jpeg取為下式,即:

0?wx_fmt=png

因為乘了一個負的係數-1/m,所以取0?wx_fmt=jpeg 最小值時的θ為要求的最佳引數。

梯度下降法求的最小值θ更新過程:

0?wx_fmt=png

於是,θ更新過程可以寫成:

0?wx_fmt=png

掌握上述的推導過程,基本上應對BAT演算法面試沒問題!

2.3 機器學習第三層:創造新演算法的大神君

這一層次的典型人物就是 吳恩達、Hinton、Lecun 等大神級別的人物,這並非是僅僅是數學好或者是普通碩士生就能達到的水平,需要從博士生的艱苦數學基礎的積累和長期不懈的研究探索才能達到的境界,一般如果轉行的話,我個人建議別忘這個 level 上去想,容易傷害你自己!

但是,如果你是本科生,而且數學也非常不錯的話,嚮往這方面發展還是很有希望的。

那麼,這個層級的大神到底如何牛呢?還是舉個栗子吧!

著名的神經網路發明人 Hinton ,在別人發現感知機的時候,他覺得感知機能力有限,於是想出了神經網路來表示更復雜的學習任務。只是提出這麼個模型不行,還得解決我該怎麼優化引數,想出(與上面的會推是兩回事)一個損失函式並且找到很好的BP反向傳播演算法來優化神經網路引數,這就是他牛的地方。

並不是理解別人的思路,會推別人想出來的公式,而是從頭到尾自己創造,並且演算法實用性非常好,能解決很多現實的問題。

0?wx_fmt=jpeg

典型的神經網路結構

3. 轉行AI,該如何定位自己?

對於轉行的小夥伴們來說,我個人建議是最多選擇自己的目標為第二個級別,也就是能夠推常用機器學習公式的學術君。

但是,並不是所有人都適合這個級別的。這也是很多輔導機構包括業內人士誤傳的一句看似很有道理的“名言”:數學不好,千萬別轉AI。

事實絕對不是這樣的,非常嚴謹的表述應該是:數學越好,你的AI轉型之路越寬廣,數學是決定你走AI路的天花板!

3.1 定位調庫君

前面我也說了,其實現在網際網路公司從事AI工作的 75% 以上的都是調庫君,所以如果你數學確實不是很好,而且你又不是機器學習科班出身。AI之路並不是不可行,只是說,你不要對自己要求太高。

不要相信所謂的數學不行就不能轉行AI,也不要覺得轉行AI我就一定能成為機器學習專家,這兩者都是很極端的例子,正視現實才是唯一的出路。轉行AI,準確定位自己很重要。

3.2 定位學術君

如果你是計算機或者數學博士畢業,雖然當初不是科班出身,但是你數學很棒!我覺得這樣的小夥伴可以給自己定位為我所說的第二級別學術君。

但是,你得專心有耐心的看專業書籍,並在有必要的時候研究原始演算法論文搞清楚這個演算法的來龍去脈。

這樣你才能對演算法的理解達到一個新的高度。長期積累下去,你肯定能成為機器學習專家級別的人物,但是一定不要著急,慢慢來!

4. AI轉行者的入門與提升

  • 關於入門

    對於入門,可能是所有機器學習初學者的痛點,這是一個艱辛的過程,因為這並沒有一個統一的答案。對於轉行者來說,我個人的建議是選擇一個比較正規的視訊課程全套教程學習班去學習一下。彆著急,我知道很多人會發現學了一遍之後還是蒙圈的,覺得太難崩潰了。

    不怕,燕哥是個過來人,當初我研究生階段的時候上了我們學校一位很著名的機器學習大牛的課程。其實上完了幾乎所有學生都是蒙圈狀態,當然我也不例外。

    那個老師本身就是北大數學系(中國數學最牛的院校)博士畢業的,在機器學習領域已經有20多年的研究。上課的時候,他覺得所有人都跟他一樣,對基本的數學理論瞭如指掌。

    於是乎,這位大俠上課的時候就沉醉在自己的公式推導之中,自己無比的崇拜和陶醉,然而學生一個個的蒙圈狀態。

    但是,後來在我自己買書自學的時候,我發現,其實當初上課還是很有用的。

    當我看見書上的一些公式或者演算法講解的時候,我的腦海深處是有印象的,原來當初那位大神推導的東西是這個意思,會有一種豁然開朗的感覺。如果某一天你有這種感覺了,恭喜你,你入門了!

  • 關於提升

    如果你入門了,機器學習提升的過程是漫長的,無止境的過程。在這裡我就不長篇大論了,你可以結合以下步驟作為參考:

0?wx_fmt=jpeg

機器學習的學習過程

俗話說,完事開頭難。其實在機器學習的道路上提升也是一個不輕鬆的工作。毅力堅持是一方面,經驗也是一方面。毅力是每個人自己的事,看你自己。關於經驗,我覺得多寫部落格,多做實戰,多關注比較著名的機器學習公眾號。現在很多機器學習公眾號的文章質量其實是相當不錯的,尤其是近年來AI大火,大家的激情也是蠻高漲的。

近期熱文

640?wx_fmt=png