國立中央大學 112 學年度上學期最佳化方法與應用教學評量文字評量回應

部份文字評量內容及老師回應:

▲可以感受到老師應該也是初次接觸這個領域,因此教學上面比較按照課本,儘管如此,課程上學到了很多東西,但感覺不夠具有系統性(梳理起來不太容易),這也導致我後面進度有些落下,期待老師下學期能夠改善這點。
老師在上這門課之前在最佳化問題相關議題上的經驗,只有在楊肅煜老師為了預先準備計資組大二的最佳化必修課開設本課程時跟過這門課(但是那時只上大學部課程所需的相對簡單的內容),以及後來跟台達電的產學合作中需要用到(Matlab 內建的)最佳化工具處理問題。因此,的確老師總體來說也算是初次接觸這個領域。由於老師並非一開始對最佳化這個領域以及使用的教材有比較通盤的了解,課程上面的統整性的確可能會比較欠缺,但是這學期的課程內容剛好著重在三到四個不太相關的最佳化方法(line search, trust region, conjugate gradient 及 quasi-Newton),因此缺乏系統性似乎也不完全是因為老師的因素造成,請同學們見諒。

不過有一點需要跟大家說明的是,最佳化雖然在應用上是非常重要的課題,但是現在在臺灣的數學系卻幾乎沒有老師真的是這方面的專家(之前有交大應數的林文偉老師是這方面的專家但是他也退休了,而楊肅煜老師也並非此領域的專家),因此現在要「傳承」最佳化的數學知識只能靠有意願的老師自學並開課才能進行。因此針對目前這個較無系統性的狀況,可能必須得等到課程完整走一次之後才比較有機會改善,再次請同學包涵。

▲我覺得內容的難度很適合研究所的學生學習,相較於量子計算較容易理解(較多背景知識),不過我覺得課堂中有時候會花太多時間解釋數學證明,而且較難找到相關例題練習。不過我覺得除了課本內容外,老師可以多帶大家讀相關論文(或是推薦在課程網頁上),至少讓學生較容易理解這些方法的實際應用(研究生尤其需要多讀 paper 以擴增知識),當然老師可以視難度決定,或是讓大家寫文獻回顧當作加分題(對研究生而言這是必備能力)。 念研究所時能修到這類嶄新且有難度的課程真的很讚,希望系上以後能有多一點這類的課程,謝謝老師!
在數學系要多一點這類的課程是挺難的。一方面如上所述,很多比較非傳統的數學課程需要更多的老師自學並開課,這對以研究為主要評鑑方式的大學系統來說本就非易事,另一方面,也由於數學系自己必須開設的必修及核心選修課程很多,每個老師都有需要認領系上二至三門所謂的服務性課程的前提下,最佳化或是量子計算這類不被算在服務性課程的課就很難開得出來,老師也只能盡量多開不同的課程來滿足大家的需求。

關於實際應用面,這個部份如果花時間講會嚴重壓縮到課程的進度(當然老師自己也不做應用沒辦法真的講太多應用層面的東西,但是最佳化的確在影像處理和資料科學上都有許多的應用),目前對本課程的設定是在於對各演算法原理的理解而不是其應用層面,若同學有興趣了解最佳化的應用面可以去找楊肅煜老師詢問(事實上本課程的應用面是由楊老師負責,但是好像都沒有學生去找他)。另外由於課程的時間太少實在沒辦法帶大家唸論文,老師在以後還有機會開最佳化的話,頂多是把上課中提及的關於 Broyden class 的 quasi-Newton 方法之 superlinear 收斂性的論文拿來講(取代現在的內容)。

最後則是稍微提一下為什麼花很多時間解釋數學證明,最簡單的說法是因為這是數學系開的最佳化課程,但是我比較願意以下面的方式來說明:演算法的數學證明走過一遍,除了讓大家能理解為什麼怎樣的演算法結構會有什麼效果外,也能幫助培養同學們在遇到複雜問題時達到自行修改演算法的能力。如果證明講太少只是講最佳化演算法,最後可能會在遇到要修改演算法時設計出如 SDG 這般不倫不類的方法(沒有不敬的意思)。但是也因為講證明會花掉很多時間,實際應用的部份只好被犧牲(課本內也沒有實際的例子可以拿來講)。

▲課程內容、作業和期中考都好難。
▲考試著重在理解而不是以往的死背證明蠻好的
這兩個文字評論看來有一點衝突…如果是非數學系學生到數學系修課,我想主要會覺得課程內容難的原因是因為不適應。在數學系主要是講演算法背後的原理而不是單純只講演算法,而原理本身需要用到比較多的數學分析基礎,也因為在課程中有數位來自外系的研究生選修的緣故,我採取比較「寬鬆」的方式來進行測驗。但對數學系的學生而言,可能以往的數學課程的考試會比較著重證明比較少會測驗想法,所以也許因此會讓部份數學系學生覺得考試比較難抓到重點和方向。不過測驗歸測驗,還是希望大家真的有學到這些演算法的精神,這才是真正重要的事。

另外即使本學期的測驗方式比較偏演算法的理解,還是希望同學理解到之前學的高等微積分/分析導論的基礎的確能幫助大家在這門課上的學習,如果之前在高等微積分/分析導論課上的要求不夠的話可能會造成最佳化方法在其理論學習上的困難(因此請不要抱怨分析課都只要求死背證明 XD)。

▲這門課程主要偏向在講理論的部分,課程中的內容老師大部份都有做細緻的解釋,即使不懂也可以回去補影片,所以對數學系學生應該是沒什麼大問題。主要是實作的部分相較起來少很多,所以有些東西沒有去實作出來可能沒辦法深切感受到這本書作者在講述的東西。如果要讓學生能對"重要的知識"留下深刻的印象,像是一些很重要的定理想說明的事情,或是演算法想表達出的精神,感覺上再稍微多一點實作的部分會讓學生更加了解,也比較有印象。像是在出期中加分作業之前,因為我也是第一次認真修最佳化這門課,課本內容中的理論大致上都能讀懂,但是在實作 Dogleg 方法跟演算法 4-1 時又讓我更清楚知道這些東西到底在幹嘛,以後回想起當初上課學得內容應該也會對這部分有比較多印象。甚至對於有些學生而言,可能他一開始自認了解這方法的80%,但在實作卻又發現自己有很多地方其實沒想清楚。所以我覺得這也算是可以檢驗自己到底有沒有真的學會那些定理、演算法跟想辦法自己實現一個簡單的程式出來。這門課在數學系開,理論的內容上的自然會比較多,但多加一點實作的部分也會比較容易勾起學生的興趣,也比較知道一些抽象的定理在描述什麼。雖然數學系的學生應該多學些理論,但是真正重要的是能不能真正了解定理其中的意義、或是能靈活地運用這些定理、結合不同演算法,對於這方面我覺得結合實作確實可以幫助你有所提升。我覺得依這個上課次數跟出作業的比例來看,再出 1~2 次作業應該不會讓學生負擔太大也能學得比較紮實。我自己是數學系的學生,蠻喜歡在學完理論後真的去實現一個簡單的程式,能更加明確了解、熟知不同演算法的優缺點,也會在上完這門課覺得更加充實,只是這樣就需要學生多花一點時間在這科上。
▲作業如果像是期中加分題那樣是把演算法實作出來的會比單純讀理論更容易理解,希望以後作業可以出比較多類似這種的題目。
▲一開始上課會聽不太懂,但還好老師有錄影上傳,方便同學回去複習。不過作業的部分希望老師可以多講解一點,一開始有點抓不到頭緒。
由於老師也是自學和開設最佳化這門課,所以在作業的安排上面沒有之前(當學生)的經驗可以參考,一開始的作業比較偏對於理論的理解,後來才調整成搭配程式實作的樣子。之後再開設這門課時,會注意以實作的作業為主來進行。

▲上課模式很讚,因為老師上課是用平板上課,投影片的顏色,深藍色的地方容易與紅筆混在一起,有時候看不是很清楚
使用平板上課,很多時候會因為版面空間不足而導致老師在投影片上的"塗鴨"會干擾原本投影片的內文,這個部份老師會再注意一下,在上課時盡量再好好安排書寫的位置。

額外回應:
如同上面的回應內容中強調過的,老師在最佳化也幾乎算是新手,跟各位同學比老師的優勢就是在於有更多的分析基礎以及比較豐富的數學經驗,因此在自學時會比較快上手。本學期在最佳化上面花了非常多心力的一位同學跟我提到過,即使自己會在上課前先看投影片把證明等東西先看過,在實際聽課時還是可能會發現自己漏考慮了一些東西,這就是數學的經驗造成的影響。然而在實作上老師的確沒這方面的經驗,也因此在作業的出題上(像是第三次作業的 Wolfe_step 應用在 BFGS 和 DFP 的步長選取上)會不小心有那種考慮不週的情況發生。這個部份就是教學相長,希望各位同學也能有相同的成長。