Fuzzy Inference System

台大柔性計算法與應用課程評價

邱秉誠
Jan 20, 2021

--

課程類別

工業工程學研究所碩一選修

課程名稱

柔性計算法與應用

授課教師

楊烽正

課程內容(109–1)

柔性計算主要技法有模糊邏輯、類神經網路、及啟發式演算法。

以下為詳細內容:

  1. 概論(Introduction)
  2. 模糊集合(Fuzzy Sets)
  3. 模糊推理(Fuzzy Inferencing)
  4. 模糊應用(Fuzzy System Applications)
  5. 基因(遺傳)演算法(Genetic Algorithms)
  6. 蟻拓演算法(Ant Colony Optimization Algorithms)
  7. 粒子團演算法(Particle Swarm Optimization)
  8. 倒傳遞類神經網路(Back Propagation Networks)
  9. 非監督式學習軟體(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)

這是期中一個大型的作業,期限為兩個星期,實現三種不同的模糊推論系統,花費不少時間。

Fuzzy Inference System

啟發式演算法(PSO、GA)

啟發式演算法擅長處理非線性、連續性的極值優化問題,教授會搭起主要框架,剩下的要自己完成。

啟發式演算法

遞歸神經網路(Recurrent Neural Network)

神經網路也是一種柔性計算,動手實現一個神經網路,並且將權重、淨值繪製在圖表上,便可即時觀察數值更新的情況。

循環神經網路

總結

這是一門強調程式實作的課程,每周都會有程式作業,教授會在課堂手把手教你搭起物件框架。沒有期中、期末考試只有期末專案,因此這門課適合對程式有熱情,希望動手實作的同學。如果能熬過一學期,對於物件導向的精神會有更多的認識,且能夠親手搭起一個方便易用的GUI也是很有成就感的事。

--

--

邱秉誠
Carrot Cheng的數據分析

畢業於台大工業工程所,目前任職於台積電。