起源
從2018年的冬天左右開始算起,我接觸機器學習(machine learning)有一段時間了,可是進步卻比預期緩慢。現在我已經在某科技公司上班擔任資料工程師(Data Scientist)。但我還是經常愚蠢的回頭查閱某些模組(module)的引數(arguments)叫什麼名字,即使他們基礎又常見。世界上好奇的人們已經多到,任何我想要問的問題在網路上都可以找得到一模一樣的版本,而且通常已經有人解答了。網路上有相對充沛的資源,而我似乎缺少一種快速有效的學習方式。
費曼學習法
在某些巧合下,我在網路上看到了費曼學習法(the Feynman technique)似乎是一種適合我的解決方案。學習者透過假裝教學或是編撰教材來學習新事物。因為教學的過程中需要不斷反思自己想表達的事物,在這過程中可以加強對該事物的記憶。
學習之餘、有什麼是我能做的?
世界上已經有許多很棒的專業提問論壇,像是StackOverflow、Quora等等。每天有成千上萬的活躍用戶回答自己專業領域的問題。甚至有些解答是出自於例如Reddit這種一般網路論壇。而各大學也開始提供機器學習相關的線上課程,有些著重於理論基礎,也有些介紹前沿(最新)研究。另外還有一些教育家針對初學者,設計玩具模型(toy model)供練習與參考,我自己最初的時候也是這樣學起來,非常感謝世界上許多無私的、具名或不具名的教育家。所以我在計劃費曼學習法的同時,也在尋找有沒有辦法同時回饋社會,提供一些目前還比較少見的學習資源。
探索式學習
我習慣透過提問及解答問題來學習,因為學習到的就是處理問題本身,那樣對解決生活上的問題是最有幫助。中文的網路社群在這方面,就我所知,類似資源是比較不足的。舉個例子,假使我今天想要從零做網站,包含伺服器、網域申請、程式碼等等。我可以在網路上找到許多一條龍教學,也可以找到針對特定問題的提問與解答。但是我發現很少人會帶領讀者剖析問題或是需求,我很少看到指導讀者如何把特定專案解析成數個可執行小目標的教學,針對大方向的、概念上的提問與解答也相對的少。
現今網路資源的不足
我曾經用Django製作兩個網頁,一個用於公開我的碩士論文補充資料,另一個是清大天文台的網站。感謝Django龐大的社群,讓我可以為一個需求找到許多解決方案。曾經我想要做一個多對多映射來連結兩個django model,找到的資料有使用Django內部語法的、有呼叫其他module來幫忙算的、也有用Python自己刻的。可是身為經驗不足的開發者,又怎麼能知道哪一個方法才是最符合自己需求的呢?問其他資深的開發者自然是最快最有效的方式,但不是每個人都有這樣的機會。也許可以透過「推」或「噓」的數量來猜一猜。但並不是所有的問題都有很多人關注,其可能會失準,也不是所有論壇都支援推噓。
中文網路資源的現況
這類的情形放到機器學習,甚至是其他的領域也是類似的。我們可以輕易地知道某些專案是為了什麼而存在,或是達到了什麼目的;也可以輕易的找到任何微小技術問題的解決方案。但是對於如何把一個大的目標切成許多小目標,以及如何透過完成連續的小目標來達成大目標,在中文網路社群上的資源仍然不足。
小結
我希望我的網誌可以成為連接兩者之間的橋樑,透過連續的提問讓讀者們了解機器學習的面貌。我計畫往後的每一篇文章會問一個機器學習相關的問題,如果有必要會提供實做的步驟與結果。同時我也由衷的希望我前面所說的都是錯的,如果已經有類似的中文資源,請麻煩一定要告訴我。