Machine Learning Engineer 修課心得

前言

為了發掘機器學習在地理資訊上應用的潛力,理所當然地成為業餘的機器學習nerd。在去年(2020年)修完Andrew Ng的Machine Learning後,瀏覽了網路上其他相關課程的資訊時,Udacity的Machine Learning Engineer常常出現在比較列表之中。

與Coursera相比,Udacity主打與各大企業合作產出的課程內容,而非學術機構;課程的數量較少,但較深、專精,也更專注於科技類課程;近年Udacity推出Nanodegree Program,學生必須完成一個實作專題才能拿到Program的證書,希望能夠將知識與實作更有效的結合。關於平台更詳細的介紹,可以參考:同為線上教育平台,是什麼樣的「差異化」使Udacity和Coursera估值相差數億美元

或許因為課程內容都是隨時依業界狀況更新,所以價格並不親民。Udacity的課程採月費制,每個課程依照學員平均完成時間,會再另外提供一個時間更長的優惠價格。以這次介紹的Machine Learning Engineer為例,有一次付一個月的月費價格(399美金/月),或是一次先付三個月的價格(平均339美金/月)。

udacity-machine-learning-engineer-price
Machine Learning Engineer Nanodegree付費方式

也就是說如果三個月內完成,費用約新台幣30,000元,實在讓人卻步,但和其他課程平台一樣,官方時常會釋出優惠價格,從50% off、60% off、和在去年底出現的75% off:

課前要求

udacity-machine-learning-engineer-prerequsite

左圖為官方提供修課前的預備知識。我在這課程之前,python的部分修過DataQuest的內容,機器學習修過Andrew Ng的Machine Learning,所以並不完全陌生。在Udacity修課過程中並沒有碰到完全無法處理的作業,只有在其中一個實作中,透過PyTorch建立Deep learing模型的部分花比較久的時間。

另外,這個Nanodegree並不會從頭教導機器學習的基本概念,而是聚焦在透過亞馬遜AWS 的SageMaker來部署機器學習模型供分析、網頁及應用程式的使用。

課程架構

如前所述,課程所聚焦的是在模型部署及更新的部分,而不是講解機器學習本身。

一般建立模型的流程可分為資料處理、建立及調整模型以及最後的部署。在多數機器學習相關課程內容中,主要教的是前兩個步驟,也就是資料處理和模型調整,部署的部分較少著墨。而在Machine Learning Engineer課程中,透過AWS SageMaker的幫助下,能夠將部署的工作納入並一同處理。

udacity-machine-learning-workflow
機器學習工作流程(取自課程)

核心課程(Core Curriculum)主要分為4個章節(以2021/04修課內容為準):

Software Engineering Fundamentals:介紹軟體工程的基本概念、測試驅動開發(test driven development)等,本章節非強制,可視自身需求選修,無需要繳交的作業。

Machine Learning in Production:透過波士頓房價的資料集示範使用亞馬遜SageMaker的完整流程,從在SageMaker上建立notebook並進行資料清理、挖掘開始,將檔案上傳至雲端空間S3、透過上傳資料訓練模型、完成後如何傳遞新的資料取得預測結果、出錯如何debug、建立API供前端輸入數據並取得預測結果等。

Machine Learning Case Studies:以前一章節說明的架構下,操作不同的案例,例如分群、信用卡盜刷判定、時間序列分析等。

Machine Learning Capstone:實做專題,可以選擇課程提供的三個題目之一來當作專題,也可以自定題目。先交一份提案報告,由助教審核並通過後,即可開始自己的專題。

以上章節完成後,便可以得到結業證書。另外除了核心課程外,還有額外的課外課程可以看,內容包含自然語言處理、深度學習、Git版控等。

心得

所需時間

官方建議每週花在課程上的時間是10個小時,學員平均完成時間是3個月。自己實際完成的感覺,在預備知識都滿足的狀況下,每週固定投入10小時,3個月是綽綽有餘的。

收穫

來來回回摸索了3隔月,更熟悉了AWS SageMaker的架構,在SageMaker提供的環境下,除了使用AWS自己的機器學習演算法外,也能將自己透過sk-learn或PyTorch訓練的模型上傳使用。如果自己的電腦運算能力不夠,可以透過在SageMaker上選擇運算能力較強的執行個體來解決。

再來是透過案例了解各種情境下,選擇特定演算法,以及執行的細節,對於非以機器學習為本業的學員來說,透過閱讀範例Notebook的code,能夠了解在不同的狀況下,專業人的best practice會是什麼個樣子,這點幫助很大,另外在繳交作業時,作業的程式碼也有專門的助教在批改,能夠針對問題做改正,並提供相關的文章提供參考,而且幾次作業不分平假日3個小時以內就改好了,我認為這也是Udacity有這個收費的原因吧(加班費?)。

不過有些部分對於非網路工程相關背景的人(比如說我),可能要花點時間補充相關的知識,像是container、API的原理和架設等等,不然容易囫圇吞棗。還有在將自己訓練的model與SageMaker做整合時,有提供參考程式碼,但對於原理的部分課程著墨的並不深。

整體而言,整個學習體驗是非常出色的,但即便如此,我還是會等下一次2.5折的優惠出來時再考慮要不要修其他的課。

udacity-certificate
結業證書

最後給大家看看我的專題作業

可以看得出來Udacity並不是要你各位做出什麼偉大的model,而是讓大家熟悉並走一遍Machine Learning的標準作業流程。

Leave a Reply

Your email address will not be published. Required fields are marked *