人工智慧概論 - 交大修課心得
課程資料
人工智慧概論
開課:王才沛老師
修課年度:100資工系
人工智慧,也就是研究如何用電腦實現智慧行為。整個課從 AI 的定義與歷史開始,像是知名的 Turing test,然後簡介一些 Intelligent agent 的基本架構。
接著處理以下課題:
- Search: 用一般的搜尋演算法(如 DFS、BFS)來進行智慧行為。
- Local Search: 以搜尋局部最佳解的方式處理無法進行全盤搜尋的問題。
- Adversarial Search: 以搜尋的方式來處理兩方對戰的最佳解,含 Minmax algorithm 等等。
- Constraint satisfaction problem
- Logical Agents: 利用邏輯來進行智慧行為,並簡介 Propositional Logic。
- First-order Logic
接近期末時會以簡略的方式,快速帶過幾個課題,像是 Uncertainty、Learning 等等。因為老師對 Fuzzy Theorem 有特別的研究,所以最後也帶過一點 Fuzzy Logic (課本好像沒有)。
使用的課本是 《Artificial Intelligence: A Modern Approach》。這本課本雖然不難讀不過文字很多,而且很大一本,所以要讀完恐怕不容易。
AI 使用到的搜尋演算法如果在之前的演算法概論有些基礎的話應該會有幫助。
上課方式
老師是用投影片上課,自己覺得上課的風格比較隨興而非組織性的,老師很希望可以跟同學互動,所以有時會花不少時間找很多同學回答問題。老師也很希望有同學問他問題,像有一次我在課堂上和他討論了許久,他好像滿高興的。
不過如果寄 email 給老師的話,雖然據說老師都有在看,不過幾乎不會回信,所以若要問老師問題還是面對面比較好。
平常不點名,但好像有一次點名加分(其實我總覺得有兩次點名,不過最後成績只有一次)。
評分方式
成績的計算方式為:
- 期中考+期末考 = 60% (較高分的35%, 較低分的25%)
- 三次手寫作業 = 10% (取平均)
- 程式 project 1: 1~8-puzzle = 12% (程式7%,報告5%)
- 程式 project 2: Dala = 13% (程式競賽結果8%,報告5%)
- 基本分 = 5%
- 點名加分 = 2%
- 調分方式:上述結果相加 = Total (所以最高可拿 105),然後經過公式運算,學期成績為 $latex {(\frac {Total}{100})}^{ \frac{2}{3}}\times100 $,超過 99 者以 99 計算。
老實說每項作業的佔分,還有像是其中報告和程式的佔分都很隨興,是依照同學表現而決定的,而點名感覺也是臨時起意。相信調分法也是最後才決定,原始成績大約47分就能及格。
值得注意的是兩次 projects 的程式和報告幾乎都拿不到滿分(不過第一次因為提早交會有加分,所以可以拿到),可能是因為老師認為永遠都有改進的空間。
考試作業
考試部份最重要的準備是寫老師出的 3 次手寫作業,題目有很高比例是從裡頭出來的,因為當時老師是第一次開課,所以也沒有考古題。課本方面因為文字敘述太多,有點不著邊際,所以在考前相對投資報酬率較小。期末考好像也會考部份期中考的範圍,不過題目不多。
基本上考試不會有意料之外的難題,所以只要有讀就能拿到一定分數,只是有些部份有點繁瑣,可能會有粗心被扣分。
3次手寫作業主要就是寫跟課本習題或範例類似的題型,主要是老師自己出的。
Project 1 是寫一個 1-puzzle ~ 8-puzzle 的解題程式,並比較分析 A* search 或 Iterative deepening depth-first search 等不同演算法的優劣。
8-puzzle 是一個 9x9 方格,上面有 8 個標號為 18 數字的方塊和一個空格,要移動方塊直至順序呈 18 排列,可參考 15-puzzle 的介紹。
17-puzzle 則是題目定義的變體,同樣是 9x9 方格,只是上面的方塊分別只有 17 塊,故是比較簡單的版本。對這部份的分析有興趣的話可以參考我的報告:〈1~8 Puzzles〉。
Project 2 分為1~3人一組,寫一個 AI 去下類似 Dala 的棋,然後讓全班寫的AI互相對戰,依據比賽成績給予程式分數。
這次 project 我花了相當多的心力去完成,尤其一開始私下跟同學對戰的成績並不理想,所以我後來寫了個程式可以自動產生不同參數的子代 AI,然後再互相對戰不斷選出最好的子代,花了我不少時間,詳細的作法可以參考我的報告:〈The Dala Game〉。
兩次 projects 的程式碼我都有放在 github 上,可供參考:100-ai。
其實我本來想根據 project 2,寫一個簡易的 server 程式供後人繼續把玩這個 AI 遊戲的,不過一直沒有完成。
結語
說真的感覺這堂課普遍的反應其實沒有很好,不過或許是因為第一次開課所以還需要一點時間調整。成績方面因為有神秘調分所以不會太差。程式專題的部份,雖然要真正做好可能得花不少時間,不過即使只做基本要求也能拿到一定分數。
原本學期初程式 projects 的佔分是 50%,後來變成只有 25%,其實讓我有點失望,畢竟我花了不少心力去實做。不過整體來說寫這些程式雖然辛苦,但也滿有趣的。
雖然課本有點難看完,不過其實很有趣,畢竟用電腦創造智慧本來就是個有趣的議題。不禁會想未來到底能發展到何種地步呢?
文章作者 Shaform
上次更新 2019-01-17
授權條款 保留所有權利