2017年2月17日 星期五

不求甚解工程師的人工智慧學習捷徑地圖

不求甚解工程師的人工智慧學習捷徑地圖 [2017/9/15 更新] 寒假期間開始學機器學習/深度學習 (machine learning/deep learning), 繞了好大一圈之後, 才發現其實可以不必那麼辛苦。 筆記一下搜尋關鍵詞來幫助那些跟我一樣不求甚解、 只想快快動手寫簡單小程式的工程師。

先講最快的捷徑。 如圖, 重點是上方的 keras/tflearn/caffe 等等高階工具。 如果說 tensorflow 或 theano 是車子的引擎, 那麼這些上層工具就是駕駛座的排檔桿、煞車、油門、面板。 再更偷懶取巧一些, 連建立模型跟訓練的工都省下來, 直接撿現成已訓練好的頭腦權重矩陣來用, 那就從 keras applications 或是 caffe model zoo開始吧。 想學開車不需要從組裝引擎開始學起啊! 這也是我目前的程度: climage.py 可以接受一串圖片檔名當命令列參數, 它會對每張圖片猜幾個判別標籤。

勤勞的工程師自己下 pip 指令安裝這些高階工具及相關套件; 偷懶的工程師 學會一點基本 docker 指令, 從 keras 官網的 docker file 或是 floydhub/dl-docker 直接進駐已架好的工作環境。 我的 Dockerfile上傳的 image 修改自官網, 加了一些東西, 並允許 sudo bash, 比較方便、 比較不安全。 密碼一個空格。)

這些高階工具的共通處, 就是要採用 python 來使用它們; 不過我的 python 程度很抱歉, 連寫迴圈都要查手冊。 沒關係, 只要已熟悉另一個語言, 而且很會搜尋, 其實邊寫邊學也可以。

如果要把別人現成的類神經網路拆開來研究, 那麼你可能需要一點點 numpy 的語法以便取得多維陣列裡面的資料。 推 visual numpy 這篇。 又可能需要略懂 jupyter notebook 以便畫圖分析。 [2019/9/4] Google 的免費 GPU 平臺 colab 也是採用 jupyter notebook。

我試圖把 AI 的進入門檻降低 -- 從 「會寫 python 程式」 拉低到 「不怕下指令」。 如果你習慣 linux 命令列, 但覺得 AI 領域的程式設計門檻太高, 那麼 我寫好的這些免 coding AI 工具 你可能會有興趣。

即使是不求甚解的工程師, 多知道一些名詞也會有幫助。 我曾試著上 coursera 的課; 不過最終還是偏好閱讀勝過看影片。 大力推薦 史丹佛大學 cs231n 課程講義。 深入淺出、 用很多圖像及直覺來解釋各種觀念及演算法。 不求甚解的工程師可以省略其中的預備課程、 省略作業及實作, 只需要還記得矩陣乘法 (還有英文閱讀無礙) 這份講義讀起來就可以略懂略懂。 當然如果多一點線性代數的知識 (例如粗略直覺理解 svd/eigenvector) 收穫會更多。 不需要理解所有的演算法及數學; 重點是類神經網路的長相跟結構。 還有, 光是草草讀完這份講義之後, 就可以學到很多 ML/DL 常用名詞, 及幫助你進一步學習的搜尋關鍵詞。 [2/25 補充: 朋友分享一個連結: Deep Learning MIT 的線上書。]

[3/10 補充] 類神經網路只能處理 「數值型」 的輸入資料 -- 例如身高、 球速、 氣壓、 溫度、 ... 但現實生活中, 很多資料是 「類別型」 的 -- 例如血型、 星座、 廠牌、 國別、 ...。 要處理 「類別型」 的資料, 最簡單的方式是 one-hot encoding, 可是這會讓資料維度爆量。 這幾篇文章提出一些簡單實用的處理方式: 12

要開學了, ML/DL 只好暫時收工, 暑假再玩、 再分享心得。 未來想要一起玩 ML/DL 的讀者們, 這段時間可以先去讀一下 cs231n 的超讚講義囉。

1 則留言:

  1. 教授好好學吧 改天貢獻出來給大家 謝謝

    回覆刪除

因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。