Day 0 — 寫在之前

Tanli Hsu
4 min readMay 21, 2018

--

在Jenny提議做這個100天計畫之前,其實已經想了許久類似的計畫。曾經每次都是想寫些什麼、整理些什麼,卻總因為毅力不足,做了幾天或幾次,就再也持續不下去。這次嘗試,也許在有同儕壓力(?)的情況下,有更大的機會完成也說不定? 抱著這樣的想法,就毫不考慮的答應了Jenny的提議。

接下來,就是選擇題目了。回顧自己過往幾年,一直都持續在接觸的議題之一,就是機器學習這個領域。由於一直有在接觸,再加上近兩三年這個領域在業界爆紅,要選擇這個領域來寫的話,準備材料不但不虞匱乏,甚至會有資料太多無從下手的煩惱。

現在隨便上網Google一下機器學習,從Coursera、Udemy,到各大MOOC、Bootcamp,有數不盡的線上資源可以看。而在Github或StackOverflow上,更是隨手便可得到各種基於機器學習演算法的程式設計框架如Tensorflow, Pytorch, Sci-kit Learn等等、各大神人所寫的程式碼、與數不完的開放原始碼專案。要論資源豐富的程度,選擇這個題目,幾乎可以保證永遠會有寫不完的新東西可以寫的啊!

決定了方向之後,再來就是要想想該怎麼實行這個100天計畫。這個計畫除了self satisfaction,也就是自爽以外,到底還能有什麼意義? 後來決定用這100天,每天學習並整理出一個關於機器學習的課題,用自己的話盡可能詳盡地寫下學習心得。課題可以是一個機器學習的演算法、可以是一個評估並分析演算法優劣的方法或指標、也可以是一個新點子或一篇新看到的機器學習論文。

在每天的主題之下,如果當天的主題是機器學習演算法,我打算介紹這個機器學習演算法的基本原理、數學表示式、以及可以的話自己推導一遍流程。如果有時間,我也打算把這個演算法的實作程式碼放上來,如果我有時間寫出來的話…。最最至少,希望能把演算法的原理以及背後的數學運作弄清楚。如果當天的主題是一個演算法以外的主題,就希望能把這個主題做個概要性的介紹,包括列舉幾種基本演算法或是現在正在研究中的新想法。

目前想寫的題目,除了常見的演算法如Linear regression/classification、SVM、CNN、RNN等之外,更想探討的主題還包括了機器學習的硬體演算法、針對採用機器學習的系統的攻擊與防禦對策等等。

機器學習的硬體演算法是我在北卡申請博士班時,最喜歡的教授Dr. Paul Franzon的研究領域。一直非常遺憾當年的自己對這個領域一竅不通,導致沒能加入這個研究團隊。而就在幾天前,聽過Intel美國首席資料科學家Malvin Greer的演講、以及跟他私底下的一點談話之後,了解到Intel的未來發展方向,也會朝著使用FPGA或是專用CPU針對機器學習演算法的最佳化發展。這對已經有一點點FPGA、ASIC Design基礎的我來說,是個非常Mind-blowing的消息。從3D IC,到Machine Learning Specific FPGA,原來這十年來,大家已經走了這麼遠。而我還停留在十多年前,Altera Cyclone II的程度。

除了硬體演算法,機器學習的安全性問題也是我已經持續關注了幾年的議題。原本一開始的想法是想要將機器學習應用在資訊安全領域,但是這條路走著走著,卻發現機器學習系統自身也有安全性的疑慮。這個安全性的疑慮,主要發生在訓練資料的真實性上: 如果我們可以在機器學習的訓練資料上動手腳,是不是我們就可以在某種程度上影響甚至操弄機器學習的訓練結果? 這個議題,在現在也許還看不出什麼嚴重性。但是,若是真如吳恩達所說的,機器學習或人工智慧會是未來的電力(Machine learning is the new electricity)的話,那麼提早察覺到這樣的威脅,也許會有點幫助?

這有點像博士班時做文獻回顧的感覺。只是這次要變成一天寫一篇文章。某種程度上是種不小的壓力,尤其是在工作相對忙碌、又同時有其他幾個專案在進行中的現在。可以預期的是,之後可能會在相對有空的時間裡多寫幾篇文章,然後設定發文時間。盡可能做到每天一篇就是了。

我會盡量使用正體中文與標準的中文文法來寫。這麼做的原因,一則是對自己的英文有相當自信,不用靠這100天計畫來練習(反而中文蠻需要練習的…,久不使用,語言癌錯別字什麼都來了)。二則是希望建立出一套自己在日後可以隨時回頭參考、而且可以快速看懂吸收的學習筆記。而要做到這點,用自己的母語絕對最有效率。三則是發現在機器學習的領域,雖然簡體中文跟英文的資源都很多,但是正體中文的文章依然相對少了許多。 即使不期待會有人來看這沒什麼深度的學習筆記,但總還是想在自爽以外,多賦予這個100天計畫一點其他的意義。

廢話完畢。開始吧。

--

--