回到列表
Blog

李宏毅教授 Machine Learning 2021 自主學習計劃

7 min read

背景

一直很想要接觸看看 Machine Learning 這個領域,尤其是我高一高二接觸了那麼久的演算法覺得應該要做一些更有趣的領域不然真的會很疲乏。剛好大安高工彈性課程有自主學習的選項,雖然控制科有開一個人工智慧的課程,不過老實說我相信在這種高中端不太可能會有我實際上想學的 Training 的部分,所以最後還是決定去做自主學習計劃了。

教材

基本上就是李宏毅教授在 2021 的機器學習課程,包含系列影片以及在 Github 上的作業,以下是當初想要的進度,不過看完就會發現實際上根本沒辦法完整的把一個專案搞出來。
Machine Learning 2021 自主學習進度
Machine Learning 2021 自主學習進度

補充筆記

過程

報名與計劃開始

那時候本來就想說彈性課程大多數也都是水課,那不如來做一些有意義的學習,不至於禮拜五最後兩節課都是滑手機度過。所以最後報名了自主學習,不過沒意料到的是今年的報名人數特別多,除了提交計劃以外還要特別的去面試。但其實老實說完全不會怕會被刷掉的問題,可以說是我很有自信,不過這種那麼 hard-core 的題目還要刷掉我也是沒輒了(
最後當然很輕鬆的就進入計劃了。因為學校行事曆的關係,很多次的禮拜五都被停掉,導致我們加加總總大概只有四到五周實際上禮拜五下午要到圖書館自習室的時間,基本上都要自己課餘時間完成。我是完全就打算這樣做就是了。

實際學習節奏

也因為實際上身為一個三幹部的忙人來說,前一部分是真的沒有什麼時間課餘時間來研究,不過至少會要求自己有事沒事就照著進度把課程看到一定的地方,不過現在以結果論而言那段時間只能算是熟習 Training 的思維而已,直接看根本學不太到什麼東西。而是到了大概五月底的時候,才會特別去圖書館或咖啡廳從頭看過一遍。

理解門檻

實際上這堂課確實是針對國立台灣大學資工電機系學生去修的,我當然知道這堂課有一定的難度,但沒人跟我講是需要每一個 PPT 都特別去翻過一次的程度啊啊,到初期為了確保底子是不會太差。必須確保前面的概念都沒有遺漏,從 Sigmoid, ReLU 到 Learning Rate 的概念慢慢堆上來,那時候的挫折大概是就算是看完了一部課程,還是因為基礎不太夠看下一篇的時候完全感受不到這兩部影片的關聯性。像是一開始慢慢懂 Sigmoid 的概念後,馬上跟我講 Gradient Descent 和 Learning Rate 就會很難去想到 Error Surface 怎麼來的。實際上這在前期對我來說是一個很痛苦的問題,有點不知道自己在學什麼。

筆記方法

最後找到解決方法是把每一頁教授的 PPT 都丟給 Gemini 告訴我這一邊在幹嘛,實際上我在高二這學期很明顯感受到用 LLM 來學習是多麽有效的一件方式,你可以很自然的問一些可能很愚蠢的問題,但是其實對整個概念的理解是很有幫助的,這一點套用在 ML 也是非常好用,把各種抽象的概念融合再一起。我這邊也付那時候寫的很認真寫的 HackMD,秉持著只要沒有吸收後丟進筆記的知識點那就是等於沒有學到東西,所以就努力跟 Gemini 搏鬥,把最易懂的資訊都寫上去就很有用了。

作業

HW01

我們本來大概覺得可能可以到 HW05 之類的,不過實際上真的下去寫才發現我甚至不太會 PyTorch 語法,到最後我還是沒有特別去學,一開始嘗試去寫 HW01 的時候就已經很懊惱了,連題目都不知道在幹嘛的那一種,最後也是瘋狂的和 Gemini 搏鬥。長話短說 HW01 給了訓練資料共有 93 個特徵,包含 40 個州的 One-hot encoding,加上第一、二、三天各自的調查特徵。來去預測第三天的「新增確診比例」(tested_positive)。評估標準是透過 Root Mean Squared Error (RMSE) 來計算誤差。
HW01 一開始我是透過 Google Colab 直接 call Github 上的作業抓下來,因為真的是沒有接觸過 ML 領域,連什麼是 Kaggle 怎麼提交都不知道也是一步一步慢慢來,到後面也才清楚狀況。最難的點是如何把上課聽到的內容實際上下場去運用,腦袋真的會有點轉不過來。最後的 Private Score 是到 0.95,範例 code 的 loss 大概到 1.53,Strong Baseline 是 0.88,不知道最後有沒有調到寬鬆一點,我們離 Strong Baseline 差了一點點距離,不過到最後有點卡住就果斷斷捨離了。

HW02

再來是 HW02,透過題目上給的音訊做分類,共計每幀輸入 39 種音素類別。不過其實他的 input 是一直都是固定在加上前五幀和後五幀,所以總共是 39 * 11 = 429 個 Feature,本質上是一個分類問題,跟 HW01 的連續函數不太依樣。我最後因為發現 HW02 的範例 code 在 Google Colab 上面跑可以高達二十分鐘,所以決定回家研究一下怎麼從外面透過 Tailscale 直接連到內網透過我的 NVIDIA Geforce RTX 4070 Ti SUPER 做運算,很懶人的透過 Codex 幫我弄 VPN 和 WSL 的部分,所以過程中其實沒有那麼複雜。不過第一次真的實際用到自己的顯示卡開始有歸屬感?
透過教授上課的內容大概有一些技術路線應該就可以過 Medium Baseline,實際上也沒有那麼難,預設的 Accrate 是 0.688,Simple Baseline 為 0.68,Strong Baseline 為 0.76。我一開始大概就決定要從加深網路 + 補上 Batch Normalization + 補上 Dropout + 使用 LR Scheduler 開始走起,也過的蠻順的加上這些和一點 Hyperparameter 的煉丹大概就可以到達 0.72,殊不知後面才是惡夢的開始,一直在 Overfitting 和 Underfitting 中徘徊,但發現怎麼通靈大成績也只到 0.73,最後約經歷了兩三天才慢慢透過 Residual Network (殘差網路) 和 Ensemble 突破了 0.75,也就是達到了 Strong Baseline 含金量大概是前 5% 到 10%,不過也不知道那時候的台大生有多卷就是了,甚至用到的方法是老師上課根本沒有出現過的技巧,我真的不知道上課的方法真的有辦法過 Strong Baseline 嗎....

感想

老實說透過這一次的自主學習真的是有一個推力讓我有一隻腳趾頭碰到了 ML 的領域,也很慶幸很認真的做自主學習,雖然過程一波三折,但是認真覺得 Machine Learning 領域真的是一個水很深而且深人勿近的領域,不過對我來說真的有學到東西的感覺,很可惜的是 ML 比賽像是 AI CUP 大多數都是給大學生參加的,不知道有沒有什麼教授或老師看到這一篇文中希望可以有給高中生的比賽,不然特選幾乎只能靠資訊安全跟演算法真的不是每個人都想要走這兩個領域就是了。
再來是下幾週會有自主學習的報告所以未完待續.....

照片紀錄

Machine Learning 2021 自主學習照片 2026-06-10
Machine Learning 2021 自主學習照片 2026-06-10
Machine Learning 2021 自主學習照片 2026-06-13
Machine Learning 2021 自主學習照片 2026-06-13

Related Talks