機器學習(1)

以下內容爲本人學習Stanford Andrew Ng的課程Machine Learning的筆記,如有問題,歡迎指出與討論

機器學習框架

機器學習的目標就是對訓練集(Training Set)施加一定的學習算法(Learning Algorithms)獲取 hθ(x) (Hypothesis),這也是建模的過程。
當模型建好後,輸入測試集或驗證集(Test Set\Validation Set)到hθ(x) 中便會得到預期結果(Estimate Result)。

梯度下降 (Gradient Descent)

最簡單的hθ(x) 便是線性的了,即 hθ(x)=θ0+θ1x1+θ2x2+....+θnxn
若記 x0=1 ,則上述式子可化簡爲

hθ(x)=i=0nθixi=θTX

補充一些常見的符號:
m爲訓練集中樣本對 (x(i),y(i)) 的個數;
n爲特徵(feature)的維度;

下面定義損失函數,

J(θ)=12i=0n(hθ(x(i))y(i))2

12 是爲了以後運算求偏導時方便化簡,求和項爲把每個訓練集中的樣本對的輸入帶入hθ(x) 後與真實結果做差;平方求和後便可得到模型對整體訓練集的代價,之後要做的便是要去取代價函數J(θ) 的最小值,即minθJ(θ)
梯度下降中更新 θ 的核心公式爲,
θ:=θαθJ(θ)   ,α

可以很形象地把這個想象成下山問題,取此次迭代位置的梯度的反向,走一個步長*梯度的距離,如圖:


下山問題

當然在線性情況下,我們不用考慮局部最優解的情況。Andrew已經給出圖例,在線性情況下的J(θ) 是一個碗形,只存在一個最優解。

隨機梯度下降 (Stochastic Gradient Descent)

但是梯度下降的代價太大,每次都需要掃完整個訓練集才能更新一次 θ 。於是就提出了隨機梯度下降,二者對 θ 更新的公式很相近,只是變成了每次針對一個樣本對更新 θj :

θj:=θjαθjJ(θ) =θjα(hθ(x(i))y(i))x(i)j

雖然,SGD每次不是朝着梯度最大的方向行進,但大致方向還是會趨向於最優解的。

神經網絡 (Neural Network)

神經網絡簡單說就是由許多個神經元構成的網絡,可以理解成中間生成了許多的中間 hθ(x) ,再相互疊加生成的模型;因爲許多問題不是線性可分的,所以需要神經網絡去把他轉化爲線性可分的,具體解釋與例子見這裏

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