人工智慧工程師要具備的5項基本技能
阿新 • • 發佈:2018-12-11
技能簡介
1. Computer Science Fundamentals and Programming
電腦科學基礎和程式設計
對機器學習工程師而言,電腦科學基礎的重要性包括:
1、資料結構(資料堆疊、佇列、多位陣列、樹形以及影象等等)、
2、演算法(搜尋、分類、優化、動態程式設計等)、
3、計算性與複雜性(P對NP、NP完全問題、大O符號以及近似演算法等)、
4、計算機架構(儲存、快取、頻寬、死鎖和分散式處理等等)。
當你在程式設計的時候必須能夠對以上提到的這些基礎知識進行應用、執行、修改或者處理。課後練習、編碼競賽還有黑客馬拉松比賽都是你不可或缺的磨練技能的絕佳途徑。
2. Probability and Statistics
概率論和數理統計
1、概率的形式表徵(條件概率、貝葉斯法則、可能性、獨立性等)
2、從其中衍生出的技術(貝葉斯網、馬爾科夫決策過程、隱藏式馬可夫模型等)是機器學習演算法的核心,這些理論可以用來處理現實世界中存在的不確定性問題。
3、統計學,這個學科提供了很多種衡量指標(平均值、中間值、方差等)、
4、分佈(均勻分佈、正態分佈、二項式分佈、泊松分佈等)
5、分析方法(ANOVA、假設實驗等),
這些理論對於觀測資料模型的建立和驗證非常必要。很多機器學習演算法的統計建模程式都是可以擴充套件的。
3. Data Modeling and Evaluation
資料建模及評估
資料建模就是對一個給定的資料庫的基本結構進行評估的過程,目的就是發現其中所蘊含的
1、有用模式(相互關係,聚合關係、特徵向量等)
2、預測以前案例(分類,迴歸、異常檢測等)的特徵。
3、評估過程的關鍵就是不斷地對所給模型的優良效能進行評價。
4、根據手中的任務,你需要選取一種恰當的精準/誤差衡量指標(比如日誌分類的損失、線性迴歸的誤差平方和等等)
5、求值策略(培訓測試、連續Vs. 隨機交叉驗證等)。
通過對演算法的反覆學習,我們可以發現其中會存在很多誤差,而我們可以根據這些誤差對模型(比如神經網路的反相傳播演算法)進行細微的調整,因此即使你想能夠運用最基本的標準演算法,也需要你對這些測量指標有所瞭解。
4. Applying Machine Learning Algorithms and Libraries
應用機器學習演算法和庫
儘管通過程式庫/軟體包/API
1、框架:(比如scikit-learn,Theano, Spark MLlib, H2O, TensorFlow等)
可以廣泛地實現機器學習演算法的標準化執行,但是演算法的應用還包括
2、選取合適的模型
(決策、樹形結構、最近鄰點、神經網路、支援向量機器、多模型整合等)、
3、適用於資料的學習程式
(線性迴歸、梯度下降法、基因遺傳演算法、袋翻法、模型特定性方法等),
4、同時還需要能夠了解超引數對學習產生影響的方式。
5、需要注意不同方式之間存在的優勢和劣勢,
6、以及那些可能會讓你受牽絆的大量陷阱
(偏差和方差、高擬合度與低擬合度、資料缺失、資料丟失等)。
對於資料科學和機器學習所帶來的這些方面的挑戰,大家可以去Kaggle網站獲取很多學習參考,你可發現不同的問題當中存在的細微差別,從而可以讓你更好的掌握機器學習的演算法。
5. Software Engineering and System Design
軟體工程和系統設計
在每天工作結束的時候,機器學習工程師通常產生的成果或者應交付的產品就是一種軟體。
1、這種軟體其實也是一種小型外掛,它可以適用於相對更大型的產品或者服務的生態系統。
2、你需要很好地掌握如何才能讓這些彼此不同的小外掛協同工作,並與彼此進行流暢的溝通(使用庫函式呼叫、資料介面、資料庫查詢等)的方法,
3、為了讓其他的外掛可以依附你的外掛進行很好的工作,你也得需要為你的差價建立合適的介面。
4、精心設計的系統可以避免以後可能出現的瓶頸問題,並讓你的算法系統滿足資料量激增時候的擴充套件效能。
軟體工程的最佳的實踐經驗
(需求分析、系統設計、模組化、版本控制、測試以及歸檔等)
5、對於產能、協作、質量和可維護性而言是不可獲取的無價之寶。