【課程評價】110–1 林軒田 機器學習

今年改以直播的方式用英文授課。

--

加簽方式

我記得學期初是全簽,最後剩下304個人(其中大約有10%的成被當掉)。教授一開始還在交流版發了一篇文表示這門課非常的notorious,無誠勿試,下面就放上加簽的表單。如果之後這門課有再開,且想要加簽的同學可以多注意NTU交流板或是ppt NTUCourse板。

先備知識有微積分、線性代數、機率統計與任一程式語言。如果不知道自己能力足不足修這門課的話,教授很好心地在學期初出了一份作業零,有附上不含詳解的答案,如果發現太難啃不下去的話還可以盡早回頭是岸。

課程內容

這門課基本上合併了機器學習基石與機器學習技法兩門課的課程內容,然後教授再針對一些地方刪改而成,比如這學期因為時間的關係就講比較少數學推導。課程syllabus如下:

  • basics of machine learning
  • the learning problems
  • feasibility of learning
  • theory of generalization
  • linear models
  • beyond basic linear models
  • combatting overfitting

— — — —— — 上半部:機器學習基石、下半部: 機器學習技法 — — — — — —

  • primal and dual support vector machine
  • soft-margin kernel support vector machine
  • decision tree, bagging, and random forest
  • adaptive boosting and gradient boosting
  • deep learning fundamentals
  • deep learning optimization
  • deep learning regularization

機器學習基石的內容主要著重在機器學習理論,比整個機器學習的流程是什麼、在數學上為什麼我們能保證機器能「學」到東西等;而機器學習技法則是在有了基石的基礎後,介紹各種機器學習的演算法,不時也會穿插套用一些基石教過的概念。整體來說,整門課著重在理解機器學習技巧與演算法背後的數學原理及運作方式,可以很深入地了解每一個演算法/理論的精神及精隨。

涼度

對我來說偏硬(7/10),但我應該算是花比較多時間的學生,常常作業有幾題寫不出來的話,我會在那邊糾結老半天。

這門課總共有6+1(作業零)份作業,原本預計應該要有7+1份,但因為這學期課程進度的緣故,所以取消了最後一次作業。作業題目分成選擇(需要寫詳細過程)以及程式題。選擇題會根據上課的內容延伸,大部分的選擇題都沒有很難,偶爾有幾題需要稍微花點時間;而程式題通常就是手刻演算法或機器學習的技巧,其中有幾次作業可以使用林智仁教授開發的libsvmliblinear套件,同時可以順練看readme以及使用套件的能力,程式題大多希望你從程式跑出來的結果得出上課證明的結論或理論的一些重要性質。我通常每份作業都要花半天到一天寫完,然後還需再跟同組同學討論一些不會的題目才確定最後的答案。

而除了作業以外,還有一個final project。題目是假想自己是一個data scientist,你要想從過去的資料找出顧客為什麼會取消公司服務的理由,還需寫一份report來說明你推薦的演算法及理論。整個資料集的筆數不多(training set~6K),大多數演算法都能夠在短時間內處理完畢,不過比較大的問題應該是每個欄位都有約12%左右的缺失值。另外,這個final project也有一個testing dataset讓大家把結果上傳到kaggle上比賽,不過助教表示排名佔final project的比例非常少,也不希望大家去overfit public testing dataset。推測因為是缺失值的關係,整個比賽的運氣成分佔比較大。

Kaggle比賽常見的private leaderboard大混戰

甜度

紮實偏甜。
除了第零次作業只有40分以外,每一次作業都有
400分,而期末報告有900分。作答方式為gradescope上填上選擇題的答案,而每一次作業(除了HW0)都需要上傳所有題目的計算過程以及程式題的code。助教每次都會選四題選擇題(通常是比較困難或複雜的)來批改計算過程,每題20分共佔80分(純選擇部分佔320分)。所以即使選擇題全部答對,也不一定會拿到所有分數。

另外,這門課還有設計遲交制度。在學期初每個人會有幾面金牌可以用,一面金牌可以抵免遲交作業半天。學期間如果突發一些意外的狀況,教授還會額外再發幾面金牌(最後我記得總共可以拿到八面),所以幾乎不會出現作業遲交的狀況。

所有作業的分數總合為3,340,最後教授還會將你成績最好的那次作業乘上125%,而最不好的那次乘上75%,並在統計完所有學生的分數以後,使用decision stemp algorithm設定每一個等第的分數門檻。拿到A+需要3,268分,只有約10%的人會落在A+,大多數人都卡在A和A-。我自己最後拿到A(3203分),離A+剛好差一點點距離。

總結

前幾學期這門課的進行方式是自行上網看錄好的中文教學影片,而這學期改成在youtube上進行同步的英語授課,直播也會存檔成影片保留,所以學生其實不一定要同步上課。即使是英文授課,教授的講課品質仍維持在不錯的水準,課程的重點都解釋地非常清晰,但感覺還是用中文授課比較能夠把所有細節都講清楚,我偶爾還是會去聽教授之前錄好的教學影片把不懂的地方補齊(coursera上有完整的課程)。

而為了多一點與學生的互動,教授每講到一個段落就會讓大家在Slido上提問並且他會現場解答。雖然我理解老師是為了要讓全部的學生都能夠聽懂再進入下一階段,也能夠讓課程多一點互動的氣氛,但是這樣的作法導致課程進度稍微落後了syllabus一點,也(可能是)因為如此最後也才少出了一份作業。

除了這個小缺點以外,這門課大多時候都讓我覺得感受非常棒。助教群開了一個discord讓大家在上面討論作業與問問題,助教回復的速度都非常地快,就算是自己一個人來修課也不會有孤軍奮戰的無助感,TA hours的數量也多到不行。另一個不錯的點是我覺得作業出的很棒,題目很靈活多變,感覺下了不少功夫在出題上,而且能夠補足上課沒有講到地方(比如放寬某一個架設推導的結果就會不同等等)。

最後,要感謝同組的同學每次都拯救我作業不會的題目,我自己一個人應該真的沒辦法撐過這門課。另外,教授有在課程尾聲告知我們這門課下學年不開,想一睹教授的風采請等待後年或在Coursera上自行學習囉。

--

--