跳到主要內容區

問題導向之資料科學與機器學習應用 - 化學系三年級 邵偉凱

top

課程名稱►問題導向之資料科學與機器學習應用      授課教師►資工系 高宏宇老師
心得分享者►化學系三年級 邵偉凱

前言
去年暑假第一次知道模組化課程的時候就有看到機器學習相關的這門課了,當時將機器學習應用到不同領域的概念雖然已經非常熱門,但是我並沒有想要選修。一來是因為我當時對於化學實驗的想像還停留在用各種玻璃器材混合藥品進行反應的這種畫面,想說怎麼可能跟機器學習接的上軌道呢?二來是因為我高中的資訊課是學C++這個程式語言,因此我並沒有Python語言的基礎,想說還是要先接觸過Python再來修會比較保險。
結果萬萬沒想到,因為去年上了系上教授開的模組化課程「分子與材料模擬技術」讓我對這個未曾接觸過的領域感到非常有興趣,最後選擇進到計算化學的研究領域。由於計算化學的實驗過程需要用程式語言跟電腦溝通,所以老師鼓勵我們去修「Python程式設計入門」。加上輸出的實驗結果是大量的數據,所以想藉由機器學習來幫助我們估計一些數值,並降低計算量。
驚不驚喜,意不意外啊?我自己是感到超級意外啦…一年前還以為自己完全不會用到程式語言跟機器學習,結果學習這些知識居然變成我暑假的第一要務。於是這幾堂課程也從我不想選修的清單上一躍成為就算花十點選課也一定要搶到的課程。我覺得正是因為我清楚地知道機器學習已經是我必學之物,而不只是來試試水溫、增廣見聞而已,所以我在這堂課程也付出了較多的時間與精力學習,希望一個禮拜後我就具備基礎的能力,至少要能用來操作我們的實驗數據。
 
課程介紹與授課風格
這次課程因為疫情關係所以改為線上授課。課程可以切成兩部分,第一部分是高宏宇老師同步授課,主要講述機器學習的基礎簡介到不同學習模型的概念;第二部分是由助教播放「去年助教現場教學的課程錄影」,從Python, Jupyter, NumPy, Pandas, matplotlib, SKlearn到PyTorch。上助教課時會將全部的修課同學分流到6個Google meeting的房間裡面,最多7位同學共享1個助教資源。不過其實所有房間播放的影片都是同樣一部而且連結已經有放在Moodle上面。因為助教是用線上同步撥放的關係所以畫質會下降不少,加上Google meeting沒辦法讓助教撥放的影片達到完全的「全螢幕」,導致螢幕不夠大的話看起來不是非常清楚。雖然可以自己從連結去YouTube上觀看,但是這樣就有可能會錯過房間內助教對影片內容額外的解說,有點兩難。加上助教課的教學內容「超級充實」,使教學速度對於沒有什麼程式基礎的新手來說實在是太快了,像是我自己就覺得消化不良、學習效果不是很好。教學速度部分做個簡單的比較:第一天助教課「Python」一個小時二十分鐘的教學內容,就已經超越「Python程式設計入門」這門模組化課程前四天所教的全部內容了。雖然影片撥放完畢之後有一些時間能在線上詢問助教問題,但像我自己是根本還來不及吸收所以不知從何問起,只好利用課後時間再看一次影片、自己看著課程提供的範例程式慢慢摸索。
 
課程評分由作業跟Term Project兩部分構成:
作業的部分是要從Kaggle提供的鐵達尼號乘客資料去預測哪些人會生還,聽起來雖然很困難但其實可以用助教課提供的範例程式作為模板更改。不過這樣雖然可以輕鬆「做完」作業卻沒辦法「做好」。一來是因為決策樹架構的模型容易過度擬合(overfitting),再者是因為作業的目標是希望模擬的精確度高於課堂範例的81%,但是用決策樹為架構、選用不同的資料進行機器學習還是很難達成這個目標。而且如果使用其他模型還可以加分,所以基本上是在鼓勵大家利用課後時間去找其他模型來練習。這部分對於機器學習的新手來說相對平易近人,就算沒辦法做的很好保底還是可以交出作業。
第二部分的Term Project較為麻煩。要先自己去找一份資料來源並用機器學習的技術達到分類或者預測的功能,再準備簡報跟書面檔案介紹資料集、研究目的、方法與結果以及產生的價值。重點是這門課真正進入機器學習的模型範例已經是第三天,但是第五天就要分組報告,也就是說要在兩天內把所有機器學習的測試完成並將簡報製作完畢,不然第五天報告會沒辦法講,時間整體上我覺得是非常非常的趕。而且報告當天就會發現很多組用了課堂中根本沒有提過的模型,還有些甚至會自己建立模型去做機器學習,可以看出不少選這門課程的同學其實有使用機器學習的經驗。
相較之下跨系來修的初學者在報告時就顯得內容簡陋、模型簡單、結果分析不夠深入、產生的價值不高。有些組用的資料集是來自Kaggle,所以會去參考網站上別人寫的程式碼做機器學習,但是這些組因為明顯使用了「高階的程式語言」,所以一下就被老師看出來了。整體上我覺得Term Project對於初次接觸機器學習的學生來說非常困難,對於有相關經驗的學生來說則像是展現成果的舞台。不過其實這也是一個機會,可以更近距離、更深入的了解機器學習應用的範圍以及不同的模型架構。如果有機會再修類似的課程,我應該會更關注於其他人是如何進行特徵轉換,因為現在其實已經有很多強大的機器學習模型都可以在網路上找到且能直接使用的程式碼,所以描述自己數據的方法就會顯得更為重要。藉由學習如何連接自己的專業知識與資訊工程才是跨域整合的時候會遇到的最核心的問題,了解大家處理這類問題的技巧可以獲得更多靈感、提昇自己的跨域能力。
 
心得
對於沒有機器學習經驗的人來說這門課程的難易度應該是「難」而不是中偏易。若要做出一份完整的Term Project還是要有一定的Python基礎,而且不管有沒有機器學習基礎的人去都要花花上相當多的課後時間去做才能做出完整的專題報告。藉由他們的報告也讓我了解到機器學習的模型其實也有各自擅長處理的資料種類。看著大家是如何選擇模型去對應不同領域應用的面向,讓我看到機器學習如何實際應用在不同種類的資料集上,做出人腦難以達到的預測力,這讓我深深的了解到數據科學的強大以及機器學習應用的重要性。
雖說課程進度偏快、難以立刻吸收,但是藉由儲存下來的範例程式碼跟上面詳細的註記使我能在課程結束之後,可以利用實驗室計算化學的數據做練習及應用,並在需要編寫或修改程式的時候省下許多上網查找語法的精力與時間。在這堂課程中的所學,讓我現在能成功利用過去的計算結果來初步預測化合物的能量,並讓誤差控制在10%以內。雖然這個誤差距離實際應用所要求的精度還有很大一段路要進步,不過是個好的開始。現在我們可以快速、低成本的掃描大量的材料,這是在學習機器學習之前難以達成的,也是我從這堂模組化課程中最深的收穫!
 
關鍵字 #成大模組化 #Machine learning #機器學習 #從概念到操作 #偏難

bottom

瀏覽數: