[ML]Stanford 機器學習 課程筆記-001
本系列文為筆記Stanford ML課程筆記。
課程資訊: https://www.coursera.org/learn/machine-learning/home/welcome
導師: Andrew Ng
ML應用領域有哪些?
搜尋引擎、垃圾郵件識別都是著名的ML case。透過告訴演算法什麼是重要的訊息,讓其學習辨識並協助我們篩選出重要的資訊。
更重要的是,將數學模型落地到實際場景。AI之所以重要,在於人們希望可以讓機器自動化地執行人們的工作,讓機器模擬人腦運作,並做到更精細、準確的運算與操作。
- Database mining
網頁點擊資訊、流量監控、醫療紀錄、工程學 - Application can’t program by hand
NLP、Computer Vision、自動飛行 - Self-customizing programs
- Understanding human learning(brain, real AI)
Definition of ML
最早透過電腦學習跳棋策略,讓電腦自己進行無數次競賽,習得最佳的跳棋策略。
體驗E: 玩上萬次跳棋,任務T: 玩跳棋,性能P: 勝率多少
“A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E.”
Tom Mitchell
再舉一例代表ETP,垃圾郵件識別:
- E: 看著你標籤的垃圾郵件資料(data)
- T: 進行垃圾郵件分類
- P: 分類正確比率
老師在教程中也相當重視,除了學工具,也要知道如何應用:
Imagine that someone is teaching you how to be a carpenter, and they say, here’s a hammer, here’s a screwdriver, here’s a saw, good luck. Well, that’s no good.
想像某人正要教你如何成為職人木匠,但只給了你槌子、鋸子、螺絲釘,加油好嗎 ? 給釣竿不教釣魚不是最好的方法!
廣的來說,ML可以分為Supervised learning 與 Unsupervised learning。
其實也相當於在討論BADM課程中所學的地圖。且在清大Galit教授帶領下,也有機會體驗到與業界拿data,進行需求探索、定義問題、預測模型建立等環節。
Supervised Learning 監督式學習
給定X,得Y,找到最佳f(x)的過程。
以房價預測來說,假定價格與房屋大小正相關,我們將其繪製2維平面上,便可以找到一條最配適的線,並作為參考,來判斷其價格是否合理。
其中又可以將監督式學習,分為迴歸、分類模型預測。
“Regression” & “Classification”
- 迴歸模型: 價格預測、勝率(機率)、存貨或銷量預測、時間序列預測。
- 分類模型: 是否確診、違約與否、評等預測、垃圾郵件判斷。
試想像如果今天維度爆炸,要如何處理? ANS: SVM。後續章節討論。
Unsupervised Learning 非監督式學習
沒有標準答案,讓電腦自己學習規則。
範例: Google News,透過演算法,判斷新聞內容,並整合為一篇。
Unsupervised Learning 應用領域:
- Organize computing clusters
- Social network analysis
- Market segmentation
- Astronomical data analysis
Cocktail Party Problem
兩個人、兩隻麥克風,分別採用不同的語言,站在不同的位置,數一至十。將被疊加的聲音,輸出並分離聲音。再考量情境,加入背景雜音(派對音樂),如何分離,並且把背景音樂剔除。
Octave提供開源的作法,公式如下:
透過奇異質分解,用一行代碼就將聲音清晰的分開了!?
其中又可以分為“Clustering” & “Non-clustering”
- 分群: 客群分析、群集分析、基因分析。
- Non-clustering: 話者分離。著重在識別特定特徵。
模型建立步驟
代入Training Set,藉由演算法找到最佳方程式 h。
Cost Function
最小化誤差值的function。
透過找到最適合的theta0, theta1,找到誤差最小的方程式。
J(θ0,θ1)=1/2m ∑m(yi_hat−yi)^2 = 1/2m ∑m(hθ(xi)−yi)^2
J >>> 加總所有error,平方,除上1/2m。
視覺化可得,在 theta1 = 1 時,得 Global minimum。
將theta0重新加入Cost Function考量 >>>三維下凹空間。
平面視覺化(似等高線圖)
Gradient Descent
給定theta0, theta1 初始值,持續調整theta0, theta1值,
來降低J(theta0, theta1),直到找到最小的 J 。
但要如何知道 theta0, theta1每一次變化應該增加/減少? Ans: 偏微分。
需要設定 alpha (learning rate),決定每一步要調整多大。
Trap: 學習率過大,可能永遠找不到minimum(local/gobal)。
找到minimum也可能不是真global minimum。
如何整合Loss(cost) Function與Gradient Descent演算法?
將Loss Function J(θ0,θ1)帶入Gradient Descent偏微分計算。
讓其同時更新θ0,θ1尋找最佳解。
然最簡單的梯度下降方式,在後續的發展也有許多變形作法,適用於不同情境,但不出都是為了跳脫local minimum,找到更適合的解。