iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 9
1

Fields 負責的待辦事項『提昇專案成員AI 所需數學知識與對應Python程式』,比他預期的難許多,他應用數學系所畢業後,工作上基本上沒有用到什麼高深的數學,不過看機器學習的基本理論,無非是線性代數、偏微分方程 與機率論或統計學相關,這在大學時多少有修過;研究所時接觸演算法,什麼問題是 NP-Hard 還有一點點印象。但是如何幫提升大家這方面的知識呢?

他稍微看了 Andrew Ng 吳恩達老師於 Coursera 的 Machine Learning課程,是先從線性回歸問題著手,這衍生的就是要先了解 線性代數,在許多深度學習線上課程也把線性代數納入基本必修。很難想像他花一年時間,印象是八學分學的東西,要在一個 Sprint 兩週內除了自己要複習外,還要幫忙提升大家的知識。

再看看國內台大有林軒田以及李宏毅兩位老師公開課程,各有專注,完全不輸 Andrew Ng,何況還是講中文的。最後囫圇吞棗把李老師的機器學習課程看過一遍。隱隱約約可以感覺到機器學習與上述數學的聯繫來。但是如何用 Python 來實作這些理論呢?

他本身是 Python 新手,也不是資訊科班出身的,從基本面來思考,不該也無能平地起高樓用 Python 以及一些套件如 Numpy 來實作機器學習。參考全球各大玩家已經公開的最新框架有

  • Google :Tensorflow,最為知名,佔有率高。儘管其他競爭框架指出因採用DAG入手難,但2.0將解決問題
  • Faccebook:PyTorch,佔有率稍低,但近兩年竄昇極快
  • Amazon:Mxnet,注重靈活性和效率。相比Tensorflow較少社群的支持。
  • Microsoft Cognitive Toolkit:CNTK
  • Baidu:PaddlePaddle

另外也有Keras封裝成較高階的程式庫,底層依賴於 Tensorflow或者CNTK,最近也聽說 Mxnet也支援。但因號稱是傻瓜型深度學習程式庫,無法看到底層的數學運作,就不考慮了。

於比較各家框架優劣過程中,無意間看到 Mxnet 有提供中英文各自的教學,他讀了一下教材,發現相比 Tensorflow 還蠻容易理解的。他決定就用 Mxnet 來實作。

這個決定讓大家議論紛紛,Pete 不解,就算不選 Tensorflow,理由可能是較囉嗦門檻高,但是不選 PyTorch 而是選擇知名度與社群較低的 Mxnet 就很奇怪。

Fields 解釋:"現在我們大家處在學習機器學習的基本理論,Mxnet 是我比較過門檻較低的,容易從無到有練習打造出我們自己的模型。等到我們熟悉基本理論與實作,我個人認為要轉到其他框架並不是大問題。"
最終 Gavin 以 Product Owner 身分拍案:”以整個專案目標是AI探索,我可不希望獨尊某家,忽略了其他,我支持用 Mxnet 教學。至於後續有實際專案要執行,我們再從裡面挑選。這個不急,行有餘力看誰要幫忙學一下 Tensorflow 與 PyTorch。" 大家趕緊閉嘴了,唯恐又要再工作插單


李宏毅老師的教材相當符合 Fields 口味,他從中擷取幾頁圖片來跟大家解釋為何需要線性代數。

要解的問題:已經取得過去歷史資料(訓練資料)。要預測寶可夢進化後的戰鬥指數會變成多少?
https://ithelp.ithome.com.tw/upload/images/20181023/20105283xiXnzjsTrb.png

這是最基礎的機器學習,為了教學,採用線性迴歸模型來解(實際要找到或是設計出一個合適的模型也是很大的學問)。李老師的說法很有獨創性:可以把機器學習最後訓練出來的成果想成是一個函數。那我們唯一要做的就是想辦法從歷史資料(資料集)經過所謂的『訓練』後,讓機器幫忙找到最適合的函數。

Fields 看了這些教材,結合 Mxnet 的教學,他已經可以準備開始從線性迴歸問題,來讓其他人了解機器學習的基礎數學。

備註:

專案緣起記錄在 【UP, Scrum 與 AI專案】


上一篇
Python 燒腦用的 Slice
下一篇
用 mxnet 操作數值, ndarray 最基礎的資料結構
系列文
深度學習所需入門知識--一位初學者的認知31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言