在清大念資訊碩士是什麼感覺(四):碩二下學期

這個學期只有一個畢業的目標,沒有修課,沒有生活。基本上不是在看 Paper 就是在寫 code 的路上

楊智堯 ( Kevin Yang )
9 min readAug 19, 2024
拿到畢業證書了QQ

一、前言

碩二下是畢業保衛戰很重要的學期,其實一直到口試之前每一天都戰戰兢兢的,真的只有到口試結束那天才鬆了一口氣。突然想到之前有人寄信問我

根據文章日期你現在應該是碩二下,我也蠻好奇你在清大的生活,畢業論文會很難生出來嗎?

我當下覺得難,現在回想還是覺得很難XD 不過怕自己是局中人不夠客觀,所以這篇文章撰寫方式會想要以我現在回想這兩年來(特別是這半年)的生活,一來給自己記錄一下;二來也讓讀者自己針對上面那個問題有自己的回答。

Disclaimer: 整個流程都是自己誤打誤撞的經驗整理,雖然有寫成步驟,但肯定不是 Best Practice,也不建議模仿,當作故事聽聽感受即可。

二、半年衝刺生活

就像副標題說的,雖然以畢業題目來說是做一年半,但最後半年是完完全全的衝刺。這半年來的生活不外乎是幾件事情:

讀 Paper、寫 Code、做跟老師 Meeting 的簡報、跟老師 Meeting

我自己碩二下剛開學的狀況是,已經做了法律相關的題目一年,對於資料的格式及目標非常清楚,就是在方法上需要創新。

所以當初自己遇到的幾個待解問題分別是

  1. 如何有更多創新的想法去解決目標問題?
  2. 自己有能力實作上述的方法嗎?
  3. 做出來的效果是否能贏過前人的數據?
  4. 能否解釋數據好與壞的原因?
  5. 最後能夠兜成一個完整的故事並且撰寫出來嗎?

而剛好我所做的四件事情,都是為了解決這五個問題,以下一一說明自己在這四件事情實際上是做了什麼

1. 讀 Paper

在我還沒確定題目之前,我閱讀了許多不同的 survey paper,所謂 survey paper 的意思是統整型的論文,紀錄某些題目從以前到現在的重要進程,這種論文對還沒有想法的人來說是很好的起步。而我自己碩一下看的很多 paper 都是從 survey paper 整理下來的。

而 survey paper 其實也會越來越精細,以我自己的例子而言,一開始我只知道我要做法律相關 AI 的題目,所以也就稀哩糊塗地蒐一下相關的關鍵字。

搜尋舉例 | 網站是 Google scholar

不過隨著一次一次的 meeting 跟看更多 paper,題目會越來越細緻,有一些原先不知道該領域的專有名詞就會慢慢理解,像我自己最後就是定位在 Legal Judgement Prediction,所以就會搜尋 Legal Judgement Prediction survey paper 這樣的關鍵字,再從 survey paper 裡面推薦的文章去讀,這樣就不會有不知道讀什麼 paper 的問題。

直到碩二上學期,基本題目已經定調,所以就能更針對論文題目多琢磨。我自己是每天會用 ChatGPT 幫我整理五篇相關論文的 Method 跟Contribution, 我就去讀論文的 Abstract 、整理好的 Method 以及 Contribution ,最後整理在 Excel 上變成自己的知識庫

我整理 Paper 的 Excel Sheet 一角

所以基本上問題一: 如何有更多更創新的想法去解決現有問題? 就被解決了,接著我就會列出幾個是要待實作的方法。所以真的是不怕沒想法,只怕沒時間做出來。(尤其是可以參考人家的 Future work 去感受一下題目,但基本上就真的只能感受,因為就我觀察下來,大多都是一個實驗室做了一個完整的 work 後,再把進度切了幾等分,前面的先發,後面的寫成 Future work 接著隔沒多久又會再把後面部分當成新的一篇論文發出來bad。)

補充一個小問題,之前有人也寄信問過我 Paper 是讀英文或中文,我自己是習慣直接讀英文,不過現在 ChatGPT 直接多做一步翻成中文應該也不會花太多時間就是 :)

2. 寫 Code

必須寫在前面,ChatGPT 寫的 code 真的會亂搞一通要慎用。
基本上這部分我會優先找有附 code 的論文,有個網站叫做 Papers With Code 就是個不錯的來源、HuggingFace 也不錯,或是有些論文也會附上 GitHub 連結,基本上就可以連進去看了。

基本上大家用的模塊不外乎還是常見的 NN、CNN、RNN、LSTM、Transformer(Attention、Encoder、Decoder) ,因為在修課的時候有去 Trace 過這些程式碼,所以後面在實作各種論文看程式碼的時候真的是事半功倍。底下也推薦兩部當初打底用的教學影片

  1. Pytorch Transformers from Scratch (Attention is all you need)
  2. Let’s build GPT: from scratch, in code, spelled out.

接著其實就是很務實的 coding、testing,所以關於問題

自己有能力實作上述的方法嗎?

基本上只要沒附現成的 code,paper framework 又太複雜大概率是做不出來,總的來說就是去試各種 SOTA(State of the Arts,也就是現在最強的模型)後,再把各模塊的 code 搬出來,自己想辦法拼接出一個符合自己任務需求的版本。

做出來的效果是否能贏過前人的數據? 能否解釋數據好與壞的原因?

結果基本上沒法預測,就只能做一個算一個,如果跑出來是好的就大好XD

那至於數據解釋的部分,自己大致分三種

  1. 原 Paper 有推論,看起來也適用於自己的數據就沿用解釋
  2. 某些基本模塊就有自己的特性就可以直接拿來解釋
  3. 把預測結果印出來,針對自己對於資料的熟悉度給出對應的解釋

這部分一開始真的做的超~~極慢,不過後來越來越熟悉自己領域也大家都在用類似東西的時候,就能夠越快的實現一個新的功能。

3. Meeting

把各種 Meeting 的內容放一起XD

自己是如果可以會每週找老師 Meeting 一次,基本上每次開會都會做簡報,事後也大推做簡報。一來是老師能更理解自己在做什麼、二來是隔了好幾個月,自己真的會做研究做到迷路,這時候跟著自己的簡報就知道一路走來都做了些什麼。至於數據的部分每種方法我會分別整理成一張 Excel sheet 方便自己之後對照,以下是我很早期第一個試 Baseline 方法的範例

拿各種現成模型跑一下任務的分數 | 完全跟最後確定的題目無關XD

至於簡報的部分就是忠實描述自己的想法跟結果,沒有結果的話就報自己都看了些什麼,老師會提供建議說先往哪個方向去,其實也是非常有效的會議。像是底下是某次開會的一頁簡報,基本上有做完的部分就把結果秀出來(左邊),沒做完的部分就把自己預計要做的內容提出(右邊),老師就更能知道自己的進展並且給出建議。

某次跟老師開會的範例簡報 | 數據已經隨機更改過了

所以在這樣反覆的實作跟討論下來,最後一個問題

最後能夠兜成一個完整的故事並且撰寫出來嗎?

基本上這個論文的故事架構就會是自己跟老師一起兜出來的故事,所以離畢業就八九不離十了。

最後就是如何生出一個好的口試簡報跟論文撰寫。而這部分也會因實驗室不一樣風格驟變XD 我口試簡報的模式是會由大到小,邏輯大概如下

特別喜歡進度條,不過也有同學覺得標題夠清楚即可,純個人偏好XD
  1. 我的題目定位,是在做什麼? -> Task overview
  2. 這個 work 難在哪? -> 提出 Challenge
  3. 我用什麼方法解決這個 -> 提出 Solution 跟 Contribution
  4. 進實作細節
  5. 介紹數據集
  6. 比較 Baseline Methods
  7. 將 Challenge 轉成待答問題並且說明我的 Solution 為何有用 -> Experiment
  8. Conclusion & Future Work
  9. 做 Appendix 預防各種更細節的問題

那最後論文撰寫的部分,基本上就是把一次次 meeting 的東西做個論調的總整理,基本上論文的寫法在看了一堆 Paper 之後也會有感覺怎麼寫。數據跟 Reference Paper 各保存在不同的 Excel 裡,一年半的研究邏輯全部都有簡報留存也不怕忘記,最後是用 Overleaf 慢慢一字一字 Key 上去,再用 ChatGPT 做最後潤稿,正式結束這整個研究流程。

三、結語

如果說要有什麼心理準備,那大概是有很高機率花了大把時間實作一個模型或架構,結果卻爛到不行的時候會很心累。也開始理解為什麼有人這麼不想做 AI 。畢竟系統或網頁前後端的結果是可預期的,基本上跑出來的結果都有跡可循(就算不如預期總會在 Trace code 的時候看到端倪,但牽涉硬體不算,問題太底層尋不到XD),可是這種 AI 模型預測往往只能透過模塊特性去嘗試提高結果變好的勝率跟可解釋性,也可能是我目前的程度只到這,所以才得出這樣的結論,謹慎服用XD

不過整體在研究流程、 Coding 跟簡報表達上確實學到很多,這兩年來雖然熬了很多夜,但總之真的都是收穫滿滿!

最後還是囉嗦一下,通篇不是什麼教戰守則,只是整理一下自己在兩年走下來的流程供參考。所以看下來,不知道讀者覺得要走完這個流程,是難,還是不難呢?

最後,如果有什麼其他想知道,或是想要我在文章上提及的部分,都可以直接連絡我,很歡迎各種可能的交流 :)

--

--

楊智堯 ( Kevin Yang )

從電商及科技業務跳船的資訊研究生|期許在不同領域激起的浪花點綴成最美的一副人生圖。嘗試讓文字承載一些能量, 讓這世界或自己都因分享而更加勇敢。LinkedIn: https://www.linkedin.com/in/yangchihyao/