台大柔性計算法與應用課程評價
課程類別
工業工程學研究所碩一選修
課程名稱
柔性計算法與應用
授課教師
楊烽正
課程內容(109–1)
柔性計算主要技法有模糊邏輯、類神經網路、及啟發式演算法。
以下為詳細內容:
- 概論(Introduction)
- 模糊集合(Fuzzy Sets)
- 模糊推理(Fuzzy Inferencing)
- 模糊應用(Fuzzy System Applications)
- 基因(遺傳)演算法(Genetic Algorithms)
- 蟻拓演算法(Ant Colony Optimization Algorithms)
- 粒子團演算法(Particle Swarm Optimization)
- 倒傳遞類神經網路(Back Propagation Networks)
- 非監督式學習軟體(LVQ,SOM,ART)
課程評量方式
課程評價
這是一門耗時、十分要求程式實作能力的課程。
每周上課前都需預習教授事先錄製的上課影片,影片長度總長約3小時,在課堂開始偶爾會有小考,頻率大概為2周一次,每次小考為10分,難度大致中等,沒有事先觀看課程影片會直接掛零。課堂上教授會上機直接演練當周主題的演算法,教授口條算清晰,採用的語言是C#(因為需要大量使用人機介面),基本上會用到一些資料結構和物件導向的概念,像是繼承、抽象、Delegate 類別等,對於沒有高階程式語言基礎的人,不建議修習,基礎語法教授只會輕輕帶過。
每周課程結束教授會把上課錄製影片上傳到ntu cool,這點倒是不錯,因為有時教授在課堂講解程式碼的速度會比較快,因此在寫作業時偶爾會卡關,此時就可以溫習上課影片。
說到程式作業,基本上是每周都會有程式作業,當周的星期六晚上10點上傳到ntu cool,儘管我比起同儕稍微有程式設計經驗,我仍然平均耗費兩天的時間完成。在作業給分方面,個人認為不苦不甜,程式作業有繳交且能正常運行,都是70分起跳,但最高也只會到90分左右,程式作業都是教授親自批改,並且會在一周內傳送附有評語的成績表,有異議可以寫信向他請教。
期末會有project,份量很重。
要找一篇與上課內容相關的paper,精讀並且實作演算法,此外,還要針對paper裡提到的測試方法進行覆測,所以可能需要寫兩個以上的演算法,針對不同的benchmark求解,紀錄收斂程度、預測結果的一些統計量等。需要繳交一份書面報告,並在期末安排一周上台進行7分鐘的報告。
對於分數沒有要求的人,作業記得按時繳交就好,要被當掉機率很低,即便期末實作失敗,據說分數也沒有太難看。
對於想要拿高分的同學,程式碼盡量保持物件導向精神,沒有使用物件導向的思維撰寫程式碼,分數通常不會太高。另外,撰寫程式作業時可以多站在user角度去設計更友善的介面,提供有趣實用的功能,教授會希望學生能夠自行發揮創意,寫一些課堂沒有要求但是實用的功能。
這裡跟大家分享我在期末報告的GUI設計,這是一個自動測試模型的介面,三種演算法根據參數設定,逐一測試選取的benchmark,並且產生統計結果及對應圖表,如此便可快速進行大量測試,並給予使用者直觀的解釋。類似這種教授沒有要求的功能,心有餘力的同學可以盡量發揮,教授會比較希望同學能夠多著墨在介面的人性化上。
作業截圖
附上幾張作業截圖。
模糊推論系統(Fuzzy Inference System)
這是期中一個大型的作業,期限為兩個星期,實現三種不同的模糊推論系統,花費不少時間。
啟發式演算法(PSO、GA)
啟發式演算法擅長處理非線性、連續性的極值優化問題,教授會搭起主要框架,剩下的要自己完成。
遞歸神經網路(Recurrent Neural Network)
神經網路也是一種柔性計算,動手實現一個神經網路,並且將權重、淨值繪製在圖表上,便可即時觀察數值更新的情況。
總結
這是一門強調程式實作的課程,每周都會有程式作業,教授會在課堂手把手教你搭起物件框架。沒有期中、期末考試只有期末專案,因此這門課適合對程式有熱情,希望動手實作的同學。如果能熬過一學期,對於物件導向的精神會有更多的認識,且能夠親手搭起一個方便易用的GUI也是很有成就感的事。