iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 30
5

前言

當我們人生決定轉向,不能免俗的,一定要了解市場行情,免得誤入歧途,人財兩失。因此針對 Machine Learning 相關的工作進行了一番調查,除了工作所需技能以外,也看看平均薪資水準。

工作技能

Machine Learning 相關的工作技能包括:

  1. 程式設計:詳述於下。
  2. 數學、統計:詳述於下。
  3. 分散式計算(Distributed Computing)架構:Machine Learning 執行耗時,為快速求解,大企業會自己架構分散式計算環境,以分散工作,平行處理,例如 Hadoop、Spark,中小企業無力自架環境,則會使用雲端架構,例如 AWS、Azure 都提供 Machine Learning 解決方案。
  4. 各種演算法的創新、應用。
  5. 使用者介面設計(UI Design):提供 Web 或設備端的展示功能。

程式設計

以 Python 環境而言,除了Python本身,基本的技能還包括:

  1. numPy:陣列的相關運算。

  2. sciPy:架構在numPy之上,提供矩陣、線性代數、優化、傅立葉轉換...等進階應用函數庫。

  3. MatPlotLib:繪圖,特別是統計圖。

  4. Pandas:Excel/CSV 讀寫,主要資料結構是 data frame,與 R 語言相同。

  5. TensorFlow:Neural Network 的框架(Framework),也可以學習其他框架如下圖。
    https://ithelp.ithome.com.tw/upload/images/20180109/20001976Ki1AC9EOW7.png
    圖. Neural Network 各框架(Framework)比較,圖片來源:Machine Learning Frameworks Comparison

  6. Keras 或 TFLearn:為 TensorFlow 的 Meta Framework,作為快速開發、雛型展示(Prototyping)、概念性驗證(Proof Of Concept,POC)的工具。

  7. 除了Python以外,也可以使用其他主流語言,包括 R、Weka(Java)、MatLab ...等。

  8. 以上列出的只是必要套件,針對各個應用領域,還可以學習相關的套件(Packages)。

  9. 除了 Neural Network 演算法外,Machine Learning 還包括下列常用演算法,可使用 scikit-learn 函數庫:

    • 決策樹(Decision Tree)
    • 單純(或樸素)貝氏分類器(Naive Bayes Classification)
    • 邏輯迴歸(Logistic Regression)
    • 支援向量機(Support Vector Machine)
    • 集成方法(Ensemble Method)
    • 聚類(Clustering)
    • 主成分分析(Principal Component Analysis,PCA)
    • 奇異值分解(Singular Value Decomposition,SVD)
  10. 另外,預期智慧型裝置及物聯網(IoT)整合將會越來越多,例如智慧喇叭、Raspberry Pi、Arduino...等,甚至Android手機未來也會內建輕量版TensorFlow(TensorFlow Lite),為求速度及減少記憶體使用,會使用較低階的語言,例如C++、Java等。

數學、統計

主要包括:

  1. 機率統計(Probability and Statistics)
  2. 線性代數(Linear Algebra)
  3. 微積分(Calculus)
  4. 同樣的,針對各個應用領域,也有特定的知識要進補,例如語音,就需要了解信號處理、Hidden Markov Model、Gaussian Mixture Model、傅立葉轉換(Fourier Transform)...等。

相關工作與技能

看到以上的工作技能別嚇壞了,工作所需技能是一個團隊的總和戰力,不是一個人要十八般武藝樣樣精通,依照國外分類,參閱Artificial Intelligence Job Titles,相關工作職別包括:

  1. Data Scientist:資料科學家,負責演算法開發與分析、資料的收集與前置處理。
  2. Research Scientist / Applied Research Scientist:應用分析師,依照產業特性及行業別知識(Domain Knowhow),套用資料科學家建議的演算法,進行概念性驗證(Proof Of Concept,POC),是 Data Scientist 與 Machine Learning Engineer 間的橋樑。
  3. Machine Learning Engineer:是真正負責系統開發的工程師,需要將系統或產品帶入上線或上市。
  4. Distributed Systems Engineer:是 DevOps 的人才,需要能將大量資料及大的執行工作,切割、分散至各個分散機器執行,最後再聚集匯總(Aggreation),強調 CI/CD (Continous Integration/Continous Delivery)的一貫化流程。

以上的職別與工作技能的比重,可參閱 Udacity 的一張圖如下,圓圈愈大者,表示比重越大:
https://ithelp.ithome.com.tw/upload/images/20180109/20001976GPuE2UOOvh.png
圖. 職別與工作技能的比重,圖片來源:5 Skills You Need to Become a Machine Learning Engineer

工作前景 or 錢途

以 Payscale 美國的薪資調查,比較『網頁工程師』與『Machine Learning』相關工作的薪資,較容易看出差異:
https://ithelp.ithome.com.tw/upload/images/20180109/20001976xpqVNbcm7p.png
圖. 網頁工程師薪資水準,圖片來源:Web Developer Salary
https://ithelp.ithome.com.tw/upload/images/20180109/20001976aIvFHBQRJY.png
圖. Machine Learning相關職別薪資水準,圖片來源:Average Salary for Skill: Machine Learning

網頁工程師薪資中位數是$58K,而Machine Learning相關職別都在$100K(或以上),比較有趣的是,Engineer 比 Scientist 高一些,可見企業看重『產出能力』比『學識/學歷』高一些。

機會

依照個人淺見,Machine Learning 未來發展還是會集中在雲端、用戶設備端及應用系統,雲端會提供更強大的資料中心/伺服器,包括專為Machine Learning設計的 Tensor Machine,供一般企業租用,另一方面,手機、智慧裝置也會紛紛出籠,搶佔使用者的荷包,最後就是整合各種技術的應用系統,例如無人駕駛車、機器人、ChatBot、智慧製造、精準農業、醫療生技...等。『弱水三千,只取一瓢飲』,端看個人生涯規劃。

至於台灣是否一如 Cloud Computing,只將焦點放在低附加價值的伺服器、用戶端設備(手機)生產,未來發展,兩、三年就可以看到端倪,值得觀察與期待。

結語

經過30天鐵人賽的地獄般修練,在每天哀號、K書、測試程式的輪迴中完成了,原本訂定題目時,希望能以輕鬆/快樂學習為出發點,用圖說故事,但是寫到最後,才發覺不是那麼簡單,回顧過去,內容還是有點艱澀,之後,希望能再花點時間消化整理,出個精簡版內容(Executive summary),與讀者分享,最後,如有讀者一路跟隨,就只有心懷感激了。


上一篇
Day 29:機器學習的資料處理生命週期
下一篇
Day N+1:進一步理解『梯度下降』(Gradient Descent)
系列文
以100張圖理解 Neural Network -- 觀念與實踐31

2 則留言

1
shortid
iT邦新手 5 級 ‧ 2018-01-10 21:30:59

這系列真的很棒!!!!

這是寒冬最溫暖的鼓勵。/images/emoticon/emoticon41.gif

0
erictang1102
iT邦見習生 0 級 ‧ 2018-01-24 22:09:54

令人敬佩的學習精神, 看完30篇的文章後, 對AI有些初步的概念, 非常感謝!!!

謝謝你耐心看完,如有疏漏或建議,亦請不吝指教。
/images/emoticon/emoticon41.gif

我要留言

立即登入留言