by Vanessa Wang 歡迎支持我的臉書專頁:【工程師作家的轉職人生】
就算完全沒有寫過 code 的人,一定也聽過 AI(人工智能)、Machine Learning(機器學習)、Python 等這些這幾年很夯的字眼。但你知道這些名詞是什麼意思嗎?
因為我也很好奇,於是我最近上了 Udemy 這門 Complete Python Developer in 2024: Zero to Mastery。平時我工作用的語言是 JavaScript,但 Python 已被許多人列為當今最受歡迎的程式語言,因此我一直很有興趣知道,究竟為何愈來愈多人要學 Python?今天就是要分享我的初學心得。
我是 Complete Python Developer in 2024: Zero to Mastery 這門課的老師的常客,上過許多門他不同的課程。他的課的特色是便宜、內容豐富完整(30+ 小時的紮實課程)、用淺顯易懂的語言讓門外漢理解程式背後的邏輯理論,最重要的是非常著重實作的手把手教學。這個教學風格非常合我胃口,因為我就是一個喜歡實作的人:與其跟我說一大堆烹飪博大精深的理論,不如先教我怎麼把水煮開、煮出一顆水煮蛋吧!這篇將分享我照著課程影片用 machine learning 做出一個簡單的模型、能夠分辨三種不同的鳶尾花。這大概相當於機器學習世界的一顆水煮蛋吧!
先來說說 Machine Learning 到底是什麼。這幾天我很有興致地趕課程進度、看了許多課程影片,終於了解 Machine Learning 是什麼了:簡單地說,我從我即將兩歲的女兒學習到,嬰兒就是最好的 Machine Learning 例子。
我女兒現在很會認人:給她看我十幾年前的照片她也會叫媽媽,非常給面子。給她看她自己的照片,就算是一年前嫩嬰的樣子,她也知道是她自己。因為人人都說女兒長得像我,我就找出一些我小時候的照片給她看。我自己是覺得我小時候的模樣跟女兒真的像極了,想說魚目混珠放在她的照片裡她應該也覺得是她自己吧!但女兒很聰明,指著我的照片說「不是!」不管我們多相似,她很清楚那不是她自己。
我們從來沒有教過女兒怎麼分辨自己的臉;我們從來不跟她說「臉頰胖胖的就是妳」或者「有個小酒窩的就是妳」。我們只是一直給女兒看不同人的臉、讓她照鏡子,教她「這是妳!」、「這不是妳!」,經過日積月累她 24 個月的人生,她自己不知如何地就學會了怎麼分辨誰是自己、誰是別人。這,就是 Machine Learning。
Machine Learning 的精髓就在於,科學家發現即使你費盡千辛萬苦教電腦辨認某人的臉,跟電腦說「你要找一個臉頰胖胖、有酒窩、頭髮微捲的人」,就算你把所有想得到的條件都附上(鼻子 4公分、睫毛 3 公分、鼻梁右側有一顆痣....)電腦還是學不好,因為它可能找出一個「臉頰胖胖、有酒窩、頭髮微捲」的小男孩、可能找出一隻「鼻子 4公分、睫毛 3 公分、鼻梁右側有一顆痣」的猩猩...這些都是可能的。因此不如給電腦大量大量的資料(例如很多很多我女兒的照片),然後跟電腦說「這是她」、「這不是她」、「這不是她」、「這是她」,讓電腦自己去找出規則、自己歸納、辨識。
而 Python 之所以夯,很大的原因在於它是當今最方便於做數據分析、機器學習的程式語言(原因可參考這篇 Why is Python the Best-Suited Programming Language for Machine Learning?
)。我今天便跟著Udemy 課程淺嚐以 Python 做很初淺的機器學習:我做出一個能辨別三種不同的鳶尾花的模型。
讓我解釋一下這個模型在幹嘛:如上圖,這世界上存在著三種不同的鳶尾花,一個叫 iris virginica、一個叫 iris versicolor、一個叫 iris setosa。我們用肉眼看圖看得出來這三種花長得不一樣;今天若摘一朵鳶尾花給我,我可以立刻分辨、歸類它是 virginica、versicolor 或 setosa,但電腦怎麼知道哪個是哪個呢?
運用機器學習,我們訓練電腦分辨這三種花的方法,就跟我們訓練女兒認人臉的方法是一樣的:餵給電腦一大堆不同鳶尾花的資料(例如花瓣長度、色澤等等),然後跟電腦說「這朵花是 virginica」、「這朵花是 versicolor」、「這朵是 setosa」,讓電腦透過大量數據自己去寫出能準確辨別這三種花的模型。
你問做這個幹嘛呢?分辨三種不同的花有什麼重要性?機器學習可以應用的範圍無遠弗屆,例如你可以把看電視的群眾大量的資料餵給電腦,經由 machine learning 久了Netflix 就知道「原來只要住在這區、這年齡的人就喜歡看這樣的電影」然後 Netflix 就能準確地推薦影集給用戶看。同理 Facebook 透過蒐集大量用戶個資就會知道要給妳看什麼樣的廣告...因此 machine learning 商機無窮。
你看到我做出這個模型寫了一些 code,看起來好像有點厲害,是不是覺得這很難做?其實不然,因為 Python 已開發出很多 libraries 讓我們可以使用,因此很多時候我們只要按照說明書使用這些別人已經辛苦開發出來的工具就可以了。這就像是我們若要煮一頓晚餐,並不需要重頭研發新菜色,看看食譜按照別人已經成功過的方法依樣畫葫蘆就好了。而這門課的手把手教學,確實讓我很簡單地跟著步驟做出這個看似蠻厲害的模型。
事實上工程界很多時候都是這樣,像以前我讀土木工程,很多時候都是要運用所謂的「經驗公式」,運用前人研發出來的結果就好,不用自己從零開始(因為人的壽命有限,若不站在巨人的肩膀上文明是無法前進的)。
若想要上稍微進階一點的機器學習、資料科學課程,可以上同樣這個老師另一門課:
延伸閱讀:
女生當工程師比較難嘛?想學寫程式的我,是否太笨了?(探討先天條件 v.s. 後天努力)
真的謝謝作者推薦這門課,受用無窮,沒想過從一個門外漢沒有任何基礎也能學會XD
回覆刪除希望能多多寫一些這類的文章
p.s.我是希望自學轉行軟體工程師的企管系學生
想知道作者學machine learning 的原因是什麼?
刪除是因為對職場上有幫助嗎?
好玩而已;這是很基礎很基礎的課程
刪除