機器學習的核心要素

一、數學函數的組成

y=f(X)=WTX

X是自變量,y是因變量。X是向量,代表每個樣本的多個特徵值(觀察值),而y則是該樣本的結果值。每個樣本記爲(X(j)),y(j)),表示樣本集中第j個樣本,總共有m個樣本。

二、機器學習和監督學習

機器學習包括監督學習和非監督學習。監督學習是指在因變量y確定的情況下的學習,而非監督學習則是y未確定的情況下的學習。

監督學習可以大致分爲預測和分類兩種類型。預測用於因變量是連續時的場景,如房價預測;而分類則用於因變量是離散時的場景,如識別一個病人是否得了某種病,是代表1。非監督學習的典型應用是聚類,如用戶羣劃分。

以下以房價預測爲例說明機器學習的核心要素。

三、機器學習核心要素

1. 模型和目標函數

       機器學習就是爲了獲得一個表達樣本自變量和因變量之間關係的數學模型(即目標函數),明顯,最後是爲了獲得該模型下的最佳W參數值。這樣,當給模型一個新的Xtest,它就能算出對應的ytest值。

如何高效地獲得這個模型?這需要你有較強的數學思維和較爲敏銳的觀察能力。我們都知道函數分線性函數和非線性函數,也即對應着線性模型和非線性模型。在二維平面,線性模型就是一條直線,在三維裏面,線性模型就是一個平面。而非線性模型可以表達豐富複雜的關係,如圓形、拋物線等。

當我們在思考模型時,最先要做的就是對樣本數據進行圖示(matlab),觀察樣本的點狀圖,試圖找出一種近似的模型表達。如果點狀圖看起來像是對數分佈,如果還用線性模型來進行訓練,那不管樣本量有多大,擬合出來的模型都不好。當然,人類一般只能觀察三維模型,高維數據可以嘗試降維。

機器學習更加考究各種數學表達式的理解和運用,有時,物理模型的數學表達更有借鑑意義。深度學習的開山鼻祖Hinton就是利用RBM (受限玻爾茲曼機)突破了多層神經網絡遇到的難題,而RBM是借鑑熱力統計學的能量模型。

2. 損失函數loss

       損失函數,有時也稱成本函數cost。對於單一樣本來說,就是利用目標函數計算出的f(X(j))和真實值y(j)之間的差異。差異不能簡單地相減,因爲我們一般認爲完全相同時的差異是0,也即是最小差異是0,所以表達差異值是大於等於0. 最簡單的是差的平方。

       構造損失函數在機器學習中是非常重要的步驟。因爲訓練的最終目的是找到最佳的W參數值,使得對於所有的樣本的損失函數最小。構造一個屬於凸優化的損失函數是模型成功的關鍵。

       對於線性預測來說,損失函數比較簡單。但對於分類來說,損失函數會比較複雜。

       1)二元分類意味着使用概率模型來預測,概率在0和1之間,因此目標函數需要進行一次Sigmoid(指數)運算(將值域限定在0和1之間)。相應地,在損失函數裏面使用對數做一次轉換。

       2)二元分類結果是離散的,所以目標函數也相應地有分段表示。損失函數要放大預測錯誤的差異,縮小預測正確時的差異。

       3)正則化。正則化是防止模型過擬合的重要方法。過擬合是機器學習的關鍵問題。機器學習是爲了表達數據的本質關係,能夠區分或者忽略噪聲點;而過擬合則是以完美地擬合數據結果值爲目的,對噪聲也一樣。我們以後再來詳細說明。

3. 訓練

       明顯,損失函數是關於W的表達式。如果損失函數是一個嚴格凸函數,那通過matlab圖示,可以看出損失函數有一個全局最低點(想象一座山的山腳),也就是最佳W參數所在的位置。假設W隨機確定在某一個點(山頂或者山腰),那訓練的目的就是讓W從這個點以最快的速度跑到最低點。這裏包括兩點:一是跑步的方向,平着跑是跑不下去的,最好的方式是沿最陡的方向跑(也即是梯度算法,數學上就是損失函數對該W維度的偏導),二是跑步的速度,也即是學習率。這個是經驗值,或者剛開始跑快一點,後面跑慢一點。一直跑太快,可能一直都聽不到最佳位置。跑太慢,效率太低了。

       模型初始化非常重要,尤其深度學習;由於樣本數據量大,訓練過程中也可以每次只採用小批量數據來訓練,而不是整個數據集;GPU計算可以加速訓練。

關注微信公衆號:嵌入式企鵝圈,獲得上百篇物聯網原創技術分享!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章