本文由 「AI前線」原創,原文連接: 跳槽季·機器學習面試不徹底指南
做者|Vincent
編輯|Emily
AI 前線導讀:」春節就這麼一眨眼過去了,眼看着就到了「金三銀四」的跳槽黃金季節了,想必在去年飽經磨礪的你已經有了新的方向和目標,此時正在摩拳擦掌、蓄勢待發,世界人工智能將來的發展重任眼看着就要落在了大家的肩上!可是!當大家憑藉強大的簡歷經過了企業的篩選,來到面試環節,面對面試官那深邃而憂鬱的目光,你可以招架幾個回合?因此,咱們整理了一些機器學習面試前你須要準備的要點,供你參考,乾貨滿滿喲~」git
概述github
本文是機器學習面試不徹底指南,由於面試和經驗這些東西也每每都是一家之言,可參考,但並不必定就徹底適合你。因此,咱們蒐集了一些比較靠譜的經驗,整合起來放送給你,但願可以對你的職業生涯有所幫助。面試
一些善意的提醒算法
相信可以進入面試的朋友,簡歷必定是優中選優的,因此這部分咱們很少做贅述。可是,當面試官讓你當面對簡歷中的項目經驗進行描述的時候,請必定記住一條原則:編程
用可量化的方式去介紹你以前的項目。bootstrap
舉個簡單的例子:網絡
1.曾參與訓練了 XX 機器學習系統,取得了不錯的成果。架構
2.分別使用 Keras,Tensorflow 和 Node.js 設計並部署了一個深度學習模型,進行目標識別。與傳統神經網絡(例如 ResNet)相比,該模型具備 1/30 的模型大小,1/3 的訓練時間,1/5 的推理時間,以及 2 倍的收斂速度。框架
如何?是否是明顯感受到第二個更好?由於它量化了你的貢獻,並突出了你使用的特定技術(證實你具備相關專業知識)。僅僅須要簡單記錄你在實驗過程當中所作的事情。但不要誇大,多花一些時間瀏覽你的簡歷以及過去的項目,以確保你在面試現場能夠解釋得很好。機器學習
根據面試的階段,你可能會被問到不一樣的事情,你會被問到幾乎全部科技工做中可能要求的東西,好比幾個簡單的編程問題。
不少時候,看似簡單的問題反映了面試官真正關心的東西。 你有解決這個問題的好方法嗎? 你收集要求仍是隻是作出假設?你測試了你的代碼嗎? 你是如何選擇你的測試用例的? 你作了什麼折衷? 你是否意識到須要作一個權衡?
當被問到機器學習的內容時,面試官首先但願知道你熟悉這個術語,而且知道經常使用的技術框架。 沒有必要知道每種算法的全部細節,可是在回答中須要證實你知道各類框架的基本屬性。 你還可能會被問到你將如何處理一個特定的問題。
另外,不要陷入假設每一個問題都是機器學習問題的陷阱。 有些面試官常常看到應聘者在回答問題時答非所問,不能由於你懂機器學習,就把全部問題都歸結爲機器學習的問題。
知識點總結
爲了方便各位讀者閱讀和收藏,咱們爲你們總結了一些比較實用的知識點,同時在文章的底部還會附上本文參考的幾篇文章的連接,各位讀者能夠自行取閱。
先看看下面這張圖:
這是一位機器學習專家給出的機器學習面試前,一個應聘者須要瞭解的技術要點。右側的技術要點從上到下分別爲:
左邊的彩色字體分別對應了:機器學習研究員、大數據科學家、機器學習工程師、機器學習架構師。右邊相同顏色的方框裏面包含的,就是這一職位在面試前須要重點準備的科目,若是年後你就要開始面試了,那麼能夠趁着這段假期,對照着這張圖進行查漏補缺。
如下是機器學習面試常見的基礎概念。
線性迴歸
邏輯迴歸
KNN
給定一個數據點,使用必定的距離度量(例如歐幾里德距離)計算 K 個最近的數據點(近鄰)。對於分類,能夠取大多數近鄰的標籤;對於迴歸,咱們採用標籤值的均值。
對於 KNN 來講,咱們不須要訓練模型,咱們只是在推理時間內進行計算。這可能在計算上很昂貴,由於每一個測試樣本都須要與每一個訓練樣本進行比較以瞭解它們有多接近。
有近似的方法能夠有更快的推斷時間,經過將訓練數據集劃分紅區域。
注意,當 K 等於 1 或其餘小數字時,模型容易出現過擬合(高方差),而當 K 等於數據點數或更大的數字時,模型容易出現欠擬合(高誤差)。
SVM
決策樹
Bagging
爲了解決過擬合問題,咱們可使用稱爲 bagging(bootstrap aggregating)的集成方法,它減小了元學習算法的方差。bagging 能夠應用於決策樹或其餘算法。
這是一個很好的例子:
隨機森林
隨機森林經過增長一些隨機性來進一步改善 bagging。在隨機森林中,只隨機選擇一部分特徵來構建樹(而不是子採樣實例)。好處是隨機森林減小了樹之間的相關性。
假設咱們有一個數據集。有一個信息增益很高的特徵,以及一些預測性較弱的特徵。在 bagging 樹中,大多數樹將在頂部拆分時使用這個預測性很強的特徵,所以使得大部分樹看起來類似,而且高度相關。與互不相關的結果相比,對高度相關的結果取平均不會大量下降方差。在隨機森林中,每一次劃分節點咱們只考慮特徵的一個子集,並所以經過引入更多不相關的樹來進一步減小方差。
在實踐中,調整隨機森林須要擁有大量的樹(越多越好,但須要考慮計算約束)。此外,用 min_samples_leaf(葉節點的樣本的最小數量)來控制樹大小和過擬合。
特徵的重要性:
在決策樹中,更重要的特徵可能更接近樹的頂部。經過計算它在森林中全部樹上出現的平均深度,咱們能夠獲得一個特徵對於隨機森林的重要性。
Boosting 樹
原理
Boosting 樹以迭代方式創建在弱學習器身上。在每次迭代中,都會添加一個新的學習器,而全部現有的學習器都保持不變。全部的學習器根據他們的表現(例如,準確性)進行加權,而且在加入弱學習器以後,對數據進行從新加權:錯誤分類的樣例得到更多的權重,而正確分類的樣例減小權重。所以,將來的弱學習器會更多地關注以前的弱學習器錯誤分類的樣例。
與隨機森林(RF)的區別
XGBoost(極端梯度提高):
XGBoost 使用更正則化的模型來控制過擬合,從而使其具備更好的性能。
Stacking
MLP
MLP,多層前饋神經網絡。每一層能夠有多個神經元,下一層中每一個神經元的輸入是上一層中全部神經元輸出的線性或非線性組合。爲了訓練網絡,逐層反向傳播偏差。理論上 MLP 能夠近似任何函數。
CNN
Conv 層是卷積神經網絡的基礎結構。Conv 層由一組可學習的濾波器(例如 5 × 5 × 3,寬×高×深)組成。在前向傳遞期間,咱們將濾波器在輸入上滑動(或更準確地說,卷積)並計算點積。當網絡反向傳播偏差時,再次進行學習。
初始層能夠捕捉低級特徵(如角度和邊緣),然後面的層能夠學習前一層低級特徵的組合,所以能夠表示高級特徵,如形狀和目標部分。
RNN 和 LSTM
RNN 是神經網絡的另外一個範式,有不一樣層的神經元,每一個神經元不僅把前一層神經元的輸出做爲輸入,並且把同一層的前一個神經元的輸出做爲輸入。
這看起來很棒,但實際上因爲相同矩陣的一系列乘法運算,會形成梯度消失或梯度爆炸,使 RNN 幾乎不能運做。爲了解決這個問題,咱們可使用 RNN 的一個變種,長短時記憶(LSTM),它可以學習長期的依賴關係。
LSTM 背後的數學算法可能至關複雜,但直觀上 LSTM 引入了輸入門 - 輸出門 - 遺忘門 - 記憶單元(內部狀態)
LSTM 模仿人類的記憶過程:忘記舊的東西(舊的內部狀態×遺忘門)並從新輸入(輸入節點×輸入門)
word2vec
生成與判別
給定一個訓練集,像邏輯迴歸或感知器這樣的算法會試圖找到一條直線,即決策邊界,將大象和狗分開。而後,將新的動物分類爲大象或狗,算法會檢查樣本在決策邊界的哪一邊,並據此作出預測。
下面是一種不一樣的方法。首先,看大象,咱們能夠創建一個大象看起來像什麼的模型。而後,看着狗,咱們能夠創建一個狗的樣子的單獨模型。最後,爲了對新動物進行分類,咱們能夠將新動物與大象模型進行匹配,並將其與狗模型進行匹配,看看新動物看起來更像大象仍是更像咱們在訓練集中看到的狗。
參數與非參數
以上是機器學習的不徹底面試指南,也許跟你本身學習的方法和路線會有些許出入,不要擔憂,全部的方法都只是參考,真正適合你的,須要你本身去探索,資料求精不求多,存在腦子裏面的叫知識,存在硬盤裏叫文檔。
但願你的職業生涯一片無悔,加油!
參考文章
更多幹貨內容,可關注AI前線,ID:ai-front,後臺回覆「AI」、「TF」、「大數據」可得到《AI前線》系列PDF迷你書和技能圖譜。