LKY 只有原創內容的 Blog

今之能者,謂能轉貼,至於魯蛇,皆能轉貼。不原創,何以別乎?

步上資料科學的心路歷程(二):恐慌到自信

Lin, Kao-Yuan's Avatar 2017-10-03

  1. 1. 恐慌
  2. 2. 退守傳統領域的職涯思考
  3. 3. 2014 上半年
  4. 4. 2014 下半年

(續上一篇)

恐慌

在早期軍教片中,有一個喬段是這樣:

班長:「你念過書嗎?」
小王:「當然!我高中畢業,考上國立大學、主修中國文學,並寫了… 」
班長:「嗯… 」
小王語未畢,班長就點了點頭,拿著印章在名字下面蓋上兩個字:「識字」

在 2014 年在我所能看到、聽見的業界高度下,「電腦視覺」只是代表「會寫程式」而已。就算加入任何人工智慧演算法,也是只被當作學術巨塔內,不成熟的高孤玩具。業界有沒有這樣的工作?有,但我知道那些機會不是屬於我的,是屬於四大極度頂尖人才的。其他學校的人只是拿電腦視覺來出論文,因為隨便改個小細節,先射箭、再畫靶,就又是一篇新文章了。

退守傳統領域的職涯思考

所以我還是沒放棄 MCU,持續做東西、持續參加比賽。因為做一個「MCU 黑手」是我當時自認為畢業後最有可能從事的工作。但 MCU 的工作環境往往不太體面,我對於拿烙鐵已經感到相剛厭倦、也嚮往工作是一片筆電就能搞定所有事情的優雅。那時的當紅炸子雞是手機 App,每個學期都在懷疑自己:

  • 「會寫 windows 視窗程式找得到工作嗎?好像已經沒什麼公司在徵這種人了。」
  • 「是不是該去學個手機 App 設計?」
  • 「自學的話,身邊沒伙伴,撐得下去嗎?」
  • 「校內沒這個課,那我要不要休學去職訓局上課?」

當時有中壢職訓局的老師,拿著下一期的課表向我介紹,問我要不要去上?課表裡有:

  • Cortex M 單晶片物聯網 IoT 程式設計
  • Android 手機應用程式設計
  • Web 前後端雲端XX
  • 資料庫大數據什麼的
  • 其他我想不起來的…

有滿滿的-大-訓-練!反正那時想得到的當紅炸子雞都有了!各種 buzzword 一應俱全,而且都是在同一個班,是一個全家桶套餐,就像中小學一樣,一周五天從早上課到晚。不是在暑假時間,所以去了這個班肯定要休學。

「哇!學會了一定不怕沒工作!」

而且都是免費!

但最後,我還是沒去,因為我怕。
不是怕休學,而是我怕滿滿的課堂,讓自己沒有時間充份思考寫作、沒有時間細細琢磨消化,去了一定會悶死。

2014 上半年

這學期修了「多媒體系統設計」,要做期末專題,大多數同學會用機器學習套件做一些小成果,但我沒有,我用 base on rule 的 tricky 手法做了第 1 個疼痛水準辨識。雖然有點小效果,但不要問我東西在哪裡,因為以現在的技術水準來看,簡直是個笑話。

AUC = 82.3%

這門課,我沒有真的學會什麼扎實模型,只是因為 OpenCV 用得熟才做出這個東西。這門課學到比較多是辨識模型的評價方式,像 ROC、AUC、KL-divergence 之類的,還有辨識技術的論文寫作眉腳。其他就是走馬看花的東西,讓我知道情感運算、知道文字也可以計算、知道 FB 貼文也可以被計算…等等,有打開一些在機電系不太會看到的眼界。

2014 下半年

這學期我想要修「圖形辨認(Pattern Recognition)」,因為這門科目隨著時代發展,愈來愈偏向機器學習,應該有 87% 像了。但我很害怕,怕是不是又會像上次修機器學習一樣被當?

修課之前的暑假,我把[田神的 HW0](https://www.csie.ntu.edu.tw/~htlin/course/mMchine Learningfound17fall/doc/hw0.pdf) 拿來做,想說:「寫出這些題目,應該就有捲土重來的本錢了吧…」

當時 HW0 都是找某位經濟系的同學請教才弄懂,給我看的都是五專會計統計科的課本。我跟她說:「天啊妳有超有做 AI 的天分,只要會寫程式的話就超強惹!」。結果,她現在跑去綠地球當空姐。

然後,我覺得自己應該準備好了,就去修這門課。選課前,我還拿著 HW0 問老師:「懂這些夠嗎?」

修課以後學到特徵、資料正規化、訓練集、測試集,交叉驗證等等觀念,才慢慢建立起比較完整的資料科學觀念輪廓。

雖然考數學題的時候,成績還是很慘烈,但是老師要求我們在紙上一步步推演 Perceptron 的運作過程,推演完以後有一點點 “奇妙的” 感覺,但我說不清楚是什麼?反正我就很想要再感受一次看看,可是再推演幾次也感受不到了。

為了弄清楚,為了讓這個感覺更強烈,我用 C++ 自幹出一個 Perceptron,搭配 OpenCV 把過程視覺化。跑訓練的時候,看著自己寫的 Perceptron 不停移動,真的慢慢把兩類 sample set 切得越來愈開。我第一次感到自己寫的程式有智慧,真的會自己發現些什這麼,那種感動是難以言喻的~


這才開始真正學到機器學習的肉。

還有學到貝氏機率、kNN、SVM 等其他模型,以及升維、降維等等一些入門的特徵工程。

期末專題,我是用 8051 蒐集人體運動學資料,把資料傳回 PC 上的 Perceptron 訓練,訓練到夠,再把 Perceptron 和參數打進 ROM code 裏面給 MCU 做邊緣運算推論。

  • 最原始版本


  • 機構改良版本

所以我的第一個機器學習創作,是在 8051 上完成最後推論的。看到會收斂、會分類就很開心了,根本忘記做交叉測試(Cross Validation)。這個作品,建立了我對機器學習的基本信心,因為我開始有能力自幹 Machine Learning 演算法,擺脫只是 call function 的人。

(待續)

This article was last updated on days ago, and the information described in the article may have changed.