機器學習工程師必備技能

機器學習工程師所必須掌握的 5 類技能:

  1. 計算機科學基礎和編程能力
  2. 概率論和統計
  3. 數據建模和評估
  4. 應用機器學習演算法和庫
  5. 軟體工程和系統設計

計算機科學

樣例問題:

  • 如何判斷一個而鏈表中是否有環?
  • 給定一棵二叉查找樹中的兩個元素,求它們的最近公共祖先。
  • 給一個棧排序
  • 基於比較的排序演算法的時間複雜度是什麼?證明?
  • 如何求一個帶權圖中兩個結點直接按的最短路徑?如果有些權值是負的怎麼辦?
  • 求一個字元串中所有的迴文子串。

對這些問題你都要能夠推導你的解法的時間和空間複雜度(大 O 表示法),並且盡量用最低的複雜度解決。

只有通過大量的練習才能將這些不同類型的問題爛熟於胸,從而在面試中迅速地給出一個高效的解法。常用的演算法面試準備平台有 InterviewBit、LeetCode、Interview Cake、Pramp、interviewing.io 等。

數據建模和評估

樣例問題:

  • 一位農民想搞明白是什麼因素影響了他的牛奶產量。他記錄了每天的氣溫(30 - 40 度)、濕度(60 - 90%)、飼料消耗(2000 - 2500 千克)以及牛奶產量(500 - 1000 升)。
    • 假設問題是要預測每天的牛奶產量,你會如何處理數據並建立模型?
    • 這是一個什麼類型的機器學習問題?

  • 你的公司在開發一個面部表情識別系統。這個系統接受 1920 x 1080 的圖片作為輸入,並告訴用戶圖片中的人臉處於以下哪種情緒狀態:平常、高興、悲傷、憤怒和恐懼。當圖片中沒有人臉時系統要能夠分辨這種情況。
    • 這是一個什麼類型的機器學習問題?
    • 如果每個像素點由 3 個值來表示(RGB),那麼輸入數據的原始維度有多大?有辦法降維嗎?
    • 如何對系統的輸出進行編碼?為什麼?

  • 過去幾個世紀的氣象數據展現出一種循環的氣溫模式:一會升高一會下降。對於這樣的數據(一個年平均氣溫的序列),你會如何建模並預測未來 5 年的平均氣溫?
  • 你在一家在線新聞網站工作,需要從各處收集文本,並將不同來源的內容聚集成一篇報道。你會如何設計這樣一個系統?會用到哪些機器學習技術?

應用機器學習演算法和庫

樣例問題:

  • 你用一個給定的數據集訓練一個單隱層的神經網路,發現網路的權值在訓練中強烈地震蕩(有時在負值和正值之間變化)。為了解決這個問題你需要調整哪個參數?
  • 支持向量機的訓練在本質上是在最優化哪個值?
  • LASSO 回歸用 L1-norm 作為懲罰項,而嶺回歸(Ridge Regression)則使用 L2-norm 作為懲罰項。這兩者哪個更有可能得到一個稀疏(某些項的係數為 0)的模型?
  • 在用反向傳播法訓練一個 10 層的神經網路時,你發現前 3 層的權值完全沒有變化,而 4 ~ 6 層的權值則變化得非常慢。這是為什麼?如何解決?
  • 你手上有一個關於小麥產出的數據集,包括年降雨量 R、平均海拔 A 以及小麥產量 O。你經過初步分析認為產量跟年降雨量的平方以及平均海報的對數之間存在關係,即:O = β_0 + β_1 x R^2 + β_2 x log(A)。能用線性回歸求出係數 β 嗎?

你可以通過像 Kaggle 比賽那樣的數據科學和機器學習挑戰來了解各種各樣的問題和它們之間的細微差別。多多參加這些比賽,並嘗試應用不同的機器學習模型。

軟體工程和系統設計

樣例問題:

  • 你有一個電商網站,當用戶點擊一個商品打開詳情頁面時,你想基於商品特徵和用戶的購買歷史為用戶推薦 5 個其他的商品顯示在頁面的底部。你需要哪些服務和數據表來實現這個功能?請寫一個查詢語句或一段過程式代碼來返回所要推薦的 5 個商品。
  • 對於 YouTube 那樣的在線視頻網站,你會收集哪些數據來衡量用戶的參與度和視頻的人氣度?
  • 一個簡單的垃圾郵件檢測系統是這樣的:它每次處理一封郵件,統計不同單詞的出現頻率(Term frequency),並將這些頻率與之前已經被標註為垃圾 / 正常郵件的那些頻率進行比較。現在需要對這系統進行拓展來處理海量的郵件流量,請設計一個 Map-Reduce 方案在一個集群上部署這個系統。
  • 你要生成一個實時的熱力圖,來展示用戶正在瀏覽和點擊一個網頁的哪些部分。在客戶端和服務端分別需要哪些組件 / 服務 / API 來實現這個功能?

推薦閱讀:

TAG:機器學習 | 技能 |